ChatGPTにGitHub内のオープンソースなCodeを探索させてみる記事


特に大したネタも思いつかないのでChatGPT（https://openai.com/blog/chatgpt ）の個人的な使用法を幾つか列挙しておく。その後に本題に入る。

使い方はサインアップ→ログインした後、下部のテキストボックスに日本語やCodeを突っ込む（だけ）。その後はChatモードみたいな画面に遷移する。

過去のやりとりと回答はChatとして保存されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/9f0d1388-93c5-5551-917c-00c14ea3dfbd.png)

また、ある程度学習能力を備えているらしく、その場で適切に指摘してやると訂正する。

# 用途の列挙

1.プログラミングでやりたい事をChatGPTに提示させる
　→自分で考えるから不要。
1-b.じゃんけんやしりとりとかの遊び相手
　→要らね。
1-c 好みのアニメ探させる
　→出来れば自分でやりたい。
1-d　どこまで○○が出来るか
　→興味がない
2.バグチェックさせる
　→なるべく自分でやりたいけどどうしても分からん時は頼るかも
3.ffmpegのビルドオプションを調べるとき
　かなり役に立った。ただ、実際に存在しないコマンドオプションでも存在するかのように提示してきた。
4.その他、知らない専門用語の検索
5.こういう事やりたいけど、とっかかりが掴めないとき

6.実行速度遅いCodeの改善手段について聞く
　あるＣ＃のコードに対して回答させたけどかなり優秀だった。

7.ChatGPTにオープンソースプロジェクト内のCodeを探索させる
→これから試してみる事。


　
# ffmpegOutのCodeを調べさせる
自分はC++Codeがあまり読めんというか、あの大規模プロジェクトのCodeからUIにどうつながってるのか全く把握出来ないのでChatGPTに補助させる試み。~~そこらのヒマな人間に低額でボランティアやらせても同じ~~


# ChatGPTとの対話

