iOS チームの池沢と申します。 ちなみに鯉党です。来季から新井監督が指揮を執る事になりましたね!どんな野球をするのか、今から楽しみです!
野球の話はさておき、つい先日まで私は Flutter を用いた業務効率改善のタスクを行っていましたので、その時のお話を書こうと思います。
アプリエンジニアにとって Flutter はホットワードだと思いますので、実際の業務として扱った所感として皆様のお役に立てたらと思います。
背景
社内であるプロジェクトが立ち上がり、その時「簡単な入力だけでジモティーに投稿できるような、簡易投稿機能が欲しい」という話が出ました。
またお話を聞いていくと、その投稿ごとに出品情報とは別で管理していきたい情報もある、ということがわかりました。
この要望を解決するため、社内ツールとしてジモティーへの投稿と管理を楽にできる API とその専用アプリを作るプランが立ち上がりました。
Flutter で開発した理由
以下、私がアプリ開発の担当者としてアサインされていたためアプリのお話がメインとなります。
そして以下の理由から、 Flutter を用いて開発を行うことになりました。
UI に細かくこだわらずに、iOS と Android で共通の UX にしたい
社員の個人端末それぞれにアプリをインストールすることを想定していたため、 iOS と Android 両方で開発する必要がありました。
また、 iOS と Android で差が生まれることは極力避けたいと考えていました(マニュアルをそれぞれで作る必要が生まれるため)。
それらの要件を満たすためにも、細かい実装をせずにマテリアルデザインにしてくれる Flutter は心強かったです。
ジモティーとして、 Flutter を開発の選択肢として持ちたい
今後、ジモティーアプリ以外の開発も行っていくかもしれないという中で、 Flutter でサクッとつくる選択肢も持ちたい、というのもありました。
そのためのお試しステップとして、今回の社内ツールの作成はちょうどよかったというのも理由の一つでした。
実際に Flutter で開発してみて
実際に作ったアプリの一部のスクリーンショットを載せます。 ご覧いただいて分かるように、完全に Flutter のデフォルトの UI を活用しまくっています。
QR コードを用いて投稿画面に遷移したり、その他にも新規の画面があり、約 5 画面ほど作成しました。
それぞれの画面を Clean Architecture で作成しており、行数的には計 8000 行くらいでした。
以下に、これから Flutter を業務に使用されようと検討されている方に向けて、実際に Flutter で開発出来るようになるまでの経緯などを記載していきます。
Flutter のキャッチアップ
個人でも Flutter を軽く触っていたので肌感になってしまうのですが、 Flutter を学習ハードルはかなり低そうと感じました(一週間くらいお試しで動かしていれば十分そう)。
Flutter には Hot Reload / Hot Restart という機能がありビルドし直すということがほぼ発生しないため、調べたことの動作確認がすぐでき、実装しながら覚えていく方針で十分だと感じています。
事前の期間が必要になるものとしては、実装したい機能が Flutter で実現できるか? を調べることだと思います。
Flutter が各プラットフォームの API (カメラや GPS など)を利用するためには、 Method Channel という機能を利用し各ネイティブコードを呼び出すことになります。
その実装が必要かどうかは、あらかじめ調査したほうがいいと思います。
ただ、多くの人がその部分をパッケージとして公開してくれているため、あまり必要になるケースは多くない、という気はしています。
開発期間
今回のアプリの開発期間は、約 2 ヶ月でした。
ただ、要件をまとめたり、仮実装した後のデザイン修正期間などにも多く時間を割いていたため、実際に開発していた時間としては 1 ヶ月半 くらいだったと思います。
まとめ
私が実際に業務として Flutter を扱った際の結果や感想などを記載しました。
業務に Flutter の導入を検討されている方や、 Flutter でアプリを作ってみたいと考えている方の一つの参考になりましたら幸いです。
記載した感想の他に、 Flutter での開発体験についてとても素晴らしいと感じていまして、引き続き Flutter での開発タスクが増えていくと嬉しいなと感じました。
あと余談ですが、実はバックエンド担当者も私と同じく、普段は他領域を触っている人が新しく挑戦したいと表明し実装を行った人でした。
紆余曲折ありいろいろ相談しながらですが、リリースまで無事に達成することができ、大きな問題等発生しなかったことがとても嬉しかったです。
最後に
ジモティーでは、一緒に課題を解決してくれるエンジニアを募集中です! iOS エンジニアであった私が Flutter に挑戦できたように、様々な技術的挑戦を支援してくださる環境だと思います。
大きな成長を遂げたいという強い想いをお持ちの方にジョインしていただけることを待ち望んでおります!
https://jmty.co.jp/recruit_top/
弊社では一緒にプロダクトを改善していただける仲間を探しています!
こちらでお気軽にお声がけください!