記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
「一問一答アプリ × ChatGPT」
先日、ChatGPTを活用して一問一答アプリケーション「情報1 一問一答トレーニングGYM」を開発したことをお伝えしました。
▶︎こちらの記事で紹介しています。

私が開発したこのアプリは、ChatGPTの力を借りながら、実装していきました。
この記事では、一問一答アプリ × ChatGPTの開発の舞台裏や、実際の活用方法について詳しく解説します。
今回は
- 出題する問題を作成(問題データベース作成)
を実装するにあたって、どのように役立ったのか、その様子を紹介します!
ぜひこのシリーズの記事をチェックして、一問一答アプリの新たな魅力とChatGPTとの相乗効果を体感してください!

もともと、出題するクイズ(問題)のストックはデータベースとして作っていましたが、解答に際しての選択肢の質に頭を悩ませていました。
クイズとしての質を担保するためにも、全然関係のない語句が選択肢に並ぶのではなく、似た意味や関連語句を用意して、回答者を惑わせたい。
しかし、たとえば「プログラミング」という語句が解答の問題で「個人情報保護法」「ブレーンストーミング」「ピクトグラム」といった語句が他の選択肢として登場するような状況でした。

全然関係ない語句が並ぶ問題が多く、どうしようかと悩んでいました
同じ「情報1」の範囲とはいえ、「明らかに違うだろう」という選択肢ばかりだと、問題としての質が低くなり、解き応えがないものになってしまいます。
しかし、各問題に対して解答ではない選択肢を3つ挙げるのはなかなか骨の折れる作業です。
そこで、chatGPTに問題を作ってもらおうと企てたのです!


「SMTP」を解答とする4択クイズを作成してください。回答は下記Markdownに則って返してください。
◆Markdown
|問題文| 解答 | 選択肢1 | 選択肢2 | 選択肢3 | 選択肢4 | 選択肢1の解説 | 選択肢2の解説 | 選択肢3の解説 | 選択肢4の解説 | |——|——|——|——|——|——|——|——|——|——|
| td | td | td | td | td | td | td | td | td | td |

以下が「SMTP」を解答とする4択クイズです。
問題文 | 解答 | 選択肢1 | 選択肢2 | 選択肢3 | 選択肢4 | 選択肢1の解説 | 選択肢2の解説 | 選択肢3の解説 | 選択肢4の解説 |
---|---|---|---|---|---|---|---|---|---|
電子メールの送信に使われるプロトコルは? | SMTP | HTTP | FTP | SSH | SMTPはSimple Mail Transfer Protocolの略で、電子メールの送信に使われるプロトコルです。 |
見た感じは悪くありませんが、選択肢の解説が抜けてしまっています。
このように欲しい回答が意図通りに返ってこないケースがしばしば。
今回、chatGPTを用いてDBを作成しましたが、実はなかなか大変でした…!!!
上記のように不備のある回答や、思い通りに返してくれない回答が5回に1回くらいは発生し、プロンプトに頭を悩ませることになりました。
特に今回は、chatGPTから戻ってきた回答をcsvファイルでまとめるため、転記作業が必要となります。
そのため、欲しい回答の形式を的確・正確に指示しなければなりません。
試行錯誤を繰り返した結果、以下のプロンプトの場合だと転記しやすい回答を戻してもらうことができました。


「配列」を解答とする4択クイズを表形式で難易度を少し上げてもう一度作成してください。選択肢はすべて関連する単語にしてください。そのあと、それぞれの選択肢を20字程度で解説してください。

以下に「配列」を解答とする4択クイズを作成します。
問題文 | 選択肢1 | 選択肢2 | 選択肢3 | 選択肢4 |
---|---|---|---|---|
プログラミングで、複数のデータをまとめて扱うデータ構造は? | ランダム | 分岐 | 配列 | ループ |
- 選択肢1「ランダム」:プログラム上でデータをランダムに生成するための関数などがありますが、配列とは直接関係がありません。
- 選択肢2「分岐」:プログラムの制御構造の一つで、ある条件によって処理を分けることを指します。配列とは直接関係がありません。
- 選択肢3「配列」:プログラミングで、複数のデータをまとめて扱うためのデータ構造です。要素を添字で指定してアクセスすることができます。
- 選択肢4「ループ」:プログラムの制御構造の一つで、ある処理を繰り返すことを指します。配列とは直接関係がありません。
問題部分と解説部分が分かれることになりましたが、この形式で戻してもらえると比較的、転記もしやすい状態になりました!
そうして転記作業を繰り返し構築できたDBの一部がこちら。

どのようなクイズになっているか、ぜひぜひアプリケーションでお確かめください!
今回の開発作業で
- 出題する問題を作成(問題データベース作成)
を実現することができました。
他の要件も満たす実装をどんどんと進めていきます!
ChatGPTを利用すると開発がグンと楽になりますね!ChatGPTの可能性を体験してみてはいかがでしょうか?
最後まで読んでいただきありがとうございました。
この記事が少しでも参考になれば幸いです。
それではまたここで会いましょう!

ブログ村に参加中です。上のバナーをクリックいただくだけで当ブログにポイントが入ります。いつも応援クリックありがとうございます。
Twitter やってます。
新着記事のお知らせをしていますのでぜひフォローしてください!スポンサーリンク