pixiv 2016 SUMMER BOOT CAMPに参加してきた

お久しぶりです。8/29~9/2の5日間、ピクシブ株式会社の「pixiv 2016 SUMMER BOOT CAMP」に技術職(エンジニア)として参加してきました。

f:id:lightnet328:20160910000003j:plain

インターンシップ概要

ssl.pixiv.net

応募

応募理由

過去の参加者のまっぴーさんからTwitter経由で聞いたのがこのインターンを知ったきっかけだったと思います。Web アプリを作るのが好きなので、実際に多くのユーザーに使われているサービスを開発している会社で働いてみたかったということが一番の理由です。一番まともに書ける言語がPHPだったこと(pixiv.netはPHP製)、お金がもらえるということも大きな理由でした。

応募した選考コース

技術職の場合、選考フローが通常選考とGitHub選考の2種類あるのですが、GitHubに公開してるリポジトリが1つしか無かったため通常選考で応募しました。

エントリーシートでは自己PRを400字、開発成果を300字くらい書きました。

業務内容

1日目

初日は10時半にオフィスに集合しました。前泊をしていたのですが、腹痛に見舞われ電車を逃してしまい、既に皆さんがプロジェクター前の机に集まっていたので大変申し訳なくなりました。

f:id:lightnet328:20160910000159j:plain

プロジェクター前の机は4台あって、前の2台にインターン生、後ろの2台にメンターさん、社員さんが座っていたのですが、社員さんが若かったので「あれ、インターン生15人のはずだけど30人くらいいる・・・?」みたいなことを思いました。

まず最初にインターン生が自己紹介をしたのですが、年齢は高校生から院生まで様々で出身は関東・関西が半々みたいな感じでした。

その後、業務に関する説明と配属先の説明を受け、インターン生とメンターさんとでお昼ごはんを頂きました。

f:id:lightnet328:20160910000312j:plain

f:id:lightnet328:20160910000318j:plain

お昼ごはんを食べた部屋がおしゃれだったので帰り際に写真を撮ってきました。壁に掛かっているモニターには屏風に描かれていそうな絵が映しだされていて、波が動いていました。他のメンターさんに「壁のモニターってあの絵を映す以外に使ったりしてるんですか」と聞いてみたら「いや、あれ以外を映しているのをみたことがない」と言われました。趣がある。

午後からエンジニアはpixivの開発に携わるにあたって必要な環境を整え、それぞれの配属先の席に移動しました。配属先でメンターさんからチームの業務内容と僕に割り振っていただいたタスクの説明を受けました。

  • デザインの崩れの修正
  • UX向上のための修正
  • コミュニティ性向上のための機能の開発
  • ユーザーをより見つけやすくする機能の開発

割り振っていただいたタスクは上記のようになっていて、プロジェクトのファイル構造や開発からデプロイまでの手順に慣れるために簡単なタスクから取り組みました。

初日は19時から懇親会があったため、デザインの崩れの修正をしてプルリクの作成、レビュー、デプロイをしたところで業務を切り上げました。自分で一から人に使われるようなサービスを考え、作ることも楽しいのですが、既に多くのユーザーを抱えているサービスに自分の書いたコードが取り込まれるのにもやりがいを感じました。

懇親会ではメンターさんやインターン生と今日やったことやインターンに来るまでの流れみたいなことを話し合ってました。特に今回のインターンインターン生がそれぞれのチームに配属され、インターン生同士でコミュニケーションを取る機会が少なかったため初日に懇親会があったのは良かったです。

f:id:lightnet328:20160910000330j:plain

🍣👏

また、今回のインターンでは1日の初めに"本日の予定"メール、終わりに"日報"メールを送る必要があったため懇親会後に日報を作成しました。

初日はこれで終わり。ピクシブ株式会社様に用意していただいたホテルでぽやしみました(感謝)。

2日目

2日目。ピクシブ株式会社の始業時間は10時からなのでよく眠ることが出来ました。大学の講義も毎日10時からが良いです。とはいえ、"本日の予定"メールを始業前には送る必要があるので9時半頃にはオフィスに着いてましたが。

会社にはウォーターサーバー、お茶やミニッツメイドのグレープフルーツジュースなどが入った冷蔵庫、みそしるサーバー(!!)などが用意されています。

f:id:lightnet328:20160910000339j:plain

"本日の予定"メールを送信した後、隣の席のインターン生とみそしるを頂きました💪

