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

AI、CDK と協働する Full TypeScript アプリケーション開発 / Full ...

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

AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK

AI / CDK と協働する Full TypeScript アプリケーション開発
【AWS CDK Conference 2026 登壇資料】
https://fortee.jp/jawsug-cdk-conference-2026/proposal/5f015d2e-5a30-485d-bba1-39631132105f

【概要】
コーディングエージェントは、短時間で「動くコード」を生成できます。しかし、認知負荷、依存関係、重複、デッドコード、セキュリティといった「長く育てられるコードの品質」まで、自動的に守ってくれるとは限りません。

私たちは、物流プロセスの最適化と自動化を実現するクラウドソフトウェアを開発しています。フロントエンドに React、バックエンドに NestJS、インフラに AWS CDK を採用し、ソフトウェアコンポーネントを横断して TypeScript に統一することで、エンジニアがフロントエンドからインフラまで越境して開発できる構成をとっています。

一方で、AI に広い範囲の実装を任せるほど、プロジェクト固有の知識不足や、コードスタイル・設計方針のばらつきが課題になります。本セッションでは、CDK と TypeScript によってフロントエンドからインフラまでを統一する設計、AI に十分なコンテキストを与えるリポジトリ構成、生成コードの品質を機械的に担保する仕組み、そして複数の AI モデルと人間を組み合わせたレビュー方法をご紹介します。

More Decks by ギークプラス ソフトウェア事業部

Other Decks in Technology

