「データ × AIを活用して福島の魅力を伝えるハッカソンsupported by 福島テレビ」の優勝チームのAIアプリのアーキテクチャとは?わずか1ヶ月で先鋭的なAIアプリを作り上げた舞台裏とプロジェクトマネジメントの様子をチームメンバーに聞きました。

エンジニアにとって新たな技術との出会いやチャレンジの場であるハッカソン。様々なテーマで、各地で開催されていますが、去る6月には博報堂テクノロジーズとソフトバンクの2社による共同企画のハッカソン「データ × AIを活用して福島の魅力を伝えるハッカソンsupported by 福島テレビ」の最終発表会(成果物発表)が開かれました。
同ハッカソンは、福島テレビが提供する番組コンテンツなどのデータと、さまざまなAIとを組み合わせ、「福島県の魅力を効果的に伝える成果物の創出」をゴールとしたもので、参加者は博報堂テクノロジーズとソフトバンクに所属するデータサイエンティストやエンジニアの有志たちによって構成された5チーム。
各チーム約1ヶ月にわたりオフラインやリモートでのミーティングを重ね、思い思いのサービスやアプリケーションの開発を進めました。
そして生まれた成果物は、「福島県の名勝や観光地などを擬人化」や「ユーザーが投稿した映像などからショート動画を自動生成」など、単に生成AIを使用しただけでなく、ユーザーに福島の魅力を感じてもらうべく、サービス構成や技術、UXの面まで多くの工夫に満ちあふれ、サービスとして非常に高い完成度を感じさせるものでした。
参加者たちは、短期間での開発をどのようにマネジメントし、生成AIを使ううえでどのような工夫をしたのか。また、異なる企業に所属するメンバーによるコラボレーションをいかに実現したか。優勝チーム「テックと盃」の6人のメンバーにお話を伺いました。
※この記事は株式会社博報堂テクノロジーズによるタイアップ広告です。
チーム「テックと盃」

児玉壮平さん
株式会社博報堂テクノロジーズ メディア事業推進センター所属。広告テキストの生成や評価をAIで自動化する技術の研究開発を担う。チーム内ではアプリのフロントエンド実装を主に担当。

小山田圭佑さん
株式会社博報堂テクノロジーズ メディア事業推進センター AaaS Tech Lab所属。データサイエンティストとして、視聴率予測AIモデルやラップ生成AIシステムなどを開発。チームではアプリの全体構成や、UX観点でのデザイン、漆器のデザインに関するAIのプロトタイピングを主に担当。

堀内優太さん
株式会社博報堂テクノロジーズ メディア事業推進センター所属。新しいLLMの概念検証や社内向けのシステムの開発を担う。チーム内ではインフラの構築、CI/CDの仕組み作り、AWSの環境構築を担当。

別府文香さん
ソフトバンク株式会社 AIテクノロジー本部所属。生成AIを軸に、クライアント向けチャットシステム構築、最新ツールの検証や上位層へのレポーティングなどを担う。チームでは、日本酒に関するデータセット作成、RAGによるチャットの構築のほか、最終発表会のプレゼン資料の作成と発表を担当。

野田彩夏さん
ソフトバンク株式会社 コミュニケーションサービス開発本部所属。APIの企画、運用など担当。チームでは、福島テレビのホームページから日本酒に関するグルメ情報の取り出しを担当。

足田幸一さん
ソフトバンク株式会社 データソリューション本部所属。データマネジメント関連業務、BIツールを用いたサービス開発やデータ分析を行う。チームでは、福島テレビ提供の映像データの分析を担当。ソフトバンクが開発したアノテーションツール「TASUKI Annotation Tool」を使って、番組アーカイブの映像からデータを作成し精度検証も実施。
チャット形式のレコメンデーションと、3D画像生成を実現するアーキテクチャ
今回、皆さんが開発されたアプリについて、改めてご紹介いただけますか。
別府 福島県には多くの日本酒の酒蔵があり、品評会で金賞を受賞した酒蔵の数も全国トップクラスです。また、漆器などの伝統工芸も盛んです。こういった伝統と文化の魅力を若者や訪日観光客にもっと知ってもらい、楽しんでもらうために「AIが作る、わたしの酒と器。」というアイデアを元に、日本酒のレコメンデーションと、それを飲むための漆器の絵柄デザインを生成するサービスを開発しました。

