ほげぐらまの別館

プログラムに限らずてきとーに、ね?

自分で”明けましておめでとうございます”書いておいてここで改めて書くにも何ですが、何がおめでたいのかな・・・・とか。まぁ、心身ともに(多分)健康に新しい年を迎えられたことに対して、と受け止めておきましょう。

年が明けるたびに毎度今年の抱負なんてものが付き物です。昨年(blogに移行する前)はやった気がしなくもないですが、何一つ達成できなかった気がしています。なので、今年はそんな実績を踏まえたうえで何も宣言しません。唯一言える事としては何事もなく健康に過ごす事、が何よりも大切かなと思うばかりです。

ここもblog化して8ヶ月になります。なんとなーく書いていて、いつの間にか自分が遭遇した不具合とその打開策を公開するなんていう場所になりつつありますが、原則気ままに書いていこうと思っています(但し、愚痴などのマイナスなものは書きませんが)。

なので、昨年よりも一層技術よりなものが多くなるかもしれないし、反面、(99%であり得ないけど)私がリア充になったらショッピングモールのレビューを書き出すかもしれません。なんにせよ、てきとーに見てもらえれば幸いです。

 

・・・と書いたこの10分後にふと思ったこと。セキュリティ的な技術力は多少向上したいかな、と。一応それなりに気を配ってはいるものの現状ではVPNに対するアラートなどは投げてはいないし、パスワードも一部ではクリティカルなサービスと共有していたりします。昨年あった情報漏えい関連ではS○NYの件で1Hitしてるので(しかも登録メアドとパスワードがメールサーバに合致というお粗末な状態)、いい加減自己防衛しないと企業のセキュリティを当てにしたらおしまいだなと。

ってことで、近々それっぽい記事が書かれるかもしれませんが、所詮てきとーなblogなので悪しからず。

前回の妄想編、の続きです。話の流れはこちらとも関連します。話の流れで言えば以下の感じ。

  1. う~ん、物理デバイスが無いとHtper-V上の仮想OSでサウンドがストリームされないよ…
  2. 解決策が見当たらないし。Technetサポートを使ってみよう!
  3. 折角だし、blogの記事として起こしてみるか・・・、あれ?ひょっとして解決策が見つかった・・・? (妄想編)
  4. 実験したら予想が的中しちゃったよ・・・、MSさんごめんなさい。メールでまとめて送ります・・・ (反省編)
  5. MSさんから返答が来たのでまとめるか~・・・ (←今ここ)

 

結果も何も答えは既に妄想編に書いてあるように物理デバイスを持たないデバイスドライバを追加してあげる、ということです。そもそもWindowsアーキテクチャと3rdパーティーが実装するであろうリモート接続環境の方法を妄想すれば自明なことだったのかもしれません。

windows_architecture

3rdパーティのリモート接続環境がオーディオストリームをフックする為に予想される場所は2箇所。

  • オーディオ操作のためのWin32APIをフックする (Win32API Hook)
  • オーディオ出力のためのデバイスをフックする (上位のClass Filter Driver)

つまりはハードウェアレイヤーより上位のレイヤーによる部分で実装されているはず・・・なのです。となれば、妄想通り3rdパーティのリモート接続環境がフックするための物理デバイスを要しないデバイスドライバを追加してあげればサウンドのストリームがされるはず、と。

ただ、前回も書いたようにこれを自前で用意するとなると非常に苦痛な作業で、これも探してこようと。で、見つかったのが”Virtual Audio Cable”というデバイスドライバ。内容的には、各種サウンドデバイスをPin接続する(KSProxyのPinを内部的に切り替えている、のだと推測します)というのを仲介するっぽいです。ググった感じではネットラジオやニコ生放送で内部出力(ヘッドフォンetc)と外部出力(ストリーミング)を1音源から行いたい場合に使うようです。もちろん、今回はそんな用途とは全く別の使い方をしますが。

VACは評価版があるようで、評価の場合に以下の制約を受けるそうです。

  • 内部的なケーブルとして3ケーブル分しか使えません
  • 数秒ごとに女性の声で”Trial”というボイスが挿入されます

 

インストールは簡単、VACのサイトからダウンロードして展開すると”setup.exe”があります。x86, x64のどちらの環境も”setup.exe”でインストールをしましょう。VACのページにも再三警告がありますが、以前のバージョンがインストールされている場合は必ずアンインストールしてね、という警告があります。そもそも今回はHyper-V上のゲストOSに対するインストールなのでHyper-Vらしくスナップショットを事前に取っておきましょう

