としおの読書生活

田舎に住む社会人の読書記録を綴ります。 主に小説や新書の内容紹介と感想を書きます。 読書の他にもワイン、紅茶、パソコン関係などの趣味を詰め込んだブログにしたいです。

Flutterでアプリを作ってみようとしたところ様々なアプリでよく目にする、

キャプチャ

のアイコンの出し方が分からず小一時間ほど悩んだので、同じことで悩む人がへるように出し方を書いておきます。

記事を書いたあとに気づいたのですが、Drawerを設定したらデフォルトでハンバーガーボタンが設定されるようで私の調査は無駄に終わりました。



Drawer以外でハンバーガーボタンを使いたいという人は参考にしてください。(そんな人いないだろ)




『三』(ハンバーガーボタン)の出し方


結論からですが『三』のアイコンは以下のコードで出すことができます。

Icons.dehaze_sharp

キャプチャ


ちなみに私はこれを見つけるためにFlutterの公式のアイコン画像のページのアイコンとひたすらにらめっこしていました。




上記で紹介したもののほかに、線の細さが違う似たようなアイコン他に3つありました。

キャプチャ

芸術的センスにかけている私からしてみたらこれらをどう使い分けたらいいか分からないという。



サンプルコード


以下は、『三』をヘッダーに表示させるサンプルコードになります。

import 'package:flutter/material.dart';

void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
// 表示する Widget の一覧

Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // <- Debug の 表示を OFF
home: Scaffold(
appBar:AppBar(
leading: Padding(
padding: const EdgeInsets.all(8.0), // マージンの設定
child: Icon(Icons.dehaze_rounded), // アイコンの種類
)
)
),
);
}
}


キャプチャ





Flutterでドローワーメニューの表示のさせ方を調べたのでまとめておきます。



ドローワーメニューを使ってみる


ドローワーメニューはScaffoldでDrawerのプロパティを設定することで使用することができます。

AppBarプロパティを定義していない場合、画面にヘッダが存在しないためドローワーメニューも表示されなくなるので注意が必要です。


サンプルコード

import 'package:flutter/material.dart';
void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
// 表示する Widget の一覧

Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // <- Debug の 表示を OFF
home: Scaffold(
appBar: AppBar(
title: Text('Drawer Menu'), // タイトル名
centerTitle: true, // タイトルの表示位置
),
drawer: Drawer(
child: ListView(
children: <Widget>[
DrawerHeader(
child: Text('ヘッダー'),
decoration: BoxDecoration(
color: Colors.blue,
),
),
ListTile(

title: Text("ボタン"),
trailing: Icon(Icons.arrow_forward),
),
ListTile(
title: Text("hello"),
subtitle: Text("あいさつ"),
leading: Padding(
padding: const EdgeInsets.all(8.0), // マージンの設定
child: Icon(Icons.search), // アイコンの種類
),
trailing: Icon(Icons.arrow_forward),
),
],
),
),
),
);
}
}


キャプチャ

ドローワーメニューに表示させる内容はListTileを変更することで簡単に変えることができました。



ドローワーメニューのアイコンの変え方


ドローワーメニューを開くボタンはデフォルトではハンバーガーボタンになっています。

このアイコンを変更するためには、AppBarを変更する必要があります。

先ほどのサンプルコードからAppBarを以下のように設定することでアイコンが変わります。

appBar: AppBar(
leading: Builder(
builder: (context) => IconButton(
icon: Icon(Icons.settings),
onPressed: (){
Scaffold.of(context).openDrawer();
}),
),
title: Text('Drawer Menu'), // タイトル名
centerTitle: true, // タイトルの表示位置
),

キャプチャ

ちなみにドローワーメニューを右から表示させるEndDrawerを使用している場合は、openDrawerの部分をopenEndDrawerに変更することでアイコンを変更することができます。





PXL_20210511_131631290


スコット・バークン氏の『マイクロソフトを辞めて、オフィスのない会社で働いてみた』を読みました。

本書は、スコット・バークンがマイクロソフトを辞めてAutomattic(オートマチック)で働いた経験が書かれています。

本記事ではその中から、日本でも新型コロナの影響で注目されることになったリモートワークのメリットとデメリットに焦点をあてて本書の内容をまとめていきます。



リモートワークのメリット


