読者です 読者をやめる 読者になる 読者になる

pixiv冬インターン参加記

ssl.pixiv.net

pixivにインターンに行ってきました。

まだ就活とかする時期でもないんですが、「東京に行ける!新幹線!報酬まで出る!」という不純な動機で応募したら通っちゃいました。

選考

選考はgithubだけでした。選考でやったことはこんな感じです。

https://github.com/pixiv/intern2015w/pull/7

 

1日目

まず、開発環境のセットアップ。結構複雑な作業のはずですが、特に詰まることなくすらすらできたので、インフラの人すごいなと思いました。

メインのバグ修正は、修正してプルリク送ると、メンターからフィードバックが貰えるというもの。バグごとに難易度がつけられていて、まずいちばん簡単なものから取り掛かりましたが、なかなかの量のソースコードなのでどこを触ればいいのかわからないまま時間が・・・。もっと積極的に質問しまくればよかった。

特にバグ修正もできず、お昼休憩。🍣でした。おいしかった。

午後は本格的にバグ修正に取り掛かりました。修正して、commitして、プルリク投げて、"脱出"タグ付けられて「よっしゃああ!!」ってなりました。ただ、ここまですんなり行ったのは最初だけで、ブランチ変え忘れてたり、あんまりコード読まずに修正して無駄な部分指摘されたり、なかなか脱出できなくて現実は甘くないなと感じました。

2日目

1日目の反省から、分からないことがあったらすぐ聞く のスタンスで挑みました。聞いてみたらすごく丁寧に教えてもらえたので、本当に助かりました。午後はちょっと重いバグをずっとやってました。コード読んで修正して、上手くいかなかったらメンターさんに方針を相談して、という感じでした。結局時間内に修正できなくて、時間があればなんとかなりそうだったので後悔はありますが、pixivのソースのかなりの部分が読めたので満足です。

懇親会では、エディタの話とか、普段はなかなかできないマニアックな話ができて楽しかったです。splatoonほしい。

まとめ

インターン行ってよかったです。Web開発の現実が見れた気がします。参加していた人もみんなレベルが高くて、もっと勉強しないと、と感じました。

pixivの皆さん、インターン生の皆さん、2日間ありがとうございました。

ISUCON5本選に学生枠で参加しました

bgpatです。
所属しているサークルの先輩2人(@fono09, @Goryudyuma)とチーム名kstmでISUCON5の本選に参加してきました。

午前

まず、予選の教訓からapt-get purge apparmorしました。初回ベンチかけてる間に環境の確認。使い慣れてるMySQLじゃなくて全く使ったことのないPostgresqlが入っていて、コレどうしよう状態。psqlコマンドはこのとき初めて使いました。ベンチ終わってnginxのログとかブラウザで確認したりして、/dataが重いなーということでコード読み始めました。一緒にコード読んでた@Goryudyumaが外部サーバーに対してHTTPリクエスト送ってるのが原因と教えてくれたので、このあたりを調べることに。ローカル環境からAPIのホストを叩いても案の定名前解決できなかったので、サーバー内の/etc/hostsを見るとAPIサーバーのアドレスが書かれていました。ローカルのhostsに同じ設定を書くとブラウザからAPIを叩けるようになったのでメンバーにも共有。とりあえずAPIのリクエストをキャッシュすれば早くなるのでは?と提案だけして、@fono09にredisの設定とかやってもらい、golang書けないのでコードは@Goryudyumaに書いてもらいました。

13:00〜17:00

何も考えずとりあえず全部キャッシュするコードが完成したのでベンチ回してみるとよくわからないエラーを吐いてfail。ブラウザでAPI叩いて確認すると、tenkiは高頻度で更新されているみたいなので、キャッシュから除外するように修正するがfail。このあともいろいろ触ってみたけど最終的にはnullしか表示されなくなって、せっかくGO言語使ってるんだしということで、APIリクエストの並列処理のほうをやってみることに。並列化処理完成してブラウザでチェック、よし問題なさそう と張り切ってベンチ回すもなぜかfail。しかもapp.goが死んでる。ログを見るとJSONのパースで落ちてるらしいことが分かり、Resp.Bodyをログに吐き出すようにすると、何も入ってなくてイミガワカラナイ。懇親会で聞いたところによると、ちょっと工夫してログに出せば"Too Many Requests"が見れたんだとか。このあともキャッシュがうまくいかない原因を考えてみたり並列処理なんとかできないか触ってみましたが、ことごとくfailしまくってお通夜状態でした。

17:00〜終了

結局打てる手もなくなり、同じサーバーの中にAPサーバーいっぱい立てれば並列処理になって少しは早くなるかもとか考え出して、やってみてもうまく動かず結局ほぼ初期状態に戻す感じでフィニッシュ。時間もなく、ほぼ初期状態だったので再起動確認はしませんでした。学生チームが全チームfailになると知っていれば再起動確認の時間残したのに。

反省

大体どのチームとも方針は変わらなかったのに、考察しきれてない部分が多くて全く点数が伸びず、最終的にfailに終わってしまいました。予選のときは、ほぼノー勉で挑んで、たまたま自分たちに合った環境が問題になってスコアが伸びたけど、本選で惨敗して、甘くないなーと実感しました。来年もISUCONがあるなら、運ではなくて実力で予選突破できるように練習とかちゃんとしたいです。

まとめ

コンテスト自体はボロボロでしたが、長時間パソコンに向かってみんなで考えたり、プロが書いたコードが見れたり、懇親会ですごい人たちと話したり、東京見物したり、ほんとに楽しい充実した日となりました。運営のみなさん、本当にありがとうございました。

おまけ

会場に着いてから暇だったのでこんなもの書いてました。せっかくなので置いておきます。