見出し画像

高速にサービス開発を進めるためにFlutterプロジェクト生成テンプレート作った話

開発10年目にして、アプリ実装より大切なニーズ検証の重要性に気付いた田畑です。

まあ、ニーズ検証だけが大事というより、いかに以下のサイクル全体を早く回すか、という話だと思いますが。

検証サイクル master

ただ、そうは言っても
先行してフィージビリティスタディを行って実現可能性を検証したい場合
アプリの規模がかなり小さくてニーズの検証するより出して反応を見た
 ほうが早い場合

というのもそれなりにあるため、👆のサイクルを回すにしても、早い段階でFlutterプロジェクトを作る必要ってそれなりにあるんですよね。

しかも、
・flutter createコマンドを実行しても、すぐにiOSの実機でビルドができない
 (Provisioning Profileを生成する必要があるため)
・FlutterプロジェクトがiOS / Androidにまたがってる都合上、
 以下の環境向けのビルドを整える手間が必要
 ・開発環境
 ・Staging環境
 ・本番環境

であるため、Flutterプロジェクトを始める際に腰が重くなりがち、という課題が個人的にはありました。

今回つくったもの

というわけで、そのあたりのユーザー価値につながらない退屈な定形タスクをある程度自動化して、サービスの開発を高速に回せるようにするためのテンプレート作ってみました。

ビルド設定については、_monoさんのこちらの記事を下書きに自動化したものです。

何をやっているか

このテンプレートのキモとなっているのは、
create_flutter_project.shsetup_each_environment.shという2つのスクリプトです。

create_flutter_project.shでは
・flutter createでFlutterプロジェクトの生成
・idea/や.gitignoreをflutterアプリのrepoにコピー
 +それぞれのテンプレートの中のplaceholderの書き換え
・fastlane/produce | matchを叩いてbundle identifierの生成、
 Provisioning Profileの生成

あたりをやっています。

画像2

setup_each_environment.shでは
・android/app/build.gradleの書き換え
・xcconfigをiOSプロジェクトへ反映するためのXcodeGenの実行
などですね。

(処理を2つに分けているのは、それぞれの処理に対するcommitを分けやすいように、という理由からなので、Initial commitで全部やってしまいたい人は処理をまとめてしまって良いかもです)

まとめ

コマンドを2つ実行するだけで、ビルド設定を切り替えることができ、iOSでの実機ビルドをすぐに行うことができるFlutterプロジェクトを作れるようになりました!
これでFlutterプロジェクトもフットワーク軽く作れる...はず...!!

何か問題等あれば、issue立てる or PR投げてもらえるとありがたいです🙏

Flutterプロジェクトの爆速セットアップで良き開発ライフを!🚀🚀🚀

サポートする代わりに個人開発はじめましょ! iOS👇 https://developer.apple.com/jp/support/enrollment/ Android👇 https://play.google.com/apps/publish/signup/