AIエージェントで会話できる自己紹介ページの開発
Photo by Christopher Gower on Unsplash
現在、オーストラリアでITを専攻しながら学んでいます。
また、10週間のフルスタックのAIエージェント開発のチームプロジェクトインターンシップに携わり、会話型AIと実際の業務ロジックを統合するシステム設計を経験しました。
その経験を活かし、自分自身を題材に、会話・予約・実行まで可能な“デジタルツイン型の紹介ページ”を個人で開発しました。
この紹介ページは、単なる自己紹介サイトではありません。
私が寝ているときや予定が入っているときでも、
まるで私と直接会話しているかのように質問し、理解し、さらにはミーティング予約まで完結できるプラットフォームです。
実装した主な機能
- 音声・チャットによるAIとの対話機能
- Googleカレンダーとのリアルタイム連携
- 会話の流れの中で完結するミーティング予約
- Google Meetリンクの自動生成
- 予約確認メールの自動送信(Resend)
- 会話・予約履歴のデータベース保存
フロントエンドはNext.js(App Router)、
バックエンドはPrisma + PostgreSQL(Neon)を使用し、
Vercelで本番デプロイしています。
苦労した点と改善
① AIと実際のカレンダーの同期設計
AIが「予約しました」と言っても、実際に空いていなければ意味がありません。
サーバー側での空き時間チェック、重複防止ロジック、
そして会話体験を壊さない設計に特に苦労しました。
“自然な会話”と“正確な業務処理”を両立させる設計を意識しました。
② 音声APIのクォータ超過問題
当初はElevenLabsとVapiを用いた音声通話機能を実装していましたが、無料クレジット上限に達し、通話が途中で切れる問題が発生しました。
そこで、
- 外部音声APIを廃止
- ブラウザ標準のWeb Speech APIへ移行
という設計変更を行いました。
Web Speechを使用することで、自分自身の声を使うことができないこととロボットと話しているような感じになってしまうことがデメリットですが、コストと安定性を踏まえた設計になっております。
将来的には自分自身の声に変え、より自分と話しているかのようなカスタム音声モデルを導入する予定です。
③ Googleカレンダー認証設計での混乱
OAuthとService Accountの違いを十分に理解できておらず、
リダイレクトURI設定でつまずきました。
最終的にService Accountへ切り替え、
サーバー間認証にすることでシンプルかつ安全な設計に改善しました。
認証方式の選択がアーキテクチャに大きく影響することを実感しました。
この開発を通して得たこと
- フルスタックでのAI統合設計力
- 外部API連携の構造理解
- 認証方式の選定判断
- トラブル発生時のアーキテクチャ再設計力
- 本番環境を意識した実装思考
単に動くものを作るのではなく、
「実際に使える仕組み」を構築する視点が身についたと感じています。
今後の展望
- カスタム音声モデルの導入
- RAGによる回答精度向上
- 電話番号連携(PSTN通話対応)
- 利用分析ダッシュボードの実装
将来的には、個人ポートフォリオを超えた
“AIによる拡張型プレゼンスプラットフォーム”へ発展させたいと考えています。
デモ・ソースコード
🔗 デモページ
実際のアプリはこちらから
🔗 GitHub
リポジトリ