エラーに立ち向かう:Chat-GPTを使いこなすプログラミングチェックリストを作ってみた
今回の記事は、AIそのものというよりは、
Chat-GPTと一緒にやってみたことの共有です。
結論としては、下記のチェックリスト作ってみたというお話です。
1. 背景:コピペ人間の限界を感じる
私は常々、「自分は純然たる文系人間なのでプログラミングは一切しません」と言い切って、開発のソースコードは全力で避けてきていました。
でも最近になって、Chat-GPTやClaudeの手を借りると少しできる範囲が広がってきたので、完全”コピペOnly”でGASなど触るケースが増えてきました。
しかし、
コピペのみなのでエラーにハマって抜け出せないケースが多々発生します…
一方で、やはり人間とは欲深いもので、
どうせやるならもう少し痒いところに手が届いて欲しい…
けどできないのがもどかしい。
そんな状態でした。
そのうち、「そもそも自分に足りないのは何なんだ?」という疑問が沸いてきました。
言い換えますと、
「ど素人とベテランのプログラマーさんでは何が違うのか?」を
突き詰めてみたくなった訳です。
ということで、思い立った内容について、Chat-GPTと白熱した議論を小一時間交わしました。
結果出来上がったのが、冒頭のチェックリストです。
2. 課題感:自分のレベル感と過去事例
ご参考までに、
私のレベル感や取り組んでいた事例と課題意識について共有させていただきます。
冒頭にもお伝えした通り、元々は知識ゼロでしたが、
最近は見よう見真似&コピペで、ちょっとしたツールはDIYしている感じです。
作ってみた具体例:
LINE NotificationとGASの組み合わせで、子供の塾からのメールを自動でLINEへ通知
GASとSlack Webhookの組み合わせで、特定のメールが来た場合にSlackチャンネルに投稿
特定フォルダに保存されているCSVを順に読み込んでスプレッドシートへ転記するGAS
なお、今までで一番ハマって挫折をしたのは、
「アルバイトのシフト希望を募って、それをシフト表に当てはめる」ツールの作成です。
所感として、以下が私の限界値イメージです。
箇条書きで”欲しい機能”が5個未満
条件分岐が3個未満 (YES / NOのみ)
条件設定は固定的 (パラメータで可変にしたくなるとツライ)
ここを超える”複雑なモノ”は、
途端に指示を的確に伝えるのが難しくなり、
Chat-GPTに対して「なぜわかってくれない!?」と頭を抱える傾向がある気がします。
ちなみに、V0, Create.xyz, CursorなどのAI系ツールを活用することも「やってみたいこと」ではありますが、そもそもそういう本格的なものは「誰かにお願いしたい」意向が強く、あんまり進んでいません。
3. 議論:不足している”経験”の深掘り
そんな状態の私でしたが、
ハタと気になったのが冒頭にもある通り、「自分には何が足りないんだろう?」という疑問です。
ということで、べたに「何が違いだと思う?」から始めます。
最初は、「足りないのは経験です」と言われてイラっとしたり、
「そもそも経験って、大量データの学習で補えないの?」とモヤモヤしたりと、
Chat-GPTと熱い議論を交わしました。
段々とわかってきたのは、
ベテランの人は一般論と特定の文脈やプロジェクトに依存する部分を見極める目があり、
抽象化と具体化を行ったり来たりしながら進めている
という点でした。
またこれはエラー対処にも同様で、
エラーメッセージには表現されない環境の問題やライブラリの違い、
データソースの不備なども考慮しながら、
広い視野で全体を捉えながらエラーハンドリングしているようなのです。
どうやら、「ソースコードとエラーメッセージがあれば解決してくれるでしょ?」という考えから勘違いがあったことに気づけました。
ご参考までに全文掲載します。
(何か恥ずかしい…そして、最初が音声だったので、URL共有ができない…)
【共有】Chat-GPTとの議論(全文).pdf
そして最終的には、
「どんな目線や観点」があればベテランさんの域に近づけるかを考えた結果、
冒頭のチェックリストに行きついたという感じです。
(再掲)
5. 学習:自分に足りてなかった視点
出来上がったチェックリストを見返したり、
やり取りを振り返ると、
どうやら以下の視点が不足していたようです。
テストの観点: 「やりたいこと」は出せるんですが、「どんなテストで実証ができるのか?」や「どんなテストに対してOKなら満足なのか?」という観点で機能を考えれていませんでした
スモールステップへの分割: 大きな課題を小さな段階に分けて取り組むアプローチが不足しており、全ての”やりたいこと”を一度にChat-GPTへの指示に詰め込んでいました
周辺情報の軽視: 例えば、外部ライブラリ、設定ファイル、実行環境情報など、エラーに影響を与えている可能性がある(可能性が無いことを証明出来ていた方が対応が楽)な部分を軽視して、「ログに掛かれているエラーを貼り付けすればChat-GPTは分かってくれる」と勘違いをしていました
6. まとめ・感想
普段はプログラマーさんに依頼するばかりでしたので、
違う目線でシステム開発を捉えることができたのが有意義でした。
ちなみに余談ですが、
自分とChat-GPTのやり取りを全文共有するのは
ちょっと恥ずかしいというか、勇気が要りますね。