ピクシブでインターンしてきました!
pixiv 2015 SPRING BOOT CAMPに参加してきました。
(期間的には10営業日ですね。)
abstractだけを述べると「めっちゃたのしかったです。」となっちゃいます。詳しくは下に書きます。
どうして参加したの
風のうわさ*1でピクシブのインターンが楽しいという話を聴いたのがキッカケです。
昨夏の講義資料がめちゃくちゃ楽しそうだったというのがあります。
なんとなく、github選考
怖かったのでやめて一般選考
を受けました。
「github選考
でも受かったよ」と言っていただけたので、今後参加する方は参考にしてください。
自分のやってることについて語った駄文をエントリーフォームで投げて、軽く面接*2をして、メールが届くという感じでした。倍率が10うんちゃらとかそうじゃなかったとか。こわい。
pixivって某phpだし某phpだし某phpだしと身構えてましたがそんなことはなく、 幸せにpython書けました(後述)。
どんな感じだったの
会社の雰囲気はこんなかんじです。*3
勤務時間は10時-19時ですね。
かわいいにじげんのおんなのこみながらしごとできるのってさいこうでは。
写真だけ見るとなんかめっちゃベンチャーっぽくて遊んでるっぽいようにみえますけど、
ちゃんと真面目に仕事しています。
オンオフしっかりしてると思いました。
にじげんいっぱいのおふぃすに関しては、
別の方がblogで書いてくれるでしょう。(丸投げ)
私は椅子に注目します。椅子がオカムラのbaronです!
(写真撮るの忘れた…)
でも、最近流行りのスタンディングデスクも良いです。
眠気覚まししたいときとか使えます。
開発してる時は1時間交代でスタンディングデスクとbaronを往復してました。・ω・
インターンの雰囲気ですが、
茨城県の某学園都市に住んでいてピクシブまで1.5時間ぐらいですが、ホテルを用意していただきました。(東京都民は自宅通いな感じでした)
別チームも巻き込んで一緒に 夜ふかし 夜の開発会(1回だけでしたが)もしたりしました。
でも、インターン参加者でLinuxユーザーが一人だけってさみしいじゃん。
ArchLinux使いやすいよ1!!!
どういうことしたの
やったことは簡単に言えば、『ハッカソン』です。
グループで「pixivらしいゲーム攻略サイトを作る」というお題でアプリケーションを開発するという感じでした。
(お題を公開しても聞き忘れたので念の為ぼかします(´・ω・`))
(公開しても大丈夫であればコメントください)
(大丈夫らしいので書きました✌)
だいたい4チームでした。
私のチームは全然使わなかったですけど、
pixivとピクシブ大百科のコードをいただき、
phpもぐもぐするのは楽しかったです。
あの時代のphp読んでるとすごい時代感じますね。
他には、講義やいくつかの課題もありました。
特徴的なことはなに?
個人的に興味深かったことは、エンジニアだけでなく総合職の方が一緒にグループになったということです(3対1ぐらい)。
ピクシブでは、業務のグループでもエンジニアと総合職が一緒に作業するようです。
たしかに実際の仕事(特にB2C)だと、エンジニアは開発だけしていればよいと言うわけでなく、
問題発見・仮説検証・他企業さんとの連携など開発以外の仕事もやれるほうが要件定義が楽ですし、自分が顧客としやすいですし、広い視点で考えることが出来ます。というより、その方が楽しいですし。
会社説明会によるとエンジニアが6割で総合職が4割だそうですし、実際の開発チームにもデザイナーや総合職が同じぐらいの割合で入っている印象を受けたので、そういう雰囲気を体験してもらいたい背景もあるのかなと思いました。
そんなこともあり、一緒に作業してみるといろいろと考え方と視点が違って楽しかったです。
エンジニアだと実装が楽しくて暴走しがちなこともありますが、
(2週間ですが)スケジュールを建てて どこまでやるか
、 なにをしないか
、 このプロダクトの何が重要か
を考えながら開発するのは新鮮で楽しかったです。
『チームで何かを作る』ということが体験できたと感じます。
なにで開発したの
特に言語など制限は特になく、とにかくplayableなものを作れ!
という話でした。ピクシブという会社自体が、言語に対するこだわりはそれほどないようです*5。
(某phpなのはたぶん移行のコストとかパフォーマンスとかそういうのなんだろうな)
webアプリケーションになりそうだとグループで話になったので、開発チームをよくある サーバーサイド
と クライアントサイド
に分けました。javascript
にっょぃ方(@_makky_)が同じチームだったので クライアントサイド
を押し付けて*6、私はサーバーサイド
をやることになりました。
完全に私の趣味で、 Python
の Pyramid
でwebアプリケーションを開発しました。
一緒に開発するメンバー(4人のうち2人)がpython触ったことあるし、あんまり Rails
好きじゃないし、環境構築もデプロイも楽だし*7やっぱり Pyramid
でしょ!!!
という本当に私の趣味で決めました。後悔はしていません。
開発手法は?
githubのprivate repositoryをいただき、よくあるpull-req方式でやりました。(歓喜の声)*8
issueジョリジョリ書きながらpull-req投げていくスタイルです。
メンバーのアイコンとgithub idの公開了承取りました。
とりあえずissue建てる私のノリからみんなでwaiwai楽しい感じになりました。
(新宿御苑を散策するという謎のissue)
メンバー全員がお酒好きというやばい感じだったので、
インターン期間中は毎日飲みました。:sake:
※他のグループは馬鹿みたいに飲んでいないので安心してください。
結局どんなのつくったの
初日にみんなでお酒飲みながらゲーム攻略サイト
について考えていたら、「ゲーム作ってソース公開したらゲーム攻略サイト
じゃね?」 と私が変なこと言っちゃったせいで、ゲーム攻略サイトじゃなくてゲーム作るサイトになりました。
「pixivの絵師とpixiv小説とpixiv音楽*10を混ぜあわせて、 ノベゲー作れるようにしよう!みんな酒好きだし、混ぜあわせるし、名前はshakerね!」
とめっちゃ軽いノリでした。
ちなみに、要件とシステム構成は?
ノベゲー作るサイトで交流と創作の促進が目標だったので、
欲しい機能は大きく下の感じです。
- ゲームプレイ画面(データをjsonで振らせてjsごりごり)
- 選択肢表示
- メッセージ切り替え
- 背景画像切り替え
- ゲーム編集画面
- チャプター編集
- フローチャート図(d3.jsおじさん)
- 登場人物
- 協力者募集
テーブル構成はこんな感じですね。sqliteです。(あんまり見ても嬉しくない情報)
project
(ひとつのゲーム)があって、コメントがあって協力者募集があってって感じです。- 左のほうの
chapter
が章でbranch
が選択肢です。 - 選択肢から次の
chapter
が決まるので、compositeパターンのようになってます。
一番(個人的に)悩んだのは、木構造をどのようにデータベースに入れるかという問題です。
そもそも、木構造みたいなものをもちたいなら木構造だけmongoとかのほうが良さそうだしそうすべきかもしれないです。
でも、RDBMSに突っ込みたいと思った時、どうすればよさ気なのか思考実験するのが楽しかったです。
この解決法だれか考えている方いらしたらぜひ教えてください。
10日もない実装なので、オーダーとか考えてないやばい実装です。
セッション管理すら諦めていますので、CSRFとかできるイケてるサイトです。
結局どうだったの
準優勝でした✌
正直、順位とか考えてなくて楽しめればいいやと思っていたので、
ラッキーだぃぇぃってかんじです。
別グループにcontributeとかもしてたし
個人的に一番ヨッシャと思ったのはかたついさん(@catatsuy)に「XSS見つからなくってくそぉってなった」って言われたことです✌
こういうところでセキュキャン卒業生をアッピルしていく所存。
私じゃなくて主に@_makky_ががんばってくれました。
ちなみに、DoSするのはさっきの木構造の深さをめっちゃ深くすれば簡単です。
ほかになんかやったの
エンジニア講義がかなり面白かったです。
技術力の高いことをバババババとする講義もあれば、YAGNI
のような開発思想の話もあれば、lean start up
やgrowth
に関する講義もあれば、と幅広く講義をしていただきました。
スライド公開している方がいらっちゃるので観てみてください楽しいのでどうぞ。
クラウドとオンプレ / on the Cloud or Premises // Speaker Deck
ピクシブ広告サーバー開発・運用の軌跡 2015春インターン講義資料 // Speaker Deck
感想は?
めっちゃ楽しかったです。 (lack of japanese skill)
今まで知らなかった視点を得ることが出来ました。
(お酒も飲めたし飲み仲間も増えたし)
(ちょっと心残りなのはインターン中に別案件が降ってきたりして集中できなかったことですね。。。)
振り返ってみると、インターンのエントリーに書いてあることが得られたことそのものを示していると感じました。
(https://ssl.pixiv.net/recruit/entry/entry_intern_spring.php より引用)
■このインターンシップで得られること
・学生向けのプログラムではなく、実際に就業を体験することで、仕事とはどんなものか、緊張と醍醐味を理解できる
・自分のやりたいこと、考えを反映でき、それがビジネスで通用するか体験できる弊社で活躍する社員からのフィードバックを受け、エンジニアとして、ディレクターとして必要な目線を持ち帰ってください
・「働くこと」のやりがい、楽しさ、厳しさを知り、今後の社会人生活に活かすことができる想像やネット情報からのみではない、自分の軸を形成してください
・チームやユーザーと共にサービスやイベントを成功させたときの達成感を味わうことができる
「またおいでよ!」と誘われたので、頑張って行きたいと思います(`・ω・´)ゞ。
たぶん雰囲気的にはかなり自分にあっている気がしました。議論楽しいし。
さいごに
インターン生なのに店員さんに顔を覚えられて行きつけの店となった鍛冶屋 文蔵に感謝して締めたいと思います*11。
インターン、
ミナサン、
イキマショウ。
これからまたおしごとの日々がはじまる。がんばるぞい