読者です 読者をやめる 読者になる 読者になる

開発者募集中&今どきのiPhoneゲームプログラマの仕事

求人FAQシリーズ・今日はプログラマについてです。


っというか聞かれてもない話もたくさんしたいのですが、私自身が気づく最近のプログラマ事情をかねがねエントリにしたいなと思ったのでそんな話など。

まず、先日発表した新スタジオへの開発者の大募集ですが、これまでの既成概念的な求人を結構やぶって、かなりフリーなフォームでの求人にしてますが、やっぱ求人書いてみると「今どき、他社とかどんな求人の仕方してるのかな」と思って見てみたりするのですが、「XX経験者優遇!」という定番文句みると、そもそも課題に掲げたUnity経験者とか日本にはまずいないのであんま意味ないしなぁ、と思いつつ。

むしろ、これまでのゲーム系プログラマの求人での決まり文句(C++,3D開発者優遇!など)とはiPhone系ゲーム開発の求人ってちょっと違うよな、と、思ったりすることと、その辺もばっちり補足したほうが応募する人の気持ちもまた変わるだろうと思うとところです。


よくある優遇事項


いきなりちょっと昔話ですが、これまでのプログラマの求人の定番文句を私の経験範囲で言えば


20年前:アセンブラ経験者優遇!
15年前:3Dの知識・C言語経験者優遇!
10年前:C++経験者優遇!
5年前:携帯機・次世代機経験者優遇!
今:Objective C / スマフォ開発経験者!


とか、いろいろ優遇される事項があって、現場によって重宝されるスキルも変わるので、今もそれぞれ、普通に目にします。


特にというか、20年前から10年前にかけてはアセンブラや3Dなどハイクラスな呪文を操るウィザード的プログラマを確保できるかが会社の価値に直結してたものですし、近代であるここ10年もゲームの常識レベルが上がりすぎてグラフィック以外にAIやらシミュレーションやらと広範囲をカバーした歩く大百科的経験者が重宝されてます。


さらに言えば開発の大規模化にともない、コード共有やコーディングマナーの統制・進捗マネジメントなどの開発部内での対人スキル・折衝スキルがクオリティを左右する時代になり、よく生じる問題として開発スタッフそれぞれのC++の理解度によって、結構ばらばらなクオリティのコードが産出され、最低限のレベルを揃えるために勉強会をしたり、ミドルウエアを導入したりなど、開発をとりまく選択肢や問題はどんどん増え続けています。


iPhoneゲームプログラムの優遇事項とは?

はい、ここまで読んで「やっぱゲームプログラマって大変なんだぁ。。。」と思った人  ↑↑↑↑  これ、今、iPhoneゲーム開発に直接は関係ないと思います。


今は関係ない、というと語弊が非常に大きいのですが、要するに私が思う、ちょっと前のゲームプログラマの要求レベルって、高まりすぎてたと思うんです。
特にC++は複雑な言語ですし(表面上はシンプルですが、その挙動を明確に捉えるのはかなりの修行が必要です)ゲーム機のOSのAPIもやたらと経験を要する隠された正しい呼び出し順番とかほとんど裏技の話も多くて大変なものでした。

個人的にも、愛せば愛すほど、シャープなコードを生成してくれるC++は忘れられない親友です。

しかし、、、結論からいうと、新スタジオでのコーディングには、UnityによるJS/C#の他、ネイティブコードに関しては徹底的に標準のObjective Cに統一するつもりで、ミドルウェアでも使わない限り、C++のコードは書かなくなる見込みです。

要するにCocoaにどっぷりの会社なわけですが、このCocoaiPhone/Appleフレームワーク経験者じゃないと体験できないものですが、Cocoaってやってるとプログラマーのレベルはめきめき上がってくんですよね。

これまでのゲーム開発の現場では、C++の自由度、というより、標準サポートの低レベルさで、あまりにも各人がばらばらの方向性で進みがちだったもので、成長も非常に人それぞれになってしまったものですが、Cocoaではかなりの高水準まで高い洗練でサポートされてるので、それを使ってるウチに自然とプログラマ自身も同じくらい洗練された仕事をしたくなってくので、前述の通り顕著に成長速度が速いな、と思ったりします。


人は人、自分は自分で己のスタイルを貫き通すプログラマもよくいるものですが、Appleの旨いところはそうした人でもCocoaで賑わう人を見ると「俺もやってみようかな」って思わせるところなんですよね。

なにより重要なのは、読んだら正しい文章になるコード(主語・述語・修飾子が正しい文法で並ぶ)を書くことで、コード共有時の相互理解度が飛躍的に高まることなんです。

