この記事は David Winer による Android Developers Blog の記事 "The future of Kotlin Android Extensions" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Android Kotlin Extensions Gradle プラグイン(Android KTX と混同しないでください)は、2017 年にリリースされ、Kotlin による Android 開発に次の 2 つの便利な新機能をもたらしました。

  • synthetics を使うと、findViewById の呼び出しを kotlinx.android.synthetic バインディングで置き換えることができます。

  • Parcelize を使うと、@Parcelize アノテーションによってボイラープレートを削除し、Parcelable を簡単に作成できます。

しかしその後、Android ビルド ツールチェーンと密接に統合された公式サポート ライブラリ View Binding for Android がリリースされ、Kotlin synthetics と同等の機能が提供されるようになりました。Parcelize は現在も使用が推奨されていますが、Kotlin synthetics の使用についてはたとえば以下のようにさまざまな欠点が明らかになりました。

  • グローバル ネームスペースが煩雑になる
  • null 可能性情報を公開しない
  • Kotlin コードでしか動作しない

Android Kotlin Extensions プラグインは、もともと JetBrains が開発したものです。そして私たちは、JetBrains とともに、synthetics のメンテナンスを続けることの賛否について議論してきました。その中では、可能な限り API を長期にわたってサポートできるよう努力すべきという視点もありましたが、その一方でユーザーにとって使いやすいアプリを作れるよう、デベロッパーの皆さんにベスト プラクティスを提供してコードベースを健全化することの重要性も指摘されました。

そして結論として、私たちのチームは共同で、推奨オプションである View Binding のサポートを続けることを優先し、来年 1 年をかけて synthetics のサポートを終了することを決めました。

  • Parcelize を使っている方は、今後も同じアノテーションと API を利用できます。ただし、アノテーション パッケージは kotlin-parcelize に変更されます。また、モジュールレベルの Gradle ファイルで、android-kotlin-extensions の代わりにスタンドアロンの kotlin-parcelize プラグインを使う必要があります。Parcelize のドキュメントは、Android デベロッパー ドキュメント サイトで確認できます。

  • Android Kotlin synthetics を使っている方は、View Binding に移行してください。詳しくは、移行ガイドをご覧ください。


サポートの終了期間は、2020 年 11 月 23 日(日本時間 11 月 24 日)にリリースされた Kotlin 1.4.20 から始まります。android-kotlin-extensions は少なくとも 1 年間は残されますが、2021 年 9 月またはそれ以降の Kotlin リリースでは削除されます。kotlin-parcelize プラグインのメンテナンスは長期的に続ける予定です。Parcelize で発生する問題についてのご連絡は、今後も Android Studio Issue Tracker にお寄せください。


Reviewed by Takeshi Hagikura - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC