🐕

Flutter: Makefile を使って開発効率を向上する

に公開

Flutter 開発において、dart run build_runner build --delete-conflicting-outputsなどの長いコマンドを毎回入力するのは面倒ではないですか?

そんな悩みを解決するものが、Makefileです!

最終的に実現したいこと

# こういうコマンドが...
fvm flutter run --flavor dev
fvm flutter run --flavor prod
fvm flutter clean
fvm flutter pub get
fvm dart run build_runner watch -d
fvm flutter analyze
fvm flutter gen-l10n

# こんな短いコマンドになる!
make stg
make prod
make clean
make get
make brw
make analyze
make l10n

Makefile の作成

プロジェクトのルートディレクトリにMakefileを作成します。
一例としてこんな感じにします。
(各々好きに変えてください)

.PHONY: stg
stg:
	@fvm flutter run --flavor dev

.PHONY: prod
prod:
	@fvm flutter run --flavor prod

.PHONY: clean
clean:
	@fvm flutter clean

.PHONY: get
get:
	@fvm flutter pub get

.PHONY: brw
brw:
	@fvm dart run build_runner watch -d

.PHONY: analyze
analyze:
	@fvm flutter analyze

.PHONY: l10n
l10n:
	@fvm flutter gen-l10n

これで、後は make hoge (PHONYで設定したキー) でいけます。

alias と何が違うの?

Makefile ではプロジェクトごとに設定可能に対し、aliasでは各PCの環境に依存しています。
MakeFile と alias の比較ではこうなります。

項目 Makefile alias
設定場所 プロジェクトルート(Makefile 個人の設定ファイル(.zshrc等)
スコープ プロジェクト単位 PC 全体(グローバル)
チーム共有 git clone したらMakefileが組み込んでいるので設定不要 手動で各 PC に設定が必要
プロジェクト固有設定 可能 不可能(全プロジェクトで同じ)
実行方法 make hoge hoge
複雑な処理 複数行で記述可能 &&で繋ぐ必要がある
環境構築 git clone 後すぐ使用可能 各 PC で個別設定が必要

🔧 複雑な処理

# Makefileなら複数コマンドも簡単
setup:
	@fvm flutter clean
	@fvm flutter pub get
	@echo "セットアップ完了!"

# aliasだと複雑になりがち
alias setup='fvm flutter clean && fvm flutter pub get && echo "セットアップ完了!"'

まとめ

この Makefile を導入することで、

  • 時間短縮: 長いコマンドを入力する時間を削減
  • 記憶負荷軽減: コマンドを覚える必要がない
  • ミス防止: タイポによるコマンド実行失敗を防止
  • チーム統一: 全員が同じコマンドで作業可能

が出来るという便利なお話でした!

Discussion