正しい文章として読めるコードは必然、間違った部分はすぐに気づきますし、誰もがメンテをしやすくなる〜生産性が高まる、ことの根源です。

そうした洗練の先には自ずとコメントも減っていくとは名プログラマーが達する境地で、足並み揃えるためのミーティングに時間を使うよりも、コードだけで意思疎通できる範囲が広がれば、時間の有効度もハネ上がります。

ともあれ、これまでの自由度の高い(裏を返すと、レベルが人それぞれになりがち)なゲーム開発の現場に比べ、iPhoneAppleフレームワーク)に特化することで、各スタッフが自ずと成長する道が見えやすくなったと思います。


もうちょっとまとめて言うと、iPhone以前のゲームプログラマ的にはAI・シミュレーション・メモリやOS・グラフィックなどの各エキスパート性を要求される分野の呪文をたくさん知ってるウィザードタイプが重宝され。

iPhoneなどの近代フレームワークでゲームを作る会社(今のウチがそう)では、Unity/cocos2dなどの定番ミドルウェアをある程度習熟したら(上記のエキスパート性に比べれば全然楽)Appleがそうであるように、コーディングを丁寧に、すなわち、文章的に洗練されたコードに集中することで生産性や追求性をあげて、バージョンアップなどの長期運営をしやすくすることが重宝される。

のではないかな、というか、私自身が、家庭用ゲーム機・iPhone、それぞれやる時は↑のポイントを重視して採用してます。ってところです。


丁寧とはざっくり言えば、標準的なコーディング規約(Googleの規約の例)などを守り(1時間あれば読めるYO!)、他者に通じる変数名・関数名、すなわち、へんてこな日本語での変数名や、内容がわからない関数名(例えば、Program_1()などの関数名など)をつけず、具体的な内容がわかるモノになっているか、自己レビューしながらコードを書くことです。



採用のハードル

↑の事項を守らなければ採用されないの?と気にされる方もいるんじゃないかと思いますが、優遇事項ってくらいで採用に必須ではないので安心してください。
強調したかったのは、私がそうした開発の進め方を重んじるということが一つ(どこも、だいたいそうだとは思いますが)

もう一つは「ゲーム開発未経験だけど大丈夫でしょうか?」という心配の声に対する答えが、こんな感じです。

既に課題に取りかかってる人なら実感されてることと思いますが、未経験でもびっくりするくらい、高いレベルで面白いモノが作れるんですよね。
(既にご応募いただいた方の中にも、募集をみてからUnityを実践した!という方もいます)

そうした、誰もがそこそこ高レベルなモノが作れるような時代、大事になってくるのは、仲間同士が共用するコードをちゃんと気遣ってかけているか(自分しかわからない仕事になってないか)、が、割と第一と思ってます。

そもそも、仲間が読みやすいコードが書ける=必然、私が、NGがあった場合、指摘をしやすいんです。そうすれば、自ずと誰もが一線の経験者に負けないコードが普通に書けるようになる。

ソレさえ出来れば、会社の目標は俄然達成しやすくなるというものです。


ある意味、英語の単語ボキャブラリなどもますます重要なんですよね。という意味ではコードからにじみ出るその当たりの練度は、私のみならず、採用判断のトレンドの一つって感じです。


プロの仕事

またドクソ長いエントリ書いちゃいましたが、これもひとえに、一人でも多くの可能性を秘めた開発者の方に↑のようなことを抑えると良い仕事が出来るよ!という共感を作りたかったのと、それをやるならウチでどうすか?という話をしたかった次第。

また、「ゲーム未経験だけど。。。」という人に、経験者かどうかの差ってそんなところかな、ってところと、なにより採用の選考課題には技術的経験の差はあまり出ないようにしてあるんですよね。

発想の差は必然あると思いますが、それこそクリエイターとしての素質ですから、日頃からゲームが好きで、どんなゲームが面白いか考えてる人なら、自然といろいろな発想がわくと思いますし、重要なのは沸いた発想をプレイ可能なゲームに落とし込めるかどうか。です。


また、裏を返すとゲームプログラマの経験が豊富な方でも、iPhoneゲームの開発事情ってどんな感じかな、と思われると思うので、イメージがこのエントリで伝われば幸いです。


要するに、これまでのゲーム機経験者の方にはApple/Unityの可能性の面白さを知る・追求する機会として、ゲーム系の仕事未経験の方には、最初から洗練されたフレームワークで働くことで自分の可能性を伸ばす機会として、新スタジオでの開発に共に望んでいただけることを心まちにしております。

ご応募、お待ちしております!!