『APIデザインの極意』を読んだ。メイントピックは2つ。APIの選択的無知と後方互換性。詳細に立ち入らなくても使えることと、安心して使い続けられることの重要性について綴られている。
全3部構成になっていて、第1部「理論と正当性」は動機付け。選択的無知と後方互換性の重要性について語られている。第2部「実践的設計」がその手段。デザインパターンほどには抽象化されていないけれど、NetBeansのアーキテクトを務めた著者が解説とともに例示してくれていて、参考になりそう(あまり読み込めていない)。第3部「日々の生活」は、プラクティカルにはどうしていくか? という話がメイン。それから、将来の展望について。
現時点で理解できたのは一部だったけれど、いろいろな実践例が示されていている。覚えておきたいことがいくつもあった。
でも読んでいて感じたのは、何を作るにしても、APIを使うだけなんてことはないということ。作っているのがフレームワークやライブラリじゃなくても、使っているライブラリにラッパー(DDDの「腐敗防止層」、GoFの"Adapter"あるいは"Façade")を被せることだって立派なAPI設計だ。何を作るにしても、API設計を全くしないなんてことはなさそうだ。
全3部構成になっていて、第1部「理論と正当性」は動機付け。選択的無知と後方互換性の重要性について語られている。第2部「実践的設計」がその手段。デザインパターンほどには抽象化されていないけれど、NetBeansのアーキテクトを務めた著者が解説とともに例示してくれていて、参考になりそう(あまり読み込めていない)。第3部「日々の生活」は、プラクティカルにはどうしていくか? という話がメイン。それから、将来の展望について。
現時点で理解できたのは一部だったけれど、いろいろな実践例が示されていている。覚えておきたいことがいくつもあった。
ライブラリのほとんどのユーザは、ライブラリ内で何が行われているかほとんど分かっていません、そうあるべきなのです。
ライブラリのAPIを「もっと優れた」ものにしたいと思う願望があります。(中略)しかし、最初のリリース後は、既存のAPIクライアントのコードを機能させなくなる問題よりも重要になることはありません。ライブラリを作るだけでなく、使う時にも参考になる。ライブラリのユーザとしての視点から、将来的に機能しなくなるリスクが大きくなる使い方も読み取れる。
でも読んでいて感じたのは、何を作るにしても、APIを使うだけなんてことはないということ。作っているのがフレームワークやライブラリじゃなくても、使っているライブラリにラッパー(DDDの「腐敗防止層」、GoFの"Adapter"あるいは"Façade")を被せることだって立派なAPI設計だ。何を作るにしても、API設計を全くしないなんてことはなさそうだ。
隣の部屋の同僚が使用するクラスを1つ書いたとしても、APIを実際に作成していることになります。