📚

【書評】Flutter Engineering

2024/12/15に公開

この記事はFlutter Advent Calendar 2024の15日目です。

ここ1週間くらいFlutter Engineeringという本を読み進めていて、この本はFlutterエンジニアに広くおすすめする価値のあるものであると思いまして、筆を取っています。
この夏東京にて開催されたFlutter Ninjas 2024にて配布されていたクーポンコードを用いて本書を購入しました。(9割引くらいされた記憶...)

全部で545ページという大ボリュームの洋書ですので、読み始めるに当たってハードルが高いように感じられる方も少なからずいらっしゃると思います。ですが各章の内容は独立した内容で構成されていますし、必要な部分をかいつまんで読むことも可能な構成になっています。チームで輪読してみたいと思うほどに、共有したい知見が多く詰め込まれた良書でした。

この本を特におすすめしたい方

  • Flutterの開発自体にはある程度慣れてきている方
  • Flutter開発のより発展的な内容について、体系的な知識を身につけたい方

内容

Part1 Foundation of Flutter Engineering

フレームワークとしてのFlutterそのものへフォーカスされている部で、各章はFlutterのコンセプト、Flutterの内部構造、ネイティブアプリとの統合、プログラミングの数ある原則とFlutterとの関連性、Flutterにおけるデザインパターンに関する内容でそれぞれ構成されています。
普段の開発においてはあまり深入りすることのないややニッチでコアな部分に関する知識を身につけることができます。

4章、5章では一般的なプログラミングパラダイムがFlutter(あるいはDart)をどう表現する(されている)かが書かれていて、興味深かったです。最初に触れた技術がFlutterと言うエンジニアと、他の言語で経験を積んではいるもののFlutterの経験が浅いエンジニアと組んで輪読してみると、お互いのスキルを交換できるのではないか?というイメージが湧きました。

Part2 Architecture

Flutterアプリをどう組み立てるか、ずばりアーキテクチャにフォーカスした部で、各章はソフトウェアアーキテクチャの基礎、アーキテクチャパターン、非同期処理、オフライン対応、状態管理に関する内容でそれぞれ構成されています。
Part1に比較すると、実践的な側面がとても強いPartです。Flutterアプリの設計に悩まれている方は読んでみることをおすすめします。ここ数年一般的に使われることの多いRiverpodの具体的な実装例などは載っていないので、ここで書かれているアーキテクチャパターンをRiverpodで表現してみるのもチャレンジングで面白いかもしれません。

Part3 Processes

開発プロセスに関する部で、各章は開発のためのルール、協働、ドキュメンテーション、テスト、環境とFlavorに関する内容で構成されています。
Flutterはおろか広くソフトウェアエンジニアリングに活かせそうな知識が詰め込まれている章です。
バックエンドエンジニアと輪読するのにも向いているテーマであると思いました。

Part4 Ethical Engineering

技術倫理に関する部で、各章はセキュリティ、暗号化、プライバシー保護、アクセシビリティに関する内容で構成されています。
この部ではユーザーに適切に誠実に価値を届けるために守らなくてはならないことが中心に書かれています。
大きな会社だとリーガルやセキュリティを担当する他の部署に任せっきりになってしまいがちなテーマですし、知っておくことで関係各所とのコミュニケーションが円滑になる場面も多いと思います。

Part5 Advancing UI Development

より広くのユーザーに価値を届けることに関する部で、各章はアダプティブUI、レスポンシブUI、ローカリゼーション、アクセシビリティに関する内容で構成されています。
プロダクト開発における優先度としては低くなりがちな話題であるとも思いますが、Flutterのポテンシャルを最大限に活かすには目を通す価値があると思います。デザイナーやPdMらにFlutterの可能性を共有するタネに使えそうな気がしました。

感想

国内にここまでのボリュームのFlutterの技術書はないと思うので(私が知らないだけかも)、ぜひ多くのFlutterに関わっているエンジニア、興味の持っているエンジニアないしは多職能の方々にも読んでいただきたいと思いました。
英語は気合なりChatGPT先生なりにどうにかしてもろて...
翻訳の機会があったら携わってみたいと思いました。(どこからどう誰に相談するかからですが...)

Discussion