第0章 レッスン07

エラーと友達になる(doctor入門)

このレッスンでできるようになること: エラー文の見るところ(3点セット)と、よく出る5つの型がわかる。まず自分で「たぶんこれが原因」と1行で見立ててから、相棒の doctor に答え合わせを頼める。良い質問の渡し方(貼る前のマスキングを含む)が身につく。 所要時間: 45〜60分

再開する人へ: ①ターミナルを開く → ② cd ~/fde-dojo で教材フォルダに移動 → ③前回の続き(このレッスンは前回 04 で入れた Claude Code を使います)。

このレッスンの位置づけ — 難所の前に、相棒を手に入れる

ここまでで、ターミナル・Git・Claude Code という道具がそろいました。この先の 06(Git を使う)・07(Node.js を入れる) は、インストールや操作で少し詰まりやすい区間です。

そこで、その難所に入るに、詰まったときの相棒を先に手に入れておきます。それがこのレッスンです。エラーは「越えられない壁」ではなく、対処の順番を知っているかどうかの差でしかありません。順番さえ持っていれば、たいていのエラーは通り抜けられます。今日はその順番を、安全なうちに身につけます。

AI がいるのに、なぜ自分で読むのか

「エラーは doctor に丸ごと投げれば済むのでは?」と思うかもしれません。でも、まず自分で一目見て見立てる練習をします。理由は2つです。

  • doctor は「答え合わせの相手」であって、「代わりに読む人」ではありません。 自分で1行でも見立ててから渡すと、診断がぐっと速く・正確になります。何も見立てずに投げ続けると、読む力がいつまでも育たず、相棒が隣にいないと動けなくなってしまいます。
  • とはいえ、わからないときは即座に頼っていいのがこの相棒のいいところです。見立ては「勘で1行」で十分。当てるゲームではありません。

この回のスキル切り替え: エラー文を貼ると doctor(環境診断・トラブルシュート)が起動します。理解の締めでは gatekeeper を呼びます。

エラー文の解剖 — どこを見るか

エラー文は、あなたを責めているのではありません。「どこで・何が起きたか」を教えてくれる手がかりです。英語で長く出るので身構えますが、見るところは決まっています。だいたい次の3点セットでできています。

ターミナルに出たエラー文を、①誰が言っているか・②何が起きたか(核心)・③どこで起きたか、の3点で注釈した読み方の図

  • 読む優先順位は ② → ① → ③。核心は「② 何が起きたか」の行(多くは Error: などで始まります)で、②の1行で原因の見当が9割つきます。
  • ③の at ... の羅列は「事件現場までの経路」です。今は読めなくて正常です。コードを書くようになると、宝の地図に変わります。
  • エラー文は消さない・要約しない・そのまま渡す。doctor や将来のあなたにとって、原文がいちばんの手がかりです。「なんかエラーが出ました」だけでは、名医でも診断できません。

キーワードを拾う

②の行は英語ですが、キーワードだけ拾えば見当がつきます。よく出るものを覚えておくと、読むのが一気に楽になります。

英語のキーワードだいたいの意味
not found / no such file名前・ファイルが見つからない
permission / denied許可がない(権限の問題)
cannot / unableできない(何かの理由で)
already in useすでに使われている(重複)
unexpected / SyntaxError書き方が壊れている
undefined / null中身が無いものを触った
timeout / refused外とつながらない

固有名詞と共通部分を切り分ける

エラー文には、あなたの環境だけの固有名詞(自分のユーザー名・自分のパス・数字)と、誰の環境でも共通の部分が混ざっています。この2つを切り分けると、検索するときも質問するときも効きます。

  • 例: Error: Cannot find module '/Users/taro/fde-dojo/hello.js'/Users/taro/... は固有名詞。共通部分は Cannot find module
  • 検索するときは共通部分だけを使います(固有名詞ごと検索すると、同じ悩みの人が見つかりません)。
  • 人に見せるときは固有名詞に注意します(後述のマスキング)。

エラーの5つの型

よく出るエラーは、だいたい次の5つの型のどれかに収まります。型がわかると「まず何を疑うか」が決まり、闇雲に悩まずに済みます。表で覚えます(分類なので図より表が探しやすいです)。

