インフィニットループ 技術ブログ

2018年12月13日 (木)

著者 : r-hagihara

エンジニアが考えたエンジニアのためのインターンシップ(後編)

どうも。はぎはらです。
今日は、弊社のインターンシップを紹介する記事の後篇として、主催者側の「狙い」をご紹介しつつ、インターンシップの裏側をお見せします。これからインターンシップに参加してみようという方、インターンシップの開催を検討されている企業担当者の方の参考になれば幸いです。
前編となる、開催の概要については前編をご覧ください。
今回のインターンシップでは、「エンジニアになってもらうこと」「インターンになってもらうこと」「チームになってもらうこと」「話してもらうこと」「続けてもらうこと」の5点を「狙い」として、開催内容を計画しました。

エンジニアになってもらう

インフィニットループには、HUBエンジニアという役割があり、社内のコミュニケーションを促進する仕事に携わっています。私はその役割を担っていて、首都圏で企業内研修に携わっていた経験を生かしつつ、現役のエンジニアとして、実際の業務を元にしたカリキュラムを作って社内教育を行っています。
今回は事前面談を行い、参加者のスキルを詳細に検討して、研修内容を考えました。チーム作業に慣れた学生さんが多かったので、今まで経験したことのなさそうな大きいチームを作ることにしました。参加者の皆さんは学校で一定の技術を学んでいましたので、好きなものを作ってもらい、運営の我々は、そのサポートに徹することにしました。
最大の狙いは、今回のインターンを通して、新規に技術を身につけるのではなく、身につけているスキルを活かすスキルを身につけてもらうこと、エンジニアとしての「振る舞い」を自分なりに考えてもらうことです。「技術やアイデアを、どう他人と共有して成果を出すか」という課題は、エンジニアリングにとって重要です。
余談ですが、これまで私が出会った中では、じっくり他人と話ができるかどうかが、エンジニアとしての成長に影響すると感じています。設計やコードレビューも結局のところ、人と人が意見のズレを調整する、対話の一形態に過ぎません。エンジニアとしての適性は、コミュニケーションの中でこそ確かめることができる、と私は考えています。
初対面の人たちと相談をしつつ、自分の技術も最大限発揮しなければならないというシチュエーションは、エンジニアの世界ではよくある光景です。学生のうちから、こういった状況に慣れておくことは、将来必ず役に立ちます。ちなみに、インフィニットループでは、20人程度のチームを組むこともありますし、お客様のチームも含めると、50人、100人近い仲間でプロジェクトを行うことは少なくありません。
 

「インターン」になってもらう

ところで、元々インターンシップは20世紀初頭に大学教育の一環で始まった取り組みです。多くの国では、インターンシップは、大学と連続した学術的なキャリアとして位置付けられています。大学での成果をどれだけ社会で生かせるかを試す機会だと言えます。
近年「VR」や「ゲーム」は、エンタメの枠を超えて、大学の研究対象としても注目されています。今回は、グローバルなインターンシップのあり方に従い、この分野に既に親しみのある学生さんを中心に「インターン(研修生)」として日頃の学校での学習成果を生かしてもらうことを狙いました。
参加者の皆さんのコメントを聞く限りでは、今回の取り組みに好意的な感想を抱いて頂けたようです。
「会社から業務指示が出る形をイメージしていたが、違った」
「不安だったが、楽しく仲良くやれた」

「他の人のコードを直したくなってしまうことがあった」
「自分の技術力を見直す機会になった」
「(VRという)やりたかった技術に触れることができた」
学生さんの期待値に少しでもお応えできたなら、嬉しく思います。
 

チームになってもらう

今回の参加者15人、全員が一斉に行動しては混乱を招きます。そこで、チームをプラットフォーム班、ビジュアル班、コンテンツ班という3つの「サブチーム」に分けました。
ビジュアル班は、主にMaxを使って、ゲーム内アセットを作成しました。

今回取り組むのはVRゲームという分野ですので、たくさんの3Dの素材が必要です。この課題に対して、3Dに詳しい学生が、デザイン志望の学生に3Dの作り方を教えて、量産体制を作っていました。聞いたところ、最初に作るのはマイナスドライバーが良いそうです。確かに、言われてみれば適度に複雑・・・という造形をしています。我々にとっても、学生さんから学べることも、インターンシップのメリットの一つです。

また、ビジュアル班はランキングサイトのWebデザイン・コーディングも行いました。全体のムードやレイアウト・UI要件などは、メイン担当者が口頭でヒアリングして進めていきました。私が気づいた時にはもうAWSにデプロイされていて、手際の良さを感じました。

プラットフォーム班は、まず基盤となるアバター・VRの実装を行い、仮想空間上で動き回れるようにしました。プロジェクトの後半では、コンテンツ班からゲームの実装を受け取って、VRコントローラーとの接続をしたり、ネットワーク対応をしました。また、プラットフォーム内のUIも担当しました。プラットフォーム班はVRに特化した研究・開発をすでにしていた学生さんたちに、その延長で取り組んでもらいました。

