APIデザインケーススタディ ――Rubyの実例から学ぶ。問題に即したデザインと普遍の考え方
この本の概要
Rubyを題材に,APIデザインの各種事例を取り上げた技術解説書。実用のための言語のAPIデザインには,使いやすさ,一貫性,速度,互換性など,さまざまな点でバランスの良さが求められます。それらの点で,長きにわたり定評がある言語の一つは「Ruby」ではないでしょうか。本書ではRubyの事例をベースに,APIデザインの過程と考え方を丁寧に解説。言語の中核機能を担う「I/O」「ソケット」「プロセス」「時刻」「数,文字列」をカバーし,APIデザインの核心に迫ります。熟達のRubyコミッタによる全面書き下ろし。
本書の構成
本書は,Rubyで実際に行われたデザインを具体的に解説することによって,使いやすいプログラミング言語やライブラリをデザインする方法を述べています。そのため,Rubyのデザイン自体の詳細と,デザインのやり方について知ることができます。
本書は全5章から成り,Rubyの機能のカテゴリ別に分割されています。各章は,個々の機能のデザインを説明する節が並んでいます。
各節は基本的には独立しているので,どこから読んでもかまいません。とくに,その節で述べている機能を使ったことがあるのであれば,理解しやすいでしょう。ただ,関連する話題はなるべくわかりやすいものから連続して並べてあるので,そのようなものは連続して読んだ方が理解しやすいでしょう。
各章は,以下のような内容です。
第1章─I/O
IOクラスのデザインについて,述べています。C言語の標準ライブラリのstdioの問題を多く取り上げています。
第2章─ソケット
ネットワーク通信やプロセス間通信に使われるソケットのデザインについて,述べています。ソケット周りは,OSでさまざまな拡張が行われます。そのような拡張を,Rubyアプリケーションにうまく提供するデザインなどについて取り上げています。
第3章─プロセス
プロセスの起動に関するデザインについて,述べています。低レベルAPIのspawnと高レベルAPIのopen3の話題を多く取り上げています。
第4章─時刻
Timeクラスのデザインについて,述べています。暦や夏時間は人間社会の都合によって定義されるため,ソフトウェアの機能でも人間社会の都合を考慮せざるを得ません。人間社会の都合とソフトウェアの都合をどう折衷させるか,という問題を多く取り上げています。
第5章─数,文字列
数や文字列に関する機能のデザインについて,述べています。数に関して数学的な背景をどうデザインに反映させるか,などといった問題を取り上げています。
目次
- 本書に寄せて
- 本書について
- 本書の構成
- 目次
第1章 I/O
1.01 RubyのIOクラスとC言語のstdioライブラリ ——プログラマが知っている名前を利用する
- FILE構造体とIOクラスの対応
- IOクラス以外のC言語とRubyの対応
- まとめ
1.02 feof関数とIO#eof?メソッド ——過去にEOFに出会ったのか,それとも今現在EOFなのか
- C言語とPascalにおけるファイルの終端
- ユーザにとってわかりやすいファイルの終端
- まとめ
1.03 IOバッファが空でなければsysreadは例外 ——明らかに危険で役に立たない動作は禁止する
- sysreadメソッドの由来
- sysreadメソッドの危険性
- Rubyでは混用禁止
- まとめ
1.04 EOFフラグの除去 ——モードで挙動が変化するのは良くない
- stdioのEOFフラグ
- RubyにおけるEOFフラグ
- EOFフラグの再実装の試み
- まとめ
1.05 0バイト読んだときに何を返す? ——用例を探して良い挙動を判断する
- readメソッド
- read(0)の挙動
- CGIでPOSTされたデータを読み込む
- CGI以外の用法
- 固定長レコード
- 可変長レコード
- 用法を探す
- Rubyの実際の挙動
- まとめ
- 他