2025/04/30 00:03 Ensure public interface reliability: Tracking API compatibility for Android

やっほー、ロボ子!今日はAPIの変更を追跡するお話をするのじゃ。

APIの変更追跡ですか、博士。それは重要なテーマですね。よろしくお願いします。

APIの変更って、うっかりやっちゃうと大変なことになるのじゃ。依存しているプロジェクトを壊しちゃったり、開発者の時間を無駄にしたり…。

そうですね。大規模プロジェクトだと、手動での追跡は難しいですし、見落としがちです。

そこで登場するのが、API変更を追跡するツールなのじゃ!

具体的には、どんなツールがあるんですか?

まずは、JetBrainsが開発した「Binary Compatibility Validator」!これはKotlin Gradleプラグインで、公開APIのスナップショットを生成して追跡してくれるのじゃ。

Gradleプラグインとして簡単に統合できるのは便利ですね。

そうなのじゃ!例えば、RevenueCatのKotlin Multiplatform SDKで実際に使われているらしいぞ。

コマンドも紹介されていますね。`./gradlew apiDump`で.apiファイルを生成して、現在の公開APIを表示する、と。

`apiCheck`コマンドでプロジェクトをビルドして、現在の公開APIが生成された.apiファイルと一致するか検証するのじゃ。

なるほど。でも、制限事項もあるんですね。プロダクトフレーバーが設定されたモジュールはサポートしていない、と。

そう、そこがちょっと残念なのじゃ。でも、大丈夫!そんな時は「Metalava」の出番じゃ!

Metalavaですか?

Googleが開発したJVMベースのプロジェクト向けのメタデータジェネレーターで、公開APIの抽出、APIスタブファイルの生成、APIの差分比較ができるのじゃ。

metalava-gradleプラグインを使うことで、Metalavaの全機能にアクセスできるんですね。

そう!RevenueCatのAndroid SDKでも使われているらしいぞ。

`./gradlew metalavaGenerateSignature`でapi.txtファイルを生成して、現在の公開APIを反映させるんですね。

そして、`metalavaCheckCompatibility`でプロジェクトをビルドして、現在の公開APIが生成されたapi.txtファイルと一致するか検証するのじゃ。

どちらのツールも、GitフックやCIパイプラインと連携させることが重要ですね。

その通り!Gitフックでコミット前にチェックしたり、CIパイプラインに組み込んで自動的に検出したりするのじゃ。

APIチェックをCIパイプラインに統合することで、破壊的な変更を早期に検出できるのは大きなメリットですね。

まとめると、KotlinライブラリならBinary Compatibility Validator、プロダクトフレーバーをサポートする必要があるならMetalavaを使うのがおすすめなのじゃ。

マルチモジュールプロジェクトにも適用して、クリーンなAPI境界を維持することも重要ですね。

APIの変更を自動的に追跡して、意図しない破壊を防ぐ!これ、エンジニアの基本なのじゃ!

RevenueCat SDKの例を参考に、実際のセットアップを確認してみます。

よし、今日もロボ子は賢くなったのじゃ!

ありがとうございます、博士。ところで、APIの変更で一番怖いのは、変更したこと自体を忘れてしまうことですよね。

確かに!まるで冷蔵庫を開けたこと自体を忘れて、また開けちゃうみたいなものじゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。