最近(、
以前、開発して開示できなかった)、CIBAのADを、Flutterで作りたくて、昔から目を付けていたFlutterをやり初めたんですが、Flutter、結構良いですねコレ。...と言う事で、以下のような情報もあったので、今回は、Flutterのどの辺が良さそうか?という辺りを説明して行きたいと思います。
先ず、
無償である点が良い
ですね。
...で、
最近流行りの、IDEにロックインされないCUIベースのSDKで、Android Studio や Visual Studio Code などのIDEからプラグイン経由で利用することが出来ます。また、利用される言語はDartというaltJSで、スマホ・ネイティブ上では、VM上で動作し、SPAはJavaScriptへトランスパイルされ動作する方式となっているようです。
SPA開発向けの機能は、Flutter for Webとか、Flutter on the webなどと呼ばれていますが、JavaScript、npmを、ほぼ意識しなくて済むので、個人的には良いと思います。...と言うのも、
年明けの動画で話しましたが、やっぱ、JavaScript、npm系って、ちょっと課題があると思うので。
具体的には、エコシステムが拡大し過ぎて、複雑になっていると言う点と、npm系の依存パッケージの脆弱性 (vulnerability) や 非推奨 (deprecated) 、廃止 (obsolete) などの報告が多過ぎる点が上げられる。
更に、エミュレーター・デバッグや、実機デバッグも、ADBをマニュアルで弄ること無く、IDEからのF5実行で出来るようになっていますし、また、RAD用デザイナ、と言う所までは実装されていませんが、Flutter Devtools の Flutter Inspector & Hot Reload や Flutter Studioなどが提供されて来ており、
(方式としては、マークアップの無いWindows Forms的な方式ですね。敢えて、マークアップを外しているのを見ると、XAMLやJSXなどのマークアップは、マークアップとAPIの双方を理解する必要が出てくるなど、デメリットも多いのかもしれません)
何気に、
MicrosoftがWindows PhoneとVisual Studioでやりたかったことを、GoogleがAndroidとAndroid Studioで実現しつつある気がします。...と言う事で、Flutter、結構、実用的な所まで来ている気がします。
余談: ネイティブ開発では、React(React Native)が、o365などで利用されている通り、「ネイティブ・モジュール(C/C++など)とのブリッジがFlutterより容易で、コア・コンポーネントがC/C++のプロダクトの場合はクロスプラットフォーム開発が容易。」と言う点は良いとは思いますが、開発するアプリケーションが、当該セグメント上に無いケースが多いと思います。
一方、SPA開発では、前述のnpm系の依存パッケージの問題と、度重なるベターユース(→ Redux → Hooks)のアップデート、TypeScriptとECMAScriptの双方を利用可能など、「少ない工数ではテンプレートすら維持が出来ない」と言う状況に陥り、食傷気味な感じです。
そんな中、Flutterが、ネイティブ開発やSPA開発で適合するケースも増えてきそうな感じではあります。