「おもしろい技術書」

no extension

またまた Bluesky で見かけたネタだが,「おもしろいと思った技術書教えてください」に対する結城浩さんの回答が面白かった。

そういや,子どもは夏休みに入ってるんだよね。 読書感想文に悩む季節ですなぁ。 これは度々書いてるけど,私は小学生の時に学習参考書の読書感想文を書いて,市のコンクールで賞をもらった男です。 どやっ!

というわけで,個人的に面白いと思った技術関連本をいくつか挙げてみる。 子どもが読んでも全然構わないけど,たぶん子ども向けではないのであしからず。

K&R

結城浩さんの回答にもあった『プログラミング言語C』がこれ。

thumbs
プログラミング言語C - 共立出版
Brian W.カーニハン 著
 
Release 1989-06-15
評価     

[Comment] 通称 “K&R”。初版当時のプログラマには「バイブル」と呼ばれた名著。現在は ANSI 準拠の第2版。

Powered by linkcard

原著者の頭文字を取って “K&R” と呼ばれたりする(著者のひとりである Dennis M. Ritchie さんは C 言語の作者でもある)。 現在は C 言語の規格バージョンも ISO/IEC 9899:2024 (C24) まで進み K&R よりも優れた技術参考書がたくさんあるが,当時は国際規格すらなく C 言語の教科書と言える本は殆どこれだけで,それ故に「バイブル」などと呼ばれてもいた。

私は真面目にプログラミングを習ったのが IT 業界に入ってからで1 しかもアセンブラからの入門だったので,初めて C 言語を習ったときは「なんて素晴らしい言語なんだ」と感動したものである。 特に感動したのがポインタ演算。 たとえば char 型のポインタ変数をインクリメントしたときと short 型のポインタ変数をインクリメントしたときで,ポインタ値の増分が異なるんだよ。 凄くね!

同じく Brian W. Kernighan さんによる『カーニハンのUNIX回顧録』に C 言語が誕生した経緯や『プログラミング言語C』執筆当時の話が載っている。

デニスに本作りに関わってもらうようにしたことは,私の技術的な経歴において最も賢明で,あるいは最も幸運なことだった。デニスが共著者となり,彼のリファレンスマニュアルを含めることができたため,本は信頼のおけるものとなったのである。

[…]

本文のテキストは何度も互いにやり取りしたため,二人の文体は融合しているが,リファレンスマニュアルは,デニスの文章の純粋な見本として,ほぼ元あったままにした.この部分は,かつてビル・プラウガーが評した「ぞくぞくするような精密さ」をもって言語を解説している.リファレンスマニュアルは,Cそれ自身のように,正確で,洗練され,簡潔である.

プログラミング言語の技術参考書を探すときに苦労するのが,言語の使い方を解説したものは多くあるのに言語そのものを解説した本は少ないということだ。 どんな言語であれ,プログラミング言語にはそれぞれ作者の思想が根底にあり,それに基づいて言語仕様上の制約が課せられている。 これを理解しないと次のステップ(イディオムとかライブラリ・フレームワークとか)に進めないと思う。

プログラミング言語 Go

thumbs
プログラミング言語Go - 丸善出版 理工・医学・人文社会科学の専門書出版社
明解で効率的なプログラムを描くための書。 柴田 芳樹 訳
 
Release 2016-06-15
評価     

[Comment] 著者のひとりは,あの “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。と思ったら絶版状態らしい(2025-01 現在)。復刊を望む!

Powered by linkcard

著者の一人は前節で紹介した Brian W. Kernighan さんである。 Go 言語そのものについて丁寧かつ誠実に書かれた良書であるが,残念ながら内容が古くなってしまった。 しかも日本語版は絶版状態らしい。 改訂版の予定はないとのこと。

Go 言語は非常にシンプルな言語で,いまだに言語固有のキーワード(予約語)が25個で変わらない。

The following keywords are reserved and may not be used as identifiers.

break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var

言語仕様全体も1枚の Web ページに収まる分量である。 言い方を変えると,このシンプルさ(を保つこと)こそが Go 最大の制約なのである。

私は仕事では様々なプログラミング言語を変遷しているが「母国語」と言えるものは C 言語だった。 でも Go 言語を知って以降「母国語」が Go 言語になった。 五十路に入って「母国語」が変わるとかそうそうないだろう。

そうなったのも『プログラミング言語Go』の影響が大きいと思っている。 そのくらい私にとってインパクトのある本である。

デザインパターン本

thumbs
Java言語で学ぶデザインパターン入門第3版 | SBクリエイティブ
「GoF」の『デザインパターン』で紹介された23個のパターンを、オブジェクト指向の初心者にもわかるようにやさし
 
Release 2021-11-13
評価     

[Comment] なんと! 結城浩さんのデザパタ本の第3版が出た。古典的な GoF のデザインパターン23個はそのままに,最近の Java の言語仕様に合わせてコードが一新されている。

Powered by linkcard

いわゆる Gang of Four(GoF)による古典的なデザインパターンを解説した本である。 ちなみに,結城浩さんのデザパタ本にはマルチスレッド編もある。

原典の翻訳本もあるが,結城浩さんの著書はどれも平易な文章で読みやすくお勧めである。

Java を前提に書かれているが,もちろん他の言語でも応用できる。 デザインパターンでググったら様々な言語で実装している例が見つかると思う。