元々マイクロソフトで働いていたスコット・バークンは、2011年にAutomatticに入社して初めてリモートワークを行うことになった。

リモートワークを実際に行ってみてスコット・バークンが感じたメリットをまとめていきます。


勤務先に制約がないこと


同じ部屋で働くことになれている会社員は、勤務先に制約がないことの何がメリットなのかと感じるかもしれません。

勤務先に制約がないということは世界のどこにいても共に働くことができるということです。

つまり、これを言い換えると世界最高の人材を移住地に関係なく雇うことができるということなのです。

日本の多くの会社は、東京にある会社なら関東圏内に住める人を探したりしますが、その場合関東圏に住むことができない優秀な人材を雇うことができなくなります。

しかし、リモートワークを当たり前のようにすることで世界中の優秀な人材を雇うことができるようになります。


働く側も、家族に無理な引っ越しを強要することなく自分が働きたい会社で働くことができます。


仕事に対して厳密な評価が行える


日本の古い体制の会社は、残業時間が長い人の方がしっかりと働いているなど間違った人事評価を行いがちです。

リモートワークを行っているAutomatticではブロガーがワードプレス・ドットコムに連絡してきた問題対処(以後チケット処理とする)の統計で成績を管理していました。

チケット処理の時間を統計で管理することにより、どの社員が短い時間で多くのチケットをさばいているのかが分かり、厳密に各社員の評価が行えました。

つまり、厳密な成績で社員の評価を行うことで働いているふりをしていた人間を排除することができるのです。

成績の良い社員に正当な評価が行えるようになり、これは雇用主にとっても労働者にとっても両方にwin-winです。


直接話せないことで無駄な時間が短くなる


プログラミングの途中などで誰かに直接質問などをされると作業を中断し質問に答えるために時間を使うことになります。

いざ会話が終わり作業を再開すると途中まで行っていた作業の内容を忘れるなどしてどうしても仕事の効率が落ちてしまいます。

リモートワークを行っている場合、直接質問されることはなく、質問はskypeなどのチャットソフトを経由してとどきます。

多くの人はチャットソフトで行う質問ですぐに答えが返ってくることは期待していないため、回答者は自分の回答したいタイミングで答えることができるので作業の邪魔になりません。

もちろんこういった直接会話ができないことにはデメリットも存在します。

デメリットは後程語っていきます。



リモートワークのデメリット


チャットが原因で会話が長引く


先ほどチャットシステムを使うことのメリットを上げましたがデメリットもあります。

チャットは基本的に文字ベースで話すため、表情などから相手の意図を読み取れないという問題があります。

スコット・バークンは直接話したら数分で終わる内容をチャットが原因で何時間もかかったと語っています。

リモート環境でコミュニケーションをとるための手段として最も行いやすいのがチャットですが、ときと場合に応じて電話会議やテレビ会議を行い少しでも無駄な時間を減らすことが大切です。


リモートワークは待ち時間が発生する


プロジェクトを開始したばかりの時期などは、チームのメンバーで分からないことを聞きあいたいことが多くなります。

そういう場合にリモートワークを行っているとレスポンスに時間がかかり、無駄な待ち時間が増えます

この問題に対してAutomatticでは、たまに世界各地に住むチームのメンバーを集めて会合を行うことで対策をしていました。

会合の場所は、アテネ、ハワイ、ニューヨークなど様々です。

たまには直接集まることで、仕事が効率よく進むほか、チームの団結力が深まったりするなどのメリットもあります。



最後に


リモートワークには様々なメリットとデメリットがありますが個人的にはメリットの方が大きいかなと本書を通して感じました。

最後になりますが、スコット・バークンはリモートワークでもっとも重要なことは信頼であると語っています。

上司、部下関係なくどこで働いていてもきちんと仕事をこなすという信頼さえあればすぐにリモートワークは行えます。

リモートワークに不安がある方も多いかもしれませんが、この社会情勢を利用してみてリモートワークをはじめてみてください。






flutter-top

本記事では、Flutterで作成したアプリの画面にフッターを追加する方法を説明します。



フッターを実装する


今回、フッター部分はmain.dartとは別のfooter.dartというファイルを作成してそちらに実装していきます。

footer.dartはmain.dartと同じフォルダに作成します。

事前準備として最初にmain.dartを作ります。

main.dart
import 'package:flutter/material.dart';
import 'footer.dart';

