8.1の新機能「キオスクモード」の使用方法と注意点を説明する。店頭に置いて来店客に操作してもらう、あるいは、アンケートの調査員に渡して入力してもらう、などといった用途だ。8.1)の新機能「キオスクモード」を使うと、特定のWindowsストアアプリだけを実行する専用端末にできる。本稿では、キオスクモードで利用するアプリを開発する際の注意点を解説する。2013)が必要である。Windows(日本語版)*1を使用して動作を確認している。Windows」から無償で入手できる。access」と呼ばれる。8.1上での表記は「割り当てられたアクセス」だ*2。正式名称では分かりづらいので、本稿では「キオスクモード」と呼ぶ。8.1のユーザーアカウントに1つのWindowsストアアプリを割り当てるものだ。そのユーザーアカウントでサインインすると、直ちに割り当てられたWindowsストアアプリが実行される。それ以外のことは全て制限され、スタート画面に戻ることも他のアプリを起動することもできないし、シャットダウンやサインアウトもできない。メンテナンスのためには、Windowsキーを5回連続して押してユーザーの切り替え画面を出す*3。マイクロソフトの日本語ページでは、「アクセス割り当て」と訳されている。マイクロソフトのサイトに掲載されている資料の中には「アサインドアクセス」としているものもある。ユーザーの切り替え画面=通常使用時に[Ctrl]+[Alt]+[Del]を押して「ユーザーの切り替え」を選んだときの画面。起動時に自動サインインする設定にしていても、このようにしてユーザーを切り替えられるのでメンテナンスが可能だ。上記(=*2)の日本語ページには「これにより、PCが再起動します」という記述があるが、誤りである。ユーザーの切り替え画面を出した時点では、キオスクモードのユーザーアカウントはサインアウトしていない。必要なら、管理者権限のユーザーアカウントでサインインして、タスクマネージャーを使って強制的にサインアウトさせる。単一アプリの実行だけを許可するキオスクモード」をご覧いただきたい。おおまかな流れは、次のようになる。キオスクモード用のユーザーアカウントを用意するキオスクモード用のユーザーアカウントでサインインしてアプリを準備するキオスクモードのユーザーとアプリを選択する(必要なら)自動サインインを設定するシステムを再起動し、設定したユーザーでサインインするキオスクモード用のアカウントを作成するここでは、開発者向けにいくつか補足しておこう。前述した手順の1でユーザーアカウントを用意するときにローカルユーザーを作成するなら、デスクトップで作業を行ってもよい(次の画像)。[コンピューターの管理]で新しくローカルユーザーを作る[コントロールパネル]−[システムとセキュリティ]−[管理ツール]から[コンピューターの管理]を開き、その左側で[システムツール]−[ローカルユーザーとグループ]−[ユーザー]を選び、メニューバーから[操作]−[新しいユーザー]を指定すると、この画像のダイアログが出てくる。Access」と指定した。後ほど、「ようこそ」画面でどちらが表示されるか確かめる。キオスクモード用のアプリをインストールする次に、キオスクモードで使いたいアプリをインストールする。いっても、アプリの開発中にはWindowsストアからインストールできない。2013を使わないのであれば、アプリのパッケージを作ってキオスクモードのアカウントでインストールする。パッケージの作成]ダイアログの[Windowsストアにアップロードするパッケージを作成しますか?]に対して[いいえ]を選択して、パッケージを作成すればよい)。Windowsストアへのサインインは不要だし、デバッグビルドでも構わない。出来上がったパッケージのファイル群をキオスクモードのアカウントでアクセスできるところに置いておき、キオスクモードのアカウントでサインインしてパッケージをインストールする(次の画像)。開発機ではないPCにインストールする場合は、その前に開発者用ライセンスを取得しておかねばならない*4。開発機にインストールする場合は、デバッグ実行したときにインストールされたアプリを事前にアンインストールしておかねばならない*5。開発中のアプリのパッケージをインストールするキオスクモードのアカウントでサインインして、パッケージをインストールするためのPowerShellスクリプト(拡張子「.ps1」のファイル)を実行する。PowerShellスクリプトを実行するには、右クリックして[PowerShellで実行]を選ぶ。テスト機で開発者用ライセンスを取得する手順は、MSDNの「開発者用ライセンスの取得」をご覧いただきたい。開発者用ライセンスで実運用を行ってはならない。Windowsストアで公開せずに実運用を行うには、サイドローディングという手続きを踏む。詳しくは、TechNetの「DISMによるアプリの追加と削除」を参照してほしい。キオスクモードでのテストを終えてから開発作業を続けるときには、キオスクモードのアカウント側でアプリをアンインストールしなければならない。今回は、次の画像のようにいくつかのアプリをインストールした。その中の1つは、インストール後に普通に実行してセカンダリタイルを作成しておいた。アプリをインストールした後のスタート画面キオスクモードのアカウントでサインインしたときのスタート画面である。「開発中のアプリ(1)」は、「連載:Windowsストア・アプリ開発入門」で制作中のものである。インストール後に実行して、セカンダリタイルを作成(=スタート画面へピン留め)しておいた。「Windowsストアからインストールしたアプリ」は、筆者が公開しているアプリである。オプション設定用のフライアウトの動作を確認するために、Windowsストアからインストールした。「開発中のアプリ(2)」は、今回の実験のために作ったものだ。キオスクモードのユーザーとアプリを選択するキオスクモードのアカウントでのアプリの準備が完了したらサインアウトして、あらためて管理用のアカウントでサインインする。設定チャームを開き、[PC設定の変更]−[アカウント]を選択し、[その他のアカウント]を開いて、[割り当てられたアクセスを使うアカウントをセットアップする]のリンクをクリックする。そこでキオスクモードのために用意したアカウントとアプリを指定すれば、キオスクモードの設定は完了だ。アプリを指定する様子を次の画像に示す。選択肢にセカンダリタイルは表示されていない。キオスクモードではセカンダリタイルから起動できないのだ。アプリの起動時にパラメーターを渡せないということである。キオスクモードを設定する画面でアプリを選んでいるところアプリは選べるのだが、スタート画面にピン留めしておいたセカンダリタイルは表示されない。設定が終わったら、Windowsを再起動する。再起動後に管理者アカウントのサインイン画面が出てきた時は、左向き矢印ボタンをタップするとユーザーの切り替え画面になるので、キオスクモード用のアカウントでサインインする(次の画像)。サインインすると、指定したアプリがキオスクモードで起動する。キオスクモードのアカウントでサインインする自動ログオンを設定していないときは、Windowsを起動したときに他のアカウントのサインイン画面が出てくることがある(上の画像)。左向き矢印ボタン(赤丸内)をタップすると、ユーザーの切り替え画面(下の画像)に切り替わってキオスクモードのアカウント(赤枠内)でサインインできるようになる。キオスクモードで動作中にWindowsキーを連続5回押すと、ユーザーの切り替え画面になる(ただし、キオスクモードのアカウントでサインインしたままの状態)。ユーザーの切り替え画面で右下の電源ボタンを使ってリブートされたりするのが不都合な場合は、画面上の電源ボタンを隠すことも可能だ。on」(本稿執筆時点では英語のみ)を参照してほしい。ハードウェアの電源ボタンも無効にできる。それには、コントロールパネルの[ハードウェアとサウンド]−[電源オプション]を開き[電源ボタンの動作を選択する](または、[ハードウェアとサウンド]で[電源オプション]の下位項目にある[電源ボタンの動作の選択])で設定を変更する。キオスクモードのアカウントに自動ログオンを設定した場合は、Windowsを起動すると次の画像のような「ようこそ画面」が表示され、続いて指定したアプリがキオスクモードで起動する。キオスクモードのアカウントを自動ログオンに設定したときこの「ようこそ画面」が終わると、指定したアプリがキオスクモードで起動する。「ようこそ画面」には、ユーザーのフルネームとアカウントの画像が表示されている。それらを用途に応じてカスタマイズするとよいだろう。前述したように、自動ログオンに設定していても、キオスクモードでアプリが動作しているときにWindowsキーを連続5回押せばユーザーの切り替え画面になるので、管理用アカウントでサインインし直すことが可能だ。キオスクモードでのアプリの動作キオスクモードだからといって動かなくなるようなWindowsストアアプリはなさそうである。アプリバーや通常のフライアウトも出るし、セカンダリタイルの作成もできる(次の画像)。キオスクモードでアプリバーとフライアウトを出すアプリからアプリバーや通常のフライアウトを出せる。アプリバーは、通常のようにエンドユーザーの操作でも出てくる。セカンダリタイルの作成(スタート画面にピン留め)もできる。スタート画面にピン留めできる(次の画像)といっても、キオスクモードではそれを使えないことは前述した通りである。キオスクモードで作成したセカンダリタイルキオスクモードで動作しているアプリからも、スタート画面にピン留めできた(赤枠)。この画像は、いったんキオスクモードを解除してからサインインして撮ったもの。キオスクモードのままではスタート画面を表示できない。(オプション設定などに使うもの)も、アプリのコードからなら出せる(次の画像)。キオスクモードでオプション設定用のフライアウトを出すこのフライアウトはアプリのコードから出している。[設定]チャームからではない。8.1で新設されたSettingsFlyoutコントロール(Windows.UI.Xaml.Controls名前空間)は使っていない。ところで、アプリが異常終了したときなどはどうなるのだろうか?それを確認するために、Windowsストアアプリのプロジェクトを新しく作り、ボタンのイベントハンドラーに簡単なコードを書いた(次のコード)。アプリ終了/例外発生/無限ループの3種類だ。Sub実験用のコード(上:C#、下:VB)コメントにあるように、(1)はアプリを終了させるもの*6。(2)は例外を発生させ、(3)は無限ループを実行し続けるものである。要素が表示されてはなりません」という要件があったため、自ら終了するようなアプリはなかった。このようにAPIは用意されているのである。このアプリをキオスクモードで動かしてみると、次のような結果になった。無限ループに陥ってアプリのUIが応答しなくなった場合は、自動的には再起動されない実運用においては、(3)の無限ループで再起動されないのは問題になるかもしれない。そのようなバグを作り込まないようにすべきなのだが、次のように操作すれば、管理者アカウントでサインインすることなくアプリを再起動できる。キオスクモードで応答しなくなったアプリを再起動する手順:Windowsキーを連続5回押して、ユーザーの切り替え画面にするユーザーの切り替え画面のまま15秒以上待つ再びキオスクモードのアカウントにサインインする上の手順2でユーザーの切り替え画面を出してから約10秒後に、アプリは中断状態に入る処理をしろというイベントを受ける(=Suspendingイベント)。そのイベントの処理に5秒以上かかると、アプリはシステムから強制終了させられる*7。合わせて約15秒間が経過すると、アプリは強制終了させられるというわけだ。MSDNの「アプリケーションのライフサイクル」を参照。最後に、最も大切なことを書く。キオスクモードのアプリに対する制限:チャームを利用できない他のアプリを起動できないチャームが使えないというのは、細かく見ると次のことを意味する。印刷できない(その他、デバイスチャームに依存する機能は使えない)共有に送れない[検索]チャームが使えないオプション設定が出せない(これはアプリにオプション設定を出すためのボタンなどを用意してコードから出せばよい)エンドユーザーがチャームを出そうとして操作しても、全く反応しない。アプリからチャームを出そうとすると、エラーにはならないが、チャームは出てきた瞬間に閉じてしまう(例えば、上で見た「青空文庫リーダー・ライト」では右上にある虫眼鏡アイコンをクリックすると通常は[検索]チャームが表示されるのだが、キオスクモードではチャームが一瞬表示された後、すぐに閉じてしまうのだ)。他のアプリを起動できないというのは、Launcherクラス(Windows.System名前空間)のLaunchFileAsyncメソッドとLaunchUriAsyncメソッドが機能しないということである。これも、実行してもエラーにはならない。前述したように、セカンダリタイルから起動できないので、アプリの起動時にパラメーターを渡せない。業務アプリでキオスクモードを検討することもあると思うが、特に印刷できないという制限には気を付けてほしい。本稿に載せた以外にも思わぬ落とし穴があるかもしれない。アプリのスペックを検討するときは、並行して実現可能かどうか確かめながら進めるべきであろう。Updateを促す[更新プログラムを利用できます]ダイアログが出てくる(次の画像)。キオスクモードでは[インストール]ボタンも[閉じる]ボタンも無効になっていてダイアログを閉じられず、アプリを利用できなくなってしまう。その他、バックグラウンドで動作してトースト通知を出すアプリは、アンインストールするか通知を禁止しておいた方がよいだろう。カメラが付いている機種では、ロック画面でのカメラアプリの利用を禁止しておくのも忘れないようにしよう。Updateを促すダイアログはキオスクモードでも出てくるキオスクモードでは、[インストール]ボタンも[閉じる]ボタンも無効にされており、このダイアログを消せない。筆者の推測としては、個々のボタンが制限されているというよりも、システムが出したダイアログそのものへのアクセスが制限されているように思われる。access/割り当てられたアクセス)は、本稿で述べたようなかなり大きな制限がアプリに加わるものの、Windowsストアアプリでキオスク端末を作れる魅力的な機能だ。キオスクモードの設定方法の詳細については、冒頭でも述べたが次の記事を参照してもらいたい。単一アプリの実行だけを許可するキオスクモードまた、英文ではあるが次のドキュメントが参考になる。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。