0Pricing
Dart Academy · レッスン

build_runner によるコード生成

アノテーションからボイラープレートを生成します

「build_runner によるコード生成」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

コードを生成する理由

JSONの解析のように、繰り返しの多い定型コードがあります。Code generationを使うと、アノテーションからそのコードを自動生成でき、正確さと開発速度を保てます。⚙️

build_runnerを使う

build_runnerは、プロジェクト上でコードジェネレーターを実行するDartのツールです。ソースファイルを読み込み、アノテーションを見つけて、新しいファイルを生成します。

開発依存関係

build_runner はビルド時に実行され、アプリと一緒に配布されることはないため、pubspec.yaml の dev_dependencies に追加します。

dev_dependencies:
  build_runner: ^2.4.0

生成される part ファイル

ジェネレーターは同じディレクトリにある別のファイルへ書き込みます。慣例として名前の末尾が .g.dart になる part ディレクティブで、そのファイルを参照します。

part 'user.g.dart';

ビルドを実行する

一度だけコード生成を行うには、build コマンドを実行します。コードを解析し、すべての .g.dart ファイルを作成または更新します。

dart run build_runner build

監視モード

開発中は、watch モードにすると保存するたびに自動で再生成されます。手動で再実行しなくても、生成ファイルを常に最新の状態に保てます。

dart run build_runner watch

古いファイルとの競合に対処する

出力ファイルが古いファイルと競合する場合は、--delete-conflicting-outputs を追加します。古い生成ファイルを削除して、最新のビルドを成功させます。

dart run build_runner build --delete-conflicting-outputs

アノテーションが処理を決める

ジェネレーターが処理するのは、annotate した宣言だけです。アノテーションによって、どのクラスを処理し、どのコードを生成するかをビルダーに伝えます。

生成ファイルを編集しない

すべての .g.dart ファイルを read-only として扱ってください。次回のビルドで変更内容が上書きされるため、代わりにソースコードとアノテーションを編集します。

コミットするか無視するか

生成ファイルをコミットするか、.gitignore に追加して CI で再生成するかは、チームによって異なります。どちらを選ぶ場合も、方針を決めて一貫して運用してください。

広がるエコシステム

json_serializable や freezed など、多くのパッケージが build_runner と連携します。これらは1つの builder パイプラインを共有するため、1回のコマンドですべてを実行できます。

確認問題

ファイルを保存するたびにコードを再生成するコマンドはどれですか?

まとめ

build_runner はアノテーションを生成された .g.dart ファイルに変換します。dev_dependencies に追加し、build または watch を実行して、出力ファイルは決して編集しないでください。🎉

よくある質問

「build_runner によるコード生成」レッスンは無料ですか?

はい。「build_runner によるコード生成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「build_runner によるコード生成」で何を学びますか?

アノテーションからボイラープレートを生成します ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「build_runner によるコード生成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 組み込みアノテーション: override、deprecated
  2. カスタムアノテーションの作成
  3. build_runner によるコード生成
  4. json_serializable の実践
← Dart Academyに戻る