Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Type-safe IaC for Dart

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Type-safe IaC for Dart

FlutterGakkai #10で発表したスライドです。

Dart で型安全に Infrastructure as Code を書く TerraDart と、Flutter Web、Genkit、Cloud Run、Cloud SQL を Dart でつなぐ「Lunch Concierge」のデモを紹介します。

TerraDart:
https://terradart.dev

Demo:
https://github.com/nozomi-koborinai/terradart/tree/main/cookbook/lunch-concierge

Avatar for Nozomi Koborinai

Nozomi Koborinai

July 17, 2026

More Decks by Nozomi Koborinai

Other Decks in Technology

Transcript

  1. FLUTTERGAKKAI #10 / 2026-07-17 Type-safe IaC for Dart Dart で試す

    Type-safe IaC Dart .dart ➔ Terraform .tf.json plan / apply / state Nozomi Koborinai
  2. 自己紹介 ABOUT 02 / 19 Nozomi Koborinai Google Cloud /

    Software Engineer ✦ 普段はクラウドアーキテクトとして Google Cloud と  その周辺技術に触れています ✦ contextlint / gcp-cost-mcp などの OSS を開発 Google Genkit コミュニティにも参加 ✦ 趣味は Dart で、その書きごこちが気に入っています 著書 Mastering Genkit: Go Edition
  3. アジェンダ 01 Dart の活用範囲が広がっている 02 インフラ定義は Dart の外に残りがち 03 Type-safe

    IaC for Dart ができること 04 Firebase との棲み分け 05 Lunch Concierge のデモ 06 型でつなぐ話と、維持の仕組み AGENDA 03 / 19
  4. Dart の活用範囲が広がっている CONTEXT 04 / 19  フロントエンド Flutter による直感的で高性能な

    UI 開発  バックエンド Cloud Functions for Firebase や Cloud Run による サーバーサイド開発  AI アプリケーション Genkit Dart を活用した先進的な AI アプリ開発 モバイルアプリの外側にも Dart の選択肢が広がりつつある Flutter で培った Dart のスキルやコード資産を、そのまま別領域へシームレスに持ち出せます
  5. PRIMARY SOURCES 公式が示している Dart の広がり 05 / 19 Cloud Functions

    for Firebase Dart によるサーバーサイド開発 Experimental) Genkit Dart による先進的な AI アプリ開発 Preview)
  6. インフラ定義はどこに残るか CONTEXT 代表的なインフラ定義手法 01 手動操作 (コンソールなど) 02 HCL で書く Terraform)

    03 汎用言語で書く CDKTF等) 06 / 19 KEY CHALLENGE インフラ定義が、Dart の外に残る Dart の世界 UI · Flutter Server · Functions AI · Genkit Dart の外 インフラ定義 手動 / HCL / 汎用言語 ※ インフラをコードで書く手法が IaC
  7. THE GAP Pulumi / CDKTF に Dart がない CDK for

    Terraform (deprecated 20251210 CDKTF Archived Deprecated as of Dec 2025 Pulumi No Dart SDK supported Terraform HCL HashiCorp Configuration Language) 08 / 19
  8. Terraform の前提 07 / 19 書く .tf HCL でインフラを宣言。provider もここで決定

    CONTEXT plan 実環境との差分を確認する apply 差分を実環境へ反映する state Terraform が管理する状態記録。 plan/apply が読み書き TERRADART TerraDart が置き換えるのは「書く」だけ plan / apply / state は Terraform のまま残します
  9. TerraDart の3本柱  Boundary 接続名や URL などインフラの 値を、アプリが Dart 定数として

    受け取る。 文字列の二重管理をやめて、 typo はコンパイルエラーで止める。  Authoring HCL ではなく Dart で インフラ定義を書く。 if やループに加え、 固定値は enum、 排他の入れ子は sealed class で 表す。  Compatibility 出力するのは Terraform が読む JSON。 plan / apply / state と 既存の state は、 いまの Terraform ワークフロー のまま使う。 10 / 19
  10. OWNERSHIP Firebase と TerraDart の棲み分け アプリと一緒に変えるなら Firebase / アプリをまたぐなら TerraDart Terraform) 11

    / 19  Firebase アプリと一緒に変える Auth のログイン手段、Hosting のリライト、Firestore のセキュリティルールなど。 アプリのリリースと同じ周期で変える。  TerraDart アプリをまたぐ土台 VPC、共有 SA / IAM、Cloud SQL など。 複数のアプリが使い、長く残る土台。 ※ 同じリソースを Firebase と TerraDart Terraform) の両方から管理しない
  11. デモアプリ Lunch Concierge  フロントエンド Flutter on the Web で

    気分、場所、予算を 入力  バックエンド Dart のサーバが処理を 効率的に担当  AI Gemini Genkit が Agent Platform 経由の Gemini で ランチ候補を提案  データベース Cloud SQL PostgreSQL に 相談履歴を永続保存  IaC この構成のインフラを TerraDart で一元定義 DEMO 12 / 19
  12. リソースを Dart のクラスとして書く TYPE-SAFE 15 / 19  アプリと同じ Dart

    で書く インフラ定義が、アプリと同じ Dart の世界に 入ります。 • 型安全なプロパティの自動呼び出し • スペルミスによるエラーの未然防止 • 同じ dart analyze が通る
  13. インフラの値が Dart 定数になる TYPE-SAFE  アプリ側の Dart 定数になる インフラ側で出した値が、アプリから触れる Dart

    定数になります。 • インフラ側で値をエクスポート • TerraDart が定数クラスを生成 • アプリ側で安全にインポート 16 / 19
  14. 同じ型を client / server / AI で共有 DEMO  デモアプリの作り

    Lunch Concierge では、同じ型定義を client / server / AI で使っています。 • shared で型を1つ定義する • server で同じ型の Flow を公開する • client から同じ型で呼ぶ 17 / 19 ※ schemantic / remote action はデモアプリ側の選択
  15. Try TerraDart TRY IT 19 / 19 Quickstart から触ってみてください! terradart.dev

    GitHub · cookbook · issue 試した感想は issue へ Alpha / Google Cloud first — 対応範囲は Coverage をご確認ください