AIによるコード生成の話。

今日は、真面目です。

さて、サンプルコードならば会話系AIで生成ができることが確認できましたが、「このコードで本当にOKか」ということで今日は記載していきたいと思います。

題材は、SCTPサーバプログラムです。

まず質問にて、サンプルコードを作成してもらいました。以下が生成さたサンプルコードです。

accept(クライアント接続)後、スレッド化され、受信処理ができるサンプルコードが生成されました。

これは、これでコンパイルも通り、実行できます。

ただ、これだと「SCTP」の持ち味がでていないので、会話を続けていきます。

まず、recv関数ではなく、sctp_recvmsg関数ではないかと指摘。

で、実際に変更したサンプルコードを生成してもらいました。

recvがsctp_recvmsgに変更されました。

では、SCPTを利用するためのイベントオプションを指摘します。

サンプルコードは、以下の通り。

受信処理前にイベント取得用のオプションが追加されました。

さて、ここでコードではなくSCTPの特徴の1つを聞いてみました。

うむ。回答が返ってきました。「複数のIPを使用しての通信が可能であること」が回答されてきました。

今までのサンプルコードでその機能が有効になっているかを確認してみると、ネガティブである回答をされ、sctp_bindを利用するように回答されていますが、説明で出てきているIPアドレスが今までどこにもでていないので、確認。

ですよね。

struct sockaddr_in 内で設定できるIPアドレスは1つなのでまず、INADDR_ANY(0.0.0.0)を指定すれば、OSで割り振られIPを使用して通信が利用できることが回答されました。

受信時に接続先とは別のIPアドレスで返ってきて確認することができることを回答してもらいました。

今までの会話を踏まえ、サンプルコード生成してもらいました。

スレッドやsctp_recvmsgが消えました。これでは、今までの会話内容が反映されていないことがわかります。

そこで、この内容を指摘。

文章があれですが、サンプルコードを生成してくれました。

たりない。

やっぱりたりない

う~ん、足りない。

足りないどころか反映されていない。

っと7回ほど、レビュー指摘してきましたが、サンプルコードを生成するだけでもユーザがに「必要な知識」を持っていることが必須となります。

今回のことからもわかります通り、コードをAIが作成するには、まだ時期尚早であることがわかり、なんでもかんでも「今の状態で」依存することは危険であることが分かったかと思います。

今は「黎明期」だと思いますので、今後の発展に期待をしつつ、自分も置いてきぼりにならないよう努力をしていきたいと思います。

ちなみに、BSDでは、sctp_bindではなく、sctp_bindxとなります。