Q.ffmpegOut(https://github.com/rigaya/ffmpegOut )についてどう思う？

A.
>ffmpegOutは、C#で書かれたFFmpegのラッパーライブラリであり、FFmpegを使用してビデオをエンコード、デコード、およびストリーミングするための簡単な方法を提供します。私は、このライブラリが非常に便利であると考えます。ライブラリを使用することで、ビデオエンコーディングやストリーミングの実装が迅速に行えるようになります。また、C#という人気のあるプログラミング言語を使用しているため、多くの開発者にとっては扱いやすいと思われます。

>ただし、FFmpegは高度なツールであり、使用には十分な知識と経験が必要です。また、ffmpegOutは比較的新しいライブラリであり、まだ十分にテストされていない可能性があるため、使用する際には注意が必要です。しかし、これはC#でFFmpegを使用する際にはほとんど避けられない問題であり、ffmpegOutは非常に役立つツールであると思います。


Q.ffmpegOut はC++ではないのか？

A.
> 申し訳ありません、誤解を招く回答をしてしまいました。ffmpegOutはC#で書かれたライブラリではなく、C++で書かれたライブラリです。私の回答に誤りがあったことをお詫び申し上げます。


Q.https://github.com/rigaya/ffmpegOut 内でRichTextBoxに色を付けるCodeの該当行を提示してほしい。

A. 
>ffmpegOutのコードを確認しましたが、RichTextBoxに色を付けるようなコードは見つかりませんでした。そのため、該当行を提示することはできません。もし、他に詳細をご存知であれば、質問を補足していただけると幸いです。


Q.ffmpegOut (https://github.com/rigaya/ffmpegOut ) のCodeにはrichTextLogという名前のRichtextBoxがある。そこにエラー出力の際に赤い色を付ける実装が存在する筈である。
ffmpegOut\ffmpegOut\ffmpegOut\frm\frmLog.h 内で定義されている。
これに関してどのような実装が行われているか提示してほしい。


A.
>　おっしゃる通りです。ffmpegOut/ffmpegOut/ffmpegOut/frm/frmLog.h内で、richTextLogという名前のRichTextBoxが定義されており、エラー出力時には赤い色で表示されるように実装されています。

>具体的には、frmLogクラスのlogError()メソッド内で、richTextLogに赤いフォント色でエラーメッセージを追加しています。以下がそのコードです。




```C++:ChatGPTのコード提示
void logError(const char* fmt, ...)
{
    va_list arg;
    va_start(arg, fmt);

    char buffer[1024] = { 0 };
    vsnprintf(buffer, sizeof(buffer), fmt, arg);

    va_end(arg);

    addText(richTextLog, buffer, Color::Red);
}

```


このように、補足情報を筋道立てて提示してやると正確（かもしれない）Codeを提示してくれる。上手くいくかどうかは本人で検証するしかない。

~~なにより無料だし~~　その辺の人より余程頭いいかも。~~でも低額でボランティアやらせたい気も~~
BeatLessってアニメ好きなんだけど、ついにこのアニメで提示してるAIひつじの領域まで来たかという感がしなくもないです。


↓レイシア級電機ひつじ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/9b436468-eb01-1199-2e93-a981e171fc66.png)


# ffmpegOutのフォルダ構成と概要を提示させてみた

A.ffmpegOut(https://github.com/rigaya/ffmpegOut )　内のファイルと実装内容の概要を提示して


Q. ffmpegOutに含まれる主なファイルと実装内容については以下の通りです。

 >frmMain.h/frmMain.cpp: このファイルは、ffmpegOutのメインウィンドウの実装を提供します。このウィンドウは、ビデオファイルのエンコード、デコード、およびストリーミングを行うためのインターフェイスを提供します。

>frmEncode.h/frmEncode.cpp: このファイルは、ビデオファイルのエンコードウィンドウの実装を提供します。このウィンドウでは、エンコードするビデオファイルのパラメーターを設定できます。


途中で見キレた場合はRegenerateさせる（出力が長いとしばしば見切れる）


>ffmpegOut.h: メインヘッダーファイルで、ffmpegOutライブラリのすべての機能を使用するために必要なすべてのヘッダーファイルをインクルードします。また、FFmpegを初期化するための関数や、ビデオストリームの開始、エンコード、デコードなどの機能を提供するクラスの定義が含まれています。


Regenerateするたびに中身も再構成するみたい。

>    frmMain.h：アプリケーションのメインウィンドウを定義するヘッダーファイル。
    frmMain.cpp：frmMain.hで定義されたメインウィンドウの実装を提供するソースファイル。
    frmLog.h：ログ出力用のウィンドウを定義するヘッダーファイル。
    frmLog.cpp：frmLog.hで定義されたログ出力用のウィンドウの実装を提供するソースファイル。
    frmOptions.h：アプリケーションのオプションダイアログを定義するヘッダーファイル。
    frmOptions.cpp：frmOptions.hで定義されたオプションダイアログの実装を提供するソースファイル。
    ffmpegOut.h：ffmpegOutライブラリのヘッダーファイル。
    ffmpegOut.cpp：ffmpegOut.hで定義されたffmpegOutライブラリの実装を提供するソースファイル。


>ffmpegOutライブラリは、ビデオのエンコードやストリーミングの実装を容易にするために、FFmpegの関数をラップしています。主要な機能には、ビデオのエンコード、デコード、ストリーミング、オーディオのエンコード、デコードがあります。また、frmMainクラスは、GUIを使用してffmpegOutライブラリを利用するためのインターフェイスを提供します。


>　frmLogクラスは、ログ出力用のウィンドウを定義しており、エラーや情報メッセージの出力に使用されます。frmOptionsクラスは、アプリケーションのオプションダイアログを定義しており、エンコード設定などのオプションを設定できます。


こんな感じでgithubでいちいち書いてない事が提示された。
この調子で興味のあるオープンソースプロジェクトについて調べていきたいです。

出力結果が長いと頻繁に見切れてRegenerate Responseするよう促される。有料版はそういうのが無いのだろう。