vac_install1

 

途中で信用できない発行元からのデバイスドライバをインストールするかどうか、の確認が表示されます。もちろんここは信頼してインストールします。

vac_install2

 

インストールが終わったら一旦再起動します。再起動は聞かれていませんが、再起動しないと何故か再生ミキサーに出現しないし、何より再起動することで安心できますよね。再起動後は既にVACがデバイスとして有効となっているのでいよいよiPadからの”Splashtop Remote Desktop”を経由した接続テストです。

vac_splashtop

 

図にあるように、音量ミキサーを開いてサウンドをミュートから鳴音(めいおん)状態へ変更します (1月6日訂正)ミュート状態でもリモートサウンドが再生できました、VACデバイスのゲインが上下に振れていれば出るっポイです。後は、ZuneなりiTunesなりお好きなミュージックソフトウェアからテストをします。きっとサウンドが聞こえるでしょう。

 

以上で、Hyper-V上のゲストOSから”Splashtop Remote Desktop”を使用してサウンドストリームをリダイレクションする方法の一連となります。これによってより一層Hyper-Vによるクライアント仮想化とモバイルデバイスという2つの技術に価値が見出せたのかなと。さて、ここで忘れてはいけない2つの部分を書いておきます。

 

1. VACのトライアル版って”Trial”みたいな音声が邪魔にならない?

今回の方法ではトライアル版での使用でも”Trial”という女性のは再生されません。というのも、”Splashtop Streamer”がサウンドストリームをフックしているのは恐らく入力側であり、”Trial”という声を入れるのはVACの出力側であろうと推測されるからです。が、しかしDonateだと思って購入しましょう

特に自分の場合は独学でデバドラをかじったこともあり、あの苦痛ともいえるプログラムを製品まで持っていったプログラマを心から評価したいと思っています。意味不明なブルーバックのオンパレードは心をへし折るには十分すぎました(実際は意味があるんです、BSoDというあの画面には。でも、理解が乏しいと本当に意味不明なんです)。

 

2. Technetサポートから得られた情報は?

結果的にホストOSの物理デバイスを恒久的にゲストOSに割り当てる方法は無いらしいが、Windows7上のVirtualPCを用いれば割り当ては可能、だとのことでした(KBとしての資料ではないので確約が無いことは悪しからず)。今回はあくまでHyper-Vが前提となるのでこれを用いることはできませんが、覚えておこう、っと。Hyper-V3.0ではきっと恒久的なデバイスの割り当てができるよね?って期待を念押ししてサポート終了となりました

※ サポート段階では知らなかったのですが、今ざっと見た感じではFiber, NUMAなどの複数台PCによる処理系が強化されているっぽいのかな・・・。物理デバイスの割り当ては無さそうな感じですね。まだ、Developer Previewのようなので、更なる機能追加に期待します。

(このblog投稿は12月23日に書かれたものです。理由はこちらを参照)

 

恐らく今回の記事に関しては誰得なのかサッパリわからないレベルですが、稀なケースでしょうというものです。タイトル通り”RemoteFX USB”と”リモートサウンド”と”Splashtop Remote Desktop”の3者が関連する微妙な疑問です。

RemoteFXを使い始めて1.5ヶ月ほどですが、幾つかの問題のうちの一つにSplashtop Remote接続時にサウンドが再生されないというものがあります。なぜ再生されないか、というのは一言でいえばHyper-V上のゲストOSに対しては仮想デバイスとしてのサウンドボードが割り当たらないのでSplashtop Remoteがフックするオーディオデバイスが存在しないことを意味します。

この裏付け確認として実験してみました。

  • ホストOSの物理デバイスに”USB Audio”デバイスを接続
  • ホストOSよりゲストデバイスに”RemoteFX USB”を通じて”USB Audio”を転送 (但し、サウンドはリモート側で再生する)
  • ゲストOSの再生デバイスを”USB Audio”を選択する
  • 上記の状態で、VPN経由をしたiPad2より”Splashtop Remote Desktop”でゲストOSに接続する

この状態であれば”Splashtop Streamer”が”USB Audio”のオーディオデバイスをフックすることでiPad2上の”Slpashtop Remote Desktop”でもサウンドが再生されるわけです。しかし、(ホスト・ゲストOSが同一の物理PC上で接続する限り通常はあり得ないが)ホストOSからの”Remote Desktop”が切断される=”RemoteFX USB”が切断されるとオーディオデバイスも当然消えます。結果、再生できないと。

