ChatGPTのプログラミングへの活用法
タスクを分解する
粒度の大きいタスクほど期待と結果の差異が大きくなる
Youtubeを作ってと言ってもAIは理解出来ない
ブレークダウンしてChatGPTが理解可能な60行程度で完結する処理の合成でタスクを組み上げることを意識する
ただこれは最初からタスクへの理解度がないと難しくはある
タスクを明確化する
ゴールを明確化する
○個提案して
○○を生成して、書いて
この文章の結果は○○と○○のどっち?
条件を絞る
○○して○○を返す関数を書いて
スニペット出力は得意
分からない問題への対処
何が分からないのか分からないというレベルの問題への解像度の時
ググっても解決が難しい問題
面倒で退屈なタスクをやらせる
再帰処理など人間がやるとバグになりがちな処理
人間の認知限界的に難しい処理
単純に値を列挙していくだけのような処理
switch~caseでひたすら分岐していくような
テストを書く
unitレベルでのテストを書くのは得意
ドキュメントを書かせる
要約に近いのでこれも得意
ローコンテキストな課題への対処
LLMベースの合成プログラミングの恩恵を受ける言語と受けない言語が出てくるのでは?という感じがする
具体的には1枚のスクリプトで完結したりすることが多いPythonや込み入った継承のないGolangはChatGPTの確率機械が処理しやすいのでは
JavaやC++などのオブジェクト指向言語は学習元は多いものの継承により元のコンテキストを推測しづらい
コンポーネント指向のプログラミングがさらに加速しそう
ReactやVueのコンポーネント程度であればChatGPTが分量的にも最も得意とする仕事
コンポーネント単位でChatGPTの補助を受けてコンポーネント間の整合性を整えたりするのは人間という仕事が増えそう
コンポーネント志向フレームワーク
ユーザに質問を出してその結果次第で精度の高いプロンプトを出力する各技術スタックに特化したプロンプトジェネレータが作られそう(通常のコードジェネレータとどっちが早いのかというのはあるけど)
叩き台作り
最初の1歩を始める億劫さの軽減
こう考えてるけどどう思う?とか
まとめ
結局解決したい問題への解像度が高いほど必要な粒度での作業に分解しやすい
最初にタスクをブレイクダウンするような問題の分解力と言語化力も必要
ある意味問題解決とは?という本質的なところへ回帰している
問題の解決は問題の定義が8割で正しい定義さえ出来ればほぼ解決してしまっているという点では従来とあまり変わらないとも言える