初めまして、Advanced Tech Divisionでモバイルエンジニアをしている酒井です。最近モバイル界隈で盛り上がっているFlutterを、ARISEのプロジェクトでも採用しており、なかなか良いなと思っているので、記事を書いていこうと思います(がんばって連載にしたい)。
盛り上がってきたのが割と最近ということもあり、特に日本語の記事があまり無いので(最近少しづつ増えてきた)、プロジェクトで発見した実践的なTipsなどをまとめていきたいと思います。今日は初回ということで、そもそもFlutterとはなにか?そしてなぜFlutterを採用したのか?あたりを書いていきます。
Flutterとは?
一言でいうと「Googleが2018年に正式発表したアプリ開発マルチプラットフォーム」です。要するにモバイルアプリを開発できるツールなのですが、ポイントは「マルチ」というところで、一つのプログラムでiOSとAndroidの両方の開発ができるというところです。そして、モバイルアプリだけでなく、Webアプリやデスクトップアプリ、さらには埋め込みアプリまで作ることを想定したプラットフォームです。(噂によると、Googleの壮大な野望があるらしい。。。!)
Flutterの特徴/利点について軽く下記にまとめておきます。詳しく知りたい方は公式ホームページをご覧ください。
なぜFlutterを採用したか?
モバイルアプリを開発する際には、まずどの言語(フレームワーク)で実装していくか決める必要があります。大きくはネイティブで実装するパターンと、プラットフォームを利用するパターンに分かれます。我々のプロジェクトでは、下記が候補としてあがりました。
- ネイティブ(Swift、Kotlin)
- マルチプラットフォーム
・React Native
・ionic
・Flutter
候補の中から、下記に挙げた今回のプロジェクトの特徴を鑑みて決定しました。
- iOS/Android両方必要である。
- 開発期間が短い。
- OS依存機能の開発が必要。
- モバイルに特化したエンジニアやデザイナーが、プロジェクトにアサインできない中、それなりのUIを求められる。
1,2,3だけであれば、React Nativeなどを採用してもよかったのですが、我々のプロジェクトが4のような状況だったため、学習コストという観点でFlutterが非常に魅力的でした。実際、私もモバイル開発経験はゼロだったのですが、3ヶ月程度で基本的な機能は実装できるようになりました。
また、学習コストという観点だとionicなども候補にあがりますが、OS依存機能の実装の面でFlutterに軍配が上がりました。(今回我々のアプリでは、HealthKitから歩数を取得する要件があるのですが、ionicでは自動で登録される歩数と、手動で登録した歩数を色分けして取得することが難しいというノックアウトファクターがありました。)
Flutterを採用した理由を色々と述べてきましたが、Flutterを使ってみたいという、私含めたメンバーの熱い気持ちが、最終的には決定打だったかもしれません笑。ARISE analyticsでは新しい技術や、使ってみたい技術を積極的に採用させてくれる文化があり、非常にモチベーションがあがります!
(もしご興味があればこちらのページからご連絡お待ちしております。)
おわりに
Flutterでのアプリ開発を初めて、3ヶ月程度ですが、今のところ採用してよかった点が非常に多いと感じています。(割と上記の採用理由の目論見どおりにハマっています。)また、大きなデメリットも今のところ感じていません。(これから出てくるかもしれませんが。。。)ぜひ、この記事をご覧のみなさんも、モバイルアプリを開発する際には参考にしてみてください。
次回はFlutterのUI周りのTipsなどを紹介できればと思っています。(変わるかもしれません笑)