f:id:lightnet328:20160910000342j:plain

毎日10時からは"朝会"があります。朝会ではチームメンバーが集まり、挨拶を交わしながらそれぞれのタスクを確認します。

その後、エンジニアとして働くインターン生はピクシブのエンジニアの方々から、幾つかのプロジェクトの存在目的、開発体制や取り組んでいるマネジメントやISUCONについての講義を受けました。その中で、特に印象に残っているのが"割れ窓理論"で、これは"建物の窓が壊れているのを放置すると、誰も注意を払っていないという象徴になり、やがて他の窓もまもなく全て壊される"という環境犯罪学上の理論です。

建物の窓が壊れているのを放置すると、誰も注意を払っていないという象徴になり、やがて他の窓もまもなく全て壊される

割れ窓理論 - Wikipedia

このプロジェクトでは今すぐに修正する必要のない小さなバグや修正が必要な内部の構造などを割れ窓と考え、週の内の半日をチーム全体で割れ窓を修正する日を設けているそうです。僕自身、小さなタスクを後でやろうと言って積み上げることがよくあるので、良い取り組みだと思いました。

ISUCONについての講義では、ISUCONの概要や実際にどこをどのようにチューニングをすればよいのかなどを教わりました。丁度、ISUCON予選日が旅行と被ってしまっているので参加できないのが非常に残念なのですが、Web サービスのチューニングに関しては全く知識が無いため(去年、自作サービスを公開したらApacheのチューニング不足で連日サーバーが落ちて泣いた経験有り)、どこをどういう風に直せばよいのかというのはとても参考になって良かったです。また、@catastuyさんによる『ISUCONとはなにかと ISUCONに対するアプローチ』はQiitaで公開されています。

インターン生向けのISUCON CM - Qiita

講義後のお昼は配属先のチームの皆さんとうどんを食べました。1週間前くらいからなんか肌寒さを感じていたので温かいうどんを食べれて良かったです。

f:id:lightnet328:20160910000347j:plain

午後からは、UX向上のための修正、コミュニティ性向上のための機能の開発に取り組みました。コミュニティ性向上の機能は既存のコードを修正するだけでなく、新しく追加する部分もあり「おお、開発してるぞ!」と感じました。

3日目

3日目には全体会議やランチ会がありました。

全体会議ではその名の通り社員全体で行う会議で、毎週どこかのチームがプロジェクトの現状を他のチームに報告したり、その他全体で共有する事項を伝えます。この会議で具体的な数字や今後の戦略などを共有し、改めてインターン生は自己紹介をしたのですが、会議の内容が内容なだけに、「あれ、僕は社員だったのでは・・・?」と錯覚しました。

その後、他のチームの方々と混ざりながらピクシブ・ランチを頂きました。これは"ランチ会"と呼ばれていて、社内全体でランチを食べます。大きな会社で働いた経験は無いので比較はできないのですが、この"ランチ会"があるからなのか、チーム毎に物理的な仕切りが無かったりするからなのか、ピクシブはチーム間の隔たりが無く誰もが誰とでも話していると感じました。

f:id:lightnet328:20160910000355j:plain

その後は昨日に引き続き、コミュニティ性向上のための機能の開発をしました。開発中にチームの方々と仕様の細部について話し合ったりしたのですが、常にユーザーのことを考え最善を尽くそうという姿勢を感じました。開発に取り組む姿勢として非常に魅力的で、見習いたい、僕も趣味の開発はこういうようにやりたいと思いました。

4日目

4日目はユーザーをより見つけやすくする機能の開発をしました。この機能は"コミュニティ性向上のための機能"と共通部分があり、それと同じ要領でやれば割りと早めに出来ると考えていたのですが、開発中に表示部分で仕様に沿っていない挙動があり思ったより時間がかかってしまいました。具体的に言うとMedia Queriesを使っている部分なんですが、max-width、 min-widthの幅を計算が大変でした。(ここの幅がこうで、デバイスの幅が云々だからなんたら〜みたいなのって大変じゃないですか?僕だけ?)

初日に説明された予定では5日目はスライド作成と書かれていたので、3日目に、"明日中に完成させたい"とつぶやいてたのですが、機能が完成したのは23時半頃で内心「大丈夫かな・・・💦」という感じでした。また、コーディングからデプロイまでにレビューを挟むのでチームの方に遅くまで残ってもらってしまい申し訳なく思いました。ただ、4日目になると、一日の過ごし方が何となくわかってきて集中して開発に取り組めました。

