チームラボ インターンシップに参加してきた

2/27~3/24の26日間、チームラボ株式会社の通年募集のインターンシップにエンジニアとして参加してきました。

f:id:lightnet328:20170404171142j:plain

概要

internship.team-lab.com

応募

応募理由

2ヶ月間の春休み、暇を持て余して毎日午後まで寝ているのが容易に想像できたのでインターンシップに行くことにしました。そこで、春休みに長期間参加できるインターンシップを探していたところ、『チームラボ インターンシップ 通年募集』を見つけたため、応募しました。こう書くと『ノリで』みたいな表現になってしまうんですが、実際は、チームラボの@tksさんが"チームラボの取り組みとしてのメディアアート"と"Maker文化"について本学に来て、熱く語っていたのを聞いて「独特の色を持っていて、キラキラしてる会社で面白そうだなあ」と以前から思っていたとか、部活の先輩がインターンに参加していて自分も行ってみたいなと思っていたことも背景にありました。

エントリーシート

言語・技術的なスキルを選択式で記入し、アピールできるスキルと制作実績について200文字以内、800文字以内で書きました。実際にプロフィール入力などの手順を踏めば、応募フォームは見ることが出来ると思います。

余談ですが、僕が業務として携わった物は細々とした物が多く、制作実績としてアピールしづらい(そもそもしていいのか?と思う)のでこういう時のためにも「いつか作りたいと思い始めてからどれほどの時間が経ったかわからないアプリケーション」を作っておく必要性を感じました。そもそも、本当に作りたければ今すぐにでも作り始めるべきだと思いますが・・・。

業務

初日

f:id:lightnet328:20170404171207j:plain

f:id:lightnet328:20170404171243j:plain

FaceTouchという自社製の受付アプリでお迎え。コミュ障的には知らない人とのやり取りなしに担当の人を呼べるのが良かったです。

f:id:lightnet328:20170404171302j:plain

まず、案内されたのがこの『めもですく』。インターンの説明を受けたり、契約の書類を書いたりした後、メンターさんと配属先のチームのリーダーと顔合わせしました。座ったときから紙だということはわかっていたんですが、担当の方が何の戸惑いも無くデスクにメモし始めた時は理解しつつも、意図せず驚いてしまいました。

f:id:lightnet328:20170404171352j:plain

インターン生にも業務用のパソコンが貸し出されます。上は持っていたMac Book Airとは貸し出されたMac Book Airの図(業務には貸し出されたパソコンのみを使いました)。

チームラボと言えば『メディアアート』が有名だと思いますが、それ以外では受託開発が多いようです。今回のインターンシップでは自社製のCMSを開発しているチームに配属されました。

開発しているCMSの概要はSearch | チームラボ / teamLabのリンクが参考になると思います。

ローカルでCMS動作環境の構築

期間中に与えられたタスクはCMSのデモサイトを開発すること。まずは、動かしてみないとよくわからないというのが正直なところだったので、Vagrantのイメージをダウンロードして、CMSのプロジェクトをマウントして色々設定してローカルにCMSが動作する環境を構築しました。

リモートでCMS開発環境の構築

私とほぼ同じ期間にアルバイトの方が同じチームに入っていて、「CMSのデモサイト開発は2人で進めてね」ということを言われていたので、リモートに開発環境を構築しました。

構築までの手順は、

  • JenkinsサーバーとCMSサーバー(Web + DB)を建てる
  • 両方のサーバーにDockerやaws-cli、JenkinsサーバーにJenkinsを入れる
  • JenkinsサーバーからCMSサーバーにDockerをデプロイする

のようになっていて、レイヤーとして考えると上から順にBootstrapping, Configuration, Orchestrationになっています。

実際には、

  • EC2のインスタンスをメンターさんに建ててもらう
  • Ansibleを導入し、Configurationの一部を自動化
  • Jenkinsからホストに上手くコンテナをデプロイ出来るように頑張る

ということをしました。

Ansibleについては使ったことがあるのですが、DockerやJenkinsには興味を持ちながらも使ったことがなく、そもそもAnsibleとDockerをどう使い分けるのかすらよくわかっていなかったため、Dockerを基礎から勉強し、AnsibleとDockerとJenkinsを組み合わせて実際のプロダクトのためのデプロイ環境を構築できたのはとても良い経験になりました。

CMSのデモサイトの開発

実際に開発したデモサイトは見てもらったほうが良いと思うのでスクリーンショットを載せておきます。

f:id:lightnet328:20170404171422p:plain

f:id:lightnet328:20170404171431p:plain

CMSのコアに一通りのロジックが入っていて、既存のサイトでそれが使われていたので、既存サイトを参考にすることでViewを書くことだけに専念できました。

デザインに若干の没個性を感じるので、デモサイトにしてももう少し良い感じのデザインに出来ればよかったのですが・・・。

CMS開発業務の補助アプリケーションの開発

思ったより早くタスクが終わったので、業務補助のためのアプリケーションを開発しました。内容は説明しづらいので省きますが、Lumen + Vue.jsでフロント側にはルーティングも無い小さなSPAを作りました。

習熟度が低いので大したことは言えないのですがやっぱりVue.jsいいなという感じです。ただ、バックエンドのLumenに特に不満は無いのですが、フレームワークの恩恵を多く受けられていないと思ったので今思うと言語が変わるけど、より小さいFlaskでも良かったかなと思っています。

CMSのモジュールの機能追加と修正

補助アプリケーションの開発も17日目に終わってしまったので、小さい機能の開発をしました。

最終日

メンターさんやチームリーダーと振り返り会をしたり、他のインターン生の発表をみたりしました。

f:id:lightnet328:20170404171500j:plain

振り返り会をした場所。この階は長机に色々なイラストが描かれていて、色々な人がオープンな会議をしています。実際に、振り返り中にも「おっ、やってるね」みたいな感じで見てくれる人が増えていって良い意味で軽い雰囲気でした。

f:id:lightnet328:20170404171520j:plain

f:id:lightnet328:20170404171538j:plain

これはなんか動く壁紙です。金の雲の壁紙は天気や空間の色が現実のどこかの場所と同期しているということを教えてもらったんですが、詳しいことは忘れました。かっこよかったです。

上記の壁紙について、人事の方にメールでご説明を頂いたので追記します。 この壁紙は棚田をモチーフにした作品で、1000年以上変わらない風景の棚田がある、大分県豊後高田市から依頼を受けて作ったものだそうです。 また、人の歩いている軌跡などからUnityでリアルタイムに映像を作っているため、いつ見ても違う眺めを見ることが出来ます。 その他にも今日の日付、時間、豊後高田市の棚田の天気・風の強さの情報を取っていて、夕方には夕方の景色、夜には夜の景色になります。 夏には稲が生え、風の情報によって揺らぐそうです。また、今は丁度、桜が咲き散っているとのことでした。

一時見るだけでは作り込みに気がつくことができなかったのですが、多くの情報を元に映像をリアルタイムで生成する技術と(こう評価するのは上からのようで失礼ですが、)作品に粗を感じさせない完成度は「流石、チームラボ」だと思いました。 (追記: 2017-04-11)

f:id:lightnet328:20170404171609j:plain

他のインターン生の発表会の打ち上げの様子。寿司が多くて財力を感じた。他のインターン生はインタラクティブの分野で働いていて、HoloLensやUnityを使ってインタラクティブな作品の制作をしているようでした。インタラクティブな作品の良いところはその技術に詳しくなくても見る人が楽しめることで、それが目的だと思うんですが、インフラをこうしてこうしましたみたいな話はわかる人しかわからないと思うので、何が言いたいかというと「インターン同期の発表がすごかったし楽しかった。多くの人が楽しめるコンテンツを作れるのは羨ましい。」ということです。

生活

オフィスから6駅の場所のホテルの手配とオフィス付近の会社の寮の貸出をしていただき、前半はホテル、後半は会社の寮で生活していました。

今まで1週間のインターンやイベントへの参加、Twitterのオタクと会うなどの目的で東京に行く機会は割りと多くありましたが、やはり"住む"感覚ではなかったため、今回"東京に住んだなあ"みたいな感覚を得られたのがよかったです。

チームラボ インターンシップ通年募集 / teamLabのページにも体験者の一日が載っていますが、自分の一日もまとめておきます。

時間 行動 説明
07:00 ~ 10:00 起床 最初は7時には目が覚めていたのに順調に起床時刻が遅くなっていきます
10:00 出勤 前日提出した日報を見て、今日のタスクを確認
10:30 仕事 やっていきます
11:00 ~ 13:00 昼食 お腹が空いたら同じチームのアルバイトの方と1時間程度のお昼休憩
13:00 仕事 食後は眠くなるので気合でなんとかします
18:00 会議 たまに定例のミーティングやコードレビュー会に参加しました
19:00 ~ 21:00 日報 タスクに区切りがつき次第、メールで報告します

一日のおおまかな流れはこんな感じです。

前述の通り、前半はホテルで生活していたので遅くとも9時くらいには起きていたのですが、後半は徒歩3分の会社寮に住んでいたので10時間際になって起きて準備してスッっと出社みたいなことになってしまっていました。

最初に業務時間は10:00~19:00ということで説明を受けていました。しかし、別に長くやっても構わないということだったので、始めは、仕事のやっていき方と切り上げ方がわからなかったため、満足できるまでやろうとして帰りが遅くなってしまい(それでも22時とか)、週の中頃から疲れを感じてしまったので、それからは19時頃を目安に切り上げるようにしました。最初の方で慣れていなかったというのもあると思いますが、遅くまで残ってもあんまりいいこと無いことを実感しました。今後は運動をしなければ体力も落ちていくと思うので・・・。

帰る前には今日の予定・今日やったこと・明日やることを日報としてメールで送信します。場合によっては手間と感じるかもしれませんが、僕はやること・やったことを整理する機会として使えたので良かったです。

