Android 8.0に対するメンテナンスリリースとして8.1が開発中です。すでに10月からプレビューが公開されており、11月には2回目のプレビュー版が配布されました。予定では12月以降に完成版という予定なので、速ければ年内にも一般向けのOTAが始まるのではないかと思われます。

Android 8.1は、基本はOreoですが、APIレベルが26から27に上がり、アプリケーション側からみると、8.0とは区別されるリリースとなります。

とりあえず、Pixel 2に11月に配布されたPreview2を入れてみました。GUI面では、ほとんど違いがありません。Android 8.0を入れたNexus 5Xと比較してみましたが、ラウンチャーの違い(Nexus5XにはGoogle Nowラウンチチャーが標準搭載)を除くと、設定項目でちょっとした違いがありました。

  • Android 8.1では、「最近開いたアプリ」が表示されるようになっていた

  • 8.1では「通知」でデフォルトの通知音を設定できる

  • 同8.1では「電池」にアンビエント表示の設定項目があるが、8.0にはない。ただし、両バージョンとも「ディスプレイ」に設定がある

  • 8.1では、ユーザー補助に「色反転」、「色補正」の項目が追加されている

プレビュー版では、基本的には、APIセットの差しかないようです。もちろん、正式に配布が行われるときに、GUI関連でなんらかの変更がある可能性もありますが、基本的にはほぼ同じと見ていいでしょう。

APIレベルが変わる

Androidには、システムが装備しているAPIのセットを区別するために「APIレベル」があります。これは、Androidのアップデートで変更されるものですが、基本的にAPIが変更された場合のみ変わる番号です。

すべてのアプリは、このAPIレベルを見て、アンドロイドで動作できるかどうかを判断します。なお、アプリは、APIレベルを範囲で指定できるため、複数のAndroidバージョンに対応させることが可能です。

今回プレビューしているAndroid 8.1はAPIレベルが27で、Android 8.0は26でした。このため、アプリケーション側からAndroid 8.0と8.1は違う実行環境になります。しかし、APIレベルの違いは、GUI面の変更を意味していません。実際の違いは、APIレベルに応じて導入されるアプリや標準搭載のソフトウェアモジュール(こちらもAPIレベルを見て動作できるかどうかを決めている)で決まります。

その点からすると、APIレベルの変更とは、アンドロイド自体が改良されたことを意味しますが、見た目が変わるかどうかについてはなにも手がかりを与えてくれません。ただし、APIレベルの変更に伴い、挙動が変わることがあるため、それに応じて見た目が変わる可能性があります。

では、今回のAPIレベルの変更はどういうものなのでしょうか。Googleの文書によると、変更点は以下のようなものになります。

  • ニューラルネットワークAPI
  • ローメモリデバイスの定義
  • Video thumbnail extractor
  • Shared memory API
  • 暗号APIの改良
  • WallpaperColors API
  • Autofill frameworkの改良
  • 通知動作の改良
  • EditTextコントロールの改良
  • Programmatic Safe Browsing actions
  • 指紋認証の改良

このうち大きなものは「ニューラルネットワークAPI」です。これは、Googleの機械学習フレームワークである「TensorFlow」をモバイル用に改良した「TensorFlow Lite」がAndroidに組み込まれ、APIとして利用できるようになったものです。

最近では、AI関連の技術がさまざまな分野で使われています。その多くは、ディープラーニングと呼ばれる機械学習を利用したものです。こうした機械学習では、大規模なデータを使ってニューラルネットワークの多数のパラメーターを計算します。これを「学習」といいます。こうした学習は、データセンターのようなところでGPUや専用チップを搭載したサーバーで行われています。

学習を行わせたニューラルネットワークを使って、何らかの判断を行わせることを「推論」といいます。

これまでモバイルデバイスから機械学習を使った機能を利用する場合、高速な推論ができるようにニューラルネットワークを簡略化してアプリに組み込んだり、アプリが必要な情報をクラウド側にあるサーバーに送信して推論することが行われてきました。

今回のAPI27からは、アンドロイドのAPIとして、ニューラルネットワークを扱う機能が提供されます。これをニューラルネットワークAPIと呼び、アンドロイドデバイス側に「アクセラレーター」と呼ばれる専用ハードウェアが装備されていれば、これを使って高速な推論処理を行うことができるようになります。

今年発表されたPixel2などのスマートフォンには、そのための専用ハードウェア(前回紹介したPixel Visual Core)があります。また、HUAWAIのMATE10など、AI専用チップを搭載したスマートフォンも登場しており、これらもAndroid 8.1のニューラルネットワークAPIに対応しているようです。

ニューラルネットワークの利用方法についてアンドイロド標準の方法が確定したため、AIを使ったアプリが増えるだけでなく、各種のAI機能を提供するライブラリなども流通する可能性があり、さまざまなアプリにAI機能を組み込めるようになりそうです。また、AIアクセラレーターの搭載が来年のスマートフォンのポイントになりそうです。というのもアクセラレーターの有無がアプリ動作速度の差になる可能性があるからです。

その他の改良点

その他の改良点ですが、主要なものをざっと解説しておきます。「ローメモリデバイスの定義」では、メモリ搭載量が少ないスマートフォンかどうかをインストーラー側で判断できるようになりました。このため、メモリ搭載量に応じてインストールするアプリを変えるといったことが可能になります(もちろん、あらかじめメモリの多い機種用と少ない機種用のそれぞれに対応したアプリを作っておく必要があります)。

「Video thumbnail extractor」は、動画から場所を指定してサムネイル画像を作る機能です。これを使えば、ユーザーが撮影した動画や合成したビデオなどに複数のサムネイル画像をつけることが可能になります。

「Shared memory API」は、アプリ間で情報を交換するためにメモリ内の一定範囲を共有する仕組みです。これがあると、情報を一旦ファイルなどに書き出す必要がなく、アプリ間のデータ共有が高速に行えるようになります。

「暗号APIの改良」では、暗号化に利用するソフトウェアが切り替わります。これまでの暗号化APIは、「Bouncy Castle」と呼ばれるオープンソースの暗号化ソフトウェアをベースにしたものでした。API27からは「Conscript」というオープンソースの暗号化ソフトウェアに変更になり、同時に暗号化アルゴリズムが追加されるようです。

APIの変更は、アプリの可能性を広げるとともに挙動の変更を伴うことがあります。改良などにより、従来のアプリのうち、動作しないものや、設定変更が必要になるものなどが出てくる可能性があります。プレビュー版を配布するのは、開発者に対して、そうした問題に早期に対応してもらうためです。