• 【Azure for ITPro】SQL Server を クラウドに移行するには ~ SQL Azure 移行ウィザード 日本語版

    SQL Server をクラウドに移行する方法はいくつか用意されています。

    「SQL Server Management Studio を使用して、移行したいデータベースを SQL Azure の仕様に合わせてスクリプト化する」というのも有効な方法ですが、もっと簡単に使用できるツールがあります。それが 「SQL Azure 移行ウィザード(SQL Azure Migration Wizard)」です。

    このツールは CodePlex というオープンソースプロジェクトで提供されており、もともと英語版のみでした。非常に使いやすいツールなので、心から日本語化を願っていたのですが、2011年1月に SQL Azure MVP の 大和屋(やまとや)さんにより日本語化が実現されました。現時点の最新バージョンは 3.6 です。

    日本語対応したSQL Azure Migration Wizard v3.5.2 リリース
    http://sqlazure.jp/b/sqlazure/426/

    さて、そうなるとドキュメントはどうなの?という話になるのですが、何とつい先日、日本語版のドキュメントもリリースされました。もちろんドキュメントも V3.6 に対応しています。これも大和屋さんのご尽力によるものです。

    さぁ、これで駒はそろいました!あとは実践あるのみです!

    sqlazuremw - Release: SQL Azure Migration Wizard v3.6

    image

  • 【Azure for IT Pro】Azure VM に接続するための RDP ファイルについて

    リモートデスクトップサービス(旧 ターミナルサービス)が Windows Server(Windows NT)に実装されてから、もう15年位でしょうかねぇ。その機能はOSのバージョンアップのたびに強化され、気が付けばサウンドカードやグラフィックカードなど、ローカルデバイスを利用できるようにまでなりました。個人的にはローカルドライブをリダイレクトできる機能がお気に入りです。遠隔地にあるサーバーと簡単にデータ交換ができるようになりました。

    RDP ファイルとは「Remote Desktop Protocol ファイル」のことで、リモートデスクトップサービスに接続するための定義が書かれたテキストファイルです。mstsc(リモートデスクトップクライアント)を起動すると「保存」「名前を付けて保存」というボタンが目につきますが、このボタンで保存したファイルがRDPファイルです。中身はテキストですので、メモ帳で編集することも可能です。

    imageimage

    ご存知の通り、Windows Azure に展開したインスタンスにもリモートデスクトップで入り込むことができます。

    ここで、気になることがあります。それは、

    Windows Auzre 上の インスタンスって、RDPファイル内でどうやって識別されているの?

    ってことです。

    以下をご覧ください。Windows Azure ポータルから「VMRole1_IN_0」というインスタンスにリモートデスクトップで入り込もうとしているところですが、ログオン画面に表示されているのはサービスの URL だけで、この画面からは変更することができません。これだけ見るとどうやって、「VMRole1_IN_0」と「「VMRole1_IN_1」が識別されているのかが不思議です。

    image

    そこで、RDPファイルを一度保存して、メモ帳で中身を見てみましょう。

    full address:s:vmroletestjunichia01.cloudapp.net
    username:s:junichia
    LoadBalanceInfo:s:Cookie: mstshash=VMRole1#VMRole1_IN_0#Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp

    RDPファイルの中身は、基本的に1行1設定であり、コロン(:)で区切られた3つのカラムから構成されています。

    <設定名>:<値の型>:<値>

    1行目は full address という設定名に、値の型が文字列(s)で、vmroletestjunichia01.cloudapp.net という値が設定されています。vmroletestjunichia01.cloudapp.net は私が展開したサービスのURLですが、これだけではインスタンスは一意に決められません。なぜならばサービスは複数のインスタンスで構成されている場合がほとんどだからです。上の画面でも、2つのインスタンスが展開されていることがわかります。

    じゃ、そのインスタンスを特定している設定はどれか...一目瞭然、3行目です。

    LoadBalanceInfo:s:=Cookie: mstshashVMRole1#VMRole1_IN_0#Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp

    マイクロソフトの VDI に詳しい方だと、似たような設定を見たことがあるかもしれません。VDI の場合、あらかじめ決められた特定のサーバーに接続するのではなく、複数のサーバーを保持しているサーバープールから、空いているサーバー1つ選択して接続する必要があります。そのような場合には、full address  設定に加えて、以下のような設定が使われます。これは、VMFarm という仮装デスクトップのプールから空いているデスクトップを探し出してリダイレクトするための設定です。もちろんこの仕組みの裏には、セッション管理を行ってくれるセッションブローカー等のサーバーが待機しており、そららの緻密な連携によって実現されています。

    LoadBalanceInfo:s:tsv://vmresource.1.VMFarm

    この値は、リモートデスクトッププロトコル(RDP)を使用してセッションを確立する前に、コネクションリクエストの一部として送信されます。

    では、Windows Azure 場合には、この設定ファイルはどのような意味を持っているのでしょう。なんとなく、ロールインスタンスの名前が指定されていることはわかりますよね。

    LoadBalanceInfo:s:Cookie は、クッキータイプの文字列を使用して特定RDPクライアントに対するコネクションリクエスト(X.224 Connection Request)を送付します。

    このクッキーの中で使用される値の名前が「mstshash」です。mstshash には、

    VMRole1#VMRole1_IN_0#Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp

    という値が格納されます。ちなみに、上の画面ショットをご覧いただければお分かりの通り、「VMRole1」はロールの名前で、「VMRole1_IN_0」はインスタンス名です。2つ目のインスタンスに接続したい場合には、以下のように指定すればよいだけです。

    VMRole1#VMRole1_IN_1#Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp

    この文字列が full address で設定したホスト(この例では vmroletestjunichia01.cloudapp.net)に送信され、接続のやり取りが開始されます。

    vmroletestjunichia01.cloudapp.net がクッキーを受け入れると、mstsc は vmroletestjunichia01.cloudapp.net との TLS コネクションを張ろうとします。これに対して vmroletestjunichia01.cloudapp.net は VMRole1_IN_0 の X.509 証明書を送付するなどのやり取りが行われて、TLSコネクションが確立します。

    これらのやり取りをキャプチャしたのが以下の画面です。

    image

    Windows Azure の中が、どのようなリモートデスクトップ構成になっているのかはハッキリとは見えないのですが、ひとまず vmroletestjunichia01.cloudapp.net がコネクションブローカーのように見えますね。

  • 【PowerShell & WORD】QRコードを差し込み印刷してみる 2/2

    前回の投稿では、EXCELで用意したユーザーリストを読み込んで QRコードのイメージを作成するスクリプトを Windows PowerShell で作成しました。

    【PowerShell & WORD】QRコードを差し込み印刷してみる 1/2

    今回は、作成した QRコードのイメージファイルを使用して、WORD 2010 を使用して差し込み印刷をしましょう。

    この、イメージ(画像)の差し込み印刷...正直言って苦労しました...いや、わかってしまえば何てことないのでしょうけどね...Office の MVP の方々からすれば "笑止!!" なのでしょうが...。今回は、私のように差し込み印刷に苦労した方向けの解説ですので、できる限り平易に解説します。

    前回の投稿で作成した UserList.xlsx ファイルを差し込みリストとして使用し、WORD 2010 に読み込みます。

    image

    ちなみに、今回作成してあるEXCELファイルは以下のようなデータが入っています。先頭行はタイトル行になっていることに注意してください。

    image

    さっそく始めましょう。

    ■ WORD で画像の差し込み印刷をする

    ① EXCEL ファイルを差し込みリストとして指定する

    ※ わたし、生まれて初めて「差し込み文書」タブをクリックしました...(恥)。

    WORD を起動し、[差し込み文書] タブ から[宛先の選択]をクリックし、[既存のリストを使用] を選択します。ファイル選択のダイアログが開いたら、事前に作成してある UserList.xlsx を選択してください。

    image

    ワークシートの選択画面では、[先頭行をタイトルとして使用する] にチェックが入っていることを確認してください。

    image

    これで読み込みは完了です。

    ② 文字列を差し込む

    差し込み用のデータを読み込むと、以下のようにリボン内の [差し込みフィールド] コマンドが有効になります。クリックして開いてみると、EXCEL のタイトル行が表示されます。

    image

    ここで、上のメニューから FirstName をクリックしてみてください。以下のように本文に «FirstName» と表示されるはずです。これ、手で書いちゃダメですので注意してください。かならずメニューから選択してください。

    image

    さて、ここからがビックリです。この状態で、[ALT] + [F9] という、なんとも見慣れない組み合わせのショートカットキーを押します。画面が「フィールドコード」と呼ばれる表示に切り替わり、画面には { MERGEFIELD FirstName } と表示されています。はじめて「フィールドコード」などという言葉を聞いた方、今後は知ったかぶりをしましょう。私もそうします。

    image

    もう一度 [ALT] + [F9] を押すと、元の表示に戻ります。

    同じように、«LastName» も挿入し、その後ろに「様」を入れましょう。ついでに、フォントも大きくしてみます。

    image
    ↓↑ [ALT]+[F9]
    image

    つづけて、本文も入力しちゃいましょう。ここは普通に入力すればOKです。

    image

    URL も単なる文字列ですので、同じように入力できます。繰り返しますが、«blogsite» と «UserName» は手で入力しないでください。かならず、[差し込みフィールドの挿入] から行います。

    image

    ひとまずここまで。

    ③ データの確認をする

    ここまで確認したら差込データの動作確認をしてみましょう。

    [差し込み文書] の [結果のプレビュー] をクリックしてください。

    image

    以下のように、差し込みフィールドの部分に実データが入ってくるはずです。[結果のプレビュー] の横にある数字は、差し込みリストの行番号です。この数字を変えると、データも次々に変わります。

    image

    ただしくプレビューできましたか?OKならば、今度は画像を挿入します。

    ④ 画像を差し込む

    画像を差し込むには INCLUDEPICTURE というフィールド名を使用します。INCLUDEPICTURE の引数として画像ファイルのパスを指定することで、画像を差し込むことができます。

    もう何をするか想像できますよね。そうです。画像のパスに { MERGEFIELD UserName } を使用すれば、画像の差し込み印刷ができそうです。

    さっそくやってみます。

    [ALT]+[F9] を押して、画面をフィールドコード表示(っていう表現は正しい??)にしてください(以下のように)。そして、画像を差し込みたい場所にカーソルを移動しておいてください。

    image

    この状態で、[CTRL]+[F9] を押します。CTRL ですよ!!間違えないでください。

    すると、以下のように「フィールドの枠」だけが挿入されます。

    image

    この枠内に、次にように入力してください。なんか中途半端に見えますが、OKです。

    INCLUDEPICTURE “C:\\tmp\\img\\

    ~\\img\\ の後には、JPEGファイルのファイル名が入るのですが、ここには差し込みフィールド { MERGEFIELD UserName } を挿入しますします。もちろん手で入力してはダメです。かならず ~\\img\\ の後ろにカーソルが点滅している状態で、[差し込みフィールドの挿入] - [UserName] を選択してください。

    INCLUDEPICTURE “C:\\tmp\\img\\{ MERGEFIELD UserName }

    さらに、「.jpg”」を追記してファイルのパスを完成させます。

    INCLUDEPICTURE “C:\\tmp\\img\\{ MERGEFIELD UserName }.jpg

    仕上げに、以下のように追記します。\d の後ろには半角空白を入れてください。

    INCLUDEPICTURE “C:\\tmp\\img\\{ MERGEFIELD UserName }.jpg” \* MERGEFORMAT \d

    結果、以下のようになります。

    image

    ここで、入力したフィールドコードを反映させるために、[F9] キーを押してリフレッシュしてください。[F5] じゃないですよ![F9] ですよ!

    リフレッシュしたら、[ALT]+[F9] を押して元の表示に戻します。

    image

    今入力した部分が QRコードになりましたか?

    もしならない場合は、[結果のプレビュー] をクリックして、[F9] キーでリフレッシュしてください。

    ここで、行番号を変更してみましょう。

    image

    画像が変わらないですよね?

    はい、もうおなじみですよね。[F9] を押してください。画像が書き変わるはずです。

    これで差し込みの設定完了です。

    ⑤ 印刷する

    印刷する場合にも注意が必要です。

    印刷を開始するには、画面右端の [完了と差し込み] – [文書の印刷] を選択します。

    image

    印刷のダイアログが開いたら、忘れずにしなければならないことがあります。プリンタの[オプション]にある [印刷前にリンクされているデータを更新する] をチェックしてください。これを行わないと、画像が更新されず毎回同じQRコードが印刷されてしまいます。

    image

    image

     

    いかがでしょう?

    いやー難しいですねぇ、WORD ...。

    現場でお客様を担当されている SE さんて、結構こういう質問されるんですよねぇ。でも意外とお客様のほうがよく知っていたり...なんてことがよくあります。

    私では1000年たっても Office の MVP にはなれそうにありませんが、これで差し込み印刷は3割くらい把握できたんじゃないかなと思います。

  • 【PowerShell & WORD】QRコードを差し込み印刷してみる 1/2

    このBLOGの趣旨からすると完全に「閑話」なのですが、せっかくなのでBLOGに残しておきたいと思います。

    以下のような要件があったとしましょう。

    • お客様にWORDで作成した案内状を印刷して送付したい。
    • 案内状には、宛先ごとに異なる URL(会員番号等が含めたような) を張り付けたい。
    • さらに、URL の QRコード も一緒に貼り付けたい

    なんとなくありがちな要件ですよね。この要件をお金をかけずに実現しようとしてパッと思いつくのは、

    • QRコードを生成するフリーのライブラリを使って、バッチファイルでQRコードイメージ(jpgファイルとか)を生成
    • 作成したQRコードのイメージを WORD で差し込み印刷(または差し込みメール)

    ってかんじじゃないかと思います。きっと Office の MVP の方あたりだと、もっとエレガントな方法が思いつくと思いますし、こうした案件に対応する専用の製品もあるはずなのですが、今回は小手先でなんとかしてみようかなと思います。ってことで、せっかくの休日なので遊んでみました。

    ■QRコードのイメージファイルを生成する

    ① まずはQRコードのイメージファイルを作成してみる

    QRコードのイメージファイルとは、ご想像通り、こんなものです。こいつを会員数分、事前に生成しておくわけですね。
    100001

    とはいえ、QRコードの仕様なんて私は把握していませんし、たとえ仕様を読んだところで私のような人間には手に負えません。そこで、フリーのライブラリを探すことになるのですが、とても素晴らしいライブラリがありました。ご存知の方にとっては超有名なライブラリだと思うのですが..。その名も DotNetBarcode です。

    【フリーソフト】高機能でカラフルなQRコード(二次元バーコード)がデザインできる ColorfulQRCodeMaker/高性能バーコード・ライブラリー DotNetBarcode公式ホームページ

    他に、Open Source QRCode Livrary などの選択肢はありますし、商用のライブラリももちろん販売されていますが、今回は DotNetBarcode にお世話になろうと思います。いかんせん、私のような非DEVにもとてもやさしい仕様で、サンプルプログラムや仕様書もきっちり用意されていました。作者様、本当にありがとうございます。

    さて、早速上記サイトの「ダウンロード」から、DotNetBarcode V2.4.0 をダウンロードしてください。

    ZIPファイルを解凍すると、中に以下のファイルが含まれています。

      • CsharpSample [DIR]
      • VBSample [DIR]
      • 【始めにお読みください】.txt ライセンスに関する情報等、必ず読んでから使用してください!
      • 【DotNetBarcodeV2.4.0での機能強化点】.txt
      • DotNetBarcode.dll ライブラリ本体
      • DotNetBarcodeクラスライブラリ(DotNetBarcode.dll)の仕様書.doc
      • DotNetBarcodeクラスライブラリ(DotNetBarcode.dll)の仕様書.pdf
      • DotNetBarcodeクラスライブラリを使ったQRコードアプリの作り方.doc
      • DotNetBarcodeクラスライブラリを使ったQRコードアプリの作り方.pdf
      • サンプルアプリケーション画面.doc
      • サンプルアプリケーション画面.pdf

    【始めにお読みください】.txt を必ず一読しライセンス等に関する情報を理解してください。また、あくまでもフリーソフトとして公開されていますので、その点をご理解した上でご使用ください。

    理解できたら、DotNetBarcode.dll ファイルを適当な場所にコピーしましょう。

    当然のことながら DLL は C# や VB.NET などからアクセスできるのですが、今回は IT Pro らしく PowerShell から使用してみましょう。

    以下のようなスクリプトファイルを作成し、拡張子 ps1 で保存しましょう。今回は qrcodegen.ps1 という名前で保存しました。

    [System.Reflection.Assembly]::LoadFile("c:\tmp\qrcodegen\DotNetBarcode.dll")
    $bc = New-Object DotNetBarcode
    $bc.Type = "QRCode"
    $bc.PrintCheckDigitChar = $true
    $bc.Save("http://blogs.technet.com/junichia/" , "c:\tmp\junichia.jpg", 150, 150)

    1行目と2行目は、PowerShell からシステムに登録されていない DLL を使用する場合の常套句です。覚えておくと便利です。LoadFile の引数には、コピーした DotNetBarcode.dll ファイルのパスを指定しています。

    DotNetBarcode では、さまざまな種類のバーコードを生成することができるのですが、今回は QRコードを作成したいので、3行目でバーコードタイプを QRCODE としています。また、4行目では、QRCODE のチェックディジットもバーコード上に表示することを指定しています。既定では False です。

    そして 5行目の Save() メソッド!これがとても便利です。引数は以下の通りです。

    Save(<バーコードに表示する文字列>, <保存するファイル名>, <QRコードの横幅>, <QRコードの高さ>)

    今回は、文字列として上記のようにURLを指定し、それを junichia.jpg というJEPGファイルで保存するように指定しました。今回は正方形のQRコードなので、「横幅」と「高さ」については値の小さいほうが一辺の長さとして採用されるようです。詳細は「DotNetBarcodeクラスライブラリ(DotNetBarcode.dll)の仕様書.pdf」をご覧ください。

    このスクリプトで作成されたQRコードが以下の通りです。携帯電話などQRコードリーダーをお持ちの方は試してみてください。私のBLOGのURLが読み込めるはずです。

    junichia

    ここまでできたら、あとは簡単ですよね。

    EXCEL か何かでユーザーリストを作成し、その情報を繰り返し読みこんで QRコードをバッチ的に作成すればよいわけです。

    ② ユーザーリストからQRコードを一括作成する

    今回は、ユーザーリストが以下のように EXCEL で用意されているものとします。ここではファイル名を userlist.xlsx とします。

    ※この EXCEL ファイルは、WORD の差し込み印刷でも使用します。

    image

    上記の EXCELファイルを読み込み、BLOG サイトの URL を QRコード で生成する PoewrShell スクリプトを作成しましょう。

    ...ということで作成したのが以下です。冒頭の3行には以下を指定していますので適宜変更してください。

      • $UserList : ユーザーリストが保存されているファイルのフルパス
      • $JpgPath : 作成したQRコードのイメージファイル(JPEGファイル)を保存するパス
      • $DLLPath : DotNetBarcode.dll が保存してあるパス

    $UserList ="c:\tmp\userlist.xlsx"
    $JpgPath = "c:\tmp\img"
    $DLLPath =
    "c:\tmp\qrcodegen\DotNetBarcode.dll"

    $objExcel = New-Object -ComObject Excel.Application
    $objWB = $objExcel.workbooks.open($UserList)
    $objWS = $objWB.Worksheets.Item(1)
    $intRow = 2

    [System.Reflection.Assembly]::LoadFile( $DLLPath )
    $bc = New-Object DotNetBarcode
    $bc.Type = "QRCode"
    $bc.PrintCheckDigitChar = $true

    $dirExist = Test-Path $JpgPath
    If ($dirExist -eq $false) {New-Item -type directory -path $JpgPath}

    Do {
        $UserName = $objWS.Cells.Item($intRow, 1).Value()
        $FirstName = $objWS.Cells.Item($intRow,2).Value()
        $LastName = $objWS.Cells.Item($intRow,3).Value()
        $BlogSite = $objWS.Cells.Item($intRow, 4).Value()
       
        "
    http://blogs." + $BlogSite + ".com/" + $UserName
        $jpgpath + "\" + $UserName + ".jpg"
       
        $bc.Save("
    http://blogs." + $BlogSite + ".com/" + $UserName + "/" ,$jpgpath + "\" + $UserName + ".jpg" , 150, 150)

        $UserName = ""
        $FirstName = ""
        $LastName = ""
        $BlogSite = ""
       
        $intRow++
    }
    While ($objWS.Cells.Item($intRow,1).Value() -ne $null)
     
    $objExcel.Quit()

    このスクリプトを実行すると、以下のようにユーザーごとにQRコードが作成されます。

    image

    お手元の携帯等で読み取って確認してみてください。

    それはそうと、やはり、junichia.jpg にそこはかとない気品が感じられます。そして、kazunorn.jpg からは、あまり更新していない様子がうかがえます。

    次回は個々で作成したJPGファイルを使用して、WORDで差し込み印刷してみます。

    次へ(【PowerShell & WORD】QRコードを差し込み印刷してみる 2/2)

  • 【Azure for IT Pro】Windows Azure Connect を使用して自宅からサーバーを遠隔メンテナンス

    3月11日の地震の際、私の自宅がある栃木県小山市は目立って大きな被害は少なかったのですが、それでも街のそちこちで壁が崩れていたり、神社の灯篭が倒れていたり...私の自宅はといえば、耐震対策がなっていなかったせいか、すべての本棚が倒れ、食器棚の食器が床に散乱し、冷蔵庫は散歩を始め、XBOX 360 と Kinnect は宙を舞いました。今でも寄生獣の5巻が見当たりません。

    お客様を担当されているフィールドSEの皆さまも、様々なかたちで被害を受けていらっしゃる方が多いと思います。比較的被害が少ないと言われている都内であっても、電車の運行状況によっては、思ったようにお客様のメンテナンスが行えない状況に悩んでいらっしゃる方も多いはずです。そんな状況でも、VPN の設備が整ったお客様であれば、なんとかサーバーのメンテナンスを行うことができるでしょう。でもすべてのお客様が VPN Supported ではないですよね。

    そこで、”一時的な” 回避策として使っていただけるのが、Windows Azure Connect という仮想ネットワーク機能です。

    まだプレビュー版ではありますが、何も手が出せない状況と比べれば天と地ほどの差があります。「Windows Azure Connect」は、Windows Azure 上に用意された リレーサーバーを中継点として、ネットワーク的に分断されたサーバー/クライアント間を仮想のネットワークパスで接続するものです。特別な機器は一切必要なく、仮想ネットワークで接続したいサーバーやクライアントにエージェントプログラム(Windows Azure Connect エンドポイントソフトウェア と言います)をインストールするだけなので、とても簡単にセットアップが可能です。

    仕組みについてはこちら
    【Azure for ITPro】Windows Azure Connect を使用するためのネットワーク条件について

    本来の目的はオンプレミスとパブリッククラウドを仮想ネットワークでつないで Hybrid なクラウドを構築するのが目的ですが、このテクノロジーをうまく使うとフィールドSEによる遠隔メンテナンスにも流用できます。

    構成パターンはいくつかありますが、ここでは代表的な2パターンをご紹介します。

    image

    左の図をご覧ください。自宅や自社のPCから、Windows Azure 上のロールインスタンス(サーバーのことです)を踏み台にして、各お客様先のマシンと通信することができます。もちろん、リモートデスクトップで入ることも可能です。ただし、サポートされているのは、Windows Server 2008/Windows Vista SP1 以降なので、もし お客さま先に Windows Server 2003 等が存在する場合には、一旦お客様先の Windows Server 2008 等に入り込んでから、再度接続することになります。

    「お客様A」<->「お客様B」間で通信ができてしまうのでは!?という心配ですが、これは問題ありません。直接お客様サーバー間で通信することはできませんし(そのような設定をしなければです)、各お客様は Windows Azure 上のロールインスタンスにさえも入ることはできません(もちろんロールインスタンスの管理者のパスワードを知らなければの話)。

     

     

    もし心配であれば、以下のようにロールインスタンスをお客様ごとに用意しておけばOKです。

    image

    この機能を使用するには、まず以下の準備をしておく必要があります。

    1. Windows Azure のサブスクライブ

    現在、本震災対策用の90日間無償アカウントを使用することができます。クレジットカード登録も不要ですので、「捨てID」としてガンガン使ってください。サブスクライブ完了までに最長2営業日ほど要しますので、Windows Live ID を取得の上、速攻でお申し込みください。
    もし、既にWindows Azure アカウントを申し込んだ Live ID が存在するようであれば、同じIDで申し込みすることも可能です。その場合には、ベータプログラムの利用権限はそのまま引き継ぐことができます(環境は引き継げませんが)。
    なお、1つの Windows Live IDで申し込める無償パスは1回だけです。複数お申し込みする場合には、Windows Live ID をその都度作成してください。 
    東北地方太平洋沖地震対応 Windows Azure 無償アカウント

    2.Windows Azure Connect ベータ利用申込み

    Windows Azure アカウントが発行されると、http://windows.azure.com/ にログオンして各機能を操作することができるようになります。ここで、Windows Azure Connect を有効にするには、左側の「HOME」をクリック後、その上にある「Beta Program」をクリックします。すると、画面右側にベータ申込み用画面が表示されるので、「Windows Azure Connect」を選択して「Apply for Access」をクリックしてください。 興味があれば VM Role もチェックして申し込んでください。

    image

    まずはここまでやっておきましょう。Windows Azure Connect が有効になるまでには本社側の承認処理が必要になるため、少し時間を要すると思われます。Windows Azure Connect が有効になると、表示が以下のように変わります。

    image

    Windows Azure Connect が Active になったら、以降の作業を行ってください。

    ※約1週間で有効になります。有効になると「Welcome to the Windows Azure Connect CTP!‏」というメールが届きます。

    3. Windows Azure 上に踏み台となるアプリケーションを展開するための準備

    はじめに踏み台となるダミーのアプリケーションを作成するのですが、アプリケーションを作成するには Visual Studio が必要です。でも IT PRO の方は Visual Studio なんて持ってないですよね。なので、今回は無償の Visual Studio 2010 Express を使用します。

    ① SQL Server 2008 R2 Express をインストールする

    ちょっと面倒なのですが、事前に SQL Server 2008 R2 Express をインストールしておいてください。SQL Server 2008 R2 Express は以下からダウンロードすることができます。もちろん無償です。

    http://www.microsoft.com/downloads/details.aspx?familyid=8B3695D9-415E-41F0-A079-25AB0412424B&displaylang=ja

    実は、これから紹介する Webプラットフォームインストーラー(Web PI)を使用して、Visual Web Developer 2010 Express と同時に SQL Server 2008 R2 Express をインストールすることができるのですが、インストールに失敗することがあります。原因は様々なのですが、事前に個別インストールしておいたほうが確実です。

    ② 無償の Visual Studio Web Developer 2010 Express をインストールする

    SQL Server 2008 R2 Express のインストールが完了したら、以下の Web プラットフォーム インストーラー(Web PI)サイトに移動し、Web PI をダウンロードして実行しましょう。

    Download the Microsoft Web Platform
    clip_image002

    Web PI を実行すると、以下の画面が表示されます。画面上にある[製品]をクリックしてから、一覧に表示されている「Visual Web Developer 2010 Express」を[追加]します。

    clip_image004

    まだインストールははじめないでください。次の項でもう1つコンポーネントを追加します。

    Windows Azure に関連した開発を行うには、Windows Azure 用の SDK および Visual Studio 用の Addin がインストールされていなければなりません。

    WebPI の画面を少し下にスクロールして、「Windows Azure Tools for Microsoft Visual Studio 2010 V1.3」を選択してください。

    clip_image006

    [追加]ボタンをクリックして選択が完了したら、[インストール]をクリックします。

    インストールが始まると、以下のように関連コンポーネントも同時にインストールされる旨のメッセージが表示されるので[同意する]をクリックして先に進めてください。

    clip_image008

    インストールが完了したら、コントロールパネルの[プログラムと機能]に以下が表示されていることを確認してください。

    • Windows Azure SDK v1.3.11122.0038
    • Widnows Azure Tools for Visual Studio 2010 1.3 v1.3.31122.1601

    clip_image010

    以上で準備は完了です。

    4. 踏み台となるアプリケーションを作成する

    「アプリケーションの作成」と聞いて、引いている IT Pro も多いと思いますが、全然大した作業ではありません。Active Directory のインストールのほうが10000 倍難しいです。たんなる手順ですので、覚えてしまいましょう。

    おそらく、多くの IT Pro の皆さんが、「なーんでアプリが必要なの?」と不思議に思っていると思います。気持ち悪いと思うので、それについてちょっと触れておきます。

    Windows Azure Platform というのは、クラウドの種類の中では「PaaS(Platform as a Service)」に属します。PaaS の P は、もちろん「プラットフォーム」のことですが、この場合のプラットフォームとは OS を意味しています。つまり、Windows Azure は OS をサービスとして提供するクラウドの形態なのです。なので、Windows Azure は、お客様がアプリケーションを作成して Windows Azure 上に展開することを前提に設計されています。

    言い換えれば、オンプレミスでは「OSをインストールする」という作業が必要ですが、Widnows Azure では必要ありません。なぜならば、OS は Windows Azure が用意することになっているからです。なので、お客様はアプリケーションの展開からいきなりはじめることができるのです。

    では、OS がいつ準備されるかといえば、お客様がアプリケーションを展開しようとしたときです。つまり、アプリケーションの展開がトリガーとなってプラットフォームが準備(OSが展開)されます。そういうふうに、マイクロソフトが作ったのですね。なので、何かをするときには、まずアプリケーションの展開作業が必要になるわけです。

    今回の作業では、実はアプリケーションは必要ありません。単に Windows Azure 上の OS を踏み台にするだけですから。けれども、上記のような設計になっているので、ダミーとなるアプリケーションを作成して展開してあげる必要があるのです。

    ということで、ダミーアプリを作りましょう。

    ① Visual Studio を起動する

    スタートメニューから、Microsoft Visual Web Developer 2010 Express を右クリックして、「管理者として実行」を選択してください。

    clip_image011 clip_image012

    Visual Studio が起動したら、スタートページで [ファイル]-[新しいプロジェクト] を選択します。

    clip_image014

    Azure アプリ用のテンプレートを選択する

    「新しいプロジェクト」ウィンドウの右側には [Visual Basic] と [Visual C#] という2つのノードが表示されますが、好きなほうを開いてください。今回は Visual C# を選択していますが、どうせコードは書きませんから関係ありません。

    そんなことよりも、その配下にある「Cloud」が重要です。「Cloud」を選択し、中央のペインに「Windows Azure Project」が表示されていることを確認したら「OK」をクリックします。プロジェクトのファイル名も、何でも構いません。どうせダミーのアプリですから。

    clip_image016

    最後に、プロジェクトに含めるロールインスタンスを選択するのですが、ここも何も考えず「ASP.NET Web Role」を選択し、「>」ボタンをクリックしてください。すると、以下のように表示されているはずです。

    clip_image018

    問題が無ければ [OK] をクリックしてください。なんとなく以下のように表示されていれば、OKです。

    clip_image020

    ③ Windows Azure Connect のセキュリティトークンを取得する

    今回はコードは一切書く必要がありません。そのかわり、Windows Azure Connect を有効にするためのセキュリティトークンを、構成ファイルに埋め込む必要があります。ここで埋め込んだセキュリティトークンがアプリケーションとともにアップロードされ、Windows Azure の OS 本体に適用されます。なんだか今までと文化が違うので変な感じですが、そんなもんなんだな~と思ってください。

    そのセキュリティトークンは Windows Azure ポータル で確認することができます。

    まずは、Windows Azure ポータル windows.azure.com を開いて、画面左下にある「Virtual Network」をクリックしてください。

    image

    次に、画面右上の「Get Security Token」をクリックします。

    image

    すると、以下のようなポップアップが開きます。ここに書かれている英数字の羅列が噂の「セキュリティートークン」です。「Copy Token to Clipboard」をクリックして、クリップボードに一時的にコピーしてください。

    image

    ④ セキュリティトークンをアプリケーションに埋め込む

    これもぜーんぜんたいした話ではありません。

    Visual Studio の右側に表示されている「ソリューションエクスプローラー」から、「ロール」の下にある「WebRole1」というノードを見つけてください。こいつを右クリックして「プロパティ」を選択します。

    image

    すると、WebRole1のプロパティ画面が開くので、「仮想ネットワーク」をクリックしてください。以下のような画面が開きます。そこで、「Windows Azure Connect のアクティブ化」をチェックし、その下のテキストボックスに先ほどコピーしたセキュリティトークンを貼り付けます。

    image

    これで、Windows Azure Connect の有効化に関する設定は完了です。

    ⑤ リモートデスクトップを有効にする

    もうちょっとだけ設定が必要ですので頑張ってください。

    今回の目的は、Windows Azure 上の OS をお客さま先への踏み台にするわけですから、リモートデスクトップで一度 Windows Azure に入り込めなくてはなりません。Windows Azure では規定でリモートデスクトップが無効になっているので、これを有効化するための設定を埋め込む必要があります。これも、Visual Studio で行います。面倒ですけど頑張りましょう。

    Visual Studio の右側にある「ソリューションエクスプローラー」から作成中のプロジェクト(ここでは WindowsAzureProject9)を右クリックして [発行] を選択します。「発行」は他にもあるので、別の「発行」を選択しないように気を付けてください。

    image

    「Windows Azure プロジェクトの配置」画面が表示されるので、「サービスパッケージだけを作成」を選択し、さらに一番下にある「リモートデスクトップ接続の構成」をクリックしてください。

    image

    <参考>「サービスパッケージだけを作成」について

    「Windows Azure プロジェクトの配置」画面にある「Windows Azure プロジェクトを Windows Azure に配置します」は、アプリケーションを Visual Studio から 直接 Windows Azure 上に展開する際に使用します。

    しかし、一般的に IT Pro のみなさんにとっては、それはちょっと勘弁してほしいですよね。つまり、開発者が自分の知らないところでアプリケーションを展開してしまうのはやめてほしいと考えるのではないかと思います。

    そこで、「サービスパッケージだけを作成」を使用してパッケージファイルだけ作成し、展開は IT Pro が Winodws Azure ポータルから実施する...これがおそらく当面のスタンダードな手順かと思います。

    [リモートデスクトップの構成] をクリックすると、以下のように「リモートデスクトップ構成」画面が表示されます。ここで「すべてのロールの接続を有効にする」をチェックしてください。

    image

    次に、リモートデスクトップに使用するための証明書を作成します。オンプレミスの Windows Server に接続する場合には、自動的に証明書が作成されて使用されるので意識することはあまり無いのですが、Windows Azure の場合には証明書の管理方法が特殊(言い換えれば普通のWindows Server と比較してセキュア)なこともあり、自分で準備してあげる必要があります。

    「証明書」といっても別に構える必要はありません。この画面でちゃちゃっと簡単に作成できます。

    プルダウンを開き、 <作成...> を選択してください。既に一覧に証明書が表示されているかもしれませんが、これらは無視して結構です。

    image

    [証明書の作成] 画面が開くので、証明書の識別名を入力してください。何でも結構です。気にせず入力しちゃってください。今回は「certificate for RDS」と入力しました。

    image

    [OK] をクリックすると元の画面に戻り、いま作成した証明書が選択されています。

    image

    ここまでの作業で、「certificate for RDS」という名前の証明書が作成されて、ローカルの個人ストアに格納されました。

    でも自分が証明書を持っているだけでは意味が無く、リモートデスクトップサービスを提供するサーバー側(つまり Windows Azure 側)に格納しておかなければなりません。そこで、この証明書をファイルに保存しておきます。保存した証明書は後で使います。

    上の画面の [表示...] をクリックしてください。

    すると、いま作成した証明書が表示さるので、「詳細」タブをクリックし、さらに「ファイルのコピー」をクリックします。

    imageimage

    証明書のエクスポートウィザードが表示されるので、以下のような流れで PFXファイルを作成してください。途中証明書に埋め込むパスワードの入力が必要ですので、忘れずに覚えておいてください。また、エクスポートした PFX ファイルはあとで Windows Azure ポータル で使用しますから、保存場所を忘れないでください。

    clip_image041clip_image043clip_image045clip_image047clip_image049clip_image051

    最後にリモートデスクトップでログオンするための ユーザーID とパスワード、そしてアカウントの有効期限を指定します。ここで指定したユーザーIDは、Windows Azure 上の OSで、以下のグループに所属し、リモートデスクトップへのログオン権限が与えられます。

    • Administrators
    • Windows Azure Remote Access Users

    なお、有効期限にはくれぐれも注意してください。既定では 1か月 しか与えられません。

    image

    全て指定したら OK をクリックしてください。さらに、Windows Azure プロジェクトの配置 画面でも [OK] をクリックしましょう。

    image

    すると、以下のように、作成されたパッケージファイルが表示されます。cspkg と cscfg という2つのファイルがあることを覚えておいてください。あと、作成されたパスも覚えておいてください。あとで使います。

    image

    以上でダミーパッケージに作成は完了です。

    5. Windows Azure にサービスを作成する

    Windows Azure 未体験の方は混乱すると思うのですが、ここで言う「サービスの作成」とはオンプレミスで言うところの「OSの準備」です。

    まずは、Windows Azure のポータルに移動してください。

    画面左下のメニューから「Hosted Services, Storage Accounts & CDN」をクリックし、さらに左中央の「Hosted Services」をクリックしてください。すると、画面の左上に「New Hosted Service」ボタンが表示されるのでクリックします。

    clip_image059

    今度は[Create a new Hosted Service] ウィンドウが表示されるので、必要な情報を入力します。この画面では、前回までに作成した証明書とパッケージを指定します。

    image

    ① このサービスの識別名を入力します。なんでもOKです。日本語でもかまいません。

    ② このサービスのURLの一部となるホスト名を指定します。世界で唯一でなければなりません。重複している場合には警告が出ますので、修正してください。指定したホスト名に .cloudapp.net というサフィックスが付加されてアプリケーションのURLとなります。左の例では、fumidai.cloudapp.net がこのサービスのURLです。

    ③ サービスをホストするデータセンターの場所を指定します。通常は East Asia(香港)をお勧めするのですが、今回はあえて「North Central US」を選択してください。Windows Azure Connect ではリレーサービスと呼ばれる中継サーバーを使用するのですが、現在はプレビュー版であるため North/South Central US に設置されているようなのです。よって、できるだけリレーサービスに近い場所にサービス展開したほうが、レスポンスが良くなります。

    ④ サービスを作成すると同時に、アプリケーションも展開するかどうかを指定します。今回は既にアプリケーションを作成済なので、一緒に展開してしまいましょう。よって「Deploy to Production environment」を選択します。さらに、その下にある「Start after successful deployment」もチェックしておきます。

    ⑤ 展開後のインスタンスの名前を指定します。これもなんでもかまいませんが、わかりやすい名前にしておきましょう。

    ⑥ 展開するパッケージを指定します。ここには、先ほど作成したアプリケーションを指定します。「Browse Locally」をクリックして、作成したパッケージファイル(.cspkg)を選択してください。

    ⑦ 展開するパッケージの構成ファイルを指定します。「Browse Locally」をクリックして、先ほど作成した構成ファイル(.cscfg)を選択してください。

    ⑧ 先ほど保存した証明書を指定します。「Add Certificate」をクリックすると、以下のような画面が表示されるので、PFX ファイルを指定します。このとき、保存時に指定したパスワードを指定します。

    clip_image063

    すべて完了したら、[OK] をクリックすると、パッケージファイルとサービス証明書が Windows Azure 上にアップロードされるとともに、リモートデスクトップによる接続、そして Windows Azure Connect が有効になります。

    アップロード直前に以下のワーニングが表示されることがあります。これは、「インタンスが1つじゃ信頼性が低くなっちゃうよ?」という警告です。今回は無視してかまいません。

    clip_image065

    アップロードが完了すると、プロダクションのための処理が行われます。全て完了するまでに15分程度を要するので、一休みしておいてください。

    image

    処理が完了すると、上の画面のように Ready となります。

    以上でアプリケーションの展開は完了です。残るは、Windows Azure Connect の設定だけです。もう少し頑張りましょう!

    6. Windows Azure Connect を設定する

    Windows Azure Connect を使用するには、以下の2つの作業をおこないます。

      • 通信を行いたいコンピューターに Windows Azure Connect エンドポイントソフトウェア をインストールする
      • エンドポイントソフトウェアをインストールしたコンピューターとAzure上のインスタンス(ロール)をグルーピングする

    今回は、以下のような環境を作成します。自宅から複数のお客さま先に乗り込むイメージです。

    image

    ① エンドポイントソフトウェアのインストール

    エンドポイントソフトウェアとは、要はエージェントのようなものです。このソフトウェアがインストールされると、Windows Azure Connect のリレーサービスと通信するための仮想ネットワークカードが作成され、リレーまでの VPN を張ってくれます。また、Windows Azure Connect 専用の DNS に仮想ネットワークカードのアドレスを登録してくれます。

    ということで、インストールを開始しましょう。なお、Winodws Azure 上のインスタンスにはパッケージのアップロードと同時にインストールされますので、手動で行う必要はありません。

    Windows Azure Portal を開いて、画面の下にある「Virtual Network」をクリックしてください。

    画面の左上にある「Install Local Endpoint」をクリックします。

    image

    すると、以下のようにソフトウェアのURLが表示されます。URLの引数としてセキュリティトークンが与えられていることがわかります。「Copy link to Clipboard」をクリックして、このURLをコピーします。

    image

    ブラウザーにコピーしたURLを張り付けて実行すると、ソフトウェアがダウンロードされて以下のようにインストーラーの実行をするか否かを問われます(画面は IE9 です)ので、「実行」をクリックしてインストールを開始します。「保存」してから実行しても問題ありません。

    image

    実行すると、以下のように言語の選択画面が表示されますが、現在はプレビュー版のため「English」しかサポートされていません。このまま次に進んでください。

    image

    インストールは30秒程度で完了します。

    インストールが完了すると、タスクトレイに Windows Azure Connect エンドポイントソフトウェアのアイコンが表示されます。まだ構成が完了していないため、黄色い「!」マークが表示されていることがわかります。

    image

    ここまでの作業をすべてのコンピューターで行います。今回の構築例であれば、「自宅のPC]「お客様Aのサーバー」「お客様Bのサーバー」の3か所です。URLさえ知っていればインストールはできますので、メールにURLを張り付けてお客様に実行していただく...といったことも十分可能でしょう。なお、インストールした後は再起動してください。

    ② グループを構成する

    Windows Azure ポータルで、「Virtual Network」をクリックしてください。

    画面の左上に表示されている「Activated Endpoint」をクリックすると、エンドポイントソフトウェアがインストールされているコンピューターおよびロールインスタンスの一覧が表示されます。いまエンドポイントソフトウェアをインストールしたコンピューター、および先ほどWindows Azure 上に展開したロールインスタンスが表示しているか確認してください。もし表示されていない場合には、コンピューターを再起動してみてください。

    image

    表示されていることを確認したら、画面左上の「Create Group」をクリックします。

    image

    すると、以下のようなグループ作成用の画面が表示されます。

    image

    i. グループ名です。なんでもかまいません。

    ii. グループの詳細です。適当にどうぞ。

    iii. エンドポイントソフトウェアをインストールしたコンピュータの一覧から、このグループに所属させたいコンピューターを選択します。今回の例では「自宅」「企業A」「企業B」の3つのコンピューターをここに所属させます。ほかにも構成の方法はあるのですが、今回は最もシンプルな構成を選択しました。

    iv. iii. で所属されたコンピューター間の通信を可能とするかどうかの設定です。チェックすると可能になりますが、今回はその必要は無いので、チェックしません。もし、「自宅」と「企業A」だけであれば、このチェックによって通信を可能にするという選択もありです。

    v. グループに所属させるロールインスタンスを選択します。先の作業でアプリケーションをアップロードしたロールインスタンスを選択してください。

    以上の設定を完了したら、それぞれのコンピューターにインストールされたエンドポイントソフトウェアを「リフレッシュ」して、構成データを最新の状態にします。リフレッシュするにはタスクトレイに表示されている、エンドポイントソフトウェアを右クリックして「Reflesh Policy」を選択します。

    image

    Reflash Policy を選択すると、以下のような画面が表示されます。Last Policy Update at .... を見て、構成ポリシーが最新の状態になったかどうかを確認してください。

    image

    ポリシーが適用されると、アイコンは以下のように表示されます。

    image

    以上ですべての設定が完了です。お疲れ様でした。

    7. 使ってみる

    さっそく使ってみましょう。

    ① Windows Azure 上のロールインスタンスにリモートデスクトップでログオンす��

    Windows Azure ポータルを開き、画面の左下から「Hosted Services, Storage, Accounts & CDN」をクリックします。

    画面左上から「Hosted Services」を選択し、先ほど作成したロールインスタンスを選択します。

    image

    ロールインスタンスを選択すると、画面の上部にある「Connect」ボタンが有効になるので、これをクリックします。

    image

    すると、rdpファイルを開くかどうかを問うダイアログが表示されるので、「ファイルを開く」をクリックします(以下の画面は IE9)。

    image

    これ以降は、もうおなじみの操作です。ダミーアプリケーションの作成時に設定した リモートデスクトップサービスの「ユーザーID」と「パスワード」を使用してログオンしてください。

    image

    以下はリモートデスクトップで「fumidai.cloudapp.net」に接続しようとしているところです。

    image

    うまく接続できれば、Azure 上に展開したインスタンスのデスクトップ画面が表示されます。

    image

    ② ネットワーク構成を確認する

    ロールインスタンスに接続できたら、DNS の構成が完了していることを確認します。

    コマンドプロンプトを開いて、オンプレミス側(自宅、企業A、企業B)のそれぞれのコンピューターに ping をうってください。ping をうつ際のコンピューター名は、オンプレミスで使用しているママの名前で大丈夫です。以下のように、IPv6のアドレスに解決されて応答が帰ってくれば問題はありません。さほど早くはありませんが、おおむね 300 ms 程度で応答がかえってくるはずです。現時点では、データセンターをアジアにした場合、応答時間は 600~800ms 程度に増えてしまいます。

    image

    ③ リモートデスクトップでオンプレミスに入り込む

    名前解決が問題なければ、ロールインスタンス上で「mstsc」を起動し、オンプレミスに接続してみてください。

    image

    あ、もちろん、オンプレミスではリモートデスクトップの接続を許可しておく必要があるので、この点は事前に行っておいてください。

    以上です。

    いかがでしょう?はじめはちょっと面倒ですが、慣れてしまえばどうってことないですよね??

    高価な VPN や KVM を導入しなくても、Windows Azure Connect を使用すると簡易的なメンテナンス経路を構築することができます。

    是非とも活用してください。