【Claude Codeチャレンジ日誌5】Claude-Code SDK×Djangoで実現!AIがWebアプリを自動拡張する未来
はじめに
こんにちは!Claude Code チャレンジ日誌第5弾です。
今回は、Claude-Code SDK(Python)とDjangoを組み合わせて、WebアプリケーションにClaude-Codeを組み込んでみました。
🎯 今回試したこと
- Django × Claude-Code SDKでAIチャットアプリを構築
- Webアプリ内からClaude-Codeに指示を出してページを自動生成
🚀 実際に試してみた!AIによるページ自動生成
デモの内容
ClaudeCodeを搭載したWebアプリ上で以下の指示を投げてみました:
以下は、それぞれひよことうさぎのAIエージェントが執筆しているNote記事です。
この二人を魅力的に紹介するDjangoのWEBページを1画面作成してください。
作成したWEBページは、画面の[AI Chat」の右側にリンクボタンを配置して、クリックしたら画面遷移できるようにしてください。
- piyo_feed🐤|ピヨフィード:https://note.com/taku_sid
- taku_sid🐰エージェント:https://note.com/piyo_bird
Claude-Codeが自動的に以下を処理:
- ✅ リンクサイトを分析して画面構成を考える
- ✅ 新しいDjangoビューを作成
- ✅ HTMLテンプレートを生成
- ✅ URLルーティングを追加
- ✅ ナビゲーションにリンクボタンを配置
出来上がったWEBページ
実際に依頼した際のデモ動画
🏗️ アーキテクチャ概要
システム構成
claude-sdk-tutorial/
├── chat/ # メインアプリケーション
│ ├── models.py # データベースモデル
│ ├── views.py # ビジネスロジック
│ ├── claude_service.py # Claude-Code SDK統合
│ └── templates/ # HTMLテンプレート
├── config/ # Django設定
└── static/ # CSS/JavaScript
データフロー図解
シンプルな流れ:
- ユーザーがWebアプリでメッセージ入力
- DjangoがClaude-Code SDKにAI処理を依頼
- AIの応答をリアルタイムでブラウザに配信
- 会話履歴はデータベースに保存
🔧 Claude-Code SDK統合の仕組み
1. Claude Service(実際のコア実装)
Claude Service(実際のコア実装)
# chat/claude_service.py の主要部分
from claude_code_sdk import query
from claude_code_sdk.types import ClaudeCodeOptions
class DetailedClaudeService:
async def stream_chat_with_logs(self, message: str):
"""詳細ログ付きストリーミングチャット"""
# Claude-Code SDK 設定
options = ClaudeCodeOptions(
permission_mode="bypassPermissions" # 自動承認モード
)
# Claude-Code SDKからのストリーミング応答処理
response_generator = query(prompt=message, options=options)
async for response in response_generator:
# レスポンスタイプ別に処理
response_type = type(response).__name__
if response_type == 'AssistantMessage':
# AI応答テキストを抽出して送信
content = self._extract_content(response)
yield {
'type': 'assistant_message',
'content': content,
'icon': '🤖'
}
elif response_type == 'SystemMessage':
# 処理状況を通知
yield {
'type': 'status',
'content': '考えています...',
'icon': '🧠'
}
2. Django Viewでのストリーミング実装
2. Django Viewでのストリーミング実装
# chat/detailed_views.py
from django.http import StreamingHttpResponse
async def detailed_streaming_api(request):
"""Server-Sent Eventsでリアルタイム配信"""
message = json.loads(request.body).get('message')
# StreamingHttpResponseでSSE配信
response = StreamingHttpResponse(
detailed_stream_generator(message, session_id),
content_type='text/event-stream'
)
# キャッシュ無効化とバッファリング無効化
response['Cache-Control'] = 'no-cache'
response['X-Accel-Buffering'] = 'no'
return response
async def detailed_stream_generator(message, session_id):
"""ストリーミングジェネレーター"""
# セッション管理とメッセージ保存
session = await get_or_create_demo_session(session_id, message)
# Claude-Code SDKからのストリーミング
async for log_entry in claude_service.stream_chat_with_logs(message):
# Server-Sent Events形式で送信
yield f'data: {json.dumps(log_entry)}\n\n'
3. フロントエンドでのEventSource実装
3. フロントエンドでのEventSource実装
// static/js/chat.js
function streamMessage(message) {
const eventSource = new EventSource('/api/detailed-stream/');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.type === 'assistant_message') {
// AI応答をリアルタイム表示
appendToMessage(data.content);
} else if (data.type === 'status') {
// 処理状況を表示
showStatus(data.content);
}
};
}
🤔 考察と今後の可能性
良かった点
開発効率の劇的向上:自然言語でページ追加ができる
課題と注意点
- 権限管理:本番環境では厳格な権限管理が必須
- コード検証:生成されたコードのレビューは必要
- セキュリティ:任意のコード実行リスクへの対策
未来への展望:実装手順書駆動開発の時代へ
今回の実験で感じたのは、AIエージェント機能を標準搭載したWebアプリが当たり前になる未来です。
🚀 これからの開発フロー
想像してみてください。機能追加や改修作業が、こんな風に変わる世界を:
-
実装手順書の準備
## ユーザー管理機能の追加 ### 要件 - ユーザー登録・ログイン機能 - プロフィール編集 - パスワードリセット ### 実装詳細 1. Djangoの認証システムを使用 2. メール認証を実装 3. ソーシャルログイン対応
-
AIエージェントに投入
「この実装手順書に従って機能を追加して」
-
自動実装と確認
- AIがコードを生成
- テストを実行
- プルリクエストを作成
🔮 実装手順書駆動開発のメリット
- 仕様の明文化:実装前に要件が整理される
- 再現性:同じ手順書で何度でも実装可能
- 知識の共有:手順書がドキュメントとして残る
- 品質の均一化:AIが規約に沿ったコードを生成
🌐 さらなる未来
もしかすると、近い将来こんなことも:
# app-config.yaml
features:
- name: "ダークモード"
implementation: "auto"
priority: "high"
- name: "多言語対応"
languages: ["ja", "en", "zh"]
implementation: "auto"
- name: "決済機能"
provider: "stripe"
implementation: "guided" # 人間の確認が必要
このような設定ファイルを用意するだけで、AIエージェントが必要な機能を順次実装していく...そんな世界がすぐそこまで来ているのかもしれません。
開発者の役割の変化
このような未来において、開発者の役割は:
- アーキテクト:システム全体の設計
- キュレーター:AIが生成したコードの品質管理
- イノベーター:新しい価値の創造に集中
つまり、**「コードを書く」から「何を作るか考える」**へのシフトが加速するでしょう。
🎬 まとめ
Claude-Code SDK × Djangoの組み合わせは、AIアシスタント機能をWebアプリに統合する強力な手段です。特に、AIが自分自身のWebアプリを拡張できるという点は、開発の概念を変える可能性を秘めています。
ただし、大いなる力には大いなる責任が伴います。セキュリティとコード品質の管理は、これまで以上に重要になるでしょう。
📚 参考リンク
Claude Codeチャレンジは続きます!次回もお楽しみに👋
Discussion