チームラボインターン

大変今更なのですが、2月の1日から15日まで、チームラボ株式会社インターンシップをさせていただきました。そのときの出来事や自分の思ったことを、思い出せる限りで記してみたいと思います。

昨年秋に@tksさんに声をかけていただき、適当な履歴書とスキルシートをメール送付、それからCTOの田村さんと@dolpenさんとの面談を行いました。大学院でも1年生はまだ授業があるため、実際は長期休みが始まる2月から。また、就活もあるので短めに2週間とさせてもらったので、課題に取り組むという形になりました。なお、インターンというと、何人かがインターン用のプログラムをこなす、いわゆる「お仕事体験」みたいなものも多いかと思いますが、私の場合は個人プレーでした。

初日

人事の方も田村さんもたまたま不在で、メンターになってくれたらしい@dolpenさんから課題説明を受けることになったのですが、
d「かなりチャレンジングな課題です」
私「はい!」
d「Node.jsでチャットサーバを作ります」
私の頭に色々なものが駆け巡りました。(のーど・・・JavaScriptの何かだっけ・・・JavaScript書いたことないけど大丈夫か?そもそもサーバとかチャットって、つまり通信するんだよな・・・ポートとかパケットとか、なんか名前は聞いたことあるけど・・・)でもこれは、インターンの課題、なのです。別に私ができるとわかっていることをやりにきたわけでは決してないのです。だからここで「できません」と言ってもこの場合意味がない、と思ったのです。
私「はい!」
d「チャットっていうか、メッセンジャーみたいなものみたい。任意のユーザを選んで、1対1での会話ができるようにって感じかなぁ」
私「はい!」
d「で、データベースにはredisっていうNoSQLを使います」
(NoSQL・・・そもそもSQLすらよくわかってないのに・・・それがNoってどんな状態だよ・・・)でも。
私「はい!」
d「で、仕様書を書いた方がいいと思うんだけど、田村さんいないから・・・うーん・・・とりあえず環境構築から始めましょう」
案内されたデスクに置かれた貸し出し用のDELLのノートパソコン。OSはWindows7。「node.js」でググって、Windows用のインストーラを使う。あとで聞いた話だと、nodeをWinで扱うのは色々と面倒らしいが。サンプルを動かして、そのソースを見て、を繰り返す。結局初日は特に指示もなく、これで終了した。仕様書も、明日以降ということにされた。

始終頭に浮かんできていた「これでいいのか?」が積もっていき、居心地が悪かった。こんな、ググって調べながらのアプリケーション制作なんて、家でもできるじゃないかって、初日から早速嫌気がさした。

だが、ただでは転ばぬ。作業だけではなく、さまざまな気づきもあり、また心がけも生まれたのです。

  • 自主的に進捗や判明している範囲での作業計画の報告を行おう、そのために作業をこまめに記録しよう(特に失敗した軌跡は詳細にしておき後でアドバイスが得られるように)
  • 他のプロジェクトの仕事の進め方を一日中間近で見ることができるということは、ここにいないとできないことだ
  • 仕様書は書き方のフォーマットがあるかもしれないけど、きっといきなり書くよりは何かしら構想があった方がいいだろうから、現時点で自分が想定するシステムについての機能一覧、画面遷移やユーザシナリオをノートに書いておこう

翌日

やはり田村さんには会えなかったのですが、仕様書を書くことに。フォーマットは「適当」と言われました。なんだ適当な仕様書って・・・と思いながら、自分が昨日ノートに書きながら想定していたシステムの機能一覧、必要なページとその役割、いくつかのユーザシナリオをテキストでまとめました。しかしどうやらこれでよかったみたいで、この仕様書は中間発表の際に田村さんに見せたときもわりと好感触でした。

しかし、やはり要件とうか、需要がわからないと動きにくい。今回のようなメッセンジャーの場合、果たして友達とのやりとりを行うものなのか、それとも会議録みたいに使うのか、それで機能の作り方も全然違ってくると思うのです。ちなみにこの時点では「なんとなくメールを打つほどでもないような、待ち合わせ決めとかに使う」ような感じを想定することにしました。

結局インターン中は田村さんとはほとんど話せず、だからこそ開発におけるコミュニケーションの大切さを思い知ったというか、やっぱり何が必要とされているのかっていうのを、マネージャーなりお客さんなりと、共有したいですね。じゃないとなんだかモチベーションが宙吊りになってしまいます。

体調管理と生活リズム

私はときどき貧血みたいなのを起こして倒れてしまうことがあったりで絶賛通院中なのですが、当初、そんな私が果たして朝から晩まで二週間ちゃんと稼動できるのかどうかがとても心配でした。でもまぁ、だめだったらだめだったで仕方ない、でもできるだけのことはしよう、と。まず夜はあまり残らないですぐ帰ろう、それが許されないような空気だったらそもそも私はそこで働けないんだろうから気にしてもしょうがないだろう、と。

