サイゲームス流、おすすめインプット法Vol.3「エンジニア編」

サイゲームスでは、「最高のコンテンツを作る会社」というビジョンを掲げています。そして「最高のコンテンツを作る」ためには、多種多様な「インプット」によってスキルを磨いていくことが大切であるという考えから、行動規範の1つに「良いアイディアは圧倒的なインプットから生まれる」があります。職種を問わず常に貪欲に知識やスキルを吸収して、コンテンツ作りに繋げる姿勢を大切にしています。

本連載では、個人の「インプット」にフォーカスを当てて、サイゲームスで各職種の採用・育成に携わるスタッフたちが推奨する「インプット方法」をご紹介していきます!

第3回は、ゲームを形にしていくエンジニア職編!今回はインプット法と合わせて、その前提となる「ものづくりへのマインド」について、サイゲームスでエンジニアの育成を取りまとめるマネージャーからの声を直接お届けします。


若手エンジニアのみなさんは、日々どんな気持ちでインプットをしているでしょうか?「エンジニアとして成長したい!」という想いから、どんなインプットが正解なんだろうと、さまざまな情報を集めている人もいるかもしれません。書籍やインターネット、勉強会など、手軽に情報を集めるための手段は多くあり、インプットの仕方の幅も徐々に広がってきていることと思います。今回は私の過去の経験を交えつつ、インプットに対する考え方や成長するために必要なマインドについてお話をしたいと思います。

ゲーム作りの熱量がもたらす
インプットと成長

インプットというと、まず「意識的に長期的な目標を立て、体系的に知識を獲得していく」というイメージを抱く方も多いのではないでしょうか。もちろんそのように意識的に目標を掲げた上で、コツコツと取り組むことはとても大切だと思います。ただ、私自身の若手時代の過去を振り返ってみると、ただひたすら目の前にある仕事に対し、妥協せずより良いものを作ることに一生懸命だったことが記憶に残っています。そしてその当時は、長期的な視野で知識を獲得していくというよりも、密度の濃いインプットとアウトプットを短いスパンで繰り返していました。その結果として、さまざまな知識やスキルが無意識的に身に付いていったことが、成長実感としてとても印象に残っています。

エンジニアに限らずゲームクリエイター全般に言えることですが、コンテンツを作り続ける上で最も大切なのがこの「良いものを作りたいという熱量」を持ち続けることかもしれません。このような「熱量」が高く持てていれば、具体的なインプットは自然と付いてくるものだと私は考えています。インプットそのものを目的にするのではなく、あくまでもアウトプットのための手段として捉えることが大切です。

以下では、そのようなかたちでスキルを身に付けた具体例として、サイゲームスに新卒で入社し、現在はエンジニアの育成に携わっているサブマネージャーのエピソードを1つご紹介します。

■目の前の課題に実践的に取り組むことで見えた成長

彼は入社2年目にして、マルチプレイ機能を実装するという、大きな業務を任されます。その業務内容はNode.jsという技術を使ってサーバーを構築するというものでした。しかし、当時はNode.jsの知識がある人が社内にほとんどいなかったため、「Node.jsとは何か」から地道に取り組んだようです。

当時の彼のインプット方法としては、まず書籍を読んだり、社外の勉強会などに参加したりして知識を獲得していきました。学んだことを基にプログラミングをし、動かしてみて、不具合があれば修正してといった試行錯誤を繰り返しながらも、ついにサーバーの構築に成功しました。言い換えれば、Node.jsという未経験の技術に関して、インプットとアウトプットを同時並行でこなす、という方法でやり抜いたことになります。

ここで挙げた彼の例は「高いリアルタイム性で熱いマルチプレイを実現するぞ」とこだわり抜いた結果、必要なインプットを十分に得られた例だと私は考えています。 このように、知識も経験もない状態でも諦めずに自走して課題を解決した経験も、エンジニアの成長パターンとしては1つの典型と言えると思います。私自身、これまで目の前にある課題を一つひとつクリアしているだけのつもりが、後から振り返ると貴重なインプットになっていたと感じることは少なくありませんでした。

■純粋な動機が成長の糧になる

「課題」と言うと何か特別なものに聞こえるかもしれませんが、難しく考える必要はありません。日々の何気ない業務や、もしかすると業務以外の趣味や生活の中にも、解決・達成したいこと、やりたいことはたくさんあるはずで、そういった一つひとつのことに取り組んでみれば良いのだと思います。

ここで特にお伝えしたいことは、成長は「勉強しよう」という意識によるものだけでなく、「刺激を受けたもの、面白いと思ったものを自分でも作ってみよう」という純粋な動機から得られることも大いにあるという点です。ゲーム開発も根本の考え方は同じなので、「良いものを作りたい、人を楽しませたい」というマインドで取り組んでいれば、仕事であれ趣味であれ、格別「インプットしよう」と意識しなくても、自然と色々なことを学ぶことができると思います。

体系的な知識のインプットと応用力

そうやってその場その場で習得した技術では、応用力までは養われないのではないか、と思う人もいるかもしれませんが、応用力は個々の技術習得と同時に確実に身に付いてきます。なぜなら、その時々で未知の技術について調べ、実際に使ってみるという作業を繰り返していくうちに、技術の全体像をつかむ力が養われ、新しいものを取り込むスキルも上がっていくからです。未経験のことにチャレンジすることは、応用力を養うインプットとして高い効果があると感じます。

