My life as an APE

ゲーム開発、アメリカ生活、その他よしなし事

最近のコメント
すごい、やはり海外で働いている日本人の考えが僕も近いですね。 (Tonny) こんな本を監訳されていたんですね。 会場で探してみます。 確かに今年のCEDECは充実してますよ。楽しいセッションが多いです。 自?.. (tatefuku) >yukiさん こんにちは。コメントありがとうございます。 H1-B quota制限にかかったとのこと、大変だったかとおもいます。 #去年か?.. (hak) はじめまして。On Off and Beyondの渡辺さんのところから来ました。私は2005年にH1-Bでquota締め切りに間に合わずビザ取得に一度失敗し、... (yuki) >さいとうゆうきさん こんにちは、 ブログ拝見しました。インタビュー詳細、参考になります:) 就職決まったとの事、おめでとうござ... (Hak) はじめまして、Hak さん さいとうゆうきと申します。ブログ、大変興味深く読ませていただいております。 私もちょうど就職活動が終わ... (さいとうゆうき) いろいろと考えさせらることがあるのでいろいろと教えてください (まるこさんのしもべ) これは興味深い内容です。続きに期待。 (TATE) とりあえずキカイの体を求めて旅立つ準備をしてみようと思いまつ(´人`) (まるこさんのしもべ) あけましておめでとうございます。 ようやく時代がDreamcastに追いついてきたということですね(笑 (TATE)
MikuMikuDanceのiPhone版サンプル公開みなさん、明けましておめでとうございます。2011年もよろしくお願いします(もうすぐ3月です)。
さて、新春記念でiPhone用のMikuMikuDance再生サンプルをソース公開しました。ご参考にどうぞ。
ソースは下記Githubリポジトリから取得可能です。
https://github.com/hak/MikuMikuPhone
なお、記述言語はObjC++です。

対応機能
現状ではPMD(モデルデータ)の表示とVMD(モーションデータ)の基本モーションの再生に対応しています。Skin、Camera、Physicsには未対応です。
OpenGLES2.0に対応しています(ES1.0は非対応)。iPhone3GS以降で実行して下さい。

ビルド方法
リポジトリを取得後、XCodeプロジェクトMikuMikuPhone.xcodeprojをビルドしてください。

使い方
1)プロジェクトをビルド、実機に転送してください
2)そのままiTunesを開き、DEVICES一覧から、接続済みのiPhone/iPodを選択します
3)デバイスのAppsタブから、MikuMikuPhoneのアイコンを選択しドキュメントフォルダ内にPMD、VMDファイル、テクスチャファイル等をコピーしてください。手抜きでフォルダ階層はチェックしていませんので、ファイルをそのままコピーしてください。
4)以上で、アプリケーション内からPMD、VMDファイルを読み込めるようになります。
または、Simulatorで実行する際には
~/Library/Application\ Support/iPhone\ Simulator/4.2/Applications/
以下からそれっぽいフォルダを探し出してファイルをコピーすると、App上からファイルを参照できます。

上記の手順でファイルを準備した後、UI上でロードするモデルデータ、モーションデータを指定してください。
今のところファイルのロードには10秒程度かかります:)
ほとんどがメッシュのパーティショニングにかかっています。通常はメッシュのパーティショニングは前処理で行いますが、本サンプルではロード時に動的に行なっています&キャッシュ処理をしていません。

パフォーマンス
気になるパフォーマンスですが、3GS上で概ね40FPS前後です。
最適化を一切していませんので、おいおい、最適化を施していくかもしれません。
最適化、OpenGL使用法など各手順の解説についてはもしかしたら記事をポストするかもしれません。

クレジット
MathライブラリとしてImaginationTechnology作成のs OpenGL ES 2.0 SDK収録のMathライブラリを使用しています。
VMDパーサについてはOhsawaさん作成のMikuMikuDroidを参考にしています。
http://en.sourceforge.jp/projects/mikumikudroid/wiki/FrontPage


