Blog

ニフティキッズで開催したAIイベントの裏側

ニフティキッズの開発担当をしている渡邊です。
3/24にニフティが運営する子ども向けサイト「ニフティキッズ」にて、AIイベントを開催しました。
当日は新宿本社に10組の親子を招き、AIについて学んでいただきました。
詳細に関してはPR TIMESの記事をご確認ください。
今回は、ニフティキッズのマスコットキャラクターである「ひよりん」と会話ができるAIひよりんの裏側を話していきます。AIひよりんはイベント用に新しく作成しました。

システム構成

AIひよりんは、ユーザーが入力したテキストに対して「ひよりん」として応答したり、指示に基づいて画像を生成したりするWebアプリケーションです。返答されたテキストは音声合成により読み上げられます。

全体的なアーキテクチャは以下の要素で構成されています。

  • フロントエンド: ユーザーインターフェースを提供し、バックエンドAPIと通信。
  • バックエンドAPI: ビジネスロジックを処理し、外部サービス(生成AI、音声合成)と連携。
  • 生成AI: テキスト生成と画像生成を行う(Amazon Bedrockを利用)。
  • 音声合成: 生成されたテキストを音声に変換(VOICEVOXを利用)。
  • インフラ: アプリケーションの実行環境を提供(AWS App Runner, API Gateway, Lambda, S3などを利用)。

インフラ

イベント開催まで限られた時間でしたので、柔軟な開発とスムーズなデプロイを実現できるアーキテクチャを目指しました。そのため、インフラ構築や管理のオーバーヘッドが少ないAWSのマネージドサービスを積極的に活用しました。

  • アプリケーション実行環境
    • バックエンドAPIサーバーやVOICEVOXサーバーのホスティングには、AWS App Runnerを選定しました。
    • App Runnerの詳細については、以前執筆したこちらの記事もご参照ください。
  • APIエンドポイント
    • フロントエンドからのリクエストを受け付けるAPIエンドポイントは、API GatewayとLambdaを用いてサーバーレス構成で構築しました。Lambda関数内で、後述するAmazon BedrockのAPIを呼び出しています。
  • 画像ストレージ
    • AIによって生成された画像は、Amazon S3に保存されます。保存後、フロントエンドで画像を表示するために、署名付きURLを発行する仕組みとしました。
  • 音声入力
    • 音声入力には、Google Cloudが提供するSpeech-to-Textを利用しました。このサービスはAPI経由で利用するため、インフラ管理は不要です。

生成AI

テキスト生成と画像生成のコアとなるAI機能には、様々な基盤モデルをAPI経由で利用できるAmazon Bedrockを採用しました。

  • テキスト生成 (チャット)
    • AIひよりんとの対話機能には、Anthropic社のClaude 3.7 Sonnetを利用しました。
    • 開発当初、より高速なClaude 3.5 Haikuモデルも検証しましたが、AIひよりんのキャラクター設定(話し方、性格など)をプロンプトで指示した際に、Sonnetモデルの方がより忠実に、かつ自然な応答を生成することができたため、最終的にSonnetを採用しました。
  • 画像生成

バックエンドAPI

フロントエンドと各種AIサービス間のバックエンドAPIは、Go言語で実装しました。主な役割は以下の通りです。

  1. フロントエンドからのリクエスト(対話テキスト、画像生成指示)を受け付ける。
  2. リクエスト内容に基づき、Amazon BedrockのAPIを呼び出してテキスト生成や画像生成を実行する。
  3. 必要に応じてVOICEVOXサーバーにリクエストを送り、テキストの音声データを取得する。
  4. 生成されたテキスト、画像(のURL)、音声データをフロントエンドに返す。

APIとしては、主に以下の2種類を実装しました。

  • 対話用API: ユーザー入力と会話履歴を受け取り、Bedrock (Claude) で生成された応答テキストと、VOICEVOXで生成された音声データを返す。
  • 画像生成用API: 画像生成指示のテキストを受け取り、Bedrockで生成された画像のS3 URLを返す。

Go言語を選定した理由は実行速度の速さ、静的型付けによる堅牢性、並行処理の容易さなどです。

音声合成

AIひよりんが生成したテキストメッセージを、よりキャラクターらしく自然な音声で読み上げるために、オープンソースの高品質な音声合成ソフトウェアであるVOICEVOXを利用しました。

  • 今回はDockerコンテナ版のVOICEVOXを採用し、バックエンドAPIサーバーと同様にApp Runner上でホスティングしました。
  • これにより、音声合成機能を独立したマイクロサービスとして運用でき、インフラ管理の負担を軽減しつつ、スケーラビリティも確保することができました。
  • バックエンドAPIは、このVOICEVOXサーバーに対してHTTPリクエストを送ることで音声データを取得します。

フロントエンド

Next.jsを用いて構築しました。主な機能は以下の通りです。

  • ユーザーがAIひよりんへのメッセージを入力するテキストボックス。
  • AIひよりんからの応答テキストの表示。
  • 生成された画像の表示。
  • 音声を再生する機能。
  • バックエンドAPIとの非同期通信(対話、画像生成リクエスト)。
  • ブラウザのMediaRecorder APIを利用した音声録音・データ取得処理。

出来上がったもの

チャット

画像生成

まとめ

今回のAIひよりん開発プロジェクトでは、Amazon Bedrockを中心としたAWSのマネージドサービスと、VOICEVOXのようなオープンソースソフトウェアを組み合わせることで、短期間で子どもたちに楽しんでもらえるAIアプリケーションを実現することができました。

特に、App RunnerやLambda、API Gatewayといったサービスを活用することで、インフラ構築・管理の工数を大幅に削減し、アプリケーションロジックとAI連携部分の開発に集中できたことが、迅速なリリースにつながったと考えています。

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!