はじめに
12/21(土)に開催された「JAWS-UG Presents AI Builders Day」にて本記事のタイトルの内容で登壇させていただきました。
このような貴重な機会をいただき、運営の皆様、本当にありがとうございます。
また全てのセッションが知見のオンパレードで試したい内容や今後の仕事に役立つ内容ばかりでした。
本当に参加してよかったです。めちゃくちゃ楽しかったです!!!
登壇資料
登壇資料は以下になります。
資料の詳細
ポイントになりそうなスライドだけピックアップして載せます。
全部載せると長くなるので...
発表のゴールは、主に以下の実体験から気軽にAIエージェントアプリを作れたら良いなと思い設定しました。つまるところ、「AIエージェントとユーザーを繋げたかった」からです。
- AIエージェントを作って満足してしまうケース
- 純粋にStrandsAgentsのフロントエンド作るとき構成に困るケース
AIエージェントを作ったはいいけど、アプリ化は諦めてGitHubなどに眠っている場合が多いと思うんですよね...
アプリ化の敷居が下がれば、もっと色んなAIエージェントが日の目を浴びるのでは。と思っています。
この構成は、タイトルで「全てAWSで完結!」と書いてしまった手前、「ECS」を例に挙げました。
AWSにこだわらないのであれば、Streamlitが提供するクラウドを使うのも手っ取り早いかな。とは思いました。
あとは、私は試せてないのですがフロントエンドに「htmx」という選択肢がありそうです。
この構成は、フロントエンド入門には丁度いいかなーと思ってました。
Viteもただプロジェクト作るだけで細かな設定は不要ですし、React周りはストリーミングを実装しようとすると少し面倒ですが、AIエージェントとやり取りする上で処理の流れを掴むことが出来ます。
あとは、AgentCoreの前段にLambdaを挟めたりと発展性があります。
個人的には、頑張って書いたり覚えたことが無駄にならないところ嬉しいところかなと思ってました。
みのるんさんのre:Inventエージェントが確か同じような構成だったと思うで、参考にしていただくのが良いかなと思います。
個人的にSnadbox昨日は、Amplifyの機能の中で一番便利だと思ってました。
例えば、「bedrock-agentcore-starter-toolkit」を使ってデプロイしてもいいんですけどね...
ただCI/CDに乗せ換えるのが面倒ですし、LambdaやAPI Gatewayを間に挟むと、単純にデプロイに必要な手順が増えるんですよね。これを開発段階でやるのが結構な手間でした。
Sandboxを使えば、Amplify配下のファイルを保存すると自動で全部のリソースをデプロイしてくれます。
AgentCoreをCDKで書くので初心者には敷居が高いかもしれませんが...損はないです!
こちらもCDKでAgentCoreを定義する必要はありますが、最低2行でCI/CDを組めるのでめっちゃ便利です。
注意事項にAmplifyのネガティブな意見を書いてしまいました。
こちらの課題は結構前からGitのIssueで報告が挙がってるようのなので、進展があると嬉しいのですが...
個人的にre:Inventのアップデートより熱かったですね。
CopilotKitを使用する場合、StrandsAgentsのコードにも手を入れる必要があります。
create_strands_appを実行すると、FastAPIのAPIが作成されます。
その中でストリーミング処理なども行ってくれているので、コードをとしては割とシンプルになります。
注意点としては、HTTPのヘッダーなどに情報を付与したいケースです。その場合は、create_strands_appを外す必要があります。
例えば、AgentCore Memoryを使用する場合に、actor_idとしてCognitoのSubを渡したい場合などですね。
import os
from ag_ui_strands import StrandsAgent, create_strands_app
from strands import Agent
from strands.models import BedrockModel
model = BedrockModel(
model_id="jp.anthropic.claude-haiku-4-5-20251001-v1:0",
region="ap-northeast-1"
)
agent = Agent(
model=model,
system_prompt="You are a helpful AI assistant.",
)
agui_agent = StrandsAgent(
agent=agent,
name="strands_agent",
)
app = create_strands_app(agui_agent, "/invocations")
if __name__ == "__main__":
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
詳細は、以下の記事をご参照ください。
本発表の中でAG-UIについて、あまり触れられなかったので、どこかのタイミングで紹介できればと思います。
最近は「A2UI」というGenerativeAI向けプロトコルがGoogleから発表されているので、そのあたりも含めてキャッチアップを進めたいですね...
こちらはあくまで「StrandsAgents」特化の構成になっています。
そのため、例えば「Mastra」「AI SDK」など使用する場合は、CopilotKitが別のライブラリに置き換わる可能性はあります。(例:AI SDK UIなど)
詳細はサンプルコードを以下に配置しているので、ご参照ください。
現状、AIエージェントのアプリ構築は成長途中なのかなと思います。
そのうえで、運用も含めて本番用に全振りするのは、手戻りになる可能性もあり、個人的にリスクがあると思ってます。
AI関連の技術は進化も早いですしね...
Amplifyは、良くも悪くもすべてを抽象化してくれるため、簡単にWebアプリを構築できます。
ただし、本番環境ではCI/CDや運用監視、細かな設定チューニングなどを作り直す必要はあります。
つまり、本番ほど作りこまないけど、変化に強い構成が求められるAIエージェントの時代にこそ、Amplifyが輝くのではないかと考えています。
ぜひ「中規模 最強構成」を試してみてください!
最後に
いかがでしたでしょうか?
現地での意見や登壇アンケートをの結果を踏まえると、AIエージェントは入門したけど、フロントエンドまで用意してアプリを提供する。といったところまで作られた方は少ないのかなという印象を持ちました。
もしかすると、今回のイベントは「AWS」という1つのテーマがあったので、インフラやバックエンドを専門にお仕事をされている方が多かったかもしれません。
本発表の内容を通じて、AIエージェントを「作る」だけなく、AIエージェント「アプリ」として気軽に展開できるようになるといいなと思ってます!少しでも試してみようかな?と思っていただけると嬉しいです!
現状は、チャット型のアプリが中心かもしれませんが、2026年にはAIエージェントとユーザーの単なるテキストのやりとりでなく、もっと応用的なアプリやUXを求められると思います。
今のうちに、AIエージェントのフロントエンドを作れるようになっておくと、AIエージェント開発が更に楽しくなると思います!
個人の来年の目標としては、AIエージェントに関するの知識を深めつつ、ユーザーがAIエージェントを意識しないUIなど、より応用的なことにチャレンジしたいと考えています。
またいつの日か皆様に新しい知見を提供できればと思っております。(偉そうなことを言って、すみません。)
改めまして、運営の皆様、本発表を聞いてくださった皆様、そしてイベントに参加してくださった皆様、本当にありがとうございました!!またお会いしましょう!!







