テスターですが何か?

ホビープログラマ略してHPです

クラウディアタイマー on Azureの作り方

leave a comment »

9/3(土)のJAZ結成一周年イベントのLTで披露した「クラウディアタイマー on Azure」について、その仕組みとどのようにAzureOSにセットアップしたのかをご紹介します。

 

クラウディアタイマーとは

クラウディア様が残り時間を表示してくれるデスクトップアプリです。ただし、アプリにはウィンドウしか持たせておらず、コンテンツ(クラウディア様)はAzure上にいるため、インターネットに接続されている状態でなければ動作しません。

image

詳細は、こちらのエントリーを参照してください。

クラウディアタイマーの動作には、以下のソフトウェアがインストールされている必要があります。

  • .NET Framework 4
  • Internet Explorer 9

デスクトップ版はこちら(ClaudiaDesktop_1.3.0_bin)からダウンロード可能です。

ソースもこちら(ClaudiaDesktop_1.3.0_src)からダウンロード可能です。

image

 

クラウディアタイマー on Azureとは

「クラウディアタイマー on Azure」とは前述のクラウディアタイマーをAzureOS上に配置し、ターミナルサービスのRemoteAppを使用してAzureOS上でクラウディアタイマーを実行し、アプリの画面のみをクライアントへ転送する仕組みです。Azureのキャラクターであるクラウディア様を使ったアプリを、すべてAzure上で動作させるために情熱とパッションを最大限に注ぎ込んだ仕組みです。

技術内容を図解すると、以下のようになります。(たぶん正しいと思います…)

image

※ クラウディアタイマー on Azureを実行するためには、Azureのインスタンスにリモートデスクトップ接続できる必要があり、ログインパスワードを公開できないのと、ターミナルサービスのライセンスの関係上、自分専用のアプリとなっています。ソースも実行ファイルもサーバーサイドのアプリも公開しているため、誰でも利用可能となるようにサービスを提供していただいても構いません。

 

クラウディアタイマー on Azureの設定手順

1.クラウディアデスクトップをインスタンスへ配置

クラウディアタイマー(*.exe)をAzureのインスタンス上に配置します。AzureOSからインターネットへ接続可能なので、SkyDriveやファイルアップローダーを使用しても構いませんが、自分はプロジェクトにショートカットを追加して、WebRoleアプリをデプロイしてインスタンス上へ配置しました。

image

image

 

2.WebRole(VMRole)のAzureOSにIE9をインストール

クラウディアタイマーの動作には、.NET Framework4とIE9が必要です。.NET4はAzureOSに始めからインストールされていますが、IEのバージョンが7のため、IE9は別途ダウンロード・インストールする必要があります。AzureOSはWindows Server 2008 / 2008 R2をベースとしており、デフォルトではIEのセキュリティ強化の構成が設定されているため、ファイルをダウンロードすることができません。こちらの手順を参考にしてセキュリティ強化の構成を無効化してください。

自分のインスタンスは香港にありWindows Server 2008ベースのため、Windows Server 2008 64bit用のIE9(香港中国語版?)をダウンロードします。

image

日本語以外のIE9をインストールする機会は貴重なので、画面キャプチャーを残しましょう。

インストーラーを起動するといきなり意味不明なメッセージが(サポートされていないOSです?)、今さら後には戻れないので「続行」と思われるボタンをクリックします。

image

またもやメッセージ、「インストール」と思われるボタンをクリックします。

image

「正存安装」!!

image

「再起動しますか?」と聞かれていると思います。なので「今すぐ再起動する」ボタンをクリック。

image

再起動すると、IEのバージョンが9になっていることが確認できます。今回は中国語版IE9をインストールしましたが、英語版でも問題ありません。ウィザードのメッセージが英語版にしないと意味不明なので、英語版をインストールしたほうがいいかもしれません。

image

 

3.RemoteAppのレジストリ設定

RemoteAppは本来であればWindowsServer上にリモートデスクトップサービスの役割を追加して、RemoteAppに許可するアプリを設定していく必要があります。ただ、今回はライセンスの関係上管理者モードのリモートデスクトップを使用するため、レジストリを変更してすべてのアプリケーションをRemoteAppとして利用することを許可します。Azureのインスタンスへリモートデスクトップ接続し、コマンドプロンプトから以下のコマンドを実行します。

————————————

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TsAppAllowList" /v fDisabledAllowList /t REG_DWORD /d 1 /f

————————————-

image

 

4.リモートデスクトップ構成ファイル(*.rdp)ファイルを修正

Azureインスタンスへのリモートデスクトップ接続をコピーして新しいファイルを作成します。赤文字の3行の部分を追記して、RemoteApp用の設定をします。もちろんパスはサーバー上のパスを記載します。

———————————

full address:s:*****************.cloudapp.net
username:s:**************
LoadBalanceInfo:s:Cookie: mstshash=MyWebSite#MyWebSite_IN_0
remoteapplicationmode:i:1
remoteapplicationname:s:クラウディアタイマー
remoteapplicationprogram:s:E:\sitesroot\2\bin\ClaudiaDesktop.exe

—————————————-

 

5.クライアントでrdpファイルを実行

手順4で作成したrdpファイルを実行します。パスワードを要求されるのでリモートデスクトップ接続時のパスワードを入力すると、このような画面が表示されサーバ上でクラウディアデスクトップが実行され、画面がクライアントへ転送されます。

image

image

無事Azure上で動作しているクラウディアデスクトップが、クライアントで動作しているかのように表示されました。

image

 

クラウディアタイマー on Azureの設定手順は以上です。

 

注意点

当たり前の話ですが、上記設定はWebRoleアプリをデプロイするとすべてクリアされます。現実的には使いたい時にこの設定を行うことになると思います。

 

クラウディア様ネタはこれで一旦終了とします。クラウディア様関係で何か展開があれば、再始動するかもしれません。

SQL AzureとかAppFabric CachingとかAccelerator for Web Rolesとか試してみたいんですよ。

Written by david9142

2011年9月5日 @ 12:28 AM

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。