Horizon

ThinApp によるアプリケーション仮想化のキソ! : 新卒2年目SE社員が贈る 仮想デスクトップのキソ!

こんにちは。VMware SE の椨木です。
『新卒2年目 SE 社員が贈る 仮想デスクトップのキソ!』シリーズ、スピンオフ版の第1段は、VMware Horizon 6 (以下、Horizon 6)のどのエディションにもバンドルされている「アプリケーションの仮想化」を実現する製品、VMware ThinApp (以下、ThinApp)についてです。この記事を通して、

  • どういう時に「アプリケーションの仮想化」を行うと嬉しいの?
  • そもそも「アプリケーションの仮想化」ってなに?

という部分を一緒に理解していきましょう・・・!

§1. 「アプリケーションの仮想化」ってなに?

ThinApp が実現できる事としてよく使われる言葉が、「アプリケーションの仮想化」です。このブログのシリーズでは「デスクトップの仮想化」を主に取り扱ってきたわけですが、これは仮想基盤上でデスクトップを仮想化する事によって「物理端末やユーザとデスクトップ環境の紐づきの切り離し」を実現した製品であると言えます。
ThinApp はこの「仮想化」の概念をアプリケーションに取り入れ、アプリケーションを OS にインストールする際にインストールの前後の変化(差分)をキャプチャする事によって、「アプリケーションの実体ファイル」および「アプリケーションの起動時に必要となるファイル」、「アプリケーションの動作に必要となるレジストリ値」を把握し、ひとつの EXE ファイルにまとめることで「アプリケーションと OS の紐付きを切り離す」製品です。
Vurtual
図1: 様々な仮想化
これによって様々な利点が生まれるわけですが、ここでは

  • 古い OS で動いていたアプリケーションを新しい OS 上でも使えるようになる
  • アプリケーションの持ち運び・配信が簡単になる

という2つの「ThinApp が使われる理由」ともいうべき利点をご紹介します。

§2. 昔の OS で動作していたアプリケーションが使える!

ThinApp は、パッケージ化した EXE ファイルの中に、主に「「ファイルシステム操作」、レジストリ操作」、「プロセス生成」に関連する Windows API の呼び出しをエミュレートする軽量なアプリケーション実行環境(ThinApp VOS)を組み込みます。また、アプリケーションをインストールする際に、OS に配置する、EXE や DLL 等のファイルやレジストリ情報も、パッケージ化された EXE ファイルの中に収めます。そのため、パッケージ内のアプリケーションが、DLL やレジストリを呼び出すと、ThinApp VOS が、パッケージ内から動作に必要な情報を返すため、新しい Windows 環境でも、飛躍的に動作しやすくなっています。
これを利用すると、たとえば社内の Windows OS をアップデートした際でも、内製アプリケーションを改修する必要なく、新しい OS 上に移行して動作させる事が可能です。
ThinApp図2: ThinApp 化による「OS非依存アプリ」の作成

§3. アプリケーションの持ち運び・配信が簡単に!

§1 でも少しご紹介しました様に、ThinApp はアプリケーションのインストール時にキャプチャを行い、1つの EXE ファイルとしてパッケージ化する事ができる製品です。
これによって、普通はインストールが必要なアプリケーションも、EXE ファイルを持ち運ぶだけで使用できる、「インストール不要のアプリケーション」にする事ができます。
これを利用して、ThinApp は Horizon 6 と連携した仮想デスクトップへのアプリケーション配信を実現しています。
ファイルサーバなどに置いた ThinApp を Horizon Administrator 上で登録し、配信したいデスクトッププールを選択するだけで Horizon 6 で構築した仮想デスクトップへアプリケーションが配信されます。
admin
図3: Horizon 6 による ThinApp の管理
このアプリケーション配信によって、従来はアプリケーションのアップデートを行う際は、仮想デスクトップのマスターを変更して再適用する必要があるのに対して、ThinApp を用いる事でマスターの変更無しに新しいバージョンのアプリケーションが配信できるようになり、アプリケーション変更のハードルが劇的に下がります。またマスターイメージの削減にもつながります。
step
図4: ThinApp 化によるアプリ更新方法の変化
また、ThinApp は Active Directory と連携して使用可能なユーザーを指定できるので、全社員が同じデスクトッププールを使用しても、部署毎に使用可能なアプリケーションを制限する事も可能です。
pool
図5: ThinApp 化によるアプリケーション提供方法の変化 マスターイメージ削減になり管理がよりシンプルに

§4. アプリケーション仮想化の際の注意点

ここまで読んでいただいて、アプリケーション仮想化後の取り回しのしやすさから、
「もう何でも仮想化しちゃえばいいのでは?」
と思った方も居るかもしれません。
しかし、ThinApp で仮想化できるアプリケーションは、幾つかの要件を満たす必要があります。ここでは、アプリケーション仮想化時の注意点について確認しましょう。

  1.  「ユーザーモード」のアプリケーションであるか確認
    ThinApp で仮想化できるアプリケーションは「ユーザーモード」のアプリケーションのみです。「ユーザーモード」の他に、「カーネルモード」のアプリケーションもありますが、こちらは仮想化できません。
  2.  デバイスドライバを必要とするアプリケーションは仮想化できない
    プリンタのドライバや VPN クライアントソフト、アンチウィルスソフトウェアなど、デバイスドライバを使用するアプリケーションは ThinApp を使用して仮想化する事はできません。
  3.  Windows に関する設定は反映されないものもある
    Windows のアカウント情報・権限、ディスプレイの解像度やスクリーンセーバーの設定など、Windows に関する設定は反映されないものもあります。また、Windows OS のセキュリティパッチも仮想化する事はできません。

その他、一部の Windows API の使用ができない、シェル統合・シェル拡張に制限があるなど、細かい要件がありますので、アプリケーション仮想化の際はベストプラクティス(英語: http://kb.vmware.com/kb/1030290)をご一読いただく事をお勧めします。

§5.まとめ

今回は、ThinApp を用いた『アプリケーションの仮想化』についてのご紹介をしました。
「昔のアプリを長く使いたい」「仮想デスクトップのマスター更新を簡素化したい」と思っていたあなた、是非 ThinApp を使ってみてください!
執筆協力: vExpert 2015 山辺和篤
新卒2年目社員が贈る 仮想デスクトップのキソ!
第1回 仮想デスクトップと Horizon 6 ( with View)
第2回 仮想デスクトップの基本構成
第3回 プール作成と割り当て
第3.5回 View Composer の仕組み
第4回 接続方法と接続元端末
第5回 公開アプリケーションのキソ
第5.5回 ThinAppによるアプリケーション仮想化のキソ
第6回 スケールアウト対応
第7回 完結編、仮想デスクトップと関連ソリューション総まとめ
第 8.1 回 App Volumes を使ってみよう その1
第 8.2 回 App Volumes を使ってみよう その2