家も遠いので定時に来るとなると毎朝7時起きなのですが、そのために早寝するようになり、おかげで大分生活リズムが正されました。

作業中の休憩

何故か初日無駄に体に疲れを感じてしまったので、それを改善しようと、意識的に休憩をいれるようにしました。周りがずっと作業しているように見えるからなかなかタイミングがつかめないけど、時計を見て「いま13:30だから15:00前くらいにコーヒーいれにいこう」って自分で決めたりとか。

課題の進め方

「redisが繋がらない!」と思ったらnode用のredisのパッケージをとってきただけでredis本体をインストールしてなかったり、「クッキーとれない!」と思ったらそもそもセッション管理をしてなかったりと、「そこが抜けてるんかい」って感じのコケ方をよくしていました。

あと、gitでソース管理してみたり。過去のコミットを参照することはあまりなかったですが、コミットを意識すると、一度に色々なところをいじってしまったりということがなく、ちゃんと手順を追った実装を自然と心がけることができますね。

それから本は全く読まず、とにかくググりました。しかしnode周辺はバージョンアップがかなり頻繁にされているので、数ヶ月前のブログ記事とかほぼアテになりませんし、確かなものは公式のドキュメントだけでした。

・・・進め方って書きましたが、どれも私が勝手にしたことで、まぁ普段のコーディングと同じノリで作業してたってだけです。

このあたりの技術的な話はまた別の機会でしたいなと思います。

情報公開

インターン中の情報をどこまで外に出していいのかっての、何も言われなかったので、自分から聞いたのですが、「ないんじゃない?プロジェクトの内容はお客さんに迷惑がかかるからだめだし、あと写真撮るときに社員のデスクが写っちゃまずいかな。それくらいだよ」とのことでした。なのでいつもと同じノリでtwitterしながら過ごしてました。

身近で社内の一日を見て

今まで会社に見学に来たことはあったけれど、実際にずっとプロジェクトの様子を見ていたわけではないので、それが観測できることはインターンのメリットだなと思いました。普通に社員さんたちと同じ場所に座っていたので、こまめなミーティングやお互いの声かけ、チケットの投げ合い(?)、電話対応など、全てが私には新鮮でした。

ちょうど私の席の周辺はプロジェクトが色んな意味でHotなことになっていたので、大変そうなところに来てしまって申し訳ないなとも思い、たとえ放置されても、むしろ放っておけないようなインターン生じゃ多分だめなんだし、それはよいことだ、と考えることにしました。

また、Hotなプロジェクトでも、決して必要以上の負荷をかけようとせず、息抜きもそれなりにしつつで、そこは私が抱いていたデスマの印象ほどひどくはなかったですね。

あと思ったより静かで、皆さん集中してるんですね、なんて言ったけれど、社内チャットってのがあるらしくて、わりとそこで会話することが多いみたい。ただ最近になって、インターンには社内チャットの利用をさせないという方針になったらしく、別にそれはいいんですけど、それが共有されてないから、社内チャットで言ってみたら、とか、社内チャットで言ってたじゃん、みたいな態度をされてしまうのは悲しいですね。

お昼ごはん

毎日誰かしらにお昼に連れて行ってもらいました。私はおなかがすくのが早いので12時になるとそわそわしだしてしまいます。今日はどこへ行けるかなぁ、食べているときもどんなお話が聞けるんだろうって、すごく楽しみでした。飲食店に入ると、周りはスーツや作業服を着た人ばかりで、これがいわゆる社会人の昼休みってやつか、って感じでした。

@tksさんの気遣い

@tksさんは初日にお湯の存在とかを含めたTipsをわざわざメールで送ってくれました。本当にお世話になったというか、twitterに「マドラーがない!」って言ったら場所を教えてくれたり、帰宅時間を気にかけてくれたり、twitterに「花粉が~」って言ったら窓を閉めてくれたり、他の社員さんに私のことを紹介してくれたり、よくお菓子をわけてくれたり・・・あの気遣いとそれを実施する優しさには感謝してもしきれません。

引越し

途中、オフィスの移転がありました。その新オフィスの特徴、公式サイトに「業務開始日に完成していない」というものがまず挙げられていました。そんなわけで初日来たときには「水はいいからまずインターネットだ!人間が死ぬ!」と何人かで騒ぎながらまずLANを配備し、それから水がないだの暖房がつかないだのやってました。そういえば結局それから最終日までずっと私の席の背後に大量の木材が積み上げられていたけれど、あれはなんだったのだろう。

競技プログラミング部

社内にレッドコーダーがいるという話で盛り上がり、チームラボ競技プログラミング部の発足がありました。そのレッドコーダーさんが、競技プログラミングとはなんぞや、というお話をしたり、AOJを使ってHello Worldのライブコーディングをして下さいました。プログラミングはやるけど競技プログラミングにはノータッチ、という人向けでしたね。

