本書には先人プログラマー達の知恵が詰まっている

もっとスマートで、もっと速く、もっと改造しやすいソースコードを書くために、先人プログラマ達は試行錯誤を続けてきた。本書はそのようにして作り上げられてきたプログラミングの"セオリー(定石)"をまとめたものである。セオリーには、より良いプログラムを書くためにはどうしたらいいかというヒントが含まれており、うまく活用できるようになればプログラミングのスキルは格段に上昇する。

一方で注意しなければならないのは、ひとつのセオリーがどんなプログラムでも有効に働くというわけでもないということだ。どんな場合に使えばどんな効果が期待できるのか。また、なぜそれが良いとされているのか。セオリーの中身だけでなく、それを適用する上でのヒントも学ぶことができるのが本書の特徴である。

著者の矢沢氏も冒頭で「納得のできるセオリーだけを活用してください」と書いている。本書で紹介されているセオリーでも、状況によっては現実的でなかったり、首を傾げざるを得ないような例が含まれている。セオリーとは教えられた内容を鵜呑みにするのではなく、原理をよく理解した上で使うことが重要だという前提を忘れてはいけない。

リファレンスとしても使えるケース別の章構成

本書は、以下に挙げるケース別に分類された8つの章から構成される。

  • Chapter1: 書式のセオリー
  • Chapter2: 変数と演算のセオリー
  • Chapter3: 制御構造のセオリー
  • Chapter4: 関数のセオリー
  • Chapter5: ポインタのセオリー
  • Chapter6: 速く、小さく、わかりやすくするセオリー
  • Chapter7: オブジェクト指向のセオリー
  • Chapter8: エラーとデバッグのセオリー

Chapter1にはソースコードの書き方や変数名の付け方など、いいプログラムを書くためのセオリーがまとめられている。Chapter2ではデータ型の区別や初期化に関する注意、演算子の優先順位が、Chapter3では制御構文の使い方に関する注意などが紹介される。Chapter4は関数を定義する際のテクニックである。

Chapter5から先は内容が少し高度になってくる。まずはポインタに関するセオリー。ポインタは初心者にとっては理解しにくく、正しく使いこなすのが難しい。本書ではポインタを理解するためのコツや、バグを防ぐ方法などが紹介されている。Chapter6はプログラムを最適化するためのテクニックであり、正しく使いこなすことでプログラムの処理効率やメモリサイズを大幅に軽減できるだろう。

Chapter7はオブジェクト指向のセオリーとなっているが、これは何もオブジェクト指向言語のみを対象としたものではない。C言語などでも、オブジェクト指向の考え方を導入することで一歩進んだプログラミングができることを教えている。最後はエラーやデバッグに関するセオリー。デバッグの能力は経験に基づく部分が大きいため、先人の知恵を学ぶ意義は特に大きい。

各章の中はさらにテーマごと分けられており、最初に必ずサマリーとしてその節で紹介されるセオリーの概要が記載されている。したがってまず目次から気になるセオリーを探し、サマリーを読めば、どのようなケースで使えるセオリーなのかが把握できる。必要な部分からピンポイントで学んでいくことができるようよく配慮されていると感じた。

学習を効率的に進められるよう構成にも配慮されている

実践的な状況を幅広いレベルに渡ってカバー

本書で紹介されるセオリーは、実際の開発で遭遇しやすい問題を想定しなが幅広い状況をカバーしているのがら特徴だ。章構成の分類は前述のように状況別になっているが、あえて内容で分類するならば、どんな場面でも有効な基本的なものと、ある程度のプログラミングレベルを想定したテクニカルなものに分けられると思う。

前者は書式や命名規則、メンテナンス性、演算子や制御構文の使い分けなどに関するセオリーで、これらはどんな状況でも大抵適用できるものである。したがって今日の開発からでもすぐに使い始めることができるだろう。

一方、ポインタに関するものや演算効率やコードサイズの最適化につながるようなものは、ある程度のプログラミング知識が前提となる。このようテクニカルなセオリーを使う場合には要注意だ。セオリーを自分のものにするためにはただ使えばいいというわけではなく、なぜそれが有効なのかを理解し、どのような場面で使えるのかを判断できなければならない。本書は単にセオリーを列挙するだけでなく、内部の構造を理解するためのヒントも記述されているので、よく読んで"使い間違い"をしないように注意することが重要だ。解説自体は非常に丁寧に噛み砕いて書かれているので、プログラミング初心者でも安心して読むことができるだろう。

C言語/Javaによるシンプルなサンプルコード

本書のもうひとつの特徴は、サンプルとして掲載されているソースコードが非常にシンプルで分かりやすい点である。そのほとんどが半ページ以下、長くても1ページ程度であり、気軽に打ち込んで試してみることができる。またこのサイズのプログラムならば、プログラミング初心者にとっても容易に理解できるはずだ。

プログラミング言語としては主にC言語とJavaが取り上げられており、それに加えて少しだがC#の例が含まれている。ただし、多くのセオリーは言語に依存しないで活用できるものなので、サンプルコードは理解の手助けという位置づけでとらえるのがいいだろう。

冒頭でも述べたように、セオリーとは決して万能なものではない。しかし正しく使いこなせばプログラミングのレベルを大きく向上させることができる。自分なりのセオリーを見つけるためのヒントにもなるだろう。そういう意味で本書は単なるケーススタディ本ではなく、スキルアップのための手助けになるものと言えるだろう。

プログラミングのセオリー プログラムの価値を高める"定石"を学ぶ

矢沢久雄 著
技術評論社発行
2008年10月4日発売
A5判 328ページ
ISBN 978-4-7741-3628-8
定価2,499円(本体2,380円)