void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // <- Debug の 表示を OFF
home: Scaffold(
bottomNavigationBar: Footer(),
),
);
}
}

bottomNavigationBar:と書かれている部分で、これから実装していくFooterクラスを呼び出しています。


画面にフッターを追加する


まずは画面にフッターを追加していきます。

とりあえず見た目だけなので、タップしても何も動作は行われません。

今回はフッターにはHomeアイコンとSearchアイコンを追加していきます。

footer.dart
import 'package:flutter/material.dart';

class Footer extends StatefulWidget {
const Footer();

@override
_Footer createState() => _Footer();
}

class _Footer extends State{
@override
Widget build(BuildContext context) {
return BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home), // アイコン
title: Text('Home'), // ボタン名
),
BottomNavigationBarItem(
icon: Icon(Icons.search), // アイコン
title: Text('Search'), // ボタン名
),
],
);
}
}

これでアプリを実行してみると以下のような画面になります。

キャプチャ

フッターに二つのボタンが追加されたことが確認できましたね。


選択時のアイコンの色を設定する


次にアイコンが選択されているときの色を設定していきます。

デフォルトでは青色ですが、今回は緑色にしてみましょう。

footer.dart
import 'package:flutter/material.dart';

class Footer extends StatefulWidget {
const Footer();

@override
_Footer createState() => _Footer();
}

class _Footer extends State{
@override
Widget build(BuildContext context) {
return BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home), // アイコン
title: Text('Home'), // ボタン名
),
BottomNavigationBarItem(
icon: Icon(Icons.search), // アイコン
title: Text('Search'), // ボタン名
),
],
// 追加
selectedItemColor: Colors.greenAccent, // 選択時の色
unselectedItemColor: Colors.black45, // 非選択時の色
);
}
}

selectedItemColor:で選択時の色を設定することができ、unselectedItemColor:で非選択時の色を設定することができます。

キャプチャ


アイコンのタップで状態を切り替える


現状Searchアイコンをタップしても状態が切り替わりません。

そこで状態を切り替えることができるように改造していきます。

footer.dart
import 'package:flutter/material.dart';

class Footer extends StatefulWidget {
const Footer();

@override
_Footer createState() => _Footer();
}

class _Footer extends State{
int m_selectedIndex = 0;

@override
Widget build(BuildContext context) {
return BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home), // アイコン
title: Text('Home'), // ボタン名
),
BottomNavigationBarItem(
icon: Icon(Icons.search), // アイコン
title: Text('Search'), // ボタン名
),
],
currentIndex: m_selectedIndex, // 選択中のアイコンのインデックス
onTap: _onItemTapped, // タップされたときのイベント
selectedItemColor: Colors.greenAccent, // 選択時の色
unselectedItemColor: Colors.black45, // 非選択時の色
);
}

void _onItemTapped(int index) {
setState( () {
m_selectedIndex = index;
});
}
}

今回新たに_onItemTappedという関数を追加しました。

これは、アイコンをタップしたときに呼び出される関数で、アイコンがタップされるとm_selectIndexの値を対応したindexの番号に変更するという処理を行っています。

ダウンロード



まとめ


今回はシンプルなフッターを作成していきました。

本記事では、フッターの動きだけに着目したため、フッターをタップしても画面自体は遷移しません。

そのうちフッターをタップしたさいの画面の遷移のさせ方に関する記事も書いてみたいです。




DSC_2354


第9回「このミス」大賞受賞作かつ喜多喜久さんのデビュー作。

『科学探偵Mr.キュリー』などの喜多喜久さんの作品が好きで『ラブ・ケミストリー』をまだ読んでいないならすぐに読んでほしい。

化学と恋がおりなす恋愛ミステリー!



『ラブ・ケミストリー』のあらすじ


有機化合物の合成ルートが浮かぶという特殊能力を持つ、有機化学を専攻する東大院生の藤村桂一朗。

研究室にやって来た新しい秘書の真下美綾に一目惚れしてしまったことが原因で特殊能力を失ってしまう。

特殊能力を失い実験が進まない日々を過ごしている藤村の前にある日、「特殊能力を復活させるためにあなたの恋を叶えてあげる」と、死神を名乗る少女カロンが現れる。

カロンの話によれば誰かが藤村の特殊能力を復活させるようにカロンに依頼したようだ。

