続き:シンプルなChromeアプリケーションの作成
なぜ
同じ機能を完全に異なるテクノロジーを使用して実装できます。Windows用のプログラムを作成したり、Webサービスを作成したり、Androidおよび/またはiOS用のモバイルアプリケーションを作成したりできます。 著者がChromeアプリを選ぶように促すものは何ですか?
- ChromeOSで作業します。 現在のところ、ChromeアプリはChromebookのユーザーにプログラムを提供する主な方法です。 それは価値がありますか? Chromebookは、たとえばWindowsコンピューターよりも少ないですが、傾向は変化しています。 昨年米国で販売されたMacbookの5倍のChromebook
- Chromeアプリケーションは、Windows、Linux、およびOS Xで余分な労力をかけずに実行できます。もちろん、アプリケーションを移植可能にする方法は他にもたくさんありますが、そのほとんどは明らかに高価です。
- 最近、 ChromeアプリをAndroidとiOSに移植することが可能になりました。
- ほとんどのシステムでは、Chromeアプリケーションはユーザーにとって通常のプログラムのように見えます。 これらは、[スタート]メニューから起動され、ブラウザコントロールなしで通常のウィンドウを開き、ファイルを開くためのデフォルトプログラムとして使用できます。
完全なプログラムとして。
パッケージ化されたアプリとホストされたアプリ
Chromeにインストールされているデフォルトのアプリケーションのリストに、検索、Gmail、Googleドライブのアイコンが表示されていました。 それらのいずれかをクリックすると、アプリケーションに似たものは何も開きません。 代わりに、ユーザーは単に対応するサービスのページに転送されます。
実際には、ホスト型アプリとパッケージ型アプリという2つの根本的に異なる種類のアプリケーションがあります。 残念なことに、彼らのために確立されたロシア語の用語はありません。 検索、Gmailなどがホストされています。 このようなアプリケーションは、URLとセキュリティ設定、およびアイコンを含むmanifest.jsonファイルで構成されます。 実際、ホスト型アプリはオンラインサービスの特別なブックマークです。
ホスト型とは異なり、パッケージ化されたアプリの場合、アプリケーションの動作に必要なすべてのファイルはユーザーのコンピューターに保存されます。 このようなアプリケーションは、原則として、オフラインでの動作が改善され、ウィンドウを管理できます。通常、Chromeプログラミングインターフェイスにアクセスできます。
将来的には、パッケージ化されたアプリに焦点を当てます。
アプリケーションと拡張機能
ユーザーの観点から見ると、拡張機能とアプリケーションはまったく異なる機能を実行します。拡張機能はブラウザーの使用方法を変更し、アプリケーションはブラウザーとは別のタスクを実行します。 拡張機能はページのコンテンツを変更し、場合によってはいくつかのボタンを追加します。通常、アプリケーションは独自のウィンドウで動作します。
同時に、内部からの拡張機能とアプリケーションは非常に似ています。 これらは両方とも、 Chrome Web Storeからインストールされます。これは、zipアーカイブである.crxファイルです。 拡張機能/アプリケーションのプロパティはmanifest.jsonファイルで説明されており、それらのUIはHTML5で記述されています。 拡張機能とアプリケーションの両方で、多くのChromeプログラミングインターフェイスを使用できます。
同時に、大きな違いがあります。 アプリケーションは、拡張機能で利用できない機能を使用できます。
- あなたの窓を管理する
- ユーザーのコンピューター上のファイルを直接操作する、
- オペレーティングシステムによって特定の種類のファイルを開くためにプログラムによって割り当てられ、
- TCPおよびUDP接続を開きます(たとえば、これはChromeのSSHクライアントによって使用されます )。
- USBで動作します。
開発機能
ユーザーの観点からは、Chromeアプリケーションは通常のプログラムとそれほど変わらないことを既に述べました。 同時に、プログラマーの観点から見ると、構造がまったく異なります。 簡単な操作もあれば、複雑な操作もあります。
アプリケーションで使用されるインターフェイスの多くは、 一般に受け入れられている標準であり、すべてのWeb開発者によく知られています。 HTMLおよびCSSは、HTTPを操作するためのUI、XMLHTTPRequestなどに使用されます。
Chromeアプリケーションでは、異なるコンピューター上のアプリケーションインスタンス間の同期は、ほとんど労力をかけずに実装されます。 外部リソースに依存する他のすべてのインターフェイスと同様に、ファイルの操作は非同期に配置されます。 一方では、これにより対応する操作のコードが多少複雑になりますが、他方では、インターフェイスの応答性が保証され、ブロッキングが防止されます。
Chromeのもう1つの機能はセキュリティ管理です。 Chromeでは、従来のオペレーティングシステムとは動作が異なり、Androidのセキュリティシステムにより類似しています。 Chrome開発者は、ソフトウェアインターフェースの追加に関して常に保守的でした。 システムを開発する場合、セキュリティ制限をより厳格にするよりも、時間の経過とともにセキュリティ制限を緩和する方が簡単です。 その結果、たとえば、アプリケーションはファイルシステムに無制限にアクセスできません。 ほとんどの場合、アプリケーションに属するファイルまたはユーザーが明示的に開いたファイルを処理します。
HTML + JavaScript以外に使用できるもの
もちろん、Chromeの主要なプログラミング言語はJavaScriptです。 しかし、これはすべてのコードを書き換える必要があるという意味ではありません。 Chromeアプリケーションで他のプログラミング言語のコードを使用できるようにするソリューションがいくつかあります。 それらの中には:
- ネイティブクライアント。 コードは、プロセッサによる実行とブラウザによる検証の両方を許可するようにコンパイルされます。 NaClコードは、 Pepper APIのかなり豊富なセットを使用して、特にファイルシステム、OpenGL、サウンドの操作など、外の世界と通信します。
- Emscripten NaClが適切でない場合は、C ++から直接JavaScriptにコードをコンパイルできます。 最新のブラウザでは、結果のJavaScriptは、マシンコードにコンパイルされた場合よりも数倍しか動作しません。 プラスから-JavaScriptからアクセス可能なすべてのインターフェイスとの互換性。
例
結論として、私自身が取り組んだアプリケーションの例を挙げます(そして
私は働く)。 これはテキストエディターTextです。 エディターコードはgithubで入手できます 。 実際の編集には、 CodeMirrorライブラリが使用されます。 アプリケーションは、ファイル、ウィンドウ、保存設定、およびその他の必要な機能を使用して作業を実装します。