サイトのプロバイダーから「メンテ用のスクリプトを走らしたら、間違ってデータ飛ばしちゃった。テヘっ」と、いう連絡がありました。
サイト内のファイルは復旧してもらいましたが、ブログで使っているデータベースのデータは復旧できていないのが現状のようです。
日記本文はこちらでもバックアップを持っているのですが、コメント部分のデータの復旧の見通しはたっていません。orz
これを機に新しいプロバイダーへの移行します。ドメイン名はそのまま使えるようにしますが、途中まで完成している新しいブログプログラムを完成させるまで、今しばらく時間が掛かると思います(2週間くらい?)ので、それまでは簡易日記を書いていきます。
2009年6月13日 ひげねこ
ここの所、仕事のメイン作業で不透明なところが多かったので休日も仕事していたりしたのですが、ようやっと光明が見えてきたので、今週末は久々に趣味のプログラムに没頭することができました。
と、言いたいところですが、やっぱり家にいると、ついついForza3やったり、本読んだり、ネットサーフィンしたりと、誘惑が多いので趣味のプログラムをなかなか進められないのも事実です。
っていうか、最大の障害はこのふたりです。
見事にキーボードの前に陣取っています。
仕事をしなければいけないときは、ふたりとも雰囲気で判るのか、ここまで邪魔することは無いんですが、今週末はまったりと休んでたので、かまってもらえると思ったのでしょう。
こんなふたりを避けてまで趣味のプログラムはできないので、ふたりが満足するまで久々に全力で遊んで(遊ばれて?)あげました。
さて、.Net 4.0には並列プログラミングのためのTPL(Task Parallel Library)という新機能があるので、早速試してみました。
テストに使ったのは、4096x4096のハイトマップをフラクタルを使って適当に生成するというものです。各スレッド間のやり取りはまったく皆無だし、メモリアクセスをあまり必要としない、マルチスレッド向けとしては最適な処理になっています。
シングルスレッド、PTLのParallel.Forメソッドを使ったもの、自前で複数のスレッドを作って処理したものを比較してみました。
で、6回の測定をして、最初の一回を除いた(コード生成の時間などを省くため)、5回の結果を平均した結果と、シングルスレッドでの処理時間との速度差は以下のようになりました。
| 時間 | 速度差 | |
| シングルスレッド | 2,183ms | x1.0 |
| PTL | 569ms | x3.8 |
| マルチスレッド | 559ms | x3.9 |
自前で複数スレッドを管理する場合はWaitEventHandleを使ってりして、スレッド間のシグナル処理をしなければいけなのですが、PTL場合は感覚的にはdelageteと同じように使えるので、非常に使いやすく、速度的にも自分で処理するのと大差なので良い感じですね。念のためにメインスレッドから他のスレッドを立ち上げた時の遅延時間があるかどうかも調べたのですが、場合によって1msの遅延があるかないかでした。
さて、使いやすくはなったのは良いのですが、不満なのマルチスレッドによる速度アップの成果自体です。
テストしたPCは4コア、8HWTという構成で、パフォーマンスモニタを見ても8個のスレッドがしっかりと動作しているのも確認しました。なんですが、結果は3.9倍と低いことです。試しに使うスレッド数を4、2と変更すると、倍率は3.2倍、1.9倍といった感じになります。
この性能上昇曲線が飽和していく様は、まさにアムダールの法則に当てはまっていると思います。っていうか、動作スレッド数が多くなるにしたがってアムダールの法則の性能向上率式のF値も、2スレッド時には5%、4スレッド時には8%、そして8スレッド時には15%にまで増えています。
最近は「マルチコアで動作速度が向上」みたいな事を良く耳にしますし、実際に速度向上のためにマルチスレッドを使う人も増えてきました。でも、実際にマルチスレッドを使っている人達の中には、マルチスレッド化による数倍の速度向上をするよりも、アルゴリズムの見直しをするだけで、10倍、20倍、時には100倍近い速度をシングルスレッドで出せたりするケースも少なからずありました。
個人的にはマルチスレッドを使うのは、ちゃんとしたアルゴリズムを使った後にするものだと思っています。理由としてはマルチスレッド化というのは処理の分散化がメインとなり、分散化してしまうとアルゴリズムの優劣を判断すのが難しくなってしまうからです。例えばO(n^2)の最悪なアルゴリズムを使っていて、1000個のオブジェクトを処理させたら、処理時間が予定より30%程多くなってしまったというケースで、安直にマルチスレッド化して2倍の速度を得るよりも、アルゴリズムの見直しして10倍の速度を得た方が良いと思うんですよね。
とは、言うものの、結局マルチコアからメニィコアへの流れは止められないので、将来的には「マルチコア対応で速度アップ」じゃなくて、「マルチコア対応にしないとまともに動かない」なんて時代がやってきそうなので、遅かれ、速かれ、並列プログラミングは基礎知識になるんだろうなぁと思っています。
私が初めてマルチスレッドなプログラムを書いたのは、かれこれ15年以上前。当時は当然シングルコア環境なので、マルチスレッドプログラムはタイムスライスで動かすことになり、気をつけることといえば排他処理をちゃんとするのと、volatileを使うことくらいでした。プログラム自体も、マルチスレッドで高速化というよりも、バッググラウンドでIO処理をしてロード時間を隠蔽するというのが目的でした。
で、最近は殆どのPCはおろか、ネットブックまでマルチコアな時代になってしまいました。コア数が少ない場合はそれぞれのコアの役割を決めて動作させるという手法でごまかせるので、以前のマルチスレッドプログラミング手法でも問題ないのですが、これから先、コアの数が増えてくると必要になってくるのが、並列化プログラミングと、その基礎になるコンカレントプログラミングです。
コンカレント(Concurrent)とは同時発生の意味で、シングルコア時のタイムスライス手法では見かけ上同時に動作していたものが、マルチコアでは、その名のとおりに同じ時間に複数の処理ができるようになりました。
マルチスレッド時代の常套手段だった排他的処理はAtomicと呼ばれ、これは同時に一つのスレッドしかアクセスしないことを保障する仕組みです。例えば複数のスレッドで計算した結果をリストに追加や削除するといった時に、WinAPIでいうところのクリティカルセクションや、C#のlockを使ったりして同時にリストに追加や削除できるのは一つのスレッドしかできないようにすることです。
これは、これでちゃんと動作するのですが、複数のスレッドが同時にリストに対する操作をした場合、完了するまで他のスレッドが待たさてしまうことと、このクリティカルセクション自体の処理に時間が掛かるので、コア数が増えるとともに無駄な時間が増えてしまいます。特にパーティクルシステムでは、シミュレーション部分を複数のスレッドに分けた場合、パーティクルの追加時に、他のスレッドが無関係なパーティクルを削除する場合に、追加操作を待つ必要は無いのに、単純にどちらの操作も同じように排他処理すると、無駄な待ち時間が発生してしまいます。
そこで、でてきたのがコンカレント・プログラミングと言われる物で、複数のスレッドからの同時アクセスが発生してもスレッドが動作停止するのを最小限に抑えて動作させるアルゴリズムを使うプログラミングのことです。
そんなノウハウが沢山詰まっている良書が「The Art of Multiprocessing」です。これまで何冊かマルチスレッド関係の本を読んでみましたが、これは非常に為になる本です。
ちなみに、日本語版も出ているのですが、レビューでは訳が良くないと書かれているので原本を読むのが良いのかもしれません。っていうか、Kindle版、しかもKindle DX用に最適化されたものが日本版の半額近い値段で入手できるというのも魅力的です。
VS 2010 Beta2が出ていたので早速ダウンロード&インストール。Silverlight 3 SDKがインストールされていると、インストール時にエラーメッセージがでるものの、インストール自体は無事に済んでいるはずというフォーラムのポストを見たので、実際に使ってみたら、いまの所は問題はでていないようです。
前のバージョンではちょくちょく止まっていたXAMLデザインエディターはだいぶ安定してきたようです。個人的に嬉しいのはデータバインディングなどで多用する{DataBinding Hoge}といった、Markup Extension部分でIntelisenceが効くようになったことです。また、Intelisenseの検索対象が以前はタイプした語句が先頭にあるもののみでしたが、新しいバージョンでは場所に関わらずタイプした語句を含んでいるものを表示してくれるので、"Width"とタイプすると、"ActualWidth", "MaxWidth", "MinWidth"といったものも表示してくれるので正しいタイプ名を覚えていなくても, その場でタイプできるようになったことです。
ただ、テキストエディタがBeta1版より動作が重くなったのが残念です。RC版やRTM版で快適に動作するようにして欲しいですね。
そんな訳で、What's newを読んでいるところです。
とりあえず、グーグルの再検査の結果、うちのサイトは安全サイトだと認定されたようです。
っていうか、今回の件でアレなのは、セキュリティホールの場所も、ハックの仕方も、対処方法も知ってるくせに、その発生頻度の低さからそのまま放置していた自分が情けないということです(汗)
まぁ、でも今回の件で思い知ったので、これからはセキュリティにも気をつけたいと思います。
久々に日記を更新して、Chromeでサイトを覗いてみたら、こんなメッセージが表示されました。
「このサイトは危険です」と、いうメッセージなんですが、当の本人はそんな事をした覚えがまったく無いので、Chromeのバグ?と思ってたのですがFirefoxでも同じようなメッセージが表示されました。色々と調べて、StopBadWareというサイトにある危険サイト検索で自分のサイトを調べてみたら、危険サイトとして登録されてました(汗)。
数年前にも、サイトトップのindex.htmlが書き換えられていたことがあったので調べてみたら、案の定、ファイルが書き換えられてました。パターンとしてはhtml、phpファイルの最後に下図のようなスクリプトが追加されていました。
前回の時はindex.htmlファイルのみだったのですが、今回はサイトの複数箇所のファイルが書き換えられていたり、exeファイルがアップされてたりしました。更には.htaccessファイルのRewiteまで変更されているという徹底ぶりでした。
今までは「こんな個人のサイトを攻撃しても意味無いしなぁ」ということで、特に気にせずにFTPを使ってました。FTPはパケットにユーザー名やパスワードが素のまま入っているので、TCP/IPパケットを覗けば一発で判ってしまうという問題があります。おそらく、今回ハックされたのはそんなスヌーピングに引っかかってしまったと思われます。
そんな訳で、SFTPを使うために、25ドル払ってSmartFTPをプロフェッショナル版にアップグレードし、サイトプロバイダーのコンパネでSSHを有効にしました。
その後に、書き換えられたファイルを探して、正しいファイルへの書き戻し作業を黙々とし、Googleに「うちのサイトはクリーンになりました。だから再度チェックしてちょ」と、いうリクエストをだしておきました。
っていうか、今回の件で判ったのはハックされたサイトを調べるソフトウェアってのが非常に少ないことでした。htmlやphpファイルの書き換えなら気づく人もいると思いますが、.htaccessファイルの書き替えに気づいて自力で修復できる人の絶対数は少ないので、セキュアなサービスを売りにするプロバイダーも出てきそうですね。
Forza3、SクラスやRクラスの車が使えるようになりました。やっぱり、このクラスの車だと緊張感があって良い感じです。ダメージもシミュレーションモードにしているので敵車と衝突しないように運転するので特に緊張感がありますね。
時速200キロから、シフトダウンとブレーキを使って急減速してコーナリングする感覚はいつになっても楽しいものです。
っていうか、走行時間が15時間を越えたんですがコンプリート率が9パーセントとか言ってるんですが、100%にするまで、どれだけの時間が掛かるのでしょう?
FacebookのCastle Agaでヒドラ戦イベントが発生しました。
今までのクエストは2日以内とか、3日以内に複数人数で倒すというものでしたが、今回は7日間という長期間設定になっています。
っていうか、数十回攻撃してもHPメーターが1ピクセル程度しか減らないので、かなり厳しい戦いになりそうです。
仕事が忙しくて、なかなか日記を書けずに終に1ヵ月もサボってしまいました。
そんな訳で、今日は1ヵ月分の日記をガーっと書くことにしました。礼によって例の如く、OneNoteに簡易日記があるのでそれを元に黙々と日記を書いた日でした。
っていうか、今回もメアリーさんが居ないなぁと思ってたら、案の定、箱に詰まってました。
屈葬ってありますが、これは埋葬する側の労力の節約とか、おなかの中の胎児をあらわしていると言う説がありますが、猫が箱で丸まって寝ているのを模したんじゃないかと思うのは私だけでしょうか?
今日は会社でハロウィーンイベントがありました。っていうか、朝、オフィスに着いたら、見慣れないおっさんが居ました。
誰かと思ったら、同僚でした。っていうか、誰もが彼だと気づかないくらいの変装(?)ぶりでした。
今回も、日本のお菓子を買いました。昨日は風邪で休んだのですが、先週のうちに買っておいて良かったです。っていうか、子供のためのお菓子なのに珍しがって同僚達も手を出し始めたので「大人は子供同伴じゃないとダメ」と言うサインを作りました。
そしたら、「私はおなかの中に子供がいるから、大丈夫よね」と、出産間近の同僚がお菓子に手をだしてました(汗)。
お昼、会社のカフェへ行くと、ハロウィンの飾りがしてました。っていうか、カウンターに一人座っている骸骨が良い感じです。
当然、お店のカウンターも飾りつけしてあって、キッチンに血まみれの包丁がぶら下がっているというのはぴったりの飾り付けですね。
従業員の人達もコスプしてました。
レジのお姉さんもコスプレ。っていうか、美輪明宏さん?
こっちはサンディ?
こちらはお化け。天井に貼られた糸を往復するという仕掛けになってました。
もってきたお菓子、やっぱりポッキーが一番人気で、ポケモンキャンディも二番手という感じでした。
今回は5DMkIIの高ISOのテストも兼ねてフラッシュなしで撮ってみました。初代5Dだとノイズが気にはじめるISO800でもかなり綺麗で、ISO1250でもかなり良い感じでした。
熱が収まらず、体がだるいので、今日は休むことにしました。
休むのは残念だけど、ベッドで寝ているときにメアリーさんが脇の下、ムーランさんは胸の上で寝ていたので、ちょっと幸せな気分でした。
朝起きたら、ちょっと熱っぽくて午後になっても熱っぽかったです。
そんな訳で、今日はForza3もそこそこにいつもより早く寝ることにしました。
今日もForza3をプレイ。とりあえずBクラス、Ford FocusやFord GT500に乗れるようになりました。っていうか、GT500はパワーがあるのは良いんですが、FRなだけあって直ぐに後輪がすべるので抑えながら走るのが大変です。特にABSやTCSを切っているので、余計に難しく感じました。それに比べるとFord Focusは四駆なので良い感じに運転できます。
っていうか、実績がオンラインで50勝しろとかいう無茶なものがなく、長くプレイしてさえいれば取れそうなものばかりなので1,000ポイント目指して頑張ってみようと思います。
と、言うわけでForza3がでました。今作は車のモデリングのクオリティが大幅に上がったのと、シンプルになったメニュー画面が良い感じです。ただ、コースの読み込みにはHDDにインストールしても15秒掛かるときもあるのが残念です。でも、その代わりにリスタートが速くなったのと、それよりもリワインド機能がついたおかげで長い読み込みが気になる場面も少ないと思います。
とりあえず、しばらくは日産Versa(日本名はティーダ)に乗って頑張ります。
Facebook、胸が不必要に大きいお姉さんの写真付の広告がうざいので「興味なし」とマークしてたのですが、今日覗いてみたら