はたして藤村の恋は叶うのか。そして藤村の特殊能力の復活を望む人間は誰なのか。

東大農学部で理系草食系男子が巻き起こす恋愛ミステリー。



感想


『ラブ・ケミストリー』の魅力


『ラブ・ケミストリー』の魅力は、作者の経験を活かして理系大学院生の日常をリアルに再現しているところだ。

作者の喜多喜久さんは、東京大学薬学部で有機化学を専攻したいたようで、作者の経験を活かして描かれた藤村桂一朗は喜多喜久さんの分身のような人物となっている。

理系の人間ならば藤村と分野は違えど日々、研究室にこもり昼食は一人で安い食事をとるという人間は少なくないと思う。(友人の少なさなどは、藤村は極端すぎる例かもしれないがそれも研究熱心であることを表していて物語的には良い感じになっている。)

恋愛に関しても周りに女性が少ない環境で過ごしていれば藤村のように、相手にどう接すればよいのか分からないという人も多いと思う。

また作者自身が藤村と同じで学部は違えど有機化学を専攻していたため、有機化学について誰が読んでも分かりやすく書かれている。それゆえに、読者が『ラブ・ケミストリー』の世界観に入りやすくなっておりまるで自分が東大で理系の大学院生として過ごしているかのように錯覚させられる。


恋愛に紛れ込んでいるミステリー要素


本作は理系の恋愛を描いている、恋愛小説として読んでも十分に楽しめる。しかし、本作は恋愛だけではなくしっかりと構成されたミステリー要素があり、ミステリー小説としても十分に楽しめる。

本作の謎は、藤村の特殊能力の復活を願っている人物は誰であるのかというものだ。

私は、この人物を見つけるために注意深く読み進めていたつもりであったが喜多喜久さんが何重にも張り巡らしていた罠に見事に引っかかってしまった。

特殊能力の復活を願っている人物を予測しても、次の場面では他の人物が怪しく感じるというようなものが繰り返されてけっきょく、最後の最後まで誰であったのか分からなかった。

伏線なども上手に使われているためミステリー好きの人にもお勧めできる作品だ。



まとめ


ネタバレになるため自分が読み進めている際の推理予測を話せないのがもどかしいと思うぐらいミステリー小説として楽しめた。

自身が理系であるためか藤村君に恋愛面で共感できる要素があり恋愛小説としてみてもよかった。

理系の男性の多くが藤村君に共感できると思うので理系の人であるならば本作を読んでもらいたい。また化学好きの人も本作は、プランクスタリンの合成を行うという物語なので楽しめる思う。

多くの人に『ラブ・ケミストリー』を読んでもらい。

*化学ミステリーシリーズの2作目の『猫色ケミストリー』を読みました。







PXL_20210501_051323712

喜多喜久さんの『猫色ケミストリー』を読みました。

こちらの作品は、このミステリーがすごいの大賞である『ラブ・ケミストリー』シリーズの第二弾の作品となっています。

甘酸っぱい恋愛要素と化学ミステリーがマッチしていて、本作もさすが喜多喜久さんという作品でした。

以下、あらすじと感想になります。


【目次】
あらすじ
感想
まとめ




あらすじ


計算機科学専攻の大学院生・明人は、人と話をするのが苦手だ。

特に女性の前だと緊張してしまい何を話したらいいのか分からなくなる。

ある日、いつものように学内に住み着いている野良猫を可愛がっていると同級生の女学生であるスバルがやって来た。

緊張しながらも話しをしていると突然目の前に雷が落ちてきて、僕たちは意識を失ってしまう。

気が付くと明人の魂はスバルに、スバルの魂は猫に入り込んでいた。

元に戻るために奔走する、スバルになってしまった明人と猫になってしまったスバル。

一人と一匹は、猫の餌から、研究室で違法な薬物の合成事件が起きていることに気づく。

薬物を混入した犯人の目的は?果たして2人は元の体にもどれるのか?

人と猫が送る有機化学ラブコメ×ミステリー第二弾!



感想(ネタバレあり)


『ラブ・ケミストリー』シリーズの作品ということもあり、『猫色ケミストリー』もミステリー要素よりも恋愛要素が強めという感じでしたが、恋愛物も好きな私としてはかなり楽しめました。

