PR

バイブコーディング Copilotで

以下、あくまでも推測で、その推測の上での雑感である。
AIにプログラムを任せるものではない。今のところ、強力なパートナー,伴走者であり、知識が豊富なアドバイザーと認識するのがいいのではと思う。24時間,365日、相手の都合を考慮すること無く呼び出せるのがいい。
プログラミング言語の文法 -バージョン間の違いも含め- をコード生成に内包していて、プロンプトで示した仕様の実装を論理的に組み上げたコードが提示される訳では無いようだ。バージョン間の非互換でのエラーが出ても、ある程度の確率で修正の正解が出るので、バージョン間の違いも含めた文法のデータを持っているようではあるが、最初から正しいコードが生成される訳ではない。あくまでもLLMの延長線上で、プログラミングコード向けにチューニングされたロジックで以て生成されたコードが提示されているのではないかと思っている。
なので、正しくないコードも、正常に動いても変なコードを生成することもある。コードのレビューは必須である。生成AIを使わない時にも、開発のルーチンにコードのレビューが入っている組織であれば問題ない。AIが生成したコードが理解出来ない場合も多々あると思われるので、AIが生成したコードをレビュアーに説明できるまで、理解するよう努める必要はある。そのコードの理解にもAIにプロンプトを発すると、より速くプログラミングスキルの向上に繋がる。
先ずCopilotを中心に使ってみている強い理由は無い。C# .NET MAUI で開発しているので、なんとなくCopilotがいいような気がしただけである。チャット画面でのやりとりも、心地良かったし。
おかしいと思うものが改善されなかったり、やりとりがループしたりした際には、ChatGPTやGeminiも併用している。

こんなことを考えつつ、生成AIをプログラミング工程で利用するための現時点での方法をメモしておく。
いくらかコード生成を重ねていると、プロンプトを作成するレベルが分かってきたり、生成するコードの規模感が分かったりしてくる。あまり複雑にならない規模感、コードが追える範囲での機能で、プロンプトを作成する。プロンプトは、Markdownで記載する。文書構造を明確に記述できるので、人が見ても分かりやすくなる。構造的に仕様書を記述するという感覚である。先ずは、コード生成のためのプロンプトのテンプレートをCopilotに提示してもらうのがいい。後は本数を重ねて、テンプレートを改善していけばいい。
デバッグ時のCopilotとのやりとりのチャットもセーブしておくと、次からのプロンプト作成に改善され、またデバッグのスピードも速くなると思われる。
作業を重ねると、コードに目を通すスピードも速くなり、よりコードが見やすくなるように変数,関数,メソッド等々の命名も改善する。命名については、他のプロジェクト、メンバーとの協業も考慮し、より一般的な名前が望ましく思われ、迷う際にはCopilotに提示を求めるといい。

ここまで書いて気付くこと。
結局通常のシステム開発の流れじゃん、ってかさ、よりきっちりとやらないと出来ないんじゃね、みたいな。

追記
プログラマー,コーダーより、よりきれいな見やすいコードが提示される。
プログラミング工数については確実かつ大幅に低減される。
前後の工程をより丁寧にする必要がある、いい加減な作業をしにくくなるという点については良いことだと認識している。結果としてシステム全体としての品質は向上するだろう。淘汰されるエンジニアもいるだろうし、個々のスキルは向上する方向に動くだろう。
と、希望的観測も含め、現時点での雑感を記しておく。今後の動向を楽しみにしつつ。

コメント