任天堂 インターンシップ 2016 に参加してきた。
(最終日の帰る前に記念に『イカよろしく〜』ってやってたのを撮影してもらったのだけど、あんまりそれっぽくならなかったの図)
期間は2016年2月22日(月)~2月26日(金) の5日間で『ネットワーク開発コース』として参加してきた。
サークルの先輩の薦めで応募したのだけど、それよりもなんと言っても、僕がプログラミングを始めるキッカケは確実に任天堂のゲームに触れていたことでゲームに関わる仕事って何があるんだろうと思ったことでプログラマーという仕事があることを知りそこから今に至るのでそういう意味でも、あのベールに包まれた社内に入って実際の社員さんたちの下でコードを書いたり体験が出来るということでかなり高まった感じだった。
『システム開発コース』と同タイミングの開催*1で、合わせて19人だった*2。
以下、諸々書ける範囲*3で様子とか感想を書きます。
実習について
初日は集合後、諸々の注意事項とかあと自己紹介タイムがあった。その後はコースごとに分かれて、僕のいたネットワークの方はOAuthについての解説やワークフローなどの話があって、あと『イカリング』関係の諸々に関する話を聞いた。詳細はアレがアレでアレなんだなぁって感じだった。
参考
https://www.nintendo.co.jp/jobs/keyword/08.html
自分が参加したネットワークコースの参加概要は以下のようになっていたから、まぁRails/JavaでOAuth認証してなんかやるウェブアプリを書くのが課題になるだろうと事前に予想はしてた。
さらに任天堂でOAuthといえば、ニンテンドーネットワークIDだろうし多分それのOAuth環境が開放されるのだろうなぁと思ってたら、その通りの課題だった。
参加者の内訳としては1人だけJavaでそれ以外はみんなRailsでやってた。
基本的には1人1つレギュレーションに沿ったアプリを作って発表するという感じで、開発手法はRedmineを利用したチケット駆動開発でGitHubフローという感じだった。
Railsでomniauthを利用するにあたって、ニンテンドーネットワークID対応のProviderを書いたのだけど、途中でomniauthの変更に全員がドハマリした。
自分は最初の1日半くらいでMUSTの機能を実装したので、あとはReactを導入したり、APIサーバとの通信が諸事情で遅かったりしたので、あーなんかこういう問題ISUCONの本戦*4でやったなぁと思いながら、1人ISUCONをしていた。
1人ISUCON、与えられたマシンのスペックがかなり高かったので、ほぼすべてのデータをオンメモリにするとかそういう雑な感じのことをした。
開発環境ついでで開発環境について(来年はもしかすると変わっているかもしれないけど)言及しておくと、キーボードはWindows+JISキーボード固定で、ネットワークコースは開発用のUbuntu/CentOS環境がVagrantで立ち上がるようになっていたので、基本的にはその上で作業をしていた。dotfilesなどを自分のGitHubから持ってくるのはOKだったので各位dotfilesを持ち込んでいた。僕はMacOSX向けの各種dotfilesをUbuntu用に良い感じにするのが面倒だったので、zshrcのalias群とあとatomの設定だけ持ち込んでvimrcとかは見捨てた。
1人ISUCONしたり、Reactやフロントサイドルーティングとかをやってたら意外と時間消費して、面白機能みたいなのは実装できなかったので、高速にBootstrapとFontAwesome導入して見た目を滑らかにした。
他の人は大体同じような追加機能を作っていたので、まぁ確かにその機能は欲しいよなぁって思った。
僕が参加したネットワークコースは基本的にTAも含めてネットワークシステム部の人々という感じだったので、休憩中やお昼休みなどなどを利用して、任天堂の各種ネットワーク系の話を色々聞くことが出来たのは体験としてかなり良かった。
毎日日報を書くことになっていた。「利用OSSの申請」という項目があって、使ったgemとかnpmモジュールとかミドルウェアを列挙するして名前と配布URLとライセンスを書くというやつ。npmモジュールとかライセンス怪しいのあるから微妙な感じだったが、 https://github.com/davglass/license-checker とかを使ってざっとチェックしてた。
最終日に自分の作ったウェブアプリを実際に画面を見せながらプレゼンするというのがあった。参加者+講師陣を相手にやるというものだった。他の人たちがどういうのを作ってるかは勝手にほかの人の日報を眺めてたからなんとなく知ってたけど、動くの見ると面白い機能とかUIの工夫とか見れてなるほどという感じだった。自分は見た目をシュッとさせたので、あとはDevToolとか使いながらAPIを捌く部分の工夫とかReactの辺りを紹介した。発表、他の人のも見れたりしてよかったけど、せっかく人もいっぱい居たしもう少しフィードバック貰えるとさらに良かったかもと個人的には思った。
実習以外の様子とか
社食が不味いという噂があった*5が、僕らがインターンを行った本社開発棟で食べられるお昼ごはんは結構美味しかった。インターン生にはそことそのエリアにあるカフェで利用できるプリペイドカードが5500円分支給されていたけど、社食が大体600円〜800円くらいだったので、遠方から来てホテルに泊まってる人とかは翌日用の朝ごはんをカフェで買っていた。僕も毎日夕方に食べるようのヨーグルトを買っていた。最終日には各々が最後まで使い切ろうと色々買ってた。僕も最終日だけはハーゲンダッツを買った。
インターン生、歩ける廊下や階段などが制限されていて、1階〜実習室、実習室〜食堂などは基本的に社員の付き添いがあったし、1階〜実習室の移動には他の社員や外部の人などと接触がないようにか非常用のエレベーターを利用していた。
オフィスエリア、廊下はどこも同じような見た目なので油断すると迷う。北側と南側で廊下の床の隅の色が違うとか、階段にそれぞれテーマキャラクターが設定されているので、それらでなんとか判断するという感じだった。ちなみにインターン生が使える階段はドンキーコングだった。
社内の時間を知らせるチャイム音、どこかで聞いたことあるなと思ったら、マリオの水中ステージのBGMだった。
1日3回+昼休みの休憩時間があって、休憩時間はお菓子食べたりしてた。15時前の休憩の時には全社にラジオ体操が放送される時間になってて*6、インターン生+講師陣でラジオ体操してた。
スマートフォンなどは部屋の隅のロッカーに預けるというルールだったので休み時間とかに高速にSlackの未読を消費したりしてた。
事業部見学
インターン生、基本的には実習室以外はお手洗いとか以外出入り禁止なのだけど、水曜日のお昼に事業部見学という時間があってその時間には実際の事業部エリアに入れてもらって、仕事の内容や各所でどういうことをやっているのかという説明を受けたり、室内の様子を眺めたり、質疑応答をしたりした。実際の作業エリアの様子や置いてあるアレやコレやについての質問や直接は関係ないけど気になるアレやコレについての色々と見聞きすることが出来てとても貴重な時間だった。
アレのアレを見せてもらったり、アレのアレを見てたら、アレのアレのアレが出てきておお〜ってなったりとかそういうことがあって、任天堂ファンにはたまらない感じだった。
(アレとかコレが気になる人は来年のインターンなどに参加してください)
選考・面接について
鳥取を散歩してたら電話かかってきて面接の時間が伝えられた。
京都からの電話何って思ったらN社だった
— マジカルペンネくん🍝 (@pastak) 2015年12月18日
面接、人事と1対1だった。質問内容はあんまりテクニカルな内容なくて「今までに一番熱中したことはなんですか?」とか「余暇の時間は何してますか?」とかそういうありきたりな感じだった。
この質問は採用と関係ないんですけど、任天堂って会社は他の会社と比べてどういう位置付けですかって質問されたけど絶対に関係あるやろって思ってた
— マジカルペンネくん🍝 (@pastak) 2015年12月22日
面接時に結果は1月中旬までにお知らせしますと言われていたが、意外と年内にインターン参加決定の連絡が来た。同じタイミングで不合格通知も行われていたようだが、一部の人にはこのタイミングで連絡が行われていなかった。
他の人と情報を交換していると、どうやら最初に参加決定の連絡が来た人たちの返事の期限が1月上旬だったので、多分それで補欠が出たときようの補欠候補の人にはそのタイミングまで連絡がいかなかったっぽい感じだったので、返事が遅くても気長に待ちましょう。
ネットワークコースの参加者の中にはRubyが初めてやRails、ウェブアプリを書くのが初めてという人々がいたが、皆それなりにしっかり動くものを作り上げていてスゴいなぁって思った。
他の参加者に聞いても質問は上に書いたような感じだったっぽくて、僕らも何故このようなメンバーをあの面接とESで集められたのかが不思議だなぁとインターン後にHUBでインターン生たちと話していた。
まとめ
任天堂という会社にはゲームファンとしてのあこがれみたいな気持ちもあったので、その中に入ってコードを書いたり昼食を食べたりという経験が出来たのは個人的にもとてもうれしい体験だった。
久しぶりに人がいっぱいいるインターンに行ったけど、やはりランチとかを一緒に過ごすのは良いですね。特に他のコースの人とも交流出来たりして、普段の興味分野が違う人達との交流もあって良かった。
学びとしては自分が5日間ほぼフルで時間を使ってrails new
から始めるとどの辺りまでウェブアプリを作ることが出来るのかということを把握できたのは良かった。去年、イチからウェブアプリ書くのダルそうだから避けていたけど、意外と出来るということが分かったので今年はもう少し頑張りたいと思った。
周囲の人たち、バリバリのウェブ系っぽい人ほぼ居なくて、ITコンサルになりたい人とか、生物系の人とか居て不思議な環境だった。そんな感じだったけどプログラミングやコンピューティング好きなのは皆変わりなくてやはりそういう話を熱意を持ってぶつけたりし合えるのは良かった。(コンサルになるのは趣味で出来ないけど、ウェブアプリとかを作るのは趣味で出来るからコンサルを仕事にしたいと言ってる人とか居てなるほどそういう発想もあるのかと思った)
任天堂インターン終了記念自撮りです pic.twitter.com/bZ4XVtINlr
— マジカルペンネくん🍝 (@pastak) 2016年2月26日
*1:『システム開発コース』の人たちは僕らの隣の部屋でデバイスドライバを書いていた
*2:元々はそれぞれ10人ずつだったけど、ネットワーク開発コースの人が1人病欠で9人の参加だった
*3:インターン中に知り得た事実情報や講義の内容などを公開してはいけないという誓約書を交わしたのでそれに反しない範囲で書く必要がある
*4:http://isucon.net/archives/45905117.html
*5:https://www.nintendo.co.jp/ir/stock/meeting/130627qa/03.html
*6:https://www.nintendo.co.jp/jobs/interview/2008/job_hisada.html