[論文レビュー] API Beauty is in the eye of the Clients: 2.2 Million Maven Dependencies reveal the Spectrum of Client-API Usages
本研究では、94の代表的なJavaライブラリを対象に、Mavenの依存関係220万件を分析し、ほとんどのAPIタイプが少なくとも1つのクライアントによって使用されている一方で、使用頻度の高いクライアントの大部分を占めるのは少数のコアタイプであることが明らかになった。この結果は、ハイラムの法則(すべての観察可能な振る舞いは使用される)と実証的観察との間にあるパラドックスを解消する。使用度のスケーラビリティのスペクトルが存在する:ほとんどのAPIは最小限にしか使われないが、クライアント数が十分に増えると、まれな要素即ち使用頻度の低いAPIタイプに対しても採用が進む。この知見により、APIメンテナスはコア要素の維持・ドキュメント化に優先的に注力できるようになる。
Hyrum's law states a common observation in the software industry: "With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody". Meanwhile, recent research results seem to contradict this observation when they state that "for most APIs, there is a small number of features that are actually used". We investigate this seeming paradox between the observations in industry and the research literature, with a large scale empirical study of client API relationships in one single ecosystem: Maven Central. We study the 94 most popular libraries in Maven Central, as well as the 829,410 client artifacts that declare a dependency to these libraries and that are available in Maven Central, summing up to 2.2M dependencies. Our analysis indicates the existence of a wide spectrum of API usages, with enough clients, most API types end up being used at least once. Our second key observation is that, for all libraries, there is a small set of API types that are used by the vast majority of its clients. The practical consequences of this study are two-fold: (i) it is possible for API maintainers to find an essential part of their API on which they can focus their efforts; (ii) API developers should limit the public API elements to the set of features for which they are ready to have users.
研究の動機と目的
- ハイラムの法則(すべての観察可能な振る舞いは使用される)と、実際には少数のAPI機能しか使用されないという研究結果との間にある、表面的矛盾を解消すること。
- Maven Centralという大規模かつ現実世界のエコシステムにおいて、クライアント-API使用パターンのスペクトルを調査すること。
- 一般的に使用されるAPI要素に注力することで、APIメンテナンス作業とサポート対象クライアント数のトレードオフを特定すること。
- API開発者に対して、公開表面積を縮小しつつも広範なクライアント互換性を維持するための実用的知見を提供すること。
- APIのタイプのわずかな部分集合を維持するだけで、大多数のクライアントをサポートできるかどうかの可能性を検討すること。
提案手法
- 2018年9月時点のMaven依存関係グラフ(MDG)から、829,410件のクライアントアーティファクトおよび5,225件のライブラリバージョンを収集した。
- 静的バイトコード解析を実施し、宣言された依存関係とランタイムでのAPI使用を区別して、実際のAPI使用を同定した。
- 各APIの全バージョンにわたる使用パターンを分析し、累積的な使用度を特定した後、最も人気のあるバージョンに焦点を当てた。
- 「Core_n」として、n%のクライアントをサポートするために必要な最小限のAPIタイプの集合を定義し、消滅シーケンスを用いて影響度を測定した。
- 統計的分析を用いて、94のライブラリ全体で、ゼロ人、少数、大多数のクライアントによって使用されるAPIタイプの割合を定量化した。
- 3名の研究者が手作業によるレビューで結果を検証し、再現可能性を確保するため、すべてのデータとコードをオープンソース化した。
実験結果
リサーチクエスチョン
- RQ1Maven Centralにおける宣言された依存関係のうち、実際にランタイムでのAPI使用に繋がる割合はどの程度か?
- RQ2最も人気のあるライブラリバージョンにおいて、少なくとも1人のクライアントが使用するAPIタイプはどれくらいの数があるか?
- RQ3どの程度のAPIタイプの割合が、クライアント使用の大部分を占めているのか。また、これはライブラリごとにどのように変化するか?
- RQ4APIのタイプのわずかな部分集合を維持するだけで、大きな割合のクライアントをサポートできるか?
- RQ5リフレクションや動的呼び出しの存在が、静的解析によるAPI使用検出の正確性にどのような影響を与えるか?
主な発見
- 宣言された依存関係の41.13%は、バイトコードレベルで実際のAPI使用に繋がっていない。これは、宣言とランタイム使用との間に顕著なギャップがあることを示している。
- 各ライブラリの最も人気のあるバージョンにおいて、すべてのパubリックAPIメンバが少なくとも1人のクライアントによって使用されている。これは、ハイラムの法則がスケールで裏付けられていることを確認している。
- 94のライブラリの半数以上において、APIタイプの12%で75%のクライアントをカバーできる。これは、頻繁に使用されるコア要素が明確に存在することを示している。
- gson:2.3.1のようなライブラリでは、全APIタイプ162個をサポートする必要から、90%のクライアントをカバーする目的に特化すれば、20個(12%)のタイプにまで削減可能になる。
- クライアントベースが十分に大きくなると、まれなあるいは特殊なAPIタイプに対しても、少なくとも1人のクライアントが採用するようになる。これはハイラムの法則を支持する。
- クライントコードにおけるリフレクションの頻度は低く(メソッドの0.47%未満)、この文脈では静的解析が実際のAPI使用検出に信頼性があると考えられる。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。