GitHubにあるオープンソースコードを把握するために、生成AIへ質問して試行してみました。ソースコードを把握するための生成AIへの質問で、良かったものをまとめます。
まず始めにする質問
いずれの場合も、まず始めに下記の質問をしてから、順次追加の質問をしていくのが無難で良かったので、まず始めに下記の質問をします。(まず始めに何の条件も指定せずにChatGPTに好きなように答えて貰った方が、かえって最も良い回答になることが多いような印象がありました)
(※始めにコード部分をコピー&貼り付け)
上記のコードの要旨は? + 何をしているか? 説明下さい。
「※始めにコード部分をコピー&貼り付け」部分は、まず始めにソースコード全体のうち開始部分のコード(main関数の内容や、エントリポイントのコード等)を選んで、コピー&貼り付けします。
次によくする質問
上記の質問後、得られた回答内容で、分からない部分・興味ある部分を追加で質問していきます。聞いて良かった質問を下記にまとめると:
↓
「●」は何?
(※上記の質問後、分からないライブラリ名・関数名等は、手始めにこれで質問しておけば良い)
これを利用するためのサンプルコードを下さい。(入出力データ例、型情報を記載)
↓
「●」関数を呼び出すために必要な、主要なコード部分を説明下さい。(コードを抜き出して、主要な処理の流れをまとめて)
↓
変数「●」を使用している主要なコードを抜き出して説明下さい。
変数「●」には、どんな形式のデータが入るのか? (具体値の例を示して)
プロパティ「●」の情報を取得するまでに必要な、主要なコード部分を説明下さい。(コードを抜き出して、主要な処理の流れをまとめて)
↓
コードを理解するには、次に何を見れば良いか?
上記の追加質問等でおおむねこの範囲の内容が把握できたら、終わりに「コードを理解するには、次に何を見れば良いか?」と生成AIに聞くと、次に見るとよい部分(関数名やライブラリ名等)を、最も良い順で教えてくれるので、終わりにこの質問をして次へどんどん読み進めていきます。
main関数の内容・エントリポイントのコードから始めて→主要な呼び出し関数の内容→(更に下階層の内容)...へと繰り返し、コード部分(1関数全体等)を順にコピー&貼り付けして、繰り返し質問していきます。(あまり長いコードを貼り付けて質問するとChatGPTではエラーとなる為)
次の新しいコードに対して、再び、前節の「上記のコードの要旨は? + 何をしているか? 説明下さい」の質問から始めます。
その他の質問: データ構造・処理の流れについて
違う側面からの質問で、聞いて良かった質問を下記にまとめます。
※主に、処理の流れ(要旨)・データの流れ・クラス/関数/変数一覧・データ構造・サンプルコード、に関する質問で把握しようとしています。
主要なデータとその流れを説明下さい。
主要な変数を説明下さい。(位置順で、|変数名|説明|データ参照元|を表にまとめて)
このコードで主要な使用クラス・使用関数を説明下さい。(位置順で、番号付きで表にまとめて)
関数の呼び出し構造をまとめて下さい。
(※複数のクラス・関数を含むものを渡す 注意:長いコードになるとChatGPTでは受付できなくなる)
「●」のデータ構造を説明下さい。
(※使用されているデータセット等の保管構造の把握に 例:COCO Dataset)
このコードで取得できるデータ一覧を表にまとめて下さい。
それぞれのデータを利用するためのサンプルコードを下さい。
「●」から「●」情報を取得するまでの関連コードを抜き出して説明下さい。
(※例:「COCO Dataset」から「bbox」情報を取得するまでの~)
この方法でソースコードを見てみた例