【ACADEMY】ゲームプログラマの仕事を得るには
我々のガイドは,あなたが夢見るゲーム業界の仕事への正しい道を見つけるのに役立つ。このページでは,ゲーム業界への就職について,さまざまな専門分野をカバーする他の詳細なガイドを読むことができる。
ビデオゲームの制作にはさまざまな分野が関わっているにもかかわらず,ゲームデベロッパのイメージというのは,引きこもりのオタク系プログラマが隅っこでコーディングしているというものになりがちだ。
これは,ゲーム制作の方法だけでなく,プログラマの仕事の仕方についても誤った認識を持っている。
プログラミングは,システムや仕組みを突き詰めたり,バグを修正したり,ルールを作ったり,世界全体をコード化して命を吹き込むために,技術的な知識と,他の分野との対人コミュニケーションを必要とするクリエイティブな分野だ。
ChucklefishのCTOであるRodrigo Braz Monteiro氏は,「プログラマの仕事は,問題を理解し,制約条件の中でプログラムの最適な解決策を見つけ出し,その解決策を一連のうまく設計された抽象的なものとしてモデル化することです」と語る。
Monteiro氏は,ゲーム業界で16年間プログラマとして活躍し,2016年からはWargrooveの開発会社で出世街道を歩んでいる。我々は,氏と他の3人の先輩プログラマに,どのようにしてこの役割を担うようになるのかを聞いてみた。
- ゲームプログラマになるためには,どのような教育が必要か?
- ゲームプログラマとして働くためには,どのような学歴が必要か?
- ゲームプログラマになるためには,どのような資質やスキルが必要か?
- ゲームプログラミングに関する一般的な誤解は何か?
- ゲームプログラマとしてのキャリアアップの可能性は?
- ゲームプログラマを目指す人へのアドバイス
ゲームプログラマとして就職するためには,どのような教育が必要か?
ゲームプログラマになるためにはどのような学歴が必要か? プログラミングはハードスキルを必要とする分野なので,お金に余裕があり,そのアプローチを受け入れることができる人にとっては,伝統的な教育方法が有益だ。
「私はコンピュータサイエンスとエンジニアリングの学士号と,人工知能の修士号を取得しています」と語るのは,10年以上にわたってプログラマとして活躍し,現在はCreative Assemblyのプロジェクトテクニカルディレクターを務めるDuygu Cakmak氏だ。「私の教育は,自分のやりたいことと密接に結びついていたと思います。同じような正式な教育ルートを辿りたい人にも,同じような道を勧めたいですね」
Ubisoft TorontoのゲームプレイプログラマであるNikhil Ramburrun氏は,学校に行くという選択肢があるならば,コンピュータサイエンスかエンジニアリングの学位を取ることを勧めている。
Jaden Palmer-Leandre氏は,2018年にコンピュータサイエンスの学士号を取得し,以来,Sports Interactiveでゲームプレイプログラマとして働いている。彼は,学位を取得したことで最初の仕事を確保できたことには同意しているが,プログラマになるために正式な教育が重要だとは考えていない。
「自分のスキルを高め,学ぶための最良の方法は,とにかくプログラミングを始めることです」と氏は語る。「同時に,どんな学位よりも自分の才能をアピールできる優れたポートフォリオを作成できるでしょう。卒業生と同等の幅広い知識を持っていることを示せば,チャンスは十分にあります」
Monteiro氏は,独学で学んだプログラマの良い例だ。隣接する分野の勉強もしたが,最初にコーディングを始めたのは11歳のときで,1994年にリリースされたゲーム開発アプリKlik & Playを使って,13歳からCとC++を少しずつ覚えていったという。
「ブラジルではゲームデベロッパになることは現実的ではないと思っていましたので,結局,大学で工学を学びました。最初はメカトロニクス,次にコンピュータエンジニアリングです」「コンピュータサイエンスと数学(とくに幾何学と線形代数)の両方を熟知していることは必須です。そうでないと主張する人がいたら強く反論します。しかし,その気になれば独学でも可能です。実際,私のコンピュータサイエンスに関する知識のほとんどは独学で身につけたものですので」
人によって適した方法は違いますが,常に最低限の独学が必要であることを念頭に置いてください -Rodrigo Monteiro氏,Chucklefish
「人によって適した方法は異なりますが,キャリア全体を通して常に新しい問題に頻繁に遭遇するので,常に最低限の独学が必要であることを覚えておいてください。自分で学ぶのが得意な人には,独学のほうがよいかもしれません。もちろん,大学には他にもメンターや社員,志を同じくする人たちとのネットワークを構築できるというメリットがありますが,それだけではありません。プログラマを採用する際には,関連する(あるいは他の)学位を実際に持っているかどうかは考慮さませんが,それよりも仕事の実績のほうがはるかに重要です」Cakmak氏は,従来の方法以外にもさまざまな学習方法があることを強調している。
「カンファレンスへの参加は,最終的に私の場合は真価を発揮しました。私はNucl.aiのカンファレンスに参加し,そこでCreative Assemblyのチームと出会ったのです」と氏は語る。「私は,プログラミングで成功するために,正規の教育が必ずしも重要だとは思いません。高等教育を受けているかどうかにかかわらず,好奇心と自己学習,そして継続的な自己改善への意欲が成功への一番の近道だと思います」
「とくにこの分野では,常に進歩していることから,個人が独学の道を選ぶ場合,知識のギャップや改善すべき分野を継続的に特定し,それらの分野を体系的かつ自律的に学ぶ努力をする必要があります」
ゲームプログラミングの仕事に就くためには,どのような経験が必要か?
ゲームプログラマとして最初の仕事を見つけるには,経験よりもポートフォリオが関係してくる。そして,すでに強調したように,そのポートフォリオは,自律的に構築することも,学位を取得することも可能だ。
「ゲームプログラマになるためには,経験を必要としないジュニアポジションに就く手もあります。ジュニアポジションでもゲームプログラマになるチャンスはありますが,通常は,学士号や優れたポートフォリオが求められます」とPalmer-Leandre氏は語る。「経験がなくても,あなたがその分野に情熱を持ち,知識があることを示す証拠が必要です。技術を磨きながらゲームや小さなプログラムを作り,それを披露します。これでほとんどの場合,あなたの気持ちは正確に伝わるでしょう」
※ジュニアポジションは,未成年者を想定した資格を必要としない見習い的な職位で賃金も未成年者レベル
経験がなければ,情熱と知識を持っているという証拠が必要です -Jaden Palmer-Leandre氏,SI
ゲーム開発プロジェクトを行い,それを世に出すことで多くのことを学ぶことができるとRamburrun氏は語り,こう付け加えた。「学校に行った人以上にです」「ビデオゲームのデザイン,コーディング,そして最も重要なテストを学ぶことができます」と氏と続ける。「私は間違いなく実践的な人間なので,プロジェクトを作ることで,学校だけでは学べなかった多くのことを学んです」
「ゲーム業界に入るためには,ゲーム開発のプロジェクトを持っていると,絶対に目立つことができます。Ubisoft Toronto Next(参考URL)のように,新卒者向けに,経験がなくても業界に入れるようなプログラムを用意している会社もありますので,そういうところにも目を向けてみるといいと思います。また,Hack the North(参考URL)のようなハッカソンや,ゲームジャムでもインパクトを与えることができます」
近年,Unity(関連記事),Unreal(関連記事),GameMaker(関連記事),Godot(関連記事)などのゲーム開発ツールが民主化されたことで,ゲームプログラミングを始めることが非常に容易になったと,Monteiro氏は指摘する。これらのエンジンに馴染みのない人は,GamesIndustry.biz ACADEMYに一連のガイドがあるので,そちらを見てほしい(関連記事)。
「上級のゲームプログラマになるために必要な知識は非常に幅広く,何年もの練習,読書,研究を必要としますが,抽象的な思考のコツと物作りへの愛情があれば,誰でも最初の一歩を踏み出すことができます……。そして,それはとても楽しい旅なのです」
プログラミングの経歴よりも重要なのは,自分が知らないことを認めて,積極的に質問できるかどうかだと,Ramburrun氏はプログラマを採用する際のポイントを尋ねられて答えている。
「ゲーム制作はチームで行うものですので,チームとの連携が取れるかどうかはとても重要です。C++のエキスパートだけど一緒に仕事をするのが苦手な人よりも,プログラミングのスキルはそれほど高くないけど,自分のエゴを捨てて勉強し,チームとして一緒に仕事をしてくれる人のほうがいいですね」
ゲームプログラマになるためには,どのような資質やスキルが必要か?
Monteiro氏は,プログラミングの仕事に就く新人を探すとき,次のような点を重視するという。
- その人は,チーム全体で効果的なコミュニケーションができそうか?
- その人の仕事ぶりはどうか? 個人的なものから仕事上のものまであるが,ここでの範囲はその役割の重要性によって異なる
- プログラミングにおける彼らの主な興味は何か? 難しい問題に取り組むことに情熱を持っているように見えるか,それともインターネットからかき集められるもので満足しているのか
これは,いくつかの重要な分野に集約される。
●1. 技術力
「優れたプログラマは,怠惰なプログラマであります」とRamburrun氏は語る。「どんなにクールに聞こえても,すでに技術があるなら車輪を再発明する必要はありません」
優秀なプログラマは,怠惰なプログラマであります。どんなにクールに聞こえても,すでに技術があるなら車輪を再発明する必要はありませんから -Nikhil Ramburrun氏,Ubisoft
これは,C++,Java,C#など,学校や独学で学んださまざまなプログラミング言語の知識を前提としている。最終的には,自分が目指すポジションによって必要な言語は異なる。また,仕事の中で多くのことを学んでいくことも忘れないでほしい。
「技術面では,社内のC++ゲームエンジンでゲームを開発するため,C++に精通していることが第一に求められます」とCakmak氏はCreative Assemblyのニーズについて語る。「ゲーム開発のエンド・ツー・エンドのプロセスがどのように機能するのか,ゲームがどのように作られるのかを理解していることも重要であり,ゲームに対する情熱も必要です」
●2. 問題解決能力
優れたプログラマになるためには,問題解決への関心と鋭敏な能力も不可欠だ。
「選択した言語の知識はもちろんですが,解決しなければならない問題が常にあり,その多くが抽象的であるため,優れた問題解決能力は必須条件です」と Palmer-Leandre氏は語る。「デバッグが困難なコードに直面したときには,忍耐力も役に立ちます」
問題解決に長けているということは,好奇心が旺盛であるということであり,継続的に自己改善を行う意欲があるということだとCakmak氏は語る。
「我々は常に問題解決能力の高い人材を求めています。これはすべての問題を解決する方法を知っているということではなく,与えられた問題について適切な質問をし,要求に応じて解決策を提案する方法を知っているかどうかとです」
すでに触れたように,問題解決には抽象的な問題を解決することも含まれるので,これに慣れておく必要がある。
「プログラマには,複雑で抽象的な推論を行う能力が求められます。これは,パズルを解いたり,数学の問題の解答を見つけたり,複雑な状況で決断を下すときに必要なスキルです」
「また,プログラマは,その分野の知識に対する飽くなき渇望を持っていなければないけません。というのも,プログラマは一生,日々新しい技術を学んでいかなければならないからです。プログラミングは,技術を学んで終わりにしたい人には向いていません」
●3. コミュニケーションとチームワーク
ゲーム業界のほとんどの仕事に共通するスキルがある。それは,チームの一員として働く能力だ。ゲーム作りは1人でするものではないと言っても過言ではない。
「ありきたりに聞こえるかもしれませんが,よりよいプログラマになるためには,コミュニケーションとチームワークが欠かせません」とPalmer-Reandre氏は語る。「自分の考えを明確に説明し,他のチームメンバーが働きやすいように仕事をすることができれば,間違いなくキャリアを成功させることができるでしょう」
つまり,優れたコミュニケーション能力と対人関係のスキルを持つことが非常に重要だとRamburrun氏は付け加える。
経験豊富なプログラマは,問題をさまざまな角度から見て,ソフトウェアのニーズを考慮したうえで,トレードオフを評価できます -Duygu Cakmak氏,CA
「ゲームの仕事をしていると,チームメイト以外にもたくさんの人と話すことになります。彼らはさまざまなバックグラウンド,個人的な経験,仕事上の経験を持っていますので,親切で,優しく,理解のある人であることは非常に有効です。自分のエゴを捨て去ることは,そのための良い方法です」複数の分野にまたがるチームで仕事をするには,技術的な概念を技術者ではない人々に伝える能力が不可欠だ。「また,技術的なアプローチに影響を与えるコマーシャルやデザインのコンセプトを受け入れることも必要です」とCakmak氏は語る。
「理想的な世界では,最も効果的なソリューションや技術的なアプローチは,コラボレーションから生まれます。それは,先輩プログラマが過去の経験を共有したり,後輩が別のアプローチを提案したりすることです。メンタリングやメンティーになることは,どの段階においても成功への重要な道であり,多くの場合,本当にやりがいがあり,モチベーションを高めることができます」
ゲームプログラミングに関するよくある誤解は何か?
プログラマの仕事には,いくつかの決まり文句がある。これらの誤解は,この分野にとって有害であり,志望する新人にとっては敬遠される効果があることが多い。また,逆に,間違って魅力的な分野にしてしまう人もいるかもしれない。
このような誤解の1つは,先ほど説明したスキルである「チームワーク」と関連している。
「プログラマは引っ込み思案で反社会的だと思われがちです」とMonteiro氏は語る。「しかし,チームの他のメンバーとうまくコミュニケーションがとれないプログラマは,最終的に優れたプログラマにはなれません」
システムや機能を一から設計する際の配慮は,それ自体がアートのようなものです -Duygu Cakmak,CA
Palmer-Leandreは,プログラマになるうえで最もよくある誤解は,「Mr.Robotのようにコードを書くことになる」というものだと語る。「実際に始める前に,指先からずっとコードが流れてきて,ある言語でこれができる完全に知識があると思ってしまうことがあります」と氏は説明する。しかし,完全に使いこなせるようになるまでには何年もかかって,それでも常に新しいことを学べるのがプログラミングの魅力なんです」キャリアの中でStackOverflowをはじめとする多くのWebサイトを頻繁に訪れることになるでしょう。常に多くの異なるコンセプトを思い出して,学ぶ必要があります」
Ramburrun氏は,最もよくある誤解はハードスキルに関するもので,優れたプログラマになるためには数学が得意でなければならないという考えだ。
「そのような誤解はほとんどありません。実際には,仕事の中で多くのことを学びますし,それぞれのポジションには特定のスキルセットがあり,そこに長くいればいるほど身についていくものです」と氏は語る。「何も知らなくてもかまいませんし,それを認めてもいいのです。重要なのは,どれだけ意欲的に学び,常に向上しようとしているかということです。また,善良な人間であることも非常に重要です」
最後に,Cakmak氏は核心的な問題に触れている。「プログラミングはクリエイティブではないというのが,学問としてのプログラミングにまつわる最大の誤解の1つです。問題を解決する方法は数多くあり,創造性は適切な解決策を見つけるための重要な要素です。システムや機能を一から設計する際の配慮は,それ自体がアートのようなものです」
ゲームプログラマのキャリアアップはどのようなものか?
Monteiro氏は,ChucklefishのCTOであると同時に,プログラマとしても活躍しており,現在は,同社が開発中の魔法学校シミュレーションWitchbrookのリードを担当している。
Monteiro氏は,「プログラマの多くは,自分の技術に惚れ込んでいますので,キャリアの後半で管理職になることに抵抗があります」と指摘する。「典型的な進路はシニアプログラマやプリンシパルプログラマになることですが,多くのプログラマは喜んでキャリアの最後までそのポジションに留まり,より管理的な役割に関与してリードプログラマやテクニカルディレクター,CTOになることもあります」
「プログラミングは非常に有用なスキルであるため,多くのプログラマはまったく関係のない分野で成功を収め,プログラミングスキルを『秘密兵器』として,どんな新しいキャリアでも強みを発揮しています」
「人の管理をしたいかどうか分からない場合は,マネージャートレーニングを受けて,自分の好みに合うかどうかを確認できます。逆に,技術やプログラミングがもっと好きなら,経験を積んでシニアプログラマになるという選択肢もあるでしょう」
「しかし,キャリアも直線的なものである必要はなく,1つの専用の道筋にこだわる必要もありません。それはあなたの情熱や興味によって変動するものであり,さまざまな役割や職域に触れることで変わるかもしれません」
人を管理するか,技術を管理するかは,Creative Assemblyがリーダーシップまたはエキスパートと呼んでいる道筋だ。前者は,ミッド,シニア,そして最終的にプリンシパルデベロッパへとステップアップしていく。後者は,チームのリーダーになることを目指し,その後,ディレクターになることができる。
新人およびゲームプログラマ志望者へのアドバイスとリソース
●早い段階で専門性を高めなくてもいい
ゲーム業界で働きたいと思って勉強を始めたCakmak氏は,本当は人工知能の分野で働きたいと思っていた。そのため,コンピュータサイエンスの学士号に続き,AIの修士号を取得していた。
氏はそれに後悔はしていないが,もう一度やるとしたら,違ったやり方をするかもしれないと告白している。
しかし,キャリアは直線的なものである必要はなく,1つの道筋にこだわる必要もありません -Nikhil Ramburrun氏,Ubisoft
「私は最初から徹頭徹尾AIプログラマであり,自分の専門分野にかなり注力してきました。もし私がもう一度やり直すとしたら,ゲーム開発のあらゆる側面にできるだけ時間をかけて "手を汚して",視野を広げるようにするでしょう」「それぞれの領域には,解決すべき問題やユニークな課題があり,その結果,複数の領域における多様な解決策や問題解決の方法論を理解し,考え出すための視点を得ることができます。これにより,視野が広がり,自分の専門分野のさまざまな技術を応用して,より効果的で優れたソリューションを生み出す能力が向上するのです」
●自分の思うように進もう
ゲームを始めたばかりの頃は,どうしても気が重くなってしまいがちだ。なるべく人と比べないようにして,臆せずに質問してみてほしい。
「プログラマとしての最初の数年間は素晴らしい経験をしていましたが,なにも変わりませんでした。もし何か変えられるとしたら,自分の期待値を高く設定したり,他人と比較したりしないようにするでしょう」とPalmer-Leandre氏は語る。「誰もがそれぞれの道を歩んでおり,それぞれの方法で仕事をしています。他人と比較することは最も逆効果であり,何も良いことはありません」
Ramburrun氏はこう付け加える。「私なら,もっと質問するようにします。私は自分で何かをしようとする傾向がありますが,ゲーム開発は大きな機械であり,質問をすることは自分の成長にとって非常に重要であるだけでなく,学習経験を可能な限りスムーズにするための適切なツールがすべて揃っていることを確認するためにも重要であることにすぐに気づきました」
●行って,コードを書く
インタビューに答えてくれた人たちからのアドバイスで最も多かったのは,とにかくコーディングに挑戦して,プロジェクトを作ってみることだった。
「今すぐ始めてください。今すぐに!」とMonteiro氏は語る。「多くの人が 『いつかはプログラミングをしてみたい』と思っていますが,今が一番いい時期です。大学に行ってからなどと言わず,とにかくやってみてください」
Palmer-Leandre氏はこう付け加える。「コードを書いてみてください。自分が解決したい問題を見つけて,それを解決するために何かを作るのです。ゲームプログラマになりたいのであれば,ゲームエンジンをダウンロードして,チュートリアルやドキュメントを見ながら,そのエンジンの "裏と表 "を学びましょう。世の中にはたくさんの言語,エンジン,フレームワークがありますので,その中から自分のスキルやニーズにぴったりのものが見つかる可能性が高いのです」
行って,コードを書く。解決したい問題を見つけて,それを解決するために何かを作るのです -Jaden Palmer-Leandre氏,SI
Cakmak氏は,理論だけでなく,自分の手を汚すことが重要だと語る。「個人的なプロジェクトに取り組み,小さなゲームやゲームシステムを作りましょう。「リファクタリングを繰り返し,何時間も何日もかけて練習してください。プログラミングの理論はもちろん重要ですが,優れたプログラマになるための最も重要な要素は,何日も,何か月も,何年もかけて練習し,忍耐強く取り組むことです」
「自分が魅力を感じる面白い問題を見つけ,それを複数のアプローチで解決しようとすること。他の人とコミュニケーションをとったり,公開されているソリューションを見て分析・評価します。最終的な目標は,学ぶことをやめないことです」
また,Ramburrun氏は,特定の言語やエンジンに限定しないようにとアドバイスしている。
「小さなプロジェクトを作って,それを公開してください」と氏は語る。「そうすれば,スタジオに行ったときに,デザイナーやプロダクション,テスターと同じ言葉で話すことができるようになります。もし可能性があるのなら,ゲーム業界でメンターシップを得ることを絶対にお勧めします」
●リソース
インタビューに答えてくれた人たちは,YouTubeでプログラミングのチュートリアルを見ることを勧めてくれた。そのほか,初心者にお勧めのリソースは以下のとおりだ。
・書物
- The Pragmatic Programmer(Andy Hunt とDave Thomas著)。優れたソフトウェアエンジニアリングの哲学を紹介する優れた入門書だ
- C++17 - The Complete Guide(Nicolai M. Josuttis著)
- Effective Modern C++ (Scott Meyers著)
- Software Engineering at Google: Lessons Learned from Programming Over Time(Hyrum Wright,Titus Winters,Tom Manshreck著)
- その他,プログラマになる方法に関するCreative Assemblyのトークでは,さらに多くの書籍が推奨されている(関連英文記事:記事内のリストを参照)
- HackerRank:面接対策やスキルアップのためのもの
- W3Schools:まったくの初心者でも言語を学べる
- Udemy:ゲームプログラミングを中心としたプログラミングコースが充実している
- Stack Overflow:問題に行き詰ったときに使うとよい
- Where to Get Started Learing C++ and What Resources to Use:Shafik Yaghmour氏による記事
その他のGamesIndustry.biz ACADEMYの「ゲーム業界で働く」ためのガイド
ゲーム業界で働くためのガイドでは,採用からリテンション,理想の仕事に就くための方法,適切な企業文化を作るための方法など,さまざまな観点から説明している。
GamesIndustry.biz ACADEMY関連翻訳記事一覧
※本記事はGamesIndustry.bizとのライセンス契約のもとで翻訳されています(元記事はこちら)