この記事は Maru Ahues Bouza による Android Developers Blog の記事 " Final Android 13 Beta update, official release is next! " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。なお、 Android 13 は正式リリース済みです。詳しくは、こちらをご確認ください。
Android 13 の公式リリースまで、あと数週間です。現在、次期バージョンの Android の最終調整をしているところですが、2022 年 7 月 13 日にテストや開発用の最後のアップデートとして、ベータ版 4 をお届けしました。今のうちにアプリの準備をしておきましょう。
Android 13 には注目すべきたくさんの機能があります。まずは、新しい通知パーミッションや写真ピッカーなどのプライバシー機能です。そして、テーマ対応アプリアイコン、アプリごとの言語サポートなどの生産性機能を備えています。さらに、HDR 動画、Bluetooth LE オーディオや MIDI 2.0 over USB といった最新の標準もサポートしています。そのうえ、12L で行ったアップデートを拡張し、ツールを改善してタブレットと大画面デバイスを活用できるようにしています。
ベータ版 4 は、 Pixel デバイスで試すことができます。こちら (英語) から登録すると無線(OTA)アップデートを受け取ることができます。すでに登録済みの方には、アップデートが自動配信されています。また、一部パートナーが発売しているデバイスの中に、Android 13 ベータ版を取得できる機種があります。詳しくは、Android 13 デベロッパー サイトにアクセスしてください。
ここからは、間近に迫った公式 Android 13 リリースに関する情報を詳しくお伝えします。
今回のアップデートには、Pixel 端末と Android Emulator 向けの Android 13 のリリース候補ビルドが含まれています。ベータ版 3 でプラットフォームの安定版に到達しているので、SDK や NDK API、アプリに面するシステムの動作、非 SDK インターフェースの制限など、アプリと連携するための機能はすべて確定しています。ベータ版 4 には、これらの機能と最新の修正と最適化が含まれており、テストを終えるために必要なものがすべてそろっています。
Android 13 が正式に先日リリースされました。そのため、すべてのアプリやゲームのデベロッパーの皆さんに、最終の互換性テストを終え、互換性アップデートを公開するようお願いします。SDK、ライブラリ、ツール、ゲームエンジンのデベロッパーの皆さんは、できる限り早く互換性アップデートをリリースすることが重要です。アプリやゲームのデベロッパーが、皆さんのアップデートを受け取るまで作業できない場合があるからです。
アプリの互換性をテストするには、Android 13 ベータ版 4 が動作するデバイスにアプリをインストールし、アプリのフローを確認して機能や UI の問題を探します。Android 13 でのすべてのアプリが対象となる動作の変更点を確認し、アプリが影響を受ける可能性がある領域を集中的にテストしてください。特にテストしておくべき変更点は、以下のとおりです。
アプリのライブラリや SDK の互換性テストも忘れずに行ってください。SDK の問題を見つけた場合は、最新バージョンの SDK にアップデートするか、デベロッパーに連絡してサポートを求めてください。
現行のアプリについて互換性のあるバージョンを公開すると、アプリの targetSdkVersion をアップデートするプロセスを開始できます。アプリのターゲットを Android 13 にしたときに適用される動作の変更点を確認し、互換性フレームワークを使って問題をすばやく検知しましょう。
Android 13 は、12L で導入されたタブレットの最適化がベースとなっています。そこでテストの一環として、アプリがタブレットやその他の大画面デバイスで最適に表示されることを確認します。Android Studio で Android Emulator をセットアップすると、大画面機能をテストできます。または、Android 13 ベータ版パートナーの大画面デバイスを使うことができます。以下に、注意すべき点を示します。
Android 13 のタブレット機能とテスト内容の詳細は、詳しくはこちらからご覧ください。
今回のベータ版 4 リリースには、アプリをテストして Android 13 機能を試すために必要なものがすべてそろっています。Pixel デバイスを登録するだけで、無線(OTA)でアップデートを入手できます。始めるには、Android 13 SDK をセットアップします。
また、一部パートナーが発売しているデバイスの中に、Android 13 ベータ版でアプリをテストすることができる機種があります。android.com/beta にアクセスすると、すべてのパートナーの一覧を確認できます。サポート対象のデバイスや、ベータ版 1 以降のベータ版ビルドについての詳細が記載されたサイトへのリンクも含まれています。登録やサポートはそれぞれのパートナーが担当し、ベータ版のアップデートも直接提供されます。さらに幅広くテストしたい場合は、Android GSI イメージでベータ版 4 をお試しください。デバイスをお持ちでない場合は、Android Emulator でテストできます。Android 13 ベータ版の詳細については、Android 13 デベロッパー サイトをご覧ください。
公式リリースされた Android 13 への対応作業をお願いします!そして、引き続きプラットフォームの問題、アプリの互換性の問題、サードパーティ SDK の問題の各ホットリストからフィードバックを共有してください。
Android 13 リリースに貢献してくださったデベロッパー コミュニティの皆さんには深く感謝しています。皆さんから寄せられたたくさんのバグレポートや、皆さんが共有してくれた知見は、API の最適化や機能の改善、重大なバグの修正、そしてユーザーやデベロッパーにとってより良いプラットフォームの実現に役立っています。
Android 13 に対応した皆さんのアプリを楽しみにしています。
私たちは Android 13 の正式リリースに向けて着実に開発を進めています。Android 13 では、アプリごとの言語設定をはじめとする多言語サポートの改善が重要なテーマです。日本語に関連する機能も 2 つ含まれています。
Android 13 では TextView に新しい機能が追加され、文節を保ったまま改行することができるようになりました。これにより、より洗練された日本語テキスト表示が実現できます。
対象の TextView の lineBreakWordStyle 属性を "phrase" にすることで、文節による改行を設定できます。
lineBreakWordStyle
"phrase"
<TextView android:id="@+id/message_phrase" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:lineBreakWordStyle="phrase" android:text="@string/message" />
<TextView
android:id="@+id/message_phrase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:lineBreakWordStyle="phrase"
android:text="@string/message" />
この動作を確認できるデモが Text サンプルに含まれています。
アプリ側から IME の未確定の変換候補を取得できるようになりました。例えば、「かた」と入力している途中では以下のように 5 つの候補を取得できます。
※ この機能の動作には最新の GBoard が必要です。
テキスト変換候補をアプリから取得する
アプリで検索機能を提供するとき、英語などのアルファベットで表記される言語においては「インクリメンタル サーチ(逐語検索)」または「Search as you type」と呼ばれる動作を提供するのが一般的です。例えば "Shoulder" という検索語句を入力するとき、一文字入力するごとに検索が行われ、単語をすべて入力しなくても目的の検索対象を見つけることができます。
日本語で逐語検索を提供しようとすると工夫が必要になります。IME で「かた」とひらがなを入力している間はアプリ内の漢字の「肩」を含むデータを検索しても一致せず、IME 上で漢字への変換を行って初めて意図した検索ができるからです。これに対応するために例えば連絡帳アプリであれば、あらかじめ読み仮名を登録しておき、ひらがな入力中はそちらから検索することで実現できるでしょう。しかし、漢字のデータしか存在しない場合、逐語検索を実現するのは困難だったのではないでしょうか。
Android 13 のテキスト変換候補 (Text Conversion Suggestions) API を使えば、逐語検索を実現できます。
まず、EditText (またはその小クラスである AppCompatEditText や TextInputEditText) を継承します。このカスタム EditText で onCreateInputConnection をオーバーライドして、カスタムの InputConnection を返します。このカスタム InputConnection の実装については後ほど述べます。
EditText
AppCompatEditText
TextInputEditText
onCreateInputConnection
InputConnection
class MyEditText @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = com.google.android.material.R.attr.editTextStyle) : TextInputEditText(context, attrs, defStyleAttr) { override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection { return MyInputConnection(super.onCreateInputConnection(outAttrs)) }}
class MyEditText @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = com.google.android.material.R.attr.editTextStyle
) : TextInputEditText(context, attrs, defStyleAttr) {
override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection {
return MyInputConnection(super.onCreateInputConnection(outAttrs))
}
レイアウト XML で対象の EditText の android:inputType 属性を textEnableTextConversionSuggestion に設定します。
android:inputType
textEnableTextConversionSuggestion
<com.example.android.tiramisudemo.ui.conversion.MyEditText android:id="@+id/edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text|textEnableTextConversionSuggestions" />
<com.example.android.tiramisudemo.ui.conversion.MyEditText
android:id="@+id/edit"
android:inputType="text|textEnableTextConversionSuggestions" />
カスタムの InputConnection を実装します。このために Android には InputConnectionWrapper というクラスが用意されています。setComposingText(CharSequence, int, TextAttribute) をオーバーライドして、実行中の変換候補にアクセスします。TextAttribute.getTextConversionSuggestions メソッドを使えば文字列のリストとして変換候補を取得できます。
InputConnectionWrapper
setComposingText(CharSequence, int, TextAttribute)
TextAttribute.getTextConversionSuggestions
class MyInputConnection( inputConnection: InputConnection?) : InputConnectionWrapper(inputConnection, false) { override fun setComposingText( text: CharSequence, newCursorPosition: Int, textAttribute: TextAttribute? ): Boolean { if (textAttribute != null) { val suggestions: List<String> = textAttribute.textConversionSuggestions // ここで suggestions (変換候補) から検索文字列を作る } return super.setComposingText(text, newCursorPosition, textAttribute) }}
class MyInputConnection(
inputConnection: InputConnection?
) : InputConnectionWrapper(inputConnection, false) {
override fun setComposingText(
text: CharSequence,
newCursorPosition: Int,
textAttribute: TextAttribute?
): Boolean {
if (textAttribute != null) {
val suggestions: List<String> = textAttribute.textConversionSuggestions
// ここで suggestions (変換候補) から検索文字列を作る
return super.setComposingText(text, newCursorPosition, textAttribute)
これで未確定の変換候補が取得できました。後はこの変換候補からそれぞれのアプリに即した検索クエリーを作って検索してください。注意する点として、この setComposingText で取得できるのはあくまで変換動作中のテキストです。EditText に確定済みのテキストが既に含まれる場合、連結する必要があります。それらの動作を含んだ詳細なコードは Text サンプルを参照してください。
setComposingText
Posted by Yuichi Araki - Developer Relations Team
この記事は Maru Ahues Bouza による Android Developers Blog の記事 " 13 Things to know for Android developers at Google I/O!" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
何かを作ってすぐ、スマートフォンだけでなく、テレビ、自動車、タブレット、スマートウォッチを含め、世界の数十億の人々に届けることができるプラットフォームは多くはありません。今年の Google I/O では、このチャンスを最大限に活用していただけるように、Android がたくさんの方法で皆さんをサポートしていることを説明しました。また、最新の Android 開発が、可能な限り多くの共通性をもたせることで、日常生活で使用するあらゆる場面に適したエクスペリエンスを短時間で、かつ簡単に作成できるようになっていることにも触れました。
ここでは、Android デベロッパーが知っておくべきことの上位 13 をまとめています。Jetpack Compose やタブレット、Wear OS、そしてもちろん Android 13 も含まれています! Android の I/O プログラムには、26 のテクニカル セッションと 4 つのワークショップが含まれています。さらに、もう 1 つの #TheAndroidShow (動画/英語) のエピソードとして、Android ライブ Q&A も開催しました。#AskAndroid を使って質問されたツイートはエキスパート チームがライブ配信 (動画/英語) で回答しました。
Android の最新 UI ツールキットである Jetpack Compose は、ダウンロード可能フォント、LazyGrids、ウィンドウ インセット、ネストされたスクロールの相互運用性など、さらに高度なユースケースを実現する API を提供し続けています。また、Live Edit、再コンポーズのデバッグ、アニメーション プレビューといった機能を搭載したツールもサポートします。詳細はブログ投稿をご覧ください。
Android Studio Dolphin ベータ版と Electric Eel Canary を使うと、より多くのことを短時間で行うことができます。Android Studio Dolphin には、Jetpack Compose や Wear OS 開発向けの新機能や機能改善が搭載されています。また、Logcat の操作も新しくなっています。Android Studio Electric Eel には、新しい Google Play SDK Index や Firebase Crashlytics との連携機能が追加されます。さらに、大画面でアプリをテストするための新しいサイズ変更可能なエミュレータや、コンポーズ可能な関数内のコードの変更を即座にデプロイできる新機能 Live Edit も提供されます。Android 開発ツールの新機能 (動画/英語) に関するセッションを視聴し、こちらの Android Studio I/O ブログ投稿をお読みください。
インストール直後のアプリのスピードは、ユーザーの維持率に大きく影響します。そのスピードを高めるために、ベースライン プロファイルを作成しました。ベースライン プロファイルを使うと、アプリやライブラリが Android ランタイムにコードパスの使用方法に関するメタデータを提供できます。ランタイムは、それを使って Ahead-Of-Time コンパイルの優先順位を判断します。コードを一切変更せず、ベースライン プロファイルを追加するだけで、アプリの起動時間が最大 30% 短縮されます!ベースライン プロファイルは、すでに Jetpack の内部で使われています。私たちは、Fragments や Compose といった人気のライブラリにベースラインを追加して、エンドユーザーのエクスペリエンスを向上させています。アプリ フレームワークの新機能 (動画/英語) を視聴し、こちら (英語) の Jetpack ブログ投稿をお読みください。
Google は全力を挙げてタブレットに対応しています。前回の I/O 以降、大画面の最適化に注力した Android 12L をリリースしました。Android 13 にはその機能改善がすべて含まれているだけでなく、さらなる機能追加も行われています。また、来年登場する Pixel タブレットについてもお知らせしました。すばらしい新ハードウェア、アップデートされたオペレーティング システムと Google アプリ、改善されたガイドラインとライブラリ、そして刺激的な Google Play ストアの変更がそろった今こそ、アプリを見直して大画面と Android 13 に対応する絶好のタイミングです。今年の I/O で 4 つのセッションと 1 つのワークショップ (動画/英語) を開催し、大画面のデザイン (動画/英語) から実装 (動画/英語) まで、詳しく説明しているのはそのためです。
Wear OS の最新アップデートが行われた今、ウェアラブルの開発でできることを再考できます。Jetpack Compose for Wear OS は現在ベータ版です。これを使うと、これまでよりも少ないコードで、美しい Wear OS アプリを作成できます。健康とフィットネス関連のデベロッパー コミュニティに大きなイノベーションをもたらすヘルスサービスも、現在ベータ版になっています。そして今回は、Google Pixel Watch を発表しました。Fitbit と Wear OS の長所を合わせ持つもので、今秋発売予定です。ウェアラブルの期待のアップデートの詳細については、Wear OS テクニカル セッション (動画/英語) をご覧いただくか、Jetpack Compose for Wear OS のお知らせ (英語) をお読みください。
Health Connect は、Google と Samsung が密接に連携して作り上げた新しいプラットフォームです。これを使うと、簡単にアプリ同士を接続して、ユーザーの健康とフィットネスに関するデータに安全にアクセスしたり、それらのデータをすべてのアプリとデバイスで共有したりできるようになり、少ない作業で多くのユーザーに簡単にアプローチできます。5 月 11 日より、Jetpack Health から Health Connect にアクセスできるようになりました。詳しくは、お知らせ (英語) を確認するか、I/O のセッション (動画/英語) をご覧ください。
Android for Cars と Android TV OS が、米国やその他の国で拡大を続けています。ネットワークに接続しながら運転したりテレビを見たりするユーザーが増える中、今年は自動車やテレビ向けの開発がさらに簡単になる新機能を導入します。詳しくは、2 日目 (5 月 12 日) に開催された、Android for Cars の新機能 (動画/英語) や Google TV と Android TV の新機能 (動画/英語) に関するセッションをご覧ください。
Android for Cars の Shortcuts API にアクセスできるデベロッパーを拡大することにより、Google アシスタントを搭載したさまざまなデバイスで、音声を使って簡単にアプリにアクセスできるようにしています。この機能は、Wear OS (英語) アプリでも今年中にサポートされる予定です。また、Smarter Custom Intents (英語) を使ってこのようなエクスペリエンスを簡単に開発できるようにしています。具体的には、手間がかかる NLU トレーニングなしに、アシスタントが ML を通してさまざまな形態のユーザークエリを検出できるようにします。加えて、モバイルで音声を使ってアプリを見つけやすくする改善もしています。まずは、Brandless Queries によって、ユーザーが明示的にアプリの名前を話さなくてもアプリを使用できるようにします。また、まだアプリをインストールしていない場合には、App Install Suggestions が表示されてインストールを提案します。こちらの機能 (動画/英語) は、5 月 11 日より既存の App Actions で自動的に有効になりました。
Google Play を活用して皆さんのビジネスを拡大する新しい方法について、Google Play の最新情報をご覧ください。特に重要なのは、ディープリンクや最大 50 個のカスタム掲載情報を作成できる機能、Google Play ストアに掲載したいコンテンツを送信できるデベロッパーを拡大する LiveOps ベータ版、そして柔軟性が増したサブスクリプション販売などです。以上の最新情報の詳細は、ブログ投稿 (英語) をご覧ください。
新しい Google Play SDK Index で、SDK がアプリに適切かどうかを評価しましょう。この新しいパブリックポータルは、特によく使われている 100 以上の商用 SDK が登録されており、SDK がアプリのどんなパーミッションを要求するのか、SDK を使っているアプリの統計、どのバージョンの SDK が最もよく使われているのかといった情報が公開されています。ブログ (英語) 記事を確認し、Google Play の新機能 (動画/日本語字幕付き) や Android 開発ツールの新機能 (動画/英語) についてのセッションを視聴しましょう。
Android のプライバシー サンドボックス (英語) は、無料のコンテンツやサービスへのアクセスを危険にさらすことなく、ユーザーのプライバシーを強化した新しい広告ソリューションを実現する仕組みです。先日、Android のプライバシー サンドボックスの初めてのデベロッパー プレビュー版 (英語) を公開したので、SDK ランタイムと Topics API をいち早く確認できます。これら新技術を予備テストし、どのようにソリューションに採用できるかを評価し、フィードバックを提供してください。
新しい Google Wallet を使うと、Android や Wear OS から日常的に使用する機能に高速で安全にアクセスできます。私たちは、以前 Google Pay Passes API と呼ばれていた Google Wallet API を強化し、汎用パスやパスのグループ化とミックス(イベント チケットとバウチャーをまとめるなど)のサポート、そしてバックエンド統合なしにアプリからパスを直接保存できる新しい Android SDK のリリースしました。詳細については、詳細なブログ記事 (英語) を読むか、セッション (動画/英語) をご覧ください。また、developers.google.com/wallet のドキュメントを確認することもできます。
Android 13 の 2 回目のベータ版が 5 月 11 日にリリースされました。新しい通知パーミッション、プライバシーを保護する写真ピッカー、近くのデバイスとペア設定したり、メディア ファイルにアクセスしたりするパーミッションの改善など、アプリをプライバシーとセキュリティの最新機能に対応しましょう。また、アプリ別の言語設定やテーマ対応アプリ アイコンなどの機能で、アプリを強化しましょう。HDR 動画や Bluetooth LE オーディオなど、最新の標準を使って開発することもできます。こちらから Pixel デバイスを登録すると、すぐに試してみることができます。Android 13 ベータ版は、パートナー製の一部のスマートフォンやタブレット、折りたたみ式デバイスでも利用できます。詳細は、developer.android.com/13 をご覧ください。
ここで紹介した内容は、今年の Google I/O の Android デベロッパー向けハイライトの一部にすぎません。ぜひ Android の新機能 (動画/日本語字幕付き) セッションを視聴して、Google I/O での Android テクニカル トラックの全容を把握してください。全部で 26 のセッションと 4 つのワークショップがあります。ぜひご利用ください!