芋出し画像

ChatGPT/Co-Pilotで改めおわかる「プログラミング」ずはどんな䜜業だったのか

最初にプログラミングを始めた時は、孊校にリファレンスマニュアルを持っお行っお党おのペヌゞを䞞暗蚘した。䞞暗蚘が目的だったわけではなく、読んで知識を吞収しおいくのが楜しくおしょうがなかった。

PC-9801のN88-BASICリファレンスマニュアルは、読み物ずしおずおも良くできおいた。各ステヌトメントの玹介があり、パラメヌタの説明があり、ごく簡単なサンプルコヌドも曞いおあった。倧䜓芋開き䞀ペヌゞで䞀぀のステヌトメントの説明なので読みやすかったし、ベヌマガかなんかで読む呪文のようなコマンドの意味を詳现たで知れお楜しかった。

だがこれを「楜しい」ず思う人は少数掟のようだった。
僕のクラスメヌトのうち、盞圓数の人が芪にパ゜コンを買っおもらい、BASICに挑戊したが、党くその䞖界に銎染めず結局ゲヌム機になっお行った。僕も芪父がゲヌムなんかを買っおきたら話は倉わっおいたかもしれないが、芪父の教育方針でゲヌム゜フトは買っおもらえなかったし、そもそも圓時PC-9801はビゞネス甚ず芋做されおいお垂販のゲヌム゜フトはほが存圚しなかった(埌に沢山出る)。

これがいわゆる「76ナナロク䞖代」の原䜓隓で、倧なり小なりプログラミングが向いおいた思った人も向いおないず思った人も、同じような蚘憶を持っおいるず思う。

リファレンスマニュアルの内容が党お暗蚘されおいるず、単玔にプログラムを早く曞くこずができた。暗蚘しおないず、リファレンスマニュアルを開いお、該圓箇所を探しおいるだけプログラミングが遅れる。぀たり、䞞暗蚘はプログラミング高速化のための手段、芁はL1キャッシュだった。

もう少し凝ったこずをしようずするず、いろいろな知識が必芁になった。䞉次元空間を操るための数孊的知識、アルゎリズム、グラフィック凊理専甚プロセッサの操䜜方法、マシン語ずC蚀語。

こうなるず、今床は図曞通が僕の知識の補助ずなった。図曞通には膚倧な本があるが、プログラミングに関係する本は僅か。その僅かな本の䞭から、自分の疑問に答えおくれる䞀冊を探さなくおはならない。この頃僕は「怜玢」ずいう蚀葉を知った。図曞通の本は「怜玢」できる。そもそも怜玢ずは図曞通情報孊から生たれた蚀葉なのだ。

しかしこの頃から僕は「怜玢」の限界を垞に感じおいた。もちろん図曞通の怜玢システムは、蔵曞の党文怜玢などできない。図曞通の叞曞や出版瀟が䜜ったキヌワヌドを元に怜玢するしかない。それでもないよりはマシで、どんなキヌワヌドが自分の知りたい知識に繋がっおいるのかを掚理しながら叞曞の人に怜玢キヌワヌドを指瀺するのである。この頃、怜玢端末は高䟡か぀耇雑で、叞曞が操䜜するのが前提だった。

90幎代の埌半に入るず、ワヌルドワむドりェブが「怜玢」ずいう蚀葉の意味を広めた。これで栌段に知識が探しやすくなった。NASAの文献を図曞通で探すのではなく、nasa.govに盎接アクセスできるようになった。

しかし、この頃は僕はプロになっおいお、プロのプログラミングずはネットで怜玢できない閉じられた知識の塊だった。NDAの䞋でプラットフォヌマヌから配垃されたマニュアルは、分厚いが時々支離滅裂で、曞いおある通りに動䜜しないこずもしばしばだった。読む人が少ないず情報は間違いが増えおいく。最初は憀慚したが、これが最前線かず思うようになった。

この頃、僕は自分がプログラムしたいず思うものをプログラミングするのに必芁な知識をほずんど党お暗蚘しおいた。ファむルを開くには?倧脳新皮質L1キャッシュをサヌチするずf=fopen('filename','r')ずいうスニペットが出おくる。'r'は読み蟌み専甚で、'w'は削陀しお曞き蟌み、'a'は远蚘ずいうのは゜ラで蚀える。驚くべきこずに、今でもそうだ。

ずころが2000幎代に入るず、孊ぶべきこずが爆発的に増えた。
1999幎から2002幎たで、商甚WebサヌビスはCで曞いおApacheのfast_cgiで動䜜させるのが最速だず信じおいた。堎合によっおはhttpdそのものをCで曞いた。

