AMDのクラウドファーム

今回のゲームショーで楽しみにしていたものが二つある。ひとつはソニーのヘッドマウントディスプレイ。もう一つはAMDのクラウドファームを使ったシステムがどうなったかだ。PS4でも、XBOX360oneでも、PS vita TVでも無いあたり、なかなかひねくれてると思う。
AMDのクラウドファームを使ったゲームシステムは、クライアントには動画の再生機能と操作するために最小限の入力機能だけを持たせ、最も計算負荷の高い3D画像のレンダリングも含めて他のすべての処理はサーバー側で行うというものだ。
現在のネットワークゲームの多くは、ユーザーの入力をアプリケーションがサーバーに送信、サーバー側で判定された結果がクライアントに届き、クライアント側でグラフィックを作成するようになっている。このグラフィックの作成で高精細な画面を作るためには、ユーザーが相当な初期投資をおこなう必要があった。この高度がグラフィックを作成する処理もサーバー側で行なってしまえば、高機能なグラフィック処理ボードを複数のユーザーでシェアすることになるので(1日24時間ゲームを遊び続ける人は居ない)、一人当りの負担はより小さな金額で、高精細な画面を得られることになる。
ネットワークの遅延が大きくて使い物にならないのでは・・・と思うかもしれないが、ネットワークゲームではどのみちサーバーとの通信は行なわれている。より高性能なビデオチップを使えば、画面のレンダリングに必要な時間は短くなり、ミドルエンドのグラフィックを載せたPCよりも、トータルでの応答速度は速くなるというわけだ。後の問題はネットワークの帯域幅だが、モバイルでも数十Mbpsの通信速度が確保できるようなってきた。
なかなか斬新でセンセーショナルなアイデアだったのだが、とんと実際にゲームがサービスされるという話を聞かなかったのだ。でようやく最初のサービスが始まった。なんと軽量ブラウザゲームの「艦隊これくしょん」である。「え~?」と思ったでしょ?私も思ったよ。3DCGの機能なんかばっさり無視して、マルチクライアント対応ゲームを容易に作れるってところで、採用が決まったようだ。ちょっとがっかりで、微妙にうれしい、変な感じのニュースになった。
IMG_6320_DxW
だがAndoroidに、iPhoneに、PCに・・・とマルチデバイス対応ゲームの開発に向いていたのも確かにその通りだと思う。これをきっかけに広く普及してくれないかなと、新たに期待した。

PLCモデムを購入してみた

自宅の2階と1階のネットワークを繋ぐのにPLCモデムを個人輸入してみた。
最近は無線LANの高速化が進んで、条件が良ければ1Gbpsを超えるリンク速度を得られます。ですが実際、多くの無線LAN親機は横方向に電波の指向性を持つため、上下の階には電波が届きにくいのです。また無線LANが普及したこともあり、住宅地でも多数の無線LAN基地局が検出されるようになりました。そのため使用する周波数帯域が重複して干渉し合うため、親機から少し離れるとあまり速度が上がらないのです。
日本国内ではPLCモデムは殆ど着目されず、メーカーもPanasonicとBuffaloぐらいしかありませんが、それでも少しづつ高速化しています。日本国内で発売されている物はHomePlug AV準拠の物でリンク速度は240Mbpsです。海外では、HomePlug AVを拡張したPHY-rateで500Mbpsに達する速度の物も販売されています。
IMG_20130918_202651と言うわけで、Amazon.comからTP-Link TL-PA411 KIT AV500 Mini Powerline Adapterを購入しました。米国で一般的に使われているのは240V 50hzですが、実は殆どの製品は日本で使われている100V 50hzでも動作します。この製品もメーカーサイトを確認すると、動作保証範囲は100Vから240Vとなっています。
パッケージには詳細なマニュアルを記録したCDと、簡易マニュアルが1枚、30cmほどのLANケーブルが2本、そして本体二つがはいっています。
最初はマニュアルを無視して、テーブルタップを経由して接続を試みたのですが、上手くつながりませんでした。ちゃんと壁のコンセントに直接接続しましょう。
壁のコンセントに接続したらリンクボタンを1秒ほど押します。そうすると、電源ランプが点滅を始めますので、もう一台のPLCモデムの元に駆けつけ、同じようにリンクボタンを押して、電源ランプを点滅させます。1分ほどでネゴシエーションが完了しリンクランプが点灯するので気長に待ちます。接続も簡単です。
今現在は有線LANで接続するのと遜色なく使えてます。

