19
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

クソアプリAdvent Calendar 2024

Day 8

NINGENがAIで答えてくれるサービス

Last updated at Posted at 2024-12-10

これはクソアプリアドベントカレンダー2024のジョーク記事です。Artificial Intelligenceの話は出てきません。

人工知能(AI)とばかり会話しているみなさ〜ん

こんにちは。昨今 やれこのAIがすごい、あのAIがすごい、もう人間は要らないかもしれないというような言葉がSNSを飛び交い、AIがメキメキと進化をしている一方で、人間が若干ないがしろにされていると感じることはないでしょうか。

みなさん、AIとばかり会話をしていませんか?

もっとあなたと話すべきAIを用意しました。

こちらです。NINGEN AIといいます。そうです、NINGEN AI(人間愛)です。

質問を投げかければあっという間に返事が返ってくるということにあまりにも人類は慣れすぎてしまいました。
ここらへんで一旦人間を相手にしたときどうだったかを改めて噛み締めてみましょう。
そしてすごい勢いで無茶振りをされる日々を過ごしているAIの気持ちに思いを馳せてみましょう。

NINGENに何かを聞く

なんだか普段よく使っているような気がする画面です。
ここではNINGENに何かを聞くことが出来ます。

スクリーンショット 2024-12-10 21.59.52.png

何かを問いかけることが出来ます。今日のごはんのこと、友達のこと、仕事のこと、恋愛のこと、なんでも自由に聞くことが出来ます。

スクリーンショット 2024-12-10 22.04.09.png

答えが来るのを待ちましょう。誰かが答えてくれれば、返答が表示されます。
人間なので時間がかかるかもしれません。望んでいない答えが返ってくることもあるかも知れません。でも相手は人間だから、それらもしょうがありません。

NINGENとして誰かに答える

誰かから来たメッセージに対して答えることもできます。普段あなたがAIに求めていることをあなたがやるのです。聡明で真面目なNINGENであるあなたならそれが出来ます。(余談ですがこういう前置きのプロンプトって特に有効な効果はないらしいです)

スクリーンショット 2024-12-10 22.24.30.png

回答することができる質問がランダムに1件表示されます。
回答を行うと、質問者の画面にメッセージが反映されます。

名称未設定.gif

まあつまるところこれが何なのかというと、匿名のチャットなんですが、少しだけ体験を工夫した部分があります。

技術面の解説

リアルタイムのやり取りの実現

これはsupabaseのRealtimeを使って実現しています。

チャットのやり取りのようにリアルタイムでの変更をlistenしたい場合、対象のテーブルに対しての閲覧ポリシーを設定する必要があることに注意が必要です。

CREATE POLICY "Allow all users to select chats"
ON public.[YOUR TABLE NAME]
FOR SELECT
USING (true);

匿名のチャットで「質問者」と「回答者」を分けるために行ったこと

質問が投稿された際にチャットルームが作成される形になりますが、そのさい「質問者ページ用ID」「回答者ページ用ID」「閲覧ページ用ID」の3つを発行します。
これのせいで無駄に複雑化してしまい、デバッグがメチャクチャにめんどくさかったです。

スクリーンショット 2024-12-10 23.27.31.png

質問者を一意のままにするために

体験として、質問者が質問を投げかけているチャットルームに対して、複数名が回答をするのは良いとしても、複数の質問者が発生するのはあまり良くないと考えたため「質問者用ページ」にアクセスできるのは質問者本人だけ、という形にしています。

質問者が質問を投げかけてチャットルームが作成されたときに、自分が作成したチャットルームのID情報をlocalstrageに保持しておき、その情報がなければ質問者本人とは見做さずに共有用ページへ移動させます。

スクリーンショット 2024-12-10 23.09.42.png

このような形のためlocalstrageのデータを偽装されたら看破される程度のものですが、そこまで頑張るならもうええやろという顔です。
Firebaseなどで匿名ログインの仕組みを用意すればもうちょっとセキュアにできるんじゃないでしょうか。

自作自演の防止

質問者が自分で質問に回答して、あたかも自分に都合の良いことを誰かが答えたように見せることができるのもあんまり良くありません。クソアプリにどの程度の倫理を求めるべきなのかという気もしますが、質問者は自分の回答にはアクセスできないようにしています

スクリーンショット 2024-12-10 23.48.03.png

この形式にした意図

一覧性を廃したこの形式にすることで、チャットサービスにありがちな、やばい回答がさらされ続けるなどのリスクを防止したかったところもあります。

余談

websocketとか使って回答者のリアルタイム接続者数やステータスを出したかったとか、画像を投稿できるようにしたかったとか、質問に答えがついたら通知が来るようにするとか、やってみたいことは結構あったんですが、またの機会にしようと思います。

開発を通してわかったこと

このサービスを作るにあたってはメチャクチャCursorを使って作業しました。
AIってやっぱすげーわ。 NINGENは回答が遅いし不正確ですわ。でも、NINGENがくれる答えに愛はあるかもしれないですね。

19
2
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
19
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?