チャットを通じて利用者が自分の好みや気分を入力すると、オススメの福島の日本酒を提案して、その蔵元に関する情報を表示します。

日本酒レコメンデーション機能が作動する様子(再生速度は実際のアプリの動作速度とは異なる)。
別府 漆器のデザインもチャットで、自宅のダイニング周りの雰囲気や、好きなモチーフを入力していくことで、ユーザーの好みの絵柄を生成して、それが実際に漆器に描かれたような3D画像を作成します。

器のデザイン生成機能が作動する様子(再生速度は実際のアプリの動作速度とは異なる)。
別府 このアプリは、旅行前や旅行中の宿で利用してもらうことを想定していて、このアプリを使う中で酒蔵に興味を持って、実際に訪問したり、漆器の絵付け体験に参加してもらったりすることで、より深く福島の魅力を知ってもらうことを目標としています。
AIによるレコメンデーションと画像生成を組み合わせたアプリなんですね。AIを実装する際に、どんな工夫をされましたか。
小山田 漆器の3D画像生成を、あえて遠回りさせている部分です。私たちのアプリでは「2Dの絵柄を作成する」「その絵柄が器に描かれたような3D画像を作成する」という、2段階のステップを踏んでいます。

最近の画像生成AIならば、テキストなどの情報をもとに、1ステップで好みの絵柄が描かれた器の画像を生成できるようになってきました。しかし、それでは器の形が毎回変わってしまったり、絵柄単体の画像データを取得することができません。今回はユーザーが実際に福島に訪れて、器の絵付けを体験するところまで想定しているので、絵柄単体の画像として保存し、生成した絵柄をユーザーが絵付け体験の中でトレースして使えるようにしました。
また、3D CGツールのBlenderを使って、あらかじめ用意した器の3Dモデルに、生成した絵柄をテクスチャとして貼り付けてレンダリングすることで、器に描いたときのシミュレーションができる仕組みにしています。
リアルな体験との連動も考慮されているのですね。
小山田 はい。この仕組みによって、器の絵付け体験教室と連動しやすくなるようデザインしています。たとえば、教室で用意されている器を3Dスキャンしてデジタル化すれば、ユーザーが絵付け体験に訪れた際に作れる器を想定した3D画像になるわけです。
日本酒のレコメンデーションでは、AIはどのように活用されているのでしょうか。
別府 レコメンドにはRAG(検索拡張生成:Retrieval Augmented Generation)を使っていますが、RAGが参照するデータセットを作るところで工夫しています。日本酒のリストや飲み方といった資料をドキュメント形式のままRAGに参照させても、データの構造が曖昧で意図した情報が抽出されにくいケースが多々あります。 ですから、CSVのような構造化データとして、日本酒の味の分類や、飲むのに適切な温度などを整理しました。

野田 日本酒に関するデータは、当初、福島テレビさんから提供された番組アーカイブから抽出する予定だったのですが、より豊富なデータを手に入れるべく、ウェブサイト全体から集めています。
当初はDeep Researchで活用しようとしたのですが、うまくいかず、結局Pythonでコードを書いてスクレイピングすることになりました。ただ、ウェブサイトの記事ごとに内容は表記ルールが異なっていたり、お酒とまったく関係のない記事を拾ってしまったりしたので、結局手作業で情報を修正するところもあって、苦労させられました(笑)。
別府 ユーザーとのチャット対応はLLMにClaude 3.5 Haikuを使っていますが、実際に運用した際のコスト削減を意識したうえでの選択です。精度だけを考えると、GPT-4o やClaude 3.5 Opusの方が期待できますが、コストも上がってしまいます。
児玉 加えて、チャットの応答速度も考慮してLLMを選んでいます。チャットの返答に時間がかかると、ユーザー体験の満足度が下がってしまうので、今回のケースではClaude 3.5で最も軽量で高速なモデルのHaikuを選びました。同じClaude 3.5でも、Opusに比べるとHaikuはパラメータ数が圧倒的に少ないはずですから、その分、かなりの速度が期待できます。
AI以外の部分で、技術的に工夫したり挑戦したりしたことはありますか?
堀内 今回、インフラ構築を担当したのですが、自分はこれまでインフラを「利用する側」で、ゼロからAWSで環境構築したことがなかったので、そこが個人的には挑戦でした。
とくにセキュリティ周りには悩みました。AWS WAF(ウェブアプリケーションファイアウォール)で、外部からのアクセスをコントロールしていたのですが、最終発表会では会場の方にもアプリを実際に触ってもらいたかったので、不特定多数の人が利用できるようにしつつ、いかに不正なアクセスをブロックするかというところで試行錯誤しましたね。
ハッカソンの発表会での一時的なことなので、そこまで考える必要はないんですが、実際にこのアプリをローンチして運用するまでをイメージして、セキュリティについては対応しました。