パソコンのファイル検索どうしていますか?2

Windows Desktop Searchの代わりにFESSを使っていたのだけれど、いくつかの点で使い勝手が悪く、挫折しました。まずメモリを食う。会社のパソコンなんでそんなにメモリに余裕があるわけでも無く、1.2GBの容量を常時使われてしまうので常時立ち上げている訳にはいきません。ところがインデックスの生成に24時間以上かかるため、常時立ち上げておくほかありません。以前中断した箇所からインデックスの生成を再開する機能でもあれば良いのですが、毎回最初からスキャンを始める為途中で止めて再開という訳にはいかないのです。
そこで続いて目を付けたのがDesktopHE。実は以前にも一度使用を試みたのだが、そのときはインデックス生成の途中でエラーを起こし、検索も出来なくなったのであきらめたのでした。
DesktopHEはEstraierを検索エンジンとして使った、フロントエンドプログラムです。NGRAMに対応したインデックス生成を行なうので検索キーワードにマッチしないと言うことも殆ど起こりません。
インストールはとっても簡単。まず最初にJavaRuntimeをインストールします。その後、DesktopHEからダウンロードした実行ファイルを含むZipファイルを適当なフォルダに解凍したら、DesktopHE.exeを実行するだけです。
インデックス生成中に異常を起こし、検索データベースが壊れてしまうことがあります。その場合はコマンドプロンプトを開いて、以下のコマンドを実行してください。

estcmd.exe repair “C:\Documents and Settings\ユーザー名\Application Data\DesktopHE”

これで破損したデータベースが修復され、再度検索やインデックスの生成を行えるようになります。

原子力・・・維持/廃止を語る上で最も大事なこと

原子力政策は今回の衆議院選挙において大きなテーマになってますが、何処の政党もマスコミも最も大事なことには触れてくれません。我慢がならないので、ここではき出しておきます。是非参考にしてください。
原子力を推進/維持する場合に大事なこと。
最悪の場合にどうするのか?ということを考えておくことが最も大事です。起こりうる事態を列挙し、それぞれの場合にどうするのかを考えるのがリスク対策の基本です。最悪の事態が起こらないように対策をとることも確かに大事ですが、最悪の事態が起こる可能性を下げる事は出来ても、起こる確率をゼロには出来ないのです。起こる確率がゼロじゃない以上、いつか必ず起こります。だから最悪の事態が起きたときどうするのかを、絶対に考えてかなくてならないのです。
最悪の事態が起きたときにどうするのか・・・一つの方法として見捨てるという選択肢があります。見捨てるのが対策なのかと思われるかもしれませんが、対策にかかるコストが被害を上回るなら、対策しないのも立派な選択肢の一つです。東日本大震災のとき福島で行われたのは見捨てるに限りなく近い状態でした。組織だった避難支援も無く、いまだどうするのか決まりません。
もう一つの方法は、避難できるように備えるということです。日本の原発で半径50Kmから避難させようとすれば、百万人規模での避難が必要です。100万人を避難させるだけの避難先設備や、交通インフラ、避難用バスや救急車を整備しておく必要があります。いったいいくらかかるやら・・・どう考えても安い電気代を維持できそうにありません。
多くの国でとっている方法は避難範囲に出来るだけ人を住まわせないと言うことです。この場合は建設場所に人口密度の低い場所を選ぶのですが、日本の場合は既に人口の多い場所に施設を作ってしまっています。もしこの方法をとろうとするなら、100万人単位の人に移住をお願いすることになります。途方も無いお金がかかることになりますが、ある意味で先進的で効率的な都市を造るチャンスかもしれません。そんな都市を造るなら、ちょっと住んでみたい気がします。
原子力を抑制/廃止する場合に大事なこと。
既存の原子炉を廃棄するには、一つあたり数千億円の費用がかかります。廃炉費用は電気代の売上の一部を積み立てて対応することになっています。寿命を迎える前に廃炉にするということは、廃炉にかかる費用を原発で造った電気の売上で賄えないことを意味します。しかも現時点では大幅な積み立て不足です。日本には50を超える原子炉がありますから、これを全部解体するだけで10兆円もの費用が必要です。しかも、電気代にしめる廃炉費用が安すぎて、大幅な積み立て不足になってます。
これは解体にかかる費用だけで、解体で出た高レベル放射性廃棄物の保管費用も必要です。放射能レベルが安全域に下がるまで10万年間隔離して保管しておく必要があります。高レベル放射性廃棄物を安全に保管できる場所は日本には無いと言われているので、場合によっては海外にお願いするしか無いかもしれません。これにかかる費用は未知です。
・・・・そこで問題です。どちらを選んでも良いのですが、その費用はどこから出しますか?