iPhone/iPadゲーム開発ガイド Objective-Cで作る2D/3Dゲーム」の監訳をさせていただいたので、お知らせ&宣伝です。
「iPhone/iPadゲーム開発ガイド」はゲーム入門書の中でも、(多分)ちょっと毛色が変わっていて、コンシューマゲーム機的な”ゲーム開発手法”に的を絞って解説しています。基本的なプログラミング、ObjCやOpenGLのイロハはごっそり割愛してあるので、「エンジニアである。プログラムはバッチリだけどゲームを作ったこと無い」といった面々には最適の入門書かと思います。
ここのところソーシャルゲームや携帯ゲームの市場も広まり、組み込みエンジニア&WEBエンジニアの方がゲーム開発を始める機会も増えているかと思います。そうしたステップの第一歩として手頃の厚さの入門書です。
御存知の通りiPhoneはシングルコアのプラットフォームなので、本書で使っているゲームエンジンのコアもシングルコア向け、平たく言うとXbox360&PS3以前の設計です。が、開発効率とパフォーマンス、ゲームステート(別名マイクロファイバー/タスク)の管理等のエッセンスをシングルコア向けのシンプルなゲームエンジンを通じて修得することは、良いトレーニングになるかとおもいます。思い起こせば幾星霜、とあるゲーム会社の新人研修で、今は亡きセガサターン向けに5日でゲームを作るというお題がまさにこんな感じのメニューでした。
発売は9月4日とのことですが、今日から開催のCEDECでは先行で販売されるとのことです。余談ですが、今年のCEDECはとても充実している様子ですね。日本のゲーム業界のひとつの到達点と言ってよいでしょう。こうしたイベント、情報共有の真の目的は、今ある技術を共有することで新たなイノベーションを発生しやすくすることだと常々思います。
今日の技術はすでに過去の技術です。過去の蓄積の中から必要なことだけを学んで、新たなイノベーションの糧にしたいものです。ということで「iPhone/iPadゲーム開発ガイド」をおひとつ…。

では、実際のエンジニア採用プロセスについて概要を記します。
下記が、自分が知るところでの北米でのエンジニアの採用プロセスです。
なお、個別の会社についての採用プロセス詳細はNDAベースとなるため、下記はあくまで一般的な内容であることは悪しからずです。

履歴書審査(Resume)

電話インタビュー(Phone screening)

コーディング・クエスチョン(Coding question)

インタビュー(Interview)

(リファレンス、バックグラウンド審査)

オファー・レター、事務手続き

会社や応募するポジションによって特定のステップが省かれたり、諸々違いはありますが、概ねどこの会社でも似たようなステップではないかと思われます。
採用プロセス全体でかかる日数はまちまちですが、大体、各ステップ毎に1~数週間、長くて数ヶ月。全体通して1、2ヶ月から、延び延びになって半年位でしょうか。会社やポジション、景気動向等によってだいぶ左右されます。

また、上記のプロセスはゲーム開発エンジニアでも、一般エンジニアでも採用プロセス自体は同一です。このためポジション自体の要求を満たしていれば、ゲーム業界、ソフトウェア業界間の行き来には、それほど障壁はない様子です。

それぞれの項目については別個述べていきますが、概要としては以下のようなものです。

履歴書審査
いわゆる一つの履歴書審査です。プロセスは機械的な絞り込み+ハイアリング・マネージャによる絞り込みの二段階に別れている事が多いようです(機械的な絞り込み要件については、会社毎のポリシーに依るため詳細は謎)。
履歴書のフォーマットは日本国内の書式とは根本的に異なります。文化的なバックグラウンドを理解した上で、愛のある豊かなレジュメを作成する事が肝要です。
レジュメ審査では、レジュメの内容が募集中の職務内容(Job Description)にマッチしているかどうか、という点に主眼がおかれます。

