2025年11月28日
おおよそ3年前からChatGPTなるものが出てきた。
今では親も使うし、会社でも推奨されるまでになった。
周りの人まで使うようになって見えてきたのは、AIとの向き合い方が人それぞれだいぶ違うということ。
別に私の方法が優れているとは思いはしないけど、今の所私はAIで困ってないので私の向き合い方を紹介する。
私はWebエンジニアなので、主にプログラミングにおける話になるのはご了承いただいて。
結論
結論だけ言えば、「自分主導で使う」という一言に収まるんじゃないかなと思う。
AI主導になったらそれはもうAI以下のクオリティしか吐き出せないし、人間である意味が無い。
AIの前提
私の知っているAIに関する前提を共有したい。
色々書きなぐったんだけど、だいたい「AIは確率的である」ということに帰着するのでこれを軸に話していく。
AIは確率的であるということ
なんかよく、「AIは次の文を予測しながら出力しているだけ」という説明があるんだけど、結構それはマジで、次の文を予測しながら確率的に適当な言葉を並べているということを理解しておかなきゃいけない。
これを理解すると何がわかるか
確率的であるので、以下のようなことが言える
- 学習していないデータは出力のしようがない
- 時事問題を質問しても、間違った答えを出したり、わかりませんと出力されるのはそういうこと
- ただ、今はWeb検索機能とかあるので、ある程度いけるっちゃいける
- 学習データの量・質が悪いと、出力も悪い
- 有名どころのAIサービス使っていれば基本ここらへんは問題ない。ただ、中国のAIを使うと中国寄りの答えになるとかはあるみたい。
- 平均的な答えを出しがち
- 平均的な答えを出しがちなので、一般的でも間違っている答えを出したりする。この問題はプログラミングにおいて顕著で、動くんだけどセキュリティリスクのある出力や冗長な出力をしがち。
- AIの言うことは真実ではないということ
- 人間も一緒だけど、間違ったことを言っている可能性がそれなりにあるので、重要なものは絶対にファクトチェックを行う。間違っている理由は様々で、学習されたデータが古い&質が悪いとか、単に確率的に運が悪かったとか。
- 計算に弱いということ
- 1+1くらいなら学習データがいっぱいあると思うので「2」という答えを出せるんだけど、83287×473878とか適当な掛け算をさせるともう正確な答えは出せない。
- ただ、今はプログラムを自分で書いて計算とかしてくれるので、プログラムを書かせれば結構いける(電力の消費とか考えると絶対電卓の方がいいけど)。
- AIにイラつく必要がないということ
- AIもわざと間違ったことを言ってるわけではないので、イラつく必要はない。AIの出力に文句言っている人が時々居るけど、別に怒る理由が無い。
文脈をいじる
AIは確率的なんだけど、この確率をある程度操作することが私達にはできる。例えば「早急」という言葉、これは「さっきゅう」という読みが正しいんだけど、一般的に「そっきゅう」と言われがち。
これをAIに「さっきゅう」と読ませたい場合は「さっきゅう」と読まれがちなシチュエーション、文脈を用意してあげればいい。例えば、
「早急」の読み方はなんですか?
と質問してあげれば、正式な知識を答える文脈になるので学習データに問題がなければ「さっきゅう」が高確率で選ばれる。
逆に、ちょっと子供っぽい文脈で
中学生が書いた日記を、すべてひらがなに変換してください: 「まじやべー!宿題忘れてた。早急にやらないと先生に怒られる」
と聞けば、「そっきゅう」が選ばれやすい。実際の会話は「https://claude.ai/share/88bf3222-b047-4907-9ee6-98b93978fa6c」から見れる。
こういうのがプロンプトエンジニアリングにつながるのかなと思う。
結構これ馬鹿にできなくて、AIの回答に私達から作用できる部分ってここくらいなので、色々試したほうが良いと思う。
よく、「あなたはプロのエンジニアです」みたいな前提を入れる例があるけど、あれも良い出力の確率を上げる作業だと言える。実際に意味あるかは知らないけど。
AIとの向き合い方
私の基本的なAIとの向き合い方は以下のような感じだと言える
- 自分でわからない部分はAIにすぐ聞く
- ただ、一次情報は絶対確認する
- ただ、実装はだいたい自分でする
- 答えが明示なものはAIに作成してもらう
- ただ、出力された回答は必ず確認する
これ、今こうやって見てみるとGoogle検索→AIになっただけで、AIになって新しくなったのって「明らかに答えが明示なものはAIに作成してもらう」部分だけだね。
自分でわからない部分はAIにすぐ聞く
これは、私の学習スタイル的なものが根底にある。
そもそも私はAIに限らず、答えがあるものであれば、すぐに答えを見て学ぶスタイルを取っている。
なので、これも同様にその方法で学んでいるだけっちゃだけ。
ただ、
- 一次情報を確認する
- 実装は自分でする
というのが本当に大事だと思う。
一次情報を確認する
例えば、AIから「〇〇という方法やコードで実装できます」という情報を手に入れたら、その〇〇を公式ドキュメントまたはソースコードを見て正しいかどうかを検証する。
これは、AIが間違ったことを言っている可能性があるっていうのと、知識のメインを一次情報にしたいから。
つまり、AIは知識の導入に過ぎなくて、知識の土台は一次情報にしたい。
ただ、一次情報ってめっちゃわかりにくかったり、検索に引っかからなかったりするので、その補助としてAIを使うイメージ。
AIならこちらの文脈に合わせた答えを出してくれるのでとても助かっている。
実装は自分でする
大事なのは、理解できていない部分は自分で実装するということ。
明らかな答えがあり、出力されたコードを全部人に説明できるレベルであればAIに実装させて良いと思う。
実装を自分で行う理由は、その知識を理解し自分の力にしたいから。
自分の力にしないとまたAIに聞くはめになるし、AIから出力されたものをまた検証しなきゃいけなくなる。
自分の力になっていればAIの出力するコードが明らかに正しい・正しくないとわかるし、自分主導で物事を進められる。
人に説明できるレベルじゃないのに、理解をないがしろにして進めてもいずれ無理が出てくるし、完成したプログラムに不安しかないので私は理解するようにしている。
これはAIを使う上で絶対で、いくら急いでいても理解は疎かにしない(自分で書かないときはあるけど)。
答えが明示なものはAIに実装してもらう
私はPHP + Laravelという技術スタックを使うんだけど、Laravelの基本的な部分は理解しているつもり。なので、特殊なことでなければAIに実装してもらうことも多い。
つまり、自分の中で答えが明らかで、出力されたコードを人に説明できるレベルであればAIにコードを実装してもらっている。
コンテクストを大事にする
AIを利用する際に差が出るとしたらこの「コンテクスト」かなと思う。
私はコンテクストをかなり大事にしながらAIと会話するようにしている。
今のところ、AIと人間の大きく違うところは膨大なコンテクストを把握しているか否かだと思う。人間は膨大なコンテクストを持っているけど、AIはせいぜい数千〜万文字程度のコンテクストしか持てない。なんなら、私達から提供しない限りは1つも持っていない。なので、できるだけ質の良いコンテクストを与えて、無駄なコンテクストが入り込んだら会話を巻き戻すということをしている。
よくあるMCP、会話のメモリ機能、CLAUDE.mdなどの設定はこのコンテクストを支えるものなのでうまく使えるなら使ったほうが良いとは思う。ただ、逆に言えば無駄なコンテクストを含める原因にもなるので仕組みを理解しながら使わないといけない。
以上です。