もちろん、Hyper-Vをこんな形で使おうなどというユーザが極稀であることは認識していますが、仮に今回のオーディオデバイス以外でもホストOSに接続した物理デバイスをRDPセッションが存在しない間も接続しておきたい、ということはあるのではないかなと、思ったり思ったり。ということで、まとめた結果”Hyper-V 2.1 permanently assign Guest OS”あたりでググったりしてみましたが結果は実りませんでした。それどころか、USBのみならずPCIをゲストOSにマウントしたいとか・・・。ここまでくると何でもありですね。別の仮想化環境として”VMWare ESX”がありますがこれならできるとかできないとか、でも製品、仮想化を行うための物理環境が共に高くて手を出せないです。

さて、文字ではいささか退屈なので図でまとめるとこんな感じ。まずはネットワークとしての全体像です。すんごい適当ですが・・・。

rdp71

 

次に、”RemoteFX USB”でオーディオデバイスを転送していない状態でのデバイスマネージャ画面です。RDPで接続していますので、リモートサウンドが使える=サウンドの再生は可能ですが、デバイスとしてのオーディオデバイスは存在していません。

devmgmt

 

そして、玄人志向から数年前に発売されていたUSBオーディオをホストOSに刺して”RemoteFX USB”を経由して接続する画面。”USB Audio”として認識され、ディスクデバイスのみならず転送できるところが魅力ですね。

rdp71_usb

 

最後に上記の”USB Audio”を有効にしてゲストOSに接続した状態。もちろん、この状態が”Hyper-V 2.1上のゲストOSに対してSlpashtop Remote Desktopから接続を行ってもサウンドがリモート側で流れる”という環境になります。

devmgmt_audio

※ 画像がTypoちゃったけど、直すの面倒だから許して・・・。”RemoteFX USB”です。

 

現状では”Slpashtop Streamer”がどのレイヤー(API Hook, Class Driver, etc…)をフックしているのかわかりません。ただ、現状ではデバイスマネージャ上のオーディオデバイスが存在していないとゲスト側でサウンドが鳴らない、というのは確かというだけです。

 

ということは・・・、物理デバイスを要しない”(仮想の)何もしない再生サウンドデバイスドライバ”を作ってあげれば”Slpashtop Streamer”がフックするインターフェースを提供できるのでは!!!! ということになるのかな、妄想レベルでは。確かにDDKでもWDKでもVideoCapという仮想のビデオキャプチャデバイスをインストールするサンプルがありましたね。また・・・・DDKですか・・・?、もう2年以上触ってないので勘弁してください・・・・。

※ “仮想の”というのをカッコ付で書いた理由は、確かOSレイヤからみて物理デバイスが存在するかどうかは関係なかったはずなので。言い換えれば、OSレイヤからしてみればドライバとして認識するかどうかが重要であって、ドライバが物理デバイスにI/Oを発行するか、は関知しなかった・・・・ハズ・・・。間違っていたらごめんなさい。記事のまとめが私の妄想ワールドで終わるのはこのblogの恒例行事なので許してください。

以前のblogに書いたようにiPhone/iPad系からの各種ファイルマネージャについて、です。VPNに加えてリモートデスクトップ接続 + ファイルマネージャでほぼ全てのリソースを扱うことができるはずです。ちなみに今回、iPhone/iPadのみと買いたいのはAndroidから卒業してしまったので。そして、Windows PhoneではVPN対応していないので今回は除外です(更に書けば、Windows PhoneではUAGと呼ばれるSharePointと接続するための特殊なVPNがあるようですが・・・、まぁもちろん一般的に求められているVPNとは異なりますのでやはりまだ除外、ですね)。

私が現状使っているファイルマネージャはAntecea Inc.”Files Connect”と、Stratospherix Inc.”File Browser”の2つです。Splashtop Inc.”FileHound”はファイルマネージャではありませんので詳細を知りたい方は前回のblogをご覧ください。

★Files Connect (Link to iTunes)

