C++のためのAPIデザイン1章(1)

C++のためのAPIデザインを読んで,自分なりにまとめ,
学んだこと・思ったことなどを書いていく.

1日1章が目標だけど,今日は1章の半分だけ.

APIとは】
特定のサービスを他のソフトウェアに提供する入念に定義されたインターフェースである.

APIは仕事の請負人であり,利用者は請負人が持っている専門知識を必要としない.
利用者はやりたいことを決めて複数の下請けに仕事を回すことにより,目的のものを完成させることができればそれで良い.

API設計の特殊性】
APIは開発者向けのインタフェースであり,
公開されたインタフェースはどのような使い方をされるかはわからない.
利用者が多ければ,おそらく自分の想定をはるかに
超えた使われ方をされるのは間違いないだろう.
多様なユースケースを想定し,入念に設計されたAPIは優秀な財産となるが,
お粗末なAPIは延々とバグ修正に追われることとなるので,
設計をしっかりと行わなければならない.

APIは多くのソフトウェアに組み込まれるため,後方互換性が大切となる.
例えば,あるAPIが更新されたことにより,今までそのAPIを使用していた
コードのコンパイルが通らなくなった場合,
そのAPIを利用しているソフトウェア全てのコードに修正が必要となる.
また,挙動が変わることによって多くの混乱を招くのは言うまでもないだろう.

変更に際しては,APIの変更レビューが有効.
その変更が許容範囲内なのか,変更の理由が正当であるかどうか,
レビューが通らないかぎり変更ができないようにするプロセスを
用意することで,APIの品質を保証することができる.

APIの寿命は長く,保守にコストもかかる.
ドキュメントの整備,テストの自動化などによって
それらのコストを下げる努力が必要である.

と言った感じのことが書かれていた(自分が思ったことと,書かれてることを次回からは分けてかけるようになりたい).
この章の内容はまだC++専門って感じではなくて,あらゆる言語についても使えそうな
一般的な"API"についての解説が中心なようだ.