電話インタビュー
レジュメ・スクリーニングを抜けた「これは」という候補者に対して、電話でのインタビューになります。電話インタビューは、ハイアリング・マネージャ(もしくは同じ部署の誰か)が行います。
時間は小一時間ほどでその間に、
・レジュメの内容が裏付けられるか
・その後のステップに進めるか
等をハイアリング・マネージャの直感を元に推し量ります。以降のステップは人的コストが高くなるため、これまでの段階での絞り込み率は相当高いです。

コーディング審査
簡単、小規模なコードを書いて適正を計ります(このステップはあったり無かったり、自分の経験では半々程度です)。ここでは、よっぽど崩壊したコードでなければ特に問題は無いかとおもいます。
あらすじ
ゲーム会社のシニア・エンジニアが海外就職するにはどうするのがよいか。
向き不向きはあるが向いている人は多いと思うのでとりあえずやってみよう。

では、実際に海外での就職にあたってどのようなルートがあるのか、という点について、いくつかの典型的なパターンを紹介しましょう。

通常の採用プロセスで就職
いわゆる、どこにでもある普通のパターンで、採用先の直接ゲーム会社にコンタクトして、採用プロセスを切り抜けてオファーをうけるという間口の広い方法です。間口は広いくて誰でも応募できますが、その分競争率も高く、複数のポジションや会社に絨毯爆撃で応募したり、知り合いのツテ&コネやリファレンス(紹介)を活用する、というような技が必要になります。応募自体は、同じ会社でもポジションが違ったり一定の期間をおけばリベンジが出来ますので、まずは幾つか応募してみるのが良いでしょう。
応募先のポジションは、
LinkedIn等の求職情報をみる
Gamasutra.comの採用メーリングリストの購読
・それぞれの会社の採用ページ
等をマメにチェックするところからでしょう。
特にGamasutra.comの求職情報を一定期間見ていると、どのようなポジションが必要とされているか、またどの会社が採用をかけていて元気がよいの等の雰囲気が掴めてきます。とっかかりとしてお勧めです。

良い点は、
・よくも悪くも、スタンダード

悪い点は、
・ビザ取得が面倒だったり、時間がかかるケースがある
この点は、ポジションのオファーを受ける実力のあるエンジニアであれば、過剰に心配する必要は無いでしょう

などでしょうか。
応募するポジションを決めてからのステップについては、また別の話に。

日本のゲーム会社本社から海外支社に赴任
日本のゲーム会社本社から海外のスタジオに赴任する、という方法です。
日本では国際展開している大手ゲーム会社が多いこともあり、(感覚的には)絶対数はこのルートが一番多い気がします。
良い点としては、
・日本HQからの赴任であるため、雇用が安定している
・給与水準が安定している(安定している、というのは一定以上の(かなり)良い水準ではあるけど、ヒットを飛ばしてリタイアできるほど延びる余地はあまり無い、というくらい)
・ビザ審査が(多くの場合)簡単

悪い点としては、
・命運を自分で決めることができない。赴任できるできない、赴任してもいつ帰国することになるか自分でコントロールできない
・ビザの種別から、他社への転職が難しい場合がある(特定の会社向けのビザの場合)
どの職種、どの会社、どこで働くのか(あるいは働かないのか)というのは個々人の選択なので色々な意見があるでしょうが、個人的には日本のゲーム開発者は海外で働くのに向いているのではと思います。


理由としては、
・ゲーム業界で働いている事が既に冒険者としての資格を満たしている
とりあえず住み慣れた土地を離れて旅に出よう、という人は多かれ少なかれ冒険者としての資質が必要です。ゲーム好きが高じてゲーム業界で働きそこに骨を埋めようという人は、既に冒険野郎であると言っても過言ではないでしょう。多少住む環境が替わろうと、どんな失敗をしようとも人生のスパイスと考えることが海外生活への第一歩です。