ものづくりのモチベーション

中間発表の際に、「なぜredisを使っているの?」と聞かれ、「そう指定されたからです」と答えたのですが、それに関して「言われたからやるっていうんじゃなくて、自分が何をやりたいかってのをちゃんと決めないといけないんだから、やりづらかったらそんな指示とか無視していいから」と言われました。それもそうなんですけど、私がやりたいのは多分、「作りたいものを考えて作る」ではなく、「求められているものに必要な機能を考えて作る」なのです。だから、チームラボみたいに、お客さんの求めているものがあって、それを解決するために何ができるかを一緒に考えて、っていう仕事のやり方に魅力を感じたのです。

作りたいもの作れって言われたらそもそもメッセンジャーとか別に私の作りたいものではないし、効率が悪いならそれはそれで「効率が悪かった」という結果が出ただけでもそれは成果だと思うし、これが完成を目的にした業務だったら話は別かもですが、あくまでこれは「インターンの課題」としてとらえようと思ったのです。

なお、インターン終了後に田村さんから聞いた話だと、「パッケージの一部に組み込みたいと思っていたものの調査」がこの課題の発端のようでした。

女帝祭

インターン最終日は、課題についての最終発表だったのですが、@tksさんが「せっかくだからフォロワーでチームラボに興味のある人とか呼んだら」と提案してくれました。そして当日はなんと私の発表&@tksさんの会社紹介セット、通称「女帝祭」が開催されることに。これ、社会人から学生まで平日の夜なのに外部から10名もの方が集まって下さって・・・本当にはわわでした。

ちなみにその際のスライドはこちらです。制作物のソースはここ(Github)で公開していて、インターン中の作業分がfirst commitになっています。

結末

さて、一応課題は最低限こなすことができたのですが、だからなんだという話。これからが就活本番です。チームラボもやっぱり行きたいという気持ちは変わらなかったので、もちろん選考を受けるつもりでした。インターン中、そこまで悪い印象は与えなかったはずですが、なんでも言うことを聞いていたわけでもないので、もしかしたら「こいつ合わないわ~」と思われていたこともあったかもしれません。でも、それはそれ。私は私らしくいることができたのだから、いいのです。

まぁひとまず打ち上げだな、そう思いながら自席の片付けをしていたとき・・・
田村さん「山下さん!」
私「あっはい」
田村さん「報告があります!」
私「はい?」
田村さん「内定です!」

えっ

私「やったー!就活オワター!」
思わず席を立ち上がり両手を挙げる私。
他の席の社員さんからの拍手。田村さんと握手をし、記念撮影。
そしてtwitterに報告。鳴り止まぬおめでとうリプライ。ありがとうありがとう。

後に人事の方から改めて連絡が来ました。課題に対して想像以上のアウトプットが出せていたらしいこと、多くの社員さまが私と働きたいとおっしゃって下さったこと、私のチームラボへの愛がひしひしと伝わってきたこと・・・そんなもろもろを踏まえた上での内定だと。なんという「これでよかったんだ」感。本当にありがたい。

ただ、就活は3月いっぱいまでやるつもりだと周囲に宣言していたので、そこはそのままでいきたいという旨をその場で伝えました。理由はまず、あとで「あぁ他のところも受ければよかったのかなぁ」とか思いたくないですし、一社だけでなく、色々なところを見てみたいなぁという気持ち。それと、昨今の就活の前倒しが私自身気に食わないという気持ち。早く始まって早く終わるんならいいんだけど、結局院生の場合だともう二年間のほとんどが就活になっちゃうとか、それは本末転倒すぎでしょう。まだ他社が面接とか始めてない時期にもらった内定で就活が終わるという現象が起こることで、「えっなんか先に内定出したところがあるからそっちに決まっちゃうのみんな・・・うちも早めなきゃじゃん・・・」とかなっちゃうんだと、ますます就活とやらの前倒しが起きるじゃないですか。ってまぁ私一人がどうしたところで全体がどうなるわけではないですが、少なくとも私は私の納得のいく行動をしたいのです。損かもだけど。

ちなみにこの女帝祭から内定までの流れはこちらにまとまっております。

謝辞

改めまして、インターン中お世話になった皆さまに御礼申し上げます。

紹介やその他面倒をみて下さった@tksさん、メンターの@dolpenさん、人事の藤井さん、CTOの田村さんをはじめ、仲良くしてくださった社員の皆さん、また女帝祭にいらして下さった皆さん、twitterで助言を下さった皆さん、直接私に声をかけることはなくとも見守ってくださった皆さん、あと絶対これ読んでないけど、夜にはおいしくて栄養バランスのとれた最高の食事を用意してくれていたお母さん。

本当に、ありがとうございました!