技術書のサンプルコードが動かないときの対処法
この記事は約 6 分で読めます。
サンプルコードが動かないのは「あるある」
技術書のサンプルコードを打ち込んで実行したら、エラーが出て動かない。初心者にとってこれほど心が折れる瞬間はありません。「自分のやり方が間違っているのか」「この本がダメなのか」と不安になります。
安心してください。技術書のサンプルコードが一発で動かないのは、むしろ普通のことです。原因はほぼ決まっていて、対処法も確立されています。
原因 1: バージョンの違い
最も多い原因です。本が書かれた時点のライブラリやフレームワークのバージョンと、あなたの環境にインストールされているバージョンが異なると、API の変更や非推奨化によってコードが動かなくなります。
対処法
まず、本の「はじめに」や「環境構築」の章に記載されているバージョンを確認します。多くの技術書は、使用した言語やライブラリのバージョンを明記しています。
次に、自分の環境のバージョンを確認します。python --version、node --version、ruby --version など、言語ごとのコマンドで確認できます。
バージョンが異なる場合、2 つの選択肢があります。
- 本と同じバージョンに合わせる:
nvm、pyenv、rbenvなどのバージョン管理ツールを使えば、複数のバージョンを共存させられます - 最新バージョンのまま、変更点を調べて修正する: ライブラリの公式ドキュメントの「マイグレーションガイド」や「CHANGELOG」に、API の変更点が記載されています
初心者には 1 の方法をおすすめします。本の内容に集中するために、環境は本と揃えるのが最も確実です。
ただし刊行から時間が経った本では、指定されたバージョンがそのままではインストールできないことがあります。サポートが終わっているバージョンには修正されていない不具合や脆弱性が残るため、学習用に閉じた環境で使う分は割り切るとしても、そこで書いたコードを業務のコードへそのまま持ち込まないようにします。
原因 2: 写し間違い
手で打ち込む場合、タイプミスは避けられません。特に以下の文字は間違いやすいです。
0(ゼロ) とO(オー)1(イチ) とl(エル):(コロン) と;(セミコロン)'(シングルクォート) と`(バッククォート)- 全角スペースと半角スペース
対処法
エラーメッセージが指す行番号の前後を、本のコードと 1 文字ずつ照合します。面倒ですが、これが最も確実です。
プログラミングの入門書の多くは、出版社のサイトからサンプルコードをダウンロードできます。手入力で動かない場合は、ダウンロードしたコードと自分のコードを差分比較 (diff) してみてください。
原因 3: 環境の違い
OS の違い (Windows / macOS / Linux)、パスの区切り文字 (\ と /)、改行コード (CRLF と LF)、文字エンコーディング。これらの環境差異がエラーの原因になることがあります。
対処法
本が想定している OS を確認し、可能であれば同じ OS で試します。Docker を使えば、OS の違いを吸収できる場合もあります。
パスの問題は、エラーメッセージに「file not found」や「No such file or directory」が含まれていれば疑ってください。
原因 4: 本の誤植
技術書にも誤植はあります。特にコードブロック内の誤植は、読んでいるだけでは気づきにくく、実行して初めて発覚します。
対処法
出版社のサイトで正誤表を確認します。多くの出版社は、読者からの報告を受けて正誤表を公開しています。「書名 正誤表」で検索すれば見つかります。
正誤表は刷ごとに分かれていることがあります。手元の本の奥付で刷を確認し、自分の刷で修正済みなのか未修正なのかを見てから照合します。
正誤表にも載っていない場合は、本の GitHub リポジトリ (あれば) の Issues を確認します。同じ問題に遭遇した読者が報告していることがあります。
エラーメッセージは敵ではなく味方
エラーメッセージを読む習慣をつけてください。「エラーが出た」で思考停止するのではなく、メッセージの中身を読めば、原因の 8 割は特定できます。
特に以下の情報に注目します。
- エラーの種類:
SyntaxErrorなら文法ミス、ImportErrorならモジュールの問題、TypeErrorなら型の不一致。名前は言語ごとに違いますが、種類を見れば原因の見当が付くという性質は共通です - 行番号: 報告される位置はエラーが表面化した場所で、原因を書いた行とは一致しないことがあります。括弧やクォートの閉じ忘れは、閉じ忘れた行より後ろでエラーになりがちです。スタックトレースが出る言語では、並んだ呼び出しのうち自分が書いたファイルが最初に現れる行を探すと、手を入れる場所が絞れます
- エラーメッセージの英文: そのままコピーして検索すれば、同じ問題の解決策が見つかることが多いです。自分のファイルパスや変数名、実行ごとに変わる ID は検索語から外します。これらが混ざっていると、同じ原因の事例に当たらなくなります
関連記事
まとめ
技術書のサンプルコードが動かない原因は、バージョン違い、写し間違い、環境差異、誤植の 4 つに集約されます。エラーメッセージを読み、バージョンを確認し、正誤表をチェックします。この順で当たれば、ほとんどの問題は自力で解決できます。動かないコードと格闘する時間は、実はエンジニアとしての問題解決力を鍛える貴重な学習機会でもあります。
この記事は役に立ちましたか?
関連用語
関連記事
本を読む前にパソコンの準備をしておこう
プログラミングの本を読み始めてから「環境構築ができない」と詰まる人が多いです。本を開く前にやっておくべき準備を、初心者向けにわかりやすく説明します。
本に出てくるサンプルコードは動かしてみよう
本に載っているサンプルコードは、読むだけでなく実際に動かすと理解度が段違いに上がります。動かし方のコツと、うまくいかないときの対処法を紹介します。
本に書いてあることが古くても学べることはある
プログラミングの世界は変化が速く、本の内容がすぐ古くなると言われます。でも、古い本からでも学べることはたくさんあります。何が古くなり、何が古くならないのかを解説します。
本を読んだらすぐパソコンを開こう
プログラミングの本を読んだら、すぐにパソコンを開いて手を動かしましょう。読むだけでは身につかない理由と、読んだ直後にやるべきことを紹介します。
技術書の情報が古くなったときの対処法
技術書の内容が古くなったときの対処法を紹介。古くなる部分と古くならない部分の見分け方、購入前の鮮度チェック方法を解説します。
エラーメッセージを読めるエンジニアは何が違うのか
エラーが出たときに冷静に原因を特定できる人と、パニックになる人。その差は経験だけでなく、読んできた本の種類にあります。デバッグ力を支える読書の傾向を分析します。