pixiv insideは移転しました! ≫ http://inside.pixiv.blog/

pixivの「本物のソースコード」と戦う2日間。コミッターは全員学生!〜エンジニア職インターンシップ開催レポート

こんにちは、エンジニアの @minamitary です。

ピクシブ冬インターン『pixiv開発のbugリストからの脱出! 2015』を開催しました。

inside.pixiv.net

12月12日(土)・13日(日)と二日に渡って行った短期集中型のインターンで、世界最大級のイラストSNS"pixiv"の本物のソースコードに触れ、実際に起きているバグを修正するという内容です。

事前の選考をクリアした上で今回参加してもらった12名の学生には、普段我々が行っている業務とほぼ同様の体験をしてもらいました。ピクシブ社員のエンジニア5名がメンターとしてサポートに入り、いくつかの成果物は本番環境にデプロイされ、現在pixivの一部として動いています

結果として、インターン生達にも強いやりがいを感じてもらえたようです。今回はそんなインターンシップの様子を詳しくお届けしたいと思います!

どのようなインターンシップだったか

書類選考、面接無しに、技術力のみで選考しました。具体的には、GitHubを利用して選考課題の回答をPull Requestで送ってもらう形式です。

github.com

多数の脆弱性を含む架空のWebアプリケーションを作成し、そのソースコードをGitHub上で公開しました。参加希望者はエントリーした後、ここに脆弱性修正のPull Requestを送れば応募完了です(難易度の高い課題であったにもかかわらず、多数の応募がありました!)。

選考の結果、全国から12名の学生がインターン生としてピクシブオフィスに集まってくれました。

f:id:minamitary:20151224123231p:plain

そんなインターン生達のために、我々5名のメンター陣が用意したのは以下の3つのものです。

  • pixivのソースコード丸ごとのスナップショットが置かれたプライベートリポジトリ
  • 上記に含まれるバグのissueリスト
  • pixivを簡単に動かすことのできる開発環境

詳細については後述しますが、インターン生達は難易度の設定されたissueとpixivのソースコードとを見比べ、直せそうなところから手をつけていってもらいました。

  1. バグを修正できたと思ったらPull Request作成
  2. メンターがPull Requestをレビューし、必要に応じてコメントでフィードバック
  3. フィードバックを元に再度作業

このような流れで作業が進み、メンターが「これならマージしても問題ない」と判断したら脱出完了です。

f:id:minamitary:20151224111114p:plain

我々が用意したissueは13個。インターン生達にはそれらと向き合い、より多くの脱出を目指してがんばってもらうという形です。

12人皆それぞれ健闘し、1日目の夕方頃には全員が初脱出を果たしました。issueの中には2, 3行書き足すだけで解決するような簡単なものもありましたが、インターン生の目の前にあるのはpixivの巨大なコードベースです。こちらが予想していたよりも早いペースで進行していきました。

高難易度のissueには2日間では到底解決できないものも含まれていましたが、中にはそれでも食らいついて調査を行い、最後には解決手段を報告してくれるインターン生もいました。

ソースコードも生、バグも生

さて、「実際のシステムで起きている本物の課題を解決していく」というのが今回のテーマです。

スナップショットは前日の昼12時頃に取ったもので、インターン生の手元にあるソースコードはインターン当日に稼働しているpixivとほぼ同じもの

バグも前日に洗い出してリストアップしたので、インターン当日にも同様のバグが本番環境で発生しているという状況でした。

開発環境も、普段社員が使っているものとほぼ同等のものです。なぜそんなものをサクッと提供できるのかについては、以下の記事に詳しく書かれているのでそちらを参照してください。

inside.pixiv.net

実際の現場さながらの空気感

そのような環境下であったため、結果としてインターン生達には、実際の開発現場さながらの空気を体験してもらうことができたのではないでしょうか。

用意したissueはあえてインターンシップ前日に用意したこともあって情報量も少なく、当日はインターン生達はおろかメンター陣も含め、手探りで進むほかありませんでした。

そんな中で、調査の結果別の箇所にも修正の必要があることが判明したり、解決への手順が書き込まれていったりと、issueの内容が次第に具体的になっていく様子はまさしく「実際の現場」そのものだったと思います。

issueの内容や対応方法について、メンター陣やインターン生との間で議論が始まるという一幕もありました。また、最終的にプルリクとして残った成果物のなかには後日実際にマージされたものもあり、インターン生達の働きも社員さながらのものでした。

インターン生達から届いた感想

参加したインターン生達からは、以下のような感想が届いています!

バグとの戦いは大変だったけど、あのサイトのソースコードが丸々触れるって機会はなかなか無いし、 レビューやフォローもしてもらえるし、貴重な体験ができたかなと思います。

pixiv冬インターンに参加しました - Unpronounceable Name

pixivのエンジニアさんのレベルは非常に高く、会社の雰囲気も凄く楽しげで、こういう会社で働くのはとても楽しいだろうなぁ

pixivインターンに参加して中学生から使ってるpixivのコード見た - tanishiking log

触るソースコードは実際の本物のpixiv本体のソースコードで、前日にスナップショットをとったものだということを聞き、とても感動しました。 オフィスでは、ドリンクや味噌汁が飲み放題だったり色々すごかったです。

pixiv開発のbugリストからの脱出! 2015 に参加しました - {:title "日記"}

他にもたくさん感想を書いてもらえているので、是非こちらもご覧ください。

業務体験のほかにも昼食会や懇親会・オフィス見学なども実施しており、結果ピクシブという会社に親しんでもらえたようでなによりでした。


ピクシブでは現在、一緒にpixivを改善してくれるエンジニアを絶賛募集中です。

recruit.pixiv.net

春と夏にも学生向けのインターンシップを開催しているほか、新卒採用の選考の過程でもインターンを実施しています。 この記事を読んで興味を持たれた学生の方、是非ご応募ください!