Javaや.NETを始めとするフレームワークやライブラリは、非常にたくさんのAPIを持つものが多い。たぶん、それなりの必然性があったり、バージョンアップを重ねる毎に、より使いやすい形に機能強化されてきた結果だと思うのだけど、JavaDocやMSDNのAPI資料にはその難易度のようなものが何も記載されていないので、開発の現場では「本質的に似たような処理を、相異なるAPIを使って実装している」ケースが良く見受けられる。

もちろん「そのレベルを合わせるのがプロジェクトリーダの仕事だよ、キミ」という指摘はその通りなのだけど、なんせAPIの使い方を知るために、いきなりGoogleで検索をかけてしまう開発者が少なくないのだ。あまり使われないようなマニアックなAPIを引っ張り出してきて使う開発者がいたり、たまたま掲示板で見かけた「上手いテクニック」なる方法を使う開発者がいたりするので事態はややこしい。そんな面倒なAPIの使い方なんて知っていても、大して自慢出来るようなものでは無いように思うのだが。

例えば、英語の辞書のように「初級者レベル」というレベル分けの印をAPIの資料に記載出来ないものだろうか。日本語の漢字だって「常用漢字」なる一定のカテゴリ分けが存在するから、日常的に何の不便もなく意思疎通出来るけれど、これが存在しなかったらこんなブログにも無茶苦茶難しい漢字が乱れ混じっているかも知れない。やっぱり「使えるものは何でもかんでも使ってしまえ」と濫用するより、ある一定の歯止めが必要ではないかと思っている。

特にチームで開発を進める場合、全員が同じ知識を持って作業にあたっているとは限らないので注意が必要だ。ややこしいAPIを使う場面が必要になったら、経験者がその機能をラップする処理を用意して誰もが同じレベルで使えるように工夫するとか、「このAPIは使用禁止」と静的解析ツールでチェックする必要があるかも知れない。自分が使えるのだから他人も同じように使えて当然だ、と思い込むのはかなり危険だ。全て1人で作るのなら何をどのように使おうと勝手だけど、チーム開発で必要なのは全員の理解を同じレベルに保つための気配りであり、チーム全体としての意思統一だと思う。

関連