動的ライティング

このトピックでは、Windows アプリを使用して、オープンなヒューマン インターフェイス デバイス (HID)ライティングおよびイルミネーション標準を実装する接続デバイス全体に動的ライティング効果を提供する方法について説明します。 特に、1 つ以上のランプ (ライト、LED、電球など) を持つデバイスの LampArray 仕様に関するものです。

重要な API

概要

Windows での動的ライティングのサポートにより、アプリ開発者とエンド ユーザーの両方が、周辺機器やその他の接続デバイス間でライティング効果を制御および同期できます。

サポートされているアプリの種類とプラットフォーム

  • Win10 バージョン 1809 (2018 年 10 月) 以降。
    • フォアグラウンド UWP アプリと Win32 アプリに適用されます。
  • Windows 11 ビルド 23466 (プレビュー) 以降。
    • フォアグラウンドおよびバックグラウンド (アンビエント) UWP アプリと Win32 アプリに適用されます。
  • Xbox GDK の 2023 年 3 月の更新プログラム 1 以降。

サポートされているデバイスとデバイスの種類

  • キーボードまたはキーパッド
  • マウス
  • ゲーム コントローラー (ゲームパッド、フライトスティック、ステアリング ハンドルなど)。
  • 周辺機器 (スピーカー、マウス パッド、マイク、Web カメラなどの一般的なデバイス)。
  • シーン (電球、スポットライト、ストロボ ライト、ビルボード、カメラのフラッシュなどの部屋/ステージ/エリア デバイス)。
  • 通知 (アラーム、音声アシスタントなどのユーザーの注意を引くデバイス)。
  • シャーシ (RAM、マザーボード、ファンなどの内部 PC コンポーネント)。
  • ウェアラブル (ヘッドセット、時計、フィットネス トラッカー、靴などのアクセサリ)。
  • 家具 (椅子、机、本棚など)。
  • 芸術品 (絵画や彫刻など)。
  • ヘッドセット (ヘッドフォンやマイクなど、頭部専用に設計されたアクセサリ)。

Windows アプリを使用すると、アプリがフォアグラウンドにある場合 (Windows 10 以降)、およびバックグラウンドにある場合 ("アンビエント照明" とも呼ばれます。Windows 11以降) に HID LampArray デバイスを制御できます。

ユーザーは、 設定 -> パーソナル化 -> 動的照明 画面を使用して LampArray デバイス エクスペリエンス (フォアグラウンドとバックグラウンドの両方) をカスタマイズでき、さまざまな製造元のデバイスを同期したり、選択したデバイスやフォーム ファクター全体の明るさと効果を制御したり、アンビエント バックグラウンド アプリによるデバイスへのアクセスの優先順位を付けることができます。 これらの機能により、アプリはユーザーを楽しませ、生産性を高め、Windows 全体のエクスペリエンスをよりアクセシビリティに優れ、動的照明互換デバイスのセット全体でまとまりのあるエクスペリエンスを提供できます。

Screenshot of the Dynamic Lighting settings screen.

デバイスの優先順位付け

Windows では、アプリの状態に基づいて動的ライティングが優先順位付けされます。 既定では、ユーザーが [設定] で特に指定していない限り、フォアグラウンド アプリには常に LampArray デバイスの制御が割り当てられます。 2 つ以上のアンビエント バックグラウンド アプリが LampArray デバイスを制御しようとしている場合、システムにより、[設定] で優先順位付けされたアプリに制御が割り当てられます。

バックグラウンド (アンビエント) ライティング

Windows.Devices.Lights の "アンビエント" API を使用すると、バックグラウンド アプリケーションでは、ユーザーがフォアグラウンド にある関連付けられていないアプリ (同期されたライティング効果を使用する音楽アプリなど) を操作する場合に LampArray デバイスを制御できるようになります。

