Googleがスマホなど向け次期OS「Android P」の開発者向けプレビュー版をリリース!

Googleは7日(現地時間)、スマートフォン(スマホ)やタブレットなど向けプラットフォーム「Android」の次期バージョン「Android P」における開発者向けプレビュー版「Android P Developer Preview」( http://developer.android.com/preview/ )で導入される予定の新機能やAPI、SDKなどを公開したとお知らせしています。

今回提供されたAndroid Pの開発者向けプレビュー版は、Androidエミュレーターのほか、Pixel、Pixel XL、Pixel 2、Pixel 2 XLでテストするためのシステムイメージやSDKが含まれています。ビルド番号は「PPP1.180208.014」。Android Oこと、現バージョン「Android 8.x(開発コード名:Oreo)」からはNexus 6PとNexus 5X、Nexus Player、Pixel Cがなくなりました。

現在開発者向けプレビュー版が提供されている機種についても必ずしも正式版が提供されるとは限らないとのこと。またエミュレーターで利用するためには「Android Studio」の最新バージョン「3.2 Canary」( https://developer.android.com/studio/archive.html )をインストールするか、P Developer Preview SDKとツールをAndroid Studio 3.1に導入する必要があるとのこと。

開発者向けプレビュー版を利用するには公開されているファクトリーイメージ( https://developer.android.com/preview/download.html )から手動で導入することが可能。なお、「Android Beta Program」( https://g.co/androidbeta )に登録してネットワーク経由によるソフトウェア更新(OTA)は現時点では利用できないとのこと。製品版に近づいたときに一般向けプレビュー版を提供し、そのときにAndroid Beta Programが利用可能になるとしています。

なお、今後に提供される予定の各プレビュー版についてもOTAで提供されるということで、Android Oのときと同様に一般向けプレビュー版も提供される予定。新機能についてもある程度公開されており、無線LAN(Wi-Fi)を使った屋内測位機能や切り欠き(いわゆる「ノッチ」)への表示対応、デュアルカメラAPI、さらになる電力効率化などが追加されるとしているほか、5月8〜19日に開催される「Google I/O 2018」でさらに詳細な説明を行うとしています。


Android Pは現在の最新バージョンのAndroid 8.x Oreoの次のメジャーアップデートとなる予定のバージョンです。Androidではメジャーバージョンアップごとにアルファベット順に開発コード名としてお菓子の名前が付けられており、Android 8.xでは「Oreo」となっていますが、それを受けて正式発表前にはここ最近ではその頭文字を取って「Android O」としています。

そのため、次のバージョンは「O」の次の「P」となるため、Android Pとなっており、正式版では恐らくバージョン番号が「8」の次の「9」になると思われるので「Android 9.0(開発コード名:P****)」などとなると見られます。バージョン番号や開発コード名については現時点では不明。

開発者プレビュー版は順次新しい内容が提供されていくということで、今回の公開されたAndroid P Developer Preview 1(初リリースのα版)に続いて、アップデートスケジュールとして5月上旬のGoogle I/O 2018に合わせて「Preview 2・β版(incremental update)」、6月上旬に「Preview 3・β版(最終APIと公式SDK・Playサービス)」、6月下旬に「Preview 4・RC版(テスト用リリースコンディショナル)」、正式版リリース直前に「Preview 5・RC版(最終テスト用リリースコンディショナル)」と経て、2018年第3四半期(7〜9月)に正式版がリリースされるということで、恐らく過去の例からすると8〜9月あたり提供開始されるものと見られます。


Android Studio 3.1にAndroid P Developer Preview SDKを導入





AndroidエミュレーターでAndroid P Developer Previewを試してみたところ

Android Pで導入される新機能は以下の通り。なお、公式ブログをGoogle 翻訳で翻訳したものをベースに編集しています。ざっくりAndroidエミュレーターで使ってみた限りでは基本的なユーザーインターフェース(UI)などはほとんど変わらずといったところ。

・Wi-Fi RTTによる屋内測位
正確な屋内測位は長く課題とされていますが、Android Pでは新たにIEEE802.11mcに準拠したWi-Fiの仕様による「Wi-Fi RTT(Round-Trip-Time)」を用いた位置情報測位機能をサポートし、各アプリで屋内測位が利用できるようになります。

位置情報がオンになって権限が有効になっている場合には、アプリがRTT APIを使用して近くのWi-Fiアクセスポイント(AP)までの距離を測定でき、3つ以上のAPとの距離から現在位置が測定されて誤差1〜2メートルの精度で屋内でも位置情報がわかるようになるとのこと。

またRTT APIを使用する場合にWi-FiのAPに接続する必要はなく、プライバシーを維持するためにAPには情報は伝わらず、利用するスマホなどの機器だけで情報を活用可能。これにより、建物内のナビゲーションなどの新しい体験を提供でき、はっきりと明確な音声制御(例えば、「ここのライトをオンにする」)などのきめ細かな機能が利用できるようになるということです。


・表示切り取りサポート
すでにiPhone Xのような切り欠きは「ZenFone 5」や「ZenFone 5Z」、「Wiko View 2」などで導入されていますが、そういった切り欠きにAndroid Pでは標準に対応し、切り欠きがある機種でもアプリでフルスクリーン表示が問題なく利用できるようになります。なお、Android P以前を搭載した機種で切り欠きがある場合には独自に対応しているものと見られます。

Android Pによる切り欠きのサポートはすべてのアプリでシームレスに機能し、ステータスバーの高さを管理してコンテンツを切り欠きから分離し、没入型コンテンツがある場合でも新しいAPIを使用して切り欠きの形状を確認して切り欠きの周りを綺麗に表示するようにフルスクリーンレイアウトをリクエストすることもできます。

またgetDisplayCutout()を呼び出して現在の利用している機種に切り抜きがあるかどうかを確認し、DisplayCutoutを使用して切り抜き領域の位置と形状を決定することができ、新しい切り欠きモードレイアウトを使用すると、切り抜き領域に対してコンテンツをきちんと配置する方法とタイミングをシステムに指示できます。

さらにアプリで切り欠きのサポートを簡単に作成してテストするために、任意の機種で切り欠きをシミュレートする「Developer Option」を追加。アプリ開発者は切り欠きを有効にして既存のアプリをテストし、コンテンツが適切に表示されるようにすることをオススメしています。


・改善されたメッセージ通知
Android Pでは通知の見やすさと機能をさらに向上させることに重点を置いており、新たに「Messaging Style」という通知スタイルが追加されます。Messaging Styleは会話を表示したり、写真やステッカーを添付したり、スマートな返信を提示することができます。


・マルチカメラAPI
Android Pを搭載した製品上では2つ以上の物理カメラに同時アクセスできるようになり、デュアルフロントカメラまたはデュアルリアカメラを搭載した機種では「シームレスズーム」や「背景ぼかし」、「ステレオビジョン」などの単一のカメラでは不可能な革新的な機能を利用できるようになります。

またマルチカメラAPIを使えば、複数のカメラを自動的に切り替えることができ、複数のカメラをサポートするAndroid P搭載製品は今後1年でさらに多く登場することになるとしています。

さらにカメラのその他の改良点として初期撮影時の遅延を減らすための新しいセッションパラメーターやカメラストリーミングを停止して開始することなくカメラクライアントがさまざまなユースケースを処理できる表面共有、ディスプレイベースのフラッシュサポート用のAPIとアプリレベルのイメージ安定化と特殊効果のためのOISタイムスタンプへのアクセスなどが追加されています。

・ビットマップとドロワーブルのための画像デコーダー
Android Pでは画像をビットマップまたはドロワーブルに簡単にデコードすることができるようになり、この画像デコーダーはBitmap Factoryを非推奨にしているため、画像デコーダーを使うと、バイトバッファやファイル、URIからビットマップまたはドロウアブルを作成できます。 Bitmap Factoryには正確なスケーリング、ハードウェアメモリへのシングルステップデコード、デコード時のポストプロセッシング、アニメーションイメージのデコードなどの利点があるとのこと。

ターゲットの寸法でsetResize()を呼び出すだけで、デコードして正確なサイズにスケールすることができ、getSampledSize()を呼び出して特定のサンプルレートで画像の寸法を取得し、次にそれらの寸法に拡大縮小することもできます。さらに円マスクやより複雑なエフェクトに丸みを帯びたコーナーを適用するなどの後処理をイメージに追加する場合は、ImageDecoderにany android.graphics.PostProcessorを渡すことができ、 ImageDecoder.decodeDrawable()を使用してDrawablesを直接作成することも可能。

その他、エンコードされた画像がアニメーションGIFまたはWebPの場合、Drawableは新しいAnimatedImageDrawableのインスタンスになるとしています。

・HDR VP9ムービーやHEIFイメージなどに対応したメディアAPI
Android PにはHDR(VP9プロファイル2)のサポートが組み込まれているため、YouTubeやGoogle PlayムービーなどのHDR対応ムービーをユーザーに配信できるようになります。

またiPhone 7シリーズ以降などで導入されている「HEIF(.heic)」形式の画像にも対応し、より圧縮された画像によってストレージ容量や通信容量を節約でき、さらに画質も良くなります。

Android Pで標準的にサポートされることによってバックエンドサーバーからHEIFイメージを簡単に送信して利用できるようになり、アプリがHEIF形式と互換性があることを確認して共有して表示することが可能となるほか、HEIF形式をアプリの画像保存形式として使えるようになります。

さらに画像デコーダーまたはBitmap Factoryを使用してJPEG形式からビットマップを取得し、新しいサポートライブラリーアルファのHeif Writerを使用してYUVバイトバッファーやビットマップなどからHEIF静止画像を書き込むことができます。Googleでは、このメディアAPIの開発と統合をより容易にするために、メディアAPIの強化とリファクタリングを進めていくとしています。

・JobSchedulerにおけるデータコストの感度
JobSchedulerはスケジュールされたタスクを管理したり、DozeおよびApp Standby、Background Limitsの変更を処理するのに役立つ、Androidの基本機能です。 Android PにおけるJobSchedulerは、ネットワーク関連のジョブを利用者側でより適切に処理し、通信事業者側が別途提供するネットワークステータス信号を調整できます。

ジョブは予測されたデータサイズや信号プリフェッチを宣言し、詳細なネットワーク要件を指定できるようになり、通信事業者はネットワークが混雑していないことを明示でき、 JobSchedulerはそれに合わせてネットワークの状態に応じて作業を管理できるようになります。

これにより、例えば、ネットワークが輻輳している場合、JobSchedulerは大規模なネットワーク要求を遅延させることができ、混雑していない場合、プリフェッチジョブを実行してヘッドラインの先読みなど、ユーザーエクスペリエンスを向上させることができます。

ジョブを追加するときは、setEstimatedNetworkBytes()やsetIsPrefetch()、setRequiredNetwork()を使ってJobSchedulerが正しく処理するようにしてください。ジョブが実行されるときは、JobParameters.getNetwork()によって返されたNetworkオブジェクトを必ず使用してください。そうしないと、意図しないデータの使用を引き起こしてデバイスのデフォルトネットワークが暗黙的に使用されます。

・ニューラルネットワークAPI 1.1
Android 8.1 Oreoで追加された機械学習(ML)の新機能「Neural Networks API」が進化・改良され、Android PではVersion 1.1となり、パッドやBatchToSpaceND、SpaceToBatchND、Transpose、Strided Slice、Mean、Div、Sub、Squeezeの9つの新しい操作をサポートしています。 Pixel 2シリーズの場合にはDP1ビルドにはクオンタムのHexagon HVXドライバが含まれています。

・自動入力の改善
Android Pではユーザーと開発者からのフィードバックに基づいて自動入力フレームワークの改善を行なっており、主要なバグ修正に加えてこのリリースには新しいAPIが含まれています。これにより、パスワードマネージャはデータセットのフィルタリング、入力サニタイズ、互換モードなど、オートフィルのユーザーエクスペリエンスを向上させることができます。

特に互換モードはエンドユーザーに大きな影響を与え、パスワードマネージャが完全な自動入力機能を備えていないが、パフォーマンスやセキュリティに影響を与えないアプリでアクセシビリティーに基づくアプローチをとることができるからです。

・NFC支払いと安全な取引用のオープンモバイルAPI
Android PはGlobalPlatform Open Mobile APIの実装を追加し、サポートされている製品ではアプリがOMAPI APIを使用してセキュアエレメント(SE)にアクセスし、スマートカード支払いなどのセキュアなサービスを有効にできます。ハードウェア抽象化レイヤー(HAL)は、利用可能なさまざまなセキュアエレメント(eSE、UICCなど)を列挙するための基礎となるAPIを提供します。

・Androidの基盤を強化する
Android PではAndroidを開発者にとって最高のプラットフォームにするために長期的な投資を継続しています。

・アプリのセキュリティー
Android Pではアプリとデバイス間でより一貫性のある指紋認証UIを導入しており、 Androidは現在、ユーザーに指紋センサーに触れ、デバイスに適したテキストと配置を管理するように促す標準的なシステムダイアログを提供しています。アプリでは新しいFingerprintDialog APIを使用してシステムの指紋ダイアログをトリガすることができます。アプリ開発者で指紋認証を利用している場合には、できるだけ早く新しいシステムダイアログに切り替えることをオススメします。

クリアテキスト(暗号化されていないHTTP)からTLSにすべてのネットワークトラフィックを移動させるための大きな努力の一環として、ネットワークセキュリティ設定のデフォルトを変更してすべてのクリアテキストトラフィックをブロックします。ネットワークセキュリティ設定を使用している場合、特定のドメインのクリアテキストを明示的にオプトインしない限り、TLS経由で接続する必要があります。

・ユーザーのプライバシー
プライバシーをより確実にするため、Android Pはアイドル状態のアプリからマイクやカメラ、すべてのSensorManagerセンサーへのアクセスを制限します。アプリのUIDがアイドル状態の間、マイクは空のオーディオを報告し、センサーは報告イベントを停止します。アプリで使用されているカメラは切断され、アプリケーションがそれらを使用しようとするとエラーが発生します。

多くの場合にはこれらの制限によって既存のアプリに新しい問題が起こることはありませんが、アプリからこれらのリクエストを削除することを推奨されています。またクライアント側の秘密でAndroidバックアップの暗号化を有効にするとのことですが、この機能はまだ開発中で、今後のAndroid P Developer Previewにおいて実装されるとしています。

さらに長期的には関連するMACアドレスのネットワークごとのランダム化をプラットフォームにサポートするよう努めており、Android P搭載製品では新しいデベロッパーオプションとしてテストするために実験的に有効にすることが可能となります。

その他、Android Pではプラットフォームのbuild.serial識別子へのアクセスを、READ_PHONE_STATE権限の後ろに置くことで、ユーザーがそのアクセス権を制御することもでき、この識別子への直接アクセスはAndroid 8.0以降では廃止されています。 build.serial識別子にアクセスするには、Build.getSerial()メソッドを使用する必要があります。

・ARTのパフォーマンス
ARTランタイムを通じてすべてのアプリにパフォーマンスと効率の改善をもたらすよう努めており、 ARTの実行プロファイルの使用を拡張してアプリを最適化してコンパイルされたアプリコードのインメモリーフットプリントを削減しています。

またARTは現在、DEXファイルのオンデバイス書き換えにプロファイル情報を使用しており、一般的なアプリケーションの範囲で最大11%の削減が可能です。これらはシステムのDEXメモリ使用量の削減とアプリの起動時間の短縮と密接に関連していると考えられます。

・最適化されたKotlin
AndroidではKotlinに永続的なコミットメントを行い、Kotlinコードのパフォーマンスを最適化するなどのサポートを拡大し続けており、Android Pではこの作業の最初の結果が示されます。特にループをターゲットとするコンパイラの最適化をいくつか改良し、パフォーマンスを向上させています。またJetBrainsと提携してKotlinの生成コードを最適化する作業を続けており、 Android StudioのKotlinプラグインを最新の状態に保つだけで、最新のKotlinパフォーマンスの改善をすべて得ることができるようになっています。

・電力効率
Android Pではバッテリー寿命をさらに向上させるためにDozeやApp Standby、Background Limitsを引き続き改良しています。これらを使用してアプリを試して、フィードバックを送信してください。

・近代的なAndroidをターゲットにする
Android PはAndroidの基礎とそれを実行するアプリを近代化する長期的な取り組みによって形作られており、最近発表されたように「Google Playストア」では2018年11月までにAndroid 8.x Oreo(targetSdkVersion 26以降)を対象とするすべてのアプリのアップデートが必要になり、2019年の64ビットハードウェアのサポートが必要になります。

これらの変更に伴い、Android 4.2(開発コード名:JellyBean)より前のプラットフォーム(targetSdkVersionが17未満)をターゲットとするアプリをインストールすると、Android Pはダイアログを表示してユーザに警告し、将来のプラットフォームバージョンはその下限を引き続き増加させます。 GoogleではすべてのAndroid開発者に今すぐターゲットAPI 26への移行を計画し、できるだけ早く移行作業を開始するよう奨励しています。

・公開APIによるアプリの互換性の向上
ユーザーと開発者にとって重要な問題は、アプリ互換性で、ユーザーがクラッシュする危険性や開発者が緊急にロールアウトすることなく、新しいプラットフォームバージョンが到着したときにアプリケーションを準備できるようにします。 SDKやNDKのAndroidのパブリックAPIを使用するアプリケーションは互換性がありますが、専用のAndroidインターフェイスとライブラリを使用するアプリはありません。

Android Pでは選択した非SDKインターフェイスへのアクセスを制限し、Googleのアプリチームを含む開発者に代わりに公開されている同等のものを使用するように漸進的なプロセスを開始しています。各自の利用状況に対応する公開情報がない場合は、このプロセスが開発者にとってできるだけスムーズであることを確認したいので、フィードバックを使用して、最初のロールアウトが影響を及ぼすことを確認します開発者が公共の選択肢に簡単に移行できるAPIが用意されています。

・いくつかの簡単な手順で開始する
まずアプリを互換性を持ってAndroid Pにシームレスに移行できるようにし、デバイスシステムイメージやエミュレーターシステムイメージをダウンロードし、現在のアプリをインストールしてテストするだけでOKです。必要な更新を行った後は、アプリのプラットフォームターゲットを変更せずにすぐにGoogle Playに公開することをオススメしています。

Android Pでテストまたは開発するには、Pixelシリーズをサポートする必要はなく、ほとんどの場合は代わりにテスト環境としてAndroid仮想デバイスをAndroidエミュレーターに設定することをオススメしています。まだエミュレーターを試していない場合は、信じられないほど高速で6秒以内で起動して使いやすく、ロングスクリーンやカメラカットアウトなどの次世代画面もモデル化できるので是非使ってみて下さい。

次にアプリのターゲティングを「P」に変更して、Android Pの完全な体験で実行します。アプリのtargetSdkVersionを 'P'に設定し、compileSdkVersionをandroid-Pに設定してビルドしてテストします。テストする領域と調整が必要な領域を見つけるために、Pをターゲットとするアプリの動作の変更を必ず確認してください。

準備が整ったら、Android Pに目を通し、アプリで活用できる新しい機能やAPIについて学びましょう。新しいAPIを簡単に調べるには、API差分レポートとAndroid P APIリファレンスをご覧ください。プレビュータイムラインとサポートリソースの詳細については、P Developer Previewサイトをご覧ください。また、このビデオでAndroid Pの新機能を紹介しています。

Android Pでビルドを開始するには、P Developer Preview SDKとツールをAndroid Studio 3.1にダウンロードするか、最新のAndroid Studio 3.2 canaryバージョンを使用してください。試してみるために、28.0.0のサポートライブラリのアルファ版もリリースしています。


https://youtu.be/LBBqTd6uOd4

追記(2018/03/08 05:55:44)
記事初出でタイトルおよび一部本文が「2017年Q3」となっていましたが、「2018年Q3」の間違いでした。修正してお詫びいたします。

追記(2018/03/08 07:55:02)
記事初出における本文にてAndroid Pの新機能が公式ブログのGoogle 翻訳で翻訳したものとなっていましたが、その後、Google 翻訳の翻訳をベースに編集して修正してしています。

記事執筆:memn0ck


■関連リンク
・エスマックス(S-MAX)
・エスマックス(S-MAX) smaxjp on Twitter
・S-MAX - Facebookページ
・Android P 関連記事一覧 - S-MAX
・Android Developers Blog: Previewing Android P