logo
kmnky blog

動かして学ぶ Flutter開発入門

はじめに

5月上旬の寒暖差にやられてうちの猫が体調を崩してしまいましたが、無事に回復しました。 病気になる前から良い病院を見つけておくのが大事ということを改めて痛感しました。

前置きはこのくらいにして、今回紹介する本は、翔泳社出版の "動かして学ぶ Flutter開発入門" です。(プログラムを動かしながらだったので前回の読書日記から時間が空いてしまいました)

動かして学ぶ Flutter開発入門 掛内一章 動かして学ぶ Flutter開発入門  2023/5/17

業務を行うにあたってモバイルの知識が全くなく、SREとしてモバイルの非機能も担保できるようになりたいと思い、最近Flutterの勉強を始めています。言語を始めて勉強する際、まずはToDoアプリなどのサンプルアプリを作りながら概観を知るということが私の勉強法なので、目的に合った本を探した結果この本に至りました。

内容をかいつまんで

この本はZennのFlutter実践入門をもとにした本になります。

1章はお決まりのFlutterとはから始まり、環境構築、初期アプリ(カウンタアプリ)の起動になります。モバイルになると、Android/iOSエミュレータの導入が必要で、開発端末のOSの影響をもろ受けるため環境セットアップが大変でした。コンテナのありがたさを痛感していました。

2章はWidgetの使い方や画面の構築・更新を学ぶ章でした。ベースとなるカウンタアプリを修正しながら画面の構築・実装を学びます。ただし、アニメーションなどはコードの紹介だけでした。Widgetの書き方はWebとは全く異なり、慣れるのに時間がかかりました。その中でvscodeの補完機能がよく効いて便利でしたので、私のような初学者には拡張機能の導入をお勧めします。ちなみにもとObservability屋さんだった私としては、プロファイラを普通に取得してくれるのはすごいなと思いました。

3章はカメラやGPSなどのスマートフォンの機能を使う場合の事例紹介です。こちらは実践するというよりは読むだけにとどめました。

4章はFirebaseとの連携方法を解説しています。Authentication, Firestore, Storage, Hosting, Functions, Machine Learning, FCM, Crashlytics, Performance, AdMobを導入して学ぶことができます。Firebaseは無料で認証・通知などなど様々なことができてかなり便利でした。モバイルプロダクトでよくFirebaseを使用していてどのような関わり方をしているのだろうと不思議に思っていたので、実際に触れながらFirebaseによる実装方法について理解できたのはありがたいです。flutter-study.devと合わせて実践すると良かったです。

5章はアプリのリリースになります。GoogleもAppleも開発アカウントは有料なのでここは本を読むだけにとどめました。モバイルのリリースってどうやっているのだろう?と兼ねてからの疑問だったので、画面を載せながら解説してくれているのでイメージを掴むことができて良かったです。

6章はFlutterの仕組みについての解説です。Null Safety、非同期処理、ライフサイクル・ツリーあたりが印象に残っています。前半で書いていたコードを見直すとここはNull Safetyの書き方をしているのか、ライフサイクルを使いっているのかなどさらなる理解につながるので、この章を読んで復習してみるのはアリだと思います。

7章はデザインパターン、主にBLoCやProviderについて解説しています。別の学習でProviderを使うのは必須のようです。デザインパターンだけでなく、ディレクトリやファイルの分け方などもう少し実践の内容を書いてくれていると嬉しかったです。

8章は開発に役立つIDE、ノーコード/ローコード、CI/CDを提供するサービスについてそれぞれ解説してくれています。5章のリリースを読んだ際にモバイルのCI/CDってできるのだろうかと疑問に思っていたので、参考になりました。

感想

当初の目的に合ったものかどうかでいうと、少し異なりました。確かにコードを実装しながら学ぶものではありましたが、カウンタアプリを修正→解説→戻す、の繰り返しで私のイメージとは異なりました。私は、一連のサンプルアプリに必要な機能を追加しながら学ぶflutter-study.devの方が学びやすかったです。一方、flutter-study.devはバージョンが古く、少し改修しないといけない(特にFirebase部分)ので、最近出版されたこの本はその壁にぶつからない点は良かったです。

また、業務でCrashlyticsを使ってみたいなと思った際とても役立ちました。おそらくこの本はこういうことをやりたいなと目的がある場合、その触りを学ぶのに適していると思います。初学者と中級者の間くらいの本かなと。

最後に、Flutterを勉強してみて、Webとモバイルは全く違うなというよくある感想を私も感じ取りました。だからこそ業務などで積極的に関わっていて、SREとして様々なアプリに対応できるようになりたいなと改めて思いました。今後もFlutterの勉強も続けていきます。

最後まで読んでいただきありがとうございました。