ただし古典なだけあって,今では使わないほうが良いとされるパターンがあったり,言語によっては実装が難しいものもある。

先日『実用 Go言語 第2版』の読書会

なお、昔は GoF のデザインパターンに取り上げられたこともあり、テンプレートメソッドパターンが王道とされてきましたが、このパターンを使うには、必ずサブタイプを実装しなければなりません。近年では、クロージャやラムダといった要素を備えた言語が増えています。C++ も C++11 からクロージャが使えるようになり、GUI フレームワークの Qt も、関数オブジェクトでハンドラーが記述できるようになりました。このストラテジーパターンへの移行は Go に限らず、プログラミング言語の全体的な流れと言えます。

という記述があって「GoF って知ってる?」という話からデザパタ本の話になった。 デザパタ本って GoF 版をベースにしているせいか出版年がどれも古くて,若い人だと知らなかったりするんじゃないだろうか。

とはいえ Iterator とか Factory とか Proxy とか Decorator とか Adapter とか… 今でもよく目にする(けど初見で面食らう)単語も多いので,読んでおいて損はないと思う。

その他の読み物

これは技術参考書と言うより読み物に近いかな。

thumbs
Clean Architecture 達人に学ぶソフトウェアの構造と設計 | ZEN大学出版会
Clean Architecture 達人に学ぶソフトウェアの構造と設計 について、詳細・ご購入はこちらから
 
Release 2026-07-10
評価     

[Comment] 実務に即効性があるわけではないが,ものの「考え方」を示す本としてはよく出来ている。ソフトウェア技術史の読み物としても面白い。

Powered by linkcard

いつの間にか発行元がZEN大学出版会に変わっとるがな。 ASCII 版は Kindle 版が引き上げられてて絶版になってるのか? 慌てて私の Kindle ライブラリの中を見たが,既に買っているものはまだ見れるようだ。 そのうち読めなくなるのかね。 理工系の本でデジタル版がないとかありえないのだが。

中身は良書。 原著は2017年に出版されている。

「明日から Clean Architecture で実装するぞ」とはいかないと思うけど,ものの「考え方」を示す本としてはよく出来ていると思う。 「構造化プログラミングとかオブジェクト指向とか関数型とかって何?」ってあたりから SOLID などの原則の説明まで一通り網羅されていて用語の勉強にもなるだろう。 回顧録みたいにもなってるので,ソフトウェア技術史の読み物としても面白い。

thumbs
ちょうぜつソフトウェア設計入門 | 技術評論社
SoftwareDesign誌での連載と技術アドベントカレンダー24回ぶんに収まらなかった関連知識を徹底解説。いわゆる「オブジェクト指向」と呼ばれる考え方から発展した分野は、どのようにソフトウェア設計の役に立つのかを、よく知られた原則、テスト駆動開発、デザインパターンなどを通じて理解できる一冊です。上級者には定番の知識を体系的に整理するヒントとして、初級者には可愛いイラストで覚えるキーワード集として、幅広く活用していくことができます。なお、サンプルコードはPHPで書かれていますが、他の言語に置き換えて読めるコードばかりです。PHPを使っているかどうかを問わず、全ての開発者にオススメです。
 
Release 2022-12-07
評価     

[Comment] 祝♪ #ちょうぜつエンジニアめもりーちゃん 単行本化! 絵は可愛いが読み応えあり。「SoftwareDesign」連載分も収録されていて超お得!

Powered by linkcard

𝕏 を見なくなったのだが,めもりーちゃんの更新は細々と行われているようだ。

初っ端がマンガなので面食らうが,中身は割とハード。 技術系の読み物としてお勧めである。 版元でなら PDF で買えるし(←重要)。

前節でちょろんと紹介した Template パターンと Strategy パターンの比較の話も載っている。

ブックマーク

参考

thumbs
カーニハンのUNIX回顧録 - 丸善出版 理工・医学・人文社会科学の専門書出版社
Unixとは何であり,どのように生まれ,なぜ重要なのかを説明する,コンピュータ史上でも特に生産的だった形成期の素晴らしい物語 ブライアン・カーニハン 著
 
Release 2025-09-24
評価     

Powered by linkcard

thumbs
実用 Go言語 第2版
文法はシンプルで学びやすいという特徴を持つGo言語。システム開発の現場でも使われる機会が増えていますが、複雑な要件を実現するにはプログラミング言語が提供するシンプルな構成要素(文法やライブラリ)を、さまざまに組み合わせます。 本書は「よりGoらしく書くには」「実用的なアプリケーションを書くには」といった観点からGoを使うポイントを紹介します。 構造体やインタフェース、またJSON、CSVファイル、Excel、固定長ファイルの扱い方、ログやテスト、環境構築など、また初版の発行後、Goに追加されたジェネリクスについても紹介。現場に即した幅広いトピックについて、「Goらしいプログラムの書き方」を、その背景と共に教えてくれる先輩のような書籍です。
 
Release 2025-12-01
評価     

Powered by linkcard


  1. 最初に入った会社の3ヶ月研修で情報処理1種資格相当の座学とアセンブラと C 言語を叩き込まれた。一応,学生時代に BASIC と Fortran は習ったが,お遊び程度だったと言っておこう。 ↩︎