恐らく最も多くのプロトコルをサポートしているであろうファイルマネージャアプリです。ここの説明書きを読むより直接iTunesの説明を読んでいただいた方が正確なのですが、一応特徴を挙げておきます。

  • ユニバーサルアプリケーション (iPhone, iPad両対応)
  • 価格は450円
  • 多くのプロトコル(MobileMe iDisk, DropBox, Google Docs, Box Net, FTP, WebDav, SFTP, AFP, SMB)をサポート。内、私が確認を取ったものはFTP, SMBのみですが。
  • コピーボード(コピーしたいファイルパスをリスト化しておく領域)をサポート。
  • メディアプレイヤーとしての機能付き、接続先の音楽ファイルをダウンロードしてプレイリストとして再生可能。正直、あまり要らない付加機能かもしれません。
  • 画像に対するスライドショー機能は恐らくなし(無いはずが無い、と思いたいですが)。
  • ZIP解凍、m4vの直接再生も可能。
  • ファイル操作時に本体へコピーを作成するので、かなり多くのキャッシュ領域を必要とします。
  • フォルダ上下の移動がスライドビューという独特のUI。癖でトップツールバーのボタンを押下した瞬間に接続切替画面に飛ばされるという誤爆操作が多発します。慣れだとは思いますが・・・・

ちょっとしたスクリーンショット、接続選択画面と実際の動作(SMB)画面です。

IMG_0435   IMG_0436

 

★File Browse (Link to iTunes)

SMBのみに特化したファイルマネージャアプリです。同様iTunesのほうが正確なんですが・・・。

  • ユニバーサルアプリケーション (iPhone, iPad両対応)
  • 価格は450円
  • サポートプロトコルはSMBのみ。Macから接続するときはSMBプロトコルのサポートを有効にするのでしょう。
  • 1ファイルのみのコピーをサポート。なので、複数ファイルのコピーには不向きです。
  • フォルダにある音楽ファイルを再生する機能あり。同じくあまり要らない機能・・・かもしれません。
  • フォルダにある画像ファイルをスライド表示する機能あり。スライド秒数も0秒~60秒で調整可能。
  • ZIP解凍、m4vの直接再生も可能。
  • キャッシュは一時的に利用する場合がありますが、使用領域の簡単な確認とParge(削除)は可能。
  • トップツールバーがフォルダ上下階層の移動というオースドックス?な操作感。
  • ドメインユーザでの接続は”ドメイン名@ユーザ名”のUsernameで接続します。スクリーンショットを参照のこと。

同じくちょっとしたスクリーンショット、ホーム(接続選択)画面とフォルダビュー画面。

IMG_0438   IMG_0439

 

両者の使い分けは・・・・と言われると正直あまりないです。というのも私の場合は接続先のほとんどがSMBなので。強いて言えばSMBファイルに対する転送速度は File Browseの方が Files Connectより若干早い気がするものの明らかな差というものはありません。ファイル操作が発生しないならUI的に簡単なFile Browseを使っています(これも私の場合で言えば、VPN内のコピーなのでわざわざVPN回線を経由してコピーしなくてもリモートデスクトップ先でコピーすればいい)。

恐らくほかにも良いファイルマネージャアプリはあるのでしょうが、値段と信頼性の都合上から上記2つが有力かな、というところです。特徴には書いていませんが、どちらのファイルも3rdアプリケーションへのフォワードが可能なので機能としては十分でしょう。

個人的にはSkyDriveの対応が欲しいところです、対応するとしたらFiles Connectでしょうが。MicrosoftのSkyDriveがリリースされたし、Office群のリリースも予告されている(内、OneNoneはリリース済み)ので、来年以降もモバイル環境におけるドキュメント事情はまだまだ進化を続けるのでしょうね。

どうでもいいですが、ここ最近blogのアクセスが増えてきています(StatPressによる結果では)。WordPressのSEO対策がやたら強いのか、『IS12Tとa○ apps』とか、『Windows 2008 R2 と ○ntel ○D ○raphics』辺りが高確率でヒットする感じです(伏せ文字にしているのはここにヒットして欲しくないで、役に立たないし)。

で・・・・、ネタが無いこともないのですがたまには写真を載せるのもいいんぢゃないかな、ということで、愛機IS12Tの最高画質でとった景色を。某場所から朝7時に撮ったのですが、ギリギリ地平線が見える感じですね。ちなみに、写真中央の地平線に対して若干の飛び出た線があるのは三菱のエレベータ試験場だと思われます(拡大画像ぢゃないと見れないカモ)。

WP_000134_small

う~ん、私の感想に反してここ最近の東芝・富士通モバイルが出す機体は外れというかひどいのが多いですね。Windows Phoneとかも第二弾的な話は聞かないですし、はてさて・・・・次なる携帯は何になるかサッパリ予想がつかないです。