男女の入れ替わりが発生する作品のお約束なのか、本作でも最終的には入れ替わっていた明人とスバルが恋に落ちてしまいましたね。

ただ、今回の猫の餌に違法薬物を混ぜた犯人である雨宮が三浦先生と最後にくっついてしまうというのは少しやりすぎだったような気もしました。円満エンドで終わらせたいという喜多喜久さんの想いがあったのかもしれませんが…。


ミステリー要素の方ですが、スバルの実験を邪魔していた犯人がゼミの後輩だということは、読んでいる途中にすぐ察することができました。動機も分かりやすく、登場した時点でスバルが好きなんだろうなということが分かりましたね。

その代わり、雨宮が違法薬物を作ろうとしていたことには、私は最後の最後まで気づきませんでした。

あえてスバルの実験を邪魔している犯人を分かりやすく書くことで犯人をカモフラージュしようとした喜多喜久さんの罠にまんまとかかってしまいましたね…。

読んでいる途中の予想では、雨宮は同じ高校出身である明人のことが好きとか思っていたのですが、完全に予想が外れていました。


化学要素についてですが、前作とどうよう喜多喜久さんが化学を専攻していたこともあり、化学初心者の私でも分かりやすいように実験の様子が描かれておりました。

化学の説明をする部分も、化学初心者の明人に専門家が分かりやすく教えるという方向で描いていて、説明調だなとか違和感を感じることなく読めたのも良かったです。

本作のラストでは、明人が計算機科学の博士課程に行くのをやめて、三浦研究室の修士課程に行くことになりましたが、喜多喜久さんの作品を読んでいると明人のように化学を勉強してみたいと思わされてしまいますね。

また、雨宮を通して化学も使い方を一歩間違えればとても危険なものだよと忠告しているのも良かったです。



まとめ


『猫色ケミストリー』は恋愛要素とミステリーをうまく掛け合わせている作品でした。

喜多喜久さんが得意な化学も使われていて読んでいると自分が化学者になったかのような気分も味わうことができました。

最後になりますが、本作は前作と世界観は一緒だけど、前作のことを知らなくても読めるという点が個人的には好きです。

もし本作を読んだかたで『ラブ・ケミストリー』を読んでいない方は是非読んでみてください。









flutter-top


本記事では、Flutterで作成したアプリの画面にヘッダーを追加する方法を説明します。



ヘッダーを実装する


今回、ヘッダー部分はmain.dartとは別のheader.dartというファイルを作成してそちらに実装していきます。

header.dartはmain.dartと同じフォルダに作成します。

事前準備として最初にmain.dartを作ります。

main.dart
import 'package:flutter/material.dart';
import 'header.dart';

void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // <- Debug の 表示を OFF
home: Scaffold(
appBar: Header(), // appBar プロパティに AppBar Widget を追加
),
);
}
}

appBar:と書かれている部分で、これから実装していくHeaderクラスを呼び出しています。



タイトルを追加する


まずは、ヘッダー部分に画面のタイトルが表示されるようにしていきます。

header.dart
import 'package:flutter/material.dart';

class Header extends StatelessWidget with PreferredSizeWidget{
@override
Size get preferredSize => Size.fromHeight(kToolbarHeight);

@override
Widget build(BuildContext context){
return AppBar(
title: Text('ホーム'), // タイトル名
backgroundColor: Colors.black87, // ヘッダーの色
centerTitle: true, // タイトルの表示位置
);
}
}

これでアプリを実行してみると以下のような画面になります。

キャプチャ

ヘッダーに画面タイトルが表示されたことを確認できました。


アイコンを追加する


次はヘッダーにアイコンを追加していきます。

まずはよくある設定ボタンのようなアイコンを追加してみます。

先ほどのheader.dartを以下のように書き換えてみます。

header.dart
import 'package:flutter/material.dart';

class Header extends StatelessWidget with PreferredSizeWidget{
@override
Size get preferredSize => Size.fromHeight(kToolbarHeight);

@override
Widget build(BuildContext context){
return AppBar(
leading: Padding(
padding: const EdgeInsets.all(8.0), // マージンの設定
child: Icon(Icons.settings), // アイコンの種類
),
title: Text('ホーム'), // タイトル名
backgroundColor: Colors.black87, // ヘッダーの色
centerTitle: true, // タイトルの表示位置
);
}
}

これを保存すると画面が以下のように変わります。

