tanikoのぶろぐ

pixiv 2017 SUMMER BOOT CAMPに参加してきました

ピクシブさんのインターンに行ってきたのでそのお話です. 去年も参加したので, 1年ぶり2度めのピクシブさんでのインターンでした.

参加するまで

選考について

GitHub選考が今年もあったので, それを使って応募しました. GitHub選考は, 履歴書とか書かなくていいのでおすすめです.

1次選考が終わったらオンライン面接がありました. 内容は, なぜ(今年も)応募したのかや, 参加希望コースのこととか, コーディングテストとかです. コーディングテストに関しては, 好きな言語でやっていいとのことなので, もちろんPHPでやりました.

エントリーから面接含めて2週間弱で, 参加させていただけることが決まりました.

前日

去年同様に, 初日の朝に滋賀から東京に行って, 最終日の夜に帰ろうとしていたのですが, 東京に住んでいる友達にお願いして, 泊めてもらえることになりました. おかげさまで移動がだいぶ楽になりました. 感謝です.

やったこと

初日の午前中は, インターンの概要説明, 自己紹介, 機密保持契約とかをやっていました. 社員の方はもちろんなのですが, 参加しているインターンの人もすごい人ばっかりでした.

午後からは, 開発環境の構築から始まり, 実際に開発を行い始めました. 開発環境の構築なのですが, データが大きすぎるので, 開発用のサーバのコードを触って行うというものだったので, SSHとかの知識がほんの少し必要. セットアップの方法はまとめられているので, 基本的にはその通りにやっていけば行えました. SSHの公開鍵周りのことがあるので, GitHubに公開鍵を登録しておくと楽です.

開発なのですが, 今回, 私が参加したのは技術基盤コースというもので, pixivや他のサービスで利用されているライブラリやルーティングをリファクタリングなどが主な内容でした.

具体的には

  • PDOから独自のライブラリに移行
  • リファレンス渡しをなくす
  • ユーザが原因のエラーのログレベルを修正
  • とあるエラー時のログ用テーブルの設計とロギング用クラス作成

など. テストがないようなところはテストも作ったりしていました. 基本的にはPHPを触っていたのですが, エラーの再現をさせるためにフロント(TypeScript)のコードも読むことがありました.

GitHubにインターン生用のスナップショットがおいてあって, そこで開発していきました.

流れとしては,

  • コードを書く
  • PRを送る
  • コードレビューを受ける
  • 本体(実際に運用されているリポジトリ)にマージされる
  • デプロイ

といった感じです. 時々, 本体側で更新されたコードもまとめて降ってきました.
チーム開発なので, リーベースしたり, コミットをまとめたりなどをすることがありました. 一度, PRをクローズ, スカッシュ, リベースなどをやってしまって, PRを再オープンするのに手間取って大変でした.
インターン中にいくつかのPRがマージされました. 実際に本体でマージされてデプロイされる画面も見せていただきました.

最終日は, インターンの成果発表がありました. インターンはコース毎に分かれてやっていたので, 他のコースの人がどんなことをやっているのかは, その時まではよくわかっていなかったのですが, 皆さん機能追加やOSSへコントリビュートしたり楽しそうでした.
あと, すべてが終わったあとにオフィス見学をさせていただきました.

さいごに

開発業務以外にも, 全社ミーティング, インターン生向けの講義とかがあり, ピクシブさんの現状であったり, プロジェクトのこれからの方針とかも聞かせて頂きました.

一緒に働かせていただいて, 周りの方々はすごい人ばかりだなと感じました. メンターの方々に相談すれば一緒に考えてくださり, とても親切な方々でした.

大変勉強になった5日間でした. ピクシブさんには大変お世話になりました. このような機会をいただき, ありがとうございました.

pixiv 2016 SUMMER BOOT CAMPに参加

ピクシブのインターンに参加

pixiv 2016 SUMMER BOOT CAMPにエンジニア職で参加をしたのでその話です.

参加するまで

GitHub選考のあるインターンを探していたところ, ピクシブさんのインターンを見つけました. 普段からPHPを使っており, pixivはPHPで作られているので,これは応募するしかないと思い応募しました.
書類選考と,面接(Skype)がありましたが無事にパスして参加することになりました.

インターンの形式

今回のインターンは学生たちが集まってハッカソンをするとかではなく, 実際のチームに配属され, そこで仕事をするというもの. (全体)会議にも参加します. チームによってはユーザの入会率や開封率などの数字で振り返ったりもします. 私はpixivメンテナンスチームに配属となり, バグ修正やコードのリファクタリングを行ったので, ユーザ数などで振り返るとかってのはなかったです. 私の場合, テストの作成だったり, 新しいクラスの設計とかもやりました.

主な流れ(メンテナンスチーム)

  1. コードの改修
  2. プルリクエストの作成
  3. コードレビュー
  4. コードの修正
  5. 本体にマージしてもらえる

業務とか

修正・改修した箇所はいくつかあるのですが, その中から1つ話したいと思います.

画像投稿時のバグ

修正したバグの1つは, とあるフォームで巨大な画像をアップロードするとPHPのエラーが出てしまうというものでした. (本番環境では再現させてないのですが, もしかしたら白い画面?)
まずはじめに画像のバリデーション失敗時にエラー画面を出すようにしたら, 該当箇所は修正できました. しかしながら, 別のところがおかしくなってしまいました. どうやら修正の仕方を間違えていた. なので他の正常なフォームと比べながらコードを辿っていき, エラーの原因となっている箇所を探しました.
無事に該当箇所を見つけて修正できたのですが, 該当箇所を探しているうちに別のバグ(?)もあったのでそれも報告して修正をしました.

その他

コードを書く以外にも朝会, 夕会, 全体会議とかがありました. 全体会議はいろいろな数字や戦略の話が出たりと, 本当にインターン生も参加していいのかってものでした.

参加してみて

初めてのインターンということで, 自分がどこまで出来るのかなど不安だらけでしたが5日間楽しむことができました. 他とは比較できないのですが, ものすごくいいインターンでした. オフィスは会議室以外に壁がなく, ニックネームで呼び合うというコミュニケーションが溢れているところでした.
開発している時に感じたのは, PHPDocの大切さです. 今までは個人でコードを書くことばかりだったので, ドキュメントを残さないことが多々ありましたが, 大規模で多くの人が書いたコードを触るにあたって, ドキュメントの大切が分かりました. 他にもメンターさんから, 書かれているコードに敬意を持つこととメンテナンスの重要さを教わりました.
メンターさんたちと話す機会も多く, 会社やサービスの現状や大規模なサービスならではの悩みなど聞くことができた. 大変貴重な体験ができたインターンでした.

終わりに

5日間と短い期間でしたが, 学ぶことの多い5日間でした. 5日間ありがとうございました. 参加できるようなら, また参加したいです.


Twitter #pixiv_BOOTCAMP