はじめに。
筆者は最近異業種からエンジニアに転職したばかりで業務歴は三ヶ月程初学者です。
初学者なりにネイティブ開発とFlutter開発を通して感じたことを書いてみました。
コードベースの解説と言うよりは感想が主になりますので、
Flutterのコード解説がみたい方は
KBOYのFlutter大学 Advent Calendar 2020
こちらの他の記事の方が参考になるかと思われます。
Flutterのメリット・ネイティブ開発のメリット
Flutterのメリット
- 一度の開発でAndroid, iOS 2つのアプリをリリースする事ができる。
- Android, iOSで共通の見た目のアプリを開発することができる。
- ViewをDartコードで完結して開発できる(storyboardやxmlを使わずに済む)
- 宣言的UIフレームワークで直感的にViewを書くことができる。
- ホットリロードと呼ばれる機能を使う事で、コードを更新しても再ビルドせず挙動を確認する事ができる。
- 公式ドキュメントが充実していてわかりやすく、初学者でも開発がしやすい。
ネイティブ開発のメリット
- 環境構築などの必要はなく、Android StudioやXcodeを導入すれば即開発する事ができる。
- 各ネイティブにマッチしたView開発を行う事ができる。
- Kotlin・SwiftがDartに比べてイケている。
- 歴史があり、ドキュメントが豊富である。
- 最新機能をいち早く使用して開発する事ができる。
Flutterのデメリット
- 環境構築が通常のネイティブ開発に比べて難しい。
- ネイティブ開発に比べて、アプリサイズが大きくなってしまう。
- ドキュメントは日本語ではなく、基本的に英語である。
- 公式ドキュメントが充実しているものの、少し変わったことを調べようとすると歴史が浅いため、記事が見つからない場合がある。
- 端末に依存した機能を使う場合は、ネイティブのコードを書く必要がある。
ざっくりではありますが、上記のようなものが挙げられます。
ではFlutterはダメなのか?と疑問に思う方もいらっしゃるかと思いますが、
これに関しては全くそんなことはないと言えます。
Flutterはなぜ良いのか。
最初に述べたことの重複になりがちではありますが、
やはり一度の開発で各ネイティブ向けアプリを作成できるというのは大きく、
二回開発する事に比べ、大きく時間を短縮する事ができます。
そしてホットリロード機能により、
毎回再ビルドせずとも挙動確認ができるので、
とても快適に開発する事ができます。
私自身アプリ開発をしてみたいと思い、
一番最初にAndroidネイティブから勉強を始めたのですが、
ビルドが重たくネイティブアプリ開発がwebアプリ開発に比べ、
楽しく開発することが出来なかったなどの様々な理由で早々に挫折しました。
その後Flutterに出会い、改めてアプリ開発を学ぶ事になるのですが、
Flutterは宣言的UIフレームワークのおかげで直感的にViewを記述する事ができることや、ホットリロードのおかげで楽しく開発を行う事ができました。
今ではFlutterで開発をした経験を活かしてネイティブ開発を行うこともできるようになったので、初学者の方には本当にオススメです。
ネイティブ依存機能対応に関してですが、
逆に言えばネイティブ依存以外全て共通のコードで実行する事ができるので、あまり気にする必要はないかと思います。
ドキュメントは基本英語になるという事に関しても私の肌感ではありますが、
Androidネイティブも日本語の記事がそこまで記事が充実しているとは思えず、
少し変わったことを調べる場合はやはり英語ドキュメントを探す事になりがちで、ここに関しては誤差かと思います。
エンジニアになる以上、英語からは逃げられないみたいなところもありますので。
まとめ
Flutter
- スタートアップ企業や個人でアプリをリリースしたい方にオススメ
- 公式ドキュメントが充実しているので初学者も学びやすい。
- ホットリロードが凄い!!!
ネイティブ開発
- 会社として大きく、Android, iOS両エンジニアを雇う余裕があり、UIを共通化する事に重きを置いておらず、各ネイティブに最適化された見た目の凝ったUIを作りたい場合
- ネイティブに大きく依存した機能のアプリを作りたい場合
- 最先端の機能をいち早く使いたい場合
最後に。
環境構築が難しかったりドキュメントが英語ベースのFlutterですが、
KBOYのFlutter大学なら環境構築やアプリ開発の解説等を無料で見る事ができます。
更に詳しく質問等をしたい方はサロンに入会する事で直接回答をしてもらう事ができますし、同じFlutterを学ぶ仲間を作る事もでき、最近ではサロン生同士による共同開発も積極的に行われています。
興味のある方は以下から是非ご参加下さい!!
KBOYのFlutter大学:https://www.youtube.com/channel/UCReuARgZI-BFjioA8KBpjsw
KBOYのFlutter大学オンラインサロン:https://kboyflutteruniv.com/
ここまで読んで頂き、ありがとうございました。