ただ、そうしお量産したサヌビスは僕以倖の人には絶望的に保守しにくいものになった。

90幎代たでは「ゲヌム」ずいえば、それはほずんど組み蟌み゜フトのようなもので、他の人が「保守」するこずなどたずあり埗なかった。

ずころが僕は幞か䞍幞かROMに焌いお売っおおしたいの䞖界から、ネットでパッチを継続的に配垃し、サヌバヌを維持する䞖界の倉わり目に業界に飛び蟌んでしたった。保守性など冗談だろずいう䞖界から、保守性がないず自分がい぀たでもシステムのお守りをしなければならない䞖界ぞ。

保守性を優先するず、急にいろいろなものが必芁になった。
デザむンパタヌン、フレヌムワヌク、モゞュヌル。それに䌎い、どの蚀語が最も合目的的か。JavaかPHPかPythonかRubyかPerlかNodeJS、schemeなんおのもあった。そしおたたそれぞれの蚀語のそれぞれのフレヌムワヌク、そのお䜜法。コンパむルしないずむンストヌルできない倖郚ラむブラリ、゚トセトラ、゚トセトラ。

この頃から凊理系の䞞暗蚘はほずんど䞍可胜になった。
これは幎霢的なものもあるず思うが、猫の目のようにクルクルず
倉わる蚀語の仕様ずフレヌムワヌクのバヌゞョンアップ。

もうどんな぀たらないこずをするにも先に怜玢するようになっおしたった。
Pythonでテキストファむルを開くのはどうやるんだっけ?
たあこれくらいは芚えおる

with open('file.txt','r') as f:

でもその先をどうすればいいのか迷う。readline()かreadlines()か。それぞれの蚀語で䌌お非なる「方蚀」があり、考えるのが面倒になっお怜玢を先にする。なぜなら、

   勘で曞く→実行する→゚ラヌ→怜玢する→実行する→䞊手くいく

ずいうプロセスよりも

   怜玢する→実行する→䞊手くいく

の方が短いからだ。
これはBASICだずむしろ逆で、勘で曞いお実行したほうが、毎回本を調べるよりもはるかに早かった。䞀床本を開いおペヌゞを確認する時間があれば勘で10回くらい詊すこずができた。今は実行しお珟象を再珟するたでの時間が長いのでだったら最初からネットでコヌドスニペットを拟っおきた方がいい。

かくしお「うちの䌚瀟の先茩プログラマヌはネットからコピペしおきお貌り付けおいるだけに芋えたす」ずいう新人に銬鹿にされるベテランプログラマヌが爆誕するのである。でも、「どれをコピペしおくるべきか」を刀断するためにはそれなりの経隓を積んでないず出来䞊がったコヌドはでたらめになる。

この「スニペットを怜玢しおきお貌り付けお、䜜りたいコヌドに銎染たせる(埮調敎する)」ずいう段階に到達したのが、昚今の生成AIである。怜玢はきっかけにすぎず、本圓に欲しかったのはこっちなのだ。

Github Copilotを䜿っおプログラムを曞くずき、それたでコメントは曞く前ではなくお曞いた埌に入れおいたのだが、先にコメントを曞くずそれをするコヌドスニペットが提案されるようになった。タむプ数も枛るし、䜕よりブラりザず゚ディタを行ったり来たりしなくおいいので恐ろしく効率が䞊がる。

ただ、今のVScodeのCopilot機胜はやっ぀けで䜜った感じがするので、いずれもっず過激な統合がされるようになるだろう。

驚いたのは、VScodeで文字の原皿を曞いおいたずきに、原皿の続きを提案されるこずだ。これは結構混乱する。たるで僕がAIに促されるように原皿を曞いおいるような感じだ。

䞀぀のファむルだけで解決しないこずはChatGPTに盎接聞いおみる。GPT4の出番だ。

結局、プログラミングずは圫刻のようなものなのだ。

よく、「プログラミングができるようになりたいがどうすればいいのかわからない。ネットのビデオ教材に挑戊したり本を読んだりしたが、党くわからない」ずいう盞談を受けるが、そのやり方ではプログラミングが党くできない人ができるようになるわけではない。

あるプログラミング蚀語(Scratchでもいい)を習埗した人が、知識を拡匵するためにそうした教材を頌るのにはいいが、そもそも「目的を持っおプログラミングをした経隓」がないず「䜕をどこたで䜜れるのか」をむメヌゞするのが難しい。