実際の運用を見据えた工夫は他にもあります。画像生成AIをAmazon Bedrock(フルマネージド型の生成AIサービス)を経由して使うこともできましたが、今回はEC2のコンテナを立て、その中でStable Diffusionを動かしています。
LoRA(Stable Diffusionの画像生成モデルに少量の追加情報を組み込むことで、特定の要素を効率的に学習させる手法:Low Rank Adaptation)によるファインチューニングや、Stable Diffusionの拡張機能であるControlNetを活用した画像生成などを行うために、自由度高く実装ができるEC2コンテナを今回は利用しました。
ユーザーストーリーを共有し、チームのビジョンを共通化する

デザインやフロントエンド、バックエンド、AIの開発、データの整理など、多くの作業が必要だったと思いますが、それぞれの役割分担はどのように決まりましたか。
小山田 それぞれ自分ができること、挑戦してみたいことに手を挙げてもらって、自然に役割分担ができました。技術面について、フロントエンド、バックエンド、デザイン、AI開発、インフラ構築と、それぞれが普段の業務で行っていたり、業務経験はなくてもある程度の知識を持っている人が集まったので、その点では幸運でした。
今回は短期間で、しかも所属組織が異なるメンバー同士での開発ということで、プロジェクトマネジメントが大変だったと思いますが、どのようにチームをマネジメントしていたのでしょうか。
小山田 主催が週に1回くらいのペースでオフラインミーティングを設定してくれていたので、その日はメンバーがリアルで集まり、それ以外の日はSlackでコミュニケーションするのが基本でした。
チームやプロジェクトのマネジメントについては、厳密な形ではやっていませんでした。というのもメンバーの所属部署ごとにルールが違っていて、業務時間内でも作業できる人と、業務外でしか作業できない人がいるので、同じサイクルで進めることができなかったんです。
ですから、初期のミーティングで役割を決めて、各自がマイルストーンと作業完了目標を定め、最低限の管理でプロジェクトを進めました。
皆さんのアプリは「日本酒レコメンデーション」「器の画像生成」という大きく2つの機能があります。どちらか一つに絞るという方向も検討したのでしょうか。
小山田 一番最初に付箋に各自アイデアを書いて出し合う時間があったのですが、その段階で、「日本酒」「工芸」というアイデアは出ていて、相性の良さはメンバー全員が感じていたので、自然とその2要素を組み合わせたアプリにしよう、となりました。
「日本酒レコメンデーション」だけでは、もしかしたらありきたりかもしれない。「器の画像生成」だけだと、サービスとして幅が狭すぎるかもしれない。だけど、その2要素を組み合わせると、ユーザーの「お酒を楽しむ時間」をより価値のあるものにできるかもしれない。そんな思いで、皆で今回のアプリのコンセプトにたどり着いたと記憶しています。
「なにを作るか」「どう作るか」といった、メンバーの意識のすり合わせやイメージの共有はどのように行っていたのでしょうか。
小山田 アイデアとアプリの方向性に関しては、最初の1週間くらいで原型ができていたと思います。後は、アプリを構成するうえで必要になる技術を各メンバーが検討し、何を作るべきか理解を深めていったという流れです。
ただ、メンバーがそれぞれバラバラに動いても、方向性が揃わないなと思い、僕がUI/UXの設計とデザイン案を作成して、皆とmiroで共有し、「どんなアプリを作るのか」「そのためにはどんな技術や要素が必要なのか」など、皆で共通のビジョンを持てるようにしたんです。

