AI・機械学習チームの中村伊吹(@inakam00)です。
このブログはAI・機械学習チームブログリレー2日目の記事です。 記念すべき1日目は北川さん(@kitagry)の「GCPのテレメトリーのMCPサーバーを作ってボトルネックを発見する」でした。
この前結婚式を挙げたんですが、「せっかくだから何かエンジニアらしさを見せたいな」と思い、「結婚式スマイル集める君」というLINE Botを開発して式中に運用しました。 技術で結婚式を盛り上げたい方の参考になれば嬉しいです。
なぜ作ったのか
結婚式では多くの方が写真を撮ってくださいますが、新郎新婦に共有されるのはほんの一部だけというのが現実です。写真共有サービスもありますが、忙しさにかまけて後でアップロードを忘れてしまうことも少なくありません(私も2次会で大盛り上がりしてそのままということが何度かあります…)。
そこで「写真アップロードにゲーム性を持たせて、楽しみながら共有してもらえる仕組みを作ろう」と結婚式前から考えていました。
実は既にネット上には「結婚式でLINE Botを使った」という事例は多くあり、自分も作ってみたいという好奇心だけで今回の開発に至りました。*1
そして、私たちの結婚式のテーマは「笑顔」でした。私は妻と付き合い始めてから、両親に「よく笑うようになったね」と言われるようになりました。このエピソードをプランナーさんにお話ししたところ、「新婦様が新郎様を笑顔にしたのですね」と素敵に解釈していただき、テーマが決まりました。
「結婚式スマイル集める君」の概要
エムスリーの代表的なサービス「MR君」にちなんで「結婚式スマイル集める君」と名付けました(本当です)。
使い方はシンプルです。
- LINE Botを友達追加
- 名前を送信
- 写真を投稿すると、AIが笑顔度を採点
- ランキング形式で披露宴中に発表
LINEおよびLINE Botであれば参加者の皆さんに馴染みがあり、利用のハードルが低いと考えました。 著者が調べた限り、Botの返信機能によく用いられるReply Tokenを利用してユーザーに返信する方法でのメッセージ送信の場合、2025年6月現在は無料かつ明示的な送信制限がありません*2。 したがって、今回のような参加者に能動的に写真を投稿してもらう場合は無料の範囲内で実施可能であり、また多数のユーザーが同時に参加したとしても正しく機能します。
運用フローとしては、結婚式の受付時に自作のチラシとQRコードを配布し、友達追加の方法や使い方を説明し、後はそのまま好きなタイミングで利用してもらうことにしました。 式が始まるまでは「本当に使ってくれるのか」という不安もありましたが、待合中から多くの友達に使ってもらい(そしてLINEで連絡をもらい)、控え室から安心した気持ちで式を迎えることができました。 「AIの作成者だったら何点出せるの?」といったメッセージを送ってくれたり、グループLINEに投稿結果を報告してくれたりする友人も多く、本番を控えていた私自身の緊張も和らぎました。
結婚式中はメンテナンスをすることがほぼ不可能であるため、システムはサーバレス構成で構築し、万が一に備えてMacBookでモニタリングを行いました。中座後に全員で写真を投稿してみましょうというイベントをする予定だったため、中座中にMacBookを開いて、管理画面とLINE Botの動作確認を行っていました。
技術的なポイント
スコアリングアルゴリズム
「笑顔」をテーマとして試行錯誤の結果、メインの仕組みはAmazon Rekognitionで笑顔を検出し、写っている人の信頼度を単純に加算して合計する方式としました。仕組みはなるべくシンプルにすることで、撮影時に自然と「大人数の笑顔写真が高得点」という意識を持ってもらうことを狙っています。
連写対策として、Average Hashによる類似画像の判定機能も実装し、類似画像と判定された場合は大幅に減点する仕組みも導入しています。 こちらは同じようなシーンが高得点を取ってしまうことを抑制する効果を狙っています。 グループ内で共有した写真が投稿されるケースも少なくなかったため、この仕組みは我ながら賢い仕組みだったと思います。
基本的には、Rekognitionで検出された顔の笑顔スコアを合計するシンプルなアルゴリズムです。
AIの「忖度問題」への対応
当初は生成AIに「あなたは結婚式写真の専門家です。提供された写真を分析し、以下の基準に従って笑顔の評価を行ってください。」のようにプロンプトを与え、写真を採点させることを検討しましたが、期待通りの結果を得るのは困難でした。
GPT-4oで実験したところ、ラーメンの写真のような結婚式と無関係な画像でも70点程度の評価を返してしまいます。OpenAIのGPTシリーズは、人間のフィードバックに基づいてより好ましい回答を生成するようトレーニングされたInstructGPTを祖先に持ち、その基本的な学習アプローチは大きく変わっていないと推測されます。そのために「0点という極端に低い評価はユーザーを傷つける可能性がある」と判断し、忖度する傾向があるためと考えられます。 一方、Amazon Novaでは同じプロンプトでも結婚式と無関係な画像に対してはっきりと0点を返すため、最終的なスコアリングの重みづけに生成AIが算出したスコアを使うことにしました。
運用面での工夫
AIの処理に時間がかかるため、ローディングアニメーションを表示する仕組みを導入しました。些細な改善ですが、すぐにレスポンスが返ってくる印象を与えることでUXの向上につながりました。生成AIを活用したLINE Botは今後も使う機会が増えると思いますが、これは必須のテクニックに感じます。
また、披露宴中は会場のスクリーンに投稿状況をリアルタイム表示しました。フロントエンドから2秒間隔でバックエンドのAPIを呼び出すシンプルな実装ですが、写真とスコアが次々と表示されることで、参加者の皆さんがより積極的に写真撮影に取り組んでくださるようになりました。
その他、技術的な詳しい内容につきましては、エムスリーテックブック8で解説しています。
結果と学び
参加者の約60%にご利用いただき、合計368枚の写真を収集できました。何よりも「システムが安定稼働してくれて良かった」というのが正直な感想です。
最も嬉しかったのは、「集団で撮った方が点数を高くできそうなので、一緒に撮影しましょう」と参加者同士で声をかけて、初対面の方同士も集まって写真を撮影されている光景を見た時でした。まさに狙い通りの使われ方で、心の中でガッツポーズしていました。 自分で作ったプロダクトが目の前で使われている様子を見られるのは、エンジニア冥利に尽きます。
一方で、技術的な課題や反省点もありました。スコアリングアルゴリズムにおいて、単純に人数が多いほど有利になるように設計したため、結果として披露宴会場全体を俯瞰で撮影したような写真が高スコアを獲得しやすい傾向がありました。 このアルゴリズム自体十分に機能しましたが、「もしかしたら、検出された顔のサイズなどもスコアに加味したら、さらに笑顔の画像を集められた可能性がある」といった改善案が後から頭に浮かんできたりもしました。結婚披露宴という、人生で一度きりの舞台。そこでぶっつけ本番でアルゴリズムを調整し、システムを運用するというのは、なかなかにスリリングで、そして難しい挑戦だと痛感しました。
ヒヤリハット
披露宴は無事に終了し、作ったシステムが問題なく動き切ったことで安堵しました。が、後日DynamoDB内のデータが一部何らかの理由でNoneになっており、Rustで書かれていたバックエンドAPIのunwrapで処理が失敗するという事象が発生しました。幸い披露宴中ではなかったため事なきを得ましたが、まさに危機一髪でした(披露宴後の2次会時点で既に発生していたようで、本当に間一髪でした)
まとめ
結婚式でLINE Botを開発・運用した体験をご紹介しました。LINEの利用しやすさとAIをはじめとした各種技術の組み合わせにより、想像以上に参加者の皆さんに楽しんでいただけました。
もし「自分の結婚式でも使ってみたい」という方がいらっしゃいましたら、@inakam00 までお気軽にご連絡ください。
明日もAI・機械学習チームの苅野さんが結婚式ネタを書いてくれるようです。お楽しみに!
We're Hiring!
エムスリーAI機械学習チームでは、技術と共にあるギークなメンバーを募集しています 新卒・中途それぞれの採用だけでなく、カジュアル面談やインターンも常時募集しています。
エンジニア採用ページはこちら
カジュアル面談もお気軽にどうぞ
インターンも常時募集しています
*2:もしも、LINE Bot側からメッセージを能動的に送る場合、2025年6月現在では月200件までは無料という制限があります。 https://developers.line.biz/ja/docs/messaging-api/overview/