業務アプリケーションをWindows 8 ストアアプリ(旧Metro Style、Modern Style)で作りたい!!

結論:無理。

知ってる人にとっては今更だろうが、私はつい最近になって初めてWin8に触ったのでこの辺の事情を何も知らなかった。簡単に述べると、以下2仕様が障壁となっている。解決するのも難しいのですっぱり諦めた。

  • 「アプリコンテナー」と呼ばれるストアアプリ専用のサンドボックスの中で動くので、.NETの外部アセンブリを呼ぶのに制約がある
  • 基本的にWindowsストアを経由しないとインストールできない

ちなみに、ここで言う「業務アプリ」とは以下の様なものを想定している。

  • 社内でプライベートに使い、他に公開しないアプリ
  • Oracle等のRDBMSに接続する
  • 他のシステムと連携させる

まず、1点目。サンドボックスの中で動くので、好き勝手に外部アセンブリを呼べない。これはAndroidやiOSの設計思想に倣ったものだろう。サンドボックスの中でアプリケーションを動かし、好き勝手なことを出来ないようにすることで、コンピュータウィルスやスパイウェアを作るための手段を奪ってしまう。(たとえば、アプリコンテナの中ではパスを指定してFileStreamを開くことができない)これでMicrosoftは「Windowsストアから配布されるアプリケーションは安全ですよ」と宣言することが出来る。

これ自体は、時代の流れに則った設計思想であって、特に問題はないし、私個人としても賛成する。しかしいわゆる業務アプリケーションでは、何処かの会社が作った汎用性の効かない古いミドルウェアや、過去のソフトウェア資産のライブラリを呼び出さなくてはならないという事は往々にしてあるだろう。

加えて、現段階では(2013/02/25現在)Oracleと連携することすら出来ない。つまり、サンドボックスからアクセスできるAPIのみを使って関連アセンブリを作り直さないといけないからだ。そのようにして構築したアセンブリを使ってOracle DBと接続する方法を、少なくとも、私は知らない。ほかのRDBMSについては知らないが、同様だと思われる。知っていたらコメント欄で教えて欲しい。

また、AndroidであればSQLiteが標準で使えるのだが、Windowsストアアプリでは標準機能でローカルDBをサポートしていないようだ。ただ、NuGetでSQLiteが使えるようになる拡張機能を取ってこれるらしい。(あれ?SQL Server Compact Editionは・・・?)

そして、もう一つの障壁、「基本的にWindowsストアアプリを経由しないとインストールできない」を説明する。
「基本的に」なので、もちろんWindowsストアを経由しなくてもインストールはできる。これは、サイドローディングと呼ばれる。アップロードとダウンロードをもじった横からロードする、みたいな造語らしい。

サイドローディングする方法は以下の通り。

  • Windows 2012 Serverを用意して全てのクライアントをドメインに参加させる。そしてドメインのポリシーでサイドローディングを許可する。このとき、クライアントはWindows 8 Enterpriseでないとならない。
  • サイドローディングプロダクトキーを取得してコマンドラインからパッケージをインストールする。サイドローディングプロダクトキーはボリュームライセンスでOSを買っていないと取得できないっぽい(未確認)
  • 開発者用ライセンスを取得してコマンドラインからパッケージをインストールする。
  • System Center 2012 SP1を導入すれば配布できる(詳細不明)
  • Windows Intuneを導入すれば配布できる(詳細不明)
  • Self Service Portalを導入すれば配布できる(詳細不明)

また、いずれの場合も「信頼されたルート証明書にチェーンされている証明書で署名する必要」があるそうだ。いわゆるオレオレ証明書じゃダメよ、って事ですね。

参考:
Windows 8 のサイドローディングの要件
Windows Server 2012 テクノロジ入門 >アプリのサイドローディングに関する補足
Windows ストアへのクライアント アクセスの管理

後半は使ったことも見たことも聞いたこともないので保留。

さて。業務用アプリケーション、という視点で見たときに、これらを進んでやりたい!という人がどれだけ居るだろうか?べっつにWindows Formsでいいじゃーん、Excel VBマクロでいいじゃーん、ってな感じになるのではないだろうか。少なくとも、今の段階では。

もうちょっと時間が経てば、もっと簡単にWindowsストアアプリケーションをプライベート配信出来る方法が出てくるのかも知れない。でも、現状の方法は多くの人にとってハードルが高すぎるのではないだろうか。Windows 2012 Serverを会社に導入するために、どうやって上を説得したらいいのだろうか?ここまでやってまでWindowsストアアプリで業務アプリを作るメリットはあるのだろうか?

冒頭に述べたように、サンドボックスの中で動かす、認証されていないアプリケーションを動かせないようにする、という設計思想自体は大いに賛同するし、当たり前のことだと思うが、これまで企業ユーザーによるWindowsの使われ方を考えると、もうちょっと何とかならんかったんか?と思わざるを得ない。

私は最初、客に向かって「ぜひModern UIで作りましょう!」と提案したのだが、結局、「すみません。現状の状況だとどうにも作れそうにないです」と情けないことを言うことになった。悔しい。
今はWindows 8のデスクトップモードで動作するWPFアプリケーションをMVVMで作っている。XAMLベースならば今後状況が変化したときに、ある程度スキルのつぶしが効くし、Modern UIっぽいUIを作るのも簡単にできる。

その他参考サイト:

Deploying Metro style apps to businesses
Managing "BYO" PCs in the enterprise (including WOA)
設計のケース スタディ: 企業ユーザー向け基幹業務 Windows ストア アプリ (Windows)

1件のコメント

  1. [...] いた面々が、いきなりWindows ストアアプリのサンドボックス環境で開発する・・・というのはちょっと敷居が高すぎます。以前にも書きましたが、特に業務アプリケーションの分野では。 [...]

ただいまコメントは受け付けていません。