見出し画像

GPT4で実際どの程度プログラミングができるか?

未経験でもプログラミングができる?

様々な記事や動画が出ている

ChatGPTをめぐっては様々な記事や動画がタイムラインを賑わせています。


まあ色んな工夫が出てきているわけですが、個人的には、特にプログラミングの生産性向上のところに注目しています。

社内でも一部成功例が出てきた

実際、弊社内でも、
プログラミング未経験だが、必要なツイートをメールから取得して、自動でリツイートするスクリプトが実装できた」
GPTに聞きながら、広告のレポートを一部自動で生成するようにできた」
など、ちょっとした成功事例が出てきて、社内で共有会が開かれたりするようになってきました。

共有会の開催(弊社Slackより)
共有会の開催(弊社Slackより)

(頭では理解していても、)
作者がソースコード一行一行の意味をわからなくても、
様々な処理を実装して、それが適切に動いているという状態は、
実際身近に見ると、すごい時代が来たなあと感じます・・!

実装してくれている本人なんかは
「僕がこんなものを作れるなんて、感動しました」みたいなことを言っていて、こちらとしては聞いていて(原理不明で飛んでいる飛行機のようで)怖いような喜ばしいような気持ちになります。

実際にやってみよう!

でも、こういう新しい技術の類は、(web3やNFTもそうですが)
実際に触ってみなければわからないもの。

このブログの冒頭に貼った、テトリスを作るというくらいがちょうど良いのかなと思い、自分もGPT4で何か動くものを作る、というのをやってみることにしました。

始めはテトリスにしようと思ったのですが、動画の通り作ったらさすがに動くに決まってるしつまらんと思い(…ナメてました。このときは)、最近、プチマイブームのポーカーのゲームを作ることにしました。

(囲碁と迷いましたが、囲碁はGPT4と対戦してみた時にそもそもGPTが囲碁のルールを理解して無さそうで途中から成立しなかったので、不安になり囲碁はやめました)

GPTと悪戦苦闘している様子のスクショ

本稿で伝えたいこと

作ってみたのはこんな感じのゲームで、ブラウザで遊ぶポーカーです。

ブラウザで遊ぶポーカー

