見出し画像

TWSNMP開発日誌:温泉でFlutterの学習開始、理解不能のソースコードに遭遇

昨日は久しぶりに、ときがわの温泉に行きました。
豆腐屋 -> おいしいイタリアン -> 野菜 -> 温泉スタンド -> 温泉
のいつものコースです。
温泉に入ったあと緑にか組まれた風通しがよい休憩室でFlutterの学習です。

紙でFlutterの学習

パソコンやスマフォで学習だと肩こりや腕の痛みがひどくなるので、書籍+紙とボールペンで学習です。途中で昼寝もしました。
温泉効果もあってかなり理解できた気になって帰ってきました。

帰ってから学習したことを実践するためにパソコンでFlutterのサンプルプログラムのソースを読み始めました。運転の疲れもあって頭が働かないためか
なんとも違和感のある1行が気になって、そこでストップしました。諦めて早く寝ることにしました。

今朝は5時に起きました。温泉効果でスッキリ起きました。
昨日、理解不能だった1行を、もういちど見直してみました。

State<MyHomePage> createState() => _MyHomePageState();

の行です。まずは、違和感の原因を考えてみました。最近はGO言語とJavaScriptを使った開発が多いので、これらの言語であまり登場しない
<>の部分であることがわかりました。これは、ジェネリクス

でした。C++で開発を行っていた大昔に使ったかもしれませんが、最近の私には馴染みのないものです。ジェネリクスはGO言語でも最近追加されたました。

もう一つ違和感の原因は、アロー関数も組み合わさっていることです。<>と=>が出てくる。私にとって大昔に習得したものと最近習得したが混在していて脳が混乱したのかもしれません。
ぐっすり寝て頭がスッキリしたので今朝は整理してソースコードの意味を理解できました。他のFlutterのサンプルなども調べた結果、問題のソースコードは

|
  _MyHomePageState createState() {
   return _MyHomePageState();
   }

}

class _MyHomePageState extends State<MyHomePage> {
|
}

のように書くのと同じということがわかりました。この方が私には理解しやすいということも発見しました。
どうやら、私はソースコードを読んで理解する時に、ぱっと見で判断しているようで、違和感のある書き方だと脳が思考停止になってしまったようです。
ぐっすり寝てじっくり考えないと理解できないものがある
と天から助手の猫が言ってそうです。

問題の行が理解できた後は、Flutterのサンプルのソースコードもスラスラ読めるようになりました。
ソフトウェアデザインで解説されているサンプルアプリ

をダウンロードして動かしてみました。

ソフトウェアデザインのサンプルアプリ

こちらのソースコードの意味もスラスラ読めます。昨日の思考停止が嘘のようです。

TWSNMP FCを公開するためのMicrosoft Storeの審査は土日はお休みのようで進展なしです。

Flutterでアプリを開発するのが楽しくなってきました。今日も、もう少し学習するつもりです。

明日に続く


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。