[Windows10] インテントにようなアプリ間のデータ共有の仕組み ~コントラクト

PCのブラウザで閲覧しているphp(ログインが必要なページ)から出力されたWebページを簡単に分析に回せるシステムが欲しくて、少し調べてみました。

いちいちソースを保存して、分析スクリプトにかけるのも煩わしいので、何かうまいやり方がないかと探したのですが…

Androidでできること

スマートフォン(Android)の特徴的な機能に、「インテント」という仕組みがあります。

これは、主に「共有」をするために仕組みで、例えば、カメラアプリで撮った写真を、写真編集アプリに送りトリミングなどの処理をして、SNSアプリを通して共有するということが、ファイルシステムを意識せずにできます。

ファイルの保存・開くを意識せずに、アプリ間でデータを加工しながら処理していくことができるので、「インテント」は、コマンドラインの「パイプ処理」のように、滑らかに機能を組み合わせて使うことができます。いわば、GUIのパイプといえ、Android OSの素晴らしい機能だと思います。

Windows PCでは…

Windows PCでは(多少の違いはありますが)Windows8からMetro Styleアプリ向けの「コントラクト」という名前であります。


Windows 8でMetro Styleアプリケーション向けに追加された機能に、「コントラクト」がある。これは、アプリケーションがWindowsやほかのアプリケーションに対して、持っている機能を提供するための仕組みだ。これを使うと、写真編集アプリからSNSアプリの投稿機能を呼び出して、写真を投稿するといった仕組みが簡単に作れる。

アプリケーション自体を指定せずに、機能だけを指定してほかのアプリケーションを起動することは、Androidでも「インテント」として実装しているので、Windows 8が初めて実装する機能というわけではない。しかしAndroidのインテントは、扱うデータタイプを指定して処理可能なアプリケーションをリストアップして、どのアプリケーションを使うのかをユーザーに指定させる「機能の検索」である。  対するコントラクトは、「共有」や「設定」などの機能は決まっていて、処理可能なアプリケーションを探すものになっている。提供する機能は限られるものの、アプリケーション側が対応することで、ほかのアプリケーションがこうした機能を利用できるようにしているわけだ。

Windows10でも、Universal Windows Platformアプリ(Metro Styleアプリの後継)から(チャームがなくなりましたが、明示的に)呼び出して使うことができます。

共有コントラクトってUWPでも言うんですかね? Windows 8で追加されて、めでたく?Windows 10で廃止されたチャームにあった共有ですが、UWPではアプリから明示的に共有を表示してやる必要があります。それ以外はWindowsストアアプリの頃と変わっていません。(ストアアプリの頃も明示的に自分で共有のUI呼び出せたけど、特に理由がない限りチャームがあったのでする必要はなかった)