小山田さんがチームに共有したmiroで描かれたユーザーフロー(一部)。こうした資料で、アプリが体現すべきビジョンをメンバー内で共通化した。児玉 小山田さんがユーザーのフローをちゃんと作って提示してくれたので、フロントエンドを実装する立場としてはとても助かりました。悩む部分があっても、立ち返るべき指針になりますから。
普段の業務では得られない、刺激と学び
今回のハッカソンのアプリ開発を振り返って、反省や学びがあれば教えて下さい。
児玉 自分が最初に出したアイデアはボツになってしまいましたが、皆で練り上げたアイデアと実装で、優勝できたので大満足です。さらに、こうしてメンバー皆で取材を受けて、お話し出来るのがとても嬉しいですね。
普段の業務では、AIを作ったら、あとはフロントエンドの人にお任せなので、今回、自分でフロントエンドを開発してみて、どういうコードを書くと作業しやすいのかがよくわかりました。これからはもっとフロントエンドのエンジニアが読みやすいコードを書こうと思えたのはとても大きな学びでしたね。
堀内 インフラをゼロから構築して、アプリとして満足いくものができたうえに、優勝できたので本当に満足しています。それに、普段は事業開発に関わることがないので、新しいことを学んでそれをすぐに開発に活かしてアウトプットできたのはとても刺激的な体験でした。
ただ、インフラ担当としてセキュリティの設定が本当にこれで良かったのか、自分のなかではまだ満足できていません。その辺りはもっと勉強していく必要がありますね。
足田 提供いただいた番組データを十分に活用できた点は良かったのですが、もっと深くデータを分析ができたのでは、という反省もあります。例えば番組の視聴率データを使うことができれば、もっと詳細で多角的な分析ができたと思いますが、今回はそこまでたどり着けませんでした。
別府 私は当初の想像以上のものを作ることができたと手応えを感じています。自分ひとりだと作れないものが、チームでやることで実現できるのはハッカソンの醍醐味ですね。RAGやAIモデルの学習などは業務でやったことがありますが、フロントエンドまで作るのは業務では経験がなかったので、皆と協力して完成度が高いプロダクトを形にできたのはとても貴重な経験になったと思います。
小山田 チームの皆で考えてきたコンセプトやユーザー体験に近いアプリケーションを作れた点は良かったですし、それが評価されたことも嬉しかったです。一方で「チャット」というUI / UXが本当に最適なのか、など、より深く検討し追求する余地もあるでしょう。もっと生活者がワクワクするような体験づくりについては、これからも模索していきたいなと思いました。
また、ソフトバンクの皆さんがビジネスマインドをしっかり持っていて、ディスカッションをしていて非常に刺激をもらえたのも、今回の収穫だと思っています。
皆さんのアプリは、すぐにでもリリースできるくらい完成度が高いので、「ハッカソンの成果物」にとどまらず、今後の展開も期待できるかもしれませんね。

成果発表会では、アプリに興味津々の審査員から多くの質問が投げかけられた。
別府 今回のアプリは、エンドユーザーが実際に使うことを想定し、福島テレビさんという顧客がいらっしゃり、実際のデータで福島のPRに挑むという、ビジネス観点でリアルなものにできました。しかし、仮に事業化するとしたらまだまだ検討が足りないところがあるので、もし機会があればそこも検証したいですね。
足田 最終発表会の後に福島テレビさんとお話する機会があったのですが、アプリにすごく関心を持っていただいたんです。リップサービスかもしれませんが、事業化の可能性を感じていただいたようなので、もし本当に事業化の機会があるならばチャレンジしたいですね。
ーー本日はありがとうございました。
企画・制作:はてな
取材・構成:青山祐輔
関連情報
関連する求人情報
- 【開発第2】ソフトウェアエンジニア(広告メディアビジネスの次世代型モデル開発)
- 【開発第2】テックリード(広告メディアビジネスの次世代型モデル開発)
- 【開発第2】開発プロジェクトマネージャー(広告メディアビジネスの次世代型モデル開発)