CameraX の概要

CameraX は、カメラアプリの開発を簡単に行うための Jetpack サポート ライブラリです。ほとんどの Android デバイスで機能する、使いやすく一貫性のある API サーフェスを提供するほか、Android 5.0(API レベル 21)への下位互換性も備えています。

CameraX は camera2 の機能を利用する一方で、ライフサイクルに対応した、シンプルなユースケース ベースのアプローチを使用します。また、デバイスの互換性に関する問題が解消されるため、コードベースにデバイス固有のコードを含める必要がありません。これらの機能により、カメラ機能をアプリに追加する際に作成する必要があるコードの量を減らすことができます。

最後に、デベロッパーは CameraX を使用することで、プリインストールされているカメラアプリと同じエクスペリエンスおよび機能を活用できます。しかも、追加するコードはわずか 2 行です。 オプションのアドオンである CameraX の拡張機能を使用すると、サポート対象のデバイス上のアプリ内に、ポートレート、HDR、夜景、美容などの効果を追加できます。

CameraX ライブラリはアルファ版であり、API サーフェスはまだ完成していません。本番環境ではアルファ版のライブラリを使用しないことをおすすめします。API サーフェスはソースとバイナリに関して互換性のない方法で変更される可能性があるため、本番環境ではアルファ版のライブラリに絶対に依存しないようにする必要があります。

主なメリット

CameraX は以下の方法でデベロッパーのエクスペリエンスを改善します。

使いやすさ

CameraX は互換性を重視している

図 1. CameraX は Android 5.0(API レベル 21)以上を対象としており、ほとんどの Android デバイスで使用できます。

CameraX にはユースケースが導入されています。ユースケースを使用すると、必須のタスクに集中することができ、各デバイスの微妙な違いに対処することに時間を費やす必要がなくなります。基本的なユースケースとして以下のものがあります。

  • プレビュー: 画像を表示します。
  • 画像解析: アルゴリズムで使用するバッファにシームレスにアクセスします(MLKit に渡すためなど)。
  • 画像キャプチャ: 高画質の画像を保存します。

これらのユースケースは、Android 5.0(API レベル 21)以上を実行するすべてのデバイスで使用できるため、市販のほとんどのデバイスで同じコードが動作します。

デバイス間の一貫性

図 2. CameraX Test Lab の自動化により、さまざまなデバイスタイプおよびメーカー間で一貫性のある API エクスペリエンスを実現できます。

アプリ間で一貫したカメラの動作を管理することは困難です。アスペクト比、画面の向き、回転、プレビュー サイズ、高解像度画像サイズなど、さまざまなことを考慮する必要があります。CameraX では、こうした基本的な動作に対処します。

Google は Android 5.0(API レベル 21)以来、各種のデバイスとすべてのオペレーティング システム フレーバーでさまざまなカメラの動作をテストする CameraX Test Lab の自動化に投資しています。これらのテストは継続的に実施されており、さまざまな問題を特定して解決しています。

Google では、テストの負担がいずれ大幅に軽減されるようになることを目指しています。

新しいカメラ体験

図 3. CameraX は、ポートレート効果などの新しいアプリ内エクスペリエンスを実現します。この画像は、Huawei Mate 20 Pro で CameraX を使用してキャプチャしたものです。

CameraX には、拡張機能と呼ばれるオプションのアドオンが用意されています。拡張機能を使用すると、デバイスに付属している標準のカメラアプリと同じ機能を利用できます。しかも、追加するコードはわずか 2 行です。

利用可能な機能には、ポートレート、HDR、夜景、美容などがあります。これらの機能はサポート対象のデバイスで利用できます。

参考情報

CameraX について詳しくは、以下の参考情報をご確認ください。

コードラボ

  • CameraX のスタートガイド
  • CameraView フラグメントのアプリへの追加
  • コードサンプル

  • CameraX の公式サンプルアプリ