キャプチャ

アイコンの種類は、
child: Icon(Icons.settings), // アイコンの種類
の部分を変更することで可能です。

Flutterのアイコンの種類ってむちゃくちゃ多いので好みのアイコンを探したい場合、以下のサイトが参考になるかもしれません。




アイコン一つだけなのもさびしいのでもう一つアイコンを追加してみましょう。

header.dart
import 'package:flutter/material.dart';

class Header extends StatelessWidget with PreferredSizeWidget{
@override
Size get preferredSize => Size.fromHeight(kToolbarHeight);

@override
Widget build(BuildContext context){
return AppBar(
leading: Padding(
padding: const EdgeInsets.all(8.0), // マージンの設定
child: Icon(Icons.settings), // アイコンの種類
),
actions: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Icon(Icons.add),
),
],
title: Text('ホーム'), // タイトル名
backgroundColor: Colors.black87, // ヘッダーの色
centerTitle: true, // タイトルの表示位置
);
}
}

header.dartを保存すると画面が以下のように変わります。

キャプチャ

ちなみにleadingで定義したアイコンは左側、actionsで定義したアイコンは右側に表示されます。



まとめ


今回はシンプルなアイコンを実装してみました。

Flutterはアイコンの種類が多いのでどのアイコンを使うか迷いそうです。

次はヘッダのアイコンをタップしたときの動作なんかを実装していきたいです。







flutter-top


Flutterの魅力の一つとしてホットリロードがよくあげられています。

しかし、正直Flutter初心者の私からしてみたらそれってどんな機能だと疑問に思ったので本記事では、Flutterのホットリロードを実際に行ってみます。



ホットリロードを使ってみる


まずは新規プロジェクトを作成して、main.dartの中身を以下のようにしておきます。

import 'package:flutter/material.dart';

void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // <- Debug の 表示を OFF
home: Scaffold(
body: Center(child: Text("ホットリロードって何?")),
),
);
}
}

この状態でエミュレータを起動して実行ボタンを押下してみると、エミュレータでアプリが起動して以下のような画面が表示されます。

キャプチャ


ここからホットリロードを試してみます。

アプリを実行したままの状態でmain.dartを以下のように書き換えてみましょう。

import 'package:flutter/material.dart';

void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // <- Debug の 表示を OFF
home: Scaffold(
body: Center(child: Text("これがホットリロードだ!!")),
),
);
}
}

main.dartを保存後、エミュレータの画面を確認すると以下のようになっているはずです。

キャプチャ

なんとアプリを再起動していないのに表示内容が変わっているという!!

ソースコードを書き換えるだけで、再実行しなくてもアプリの機能が変更されるのがホットリロードです!!



ホットリロードの利点


ホットリロードには以下の利点があります。

  • ソースコードを変更後、すぐに動作確認ができる
  • デザインだけ変更したい場合の確認が楽になる




まとめ


ホットリロードは微細な変更点を確認するときにすごく便利な機能です。

ホットリロードを有効活用して、スムーズな開発を行いましょう。





PXL_20210508_053434563


瀬尾まいこさんの坊ちゃん文学賞を受賞したデビュー作である卵の緒を読みました。

本書には中編である『卵の緒』と『7's blood』の2編が収録されており、どちらとも家族愛が描かれている作品でした。

以下、あらすじと感想になります。



あらすじ


僕は捨て子だ。

なぜ僕がそう思うかって?

それはお母さんが僕にへその緒を見せてくれないからだ。

お母さんは僕を卵で産んだというが、僕は人間は卵から生まれないことを知っている。


これは、小学生の育生の目を通して親子の絆の強さを描く物語だ。



『卵の緒』の感想(ネタバレあり)


育生は論理的に順序立てて物事を考えたい、すごく真面目な小学生です。

一方、母は育生と違って感性を大切にする直感重視の人間です。

この二人の性格は正反対のため一見親子としては、相性があまり良くなさそうという印象があります。

しかし、二人の掛け合いを読んでいると違和感を感じないどころか、人の性格ってそれぞれ違うけどそれでも仲良くやっていけるんだなということが分かり心がほっこりしてきます。


この物語では、「実の子」ではない育生、「不登校」の池内君、「再婚」する母と朝ちゃんといった物語によっては負のイメージが強い登場人物ばかりが現れます。