と、いう広告が載ってました。こういった広告システムには個人の好みに合わせた広告を推測して出すようにしていると思うのですが、Facebookの広告システムは
と、いうすばらしい推測エンジンを搭載しているらしいです。
っていうか、ゲイ・クルーズなんてイベントが存在しているのを知らなかったばかりか、想像すらもしなかったものを知ってしまったショックは大きいものでした。
っていうか、地中海やカリブ海のクルーズなんていうくらいだから、それなりの豪華客船を想像しますが、そんなに需要があるのか不思議です。
っていうか、そんな船のクルーには間違ってもなりたくないし、海で遭難したときに通りがかった船がゲイ・クルーズ船だったりしたら「ごめんなさい、次の船まで待ちます」と、救助されるのを拒否したいですね(笑)
ブログプログラムを更新しますといってから、数ヶ月が経ってしまいました。このままではいけないと思い、ブログプログラムを少し進めました。
っていうか、何をどうするのか忘れてしまっているので、プログラムを読み解きながらドキュメントにしていくだけで一日が過ぎてしまいました(汗)。
っていうか、年内には完成したいなぁ~(すでに弱気)
金曜麻雀。今日は親がいきなり倍満が炸裂しし、あとは1,000~3,000の小さな手が出るだけで、そのまま最初の親がトップのままで終わってしまいました。
手は読めてても、危険牌が読めない人が振ってしまうのはどうしようもないですよね。
今日は会社でインフルエンザ予防接種がありました。普段は予防接種はしないんですが、まわりでもインフルエンザに掛かった人達が増えてきたので大事をとって受けることにしました。
っていうか、最後に予防接種を受けたのは10年以上前かも?
今日はジムの日。ジムには25ヤード(22.86m)のプールがあるので、久々に泳いでみました。っていうか、オースティン時代は毎日のように泳いでいたので、その感覚で泳ごうとしたら、足がつりそうになってしまいました(汗)
それでも、平泳ぎでゆっくりと7往復したあとは腕が良い感じに疲れていました。
DX10世代からのグラフィクステクニックを知りたいのと、二年くらいグラフィクスの仕事から離れていたのでリハビリを兼ねてグラフィクス関連の本を買ってみました。
っていうか、最近はずっとKindleで買える本ばかり買っていたのですが、これらの本はまだKindle版が出ていなかったので、分厚い本を買うのも久しぶりです。
Real-Time Renderingの第三版は第二版が初版本に比べると対した差が無かったので見送っていたのですが、第三版はトピックが盛りだくさんでやっぱり最近のグラフィクストレンドを追うには最適の本ですね。
っていうかShader Xシリーズがいつの間にか七巻まで出ていたのは知りませんでした。
今日はジムの日なんですが、なんとなく更衣室の奥に続いている廊下に入ってみたら、更に大きな更衣室エリアになっていて、サウナだのジャグジーだの施設を発見してしまいました。ジムに通い始めてから1年近く経ってからの発見でした(汗)
そんな訳で、早速、ジャグジーを使わせてもらいました。久々の湯船は気持ちよかったです。っていうか、シャワーもジムのを使っているので家のシャワー全然使ってません。これは良い光熱費の節約になるかも?
昨日に引き続いてMdxiのコーディング。とりあえずDisplayModeの列挙が終わったので、次はGraphicsDeviceを作る部分をコーディングするわけですが、関連するオブジェクトが沢山あるので、それらのラッパーコード書くだけでも時間が掛かりそうです。
黙々とコーディングしているといつもは私の膝に乗ってくるメアリーさんが来ないので、不思議に思って振り返ってみたら、ダンボール箱で丸まっているメアリーさんを発見。
ちょっと窮屈そうで、箱から頭がはみ出しているのですが、メアリーさんは本当に狭いところが好きみたいです。対照的にムーランさんは箱とかには入らないんですよね。
さて、DX11のドキュメントに大体目を通したので、早速使ってみたくなりました。でも、サンプルを眺めてC++のコード、しかもDX9もサポートしているコードだったりするので非常に読みづいし、いまさら趣味のプログラムでC++でコーディングするのもアレなので、C++/CLI使ってマネージラッパー書き始めました(爆)
単にDX11をC#から使うだけであればSlimDXを使うという手もありますが、それだと勉強にならないのでラッパー書くことにしました。ついでにライブラリを使う側の設定がAnyCPUでも良いように、x64版、x86版の両方のコンフィグを作りました。
ちなみにライブラリの名前はMdxiにしました。DirectX11用のMDXということでMDXと11を意味するXIとの組み合わせてみました。
そんな訳で、まずはAdapterとDisplayModeの列挙部分のコードを書いています。っていうか、列挙部分はDX11じゃなくてDXGI部分だったりするんですけどね(汗)
っていうか、DXGIフォーマットにTYPELESSというのがあるのですが、アイディアとしてはあらかじめ確保していたメモリ領域をビューを通して違うフォーマットとして扱えるための仕組みと言うのは判るのですが、同じビット数じゃないといけないので、使いどころに困るものだったりします。
金曜麻雀、そろそろ初心者扱いも止めようということで、ちょっと本気で打ってみました。
やっぱり、勝つ気で打つとツキも回ってくるのか、最初の東風戦ではトップで終了。
で、二戦目に新しい麻雀初心者が参加。っていうか、この人がツキまくっていて初戦で跳満。っていうか、この卓では初心者は跳満上がりというのがパターンになっているような気がします。
もうちょっと流れが早くなるといいのですが、初心者が多いので長考する場面がどうしても多くなってしまうので仕方のないことでしょう。まぁ、それでも今日は半荘分できたので満足です。
Facebookの友人のおいしい餃子屋さんに食べに行ったというコメントを見て、餃子が食べたくなったので、作ってみました。
いつになったら、綺麗な羽根つき餃子が焼けるようになることやら……。
まぁ、味の方は満足いくできだったので良しとしましょう。
Direct X SDK (August 2009)でD3D11もRTMになったし、対応ビデオカードもでたということで、DX11のドキュメントを眺めています。
DirectXは初代の頃からずっと弄ってたのですが、DX10はドキュメント読むだけで終わってしまったので、今回は勉強を兼ねて動くものを作ってみたいですね。
今回の目玉はテッセレーションがようやくメジャーな機能な一つとして導入されましたが、プログラム的問題よりも、コンテント生成のインフラが整っていないので、実際のゲームに使われるようになるにはまだまだ時間が掛かりそうですね。
ドキュメントも書き終わりました。後はレビュー待ちになるんですが、それを待たずに本格的にコーディング作業を開始しました。
APIのデザインはできているので、実装部分をコーディングしています。っていうか、ドキュメントも長い分、コーディング自体も長くなります。っていうか、それよりも書かなければいけないユニットテストの量も半端なく多くなりそうです。
忙しさはまだまだ続きそうです。
週末に作業をしていたのは、ドキュメントを書くために必要な情報を集める為のコーディングでした。
そんな訳で今日はコーディングした情報をワードドキュメントに解説を添えて貼り付ける作業をしました。っていうか、それだけで半日掛かったのですが、それだけでドキュメントのページ数が60ページを超えてしまいました(汗)。
これじゃ長すぎるので、余白を少なくしてなんとか50ページ以下に抑えたのですが、その後に文章を付け足したら、結局63ページという非常に長いドキュメントになってしまいました。
今日も1日中、家で仕事してました。仕事のことになると書けることが少ないので、日記も短くなってしまふ……。
今週は色々と割り込みが多かったので、本来の作業が進んでいませんでした。
そんな訳で、メアリーさんをひざに抱えながら、黙々と仕事してた日になりました。
すっかり恒例になった金曜午後の麻雀。今日は中国麻雀をやったことがある中国人二人が参加しました。
っていうか、いきなり捨て牌を適当な場所に放り投げたりするあたりが、中国麻雀経験者って感じだなぁと思いました(汗)。
っていうか、油断していたら中国人のひとりが初戦で跳満とか上がったりしてました。
面白いのはアメリカ人の一人がすっかり麻雀が気に入ったらしく、サイコロ振ってから配牌までの流れをしっかり覚えてたりして、更には
「牌を混ぜる瞬間がたまんないよね」
とか言ってたりするのを見ると、彼もすっかり立派な雀士になったんだなぁと感心します。
今日は私のチームが所属する部署の全体会議がありました。
会議の会場には200人ぐらいの人達が集まって、部署の規模の大きさを実感しました。
2時間という長い会議でしたが、他のチームが何をしているのかす知ることができたので、個人的には有意義な会議でした。
Facebookではソーシャルネットワーク向けのゲームがプレイできます。大別するとFlashやSilverlightで作られたゲームと、Webベースのゲームがあります。
コンシューマーゲーム屋な私としてはWebベースのクリックするだけのゲームを初めてやった時には「なにが面白いの?」と、思ってたのですが友達がいることが前提というゲームデザインだという事に気づいてから、今では暇があればプレイしている状態です。
プレイしているのは、Mafia WarsとCastle Ageというものなんですが、システム的には同じゲームでCastle Ageを例にすると基本的なRPGのパラメーターがあり、それに加えてクエストをクリアするために必要なEnergyと、他のプレイヤーと戦うのに必要なStaminaのパラメーターがあります。これらのパラメーターは時間が経つと増えるようになっていて、大体1日に二回程プレイするといった感じになっています。
ソーシャルネットワークならではの仕組みとしては、自分の友達を誘うと自軍のメンバーとして参加してもらい、自軍メンバーが多ければ多いほど他のプレイヤーとの戦いが有利になったり、クエストによっては一定数のメンバーが居ないとできないものがあったりします。
で、極め付きはドラゴン退治イベントです。
ドラゴン退治イベントは錬金術を使うことで発生させることができ、この錬金術に必要なアイテムは友達から送ってもらう必要があります。
ドラゴン退治イベントはドラゴンを呼び出したプレイヤーのレベルによって数種類のドラゴンが出現し、72時間以内に倒すというものです。
面白いのは友達と協力プレイすることができる、というか、友達が居ないと一人では時間内に退治できないような設定になっていることです。友達がいればちょっと助けになるのではなく、友達必須というところがソーシャルネットワーク向けのならではのゲームといった感じですね。
攻撃の度に出るメッセージも
ゆういちの 大地を ゆるがす こうげき
フロストドラゴンに2065の ダメージ
フロストドラゴンの こうげき
Warderが かばってくれた
ってな感じで、PC初期のテキストベースRPGを思い出しますし、ファンタジーの伝説にありがちな三日三晩という長い戦いというのがそのまんまだったりするあたりが良いですね。
ちなみにビジネスモデルとしては、ゲームに嵌っている人がEnergyが溜まるまで待てないというときにはお金を払ってポイントを購入、ポイントを使ってパラメーターの回復、アイテムの購入などができるようになっているのですが、ゲーム画面の隣に広告エリアからの収入の方がメインになっているそうです。
Xbox LIVEのようなネットワークゲームの登場で遠く離れた友達とゲームができるという利点がありますが、一緒にプレイするには同じ時間にプレイしないといけないという時間的縛りがあります。それに対して、ソーシャルネットワーク向けのゲームの場合はそういった時間的縛りがないので気軽に友達と同じゲームをプレイできるというのは面白いですね。
HALO ODSTをクリアしました。HALOの今までの雰囲気を期待していたのでちょっとがっかりでした。
特に新兵側のミッションがとくにイベントもなく、マップ内を徘徊するだけというのが非常に単調でモチベーションを維持するのが大変でした(汗)。
ああ、早くModern Warfare 2がやりたい…
なんか月が綺麗だなぁと思ってたら、昨日が中秋の名月だったことに1日遅れで気づきました。
そんな訳で、200mm + 2xエクステンダー&21Mピクセルの解像度で月を撮ってみました。
昨日編集した動画を最終フォーマットにエンコーディングしました。
最初はH.264でいいっか、と、軽い気持ちでエンコーディングしたら15時間も掛かりました(汗)。しかも、出来上がった動画はフレームはガクつくし、再生マーカーを動かすとWMPがフリーズするしで使い物にはなりませんでした(滝汗)。
そんな訳で、いろんな組み合わせを1日中試してみた結果、最終的にWMV9形式にして複数のファイルに分けるという形になりました。
WMV9の良いところは再生速度が変えられるので、こういった長い会議の記録動画も短時間で見られるという便利さがありますからね。
木曜日に撮った動画をPremiere編集しました。っていうか、HF10が出力するH.264形式の動画にしろ、5DMkIIのQuickTime形式の動画にしろ、そのままだと編集するには重過ぎるので高ビットレートのMPEG2に変換するだけで10時間以上掛かりました(汗)。
それでもMPEG2形式だとサクサク動くので、編集が楽です。編集といっても二つのカメラから撮った動画を内容に合わせて切り替えるという簡単なものでした。
作業自体は簡単なんですが総時間90分もあるので、編集するには丸一日掛かりました。
小、中学校とずっと放送委員会に(ry
ああ、こんな編集ソフトが子供の頃にあったらなぁ~
黙々とコーディングしてたものが、最初の一歩の部分が動いたので、毎週金曜日恒例のHappy Hourの中でデモを披露することになりました。
っていうか、今まであるAPIとは実装方法が違うということを証明するために、開始1時間前にプロジェクトを他のプラットフォームに移植してみました。
結果はデモが始まる5分前に移植が終わって、デモも無事に済みました。
っていうか、人前で短時間内でプログラムをするというイベントがありますが、私にはとうていできそうにありませんね(汗)
チーム内の全体会議がありました。っていうか、昨日、カメラ仲間でもあるDevリードの人に「ビデオ撮ってくれない?」と、頼まれたので、今日はCanon VIXIA HF10とCanon 5D Mark IIの二台のカメラを持ち込みました。小、中学校とずっと放送委員会に属してて何かしらイベントがあるときはビデオカメラで撮影していたので、個人的には懐かしい感じがしました。
HF10の方は定点撮影で撮りっぱなしにしておいて、5DMkIIにはEF 70-700mm F2.8L ISをつけて色々と楽しませてもらいました。っていうか、全体会議は100分程度の長さだったのですが、5DMkIIの連続動画記録時間は4GBのファイルサイズに依存していて、ファイルサイズに達すると勝手に録画が終わってしまうので注意する必要がありました。
今回は三脚使って撮影したのでISは切ってありましたが、連続撮影だと大体90分程でバッテリーを使い切りました。っていうか、普段はそんなに長時間の録画もすることもないので殆どの場合は予備のバッテリー一個で十分そうです。
っていうか、比べるのもあれですが5DMkIIはHF10に比べて段違いの画質の良さと、EFレンズによる表現力の差がはっきりとでますね。
後はちゃんとした録音機材、特に外部マイクがあれば業務用のカメラと遜色ない映像が撮れそうですね。
ああ、こんな機材が子供の頃にあったらなぁ~
コーディングしている最中にも、いろんな質問が来たり、質問から議論に発展したりと、いろんな割り込みが入ってきます。
金曜日までには何かしら動くものが見たいので、そんな割り込みにもめげずに黙々とコーディングしています。
やっぱり、実際にトップからボトムまで通してコーディングすると、頭の中で設計しているときに見落としがちな細かい問題を見つけることができるのは良い感じです。
そんな訳で、今日はこの不具合を直す形でインターフェースのデザインに修正を加えました。
方針が決まったのでプロトタイプ用のプロジェクトを作って黙々とコーディング中。デザインしているのはプラットフォーム間の違いを吸収できるインターフェース。インターフェースのデザインが正しさの確認する意味で、インターフェースの実装のしやすさと、使う側の使いやすさ、さらには表層APIへの影響を見るために、実際のテストコードも書いてと、四つくらい違うプログラムを書いています。
量は多いけど、ガシガシとコーディングしてるのは仕事しているって実感できて楽しいです。
昨日、Pike Place Marketで買った鮭をムニエルにしてみました。いつもの解凍ものと違って生というだけあって、プリッとした食感が良い感じです。っていうか、食べてから気づきましたが、これだけ新鮮だったら刺身でもいけたなぁということでした。
っていうか、3日ぐらいは鮭料理が続きそうです(汗)
そんな訳で新しいカメラのテストを兼ねて、いろんな被写体があるシアトルのダウンタウンにあるPike Place Marketへ行ってみました。
今日のレンズは私の標準レンズと化しているEF 24-70mm F2.8L USMです。
天気のいい土曜日だったので人手が沢山でした。っていうか、5DMkIIには液晶モニタの明るさを自動調節機能は便利ですね。輝度も高くなっているので明るい場所でもプレビューがしっかり見ることができるのはいい感じです。
二倍になった解像度のせいなのか、それともCCDが新品だからなのかは判りませんが、ぼけた部分の描写が若干違うような気がします。
RAWイメージだと5,616x3,744の解像度、これを1280x853に縮小しているので4xMSAAならぬ、4xFSAAになるので線がシャープになっているような気がします。ただし、ファイルサイズも23MBと大きくなるんですけどね(汗)
前回来た時に行ってなかった場所にも行ってみました。Pike Place Marketの歴史は百年くらいあって建て増しが続いたせいか場所によっては迷路のようになっていたりして、ちょっとした探検気分を味わえます。特に上の写真ようにミニカーしか売っていないお店があったり、大小さまざまな置物しか売っていないお店があったりと、なんとなく懐かしい雰囲気です。
っていうか、オバマ大統領の胸像?上の猫の写真とこの写真はどちらもISO800で撮ったものなんですが、ノイズが少なくていい感じです。
Pike Place Marketといえば新鮮な食材が安く手に入る場所でもあります。来たときには買う気がなかったのですが、鮭が安かったので1lb(453g)程買ってしまいました(笑)
非常にいい天気で、近くにある公園では沢山の人達が寛いでいました。
今回はパフォーマンスをしている人達が沢山居ました。こちらはスタバ一号店の前で歌っていたグループです。アカペラの陽気な歌声がいい感じでした。
さて、5DMkIIといえばEFレンズを使って撮るHD動画ということで、早速撮ってみました。っていうか、この魚屋さん(?)では鮭の切り身が宙を舞っていました。
ISがないので手ブレがあり、特にフォーカスリングに手を伸ばしたときのブレが結構目立ちますね。その場で液晶モニタ上で見ているときには特に気にならないのですが、家に帰って24インチモニタ一杯にして再生すると手ブレがかなり気になりますね。
私の持っているレンズの中でISがついているのはEF70-200mm F2.8Lだけですし、広角~標準レンズでISがついているのは5DMkIIと一緒に出たEF24-105mm F4Lしかないのが現状なんですよね。
F2.8レンズに慣れている私としてはF4レンズの暗さは気になるところです。ISつきの20-70mmが欲しいところです。
え~、あ~、ほら、せっかく日本に遊びに行くということだし、二人の姪の姿をHDで撮っておきたいよねぇという、親馬鹿ならぬ、叔父馬鹿?ということでCanon 5D Mark IIを買っちゃいました(汗)
基本的な使用感は5Dと同じですが、微妙にホールド感が良くなっている気がします。また、シャッター音がちょっとくぐもった感じになりましたね。そんな訳で、早速テスト撮影。
初代5Dに比べると2倍の解像度になっているということで、マクロレンズを使ってみました。
猫の目もクッキリどころか、猫のまぶたもクッキリ写っています。やはり解像度が高いと縮小したときのクッキリ感が違いますね。
上の二つは、マクロレンズでとったものをクロップしたものです。猫の毛はもちろん、部屋に生息している蜘蛛(網戸を抜けてくる羽虫を獲ってくれるので、そのままにしています)の足の毛も見えます。
こちらは例によって例の如く、キッチンで撮った写真です。水滴に反射する光が綺麗です。
で、ウリのひとつである動画機能も試してみました。確かに、一眼レフ用のレンズを使って撮る動画は一般のビデオカメラで撮るよりも遥かにクオリティの高いものを撮ることができるのですが、使い勝手は手ブレ防止機能が当たり前についているビデオカメラで撮影する感覚で撮るとかなり画面がブレます。特に、ちょこまかと動き回るねこさん達を撮るのは厳しいです。
また、オートフォーカスやISの駆動音がそのまんま本体内蔵マイクに入ってしまうのも問題ありです。
納得のいく動画を撮るには更なる出費が必要になるのかもしれません(汗)