こんにちは。
たこのこです。
ガンバリオンさんのインターンに参加してきたので、経験したこと感じたこと思ったことを書き並べます。忘れたくないので…
ただ、時間が取れなくて1ヶ月くらい期間が空いてしまったので、少し記憶があやふやです。覚えている範囲で文字に起こします。
今回は秘密保持契約を結んでいないので自由に書き殴れそうです。社員さんや他参加者さんの個人情報には触れず、公序良俗に反しない範囲で書き起こします。
別にそんなヤバいこと書かないです…。
何をした?
プログラマ向けのオンライン1dayインターンです。
午前11時から始まって、1時間くらい企業説明が行われた後、5時間ほどグループワークしました。参加者は80名近くいて、6~7名のグループに分けられていました。
グループワークの内容は主に2つでした。1つ目は、提示された3つの仕様について、メンバーと共に最適な実装方法を話し合って発表するグループワーク、2つ目は、提示された10のコードに含まれるバグをメンバーで協力して言い当てるグループワークでした。
思ったこと
〇課題について
ガンバリオンさんのインターンが私にとって初のインターンとなりましたが、課題の内容を見た当時の私は、「意外と理解できるな」と驚いていました。課される高難易度な課題を前に四苦八苦すると思っていました。
というのも、私の持っているゲーム開発まわりの知見は、主に個人開発によって身につけた物で、社会で通用する実践的なものではないと思い込んでいたためです。
実際は、ゲーム企業さんも同じような原因でバグを生んでいたり、似たような手法でゲームの最適化を行なっているらしかったです。
具体的には、ゲームの最適化について、オブジェクトプールを使ってGCを回避していたり、遠くのものにあるものほどローポリにして負荷軽減を図っているなどです。
バグの原因については、境界値や小数の丸め誤差、メモリリーク、NULL参照など、言語仕様にまつわるものから、入力制御や一次停止処理、フラグ管理など、実装方法の不備によるものの2種類が主に取り上げられていました。
特にバグの原因について、あまりにも馴染みがありすぎて、コードを読まずともバグの内容だけで答えを直感できました。しかも、実際に当たっていたのでビックリです。
とにかく、ゲーム企業で働くプログラマさんが、宇宙人語ではなく日本語を喋っていたことに強い親近感を覚えていました。話している内容に共感できて嬉しかったです。
実際の業務ではもっと難しい話をしているのでしょうか?学生のレベルに合わせて組まれたインターンではあると思うので、その点が気になりました。
〇メンバーについて
6名のメンバーと共にグループワークしましたが、自己紹介や話し合いをする中で、様々な方が集まっていると感じました。
CyberagentさんやGREEさんのインターンは、参加している方々の経歴や振る舞いから企業の採用方針をなんとなく読み取れましたが、ガンバリオンさんはよく分かりませんでした。
ゲーム開発している方もしていない方もいましたし、積極的にグループワークに参加する方もいれば静かにしている方もいました。出身も大学も様々でした。
数時間のグループワークで人となりを理解する試みの難しさが表れたとか、書類選考のみのインターンには採用方針が表れないとか、採用目的で開かれたインターンではないとか、理由を色々考えてみました。
ただ、参加者の全員はプログラマ志望の人間ではあったので、誠実で真面目な方が多い傾向は感じ取れました。自分の考えが絶対正しいとは思っていなかったり、詳しくない分野は他の方に意見を仰いだり、他の人が知らなさそうな専門用語を噛み砕いて説明したりしていました。
そして、ゲーム業界のプログラマなどと、狭い業界の狭い職種を志望している方々なので、興味関心が重なる部分が多く、自己紹介や雑談は盛り上がりました。好きなゲームだったり、作っているゲーム、作りたいゲームなどです。
そういえば、専門学校に通っている方々と初めて話す機会を得られました。
ゲーム開発の専門学校について、「ゲーム開発好きの集まる環境でゲーム開発の勉強ができるなんて天国だな〜」と思っていましたが、その方曰く、専門学校は専門学校で苦労があるみたいでした。ゲーム開発への熱意が人それぞれだったり、一般教養もしっかり養わないといけなかったりするみたいです。
同じ大学、同じ学部の方と話す機会がほとんどなので興味深かったです。違う境遇にいる方を知ることで自分の境遇を正確に客観視することができると思っています。その点で有意義な情報交換の場でした。
私は私の通っている大学のことを話しました。なにか相手にとって学びになっていれば嬉しいです。
〇グループワークの案出しについて
私は現在、プログラマ志望として就活を頑張っていますが、これまでにゲームの企画部分でも何度も取り組んできたので、プランナー的な思考法も持ち合わせていると思っています。
最適解に近い解決策を提案するか、創造的な解決策を提案するか、といった話です。前者がプログラマな思想で後者がプランナーな思想です。
このことは、本インターンで他プログラマ志望の方々と話し合う中で意識することになりました。私はプランナー的な思考に少し偏っていたように思います。
例えば、「雑なコリジョンの含まれるオープンワールドにおいて、バグらないキャラクターの移動を実現しよう」というテーマで、実装方法を話し合ったのですが、ここで思想の違いを感じました。
具体的には、実際のゲームに用いられている実装方法を提案する人、他職種の方々と協力して解決を図ろうとする人、そもそものバグが起こる頻度から実装方法を考える人などが居ました。
私は「近いコリジョン同士を結合してマトモな当たり判定を自動生成する」と、オープンワールドの特性と開発期間を考慮した案を出しました。実用的かどうかは実装してみてパフォーマンスから判断したいと伝えました。
ここまで言語化して気づきましたが、プログラマな思想かプランナーな思想かの2つで分ける内容でもない気がしてきました。どこを見てどんな基準で実装方法を提案しているのかが人それぞれなだけのように思われます。
発表後にガンバリオンさんから「実際の現場ではこんな風に実装されていますよ」と正解が提示され、発表内容との差分がフィードバックされるので、それを聞いた私は、「正解以外の案はプランナー的、正解の案はプログラマ的なんじゃないか」と、直感が働いたみたいです。
文字に起こすことで変わる考えもあると思いました。振り返りは大事です。
おしまい
覚えていること、感じていたことは大体書き出せたかなと思います。
「忘れることは大したことではない」と誰かが話していましたが、私の場合は大事なこともしっかり忘れる事があるので、こんな感じで備忘録を取り続けていきたいです。それもなるべく早めにです。
以上です。
お疲れ様でした。
コメントを残す