よく出る文まず何を疑うか
① 名前が見つからないcommand not found打ち間違い → PATH(ターミナル開き直し)→ そもそも未インストール、の順
② モノが見つからないNo such file / Cannot find moduleいる場所が違う(pwd で確認)→ 名前の打ち間違い
③ 許可がないPermission denied / EACCES権限。過去に sudo で環境を壊した名残を疑う(自己流の sudo は打たない)
④ 書き方が壊れているSyntaxError / unexpected記号の閉じ忘れ、全角の引用符やスペースの混入
⑤ 外とつながらないtimeout / connection refusedネットワーク。会社なら社内プロキシ・セキュリティソフトを疑う

③の「まず何を疑うか」について: sudo(管理者権限で実行)を自己流で付けると、その場は動いても環境の持ち主が入れ替わり、あとで別のエラーの原因になります。権限で詰まったら、自分で sudo を足さず doctor に相談してください。

やってみよう — 見立ててから、答え合わせ

このレッスンの練習には、きまった作法があります。

作法: エラーが出たら、①まず自分で一目見て「たぶんこれが原因」と勘で1行メモする → ②そのあとで doctor に答え合わせを頼む。当てるゲームではありません。「わからない」でもOKです。

各ステップで、まず予測(2択)をしてから実行します。予測は下の折りたたみのに自分で決めてから、折りたたみを開いて答え合わせをしてください(開く=答え合わせ)。

ステップ0: 作法の宣言

まず、上の作法を声に出して一度言ってみてください。「見立ててから、答え合わせ」。これだけで、エラーへの向き合い方が変わります。

ステップ1: 名前が見つからない(打ち間違い)

普通のターミナルで、わざと打ち間違えます(claude を起動中なら、いったん Esc を数回押してから、入力欄で exit で抜けてください)。

noed --version

予測(先に決める): これは5つの型のうち、どれになると思いますか?

  • A: ① 名前が見つからない
  • B: ④ 書き方が壊れている
答え合わせ(開くと出ます)

A(① 名前が見つからない) です。command not found: noed(Windows では「認識されません」系)が出ます。パソコンは怒っているのではなく、「noed という名前の道具はこの環境にありません」と報告しているだけです。正しくは node ですが、node はまだ入れていないので、直すのは 07 のお楽しみです。

達成状態: command not found(または「認識されません」)が表示されること。計画どおりのエラーです。

ステップ2: モノが見つからない(場所違い)

今度は「今いる場所」を確かめてから、わざと存在しないファイルを一覧しようとします。まず今いる場所を表示します(pwd は表示するだけの安全なコマンドです)。

pwd
ls tashikani-nai-file.txt

予測: ls(一覧)に存在しないファイル名を渡すと、どうなると思いますか?

  • A: 何も言わずに成功する
  • B: ② モノが見つからない、系のエラーになる
答え合わせ

B です。No such file or directory(そんなファイルはありません)が出ます。②の型の「まず疑うこと」は場所でした。pwd で今いる場所を確かめ、目的のファイルがある場所(多くは cd ~/fde-dojo)にいるかを見るのが、②の第一手です。

達成状態: No such file(またはそれに相当する日本語)が表示されること。

ステップ3: 書き方が壊れる(全角の罠)

未経験者がいちばんハマるのが、全角の引用符やスペースの混入です。日本語入力のまま記号を打つと、見た目は似ていても別の文字になり、④の型のエラーになります。

ここでは Claude Code に体験させます。claude を起動して、入力欄にわざと全角のカギ引用符を混ぜて、こう打ってみてください(「」 は全角、ls はそのまま)。

「ls」と打ったのに動きません、なぜですか?

これは Claude Code への相談なので壊れません。返事の中で「その 「」 は全角の引用符で、ターミナルは半角の記号しか受け取れない」という趣旨の指摘が出るはずです。

予測: 同じことをもしターミナルに直接全角引用符付きで打ったら、型は?

  • A: ④ 書き方が壊れている
  • B: ⑤ 外とつながらない