コンテンツ班はゲーム作りに特化したチームです。前編の記事で紹介したVRゲームは、この班が企画・実装を行いました。もともと趣味でゲームを作っていた人もいれば、作ってみたいと思っていたが、今回が初めて、という学生さんもおり、お互いに教えあったり、アイデアを出し合ったりして進めていました。

集まってチームを作ることは一つの技術です。人類は、数万年前に、「集団」を作ることで他の種を圧倒したと言われています。集中すると孤独になりがちなエンジニアですが、チームで知恵を出し合ったり助け合って開発することの楽しさを感じてもらえたでしょうか。
 

話してもらう

コミュニケーションツールにはSlackを使いました。とは言っても、Slack上の会話はそれほどありません。私は、文字による会話は本質的に難しいと考えています。チャットはたいへん便利ですが、時たま不要な不安や不協和が起こり、それが積み重なってしまうと、チームに深刻な事態を招きます。
こういった問題を解決するために、インターンシップでは、「話しやすさ」を重視しました。今回、インターン生の皆さんには弊社の大会議室を2週間貸し切り、座席や机を必要に応じて自由に配置して使ってもらいました。まず最初は共同作業をする相手と机を合わせてもらい、会話をしやすいように誘導しました。

また、ホワイトボードを置いてタスクを書き出してもらい、立ち話のきっかけができるように配慮しました。

プログラマーは、パーティションで区切って黙々と黙って作業をするイメージがあるかもしれませんが、現代のシステム開発はどんどん大規模で、抽象的になっており、多くの人間が同じ考えを共有して仕事に取り組むことの重要性が高まっています。結果として、インフィニットループでは、チームの仲間と設計を検討したり、アイデアを共有するための相談をしている時間が、かなりの比率を占めるようになりました。

 
とはいえ、我々の仕事にチャットは欠かせません。Slackはデータの受け渡しとタスク管理で大活躍しました。Unityを使う場合、作成したアセットをunitypackageでパッケージングして受け渡すと、チャット上に時系列に並ぶため、簡易的なバージョニングが行えます。タスク管理は、ハッカソンに慣れた学生が、githubのイシューを貼って進めていました。私からの研修全体の周知事項は、ピン留めしたり、リマインダーに登録して連絡漏れのないようにしました。
プロジェクトの仕様を決定するプロセスは参加者主導で行いました。アイデアは、「VRゲームを作る」というお題があったため、インターン生があらかじめ考えてきてくれました。私は、情報収集をサポートしたり、技術的なトレードオフを整理するだけにとどまり、最終的に何を採用するかは、インターン生に決めてもらいました。
 

続けてもらう

インターンシップが終わったあとのフォローアップも重要です。企業研修の分野では、継続的な人材育成のためには、5年、10年といったスパンで、再研修を行います。定期的に、社内試験やイベントなど、なんらかの形で知識や技能を確認する機会が与えられます。一般教養を学ぶ学校教育と比べると、社会は常に変化にさらされていますから、企業研修は、退職するまで継続できることが理想的です。
実は、このプロジェクトのために立ち上げたSlackは、現在も継続しています。たまにインターン生がVRのニュースを教えてくれたり、弊社のニュースを共有したりしながら、他愛もない雑談をしてします。このような形でエンジニアとエンジニアの関係を続けていくことも、「エンジニアの」インターンシップの狙いの一つです。

今回は一通り完成した後、テストプレイ中にマルチプレイのバグが見つかる、というところで時間切れとなりました。具体的なアイデアは全て実現でき、プロトタイプとしての品質は十分満たしており、技術検証としては十分な成果を出してくれました。
 

ふりかえり

欲を言えば、テストと品質を上げる時間を確保してあげたかったのが私の指導上の反省点です。インターン生の皆さんには、今後のプロジェクトで見積もり精度を上げる努力を続けていってもらいたいと思います。今回は、一部のソフトウェアライセンスの都合上、弊社で公開できなかったのも心残りでしたので、来年度はこの点も考慮して公開できる形を模索し続けたいと思います。
今回、参加者の皆さんからは、来年のインターンシップ参加者へのひとことをいただきました。
「夏休みをだらけずに過ごす良い機会」
「自分がやりたいことを常に考えておいて」
「大学ではできない経験を社会に出る前に体験できる。ぜひ参加して」
「うまい棒は本当に食べ放題」
とのこと。ありがとうございます!
今回のインターンシップには、道外からの参加もありました。夏の北海道に来て2週間過ごしながらの開発は、新鮮な体験となったでしょうか?インターン生にはぜひ弊社に入りたいと言ってくださる方もおり、大変嬉しく思います。
インフィニットループはこれまで培ったノウハウを生かし、今後もインターンシップを開催していきます。
興味のある学生・先生の皆様からのご連絡を、お待ちしております!
お問い合わせはこちらのフォームよりお願いします。

ブログ記事検索

このブログについて

このブログは、札幌市・仙台市の「株式会社インフィニットループ」が運営する技術ブログです。 お仕事で使えるITネタを社員たちが発信します!