移行オプション
Chrome アプリから移行するには、主にウェブ アプリケーションと Chrome 拡張機能の 2 つの方法があります。
ほとんどの場合、ウェブ アプリケーションを使用することをおすすめします。Chrome 拡張機能は、ユーザー インターフェースのないバックグラウンドでの実行など、ウェブでサポートされていないユースケースで使用できます。
ウェブ アプリケーション
Chrome アプリから移行する場合は、代わりにウェブ アプリケーションを構築することをおすすめします。これにより、Web 機能プロジェクトのような高度な機能を使用できます。機能プロジェクトに含まれる API は、これまで Chrome アプリ API で実現できたほとんどのユースケースに対応しています。ただし、これらの機能の使用は必須ではありません。ウェブは柔軟性が高いため、デベロッパーは自分のニーズに最適な複雑さのレベルを選択できます。
ウェブ アプリケーションのメリット
ウェブ アプリケーションには、Chrome アプリケーションに比べて次のような利点があります。
- ポータビリティ: Chrome アプリは Chrome でのみ動作します。ウェブ アプリケーションは、ほとんどのブラウザとオペレーティング システムで利用できますが、サポートする API はブラウザとオペレーティング システムによって異なります。
- デベロッパー エクスペリエンス: Chrome アプリはウェブ アプリケーションと同じ技術(HTML、JavaScript、CSS)を使用していますが、Chrome アプリの一部の高度な機能(バックグラウンド ページなど)は標準ではないため、追加の知識が必要になります。
- 機能セット: Chrome アプリでは、サポートが終了した API や新機能で更新されていない API が使用されます。ウェブ アプリケーションはオープンウェブに依存しています。オープンウェブは継続的に進化しており、すべての最新の API にアクセスできます。
- インストールと更新: Chrome アプリのインストールと更新は手動で行う必要があります。また、場合によってはストアの審査が必要となります。ウェブ アプリケーションはブラウザから直接アクセスでき、必要に応じてインストールすることもできます。ウェブ アプリケーションの更新は、デプロイ後、ブラウザが新しいファイルを取得するとすぐに行われます。
- サポート: Chrome アプリとウェブ アプリケーションのどちらにも大規模なコミュニティがありますが、ウェブ プラットフォームの方がはるかに大きな存在感を示し、フレームワークやライブラリなど、デベロッパーをサポートするために幅広い開発ツールを提供しています。
プログレッシブ ウェブアプリ
プログレッシブ ウェブアプリ(PWA)は、最新の API で構築、最適化され、機能、インストール性、信頼性を強化したウェブ アプリケーションです。これらの機能を実装すると、ウェブ上でのアプリのようなエクスペリエンスを実現できます。
インストール可能性
PWA は、パソコン プラットフォームとモバイル プラットフォームのどちらにもインストール可能ですが、ブラウザから直接アクセスできるため、省略可能です。PWA のインストールを選択したユーザーは、アイコンとショートカットを使用して PWA を起動できます。PWA のウェブ マニフェスト ファイルでメタデータを指定して、インストール後に起動すると、別のウィンドウで開くことを明示できます。
信頼性
PWA は、ネットワークが厳しい状況でも安定して機能します。これは、Service Worker と呼ばれる PWA のコア コンポーネントによって実現されます。Service Worker を使用すると、ネットワーク リクエストをインターセプトして、キャッシュに保存されたコンテンツを提供することで、アプリがオフラインの場合や接続が不安定な状況でも確実に動作できます。Workbox などのライブラリには、一般的なオフライン機能を実装するためのすぐに使える戦略が用意されており、開発を大幅に簡素化できます。
充実した機能
Web Capabilities プロジェクトは、Chrome アプリに実装できるさまざまなユースケースをウェブ アプリケーションで実現するのに役立ちます。ただし、ウェブのセキュリティ モデルには一定の制限が課されます。以下に、既存の Chrome アプリ API の代わりに使用できる高度なウェブ機能の例を示します。
- Bluetooth と USB アクセス: ウェブ Bluetooth とウェブ USB は、それぞれ
chrome.bluetooth
とchrome.usb
に代わるものです。 - ファイル システム管理: File System Access API は
chrome.fileSystem
API に代わるものです。 - ショートカット: ウェブアプリは、さまざまなキーイベント(keydown など)をリッスンすることによりキーボード ショートカットをサポートできますが、サポートできるショートカットは限られています。ウェブアプリを全画面モードで使用する場合、Keyboard Lock API を使用してこれらのシステム ショートカットをインターセプトできます。
- 永続ストレージ: ウェブ アプリケーション内で永続ストレージ権限をリクエストすると、Chrome アプリの
unlimitedStorage
権限と同様の機能を提供できます。 - 位置情報: Geolocation API をウェブアプリで使用すると、位置情報の利用許可の代わりにユーザーの現在地を特定できます。
- バックグラウンド処理:
background
権限の代わりに、Background Sync API や Periodic Background Sync API を使用できます。 - クリップボードにコピー: 非同期クリップボード API を使用すると、テキストと画像の両方をプログラムでコピーして貼り付けることができます。
Chrome 拡張機能
Chrome アプリから移行する方法としてはウェブ アプリケーションが適していますが、Chrome 拡張機能を使用できる場合もあります。拡張機能は、ウェブ テクノロジー(HTML、CSS、JavaScript)で作成されており、ブラウザ機能の追加や変更、ユーザー エクスペリエンスの向上のために他のウェブ アプリケーションのカスタマイズに使用できます。
スタンドアロンの拡張機能を作成する
提供するユーザー エクスペリエンスによっては、Chrome アプリを拡張機能に変換したほうがよい場合もあります。たとえば、ユーザー インターフェースに小さなポップアップ ウィンドウを表示するブラウザ アクション ボタンや、拡張機能が提供するページに移動するボタンを指定できます。この UI モデルは、処理のほとんどをバックグラウンドで実行するアプリに適しています。
ウェブ アプリケーションから Chrome 拡張機能を接続する
Chrome アプリがウェブ プラットフォームで利用できない機能を提供する場合は、Chrome 拡張機能をウェブ アプリケーションに接続して、拡張機能 API にアクセスできるようにします。この方法の欠点は、ユーザーと IT 管理者が 2 つの異なる部分(ウェブ アプリケーションとコンパニオン拡張機能)を管理しなければならないことです。ブラウザによっては Chrome 拡張機能を実行できないのでご注意ください。 必要な機能が利用できない場合は、それを検出して他のブラウザでユーザーに説明テキストを提供してください。
ウェブ アプリケーションと Chrome 拡張機能のどちらを作成すればよいですか?
Chrome アプリからの移行に推奨される技術はウェブ アプリケーションです。いくつかのユースケースでは、Chrome 拡張機能のほうが適している可能性があります。どちらが良いかをさまざまな要素で分析してから判断します。
- 目的: Chrome 拡張機能は、主にブラウザの機能を拡張する目的で使用されます。一般的なユースケースには、生産性向上ツール、ウェブページ コンテンツ拡充、情報集約などがあります。ウェブ アプリケーションは、ウェブの機能を最大限に活用することで、幅広いユースケースに対応できます。
- ユーザー エクスペリエンス: Chrome 拡張機能のユーザー インターフェースは通常、ブラウザと連携するように設計されています。ウェブ アプリケーションは、ネイティブ アプリのように見える多機能なユーザー インターフェースを備え、高度なカスタマイズが可能です。
- ポータビリティ: Chrome 拡張機能は Chrome 専用です。一部のブラウザ(Firefox や Edge など)では Chrome と同じ拡張機能 API がサポートされていますが、すべてのブラウザがこのサポートに対応しているわけではありません。ウェブ アプリケーションはすべてのブラウザでサポートされています(すべての API がサポートされているわけではありません)。
- 見つけやすさ: Chrome 拡張機能を(Chrome ウェブストアやセルフ ホスティングなどから)インストールし、ブラウザのツールバーからアクセスする必要があります。ウェブ アプリケーションは URL 経由で瞬時に読み込まれ、すべてのブラウザからアクセスできます。インストールは任意ですが、必須ではありません。
- 機能セット: Chrome 拡張機能は、Chrome API を介して Chrome と密接に統合されています。ウェブ アプリケーションは、ローレベルまたはシステムレベルのタスクで制限を受ける場合があります。前述のとおり、ウェブ アプリケーションから拡張機能を呼び出し、拡張機能のみの API にアクセスすることもできます。
- バックグラウンド処理: Chrome 拡張機能は、バックグラウンド処理を実行し、ブラウザ ウィンドウを閉じた状態でも実行できます。一方、ウェブ アプリケーションは通常、フォアグラウンドで動作するように設計されており、バックグラウンド機能は限定的であり、主にパフォーマンスと信頼性の用途に使用されます。
移行の手順
Chrome アプリの移行
Chrome アプリからウェブ アプリケーションまたは Chrome 拡張機能に移行する手順は次のとおりです。
- アプリの機能の範囲を設定する: 場合によっては、ウェブ アプリケーションを採用する必要があるか、Chrome 拡張機能を構築するのが唯一の選択肢となるかが、アプリによって決まります。両方がニーズを満たせる場合は、選択肢があります。各技術の機能について詳しくは、Web Capabilities のサイトと Chrome Extension API リファレンスをご覧ください。
- 学習と構築: 学習リソースに従ってテクノロジーを理解し、アプリの使用を開始する。PWA トレーニングと Chrome 拡張機能のスタートガイドは、これらの技術を始めるにあたって参考になるリソースです。
- テストと配信: 広範囲にリリースする前には、新しいアプリを少数のユーザーにのみ公開し、適切に機能するようにします。さらに広範に配布するために、ブラウザからウェブ アプリケーションにアクセスしてインストールすることが可能です。Chrome 拡張機能は通常、Chrome ウェブストアから配布されるか、自己ホスト型で配布されます。管理対象のシナリオでは、どちらも管理者が自動インストールできる。
ユーザーを移行する
Chrome アプリから移行するテクノロジーに関係なく、ユーザーに現在のアプリをアンインストールするよう通知し、新しい操作方法を使用できるようにする必要があります。
アプリを更新して、サポートが終了していることと、ユーザーに今後ウェブサイトまたは Chrome ウェブストアにアクセスする必要があることを示すメッセージを含めることをおすすめします(次の例を参照)。また、uninstallSelf()
メソッドを呼び出す「アンインストール」ボタンを含めることもできます。
Chrome 75 以降では、Chrome アプリ内で installReplacementWebApp()
メソッドを使用し、ボタンのクリックや他のユーザー操作に応答して、代わりのウェブアプリのインストール フローを自動的に開始できます。
もう 1 つの考慮事項は、Chrome Enterprise ブラウザと ChromeOS Enterprise の管理者に、組織のアプリポリシーを更新するよう通知することです。Enterprise と Education の管理対象ユーザーが、アプリと拡張機能を管理ポリシーによって自動インストールすることは一般的です。デベロッパーは、ExtensionInstallForcelist ポリシー(Chrome アプリのインストールに使用)を更新し、これを WebAppInstallForceList ポリシーに置き換えて、ウェブアプリの URL に置き換えるよう管理者に連絡する必要があります。
サポート
技術的な質問がある場合、サポートを受ける際に利用できるリソースを以下に示します。
- Chrome アプリからウェブ アプリケーションまたは Chrome 拡張機能への移行についてご不明な点がございましたら、Discord の ChromeOS デベロッパー コミュニティにご参加ください。
- ウェブアプリ機能が見つからない場合は、[Capabilities(Project Fugu)] で新しい機能をリクエストしてください。