APIを作成する動機

2014年10月11日(土)
Jaroslav Tulach(ヤロスラフ・ツゥラッハ)柴田 芳樹(しばた よしき)

典型的なアプリケーションは、1つか2つのライブラリから構成されることはありません。今日開発されているアプリケーションは、世界中にある多くのオープンソースライブラリを使用しています。オープンソースとして提供されているものには、Unixのようなカーネル、基本Cライブラリ、コマンドラインのツールなどから始まり、ウェブサーバやウェブブラウザ、Ant、Tomcat、JUnit、JavaCCなどの多くのJavaツールへと広がっています。実際、これらのライブラリは、それぞれ独自のAPIを持っています。結果として、そのようなソフトウェアを作成している人は誰もが、認識しているかどうかに関係なく、API設計ビジネスに従事していることになります。

このような組み立て方法というのは、Linuxディストリビューションの一般的な運用モデルです。様々な人々により、Linuxディストリビューションのソフトウェアは書かれています。そして、集められて、パッケージ化され、全部が統合されます。たいていディストリビューション・ベンダが、中心となる管理ユーティリティを作成し、すべての選択されたコンポーネントが一緒にきちんと機能することを確認するための何らかの品質保証を行います。このモデルは、ほとんどベンダとユーザに対してうまく機能しているようですし、ディストリビューションを作成するコストを下げています。このモデルの成功している例として、Mac OS Xは、Apple社による数多くのアドオンを持つFreeBSD Unixディストリビューションであることを指摘しておきます。

分散開発は、独自の特質を持っています。最も明らかな特質は、アプリケーション全体のソースコードは、開発者の完全な管理下にはないことです。世界中に分散しています。このような方法でソフトウェアを構築することは、社内のソースリポジトリ内のソースコードからアプリケーション全体を構築することとは明らかに異なっています。

このモデルでは、製品全体のスケジュールを完全に統制できないことを認識する必要があります。ソースコードだけでなく、開発者も世界中に分散しており、各人のスケジュールで働いており、完全に統制することはできません。しかし、それほど異常でもなく、危険でもありません。50人以上のチームでプロジェクトをスケジュールしようとしたことがあれば、完全に統制するという考えは、せいぜい慰め程度の幻想にすぎないということが分かっています。常に、機能を落とすか、古いバージョンをリリースするかの準備ができていなければなりません。同じモデルが、分散開発でも当てはまります。誰もが持つ基本的権利は、より新しいバージョンのライブラリを使用するか、古いバージョンのライブラリを使用するかについて自由であることです。

実際、オープンソースだけが、優れたAPIへの増大する需要の牽引力ではありません。商用ベンダも多くの共有ライブラリやフレームワークを作り出しています。それらの多くは、SQLなどの既存の標準を実装したり、独自のAPIを提供したりしています。しかし、寛大なライセンス形態を持つオープンソース活動は、再利用可能なビルディングブロックとしてのコンポーネントの主要供給元になってきました。オープンソースによる解決は、利用料金なしで使用するエンドユーザにはよく知られています。しかし、ライセンス制約がないため、開発者にとっても重要となっています。既存のコンポーネントを選んで、自分のアプリケーションの一部として使用することは簡単です。ほとんどの場合、遅かれ早かれそのように利用されます。それは、すべてのオープンソースのコンポーネントは、いずれ、APIを必要とするようになることを意味しています。これらのコンポーネントは、様々な開発者により開発され、独自のプロジェクトを始めた大学生、独自のおもちゃプロジェクトを開発している経験の長い開発者、オープンソース形式の開発をビジネスチャンスと見なしている会社で働いて給与をもらっている開発者などです。これらの人々は、様々なスキルを持ち、様々な働き方をしています。とにかく、優れたAPIを作り出すことは重要です。なぜなら、APIは、ライブラリの無知な利用のための最初のステップだからです。多くのライブラリやフレームワークを持てば持つほど、それらは良くなっていきます。しかし、無知な利用が成功するためには、APIがライブラリの本質的な真意をきちんと反映していることがいつも重要です。それが、API設計が重要である理由であり、この本を執筆した重要な動機の1つです。

この記事のもとになった書籍
APIデザインの極意 Java/NetBeansアーキテクト探究ノート

Jaroslav Tulach 著/柴田 芳樹 訳
価格:3,200円+税
発売日:2014年05月23日発売
ISBN:978-4-8443-3591-7
発行:インプレスジャパン

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

なぜ、設計の良くないAPIを持つソフトウェアが量産されるのでしょう。エンジニアが良いAPI・悪いAPIについて分かっていない、あるいは、適切なレビューを受けていないからかもしれません。本書では、NetBeansアーキテクトの著者が遭遇してきた様々な誤りを解説し、APIの発展を考慮した設計について詳しく説明。あまり語られることがなかったAPI設計について、貴重な10年間の経験をベースに幅広くノウハウを披露。API設計の技術や知見の水平線を押し広げることができる稀有な一冊です。

Amazon詳細ページへImpress詳細ページへ

著者
Jaroslav Tulach(ヤロスラフ・ツゥラッハ)
NetBeansの生みの親で、初期のアーキテクト。NetBeansは当初、Java統合開発環境として開発され、現在はJavaScript・Ruby・PHP・C/C++などにも対応。今も、オープンソースプロジェクトで開発が続けられている。著者は、NetBeansを支える技術の生みの親として、このオープンソースプロジェクトの成功に貢献。現在も、プログラマーの設計スキルを向上させる新たな方法を探求しつつ、このプロジェクトに参加している。
著者
柴田 芳樹(しばた よしき)
1959年生まれ。九州工業大学情報工学科で情報工学を学び、1984年同大学大学院で情報工学修士課程を修了。以来、様々なソフトウェア開発に従事。ゼロックス社のパロアルト研究所を含め、5年間米国に駐在してソフトウェア開発に携わる。現在はソフトウェア開発、教育、コンサルテーションなどを業務としている。 本書の翻訳を担当。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています