初心に立ち返ってそもそもFlutterとはどういったものかを備忘録として残しておこうと思います。
何かの参考になれば幸いです。
Flutterとは
2018年にGoogleが開発したモバイルアプリ用のフレームワークです。
特徴
特徴としては大きく下記の3つがあるかなと思います。
- クロスプラットフォーム(iOSとAndroidの両OSを同時実装が可能) (デスクトップアプリの実装も可能です)
- Dartでの開発
- ホットリロード機能
Flutterを使用するメリット
ホットリロード機能による高速開発が可能
私自身もこちらがFlutterを取り入れる一番のメリットかなと思います。
Flutterで作られたものを実行する際にコードの変更を瞬時に反映する機能が「ホットリロード」です。
Xcodeでビルドしていた時はビルドまでの時間「暇だな〜」と思ってましたがそれがないのが快適です。
開発コストの削減
両OSに同時に実装ができるためOS別のエンジニアの人員確保が不要になります。
またOS別での動作確認も容易になるため Flutterで実装している部分の動作確認は「Androidの実装完了を待つ」などの作業が不要になるかなと思います。
JavaScriptを習得していれば開発しやすい
Flutterで使用するDartは、JavaScriptの代替えとして開発されたため文法が似ています。
そのためJavaScriptを触ったことのある人であれば、他言語と比べて扱いやすい言語なのかなと思います。
Flutterを使用するデメリット
OS独自機能の実装は難しい
カメラや位置情報取得機能などOS独自の機能は、現状ではFlutterで実装するのは難しいようです。
OS独自の機能が必要な場合はSwiftやKotlinなどOS別の実装が必要になります。
この辺りも追って記事にできればと思います。
React Nativeとの違い
クロスプラットフォームにはFlutterとは別に有名なReact NativeというMeta(旧Facebook)が開発したフレームワークが存在します。
特徴
- JavaScriptでの開発
- Flutterと同じくホットリロードが可能なクロスプラットフォームライブラリ
メリット
- JavaScriptでの開発のためJavaScript経験者に対する学習コストの低さ
- 「Instagram」「Facebook」などReact Nativeでの開発事例が多く存在する
デメリット
- 頻繁に、React Nativeのアップデートが発生するため対応にリソースが必要
- エラーメッセージが分かりにくいエラーへの対応が難しい(JavaScriptレイヤーで起きているエラーなのか?」「ネイティブレイヤーで起きているエラーなのか」など)
作る用途やメリットデメリットを考慮してどちらかのフレームワークを選択するかもしくはネイティブのみで実装するかは検討する必要性がありそうです。今後もいろんな事象や機能を調べていこうと思います。
まとめ
Flutterについて簡単に紹介していきました。
ネイティブの言語との違い、React Nativeとの違いなどあると思いますのでうまく活用できるといいですね。
そしてなんでもFlutterできる未来がくることを期待したいです。
ではまた。
コメント