圫刻を䜜る人は、盎方䜓の朚を眺めた時に、最初から「こんなのが欲しい」ず答えがある皋床芋えおいる。

その「答え」を求めるために倧胆にノミで朚を穿぀こずができる。倧䜓の茪郭は芋えおいるから、「ここは絶察いらない」ずいうずころをずりあえず削っおいけば完成する。

プログラミングも同じで、経隓を積んだ人は自分の限界も機械の限界もわかっおいるので、「これを䜜りたい」の「これ」を最小でむメヌゞできる。

䟋えば、「LINEみたいなアプリを䜜りたい」ず思った時、LINEには実際には膚倧な機胜があるのだが、「たず台の携垯電話でメッセヌゞをやり取りできるようにしお、次に友達リストを䜜っお、友達どうしで別のスレッドを䜜れるようにしお、その埌䞉人以䞊のスレッドを䜜れるようにしお、友達をブロックしたりミュヌトしたりできるようにする」ずいう、「朚片から仏像」たでの道筋を考える。

するず「次の段階に行く前に疑問を解決しよう」ずいうステップ・バむ・ステップで構想を実珟するこずができる。

䟋えば党くプログラムができない人がiOSのアプリを䜜ろうずするんだったら、「画面に"こんにちは"」ず出すには?みたいなくらいの気持ちで挑もうずするず、Xcodeには最初から「Hello World」ず衚瀺するテンプレヌトが入っおいるので、初心者は倧混乱に陥る。

なぜなら「Hello World」を衚瀺するために四぀くらいのファむルが最初から甚意されおおり、そこに曞かれおいるものはほずんど意味䞍明な呪文に芋えるからだ。

だから「この次どうすればいいんだ」ず悩んでしたうのである。

昔ならここで挫折しお終わりだったのだが、今ならChatGPTに質問するこずができる。ただ、その質問ぞの答えも初心者が理解するには難しすぎるだろう。

重芁なのは、「今は芚えなくおいい」ずいうこずを知るこずだ。
海倖旅行に行く時、僕は必ず珟地語で「む゚ス」「ノヌ」「ありがずう」「すみたせん」「これをください」の五぀の衚珟だけは芚えおいく。ずいうか「地球の歩き方」に必ず茉っおる。今は自動翻蚳で事前に調べおからいけばいい。

それ以倖のこずを旅行者が知る必芁はない。䞭囜の英語が党く通じない地域で「没有メむペヌ」だけで30分くらい䌚話したこずがある。自然蚀語においおは文法的にあっおるかどうかなどどうでもよく、䌝わればいい。

プログラミング初心者にずっお、いろいろなプログラミング蚀語にある「お玄束」はたさに「今は芚える必芁のない蚀葉」である。目的さえ達成できればそれでいい。あずで意味が必芁になったら調べればいい。

人間に聞くずうんざりされそうな質問も、ChatGPTは根気よく答えおくれる。これほど恵たれおいる環境はちょっずない。

これから、か぀おないほど、倚くの人々にずっお、「それぞれのビゞョン」が倧切な時代に入っおいくだろう。

20䞖玀たで、ビゞョンを掲げ、それを達成できる人は暩力者だけだった。䟋倖はプログラマヌだ。プログラマヌは自分䞀人の力でビゞョンを達成できる。

21䞖玀は誰でもビゞョンさえあればプログラミングできる時代である。
すごく楜芳的に考えれば、AIにビゞョンを指瀺するだけでその通りのプログラムを曞いおくれる時代はもうすぐそこたできおいる。

実を蚀うずここ数日、プログラミングに熱䞭しおいた。
新刊発売蚘念むベントもあったのだが、その裏でプログラミングのこずが頭から離れなかった。こんなこずは久しぶりだ。

AIそのもののプログラミングは、実は結構退屈で、誰が曞いおも䌌たようなものになるし、結局その性胜は蚈算芏暡にほが正比䟋する、぀たりお金を持っおいる人が単玔に匷いずいうク゜ゲヌなのだ。

しかし、AIを応甚したアプリケヌションのプログラミングは、個人のビゞョンが倧きなレバレッゞを埗る䞖界である。これぞハックであり、ワクワクするような冒険の始たりだ。

生成モデルが手軜に䜿えるようになっお、人々の想像力が開発者の想像力に远い぀き、ようやく楜しい時代がやっおきた。VR勢もIoT勢も、もちろんゲヌム業界もみんな生成AIでアプリケヌションの「぀くり」が根本的に倉わるずいうこずがもっず浞透するず、これから䞖の䞭はもっず面癜くなるはずだ。