・日本のゲームタイトルは結構リスペクトされている
最近はゲームの地産地消が進み、日本のゲームの存在感もやや薄くなっているとはいえ、海外のゲーム開発者は全員日本のゲームを遊んだことはあるし、日本ゲームへのリスペクトを持つ人が多いです。ゲーム好きな開発者の感性は万国共通ですから、解り合える点も多いかと思います。


といったところですが動機はさておき、以下何回かに分けて、具体的にどの様な手段をとれば海外(ここでは北米の会社しか知らないので、北米)の開発会社にエンジニアとして就職するための手法を伝えられれば、と思います。

尚、ゲーム会社では勿論エンジニア以外の職種もあり、移民含めて沢山の人が働いている訳ですが求められる技術やコミュニケーションスキルは違うかと思います。海外のゲーム会社でアーティストや企画として働いている方もいらっしゃいますので、話を聞くのが良いでしょう。


【どのくらいのスキルがあれば生き残れるか】
まずは、どのくらいのスキルがあれば職のオファーを貰えて通用するか、ですが個人的な助言としてはシニアエンジニアとしてのスキルを習得しておくことが良いでしょう。通常のエンジニアや、留学からインターンとして働く道もありますが、エンジニア職の場合は
・ビザのサポートの可能性
・レイオフに生き残り易い
・レイオフに合っても次の会社を見つけられる
等の観点を考えると、日本の開発会社でシニアエンジニアとしてのスキルを身につけておく事がお勧めです。ひとつの目安としては日本国内のゲーム会社でシニアとして他社に転職できる程度、でしょうか、曖昧ですが。


【英語はどのくらい喋れると良いのか】
仕事をするにあたってどの程度英語が必要か、については下記のエントリ等が参考になるかと思いますが、相当に出来なくてもなんとかなります。

Jinzya
あけましておめでとう御座います。新しい10年期がやってきたこともあり、来し方行く末、今後10年の抱負と目論見などをひとつ。

・この10年
思い起こせば西暦2000年当時、自分はDreamcastの開発サポートエンジニアをしてました。SH4-200Mhz、メモリ16MB、GPUにPowerVRを搭載した当時の新鋭ゲーム機です。
それから10年かけてハードウェアは進化し、自分もXbox、Xbox360、iPhone等の技術開発にかかわってきました。いま携わって携帯デバイスiPhoneのハードウェアは、ほぼDreamcast相当(またはそれ以上)の性能を誇ります。10年前のデスクトップゲーム機が、携帯機のフォームファクタ、電力効率にシュリンクされました。素晴らしい。
奇しくも2つのプラットフォームで同じ系統のGPU、ImaginationTechnology社、PowerVRを使用しているのも興味深い共通点です。その後Dreamcastが事実上、というかこっぴどく敗退し、それに伴ってPowerVRも据え置きGPU市場の橋頭堡を失って、その後GPU市場はnVidia、AMD(ATI)社の席巻につながります。このとき、ImaginationTechnology社はメモリ消費、電力消費に利点のあるタイルレンダリングというPowerVR系特質を生かすために、携帯機向けGPUに活路を求め、それがぴったりはまって今日の携帯GPU市場を席巻しているわけです。恐るべしです。
と、この10年で据え置きゲーム機は小型、高速、省電力化に邁進し、当時の据え置き機が手元に収まるまでになってしまった10年と言えるでしょう。
この他にも10年間で、ゲームの要素技術の変化や、ソフトウェア技術の変化、変わった事や変わっていない事などたくさんありますが、それはまた別の話に。

