理工系インターンシップでは、「ゲーム開発コース」「システム開発コース」「ネットワーク開発コース」の3コースを実施しました。現場で働くエンジニアによる講義と座談会を通じ、任天堂のソフトウェア開発における仕事内容や、その魅力について学んでいただきました。それぞれのコースの内容をご紹介します。オデッセイ』チームのエンジニア5名が講師を務めました。担当したスタッフです。お客様が「面白い!」「気持ちいい!」と感じられるような娯楽体験を提供するため、各々がそれぞれの業務分野でどのような役割を果たし、どんなところにやりがいを感じているのか、講義形式で解説しました。オブジェクト敵やアイテムなどのオブジェクトの制作が始まるきっかけと、より面白くするための制作サイクルの説明のあと、エンジニアが自主的にアイデアを提案して形にした事例や、チームのなかで実際にプレイしてみたり、話しあったりしながら、試行錯誤を繰り返す過程とその魅力について語りました。グラフィック「遊びのためのグラフィック」というテーマで、製品版と開発中の画面を見比べながら、ゲーム開発におけるグラフィック制作の役割や実例と、その魅力を紹介しました。サウンドゲーム開発におけるサウンドのなかでも、サウンドプログラムにフォーカスし、実際の開発事例をもとに、効果音が果たす役割や、ゲームの状況に応じて細やかに音を変化させることの重要性を解説しました。シーケンス制作ゲームの一連の流れであるシーケンスについて、具体的な仕事内容や重要性を紹介。ゲームを効率よく開発するための環境を整える仕事です。オデッセイ』で制作したツールや実際の業務例にもとづいて、自分が主体的に進めた改善が、チーム全体の大きな貢献につながる喜びや、講師が実際の仕事を通じて得た、改善の種を見つけるコツなども紹介しました。ここで紹介した仕事内容はごく一部ではありますが、講義を通じてゲーム開発の面白さや難しさ、やりがいを参加者の皆さんに知っていただくことができたように思います。システム開発コースシステム開発コースでは、任天堂のゲーム機プラットフォームを支えるシステムソフト開発部門の業務について、講義を行いました。システムソフト開発部門では、OS(※1)やデバイスドライバー、ファームウェアの開発、さらにゲーム開発者のための開発環境であるSDK(※2)やミドルウェアの開発など、幅広い領域を担当しています。そこにどのような魅力や困難があるのかについて、現場でシステム開発を行っているエンジニアが語りました。任天堂は魅力的なゲーム機プラットフォームを提供するために、OSを自社開発しています。ゲームの価値をどう高めるのか、任天堂のOSに必要なものについて製品の仕様が固まっていない段階から検討を重ね、開発を進めていきます。困難やチャレンジに直面しますが、自分たちが作った独自のプラットフォーム上で世界中の人がゲームを開発したり遊んだりするのを見られるのは、やはり“任天堂ならでは”ではないでしょうか。そのような体験が、何よりもエンジニアとしてのやりがいにつながっています。ゲーム開発に必要なSDKも並行して開発しています。次世代ハードに搭載した新機能が使いにくいと、それを活かしたソフトが生まれず、ハードの魅力を活かしきることができません。前例のない機能をいかに簡単に使えるようにするか、という課題へのチャレンジも任天堂のシステム開発の醍醐味と言えます。講義に加えて、参加者の皆さんには、実際の開発事例として『モンスターボールPlus』の開発におけるシステムソフトの役割を紹介。製品や試作品にも触っていただきながら、具体的な仕事のイメージやその魅力に接していただきました。チャレンジングな課題に立ち向かい、「世界中のお客様に遊ばれる」「これまでにない新しいゲームが生まれる」プラットフォームの開発に携わる仕事のやりがいを、存分に感じていただけたのではないでしょうか。システムソフトウェアの一種で、基本的・中核的な位置づけにあるもの。特定のシステムで動作するアプリケーションを開発するためのツールを指す。ネットワーク開発コースネットワーク開発コースでは、2018年12月に1day、2019年2月に2daysのコースを実施しました。2018年12月(1dayコース)1dayコースでは、まず、ネットワークシステム開発部門での現場のエンジニアの働きかたや、どのような技術を利用して開発しているのかを紹介しました。任天堂のネットワークシステムの多くは、自社内で5〜8人程度の少人数チームで開発されます。利用技術はチーム内で検討・選定を行い、新しい技術も積極的に採用するため、比較的自由度の高い開発ができるのも、この部門の仕事における魅力のひとつです。Online』を支える技術として「セーブデータお預かり」の仕組みについて取り挙げました。Online』で利用できるサービスのひとつで、インターネットを通してお客様のセーブデータを自動的にバックアップする機能です。この仕組みを提供するためには、「セーブデータが消えない・壊れないために安全に管理する仕組み」「高負荷なバックアップ作業が世界中から同時に行われたときの負荷対策の仕組み」などを考慮する必要があります。これらの問題に対して、現場のエンジニアがどのように取り組み、解決したのかを解説しました。任天堂で扱うネットワークシステムの規模は非常に大きく、日々の業務においてさまざまな技術的な挑戦があることを垣間見ていただけたのではないでしょうか。コースでの主な取り組みは、データベース設計のグループワークです。ような機能が追加されたら......」などのお題を参加者の皆さんに提示し、そのお題を実現するためのデータベース設計をグループで議論し、最終日に発表してもらう、というものです。データベース設計はネットワークシステム開発で最重要の工程であり、その良し悪しがネットワークシステムの品質に直結します。このデータベース設計を通して、任天堂のネットワークエンジニアが普段どういう業務を行っているのか、どういう点に注意して取り組んでいるのかを体感的に知っていただくことをねらいました。グループワーク実施にあたっては、事前にデータベース設計の基本的な講義も行いました。途中には任天堂に関連したテーマの演習問題も交え、データベース設計の基本を改めて確認していただきます。グループワークでは3人1組のグループを作り、それぞれのグループにエンジニア1人が先輩社員として参加。先輩社員は、設計改善のヒントとして、アクセス急増時のデータベースの負荷対策や、長期運用によってデータ量が増加した時のパフォーマンス対策など、現場で働くエンジニアならではの視点でアドバイスを行いました。グループワークを通して、ネットワークシステム開発におけるデータベース設計の難しさや技術的な挑戦を存分に感じていただけたようです。講義・ワークショップのあとは3コースとも、参加者の皆さんと社員で座談会を開きました。ついての質問、社員の好きなゲームは何かなど、どのコースも会話や質問が途絶えず、大いに交流を深めていただくことができました。