memoメモ

最近はGo言語関連で。φ(..)メモメモ

Book「APIデザインの極意」

APIデザインの極意 を、この本の訳者の @yoshiki_shibata さんがレビューを募集していたので応募してみました。

手にとって中身をパラパラとみてみると、文字がぎっしり。本はEffective Javaより多少分厚いくらいですが、中の情報量がもの凄いです。このレビューを出すのが遅くなってしまった理由でもあります。

中には、APIをデザインする上で、何を考え、どうしておくべきか、どうしてこうするべきか、するとどうなるのか、なにに失敗したのかがしっかりと書かれています。コードはそれほど多くありません(最後は除く)が、Javaの知識があると背景をつかみやすいと思います。説明はNetBeansの開発経験などを元にした内容で書かれていますが、他に適用できる話が多いです。全てを読むには根気が要ると思いますので、何人か集めて読書会をするのもいいと思います。

簡単に中を紹介すると、第2部では、Effective Javaに続くような話があり、Effective Javaを読んだ方は是非読んでおくことをおすすめします。 第3部では、はじめの13章で軽く息抜きをしてから、APIを公開、維持する際の話がメインになります。APIは公開以前と公開以降では全く異なる性質を持つようになります。

以下、気になった所のメモを少し:

  • 無知な利用が成功するためには、 APIがライブラリの本質的な真意をきちんと反映していることが重要。2章より。
  • APIは自己文書化されている必要があり、つまりドキュメントが無くても使えるようにしておく必要がある。2章より。
  • APIは公開するものが少ないほどよい。ユースケースに確信が持てないときは公開しない。5章より。
  • 単一のAPIで構成されるライブラリはほとんどない。APIが対象としている複数の目的と複数のグループが存在する。ユーザの必要性に合わせてAPIを構成すべし。8章より。
  • テスト容易性を考えずにフレームワークを作成することは、開発者を不快にさせる。9章より。
  • API設計に問題がなく期待通りうまく運用されていれば「何も」起きない。「何もない」ことが大きな成功であることを示すことは難しい。14章より。

昨今APIをめぐるこんなトラブルもあり、今後のAPI設計の方向性が心配ですが、良いインターフェースの定義は広く使われるようになって欲しいですね。日本語で読めるようになったこの本でAPI設計に関する先人の知恵を読んでおくことをおすすめします!

APIデザインの極意 Java/NetBeansアーキテクト探究ノート

APIデザインの極意 Java/NetBeansアーキテクト探究ノート

EFFECTIVE JAVA 第2版 (The Java Series)

EFFECTIVE JAVA 第2版 (The Java Series)