はじめに(まず謝っておきます)
非エンジニアです。@echo off を見て「echoって何を反響させてるんだ?」と本気で思っていたレベルです。
そんな私が、ある日、生成AIを相手に行き当たりばったりで質問を投げ続けた結果、なぜか API だのスクレイピングだのの話にたどり着き、最終的に「エンジニアが驚く質問」とやらを錬成してしまったらしい……おそらく。たぶん。きっと……という記録です。
技術記事のフォーマットを借りていますが、書いている本人は内容の正しさを保証できません。判断する力がないからです。これは技術記事というより、何も知らない人間がAIに手を引かれて歩いた道のりの観察日記だと思ってください。
⚠️ この記事は非エンジニアが書いています。
間違いがあれば、優しく教えてください。たぶん何が間違っているかも私には分かっていません。
第1章:すべては @echo off から始まった
事の発端は、真っ黒い画面でした。
@echo off
この一行を見て私は思いました。「echo を off にするのに、なんでわざわざ echo って言うんだ?」
AIは丁寧に「これは画面にコマンドの中身を表示するかどうかの切り替えで〜」と教えてくれました。なるほど(正直まだよく分かっていない)。でも私はうなずきました。
第2章:ブラウザが勝手に動いて軽くビビる
そこから「Pythonでブラウザを自動で動かせる」という話に。Seleniumというやつです。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com")
print(driver.title)
driver.quit()
これを実行したら、勝手にChromeが立ち上がってGoogleを開いて、勝手に閉じたんです。正直ちょっと怖かったです。
ここで私は疑問をぶつけます。「これ、バッチファイルの中に直接書けばよくない?なんで2つもファイルがいるの?」
AIの答えは「❌ できません」でした。.bat は cmd.exe の言葉、selenium は Python の言葉で、そもそも住んでいる世界が違うらしい。バッチの仕事は「Python、出番だよ」と呼びに行くだけ。
@echo off
python my_script.py
pause
呼び込み役だったんですね。
第3章:暴走する好奇心(ここで一度道を踏み外しかける)
API の話に行く前に、好奇心が脱線します。「自分のパソコンで、自分が普段どんな操作をしてるか記録できる?」と聞いてしまったんです。
from pynput import mouse, keyboard
# マウスもキーボードも記録できるらしい
AIに「※自分のPCで自分用に使うときだけにしてください。他人の操作を記録するのは法律違反になる場合があります」とやんわり諭されました。ごもっとも。「ゴミ箱に何を捨てたかのログも拾える?」とも聞き、C:\$Recycle.Bin を覗く方法を教わったあたりで、本題に戻ろうと我に返りました。
第4章:APIとは何か、を水道とレストランで理解する
ようやく本題。「APIってそもそも何?」「スクレイピングと何が違うの?」
AIのたとえが見事だったので残しておきます。APIは「水道局が用意した正規の蛇口から水を汲む」こと。スクレイピングは「壁に穴を開けて水道管から直接水を引く」こと。レストランでたとえるなら、APIは「メニューから注文して出してもらう」、スクレイピングは「厨房に忍び込んで食材を持ち出す」。図書館なら、APIは「カウンターで借りる」、スクレイピングは「閉館後に窓から入って読む」。
ここまで言われて、私はかなり分かった気になりました。そして調子に乗って「それってプロトコルとは違うの?」「OSI参照モデルのアプリケーション層ってやつ?」と、聞きかじった単語を投げ始めます。自分でも何を言っているか分かっていないのに、AIが普通に会話を続けてくれるのが恐ろしいところです。
第5章:本題。「エンジニア、驚く?」
さんざん質問したあと、AIにこう頼みました。「私の質問から、非エンジニアしか聞かなさそうなやつを抜き出してみて」と。
ちゃんと返ってきました。素人丸出しのコレクションです。で、ここでもうひとつ聞いてしまいました。「でもこれ、エンジニアの人が驚く内容ってあるのかな?」
「ありますよ」と返ってきました。
でも、ここで困ったことになります。私には、それが本当に驚く内容なのかどうかが分からないのです。 物差しがないので。「これ国宝級ですよ」と壺を見せられても、私にとってはただの茶色い壺。驚いていいのかどうかも判断できません。
以下、AIが「エンジニアが驚くかも」と言った3点を、私が驚けないまま貼っておきます。本当に驚くやつなのか、詳しい方がいたら教えてください。
1. スクレイピング、相手に嫌われませんか?
私の質問:「人のサイトから勝手にデータを取るって、よその家に上がり込んで物を持ち帰るのと一緒ですよね。嫌われたりしないの?」
import requests
from bs4 import BeautifulSoup
res = requests.get("https://example.com")
soup = BeautifulSoup(res.text, "html.parser")
# 技術的には取れる。でも「取っていいか」は別の話、らしい
AI解説:エンジニアは「どう取るか」の工夫に意識が向きがちで、「そもそも嫌われないか、公式に分けてもらえないか」という手前の発想が抜けやすいので、ハッとする人もいる、とのこと。私としては、勝手に持って帰ったら嫌われるよね、と思っただけです。
2. APIの鍵、泥棒に盗まれたら誰が責任を取るの?
私の質問:「APIキーってパスワードみたいなものですよね。鍵ごとパソコンを盗まれたら、流出の責任は誰が取るの?」
import os
api_key = os.getenv("SECURE_API_KEY")
# プログラム上でどれだけ鍵を隠しても、
# パソコンごと盗まれたら意味がなくなる、らしい
AI解説:エンジニアは「鍵をどう隠すか」というプログラム上の話に集中しがちで、「物理的にPCごと盗まれる」現実が盲点になりやすいので意外に映る、とのこと。私としては、鍵ごと渡したら終わりだよね、と思っただけです。
3. このシステム、いつ「老衰」して死ぬの?
私の質問:「作った仕組みもいつか壊れますよね。人間みたいに寿命があるの?『老衰のサイン』はどこを見れば分かるの?」
# DeprecationWarning: この機能はそのうち消えます
# ↑ これがまさに「老衰のサイン」らしい
AI解説:エンジニアはシステムを「ちゃんと作れば基本ずっと動くもの」と無意識に捉えがちで、外部APIの廃止やライブラリのサポート終了という"じわじわ古びる現象"を「老衰」と呼んだ言葉選びが新鮮に映る、とのこと。私としては、機械もいつかは壊れるよね、と思っただけです。
ちょっと脇道:自分の質問を見返して気づいたこと
ここまで書いて、自分のやりとりを読み返していて、ひとつ気づいたことがあります。これは「私がすごい」という話ではなくて、たぶんAIに教えてもらった質問の仕方そのものの話です。
私は何かを聞くとき、いつも無意識に「それって、〇〇みたいなもの?」と、自分の知っている世界に置き換えて聞き返していました。APIなら水道の蛇口、スクレイピングなら人の家に上がり込むこと、システムの寿命なら家電の買い替え、というふうに。
そして、ひとつの答えをもらっても「分かりました」で終わらせず、「それってプロトコルとは違うの?」「アプリケーション層ってやつ?」と、聞きかじった別の言葉とつなげようとしていました。たぶん全部ピント外れなんですが、それでも自分の手持ちの言葉に引き寄せて確かめ直す、という動きだけは、我ながら悪くなかったのかもしれません。
もっとも、これはAIが嫌な顔ひとつせず付き合ってくれたから成立した話です。人間相手なら、とっくに「もういいです」と言われていたはずで。たまたま相手が辛抱強かったおかげで、私の拙い質問の仕方が許されていただけ、というのが実際のところだと思います。
おわりに:結局、最後まで分からなかった
まとめます。AIに「エンジニアが驚く内容ってある?」と聞いたら「ある」と言われ、3つ教えてもらいました。でも、それが本当に驚くものなのか、私には最後まで分かりませんでした。
ただ、ひとつだけ思ったのは、私の質問はどれも「勝手に持って帰ったら嫌われる」「鍵ごと盗まれたら終わり」「機械はいつか壊れる」という、ごく当たり前のことばかりだったということです。それを自分の知っている言葉に置き換えて、ただ素直に聞いただけ。
もしこれが少しでも面白い問いに見えたのなら、それは私の手柄ではなく、たぶん「何も知らない人間の素朴な言葉」を、専門家の世界の言葉に翻訳してくれたAIのおかげなんだと思います。私はこれからも、たくさんの当たり前を、知らないまま聞き続けるのでしょう。