パソコンのファイル検索どうしていますか?(FESSのインストール)

Google Desktop Searchがサポートを終了してから1年近くが過ぎようとしています。OSが標準的に検索機能を提供するようになったためとしていますが、実際のところWindows標準の検索機能はGoogle Desktop Searchには遠く及ばず、ここしばらく随分と不便していたのです。
Windows標準の検索機能しか使った事が無い人には「え?どの辺が?」と言う話かもしれません。Microsoftが提供する検索機能にはいくつかの欠点があるのです。
Microsoftの検索機能は事前にインデックスを作成することで、ファイルの内容まで高速に検索してくれます。ですが、標準の設定ではインデックスが作成されているローカルドライブに限られます。ネットワークドライブの検索にもインデックスを使う事が出来ますが、それはサーバーがWindows Serverの場合に限られます。よく売られているNASはLinuxサーバーであるためインデックスを使った検索が出来ないのです。
もう一つは、確かに含まれているはずの単語なのに検索にかからない事があるという問題です。欧文はスペースを置くため単語の境界を明確に判断できるのですが、日本語は単語の境界を明確にしないためN-GRAMや形態素解析といった特別な技術が必要になります。そのあたりのチューニングの問題であろうと推測しているのですが、Microsoftは単語の切り出しをどのようにしているのか公表していないので、実際のところは分かりません。
私はNAS上に格納した数テラバイトのデータを検索する必要が度々あるため、NAS上にインデックスを作成できないのでは使い物にならないし、検索にかからないのでは非常に困るのです。
そこでいくつかの日本語に対応したデスクトップ検索ソフトウェアを試してきました。Linux上で動作するソフトは多々あるのですが、Windows上で動作するソフトは限られており、ようやく納得できるソフトにめぐり合えたので紹介します。
Fessの概要
FessはOpen Sourceのソフトらしく、Open Sourceで作られたJavaベースの各種検索ソフトを組み合わせることで作られています。インストールもダウンロードしたファイルを解凍するだけとお手軽で使いやすいソフトです。
Fessのインストール
Fessのダウンロード
Fessのホームページ(http://fess.sourceforge.jp/ja/downloads.html)からZIPファイルをダウンロードします。FessにはMySQL版(fess-server-mysql-x.x.x.zip)と通常版(fess-server-x.x.x.zip)があります。通常版をダウンロードしましょう。
Fessを解凍する
fess1ダウンロードしてきたFessを適当なフォルダに解凍します。インデックスの作成対象のサイズにもよりますが、数十GBの容量が必要なので十分な空き容量があるドライブを選んでください。ここではC:\FESSにインストールすることにします。
JDKのダウンロードとインストール
Fessを動作させるためにはJavaSE(JDK)が必要です。Java(http://www.oracle.com/technetwork/java/javase/downloads/index.html)のホームページからダウンロードしましょう。ダウンロードが終わったら、ダウンロードしたインストーラを実行します。ウィザードに従ってインストールしてください。
環境変数を設定する
fess2コントロールパネルの「システム」から「システムの詳細設定」を選択し、環境変数を二つ新規に追加します。一つはJDKのホームディレクトリで「JAVA_HOME=C:\Program Files\Javajdk1.7.0_09」のようにします。
fess3もう一つはFESSのホームディレクトリで、FESSの解凍先を「CATALINA_HOME=C:\FESSfess-server-7.0.1」のようにします。
Fessを起動の起動と初期設定
C:\FESSfess-server-7.0.1\Startup.batを起動します。コンソール画面が開いてFessが動作し始めます。
初期設定を行うには、WEBブラウザでhttp://localhost:8080/fess/loginを開きます。インストール直後はユーザー名:admin、パスワード:adminでログインできます。
設定ウィザードが表示されるので設定を開始します。最初にスケジュールの設定を行います。インデックスの生成をおこなう時刻を指定してください。
次に検索対象とするフォルダを指定します。クロール設定名は適当に任意の名前を決めてください。クロールパスに検索対象のフォルダを指定します。最大アクセス数は初期設定で10000になっていますが、デスクトップの検索に使用する場合は削除して空欄にすることをお勧めします。最大アクセス数を指定していると、そのファイル数を超えた場合にインデックスが作成されません。
最後に「クロールの開始」をクリックすると、インデックスの作成が始まります。
Fessによる検索
検索を行うにはWEBブラウザでhttp://localhost:8080/fessを開きます。適当な検索語を入れて検索してみてください。
fess4
Fessの欠点
一つ欠点を上げるとしたら、メモリ消費量が非常に多いことでしょうか。普段でも500MB、クロール中は1GB程度のメモリを使っています。メモリの少ないパソコンの場合、常時立ち上げたままと言うのは難しいでしょう。普段は終了しておいて、検索が必要な時だけ起動。パソコンをあまり使わない時間帯を狙って定期的に立ち上げてクロールを行うといった工夫が必要と思います。

Kindle日本解禁で思ったこと

Windows 8発売直前、Kindleが電撃的に日本でサービススタートしました。
米国でのサービススタートが2007年ですから、5年がすぎて漸く日本国内でもサービスが始まったことになります。この5年間で米国の出版業界はAmzonを中心として大きな波がいくつも起ってきました。出版社を介さずに電子出版を開始したり、大幅なディスカウント販売を行ったりと、海の向こうを恨めしく思っていたものです。待ちに待ったAmazon Kindleの日本上陸。保守的な出版社から版権を得ることが出来ずに、国内の電子ブック市場は寒々とした状況が続いてきただけに、黒船来襲への期待はとても大きかったのです。
結果は、大きく落胆するものでした。
日本国内でも1~2年ほど前から、Google Books、楽天kobo、AU Books、GALAPAGOS、honto、他中小の電子ブック販売会社が大量に生まれる状況にありました。その一方でコンテンツは非常に偏っており、漫画とライトノベル、申し訳程度の純文学に、残りはポルノ小説と言う状況でした。
Kindleという黒船はこの状況を大きく変えると期待していたのですが、ふたを開けてみたら何もかわらないものでした。コンテンツは漫画とライトノベル、著作権切れのコンテンツと、英語コンテンツが大部分と言う状況。急激に書籍が増えるかと言うと、30日以内の出版予定はたった30冊。
落胆しました。日本の出版社は電子化する気はかけらすらもないのだと。恐らくは、大手電子ブックベンダーとなりうるAUやDoCoMo、楽天、Googleが参入したため、ここで参入しないとビジネスに介入できなくなるという、後ろ向きな理由での参入だったのではないかと思います。
出版社各社はなぜそこまで電子書籍を嫌うのだろう?日本では毎月2万~3万札の新刊が出版され、その多くは書店に並ぶ事すらなく消えていく。多くの読者は入手困難な書籍を古書店で探しまわっている。それらの目に触れない本を電子書籍化してくれるだけで、ユーザーの多くは感謝し、出版社も失われてきた利益を掘り起こせるだろうに。

CEATEC 2012 DoCoMoの試作デバイスが良い感じです。

IMG_2732色々見た中ではDoCoMoの展示が興味深かったです。なにより衣装が可愛い・・・と言うのは置いておいて・・・
IMG_2764
ハンズフリービデオフォンなる試作デバイスが面白そう。5つの広角カメラが装備されていて、広角カメラの画像を合成して相手に送る自分の正面映像を作成します。自分の前にカメラが無くても、自分の正面画像を送る事が出来るのです。つまり部屋の中を自由に動き回れるのです。
IMG_2763それだけじゃなくて、モーションキャプチャーを使って。自分の手の動きで仮想キーボードへの入力などの操作が出来ます。さらに5つのカメラで前後左右の全周囲画像を同時に撮影することができます。この画像を取り込んで任意の画像と合成して、AR(強化現実)も実現します。
このメガネをかける事で全周囲にモニターを配置して、両手で自由に操作するなんて事も可能になります。まるでSFの世界です。これ、すごく欲しいです。
他にタブレットPCのカメラを利用した視線入力システムのデモなんかもやってました。これも早く出してほしい所。
IMG_2777懐かしい所でVictorがこんな所に。展示即売で頑張っておりました。

クラウドのデメリット

クラウドって時と場合によって意味が変わったりしますよね。広い意味では「複数のユーザーやソフトウエアシステムで、複数の機器を共有することにより、可用性(アベイラビリティ)と拡張性(スケーラビリティ)を高めつつ、運用コストを下げる技術。」と言ったところでしょうか。クラウドだって魔法の弾丸ではないのです。クラウドで出来る事、出来ないことをちゃんと認識しているでしょうか?
機器を共有することでコスト削減
CPUやネットワーク帯域等のリソースは常に100%使っているわけではありません。必ず使っていない時間が発生するため、リソースを共有することによってコストを削減することができます。逆にいえばストレージのように長時間占有するようなリソースについては、クラウドを使ってもたいして安くはなりません。
使った分だけ購入することでコスト削減
新たな機器を購入する場合には、償却期間を定めたうえで、将来必要になるであろうスペックの機器を購入します。普通に予想するなら、今よりも将来の方が高い性能が要求されるでしょうから、現時点においてはオーバースペックとなります。
クラウドでは現在使用する分だけを購入することが出来ます。現時点においてオーバースペック分となるコストを負担する事が無くなります。また、処理の集中する平日は処理能力を高め、処理の少ない休日は処理能力を下げてコストを下げると言った使い方も可能です。必要な量だけをきめ細かく購入する事により、その分安く購入することができます。
国内ベンダーには不思議なことに月額固定の料金を提示するところが多いです。一見するとお買得に見えるますが、月額固定ではパブリッククラウドを利用するメリットの一つを捨てている事になります。
可用性向上のためのコストを削減
クラウド側でハードウェアが冗長化され、信頼性が確保されています。そのため信頼性を向上するためにハードウェアを追加購入する必要がありません。正確には冗長化にかかるコストを他のユーザーやシステムと共有しているわけです。その分、コストを削減することができます。
ただし信頼性が向上しているといっても、サーバー用ハードウェアを専用に用意した場合と同程度のものです。また障害時には自動的にマイグレーションが行われますが、この間数分~数十分程度の停止は避けられません。
もしそれ以上の信頼性を望なら、動作させるソフトウェア側での対応が必要です。分散処理に対応するなり、フェイルオーバーに対応するなりしなくてはなりません。
拡張性の向上
クラウド上では性能を向上させたり、サーバーを追加したり、ハードウェアの拡張を容易に行えます。ですが、それによってシステム全体の性能が向上するかはソフトウェア次第です。
たとえCPUの性能を上げたとしても、ソフトウェアが複数のCPUコアを有効に使えなければ性能は向上しません。たとえCPUとメモリを増やしたとしても、仮想サーバーのディスクIO性能は低い事が多く、ディスクIOの多いソフトウェアの性能は向上しません。CPUやメモリを増やしても性能を向上できないなら、台数を増やせばよいのですが、ソフトウェアが分散処理に対応していなければ台数を増やすにも限界があります。
最初から分散処理を念頭においてソフトウェアを選定、開発しないと如何にクラウド上で動いていると言っても、性能向上の限界に直に突き当たってしまいます。
パブリッククラウドを使うことのリスク
パブリッククラウドを使うことの大きなリスクに、事業の継続性について、SaaSやPaaSサービスの提供企業に握られてしまう事があげられます。パブリッククライド事業者がサービス内容の変更や、あるいは撤退を決断したとき、これを止める手段はありません。自社のサービスも撤退するのか、ほぼ設計からやり直すのに近いコストを払って自社のサービスの再構築をおこなうのか、判断を迫られることになります。
たとえばGoogleのトップページから二つほどリンクを辿った所に、Googleが提供しているサービスの一覧があります。最近、この一覧に並んでいるアイコンの数が大きく減っりました。2年ほど前から予告していたとおり、サービスの提供を取りやめたのです。その中にはGoogle Maps API(Flash用)などのSaaSも含まれていました。Googleの例では計画的に行われたサービスの廃止であっため、2年ほどの移行期間が設けられていました。万が一、倒産に伴う事業停止の場合には、突然サービスが止まる可能性もあるのです。
運用の難しさ
専用サーバーを10台運用した場合の複雑さを10としましょう。4台のサーバー上で10台の仮想サーバーを動かした場合の複雑さは10*4で40にもなります。実は同じ10台のサーバーを運用する場合でも、クラウドだとその複雑さは何倍にもなるのです。10台なら複雑さは4倍で済みますが、数百台数千台規模のパブリッククラウドになるとその複雑さは想像を絶します。
こういったシステムの運用には高い技術と経験がもとめられるものです。さてここで問題となるのは、そんな複雑なシステムを問題なく運用できるだけの、高い技術を持った企業がどれだけあるでしょうか?「そんな複雑なもの、運用できるのか?」と言うのは、クラウド黎明期から指摘されていたことなのです。
クラウドは数を沢山まとめればまとめるほど全体のコストを下げる事ができます。もはや専用サーバーや仮想サーバーのレンタル事業では、AmazonやGoogle、Micorosoftの提供するパブリッククラウドと価格競争するのは困難になっているのです。もし価格で互角に渡り合おうとするなら、たとえ技術が追いつかなくとも、同レベルの巨大なクラウドを作らざるえません。最近立て続けに起きたクラウドがらみの大きなトラブルは、ベンダーが背伸びして巨大なクラウドを構築したことに遠因があるように思うのです。
と言う訳で、クラウドを使う上で分かってなければいけない、欠点を上げてみました。クラウドを使うメリットや良い点はメーカーがこぞってアピールしてくれるのですが、欠点についてはまず説明してくれません。出来ないことを知った上で、正しくクラウドと付きあいましょう。

HuLu

広告が目についたので、ひと月ほど無料期間の間契約していたが、結局一度も視聴することなく有料になる前に解約した。理由はただ一つ。わたし好みのコンテンツがほとんど皆無だったからだ。米国のTVドラマシリーズが好きな人には楽しいサービスなのかもしれない。
でも私の好むのはSFとファンタジー、それにアニメなのだが、そちらは壊滅的だった。映画に限って言えば作品の絶対数が少ないうえに、10年くらい前の旧作ばかりだ。アニメに至っては無いに等しい。日本でこの手のネットサービスに真っ先に手を出す「先進的な消費者」は「お宅」とよばれる人達と被っているので、アニメコンテンツが手薄いのは致命的に感じる。
月額固定BODとしては国内初めてのサービスであっただけに、このまま消えてしまうのは寂しくおもう。

VC++ .NET 2003でUACを有効にしたアプリケーションを作成する。

VC .NET 2003以前の開発環境はマニフェストを実行ファイルに埋め込む機能が、設定画面に用意されていません。そこで手動で作成したマニフェストをリソースとして埋め込む必要があります。
まずは以下のようにマニフェストファイルを作成します。赤字の部分がUACに関する部分です。requestedExecutionLevelのlevelにrequireAdministrator(管理者権限が必要)を指定すると、実行時にUACの画面が表示されます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.WinSafeCleaner"
type="win32"
/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="true"/>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

これをRT_MANIFESTという名称のカスタムリソースの、リソース番号1として実行ファイルに埋め込みます。
参考資料
マニフェスト・ファイルをアプリケーションに組み込むには?