ChatGPT × ソクラテス式問答法 でDDDを学び直す
皆様、こんにちは!
Septeni Japan 株式会社でエンジニアをしています、西垣と申します。
ここ数年で、エンジニア業務の中でGitHub CopilotやChatGPTといった生成系AIを活用し、効率化を図ることが当たり前のようになってきました。
コードの理解やサポートに大いに役に立ってくれていることは、この記事を読まれている皆様も同意見かと思います。
通常、生成系AIとの会話は利用者が問いを投げかけ、AIが答えを返すという形式が一般的ですが、一部のAIでは立場を逆転させることができることはご存知でしょうか?
今回は、ChatGPTをベースに、ソクラテス式問答法
による対話が自己学習に大いに役に立つこと、またその使い方を本投稿にて共有させていただければと思います。
そもそも、ソクラテス式問答法とは?
早速、通常の尋ね方でChatGPTに聞いてみました。
「ソクラテス式問答法」(Socratic Method)は、古代ギリシャの哲学者ソクラテスが用いた教育・探求の手法です。
この方法は、対話を通じて知識や真理を追求し、相手の考えを深めることを目的としています。
ソクラテスは「無知の知」、つまり自分が何も知らないことを自覚する姿勢を重視し、相手にも同じ気づきを促すことを目指しました。
### 特徴と手法
1. 質問の連鎖
ソクラテスは一連の質問を通じて、相手の主張や考えを深く掘り下げます。
これにより、隠れた前提や矛盾を明らかにし、真理に近づく道を探ります。
2. 批判的思考の促進
問答を通じて、相手に自分の考えを再評価させることが目的です。
具体的には、相手の考えが論理的に一貫しているかどうかを問いただします。
3. 知識の共創
ソクラテスは自ら答えを提示するのではなく、相手が自ら答えを見つけられるように誘導します。
これにより、相手が「考える力」を身につけることを目指します。
4. 具体例の使用
抽象的な概念を具体的な事例に基づいて問い直すことで、相手により明確な理解を促します。
### 例: 「正義とは何か?」
ソクラテス: 「あなたは正義が何であるかを知っていると言いましたね。それを説明していただけますか?」
相手: 「正義とは、人にそれぞれの分を与えることです。」
ソクラテス: 「それでは、嘘をついて人を傷つけることがその人の分だと言える場合、それは正義でしょうか?」
相手: 「それは正義ではないかもしれません…。」
このように、相手の定義や信念を質問によって掘り下げ、再考を促します。
### 現代での応用
ソクラテス式問答法は、教育、カウンセリング、法律、ビジネスなど、多くの分野で活用されています。
特に、批判的思考や問題解決能力を養うための手法として評価されています。
この方法は、単に答えを得るだけでなく、問いを通じて深い理解と自己反省を促す点が特徴的です。
とのことで、「ソクラテス式問答法」の本質的な意味を丁寧に説明してもらいました。
ちょっと長すぎるので、ChatGPTでの利用に焦点を置きつつ内容を下記にまとめてみます。
[ AI側の行動 ]
- 質問を投げかけ、利用者に回答を求めるとともに論理的に説明する環境を提供する
- あるテーマに対して複雑な問題を小さな部分に分解し、体系的な理解を利用者に促そうとする
[ 利用者側の行動 ]
- AIの質問に対して、自分の考えを深く掘り下げて論理的に回答することが求められる
- 会話に伴って、自身の考えの良し悪しが明確化され、理解度を再評価することができる
元々は哲学といった定義することが難しい概念を理解するうえで使用されてきた手法ですが、意外にも自己学習の面で技術領域を体系的に理解することに非常に効果があると思っています!
ソクラテス式問答法で対話してみる
使い方はとてもシンプルで、ChatGPTに"ソクラテス式問答法で発言してほしい"と伝えるだけです。
初手から質問を返し、こちらの回答の細部に対して再度質問を投げかけてきています。
以降、絶え間ない質問攻めになることはたった数回の会話で理解していただけるかと思います。
この状態で対話を継続することも可能ですが、目的である自己学習や技術領域の体系的な理解からは下記の理由からずれてしまっているため、開始する前にある種のチューニングを行う必要があります。
[ 課題 ]
- 質問の内容に概念的な要素が強く含まれており、問いかけの難度が高すぎる
- 2つ目の質問の聞き方が"どうお考えですか?"といった事実や知識を問う形式になっておらず、具体的な技術用語に結びつきにくい
[ 解決策 ]
- 利用者がどの程度そのトピックについて知識や経験を持っているかを明示する
- 開始時に分野の専門用語を提示し、それに基づいて質問を投げかけるよう明示しておく
- 抽象的な内容を避け、具体的な選択肢を選ぶ形式に変更するよう指示する
- 問いかけの形式を変えるよう指示する (How → Why, What) など
本題:ソクラテス式問答法でDDDの理解度を再認識する
それでは、先述したように抽象的な質問を避けつつ、知識の答え合わせができるような形式でChatGPT先生と対話してみます。
※ 記載方法はMarkdown形式で実施しています。
会話を開始するにあたり、質問の形式を下記のように調整しました。
- ソクラテス式問答法で会話すること
- テーマに即した具体的な内容で質問を作成すること
- 会話のテーマ(今回はドメイン駆動設計の基礎的な情報)
質問の数については指定していませんでしたので、2つの問いが作成されました。
両方答えることも可能ですが、生成される質問の幅を狭めておきたかったので前者を選択し、回答を入力してみます。
正解の判定をいただきました!
(AIが返答してるとはいえ、褒められるのは嬉しいものですね☺️)
無事に答えられたからといって、これで終わりではありません。
ここからソクラテス式問答法の真価が発揮され始めます!
次の問いは私が記述した「識別性」のワードが引用され、エンティティと値オブジェクトの違いと具体例にフォーカスする内容が生成されました。
早速、次の回答を入力して正誤判定を確認してみます。
2つ目の問いは要件を満たす内容を記載したものの、他の利点については不明瞭でしたのでヒントを求めるよう補足を追加してみました。
1つ目の回答は再度お褒めの言葉をいただくことができました!
2つ目は、正解の判定が出つつもヒントを求めたのですが、具体的なキーワードとともにimmutableであることの利点についての詳細な説明が返ってきました。
(より深い理解を促す問いを提示されることを期待しましたが、内容を確認するだけでも十分意義はあると感じたので、よしとしています😅)
ChatGPTの返答の末尾を見ると、問題の内容を調整する問いかけが出てきました。
ユーザーはエンティティと値オブジェクトについてさらに内容を深掘りするか、ドメイン駆動設計の別の知識を確認するかを選択でき、会話の合間でテーマや回答方法、難度を調整することが可能です。
このようにソクラテス式問答法を活用することで自分に合った学習の場が設けられることはご理解いただけたかと思います。
まとめ
簡単ではありますが、ChatGPTでソクラテス式問答法を活用した自己学習のテクニックを共有させていただきました。
対話を繰り返していると、知っているはずの知識から急に冷や汗が出るような質問が飛び出してくることがありますので、興味のある方はぜひ、AI側から質問攻めに遭う感覚を体験してみていただきたいです!
ソクラテス式問答法はGPT-4以降のバージョンで利用可能になっていますので、無料版でも利用可能です。
GitHub Copilotは対応していないのが残念ですが、今回の記事はここまでとさせていただきます。
最後までお読みいただき、ありがとうございました🙇
Discussion