ちなみに、一応動くものの、
完成からはほど遠く、
まあ、こんな凄いものができたよ!という記事ではないので(負け惜しみ
むしろ過程の紹介に重きをおいて、

・どんな苦労があるか
・GPT4の萌えポイント
などのリアルを伝えられたらと思います。

2-3年後、飛躍的に進化したら、
2023年当時の記録として見返すと面白いかも?

本章では、以下、ひたすらスクショを貼っておきます。

序盤:どこまでできるのか?探り探り

とりあえず環境含め、丸投げ


大変そうなオンラインマルチプレイは排除


早速、要件変更。((現実で繰り返すと総スカンになやつ


問題=あるべき姿とのギャップ 提起ができるところがすごい


中盤:見えてきた限界点

進むのは一歩一歩


地道な機能追加とバグ取りが続く


直しました!と言って直ってない頻度は現状、人間より多め



だんだんコードを読まないといけなくなった


終盤:一歩進んで二歩下がる?


整合性が取れなくなって全体のコードをもらい直す場面も



エラーコードを貼って対応してもらうを繰り返す


だんだん話が難しくなる


まさかのシェルスクリプト。PATH通したり大変だった・・


感想:可能性は感じる!が、まだ発展途上

シンプルなものを素早く作ることは可能

今回のポーカーゲームづくりで言えば、
「勝敗の判定」
「ポット管理」
「手番の管理」
あたりは難易度が高く、
プログラム未経験者がGPT4だけを頼って実装するのは難しい
と感じました。

が、逆に言えばそれ以外の部分、
カードをシャッフルして配ったり、
アクションを選択したり、
アクションに応じてスタックやポットを増減させたり、
ボードにカードを落としていったり
基本的なところは爆速で出来上がります。

作ってみて触ってみて楽しい!
というところまでは30分もかかりません。

しかも、最初の1-2時間くらいは、
想像していたよりもずっとエラーが少ないです。

まさにDONE is better that PERFECT
(拙速は巧遅に勝る)
を実現するのには心強い味方といえ、

MVP(実用最小限の製品)などの開発には
めちゃくちゃ向いていると思いました。

最初のハードルが低く、モチベ維持にもいい

そんなふうに特に
立ち上がりの初速が魅力的な点、

人間が何となく、
最初の一歩が踏み出しにくいという場合に、
こういった対話型のAIの力を借りると
きっかけをつかみやすいと思います。

また、一人で作業を続けていると
(特にバグ取りや調査で
一進一退という場面などは)
疲れてしまいそうな場面でも、
対話しながら一歩ずつというところで
モチベの維持がしやすいかと思います。

このあたりは対話型のインターフェースの
まさに強みとも言える部分かもしれません。

今回の実験的作業を通じては、ある程度、
「人間とAIの共同作業」の感覚
にも触れることができたのかな
と思いました。

問題発見能力が高い

スクショでも少し紹介しましたが、
GPT側の能力として、
問題発見能力は意外な強みだと思いました。

つまり、今回のポーカーの例で言うところの、
「勝敗判定」や「ポットコントロール」など
現状、不足している機能を、
自ら申告してくれる
という点です。

問題=「あるべき姿とのギャップ」
がわかるためには、当然、
「あるべき姿」描けている必要が
あるので、

(これは自分の中でどちらかというと
「人間側の役割」だと自惚れていた
ところもあって、、)
大いにハッとさせられるところでした。

そのほか、こちらのミスの傾向を読んで
学習してくれている
ようなところもあり、
(コメントで省略されたところを
コピーし忘れる傾向にあるなど)
ある意味「人間くさい」、
気の利くポイントが多くあった
のは
面白かったです。

大雑把な指示でも受け付けてくれて
人間より融通が聞くかも?と思ったことも、
何回かありました。

未来における、人間とAIの役割分担
今我々が思い描いているものとは
もっと違う分担になるのかもしれません。

さすがに複雑なものはまだ難しい

ただ結果として、納得いくものが
出来上がってないことからもわかる通り、
GPTを使ったプログラミングは、
現時点で完璧ではありません。

(出来上がってないのは単純に
私の実力不足ではありますが、
まあそもそも素人でもできるか
という検証だったので
……ゴニョゴニョ……)

※一応、勝敗判定意外の部分はまあ
なんとかなりました(言い訳)

スクショから何となくの雰囲気は
感じ取ってもらえるかなと思いますが、

プログラムが複雑になっていくほどに、
パッチワークで補修していっても
全体の整合性が取れなくなっていく、

全部は出力してくれないので
一箇所が直ると他が壊れ、
既にできていた箇所も
ダウングレード(先祖返り)してしまう
などのことが起きました。。

ほかにも、ちょっと難易度的に
厳しいかなと思うこともありました。

※今回の場合は途中、外部のライブラリを読み込むために
Macでシェルスクリプト叩いてPATH通したりとか、
「なんかエンジニアっぽいことしているな・・・」
という場面もあり・・・。

→但し、このあたりも、現在ある質問の回数制限が解除されれば、
そもそも全部GPTに聞いちゃえばなんとかなるかも?しれません

対話型なので基本的にはやり取りしながら
ストレスなく進められるのですが、

「直しました!」「わかりました!」
といわれて、ただ結果を見ると
まるっきり当てにならないことが続くと
(返事だけはいいなあ・・・)
と思うこともありましたね 笑

まあ、それすらもジェネギャ?
機械さんだからな?
多様性のひとつとして受容できる?
感じがするのも
対話型AIの良さなのかなと思いました。

終わりに

世の中は(いつでもそうですが)
賛否両論で、
GPTをめぐっては、色んな意見があります。

未来の到来!シンギュラリティだ!
GUI依頼の衝撃!
人間の仕事は無くなる!
などという人がいる一方で、

バズワードだ!
インターフェースが変わっただけ。
平気で嘘をついてきて危険
という人もいます。

どういう立場を取るにしても、
やっぱり一次情報に触れる
自分で手触り感を持って理解する
というのは重要かと思います。

私の感想としては、
まあ、いまのところ
エンジニアが失業することは無さそうですね。

ただ、これからの働き方という点で、
人間と機械の共同作業のあり方
というのはもっと強く意識されるべき
ところなのかなとも、思いました。

皆さんもぜひ、何かGPTと共同作業で、
作ってみて下さい!

この記事が気に入ったらサポートをしてみませんか?