けれども、彼らはこれらのことを前向きにとらえていて明るさを持っているため本作は明るい作品として仕上がっています。

小学生ながら育生のように自分が実の子ではないと分かったら、自分が実の子ではないことに怒りを感じてしまいそうですが、育生は母がその事実を自分に言わないことに怒りを感じてしまいます。

このことから育生って本当に母のことが大好きなんだなということが伝わり心をほっこりさせられました。


また、ラストシーンでは母と朝ちゃんの間に子どもが生まれ、育生に妹ができます。

この妹は育生とは血のつながりはありませんが、育生が卵の殻を子どもに見立てて大切にするシーンから、家族の絆に血のつながりは必ずしも必要ではないということが分かります。



最後の育生が、

そして、親子の絆はへその緒でも卵の殻でもないことが分かった。それはもっと、掴みどころがなくとても確かなもの。だいたい大切なものはみんなそうだ。

と語っているラストからも素敵な親子の絆を感じることができ心が温かくなりました。



『7's blood』の感想(ネタバレあり)


こちらは、異母兄弟である姉と弟の物語です。

『卵の緒』が親子の絆を重視していた作品であるなら、こちらは兄弟の絆に着目している作品です。

初めて七生が七子の家に来た時、彼は七子たちから嫌われてしまえば家を追い出されると思っており、どこかよそよそしい感じの雰囲気でした。

しかし、物語が進むにつれて七生と七子の二人がそれぞれの想いをぶつけるようになり、次第に二人の距離は縮まっていきます。

本作の見どころで一緒に七生が買ってきたケーキを食べるシーンなどがありますが、個人的には別れる直前のお互いの髪を切りあうシーンが大好きです。

出会った当初の二人だったらお互いの髪を切りあうなんてありえないことだったけど、一年たった今では二人が本当の家族であるということを再認識させられるシーンで読んでいて泣いてしまいました。


ラストでは、二人はお互いに二度と会うことはないと悟っているが、それを直接口にはだしません。

遠く離れていても一年間の思い出と血のつながりは存在していたので、二人はいつでもつながっているという兄弟愛を感じさせられました。



まとめ


『卵の緒』と『7's blood』は違った形の家族愛を描いていましたがどちらの作品も良かったです。

人と人のつながりって大切なんだなと改めて認識させられました。

本作を読んで他の瀬尾まいこさんの作品を読んだことがない方は、ぜひそちらも読んでみてください。










バッチファイルを使って、試験に使用する大容量ファイルを作成してみました。



やりたいこと


今回は自分で作成したソフトの試験で10万行のファイルを読み込むという試験を行いたかったので、以下のようなファイルをバッチファイルで作成したかった。

abc
def
0123456789
0123456789
0123456789
0123456789
以下10万回『0123456789』が続く

ちなみにファイルの内容は、サンプル用の適当なものです。



ファイルに書き込む



上書き


以下のようにechoコマンドを使用して、出力したい内容とファイル名を指定することができます。

echo 出力したい内容> ファイル名

以下に上書きの場合のバッチファイルのサンプルを記しておきます。

バッチファイル
echo 123> ./test.txt 
echo 456> ./test.txt 

出力
456



追記


上書きから「>」の部分を「>>」に変更すると追記になります。

echo 出力したい内容>> ファイル名 

以下に追記の場合のバッチファイルのサンプルを記しておきます。

バッチファイル
echo 123>> ./test.txt 
echo 456>> ./test.txt

出力
123
456



for文


バッチファイルではfor文は以下のようにして書くことができます。

for /l %%変数 in (開始値,増減値,終了値) do (
    処理
)

これを先ほどのファイル出力のコマンドと組み合わせると以下のようになります。

バッチファイル
for /l %%i in (1,1,5) do (
    echo abc>> ./test.txt
)




試験用ファイルを作成する


先ほど説明したコマンドを組み合わせて、最初にやりたいことで示したファイルを作成してみます。

バッチファイル
rem 試験用ファイルを作成する
@echo off

echo abc>> ./test.txt
echo def>> ./test.txt
for /l %%i in (1,1,100000) do (
    echo 0123456789>> ./test.txt
)




まとめ


バッチファイルで試験用のファイルを作成してみましたが、コンパイルなどがいらないので単純なファイルを作るのには便利だなと思いました。



↑このページのトップヘ