- ※適用バージョン:Windows 10 version 1709(build 16299)以降
はじめに
「タイムライン」はWindows 10 1803の新機能で、タスクビューの下に表示されます。これまで同様に、[スタート]ボタンの2つ右にある[タスクビュー]ボタンを押したり、[Windows+Tab]キーを押したりすることで、アプリを切り替えるためのタスクビューが表示されます。Windows 10 1803では、タスクビューのアプリ一覧の下に「タイムライン」が追加されています(次の画像)。
「タイムライン」には、アプリが登録した「ユーザーアクティビティ」がカードの形で表現されています。例えば上の画像の左下に「UF05.sln」と書かれた黒っぽいカードがありますが、これはVisual Studio 2017が登録した「ユーザーアクティビティ」です。ユーザーがVisual Studioを使って「UF05.sln」(ちなみに、この記事のサンプルコードです)で何か作業をしたという記録です。この「UF05.sln」のカードをクリックすると、Visual Studioが立ち上がって「UF05.sln」が開かれるので、ユーザーは作業の続きを行えるという仕組みです。「UF05.sln」カードの上に「今日」とあり、右側のスライダーの上端に「現在」、下端に「4月3日」とあることから、「ユーザーアクティビティ」カードは時系列に管理されていると分かります。「ユーザーアクティビティ」とは、「いつ」/「どんなアプリが」/「何をしていたか」というアプリの状態を表すもので、「タイムライン」はそれを時系列で見せる仕組みなのです。
この「タイムライン」を利用するAPIは、UWP(Universal Windows Platform)のものだけが公開されていますが、Windows FormsやWPFなどの従来のデスクトップアプリからも利用できます。なお、「タイムライン」を表示する機能はWindows 10 1803で搭載されましたが、利用するAPIの方は先行して1709(build 16299)で導入済みです。今回は、UWPアプリから「タイムライン」を利用する方法を解説します(WPFアプリから利用する方法を次回に予定しています)。
対象読者
- UWPアプリの開発者
- Windows用のアプリを作っている開発者で「タイムライン」に興味のある人
必要な環境
サンプルコード(GitHub)を試してみるには以下の環境が必要です。
- Windows 10 1803以降
- Visual Studio 2017 Version 15.5以降(無償のCommunity Editionで可)
- UWP用Windows 10 SDK:C#/VB用の10.0.16299以降
どんな機能なのか?
アプリから見ると「タイムライン」には2つの機能があります(次の図)。一つは、Windows.ApplicationModel.UserActivities名前空間のAPIを使って、アプリから「ユーザーアクティビティ」を登録する機能。もう一つは、プロトコルアクティベーション(URIのアクティブ化、URIアクティベーション)によって「タイムライン」からアプリを起動する機能。このプロトコルアクティベーションによって起動された場合、アプリはその「ユーザーアクティビティ」の状態を復元しなければなりません。
UserActivities名前空間のAPIを使って「ユーザーアクティビティ」を登録する方法は、UWPアプリも従来のデスクトップアプリも同様です(従来のデスクトップアプリでは第2回で説明したようにUWP APIへの参照を手作業で追加します)。
プロトコルアクティベーションは、UWPアプリではマニフェストに宣言し、アクティベーション時の処理を書きます。
サンプルプログラムの題材としてはごく簡単なWebブラウザにしました(次の画像)。テキストボックスにURLを入力して[Go]ボタンを押すと、そのWebページを表示するとともに、そのときの時刻などを「ユーザーアクティビティ」として「タイムライン」に登録します。ボタンの右側には、「タイムライン」に登録するときに後述するアダプティブカードを使うか(使うとしたらJSON定義によるかコードでの動的生成か)を選択するラジオボタンを置いてあります。このアプリに、「ユーザーアクティビティ」の登録とプロトコルアクティベーションの機能を組み込んでみましょう。
「タイムライン」からプロトコルアクティベーション以外の起動法
本稿執筆時点の情報では、「タイムライン」から起動してもらう方法としてプロトコルアクティベーションしか見つけられませんでした。しかし、実際にはそれ以外の方法もあるようです。というのも、レジストリをざっと検索した限りではプロトコルアクティベーションの登録をしていないように見える「メモ帳」なども「タイムライン」に対応しているからです。