Flutter: GoogleのMobile、Web共通化フレームワークー弱小開発者の救世主になるか?
AndroidとiOSだけではなくてWebも一つのコードベースで扱えるフレームワークがFlutterである。
どのように、などと言った情報は本家のFlutterにある。
メリット
- 単一コードベースで開発できる
これは開発、メンテのコストを考えれば導入の動機のうち最大といっていいだろう。ただし後述するDartプログラミング言語を使う必要がある。 - オープンソース
Googleの、とは言ってもオープンソースであり、どのような実装になっているかいつでも参照できるのが特徴だ。 -
プラットフォーム間で統一感あるユーザーインターフェースを作れる
MobileにおいてAndroidのMaterial Design、Appleの独特のデザインは共通化を阻んでいるのに対し、Flutterは独自の共通化されたUIデザインを導入するのが特徴だ。
クライアントによってはAndroidとiPhoneで似た振る舞いをするように要求することも少なくない。Flutterなら色の再現性などは別にしてもほぼ同じものが出てくる。 -
特にAndroidでデバイス間の違いを吸収できる
さらに良いと思えるのはデバイス間の差異を「動的に」解決してくれる点である。iPhone/iPadでは対応すべきデバイスはそれほど多くはないが、Androidではいくらあるか分からないくらいである。
この動的というのがよく、ある程度の方向性に従って要素を配置してくれるのである。もちろん、すべて完璧とは行かないだろうが。 -
開発時、ビルドしなくても変更が反映されるUI
コードを書き換えるとそれがSimulatorにすぐ反映されるので開発効率が高い。
デメリット
- Dartという新たな言語を覚えなくてはいけない。
まあこれが大きなデメリットになるかどうかは個人差が大きい。SwiftやKotlinができる人ならすんなり入っていける言語である。
rxdartというリアクティブプログラミングに対応するパッケージまである。この三者でプログラムモデルの違いに関し、大きな悩みはなさそうに思える。 -
プラットフォーム毎の最新機能がいつ取り入れられるか分からない。
それぞれに最新の機能が追加されていくが、いつ、どのように、誰が取り入れるか分からない。自分たちで取り入れて公開するくらいの勢いがあればいいが。 -
ソースコードが見られると言っても詳細まで完全に理解できる訳ではない。
自分のソースコードでさえ、一月前のものは分からないことがある、まして他人の書いたものとなれば・・・。完全に把握するのは無理だろう。 -
長期的に開発力が低下する怖れ
この手のフレームワークを利用すると誰かが作ったブロックを利用するだけになってしまうことがよくある。それだと純粋な新規開発を行う際の「基礎力」が養われない可能性がある。
意識的に「基礎力」をつけるようにしないと先々困ってしまうだろう。
とにかくやってみよう
自分自身のためと、クライアントの要望に応えるために、いくつかの本やコースを取得して学習していくことにした。成果(学習メモ)はここで少しずつ出していこうと思う、