答え合わせ

A(④ 書き方が壊れている) です。全角の引用符・全角スペース・全角の丸括弧は、SyntaxError や「予期しない記号」系のエラーの常連です。コマンドがうまく動かないときは、入力が半角になっているかを早めに疑ってください。

達成状態: Claude Code から「全角の記号が原因」という趣旨の説明が返ってくること。

ステップ4: 3つとも、自分で見立てを書く

ここが今日の山場です。ステップ1〜3で出した3つのエラーについて、自分の見立てを3行書きます。書き先は、第0章を通して育てているメモ workspace/ch0/setup-notes.md です。

エディタでメモを開きます(無ければ作られます)。

  • macOS: open -e workspace/ch0/setup-notes.md(「開けない」と出たら先に touch workspace/ch0/setup-notes.md
  • Windows: notepad workspace\ch0\setup-notes.md

次の形で、型の番号と、疑うところを1行ずつ、自分の言葉で書いてください(勘でOK)。

- L05 noed --version → 型①(名前が見つからない)。noed は打ち間違い、正しくは node
- L05 ls 存在しないファイル → 型②(モノが見つからない)。場所かファイル名を疑う
- L05 全角「」 → 型④(書き方が壊れている)。半角に直す

達成状態: setup-notes.md に、3つのエラーそれぞれの「型+疑うところ」が3行ぶん書けていること。中身は自分の言葉でよく、上の例と一字一句同じである必要はありません。

ステップ5: doctor に「答え合わせ」を頼む

書けたら、claude を起動して(すでに起動中ならそのまま)、doctor に答え合わせを頼みます。貼る前に一度、後述のマスキングを確認してから、こう頼んでください。

doctorスキルで答え合わせをお願いします。第0章の練習で、わざと3つのエラーを出しました。
私の見立ては次のとおりです(型と疑うところ):
(さっき setup-notes.md に書いた3行を貼り付け)
この見立て、合っていますか?外していたらどこが違うか教えてください。

達成状態: 3つの見立てについて「合っている/ここは少し違う」という答え合わせが返ってくること。当たっていたかどうかより、「自分の仮説と、どこが合ってどこが外れたか」を自分の言葉で言えることが、このステップのゴールです。外れていたら、それが今日いちばんの収穫です。

ステップ6: 1箇所だけ変えて、1箇所だけ戻す

エラーが出たとき、一度にあれこれ変えると、どれが効いたのか分からなくなります。だから「一度に1つだけ変える」を体に入れます。

まず、動くと分かっているコマンドを確認します(03 で入れた Git を使います)。

git --version

バージョン番号が出れば、これが「動いていた状態」です。

次に、ここからわざと2箇所壊します。

gti --versionn

gti(① 名前の間違い)と versionn(余分な n)の2箇所を変えました。当然エラーになります。ここで、1箇所ずつ直します。まず名前だけ直す:

git --versionn

予測: 名前を直しただけで、成功しますか?

  • A: これで成功する
  • B: まだ versionn が残っているのでエラーのまま
答え合わせ

B です。git は正しくなりましたが、--versionn という余分な n が残っているため、まだエラーになります(git が「そんなオプションは知りません」と言います)。ここで残り1箇所を直すと成功します。

残りの1箇所を直します。

git --version

達成状態: またバージョン番号が出ること。「動いていた → 1つ変えて壊れた → 1つずつ戻したら、どこが原因か分かった」という一周ができました。この「一度に1つだけ」は、この先ずっと効くコツです。

動いていた状態から1箇所だけ変えて壊れたとき、その1箇所を戻すとまた動く、という原因の切り分けの流れの図。コツは一度に1つだけ変えること

助けの求め方 — 良い質問の渡し方

自分で見立ててもわからないときは、遠慮なく頼ります。ただし、渡し方で診断の精度が大きく変わります。次の項目をセットで渡すと、doctor でも人間のサポートでも、当たりが速くなります。

  • ① やりたかったこと(例: バージョンを確認したかった)
  • ② 打ったコマンド(例: git --version と打った)
  • ③ エラー文の全文(消さず・要約せず、そのまま。貼る前にマスキング一目、下記)
  • ④ 自分の見立て(例: たぶん型①、名前の打ち間違い)
  • ⑤ 試したこと(例: ターミナルを開き直した)
  • ⑥ 環境(macOS か Windows か)

逆に、「なんか動かない」「エラーが出た」だけでは手がかりが足りません。**「何をしたら、何が出たか」**をセットで伝えるのが、良い質問の芯です。

声に出して説明してみる(ラバーダック): 人に説明するつもりで、状況を声に出して1回言うだけで、貼る前に自分で気づくことがよくあります。「git --version を打ったら…あれ、gti になってる」——これで解決することも珍しくありません。

貼る前のマスキング(一目チェック)

エラー文を doctor や公開の場に貼る前に、一目だけ次が混ざっていないか見てください。混ざっていたら伏せ字にします。

  • 鍵らしき長い文字列sk-... / ghp_... などのトークン・API キー)→ 貼らない・伏せる。
  • 社内システム名・社内のホスト名→ 伏せる。
  • 絶対パスに含まれる自分のユーザー名/Users/taro/...)→ 気になれば /Users/<ユーザー名>/... に。

