Mercari主催のAI/LLM Hackathonに参加しました！

## 概要
Mercariさん主催の[Mercari AI / LLM Hackathon](https://careers.mercari.com/mercan/articles/42130/)に参加させていただいたので、開発したプロダクトの概要と、今回得た学びを共有したいと思います！

## 何を作った？
https://github.com/Non2d/mercari-hack-team-f

今回のテーマは、「生成AI / LLMを活用してメルカリのプロダクト・機能をアップデートせよ」でした。

私たちのチームでは、「断捨離BOX：手放せずにいるモノの潜在的な需要を提示し、ユーザの断捨離をお手伝いするサービス」をご提案し、審査員特別賞(3位相当)を獲得しました！

### 機能紹介と工夫
フロントエンド（私の主な担当）・UI/UX
- 「入力は写真1枚でOK!」をコンセプトに徹底的に手間を省き、使いやすさに拘りました
    - 複数冊の本を認識して一挙に登録
    - アップロードが完了すると自動で確認画面に遷移
- 文章生成AIを活用しながらも、文章形式の表示を減らし、情報量が過剰にならないよう工夫しました
    - 断捨離したいもののリストに、推薦文を要約・ラベル化して提示
![スクリーンショット 2024-10-07 11.03.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839883/522ac2be-254b-0957-50c7-3a8212517805.png)
    - 推薦文のカテゴリごとに一括して見られる、スッキリとしたページ設計
![mercari-demo-light.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839883/7af19b4b-638b-37f0-15ca-39f36cd11195.gif)


バックエンド
- 検索数のデータベースと、クエリによる検索
    - 書籍名との完全一致で、スケーラブルな処理
        - GPTに検索させる案もありましたが、Google Book APIによる精密な商品情報をそのまま活かす方針にしました
- バッチ処理によるダミーデータ追加の迅速化
    - こちらも私が実装しました

プロンプトエンジニアリング
- 画像認識の精度向上
    - 画像の向きを修正する機能を追加して改善しました
- 出品意欲を掻き立てる推薦文の生成
    - "あなたの本棚に眠る「読んでいない本について堂々と語る方法」を出品しませんか？検索数2835件の注目度が高いこの一冊、次の読者を待っています！" 等、実際の検索数に基づき出品のモチベーションが高まるコメントを生成しました

## どんな学びを得た？

### Go Boldの実現
Go Boldと実現可能性を両立する難しさと重要性を痛感しました。Go BoldとはMercariのValueの一つで、思考のリミッターを外し、普通ではない大胆なチャレンジをし続ける精神を指します。

3日間という限られた時間の中で、生成AIというじゃじゃ馬を乗りこなして大胆なプロダクトを実現するためにはいくつもの壁がありました。

例えば、複数のオブジェクトに対しての画像認識の精度が低いという問題がありました。これは、プロンプトデザイナーの方が画像の向きを修正すると精度が劇的に改善することに気づいてくれたので、写真の向きを修正する機能をつけることで解決しました。

![image](https://github.com/user-attachments/assets/8f684e7f-cae1-42e2-bb62-aeaacf9b443c)

また、GPTが出品の推薦文を生成する際、虚偽の内容が含まれる問題がありました。そこで断捨離の対象を書籍に絞り、GPTの出力を背表紙の画像から直接わかる情報に限定し、Google Book APIを使用して商品データを取得するフローに変更しました。これにより、正確な商品情報を出力できるようになりました。

![image](https://github.com/user-attachments/assets/7010efc3-c0f3-417a-b548-d09acf87870e)

「複数の商品に関する情報を、１枚の画像からサクッと出力する」という、シンプルかつ大胆なコンセプトの実現は、一筋縄では行きませんがチームで協力して様々な工夫を凝らすことで、完成まで漕ぎ着けることができました。

### Go Boldのデザイン

前述したように、本作品では出品の推薦文のカテゴリごとに断捨離アイテムをまとめたページがあります。このページでは、実際にリリースする際にはカテゴリの分布が偏り、一部のカテゴリが過疎ってしまうのではないかという意見を頂きました。そこで、UI/UXデザイナーの方が↓のようなデザインを提案してくれました。

![スクリーンショット 2024-10-07 14.43.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839883/e431ea66-4f51-3017-57a2-88d0e6aa66f0.png)

今回はダミーデータを使っており、カテゴリはあまり偏らなかったため前述のデザインを採用しましたが、斬新な新機能であっても実際にリリースした後を想像して課題を洗い出す先を見通す力や、それを受けてすぐさまデザインレベルで対策を立てて形にできるデザイナの方の発想力には驚かされました。

実際に作っているモノを世に出したらどうなるのか想像する力と、その中で見つかった課題に対応する引き出しを持っておくことの重要性に気付かされました。

## 感想
- UI/UXデザイナとの協働は初めてで、とても新鮮でした
- 機械学習に精通した人が多く、LLMに対する全く異なる視点を学べました
- 懇親会では、他のチームやエンジニアの方々と生成AIやクラウド、論文執筆などについてお話ができ、知見を深められました
- 社外メンターの方やAIアドバイザの方からビジネスサイドのアドバイスをたくさん頂き、技術力だけではないリアルな世界に触れられました
    - 特に、ユーザは生成AI自体への関心は薄く、どの技術を使っているかではなく何ができるかに興味があるというお話にはハッとさせられました

## おわりに

これまでいくつかのイベントに参加してきましたが、今回のハッカソンでは特に、参加者だけでなく社員の方々も活き活きとされていたことが印象的でした。AIやプログラムの知見だけでなく、ビジネス的思考やデザインなど、実際の業務で重要なことを高い水準で求められる経験ができ、エンジニアとしてまた一歩躍進できたと感じます。

最後になりますが、今回のハッカソンを円滑に運営してくださっただけでなく、記事やリポジトリの公開を快く許可してくださった運営の皆様、非常に参考になるアドバイスをたくさん頂いたアドバイザー及び社外メンターの皆様、進行状況をこまめにチェックしてサポートしていただいたメンター様、そして最後まで諦めずに熱い議論を交わし、共に断捨離BOXを完成させてくれたチームのみんなに、深く感謝します。

今後もこうした機会に積極的に挑戦し、自分の更なる成長に繋げたいと思います！