また、世の中には新しい技術が次々と登場し、その先進性がアピールされますよね。経験が浅いうちは、その宣伝文句を信じ、「これからは○○の時代だ。○○を使いこなせるようになれば万事解決!」と期待することが、私自身もしばしばありました。しかし、いざ使ってみようとすると、あれができない、これができないといった現実に直面するのが常です。しかし自分で苦労した経験があると、「うたい文句ではこう言っているが、この辺りは弱点なのではないか」といった勘所をつかめるようになります。勘所がわかっていれば、次に新しい技術を学ぶときも、吸収する速度が上がり、理解も深まりやすくなります。それが応用力だと思います。

■複雑な問題を簡単な問題に分解すること=エンジニアリング

「エンジニアリングとは、巨大で複雑な問題を簡単な問題に分解し、個々の問題の解決を積み重ねること」だと私は思っています。例えば、オンラインゲームで、同時アクセス可能なプレイヤー数が現時点で数万人規模のものを数十万人レベルまで強化したいとします。同時アクセス数に関係してくる要素は、ソケットと呼ばれるネットワーク通信の接続口、データベースサーバー、フロントエンドサーバー、バックエンドサーバー……などたくさんあって、複雑に絡み合っています。そこで、使われている技術を一つひとつ見ていき、ソケットにはどういう性能が要求されて、データベースサーバーにはどういう要件が必要で……といった要素ごとに条件をクリアしていくと、最初に求めていた課題をクリアできるわけです。このように、問題を適切に分解することで全体像に対するディテールを把握できるようになり、世の中に存在する技術の仕組みや使われ方(型)を理解、習得することができます。そしてそれを繰り返していくうちに、また別の新しい仕組みを導入する場合にも対応できる「応用力」が自然と身に付いてきます。このように、個々の技術のインプットに加え、組み合わせてシステム全体を構築するという成功体験も、「体系的に知識を獲得する」という大切なインプット法の1つだと思います。

サイゲームス流の育成
若手エンジニアに学んでほしいこと

私は普段、サイゲームスの新卒や若手エンジニアの育成を行っているのですが、そこでの研修においても、これまでにご紹介したようなインプットとアウトプットの両方を行うことを重要視してカリキュラムを組んでいます。

具体的な研修の例としては、実際に社内で開発・運用されたコンテンツを使ったコーディング実習をアウトプットに設定し、必要なインプットを書籍や講義によって行っています。また、書いたソースコードを育成者がレビューし、各自の成長段階に合わせてフィードバックすることで、次のインプットに繋げるということもしています。ここでは参考までに、サイゲームスの新人エンジニア研修で実際に「課題図書」としても使用している書籍を2冊挙げますので、是非ご一読ください。

■1冊目

リーダブルコード : より良いコードを書くためのシンプルで実践的なテクニック
著者:Dustin Boswell , Trevor Foucher
訳:角 征典
出版:オライリー・ジャパン

誰もが理解しやすいソースコードを書くための実践的なテクニックについて、シンプルに分かりやすく書かれている書籍です。変数や関数の命名方法やコメント付けのテクニック、ロジックを単純化する方法などの一般論が学べるので、初心者から上級者までどんなエンジニアが読んでも、勉強になると思います。

■2冊目

新・標準プログラマーズライブラリ C言語ポインタ完全制覇
著者:前橋 和弥
出版:技術評論社

クライアント・サーバーを問わず、C言語は全プログラマー共通の基本スキルです。そしてC言語を使いこなすには、その文法以上に、コンピューターシステムへの深い知識と理解が必要になるため、ポインタはC言語を学ぶ上で最初に訪れる関門といえます。本書では、表面的なポインタの文法や用法に留まらず、背後に控えるフラグメンテーション、アライメント、バイトオーダーといったコンピューターシステムとも絡めながら、詳細にかつ平易に解説されているので、初心者を脱したい方にはおすすめの1冊です。

「熱量」が自然と育つ
成長における最適な環境とは

ここまでインプットについての考え方や、具体的な書籍などをご紹介してきましたが、インプットした内容を活かしきることができるかどうかもまた、この記事の最初に書いた「 熱量」にかかっています。
例えば、あるゲームが80%のクオリティーでも形にはなっていて、問題なくプレイできたとします。多くの場合、80%までは比較的容易に到達できますが、そこから残りの20%を仕上げていくことは極めて困難で、それまでにかけた以上の時間と労力が必要になることもあります。ときには、これまでに積み上げたものをリセットして一から作り直しになることさえあります。心が折れそうになっても、粘り強く100%以上のものを追求できるかどうかは、開発者の熱量にかかっています。

サイゲームスでは「最高のコンテンツを作る会社」をビジョンに掲げて、熱量の高いスタッフが、少しでも高いクオリティーを目指して日々コンテンツ作りに向き合っています。
社内には有名タイトルを手がけてきた先輩が多数在籍しており、彼らから話を聞けるのも良い刺激になると思いますし、ベテランだけでなく若手・中堅も互いの熱量に触発されながら業務にあたっています。そして、年次にかかわらず活躍するチャンスがあり、成功体験を積みやすいこともサイゲームスの職場環境の特徴かと思います。そうして成功体験を重ねることで、自身の成長を実感できます。
私自身も熱量の高いメンバーに囲まれることで、自然と高いモチベーションを維持できていることを日々感じており、サイゲームスという会社はゲーム開発者として極めて魅力的な環境だと、働いている身として感じていますね。


以上、サイゲームスのエンジニアが考えるインプット法をお伝えしました。ゲーム開発を志すエンジニアの方々のご参考になれば幸いです。  

現在サイゲームスでは、大きな熱量を持ってともにゲーム開発に取り組んでくれる仲間を募集しています。詳しくはこちらをご覧ください。