アプリでは、ユーザー設定に応じて LampArray.AvailabilityChanged イベントを受信できます。 DeviceWatcher クラスと組み合わせると、アプリでは、接続または切断されたすべての LampArray デバイスを追跡および管理し、ユーザーがアプリで制御予定のデバイスを確認できます。 使用例の 1 つは、接続されている各デバイスのアイコンをレンダリングする UI です。使用できないデバイスは灰色表示され、ユーザーがフォアグラウンドまたはバックグラウンド アプリの基本設定を変更できる [Dynamic Lighting] (動的ライティング) 設定ページにリンクされます。

ユーザー設定

ユーザーは、[設定] -> [個人用設定] -> [Dynamic Lighting] (動的ライティング) の [Dynamic Lighting] (動的ライティング) ページを通じて、個々およびグローバル レベルの両方で HID LampArray デバイスを制御および構成できます。 このページは、少なくとも 1 つの互換性のあるデバイスが PC に接続されている場合、[設定] に表示されます。

Screenshot of the Dynamic Lighting settings screen.

  1. 接続されると、互換性のあるデバイスがページの上部にあるデバイス カードに表示され、ユーザーはそこで個々のデバイス設定を変更できます。

  2. [Global Dynamic Lighting] (グローバル動的ライティング) 設定は、デバイス カードの下にあります (これらの設定の変更は、すべての接続デバイスに影響します)。

    1. ユーザーは [Use Dynamic Lighting on my devices] (デバイスで動的ライティングを使用する) トグルを使用して、動的ライティングのオンとオフを切り替えることができます。 動的ライティングがオフの場合、デバイスは動的ライティングなしの既定の動作で機能します。 動的ライティングには、組み込みの基本効果のセットが含まれています。
    2. Compatible apps in the foreground always control lighting (フォアグラウンドの互換性のあるアプリで常にライティングを制御する を使用すると、ユーザーは既定の動的ライティング アプリの動作をオンまたはオフにできます。 この機能をオフにすると、制御を必要とするフォアグラウンド アプリがアクティブな場合でも、バックグラウンド アプリは関連付けられているデバイスを制御できます。
    3. ユーザーは [Background light control] (バックグラウンド ライトの制御) セクションを使用して、アンビエント バックグラウンド コントローラーとして登録されたインストール済みアプリを優先順位付けできます。 アプリを一覧の一番上にドラッグすると、それが優先され、一覧内の他のアプリを超えてデバイスを制御できるようになります。 アンビエント バックグラウンド設定は、デバイスと、それが接続されているポートに関連付けられます。 LampArray を取り外して別の (USB) ポートに接続すると、別のデバイスとして表示されます。
    4. [明るさ] スライダーを使用すると、ユーザーはデバイスの LED の明るさを設定できます。
    5. [効果] ドロップダウンを使用すると、ユーザーはデバイス用の色と効果を選択できます。

    Screenshot of the Dynamic Lighting settings Effects screen.

Note

デバイスに [Background light control] (バックグラウンド ライトの制御) が選択されていない場合は、"自律モード" で動作します。つまり、デバイスは既定のファームウェア動作に戻ります。

パッケージ化とアプリ ID

アンビエント バックグラウンド アプリケーションでは、アプリ マニフェストで "com.microsoft.windows.lighting" AppExtension を宣言する必要があります (これを行う方法の詳細については、アプリ拡張機能の作成とホストに関するページを参照してください)。 この要件は AmbientLightingServer によって適用されます。これは、拡張機能をサポートするパッケージ ID (パッケージ アプリ) を持つプロセス内の AmbientLightingClient からの接続のみを受け入れます。 この要件は、ユーザーがインストール済みアプリのポリシーを定義し、実行時にそのポリシーを関連付けられるようにするために必要です。

アンビエント アプリケーションには アプリ ID が必要です。これは、実行時にユーザー設定を特定できるようにするためです。 アプリケーションがインストールされ、アンビエント API が使用されている場合、システムはアプリの実行中のインスタンスをユーザーの設定に関連付ける必要があります。 さらに、設定でユーザーがアプリを使用できるようにするには、アプリがアンビエント ライティング API の正当なユーザーであることをシステムに示すインストール後の成果物が必要です。

この ID 要件は、MSIX パッケージを使用して実現されます。

パッケージ化とインストールに MSIX パッケージを既に使用している場合は、追加の要件はありません。

パッケージ化されていないアプリがある場合は、アプリケーション ID を取得するために追加の手順が必要です。 インストールを完全な MSIX に移行することも、MSIX の簡略化された [Sparse Packaging and External Location] (スパース パッケージ化と外部の場所) 機能を使用することもできます。 外部の場所を使用したスパース パッケージ化は、セットアップ/インストールを MSIX に完全に変換することなく、既存のアプリのインストールでアプリ ID の利点を得られるよう設計されています。 これは、セットアップ/インストールの新しい手順で、インストールするアプリを表す MSIX パッケージを作成するツールが使用されます。

インストールについて説明する AppXManifest.xml パッケージ マニフェストを定義する必要があります。 MSIX パッケージは、MakeAppXPackage ツールを使用して作成されます。 インストール時に、インストールされている実行可能ファイルの場所を指定するパッケージ マネージャー API を使用して MSIX パッケージをインストールします。 便宜上、add-appxpackage PowerShell スクリプトでは、この API の動作もラップされます。 または、インストール時に AddPackageByUriAsync を使用して MSIX パッケージをインストールすることもできます。

パッケージ化されていないアプリのインストールの場合、実行可能ファイルに対する side-by-side アプリケーション マニフェスト要件もあります。

パッケージ化されたアプリとパッケージ化されていないアプリの詳細については、「デプロイの概要」を参照してください。

用語集

次の用語と概念は、さまざまなアンビエント ライティング システム コンポーネントを記述するために使用されます。

  • 自律モード

    ハードウェアがファームウェアで定義されている既定の動作にフォールバックするモードとして HID 仕様で定義されています。 たとえば、OS によってデバイスがアクティブに制御されていない場合や、ユーザーがデバイスに対する OS の関与をオプトアウトした場合に、デバイスに事前プログラミングされた視覚効果が既定で設定されている場合があります。 デバイスは、自律モードから戻り、ユーザーが期待するスムーズな操作を確実にするために、HID コマンドに応答する必要があります。

  • アンビエント アプリ

    パッケージ ID を持ち、必要なアプリ拡張機能もサポートする Windows.Devices.Lights API コンシューマー。 アンビエント アプリは、AmbientLightingClient から通知を受け取ります。 イベントにより、アクセスできるデバイスがアプリに通知されます。 この方法で、アプリでは、接続されている照明デバイスを列挙する UI を表示でき、ユーザー ポリシー設定によって現在アクセスできないデバイスを灰色表示できます。 アンビエント アプリでは Windows.Devices.Lights API が利用され、使用可能なデバイス全体に効果が適用されます。

  • 設定アプレット

    デバイスごとのユーザー設定をレジストリの HKEY_CURRENT_USER (HKCU) に格納します。 ユーザーは、特定のデバイスのアンビエント アプリの優先順位付けされたセットをデバイスごとに定義できます。 ユーザーは動的ライティングをオプトアウトすることもできます。

  • アプリ ID

    アプリ モデルの概念です。 アプリ ID を持つアプリは、実行時にシステムによって識別できます。

  • MSIX

    以前は APPX と呼ばれていた、Microsoft のデプロイとパッケージ化のテクノロジです。

LampArray サンプル

Windows.Devices.Lightswindows.Devices.Lights.Effects API を使用して周辺機器の RGB 照明を制御する方法を示します。

AutoRGB サンプル

デスクトップ画面から 1 つの代表的な色を抽出し、それを使用して、接続された RGB デバイス上の LED ランプを点灯させる方法を示します。

関連項目