コンピュータコーナー

結城さんちの本屋さん

結城浩

結城が実際に読んでおもしろかったコンピュータの本を紹介しています。 自分の本も含んでいます。

目次

Perl言語

結城浩のPerlクイズ

無料のメールマガジン『Perlクイズ』を書籍に編集しなおした本。 結城が課題を出し、読者はそのプログラムを書きます。 つまり、同じ処理を行うプログラムを、たくさんの人が書くことになります。 解答を読み比べると「ずいぶんさまざまな表現ができるものだ」と、 あなたもきっと驚くことでしょう。

出題のレベルは、 とても易しいものからとても難しいものまで取り混ぜ、 ビギナーからエキスパートまで楽しめるようになっています。

Perlクックブック

Perlで○○したいんだけれど、というときに読む本。 もちろん「Perlの鉄人」がどんな風にスクリプトを書くのかというサンプル集として読むのもよい。

Perl言語プログラミングレッスン 入門編

Perlの入門書。Perlと言えばCGIに使っている方も多いと思いますが、それだけに使うのはもったいない。Perlの強力なテキスト処理能力はきっとあなたの助けになるはず…。ということで、この本では基本からスタートして正規表現もきちんとお話しています。Perlで分かりにくい「コンテキスト」の概念にも一章を割いています。ちょっと厚めですけれど、さくさく読めますよ。

Java言語

改訂版Java言語プログラミングレッスン (上)

Java言語の入門書。プログラミングをするのはこれが初めて、という読者を想定し、Java言語の基礎からオブジェクト指向の基礎までを身につけることを目標にしています。書店にはJavaに関する多くの本が並んでいるので、どれを読んだらいいのか途方にくれてしまうことがあります。そういうときにはこの本を開いてみてください。これからJava言語をはじめて学ぶ方も、再挑戦する方も、頭を整理したい方も、本書で一歩一歩進んでください。本当に理解しつつプログラミングを学ぶ面白さがあなたに伝わることと思います。上巻は、変数やif文などの本当に基本的な話を中心に展開します。

改訂版Java言語プログラミングレッスン (下)

Java言語の入門書。プログラミングをするのはこれが初めて、という読者を想定し、Java言語の基礎からオブジェクト指向の基礎までを身につけることを目標にしています。下巻はクラス・インスタンス・例外・スレッドなどの話を中心に展開します。本書は「オブジェクト指向」を学ぶ本でもあります。本書の具体的なプログラミングと解説を通して、「なるほど、そういうことなのだ」と心から納得してオブジェクト指向を学んでください。

Effective Java プログラミング言語ガイド

Javaのプログラマが学ぶべきよい習慣、API設計の観点などについて解説した本。 入門書ではないので、初心者向けには書かれていない。 Effective C++の形式にならい、身に付けるべき内容を項目ごとに整理している。 結城が特に参考になったのは「例外」の設計について。 (Checked)Exceptionをどういうときに使うか。 RuntimeExceptionをどういうときに使うのか。 また、既存のライブラリで定義されている例外をどう活用するのか。 などについてすっきりと整理している。 内容は濃いが、値段の割に薄い本なので、 書店で確認してから購入することをお薦めします。

パターン

オブジェクト指向における再利用のためのデザインパターン

Gang of Four(GoF)と呼ばれる4人の人が書いたデザインパターンの「原典」。簡単にデザインパターンというものを説明しましょう。プログラムを設計・開発しているとき「繰り返し登場するパターン」があることを多くの人が感じています。デジャビュのような「以前同じようなことをやったことがある」という感覚ですね。言い換えればそれは設計者・開発者の「経験」ということになるのですが、デザインパターンというのは、そのような経験に名前をつけてカタログ化し、利害得失を検討して整理したものです。GoFの23個のデザインパターンはその代表的なものになります。

増補改訂版Java言語で学ぶデザインパターン入門

本書は、デザインパターンというものをやさしく解説した本です。 デザインパターンの原典に登場する23個のパターンすべてについて、 Java言語によるサンプルプログラムをつけています。