あ、お昼は和食ビュッフェでした。白身魚のフライが美味しかったです。余談ですが、チームの方のお気に入りのお店らしく、Slackのチームのチャンネルには毎日このお店の今日のメニューが流れていて面白かったです。

f:id:lightnet328:20160910000400j:plain

5日目

朝はコンビニでおにぎりを買ってオフィスの机でインターン生何人かと朝食を食べました。技術職の方々と今何してるのかみたいな話をしていた時に総合職の方が「呪文みたいで何言ってるかわからん・・・」と言っていたのが面白かったです。

朝会後からはずっとスライド製作をしていました。大勢の前で発表する機会はこれまでにもそれなりにあったのですが、話すことの取捨選択が苦手でどれも盛り込んでしまったり、スライドの文字が多かったりすることがありました。今回は作成途中で何度かメンターさんにアドバイスを貰うことでわかりやすいスライドを作ることが出来たと思います。

15時半からはインターン生全員で順番に成果発表をしました。技術職の方の発表はメンテナンスだったり、新規機能開発だったりと何をしたのか伝わって来やすかったです(リファクタリングとかをしていた人はViewが無いため発表が大変そうでした)。総合職の方は記事の編集や会員数増加のための取り組みなどをした上で、その成果を数値で表したりしていて自分のやったことが数値で評価されるのはシビアだと感じました。また、質の良い記事を一つ書くにも相当な時間と労力が費やされていることがわかりました。

成果発表後にそれぞれのチームのメンターさんがインターン生にコメントをしていました。僕のメンターさんからは「自分で作った機能を触っている時に「良いですねこれ!」と言っていて、満足していたのでそういうところが良かったと思う。」ということや「今後、作ってもらった機能は長く生きていくと思う。」「結構遅くまで残って働いてることがあって、責任感があってよかった。」というコメントを頂きました。遅くまで残って作業をしていたのは自分がした仕事の出来に満足できていなくて「これで大丈夫かな・・・」と思っていたからなので、そのような講評をいただけて素直に嬉しかったです。

また、BOOTH チームのメンターさんは「課題としてはこれくらいかと思っていても、実際にはそれを作るのに既存のコードを多く呼んだりするので触る量は多い」ということを仰っていて、チームは違うのですが本当にその通りだと思いました。機能を追加するのに既存の関数の依存関係やコーディング規約、というか"これはこういう書き方で統一されているよね"というようなものを把握するのが意外と大変でした。

成果発表が終わった後、19時からはインターン生とメンターさんで打ち上げに行きました。初日の懇親会より打ち解けることができて良かったです。インターン生が順番に感想を言っていく時に「採用してください!」という声が聞こえていたりしました。詳しくは聞いていないのですが本気らしいです(すごい)。僕も僕でメンターさんに「次回も応募したいです。通った時はまたよろしくお願いします。」みたいなこと言ってました。

まとめ

全日程をだらだらと書いてしまいました。すみません。ただ、実際の5日間はこれよりももっと濃くて充実していたものだったと思います。

働いていて良いなと思ったこと、感じたことは、

  • 会社のオフィスと人間関係が明るい・賑やか
  • "サービスを作っている"、"ユーザーが第一"という共通認識を持っている
  • 多くの人に使われていて、自分も使っているサービスを自分で作れる

この3つです。特に多くの人に使われていて自分も使っているサービスの開発に携わるということは恐らくそれほど多くないはずで、その開発に愛と責任を持って取り組めていることがとても良いと思いました。

最後に『pixiv 2016 SUMMER BOOT CAMP』参加前と参加後のツイートを載せておきます。

参加前

参加後

pixiv インターンに行ってみたくなった人へ

もし「pixivのインターンに行ってみたいな、別の視点から詳しく知りたいな」という方がこの記事を読んでくれた時のために、参考になる今年のインターン生の記事などを並べておきたいと思います。

ここからも余談です。これは他チームのメンターさんから聞いた話なのですが、このインターンシップはどうやら新卒採用プロセスのエントリー選考、一次選考、二次選考、三次選考後のインターンシップと似たようなものらしいです。一応インターン中に死ぬことはなかったので自尊心の高まりを感じました。

新卒採用プロセス - ピクシブ株式会社 採用サイト

pixiv 2017 SPRING BOOT CAMPで僕と握手!(僕が受かったら)