6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【国旗API】雑談苦手がGPT-4oを利用した国旗アプリを開発した

Last updated at Posted at 2024-09-09

ぜひ最後にお願いの章まで読んでいただけるとうれしいです🙇

国旗スキ🎌

国旗スキのVanです。
どのくらい好きかというと、履歴書の趣味欄に 「国旗鑑賞」 って書いていたくらい好きです。

(原文ママのイメージです。)

それは弊社になんのメリットがあるの?

と面接官に言われて黙り込んでしまいました。(いや、自分の趣味に会社のメリットなんかないだろと思いましたが)

なぜ鑑賞するのに国旗が良いかというと国旗ってアートだと思うからです。
詳細は私の執筆した参考記事を挙げたので気になる方はご覧ください。

国旗鑑賞の課題

私は国旗鑑賞に2つの課題を感じていました。

①私のベスト鑑賞法は国旗カードを広げて鑑賞をする方法ですが、出先で広げることは難しいです。
いちいちスマホで国旗一覧のWebサイトを開いて、スクロールをして希望の国旗を見つけるのも面倒です。

⇒気軽に国旗を鑑賞したい!!

②国旗カードを眺めていても知識の広がりはないです。
いちいち「○○(国名) 雑学」と検索して調べるの面倒です。

⇒気軽に国旗に関する雑学を知りたい!!

また、私は雑談が苦手なので、国旗に関する雑学を知ることができれば話のネタになり、雑談の苦手意識を軽減できるのではないかと考えました。

国旗API

そんなとき国旗APIを見つけました。

APIといってもサイトのURLに寸法と国コードを加えるだけで国旗画像が取得できるという単純なものです。

これをプロダクトに組み込めばデジタルの力を使って気軽に国旗を鑑賞することができるのではないかと考えました。

CDN経由とは?ChatGPTに聞いてみた。

具体的な例
例えば、https://www.sekainokokki.jp/the-united-states/download/ が特定の国旗に関する情報を提供するAPIだとします。最初のユーザーがアメリカの国旗情報をリクエストした場合、その情報はCDNのキャッシュに保存されます。

次のユーザー:次に別のユーザーがアメリカの国旗情報をリクエストすると、APIサーバーに直接アクセスするのではなく、CDNのキャッシュからその情報をすぐに取得できます。その結果、全体的なレスポンスタイムが短縮され、ユーザーエクスペリエンスが向上します。
要するに、CDNはAPIリクエストを高速化し、サーバー負荷を分散し、セキュリティを強化する役割を果たしています。そのため、https://www.sekainokokki.jp/the-united-states/download/ のようなサイトも速く、安定して情報を提供できるのです。

使いなじみのあるLINEに組み込む

国名を送ると、国旗の画像国旗の雑学を返してくれるLINE Botを開発すれば、上記の2つの課題を解決できるのではないかと考えました。

実現に向けて必要なこと

以下の2点が課題でした。

  1. 国名を国コードに変換
  2. 国旗の雑学を取得

まず1に関しては、それぞれの国名と国コードが対応したJSONファイルが用意されていたため、それを表形式に変換しました。

2に関しては、開発当時(2024年6月)、超高性能化で話題沸騰だったGPT-4oを利用すればハルシネーションが軽減された正確な回答を取得できるのではないかと考えました。

iPaaSサービス makeを利用する

makeを使って開発を進めました。モジュールといわれるブロックを以下のように組み合わせることで求めていたLINE Botを開発することができました!

GPT-4oから国旗雑学を得る際のプロンプト
プロンプト
##命令
あなたは国旗博士です。
{{1.events[].message.text}}
の国旗についての雑学を150文字以内で語ってください。
誤った情報が含まれていた場合、罰金100万ドル

##条件
・小学生でもわかりやすいよう説明して
・博士っぽく語尾は「じゃ」または「じゃよ」または「じゃな」にして
・絵文字を多用して
・一行ごとに改行して

私が確認した限り、致命的なハルシネーションは確認されませんでした。
GTP-4oが高性能な点、国旗の雑学や由来は不変的なものである点から、生成AI×国旗は親和性の高い組み合わせであると感じました。

応用①:リッチメニューの実装

ここからは応用編です。
リッチメニューのボタンを押せばランダムな国の国旗とその国旗の雑学を返してくれる機能を追加実装しました。

簡単に説明すると以下のような仕組みを追加しました。

  • 国名、国コード対応表の行数の範囲で乱数を生成
  • 生成した乱数の行の国名と国コードを使用して国旗画像と国旗雑学を出力する段を追加

応用②:国旗を画像分析して国名を特定

以下の記事をみて、国旗にも応用できるのではないかと考えました。
実際、モジュールの組み合わせはほぼそのまま踏襲して追加実装することができました。おきなか様ありがとうございます。

Image Analyzerのプロンプト(国旗の画像認識)
プロンプト
##命令
あなたは国旗博士です。
写っている画像がどこ国の国旗か判断してください。
誤った情報が含まれていた場合、罰金100万ドル

##条件
・国旗ではない場合はFを出力して
・シンプルに国名だけを出力して

##出力例
アメリカ
GPT-4oのプロンプト(国旗雑学の取得)
プロンプト
##命令
あなたは国旗博士です。
{{89.result}}の国旗についての雑学を150文字以内で語ってください。
誤った情報が含まれていた場合、罰金100万ドル

##条件
・小学生でもわかりやすいよう説明して
・博士っぽく語尾は「じゃ」または「じゃよ」または「じゃな」にして
・絵文字を多用して
・一行ごとに改行して

オーストラリアとニュージーランドの違いも問題なく区別することができました!

実は2016年にニュージーランドの国旗が変わる可能性がありました。

2015年7月に現行ニュージーランドの国旗をニューヨーク市民に見せ国名を答えてもらうという企画を地元のテレビ番組が放送し、市民の大半がオーストラリア、もしくはわからないと答えたことがきっかけとなり、国旗変更に対する議論が深まった[2]。

国旗の識別は国の尊厳にかかわる大きな社会問題ということですね。

おまけ

こんな小さいなステッカーでも問題なく識別することができます。
生成AIすごいですね。

最終的なシナリオ

最後にお願い

開発から3か月ほど経ちましたが、国旗を気軽に鑑賞できるという点では今でも重宝しています。開発して本当に良かったと感じています。

ただ、雑談苦手克服も兼ねて作ったプロダクトでしたが、これだけでは不十分でした。
そこで本気で雑談苦手克服を目指して、クラウドファンディングを実施することにしました!

9/12(木)~9/26(木)の2週間短期決戦です!
ぜひ一度ページに目を通していただき、応援や共感をしてくださる方はお気に入りをお願いいたします。

お気に入りにしておくことでクラウドファンディング開始時に通知を受け取ることができます。
支援忘れがないよう、ぜひお願いいたします!

参考記事

100スキ以上もらった記事なのでおすすめです!


他にもあります!

LT登壇しました!

LINE DCさん主催のLT大会に登壇した際の動画です。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?