もしチャットに鍵らしき文字列を貼ってしまったら、その鍵は無効化(revoke)して再発行してください。鍵本体はチャットに残さないのが正しい扱いです。

3回試して直らなければ、止めて相談

同じエラーに3回対処しても直らなければ、粘りすぎずに止めてください。環境固有の問題である可能性が高く、一人で抱えるとつらくなるだけです。教材の配布ページに記載の報告窓口へ、上の①〜⑥(マスキング済み)をそえて相談しましょう。気軽に聞けること自体が、続けるコツです。

理解ゲート

Claude Code でこう打ってください。

gatekeeperスキルで、第0章レッスン07の理解ゲートをお願いします

聞かれることは、おおむね次の2つです(自分の言葉で答えられればOK。暗記ではありません)。

  1. エラーが出たとき、それがどの道具の問題か(ターミナル・Claude Code・これから入れる git / node のどれか)を、どう切り分けますか?
  2. エラー文の3点セット(②何が→①誰が→③どこで)を、図に描いて家族に説明するつもりで話してください。

うまくスキルが動かない場合は、上の2問に声に出して答え、 の図と見比べて自己採点してください(その不具合自体、doctor に診てもらう良いネタです)。

セーブポイント

  • エラーの5つの型を、見ないで3つ言える
  • 良い質問の項目(①やりたかったこと〜⑥環境)を思い出せる
  • まず自分で見立て → 次に doctor で答え合わせ、の順を守れた
  • setup-notes.md に、今日の3行の見立てが残っている

今日はここで区切ってOKです。次に開くときは、冒頭の「再開する人へ」から戻ってきてください。

よくある詰まり

症状原因と対処
doctor の説明が、自分の見立てと違ったそれが一番の学びです。「自分はどう考えて、実際はどうだったか」を setup-notes.md に1行残すと、次に活きます
コマンドを打っても、何も表示されずに終わる成功したコマンドは無言でプロンプトに戻ることがよくあります(ls で空フォルダを見たときなど)。無言=失敗ではありません
doctorスキルがうまく発動しない「doctorスキルで」と明示しても普通の返事しか来ない場合、そのまま「このエラーの原因と直し方を未経験者向けに教えて」と聞けば、実用上は同じ助けが得られます
ターミナルでエラー文をコピーできないmacOS: 選択して command + C。Windows: 選択して Ctrl + C または右クリック(PowerShell は選択して右クリックでコピーされることがあります)
会社PCで一部コマンドがブロックされるセキュリティソフトが実行を止めることがあります。エラー文(マスキング済み)ごと情シスに相談を。学習用途である旨を伝えるとスムーズです
3回試しても直らない粘りすぎずに止めて、配布ページの報告窓口へ。良い質問の①〜⑥をそえて相談してください

次は レッスン08 Gitを使う(add・commit・restore) へ。ここからは、詰まったら遠慮なく doctor に相談しながら進めて大丈夫です。

最終確認日: 2026-07-24