・2010~2019年にかけての10年間の与太
今後の10年間で起きることも、ある程度は予想出来ます。引き続きハードウェアの小型化、高速化は行われますが、現在のPS3、Xbox360といった据え置きゲーム機がハンドヘルド化されるには、10年はまたず3~5年前後である程度の到達を見るかと思います。その際には、バッテリ容量の上限がそれほど向上しないことから、複数汎用コアのアレイを動的に電力消費管理しながら、ピーク・パフォーマンスとして現行ゲーム機相当の1T FLOPSあたりをターゲットにする設計が取られるような予感もします。
別の観点としてやや飛躍しますが、計算機の能力は2030年前後に人間の脳を超えると予測されています(している人、しようとしている人がいます)。あと20年です。今後の10年間は、機械が人間をキャッチアップし、凌駕して行くにあたっての重要な技術開発の10年間になると思われます。
Arata farm
このたび、三年あまり勤めたCRI Middleware incを退職し、Apple incに勤めることになりました。

CRI Middlewareでは、各種ゲーム・プラットフォームでの最適化のほか、兼ねてからの念願だったスクリプトコンパイラの開発(http://www.criscript.com)や、IXMFの仕様標準(http://www.iasig.org/wg/ixwg/)への参加、インタラクティブ・オーディオエンジンの開発などなど、充実した開発ライフを過ごすことができました。関係各位には厚く御礼申し上げます。

Appleでも引き続きエンジニア職として、精進を重ねていきたい所存です。
自分とAppleプラットフォームとの関わりは90年代初頭に遡り、ASCIIで丁稚奉公をしていた頃からになります。
当時PPC Macの内覧会を取材しましたが、そのときのPPC-Mac用レンダウェアのデモが、キーを押すと豚が投げられるというファンキーなものでした。取材に参加した記者一同に微妙な間が流れていたことも今となっては良い思い出です。あの頃飛んでいった豚は今頃冥王星軌道を超えた辺りでしょうか。。
時は下り、Xbox360の初期開発キットではPowerMacG5に非常によく似たハードウェアを使っていました。自分にとっては初めて触るPPCでしたが、非常に良好なパフォーマンスを叩き出していたのが思い出されます。
その後、シアトルからサンフランシスコへ越してきての驚きの一つは、食べ物が美味しい他に、異常なMac率の高さでした。シアトルではMacといえばネットワークのMACアドレスのことを指すのが普通でしたが、どうもこの付近では異なっているようです。スターバックスに行っても、カンファレンスに行っても、見渡す限りのMacの園をみるのは、ある種のカルチャーショックでした。加えて最近ではショッピングモールや待合室でも、子供達が暇つぶしにiPhone/iTouchを触っています。(これまではNintendoDSがメイン)
こうした猫も杓子もMacの土地柄、自分もここ一年あまりプライベートではMBP、iPhoneを使っています。Windowsに比較するとやや不安定な気もしますが、GPU機能をうまくOS coreに取り込んでいるのは、良い点のひとつかと思います。

と、こうした流れから、なんとなくAppleで働いてみることになりました。引き続きゲーム業界とその未来にコミットしていきたいと思いますので、よろしくお願いします。
住居は引き続きサンフランシスコ近郊ですので、近くまでお越しの際はぜひご連絡ください。
Yoshioka Cube
ふと気がつくと半年の月日が流れました。
今年の抱負の一つとして「年十回以上BLOGを更新しない」という目標をひそかに立てていた為、とても良い塩梅の更新ペースです。
さて、この間日本に行ったり、グランドキャニオンに行ったり、また日本に行ったり、のんびりだらだらとした日々を過ごしていましたが、のんびりついでに「詳解 OpenCv」の日本語版に寄稿しました。商業原稿を書くのは編集時代以来ですので、実に10年ぶりです。


寄稿したのは巻末付録の「iPhone OSへのOpenCv/FaceDetectionの移植と高速化」についてです。タイトルの通り、FaceDetectionのサンプルをiPhoneOSに移植し、高速化術式を施しました。初期状態と比較して3倍程度の高速化になりましたので、まぁまずまず、「キジも鳴かずば打たれまいに」といったレベルの結果と言えるでしょう。
詳細については折角なので書籍を参照ください:)。細かい点等質問があれば、是非気軽にご連絡ください。

