【AI駆動開発】ChatGPTで要件定義や設計も。アプリ開発でChatGPTをうまく使うテクニック!(第2回/全3回) #ChatGPT #プログラミング
![](https://www.creationline.com/tech-blog/cms_x3GWkuX/wp-content/uploads/2030/05/kamimura_chatGPT_02-1024x559.png)
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
試行結果のハイライト
前回の続きを試行していきます。
今回はAPIの実装です。
(前回の記事はこちら。)
実装を開始したが、既存のコードベースと合わない
今回の試行では、FastAPIでの基本的な処理やDBへの疏通、ReactからFastAPIの呼び出しなどの基本的な部分は、別のプロジェクトで作ったソースコードを流用して開始することにします。
早速コードを書いてもらいましょう。
分かりきっていることを説明してきました。
それでいて、最も重要なユーザー登録処理は「# ユーザー登録の処理を実装する」というコメントのみで、具体的な実装がありません。
さらに、DB周りの処理も提示されました。
これはダメです。流用した既存のソースコードと噛み合いません。
こちらの手持ちのソースコードを教えていないので、当たり前と言えば当たり前でした。
やり直しで、まずは既存のコードベースを教え込むことにします。
具体的な既存のコードも重要な部分を教えておきます。
ルーターやサービスクラスの実装内容、DBへのアクセス方法なども同様に教えておきます。
既存の大事な部分を教え込んだところで、再度コードを生成させてみます。
うまくいきました。
ディレクトリ構成やファイルの分割具合などが、既存のコードを踏襲したかたちになっています。
DBへのアクセス方法やサービスクラスのI/Fなども、完全に既存を踏襲した実装になっています。
踏襲して欲しいコードが既にある場合は、それを教えてからコードを書かせるのがよいようです。
この部分は想定以上にうまくいきました。
必要なことを一度の指示で説明しきるのがポイント
提示されたコードでエラーが発生していたので、助けてもらうことにしました。
パッケージ管理にはPoetryを使っています。Poetry add PyJWT
で大丈夫なはずですが、念のため確認します。
ダメです。話が伝わりませんでした。
最初に戻って質問し直します。
今度はうまくいきました。
会話が噛み合わなくなることを避けるために、必要なことを一度の指示で説明しきる方がよさそうです。
SQLも書いてくれるが、また「物忘れ」
プログラムから参照しているSQLの内容を教えてもらっていないので、ここで書いてもらうことにします。
だいたいOKですが、先ほど提示されたプログラムから渡しているパラメータと整合が取れていません。直してもらいましょう。
ダメです。SQLを直して欲しかったのに、プログラムを直そうとされてしまいました。しかも正しくありません。
自分で直した方が速いので、ここは諦めて自分で修正することにしました。
エラーの修正はドンドン進む
先ほどのような、パッケージが不足していて実行する前から検出できるエラーの他、実行時に発生するようなエラーの解決にも役立ってくれます。
どうやらこのエラーは、私が動作確認のためにDBへ投入したサンプルデータが不正だったようです。
実装は高速に進んでいく
他のAPIも、この調子で高速にできあがっていきます。
ログアウトの実装で2種類の方法を提示されたが、片方は不十分な内容だった
次はログアウトの実装です。
トークンを無効化する方法として、トークンの有効期限を短くする方法が提示されましたが、これではクライアント側に発行しているトークンは有効なままなのでログアウト処理としては不完全です。
このあたりは、経験の浅いエンジニアだと解決できずにハマってしまうかもしれません。
今回は、もう一つ提示されている、トークン自体を無効化するという方法で進めることにします。
有効/無効をDBで保持する必要がありそうなので、新たにテーブルを追加して対応することにします。
いつもの具合で設計をお願いし、DDLまで生成してもらいました。
プログラムの実装まで、特に問題なく完了しました。
他のAPIも同様に完成
I/F設計をスキップしたAPIは、設計と実装を同時に進めるというやり方で実施しました。
I/Fや実装は、提示されたものから調整が必要なものもありましたが、バックエンド側は全体として問題なく完成させることができました。
次回へ続く
第2回のAPI実装編はここで終了です。
次回はいよいよ最終回のフロント実装編です。
全体を通して得られた知見のまとめなども掲載予定です。
お楽しみに!
![New call-to-action](https://no-cache.hubspot.com/cta/default/6168413/bb73f57f-9d32-489a-b825-565d7aa0aee9.png)