Claude3でマイクロサービスを2時間で作る

# 要約
- 「ガチでやる気パーソン」かどうかを自動判定するマイクロサービスを作った

https://gyp-page-2fe9d172c6e7.herokuapp.com/

- Claude3でぱっとマイクロサービスを作れないかどうかを検証し、実際に2時間で開発・公開をすることができた
- いわゆる就活・転職におけるエントリーシートの足切りはLLMにやらせることが可能なことをなんとなく確認した


# 背景と作った動機
- こちらの「ガチでやる気パーソン」をSNSでみて、GYPは本当に大事だなと強く共感した
- GYPである人はどういう人なのかを判定する仕組みがあると面白いなと思った
- やってみたことや思考をあえて整理せず、そのまま書いてみることは役に立つ人もいるのではないかと思って記事化した

https://scrapbox.io/nishio/%E3%82%AC%E3%83%81%E3%81%A7%E3%82%84%E3%82%8B%E6%B0%97%E3%83%91%E3%83%BC%E3%82%BD%E3%83%B3

# 技術面背景
- （恥ずかしながら）バックエンド、フロントエンドの実装を全て自分でやって公開したことがなかったので経験してみたかった
- Pythonについては15年程度の経験があり、習熟している。AI開発、データ分析、科学的計算などに強み
- HTML, CSS, Javascriptについては読めるけど、あまり書けないレベル

# やってみた
まずは「ガチでやる気パーソン」の定義を定め、なんらかの質問でそれを測定できるといいなと思った。
## 「ガチでやる気パーソン」の定義を決めてもらった（1分）
![Screenshot 2024-04-08 at 14.06.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/248b7c55-ee7a-7dc7-9391-5351fdf20775.png)
![Screenshot 2024-04-08 at 14.06.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/c0caebfb-d9af-82cf-35a2-a18d54a907cd.png)

## 次に、どういう質問をすればGYPと判断できるか考えてもらった（1分）
![Screenshot 2024-04-08 at 14.06.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/0cb0724e-bafa-c504-818c-b2f746cb17b7.png)

## はい・いいえ的な形で回答する質問を考えてもらった（5分）
下記のような回答を得たが、これに回答してもらってもあんまりおもしろくならない気がした
![Screenshot 2024-04-08 at 14.07.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/f9a59c4c-8a3f-4c78-d6ec-38a85de41e23.png)

じゃあどうしたら面白くなるんだろう
![Screenshot 2024-04-08 at 14.08.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/0c0b4d78-ff42-96ca-c749-639cfdd71ec2.png)

じゃあそれを反映してもらおう。自由記述になるけどLLMに判定してもらったらええな。
下記では１０個だしてもらったが、実装してみるとユーザーが１０個も書くのは面倒だろうなと思ったので後に７個にしてもらっている
![Screenshot 2024-04-08 at 14.09.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/6f515a9c-c7bc-8aa0-e779-4ded20585e6b.png)

## 回答のサンプルを作って検証（5分）
いい感じのサンプルが作れた。
![Screenshot 2024-04-08 at 14.10.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/3c2348eb-6d3b-a799-ac33-74b652dcc264.png)
次に、この質問と回答を貼って、スコアをだしてもらった。きちんとGYP度高い回答には高い数字がでている。スコアだけだとサービスにしたとき面白くなさそうだったので、ちょっとしたコメントをつけてもらうようにした
![Screenshot 2024-04-08 at 14.11.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/b904802e-fb83-859b-6f50-09172610a93f.png)

## サイトづくりの方針決め（8分）
最初に要件を簡単に伝えた。だけど、自分の質問が悪くてあんまり良い回答が得られなかった。
![Screenshot 2024-04-08 at 14.13.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/93e38b13-fd85-9c28-27f5-2f1bfb981274.png)

PythonやJSを使うんだ、ということをきちんと伝えた。APIはAnthropicの公式ドキュメントを利用した。要件は下記のようにきちんと取れた。
![Screenshot 2024-04-08 at 14.14.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/1483b8f2-627c-e55f-2fc6-e6d380fcb0a7.png)
次に、実際の開発手順を考えてもらった
![Screenshot 2024-04-08 at 14.15.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/b116a5d9-f0f6-d253-a90c-f879f89f61e2.png)

## つくる！（1時間)
あとはステップごとにお願いするだけ。微妙にAPIに間違いがあるので、Pythonを実行しながらデバッグを進める。

![Screenshot 2024-04-08 at 14.16.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/00daf8a3-94d5-02c7-ff7d-958bc830cad1.png)
とりあえず作ることが目的のマイクロサービスなので、見た目はこだわらないことにする。

![Screenshot 2024-04-08 at 14.19.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/9c75810e-924b-106b-2ccc-935f0656883c.png)

こんな感じで質問もどかっと載せちゃいましょう
![Screenshot 2024-04-08 at 14.21.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/499f25d8-e15c-eb37-b557-a8e7d03e0d3d.png)

バックエンドとフロントエンドの連携も脳死でできる
![Screenshot 2024-04-08 at 14.21.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/3586a352-1b65-4851-f57e-2ac401dca3ff.png)

統合テストとエラー処理を追加します
![Screenshot 2024-04-08 at 14.22.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/e191814b-dec3-4c0c-28b7-dcea65d6d5c5.png)

実際に使ってみると、ちょっとした待ち時間が気になったのでUIの修正もお願いします
![Screenshot 2024-04-08 at 14.22.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/f0ed827e-2c88-9b5f-4ebb-f18a4f37b4cc.png)

Herokuでデプロイします。Herokuは昔使ったことがありましたが、もう覚えていないので色々おしえてもらいます
![Screenshot 2024-04-08 at 14.23.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/a9befdaa-4b26-ed1c-f5bc-e020e52e3934.png)

できた！
https://gyp-page-2fe9d172c6e7.herokuapp.com/
![Screenshot 2024-04-08 at 14.24.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765402/d63d3cd0-7e9e-73ca-c27e-6a6b86ac2e8c.png)

# 感想・今後の展望
- 2時間と短い時間だが作っていて楽しかった。工作とかやっている感覚
- 2時間とかなので、子どもと一緒に何かを作ったり、講習化もできるなと思った
- 今後もカジュアルにマイクロサービスを作りたい
- ビジネス的に成功するとかは別にして、自分や周りの人が喜ぶサービスを作りたい。皆さんがこれ作ると嬉しいですよ、的なことを知りたいのでXでDMしてください

https://x.com/nimmr2/status/1777206927782760750