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

11 Weeks of Android、第 5 週: 言語

このブログ投稿は、 Android 11 に関する重要な内容を毎週取り上げる #11WeeksOfAndroid シリーズの一部です。第 5 週は、言語がテーマです。


最先端の Android 開発は、優れた言語をサポートすることから始まります。Kotlin、Java プログラミング言語、C++ は、日々のアプリ開発に使用するツールであり、Android API の基盤を形成しています。今週は、Android の 3 つのコア言語に関する最新ニュースをもれなくお伝えします。今回の最新リリースには、Kotlin コルーチン、Android 11 の新しい Java API、改善されたネイティブ開発用のツールなど、さまざまな機能を満載しています。



Kotlin とコルーチン

Kotlin は、Android API の中核で、こだわりのある最先端の言語です。Kotlin は世界中の Android デベロッパーから高い評価を得ています。その理由として、表現力の高さ、高品質なアプリの記述に役立つこと、既存の Java コードベースを簡単に利用できることなどが挙げられます。現在は、Play ストアのトップ 1000 アプリの 70% 以上で Kotlin が使われています。今年、SlashDataTM は、ここ 2 年間の割合ベースで最も急速に拡大している言語コミュニティが Kotlin であると発表しています。Android 11 ベータ版では、さらに Kotlin を普及させるため、Android の非同期処理方法として、公式にコルーチンを推奨しました。




コルーチンを使うと、非同期コードが書きやすく、読みやすく、理解しやすくなります。コルーチン ライブラリは安定しており、既に多くの Jetpack ライブラリと密接に統合されています。皆さんの中には、RoomLiveDataWorkManager などをお使いの方もいるでしょう。コルーチンをまだ使ったことがない方は、Android Coroutines: How to manage async tasks in Kotlinや、チュートリアル形式で動画や関連ブログ記事・コードラボをまとめて確認できる最新のコルーチン学習 Pathwayコルーチン デベロッパー ガイドをご覧ください。

Kotlin スタートガイド

Android Jetpack の Kotlin ファーストなライブラリから Android Studio の各種ツールとの密接な統合まで、Android と Kotlin は深く関わりあっています。Kotlin を使い始めるのに、今以上に適したタイミングはありません。しかし皆さんからは、チームを説得して Kotlin を採用するのはそう簡単ではない、という声が多く寄せられています。Kotlin は Java プログラミング言語と 100% 互換性があります。しかし、チームのメンバーには、時間を費やして新しい言語を学ぶ価値があるかどうか、他のプロダクトやテクノロジーよりも Kotlin を優先させるべきかどうかわからないという方もいるかもしれません。

こういった質問に答えるため、今週は、Google Home チームによる新しい事例紹介を公開しました。Google Home チームは、この 1 年をかけてすべての新機能開発を Kotlin に移行することで、同期間比で NullPointerException を 33% 削減しました。これは、DuolingoZomatoCash App など、世界中の Android チームから寄せられた声とも一致しています。つまり、Kotlin はチームの大小を問わず、生産性とアプリの品質向上の両面で価値をもたらします。Kotlin の最新の事例紹介やデータについては、新しい Kotlin 事例紹介ページをご覧ください。




初心者の方向けに、Android Basics in Kotlin コースを新設しました。プログラミングを学び始めたばかりの方は、Android Basics コースを受講すれば、関数や変数などのプログラミングの基本的な概念や、Kotlin による「Hello World」から各種 Android アプリの構築方法まで学べます。

Java プログラミング言語と C++

3 年前に Kotlin の公式サポートを発表したときも、Java や C++ の Android デベロッパーがたくさんいることを忘れてはいませんでした。Android 11 リリースでも、この 2 つの言語についてサポートの改善を続けています。Android 11 ベータ版では、OpenJDK 9、10、11 のたくさんの新 API を使って Java ライブラリのサポートをアップグレードしています。さらに、Android Studio 4.0 で Java ライブラリの desugar を導入し、古い Android 端末でもたくさんの新しい Java API を簡単に活用できるようにしました。また、古い端末で java.time のサポートを要望していた皆さんの強い声を受けて、これを実現しました。新しい API の活用方法についての詳しい情報は、Murat Yener の動画、Support for newer Java language APIsをご覧ください。Android 11 では、I/O プリフェッチによってアプリの起動時間をさらに高速化するため、Android ランタイムのアップデートも行っています。




C++ デベロッパーのエクスペリエンスの改善も続いています。Android 11 には、プロファイルに基づいた最適化(PGO)を行うツールの改善や Android Studio 4.0 でのネイティブ依存性管理の向上など、ネイティブ ツールチェーン全般のアップデートが含まれています。

改善が続くツールチェーン

また、Android Studio の D8 および R8 コンパイラに対する集中的な改善も続けています。Android Studio は、アプリのメモリ フットプリントを小さく保ち、ユーザーのインストール率や維持率向上に役立つ R8 shrinker をビルトインでサポートしています。さらに先日、R8 で Kotlin リフレクションを使う Kotlin のライブラリやアプリのサイズ縮小にも対応しました。詳しくは、Mads Ager と Morten Krogh-Jespersen による最新の Medium への投稿をご覧ください。

関連情報・ドキュメント

#11WeeksOfAndroid 動画コンテンツの全プレイリストはこちらから、それぞれの週の詳しい内容はこちらからご覧いただけます。毎週新しい分野を取り上げますのでご期待くださいTwitterYouTube のフォローもお願いします。ご覧いただき、ありがとうございました!


Reviewed by Yuichi Araki - Developer Relations Team and  Hidenori Fujii - Google Play Developer Marketing APAC