0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GenUのコードを「なぜ」から理解したくて、本を書いた

0
Posted at

GenUのコードを「なぜ」から理解したくて、本を書いた

AWS の OSS「GenU(Generative AI Use Cases)」をご存じでしょうか。チャット・RAG・エージェント・画像生成・音声会話など、生成 AI の主要ユースケースが 1 リポジトリにまとまった、AWS 公式のリファレンス実装です。

AWS を使っている方なら、一度はクローンしたことがあるかもしれません。あるいは「名前は知ってるけどまだ試していない」という方も多いと思います。

私は GenU のコードを読み込んでいくうちに、これは単なるサンプルアプリではなく、AWS で本格的な生成 AI システムを構築するための設計判断が随所に埋め込まれた教材だと気づきました。そしてその「設計の意図」を言語化した本を書きました。

「GenU コードリーディングガイド ― AWS 生成 AI アプリケーションの全貌を読み解く」

なぜ書いたか

最初にリポジトリに触れたとき、正直、途方に暮れました。

794 を超えるファイル、463 の TypeScript ファイル、最大 10 の CDK スタック、40 を超える Lambda 関数。「どこから読めばよいのか」「この設計はなぜこうなっているのか」という疑問が次々と湧いてきました。

ドキュメントを読み、コードを追い、実際にデプロイして動かしながら、少しずつ全体像が見えてきた。そのプロセスで気づいたのは、ひとつひとつの設計判断に明確な理由があるということです。

その「理由」を、AWS を使っている人たちに届けたくて書きました。

「なぜ」の例を三つ紹介します

なぜストリーミングに API Gateway を使わないのか

GenU のチャットは、通常の REST API(API Gateway → Lambda)ではなく、Lambda を AWS SDK で直接呼び出します。理由は明快で、InvokeWithResponseStreamCommand を使うことで、Bedrock から返ってくるトークンをブラウザにリアルタイムで流せるからです。API Gateway 経由だとこのストリーミングができない。

この設計を知った上でコードを読むと、awslambda.streamifyResponse の存在意義がはっきりわかります。

なぜ Cognito が 2 種類あるのか

User Pool と Identity Pool の両方が出てきて混乱した方、多いと思います。役割は明確に分かれています。User Pool は「ユーザー管理と JWT の発行」、Identity Pool は「一時的な AWS 認証情報の発行」。Lambda を直接呼び出すには SigV4 署名が必要で、そのための一時クレデンシャルを Identity Pool が払い出す。2 つ必要なのはこのためです。

なぜ -c オプションはダメなのか

CDK の -c オプションでパラメータを渡せるのに、ドキュメントでは非推奨とされています。理由は、フロントエンドのビルドがファイルの変更を検知してトリガーされる仕組みになっているから。-c で渡した値はファイルへの変更を伴わないため、フロントエンドが古い設定のままデプロイされてしまいます。知らないとハマります。

AWS ユーザーにこそ読んでほしい

GenU は AWS のサービスをフルに活用した設計になっています。

WAF による IP 制限は CloudFront WAF → Regional WAF → Identity Pool IAM の 3 層。RAG は Kendra(全文検索)と Bedrock Knowledge Base(ベクトル検索)の 2 系統を並列実装。音声会話は REST では実現できないため AppSync Event API で双方向 WebSocket を使う。CDK スタックは最大 10 に分割され、クロスリージョンの出力値受け渡しまで設計されています。

「AWS のどのサービスをいつ使うべきか」の判断が、GenU のコード全体に刻まれています。

これはチュートリアルでは学べないことです。実際に本番相当の設計がどう組み合わさっているかを、動くコードで確認できる。その価値をこの本で引き出せたらと思っています。

本書の構成

全 9 章、171 ページ。v5.4.0 を対象としています。

テーマ
第 1 章 プロジェクト概要・技術スタック・v5.x の変更点
第 2 章 CDK スタック構成・3 種類のデータフロー
第 3 章 環境構築・デプロイ・複数環境管理
第 4 章 React フロントエンド・Zustand・API 通信 2 経路
第 5 章 Lambda 群・Bedrock Converse API・DynamoDB 設計
第 6 章 Cognito・WAF 3 層防御・SAML・閉域網構成
第 7 章 RAG(Kendra / Bedrock Knowledge Base)
第 8 章 エージェント・MCP・音声会話・Use Case Builder
第 9 章 設定リファレンス・ローカル開発・テスト・PR 貢献

TypeScript と React が読めて、IAM や CloudFormation の基本概念があれば、CDK や Bedrock の事前知識がなくても読み進められるように書きました。

こんな方に読んでほしい

  • GenU をデプロイしたが、コードの全体像が把握できていない
  • GenU をベースにカスタマイズしたいが、どこを触ればいいか迷っている
  • AWS CDK + Bedrock の実践的な設計パターンを学びたい
  • RAG やエージェントをゼロから自前実装する前に、先行実装の判断を吸収したい

「デプロイして動いた」の先へ進みたい AWS ユーザーに、届けたい本です。


OSS なので GenU は今後も更新されます。バージョン差異が生じても、設計思想と「読み方」さえ身についていれば、最新のコードを自力で追えるようになる。そこまでを目指して書きました。

よければ手に取ってみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?