Transcript

  1. Moving the world intelligently ©Geekplus Co., Ltd. AI / CDK

    と協働する Full TypeScript アプリケーション開発 株式会社ギークプラス Yuta Imamura
  2. Moving the world intelligently ©Geekplus Co., Ltd. 所属: 株式会社ギークプラス ⾃動搬送ロボット事業

    フルフィルメント事業 ソフトウエア事業 東京渋⾕区恵⽐寿4丁⽬20番3号 恵⽐寿ガーデンプレイスタワー26F 本社 PROFILE 今村 優太 / Imamura Yuta @yuimam32 前職は AWS Japan で 6 年働いていました。 ⿇布台ヒルズは初です!
  3. Moving the world intelligently ©Geekplus Co., Ltd. 3 INDEX 01

    ソフトウェアの概要 Moving the world intelligently ©Geekplus Co., Ltd. 02 コンテキストを拡充する 03 スタイルを強制する 04 コードをレビューする 05 まとめ
  4. Moving the world intelligently ©Geekplus Co., Ltd. 5 01 —

    ソフトウェアの概要 開発しているソフトウェア 物流プロセスの最適化と⾃動化を実現する クラウドベースのソフトウェア 需要予測 在庫最適化 輸配送の効率化 データ統合基盤 ...etc Moving the world intelligently ©Geekplus Co., Ltd.
  5. Moving the world intelligently ©Geekplus Co., Ltd. 6 01 —

    ソフトウェアの概要 現在の技術スタック React TypeScript FRONTEND BACKEND NestJS TypeScript Drizzle INFRASTRUCTURE AWS AWS CDK (TypeScript) Datadog Auth0 PostgreSQL ソフトウェアコンポーネントを横断して Full TypeScript を採⽤。 エンジニアはフロントエンドからインフラまでを越境して開発する。 ※ ⼀部、機械学習や組合せ最適化で Python、ロボット連携などで Java が利⽤されている部分あり Moving the world intelligently ©Geekplus Co., Ltd.
  6. Moving the world intelligently ©Geekplus Co., Ltd. 8 02 —

    コンテキストを拡充する セントラルリポジトリを置く Moving the world intelligently ©Geekplus Co., Ltd. AI 関連の共通ツール (skills, rules 等) はすべてセントラルリポジトリに集約 ├── (workspace) │ ├── (central repository) │ ├── (Project A の worktree 1) │ ├── (Project A の worktree 2) │ ├── (Project B の worktree 1) │ └── ... コーディングエージェントはセントラルから起動し、他のリポジトリごとのルールは動的に読み込む 開始時に Linear の Issue を読み込ませてコンテキストを注⼊し、必要に応じて横断的に開発。Linear の Issue から複数のリポジトリの PR が作成されることもある。 Issue 読み込み
  7. Moving the world intelligently ©Geekplus Co., Ltd. 9 02 —

    コンテキストを拡充する セントラルリポジトリに CDK のポリシーを書く Moving the world intelligently ©Geekplus Co., Ltd. 全リポジトリが遵守すべき CDK のポリシーを横断的に書いて育てていく その他、API の命名規則などもここで管理
  8. 02 — コンテキストを拡充する ├── backend │ ├── apps │ └──

    packages ├── frontend/ ├── infra/ │ ├── setting/ │ └── lib/ │ ├── constructs/ │ └── stage/ インフラ層: NestJS など FW 依存コード Moving the world intelligently ©Geekplus Co., Ltd. pnpm workspace でパッケージ分割しつつ AI が横断的に改修可能にする パッケージ層: ドメイン、ユースケースなど FW ⾮依存コード フロントエンド: backend と型共有 環境ごとの設定: 環境ごとのパラメータも ts で管理 CDK Construct: 再利⽤可能な単位で作成 CDK Stage: 複数スタックを環境別にインスタンス化 横断的なディレクトリ構成
  9. Moving the world intelligently ©Geekplus Co., Ltd. 11 02 —

    コンテキストを拡充する インフラも含めて vitest にランナーを統⼀ cdk-nag によるセキュリティリスクもここで検出しテストで落とす Moving the world intelligently ©Geekplus Co., Ltd. ツールを統⼀することで AI とヒトが知るべきテストの作法の認知負荷を軽減 コンストラクトの隣にコンストラクトの unit test コードを書き fine-grained test
  10. Moving the world intelligently ©Geekplus Co., Ltd. 12 02 —

    コンテキストを拡充する oRPC - Backend API の型をリポジトリ内で共有する https://orpc.dev/ 主なユースケースはフロントエンドとの型共有だが、インフラでも例えば API Gateway にパ ス情報を渡したりすることができる Moving the world intelligently ©Geekplus Co., Ltd. hono のように REST API と RPC の良いとこどりができる
  11. Moving the world intelligently ©Geekplus Co., Ltd. 14 03 —

    スタイルを強制する tsconfig の厳格化 strict まず有効化。 noUncheckedIndexedAccess 配列へのアクセス結果に undefined の可能性を追加 noImplicitReturns 値を返す関数は必ず値を返すことを保証し return 忘れを防⽌ noImplicitOverride メソッドやプロパティの上書きの際に override を必須に noUnusedLocals 使われていないローカル変数や import をエラーにする noFallthroughCasesInSwitch switch ⽂での break 漏れ防⽌ isolatedModules tsc 以外で将来的にトランスパイルしたいときのために導⼊ noUnusedParameters 使われていない関数の引数をエラーにする Moving the world intelligently ©Geekplus Co., Ltd. 型安全性を最⼤限取り⼊れる
  12. Moving the world intelligently ©Geekplus Co., Ltd. 15 03 —

    スタイルを強制する 環境ごとのインフラ設定も型に落とす Moving the world intelligently ©Geekplus Co., Ltd. パラメータの指定漏れが発⽣しない構造を型でつくる パラメータは必ず複雑化するので、型チェックと補完を効かせる bin/app.ts から dev-param.ts など環境ごとの param ファイルを CDK stage に渡す
  13. Moving the world intelligently ©Geekplus Co., Ltd. 16 03 —

    スタイルを強制する knip - デッドコードを排除する https://knip.dev/ 未使⽤のファイルや依存関係を⾃動抽出し削除 使われていない export はモジュールローカルに Moving the world intelligently ©Geekplus Co., Ltd.
  14. Moving the world intelligently ©Geekplus Co., Ltd. 17 03 —

    スタイルを強制する dependency-cruiser - レイヤー違反を防⽌する https://github.com/sverweij/dependency-cruiser 循環依存を禁⽌ ドメインはユースケースに直接依存しないなど、ソフトウェア構造をクリーンに保つ Moving the world intelligently ©Geekplus Co., Ltd.
  15. Moving the world intelligently ©Geekplus Co., Ltd. 18 03 —

    スタイルを強制する jscpd - 重複コードを検出する https://jscpd.dev/ コードをトークン化し Rabin-Karp 法により類似コードを検出 全体で重複率 5% 以下を⽬標に設定 Moving the world intelligently ©Geekplus Co., Ltd.
  16. Moving the world intelligently ©Geekplus Co., Ltd. 19 03 —

    スタイルを強制する react-doctor - フロントエンドを採点する https://www.react.doctor/ 不要な useEffect、props の過度なバケツリレー、 コンポーネントの肥⼤化などをルールベースで⾃動検出 Moving the world intelligently ©Geekplus Co., Ltd.
  17. Moving the world intelligently ©Geekplus Co., Ltd. 20 03 —

    スタイルを強制する Code Smell - 認知的複雑度をおさえる Moving the world intelligently ©Geekplus Co., Ltd. https://biomejs.dev/ja/ lint/complexity/noExcessiveCognitiveComplexity を有効化すると、認知的複雑度が 15 を 超えた段階でエラーとみなしてくれる Rust 製 linter/formatter の biome を使⽤ 認知的複雑度(Cognitive Complexity)とは? コードが「⼈間にとってどれだけ理解しにくいか」を測定する • 循環的複雑度が独⽴した実⾏経路の数を評価するのに対し、 認知的複雑度は、⼈間がコードの制御フローを理解する際の 負荷を評価する指標 • 数値が低いコードほど制御フローを追いやすく、保守しやす い傾向がある lint/complexity/noExcessiveLinesPerFunction を利⽤し、⼀定の⾏数を超える関数は チェック対象とすることで、認知負荷を抑える
  18. Moving the world intelligently ©Geekplus Co., Ltd. 22 04 —

    コードをレビューする Crit - PR を出す前に⽬視確認 Moving the world intelligently ©Geekplus Co., Ltd. https://crit.md/ PR を出す前に PR-like なインタフェース上でコメントをつけてコーディング エージェントに修正させる
  19. Moving the world intelligently ©Geekplus Co., Ltd. 23 04 —

    コードをレビューする PR Agent - 別モデルにレビューさせる Claude Code で書かれることが多いため GPT 系のモデルに PR の⼀次レビューをさせる ⼈のレビュアーに向けてレビュアーガイドを提⽰ Moving the world intelligently ©Geekplus Co., Ltd. https://github.com/The-PR-Agent/pr-agent
  20. Moving the world intelligently ©Geekplus Co., Ltd. 24 05 最後に

    Moving the world intelligently ©Geekplus Co., Ltd.
  21. Moving the world intelligently ©Geekplus Co., Ltd. 25 Moving the

    world intelligently ©Geekplus Co., Ltd. まとめ 05 — 最後に 03 エンジニアの役割は、AI Agent が働きやすい環境を整備する AI Agent Manager へ徐々にシフトしていきつつある (当社⽐) 01 メカニズムや型など様々なルールベースのアプローチで、AI が⾏うことができる作業を律していく 02 CDK / TypeScript でフロントからインフラまでを統⼀的に作 ることで、共通のルールやメカニズムが育てやすく、エンジ ニアは越境してプロダクトを育てることに集中できる
  22. Moving the world intelligently ©Geekplus Co., Ltd. 26 技術ブログもやってます! https://zenn.dev/p/geekplus

    THANK YOU !! Moving the world intelligently ©Geekplus Co., Ltd. 「ギークプラス zenn」で検索