こんにちは。Q太郎です。ChatGPT使ってますか?
私は毎日のように使っています。自分ですぐにコーディングに取り掛かるべき時でも、ChatGPTにもっと良い解決策はないか?自分の方針より良い判断がないかを聞くようにしています。もちろん、業務上の詳細な情報は入力しませんが。
Twitterでこんなつぶやきを見かけました。
確かに、なんでもかんでもChatGPTに質問して解決するのは難しいのです。
しかし、個人的にはそんなに笑ってる場合でもないよなぁという気持ちになりました。
私自身、結構ChatGPTを使ってるので、面接でChatGPT使ってって答えられると、どんな風に使ってますか?って乗り気になって、その人からもプロンプトを作る技を奪おうとしちゃうかも知れません。
ChatGPTは間違うけれど、、、
ChatGPTが間違った答えを出すかも知れない。ということをみんな恐れすぎなのでは?と僕は思っています。もちろん間違った答えを出すこともあるのですが、ブレイクダウンしていけばある程度は未知の抽象的な問題でも、ChatGPTで解決していけると思います。
抽象度の高い問題をChatGPTで扱うときに僕がどんな風にしてるか説明していきたいと思います。今回はよく面接で聞かれるらしいこの質問。「 Web ブラウザのアドレス欄に URL を入力し、エンターにキーを押してから起こることを説明してください」がお題です。
最初のプロンプト
「 Web ブラウザのアドレス欄に URL を入力し、エンターにキーを押してから起こることを説明してください」とChatGPTに入力してみました。
これが回答です。
口頭であればこの程度の説明ができれば、とりあえずは及第点でしょうか。
DNSやIP、HTTPS証明書などは色々と切り分けが簡単じゃないところもありますし、もう少し詳しく答えて欲しいところなど、ところどころ気になる回答もあります。
「TCP/IPやHTTPS証明書、HTTPあたりについてもう少し掘り下げて教えてください。」と入力してみました。
おっと、最初の質問を忘れてプロトコルだけの説明をさせてしまいました。プロンプトが悪かったですね。
さらに、「上記をアドレスバーでエンターキーを教えてWebページが表示されるまでの流れに合わせて説明してください。」と説明を求めましたが、少し雑多な情報が含まれる状態になってしまいました。
失敗したのでリベンジ
また新しいプロンプトを立ち上げます。
このプロセスが大事です。自分も未知のものを理解しようと行なっているわけですから、この作業をしている間に、自分の脳もクリアになっていきます。
僕がよく使う手法に抽象的な問いを複数の具体的な問いに分割する方法です。
まずは「Web ブラウザのアドレス欄に URL を入力し、エンターにキーを押してから起こることを説明してください。」という内容をいくつかのステップに分割します。自分の脳みそでそれができない場合は、これもChatGPTに行ってもらいます。今回はそのパターンをやってみます。
「Web ブラウザのアドレス欄に URL を入力し、エンターにキーを押してから起こることを説明してください。 まず、詳細を答える前にそれぞれの処理をいくつかのフェーズに分割して、サマリーを教えてください。」と入力してみます。
すると、このような問いが返ってきました。
これらを知ることができれば、それぞれを詳細に尋ねていくことができます。
DNSについては理解してると前提として、サーバーへのリクエストを詳細に尋ねてみます。
「あなたはGoogleの一流エンジニアです。ブラウザが入力されたアドレスからIPアドレスを特定してサーバーに接続するときに行われてることでできるだけ詳細に教えてください。」
かなり得たい回答に近いものが得られました。
もしわからない部分があったとしても、同じように何度も深掘りをしていけばブラウザでWebページを表示する時に行われてることを詳細に知ることができます。
「あなたはGoogleの一流エンジニアです」などもプロンプトの精度を上げるロールプレイプロンプトとして知られていますが、工夫の仕方はどんどん編み出されていますので、どんどん習得していきましょう。有名どころでは https://www.promptingguide.ai/ などがあります。
まとめ
生成AIがなかった時代は、「ブラウザがWebページを表示するまで」や「PCが電源ボタンを入れてから操作可能になるまで」に行われていることは、一つの本で短時間で学ぶものではなく、さまざまな本を読みながら少しずつ学ぶ知識でした。
しかし、生成AIが生まれた今では抽象的な質問をどんどん具体的な質問にブラッシュアップしていくことで、どんどん知識を得ることができます。
どう考えてもいくつもの本を読んで、知識を得ていくよりも、どんどん生成AIを活用して、自分の学ぶべき羅針盤を得てから、詳細な本や論文を読む方が学びのスピードが早いです。
というわけで、わからないことがあったときにChatGPTで解決してるエンジニアを馬鹿にできない件でした。