残念ながらiPhone3GSへの対応は脱稿スケジュールの都合上適いませんでした。3GSではよりセクシーなCPUとGPU、真のSIMD、メモリ増、キャッシュ増などなど、素晴らしいHWであります(自分もこれには耐えきれず、VerizonからAT&Tにのりかえてしまいました)。
Facedetectionを3GSに移植すれば、目分量でタダで30%、SIMD他で頑張ってさらに+αの高速化が見込めます。今後暇を見て、是非ともトライしたいものです。

写真は日本土産の"YoshimotoCube"。日本オフィスにあるのをみつけて、たまらずその場で表参道のMOMAショップまで走って行って買ってしまいました(子供のお土産用に)。一個のキューブが二つのパーツに分かれ、それぞれ24面体<->立方体になるという優れものです。これはすごい。

更新:書籍名が間違っていたので訂正。とほほである。
The dish hiking
写真は近所にあるスタンフォード大学の電波望遠鏡、通称"The Dish"。周囲がハイキングコースになってて、近くまでよって思う存分電波望遠鏡を鑑賞できるのでお勧め。先の大戦中に建造された歴史&いわくある施設らしい。
http://www.geekpage.jp/blog/?id=2008/2/18

お屠蘇気分もさめやらぬうちに、来週末あたりから日本に行きます。一週間あまりの短い日程ですが、関係各位、よろしくおねがいします。

1月17日にはIGDA Japanのイベント「ゲームにおけるスクリプト言語の現状」で少しばかりお話しします。
http://www.igda.jp/modules/eguide/event.php?eid=58
コンシューマゲーム開発にもやがてはスクリプトの時代が来る、必ず来る、と言い続けてすっかり狼少年状態でしたが、IGDAの先鋭的イベントでもスクリプト言語がお題になるとの事、嬉しい限りです。
話の内容はまだ考えてない、もとい考え中ですが、
・コンシューマゲーム開発で何故スクリプト言語が必要か
・コンシューマゲーム機でのスクリプト言語の要件
・CriScript実装の概要&どうでもよい話
・IXMF等のインタラクティブ・オーディオ・スクリプティングなども無理矢理こじつけてご紹介
等を考えています。他にもLUA話、実タイトル開発者の方々のパネル等の興味深いイベントです。

下記イベント案内文より抜粋
------------------------------------------------------------------------------
IGDA日本ゲームテクノロジー研究会(SIG-GT)第12回研究会
「ゲームにおけるスクリプト言語の現状」

 IGDA(国際ゲーム開発者協会)日本 ゲームテクノロジー研究会(SIG-GT)は、第12回研究会を2009年1月17日(土)に開催いたします。
 近年、ゲーム開発の効率化を目的とした、ゲームへのスクリプト言語の組み込みが注目されています。特に、Luaに代表されるオープンな実装は、これまでは各社で独自開発されてきたスクリプト言語を、オープンに議論すべき対象に変えつつあります。
  SIG-GT12では、2008年9月に発売された「スクリプト言語による効率的ゲーム開発」(ソフトバンククリエイティブ)の著者であるクロムシックスの浜中誠氏、ゲーム機向けのECMA Script(JavaScript)実装であるCriScriptの開発者である松田白朗氏をお招きして、ゲームにおけるスクリプト言語についてお話し頂きます。
 また、ゲームにおけるスクリプト言語に深く関わっておられる方々にも加わって頂き、ゲームにおけるスクリプト言語の現状について、パネルディスカッションを行います。

Twitter
Profile
Hak
カルフォルニア在住の最適化エンジニア。ゲーム機開発、ミドルウェア開発に携わる。最近はコンパイラ開発が趣味。子供二人。 Twitter
RSS 2.0
RSS 1.0
ATOM 0.3
XHTML 1.0
CSS
WaBlog