🐕
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