2008/05/20

APIのユーザビリティ

ファクトリー ファクトリー ファクトリーでAPIのユーザビリティについて書いてあって非常に興味深かった。

Microsoftが実際にやっているらしい。C#のライブラリが使いやすい理由の一つにこんな理由があったとは。

最近Javaの冗長性が無駄かどうかでReader系の話があったが、あの当時オブジェクト指向といえば、SmallTalkやら、C++やら、アカデミックな世界から現場の一般人がオブジェクト指向を使い出したころ(だったような気がする)であって、使いやすさよりも純粋な(?)オブジェクト指向を貫こうとした結果だったんじゃないかなと。

FileもStreamにする抽象化とか、そのStreamでエンコーディングを指定したいならInputStreamReaderでReaderでラップすることによって文字列として扱うとかそれはそれで綺麗なつくりだと思う。綺麗なつくりと使いやすい抽象化は別であって、このAPIのユーザビリティという観点になるんだろうなぁ。最近のLLからの流れはまさしくJavaと違うTasteをもつ人なんだろう。

この記事で言っているとおりTasteは時代によって/使う人によって移り変わるので、UnmanagedCodeみたいない低レベルも使えつつFile.openで開けるみたいなラッパーを提供しているC#の設計もなるほどとうなずける。

しかし、このAPIのユーザビリティという観点は面白い。Commonsとかのライブラリ設計にも是非取り込んで欲しいし、自分の仕事で拡張性を考えるときの一つの観点として使いやすさという項目も考えたいなと思った。

# どうでもいいけど、Refrectionとか、動的定義は黒魔術だと思っている。
# 一撃必殺でライブラリとか閉じた範囲で使う分には良いけど。
# ある程度の規模の開発でみんながみんな使うのは混乱の元だと思う。

0 件のコメント: