- コラム
技術書のヨミカタ #3 実践的な読み方
技術書を読むと知識として頭に残りますが、実務で使えるレベルにするには「手を動かす」ことが不可欠です。書籍に掲載されているサンプルコードを実際に動かしたり写経したりする方法や、エラーの調査、環境構築など、実践的な読み方について解説します。
サンプルコードを動かす
野球選手はボールを投げたりバットを振ったりすることを繰り返して上手くなります。楽器の演奏も楽譜を眺めるだけで上手くなるわけではなく、料理もレシピを見るだけで上手に作れるようにはなりません。
システム開発でも同じで、本を読むだけではプログラムは作れるようになりません。このため、まずは書籍のサンプルコードを動かすために環境を整えることから始めます。環境の違いでうまく動かないと学習のモチベーションに影響するため、再現性の高い環境を作ることが重要です。
そして、実際にプログラムを動かして、実行結果をもとに挙動や出力の意味を確認します。動かす際には「何を確かめたいか」「どこまで確認したいか」といったことを考えながら練習を繰り返すことで、スムーズにプログラムを作れるようになります。
理解を深めるための「写経」と「改造」
プログラムを動作させるとき、サンプルコードをコピー&ペーストして実行する方法があります。たとえば、TechLibでは書籍中のソースコードを簡単にコピーできます。サンプルがどんな動作をするかを確認したいときには便利です。
ただし、コピー&ペーストしているだけでは、応用力は身につきません。理解を深めるためには、まず自分でソースコードを入力することが大切です。このような方法は一般に「写経」と呼ばれ、あまり効率が良いとは思えないかもしれませんが、自分で入力することで「テキストエディタがどのような補完をするか」「入力ミスがあったときにどのようなエラーが出るか」を確認できます。
また、入力して正しく動作することを確認した後に、自分なりの機能追加などの変更を加えることも有効です。パラメータを変えて結果の変化を確かめたり、関数を分割して保守性を意識したりすることで、変更による影響を実感できます。このような変更を小刻みに実施し、変更後には実行して結果を確かめることで、変更による変化を把握できます。

▲「TechLib」では、本文を表示させ、画面右上の「本文コピー」を右にスライドさせて緑色の状態にすることで本文コピーができるようになる(※一部書籍で不可のものもあり)。コピーした本文をテキストエディタやメモ帳などに貼り付け、改行やスペースなど体裁を整よう。コピー機能も使えば、紙を書籍に記載されたサンプリコードをイチから写経するよりかなり効率的に作業ができる。
エラーの調査
プログラムを作成したときは、問題なく動作することを確認しますが、このような確認の工程としてテストやデバッグがあります。プログラムの挙動を正確に理解するためには必須のスキルですが、初心者にとってどのような問題が起きているのかを調べるのはけっこう大変です。
たとえば、ログにエラーメッセージが表示されていても気づかない、エラーメッセージの意味が理解できない、エラーメッセージを理解してもどう修正してよいかわからない、といった状況が発生します。
このとき、まずデバッグに必要なログなどの確認方法を把握します。それに加えて、デバッグに必要な内容を適切な量と質で出力する必要があります。処理の開始や終了などのタイミングのほか、不具合の原因に関わりそうな変数の選択など、実行の流れや異常箇所を特定に必要な項目を出力します。
そのうえで、出力されたログをもとに調査します。一般的なツールが出力するログは、エラーメッセージなどをインターネットで検索することで原因や対処法を調べられることも多いですが、信頼性の高い情報を探すときに書籍は便利です。頻繁に発生するエラーメッセージであれば、TechLibから検索するだけで多くの書籍がヒットします。たとえば、「command not found」のようなエラーメッセージで検索すると、多くの書籍がヒットすることがわかります。

▲「command not found」で「TechLib」を検索すると非常に多くの書籍がヒットする。

▲検索結果から「全ての検索語句を含んでいる」と表示された「C言語逆引きハンドブック」を開いた画面だが、「全ての語句」だけでなく、一部語句を含むページを含めて、左ペインにページ内で検索された結果が一覧表示された。
環境構築の工夫
書籍を読むときには、著者と読者の環境を合わせることが重要です。書籍は発行されてから時間が経つにつれて、使っているソフトウェアがバージョンアップするなどによって環境が変わってくるものです。
このとき、書籍に書かれている通りに動作しない状況が発生することは珍しくありません。そこで、初心者が学ぶときは、問題が発生して再現できない状況になるよりは、できるだけ著者の環境に合わせることも有効です。
たとえば、環境を構築するときにDockerなどの仮想環境を用意し、バージョンを合わせることが挙げられます。これにより、再現可能な環境をコードで管理できれば、自分の環境でしか動かないような状況の発生を防ぎ、スムーズに学べます。
また、書籍を読んだときに、自分で環境を構築したときの手順をメモとして残しておく、もしくは環境構築の手順を自動化するために、Makefileなどを作成しておく方法もあります。
重要なのは、継続して学習するために、できるだけ手軽に環境を用意できるようにすることです。環境構築に時間がかかると試すことも億劫になりますが、短い時間で「動かす→改造→確認」を繰り返すことができれば学習効果が高まります。
次回、第4回はいよいよ最終回、「学びの定着と整理」、そして「次の一歩」についてです。どうぞお楽しみに!
著者:増井敏克

技術士(情報工学部門)、ビジネス数学検定1級、TechFeed公認エキスパート。#センイチブックスにて棚主。テクニカルエンジニア(ネットワーク、情報セキュリティ)、その他情報処理技術者試験にも多数合格、「ビジネス」×「数学」×「IT」を組み合わせ、コンピュータを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発を行っている。
ビジネス数学検定1級に合格し、公益財団法人日本数学検定協会認定トレーナーとしても活動している。
著書
『「技術書」の読書術』翔泳社
『ITエンジニアのフリーランス独立戦略 前職やエージェントに頼らない働き方』インプレス
『プログラマ脳を鍛える数学パズル』翔泳社
『プログラミング言語図鑑』ソシム
『RとPythonで学ぶ統計学入門』オーム社
『もっとプログラマ脳を鍛える数学パズル アルゴリズムが脳にしみ込む70問』インプレス
『図解まるわかりデータサイエンスのしくみ』翔泳社 …など
SNS / 開発プラットフォーム
X:https://x.com/masuipeo
Instagram:https://www.instagram.com/masuipeo
GitHub:https://github.com/masuipeo