また、小学生から今の今まで、電車で通学(通勤)するといった体験をすることがなく、学校まで徒歩・自転車で20分圏内に住んでいたので電車通勤が新鮮でした。電車で6駅と言えばかなり近いと思うんですが、「ホテルから駅まで歩いて、電車を少し待って、駅からオフィスまで歩く」と意外と時間がかかるということに気が付きました。インターン前は10時出社ってゆっくりしてるんだなあと思っていましたが、朝ごはんをしっかり食べることも考えたら丁度いいくらいだと思います。

他にも、平日に『RustのLT会! Rust入門者の集い #2』に参加したりしました。参加渋谷で19時からだったので18時頃には上がる必要があり、早退したいという旨をメンターさんに伝えたら快諾いただき、圧倒的に感謝しました。平日の夜に開催されるイベントって結構あるので、業務後にそういうのに参加出来るのは嬉しかったです。ちなみに、働いた後にまた2時間くらい人の話を聞いたらめっちゃ疲れたし、話の内容が入門詐欺で僕には2割くらいしかわからなかったです。Rust熱そうなので時間があったら勉強したいですね(投げやり)。後は、ReactやVue.js、Goなどのイベントもあったのですが、参加申し込みするのが遅すぎて全部埋まってました。残念。

食事

水道橋で美味しいランチをたくさん食べたので、全部載せたいのですが無限にスクロールしないといけない記事になってしまうので少しだけ載せることにします。

f:id:lightnet328:20170404171632j:plain 3月6日 志苑 志苑 本店 (シエン) - 水道橋/担々麺 [食べログ]

1000円でこんなに豪華なランチが出てきてびっくりした回。青椒肉絲が好きなので大満足。杏仁豆腐が中華料理屋で出てくる杏仁豆腐で「中華料理屋で出てくる杏仁豆腐だ!」と思った(貧弱な語彙)。

f:id:lightnet328:20170404171653j:plain 3月10日 ミートバル ACE ミートバル ACE (エース) - 本郷三丁目/ステーキ [食べログ]

東京滞在中にハンバーグは結構食べたんですが、ここのハンバーグはお肉が柔らかくてとても美味しかった。ソースはもちろんおろしポン酢。写真、肉汁が溢れてて美味しそう。また行きたい。

f:id:lightnet328:20170404171718j:plain 3月13日 ソウルフード インディア ソウルフードインディア 水道橋店 (Soul Food India) - 水道橋/インド料理 [食べログ]

初めてインドカレー屋でナンを食べた回。ナンがお皿からはみ出てる。というか机から若干落ちそう。2種のカレーと焼きたてのナンを堪能しました。ちなみに、ナンが無くなると店員さんがおかわりのナンを配ってくれます。配ってくれるナンもそれなりに大きい。絶対に満腹になる。

夜に通ると店頭に置いてあるラジカセからインドのよくわからない音楽が流れててよくわからなくなる。

f:id:lightnet328:20170404171734j:plain 3月15日 神保町食肉センター 神保町食肉センター - 神保町/焼肉 [食べログ]

焼肉ランチの有名店らしいです。2回行ってるんですが、最初は行列を見て諦め、2回目は開店凸をするも行列に挑んで45分待ちの結果でした。しかし、1000円未満で6種類のお肉とご飯と味噌汁が食べ飲み放題なのでそれを差し引いても最高。ランチに焼肉したの多分初めてで興奮を隠しきれなかった(実際は隠した)。

暴言を言うと、石川には寿司屋とマックとサブウェイと松屋とラーメン屋しか無い上にラーメン屋は大体行ったしマックとサブウェイは飽きたので、水道橋とその近くの神保町には良い飲食店が多くて控えめに言って最高でした。実際に働いたら、毎日色々なお店に行けるかといったらそうでもないと思いますが、飲食店が多いに越したことはないと思います。(石川に寿司屋とマックとサブウェイと松屋とラーメン屋しか無いということは無いと思うのでもう少しお店探しします。)

まとめ

まとめると、

  • エンジニアとしての1ヶ月を楽しめた
  • 新しいことを勉強・実践できた
  • チームラボと東京の生活が楽しかった
  • 水道橋・神保町近辺で美味しい食べ物を食べた

ということで、1ヶ月間とても充実していました。

会社の雰囲気としては、とても自由でしたが、その分自分でやっていく力が求められていると感じました。春休みの終わりも近いですが、寝ていただけではなく、チームラボでやっていくことができたので心身ともに健康です。

最終日、CTOの田村さんとお話する機会があり、「チームラボは会社が大きいので、出来たら他のチームでも働いてみたい。」ということを伝えたら「インターンとアルバイト、どちらでも良いから来てね」ということを言っていただけたので、時間があればまた行きたいと思います。

最後になりますが、インターン中にお世話になった皆様、一緒にご飯に行ってくれたTwitterのオタク達に感謝したいと思います。本当にありがとうございました!