APIデザインケーススタディ―Rubyの実例から学ぶ。問題に即したデザインと普遍の考え方
本書に寄せて
プログラミングについてご存じない方は,我々プログラマの仕事は一日中コンピュータに向かって作業する「非人間的」なものだと思っていらっしゃる方も多いようです。どうも私の妻もそのように感じているようです。しかし,実際問題として,我々の仕事のうち大半はデザインであり,一番重要なのは,さまざまな技術的制約がある中で,ソフトウェアのユーザが何を期待しているのか,そのデザインを利用する時にどのように感じるか,などの人間的,心理的要素についての考察だったりします。本来,プログラマは他の職業と同様に,あるいは場合によってはそれ以上に人間の内面と向き合わねばならない仕事なのです。
本書が取り上げているRubyも例外ではありません。むしろ「楽しいプログラミング」をお題目に掲げているプログラミング言語であるRubyにとっては,そのデザインにおいて心理的側面を重視することは必然と言っても良いでしょう。そのような言語デザインがあるからこそ,Rubyが広く受け入れられ,世界中で使われるようになったのです。本書の著者である田中哲さんは,これまでにRubyの各部に関して設計上のさまざまな提案をしてこられた方です。田中さんがRubyという言語について与えてきた影響は計り知れません。田中さんの細部まで検討された提案や,設計に関する深い洞察はいつも感銘を与えますし,他のコミュニティメンバーの設計にも影響を与えています。その田中さんがAPIデザインについて語られる本書は,ソフトウェア設計全般について多くのことを学ぶことができる一冊になること疑いなしです。
本書を手に取られた方には,「言語の設計が私のソフトウェア設計に何の役に立つのか」と疑問に思われる方もいらっしゃるかもしれません。しかし,言語とは本質的にインターフェースであり,ソフトウェアデザインの本質も人間とコンピュータの間のインターフェースです。APIのIもインターフェースですし。本書が教えてくれるのは,ソフトウェア設計全般につきものの,「人間の持つ暗黙の仮定」や「技術的制約のもとでの最善の選択」などです。それは,言語に限定されず普遍的なデザイン原則です。
Ruby普及の立役者であり,著名なソフトウェアコンサルタントである「達人プログラマー」Dave Thomas氏はかつてこのように言いました。「ソフトウェア開発は,そのアプリケーション専用のドメイン特化言語を開発する過程である」と。つまり,プログラミング言語のデザインは,多くのプログラマにとって遠く離れたことのように感じられるかもしれませんが,実際にはプログラマの日常と本質的にそう変わらないことなのです。
本書の語るAPIデザインの原則が,みなさんのソフトウェア開発に役立つことうけあいです。