学べるのは、デザインパターンだけじゃありません。 特にインタフェースや抽象クラスについての理解を深めたい方には最適。

増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編

Java言語のサンプルプログラムを通して、 マルチスレッドと並行処理に関するパターンを学ぶ入門書です。 マルチスレッドのプログラムでは、 シングルスレッドのプログラムでは起きないようなバグが生まれます。 マルチスレッドのプログラムをデバッグすることは難しく、 現象を再現させることすら困難な場合もあります。 マルチスレッドのプログラムでは、 いきあたりばったりにプログラミングするのではなく、 よく使われるパターンを適用することが大切なのです。

プログラムデザインのためのパターン言語

Pattern Languages of Program Designで紹介されたパターンから有用なものを選択して翻訳したパターン集。 Part1の「汎用設計パターン」では、単純だが役に立つパターンを紹介。 Part2の「分散・並行化設計パターン」では、複数のオブジェクトが複雑に絡む、分散処理や並行処理に関するパターンを紹介。 そしてPart3の「組織・工程パターン」では設計の内容から少し離れ、プロジェクトの工程や組織化に関するパターンを紹介。 内容は興味深く示唆に富むが、理解しやすいパターンと非常に難解なパターンが混在していて、読み通すのはなかなか大変だろうと思う(結城もまだ全部は読み通していない)。-- ちなみに、この本の中で、いちばん簡単で分かりやすく有用なパターンは、Part 1の「空オブジェクト」(Null Object)パターンだろう。

The Pattern Almanac 2000

パターン年鑑。

Web / HTML

ウェブユーザビリティの法則

短い。 私は書店から帰ってくる電車の中30分ほどで半分を読み、帰ってからの30分で残りを読みました。 話がわかりやすくて具体的。 理屈や統計ではなく偉大なる「常識」を働かせる工夫に満ちています。 Krugのユーザビリティの法則(その1)は「ユーザに考えさせるな」というもの。 デザイン上の判断に迷うときには、 ユーザが一瞬でも考え込まずにすむような方向に倒すようにとのこと。 ユーザビリティの専門家をやとわず、ユーザビリティ・ラボなんか使わない、 本当に有効なテストの方法についても書かれている。 実際のユーザビリティテストの様子を、 サンプルとして映画のシナリオのように読ませてくれるのも面白い。 そうそう、この本そのものが「ユーザビリティ」が高いんですよ。 翻訳も自然で、とてもよいです。

ユニバーサルHTML/XHTML

HTML, XHTML, スタイルシート(CSS)の入門書。 正確で読みやすく、かつ、単なるマニュアルにとどまらない。 Webで情報を構成し、発信するための基本姿勢まで学べる本。 「HTMLの書き方なんてWebで勉強すればいいのさ」と思っている方にお薦めします。

その他

C言語による最新アルゴリズム事典

圧縮、暗号、コンピュータグラフィクス、ソート、検索…。 アルゴリズムやプログラミング技法、用語などを50音順に解説した参考書。 C言語のソースコード付きで分かりやすい。

オブジェクトハンドブック〈2002〉

オブジェクト指向に関する用語集&パターン集。 多岐にわたる情報がコンパクトにまとまっている。 オブジェクト指向に関係する技術者が、自分の知識をチェックしたり、 「あれってどうだっけ?」と思い出したりするのに使う。 ただし、プログラミング初心者向けの本ではない。

リファクタリング

機能を変えずにコードを整える方法。 「もう少しプログラムを整理したいな」と思うことがある。 現在それには「リファクタリング」という名前がついている。 でもリファクタリングはなかなか管理職には理解してもらえない。 プログラムをいじるなら、機能アップしろ、機能が変わらないような修正をするんじゃない。 動いているものをいじるな。といわれがちだ。 しかし、機能アップする前にリファクタリングすることは重要。 それによってコードの見通しがよくなり、拡張性もよくなる。 潜在的なバグまで見つかってしまう。 リファクタリングという名前が生まれる前から、ベテランのプログラマはこれをやってきていたのではあるまいか。

ハッカーズ大辞典

ハッカーの教養。

関連リンク

豊かな人生のための四つの法則