Windows系エンジニアのためのElastic Map Reduce 1

初めに・・・
MapReduceが世に出て早10年、Amazon Elastic Map Reduce(以降EMR)のようにパブリッククラウド上でHadoopを使った分散処理を行えるようになって5年ほどが過ぎました。実際活用しようとするとLinuxを中心とするOpenSource界隈の知識が必要になるため、Windows系のエンジニアからはどうしても遠い存在になりがちです。
ところが最近EMRのWEBインターフェースが刷新されました。以前はコマンドラインでの操作が必須だったのが、WEBからの操作でもずいぶんと使いやすくなりました。この機会にEMRを使いこなしてBigDataの処理など学びたいと思います。
さてBigData処理には大別して二つあります。一つは大量の非構造化データを扱う処理。二つ目は大量の構造化データを扱う処理です。非構造化データの処理は自然言語処理、機械学習といった高度なソフトウェアサイエンスの知識が必要不可欠で、Hadoopで分散処理ができるようになったから一朝一夕に実現できる類のものではありません。二つ目の構造化データなら高度なコンピュータサイエンスの知識がなくとも、手元のデータを解析して何らかの答えを得ることは可能です。だから、ここでは構造化データを扱うことを最初の目標としたいと思います。
構造化データならRDBを使えばHadoopなんか要らないのでは?と考えるかもしれませんが、RAWレベルのログデータなんかを1年分集めると、中小企業でも数十GB~数百GBに達してしまいローレベルのサーバーでは到底解析できないサイズになってしまいます。これを解析できるサーバーを別途用意するというのは、中小企業にとっては大きなハードルなのです。
Hadoopの基本はMap Reduceにあるわけだけど、実際に使うためにはプログラムを開発せざる得ない。そしてプログラムを開発するとなると、テストやら何やらで結構時間がかかるもの。特に私みたいなWindows中心の開発者だと、Linux環境でのプログラミングに不慣れなこともあって、やたらと時間がかかったりします。でも構造化データを扱うならばMap Reduceは必要ありません。HadoopにはHiveやPigといった構造化データを手軽に扱うための仕組みが用意されています。
HiveはHadoop上で動作する簡易RDBです。一般的なRDBと異なりSELECT文は充実していますが、INSERTやUPDATEと言ったデータを更新するための機能が著しく制限されています。カンマ区切りやタブ区切り形式で保存されたテキストファイルや、Hive独自形式のデータベースファイルに対して集計処理を行えます。Hiveに与えたSQL文は数段階の処理に分解されMap Reduceアプリケーションにより集計されます。下手なMap Reduceアプリケーションを作るより余程高速に動作するので、まずはHiveを使った集計処理を学びたいと思います。

Visual Studio Onlineでgitを使用する

Visual Studio OnlineではMicrosoft独自のTeam Foundation Version ControlかOpen Sourceのgitを選択することができますが、gitを使用する場合には追加でパスワードの設定が必要です。
右上に表示されている自分の名前をクリックして、ドロップダウンメニューから「My Profile」を選択します。表示されるダイアログから「CREDENTIALS」を選択して、「Enable alternate credentials」をクリックします。「User name (secondary)」の右側にある「Edit」、「Password」の右側にある「Change」を栗㏍すいて、gitで使用したいユーザーIDとパスワードを設定します。
この時、設定するユーザーIDとパスワードはWindows Live IDで使用しているIDやpasswordとは別のものにしてください。
gitをhttp接続で使用する場合の認証手段はベーシック認証の選択肢がありませんから、Windows Live IDを使ったシングルサインオンに対応できません。また、残念なことに標準的なgitクライアントはベーシンク認証のユーザーIDとパスワードを平文で保存するため、パスワードの漏えいリスクが高いのです。そのためVisual Studio Onlineではgitで使用するユーザーIDとパスワードはWindows Live IDのユーザーIDやパスワードとは別に設定するように作られています。

ASP.NET MVCの標準ユーザー認証のDBを任意の場所に変更する

ASP.NET MVCの標準ユーザー認証機能の保存先データベースはApp_DataASPNETDB.MDFになっている。これを任意のデータベースに変更するためには、Visual Studio 2010のコマンドプロンプトを開いてaspnet_regsqlを実行してDBに必要なテーブルなどを作成した後、Web.configのconnectionStringsに書かれているApplicationServicesの接続文字列を変更すれば良い。
[C#] #27. フォーム認証によるユーザーの認証

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がこんな所に。展示即売で頑張っておりました。