Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

付録 用語集

本文を読み進める途中で立ち止まりやすい言葉を、短くまとめる。厳密な定義を尽くすためではなく、読み直すときの足場にするための用語集である。

アジャイル

最初にすべてを決めきるより、短い単位で作って見せ、変化に対応しながら進める考え方の総称。計画を捨てるという意味ではなく、最初の計画だけで最後まで押し切れるとは考えない、という姿勢に近い。第3章で触れた XP(Extreme Programming)は、その代表的な実践の一つで、小さく作る、すぐ確かめる、変えやすく保つ、といった作法を強く押し出した。本文では「どうせ仕様は変わる」という前提を受け止める言葉として使っている。

オープンソース

ソースコードを公開し、読む・直す・配ることを可能にする考え方や、その形で公開されたソフトウェア。実務では、公開された開発のやり方や協業の仕組みまで含めて指すことも多い。第6章では「自由」の文脈で扱っているが、同じ章で出てくるフリーソフトウェアとまったく同じ言葉ではない。重なる部分は大きいが、フリーソフトウェアが使う人の自由を強く押し出すのに対し、オープンソースは開発の開かれ方や実務上の利点を前に出しやすい。

コメント

コードの外側に書く説明文。本文では、何をしているかの説明をコメントに頼りすぎると、コードと食い違いやすいと述べた。理由や背景を書くときに強い。たとえば「この変数は未払い請求書です」のように名前で書けることまでコメントに任せると、コードを直したときに置いていかれやすい。逆に「なぜこの回り道を選んだのか」「なぜ一見おかしな処理が必要なのか」のように、コードだけでは出てこない事情を書くなら役に立つ。第2章では、名前とコメントの役割を分けて考えるための足場として使っている。

CORBA(Common Object Request Broker Architecture)

異なるコンピュータやプログラム同士を共通のやり方でつなごうとした、重厚な分散システムの標準。Object Management Group(OMG)が標準化を進めた。第9章では、Web の軽さと対比するための例として使っている。

GNU(GNU's Not Unix)

リチャード・ストールマン(Richard Stallman)が始めた、誰でも使え、読み、直し、配れるソフトウェアを作ろうとするプロジェクト。名前は GNU's Not Unix の略で、Unix に似た自由なシステムを作ろうとしたことを示している。第6章では、ソフトウェアの「自由」を考える中心として出てくる。ここでいう自由は無料という意味ではなく、使う人が中身を読み、直し、配れることを指す。Linux だけを見ていると見えにくいが、その前から積み上がっていた思想と道具の流れを辿る入口が GNU である。

HTTP(Hypertext Transfer Protocol)

Web で文書やデータをやりとりするときの約束ごと。ティム・バーナーズ=リー(Tim Berners-Lee)らが Web とともに形にしていった。ブラウザがサーバーに「これをください」と頼み、受け取るための基本の仕組みである。第9章で大事なのは、HTTP が高度な魔法ではなく、比較的単純な約束ごととして広まった点だ。複雑な共通基盤を先に整えなくても、「頼む」「返す」が共有できれば世界中で使えた。その軽さが、Web の広がりを支えた。

HTML(HyperText Markup Language)

Web ページの骨組みを表す書き方。ティム・バーナーズ=リー(Tim Berners-Lee)が Web の文書のために考えた。見出し、段落、リンクなどを文書に印として埋め込む。第9章では、HTML が高機能だから勝ったというより、文書に最低限の意味づけを与える単純な形式だったから広がった、という点が重要になる。最初の Web は、豪華なアプリケーション基盤ではなく、まず文書を結びつける仕組みとして始まった。

JavaScript

Web ページに動きを与えるために広く使われるプログラミング言語。ブレンダン・アイク(Brendan Eich)が考案した。第9章では、Web の上に積み重なった要素の一つとして触れている。

KISS(Keep It Simple, Stupid)

できるだけ単純に保つべきだという考え方。第1章では、複雑さを増やしすぎないための注意として出てくる。何でも単純化すればよい、という意味ではなく、必要以上に込み入った作りにしない、という戒めに近い。将来に備えるつもりで過剰な仕組みを足しはじめると、かえって手を入れにくくなる。そのとき立ち戻る言葉が KISS である。

DRY(Don't Repeat Yourself)

同じ知識やロジックを無意味に重複させない、という考え方。第1章では、複雑さを増やしすぎないための注意として出てくる。ここでいう重複は、単に文字列が二回出てくることではなく、同じ知識を別々の場所で持ってしまうことに近い。片方だけ直してもう片方を忘れると、そこから不整合が生まれる。ただし、まだ意味の違いが見えていない段階で無理にまとめると、逆にほどけなくなる。DRY は万能の圧縮呪文ではない。

REST(Representational State Transfer)

Web の軽さを生かした、比較的単純なやりとりの設計スタイル。ロイ・フィールディング(Roy Fielding)が博士論文の中で整理した。第9章では、重い分散標準と対比される。難しく見えるが、この本で押さえたいのは「ものごとに住所を与え、その住所へ取りに行く」という素朴さである。巨大な共通基盤を前提にせず、公開された単純な約束ごとでつなぐ。その軽さが Web の広がりと相性がよかった。

Rails(Ruby on Rails)

Ruby on Rails の略。デイヴィッド・ハイネマイヤー・ハンソン(David Heinemeier Hansson)が作った、Ruby で Web アプリケーションを作りやすくするためのフレームワーク。第9章では、Web の上にあとから積み重なった土台の例として出てくる。HTML、HTTP、ブラウザのような公開された約束ごとが先にあったから、その上で Rails のような道具も育った。つまり Rails 自体が Web を作ったのではなく、開かれた Web の上で開発を速くする道具として広まった。

リファクタリング

外から見た動きを変えず、コードの内側の形だけを整えること。名前を直す、重複を減らす、絡んだ処理を分ける、といった手入れがこれにあたる。大事なのは、見た目や気分の問題ではなく、次の変更を安全に入れやすくするための整え直しだという点である。ゼロから作り直すこととは違い、動きは変えないまま少しずつ形を良くしていく。第3章では、変化に耐える設計を支える手入れとして扱っている。

レビュー

書いたコードを別の人に見てもらい、理解や改善点を分かち合うこと。第5章では、属人化をほどくための文化として扱った。目的は相手の粗をすべて暴くことではなく、一人の頭の中にしかない知識を外へ出すことにある。だから、言い方や場の作り方も大事になる。攻撃の場になると人は見せなくなり、見せなくなると知識はまた閉じこもる。プルリクエストは、この見せ合いを日常の手続きにした形の一つである。

YAGNI(You Aren't Gonna Need It)

まだ必要になっていない機能を、先回りして作り込まないという考え方。第1章では、複雑さを増やしすぎないための注意として出てくる。「将来あるかもしれない」を理由に仕組みを増やすと、その瞬間から抱えるものも増える。もちろん先の変更を考えなくてよい、という意味ではない。変更しやすい余白を残すことと、来るかどうかもわからない機能を実装しておくことは別である。YAGNI は、その線を見失わないための言葉だ。