入社2ヶ月目で人気エントリー一覧の表示高速化を担当。サマーインターンを経て新卒入社したはてなエンジニアの日々

こんにちは、はてな アプリケーションエンジニアの id:astj です。

2014年4月に、はてなに新卒入社しました。現在は、はてなブックマークチームで「はてなブックマーク」や「人力検索はてな」などの開発をしています。

今回のエントリーでは、新卒入社からの3ヶ月の間に、はてなブックマークチームで取り組んできたこと、その中で感じたことを紹介します。「新卒はてなエンジニアってこんな感じなのかー」というのが伝わればと思います。

サマーインターンの後に新卒入社、はてなブックマークチームへ

学生時代には、Perl/SQL/JavaScriptを独学で学び、小規模なWebサイトやWebサービスの開発をした経験はあったのですが、チームでの開発や、大規模なWebサービスの開発を行ったことはありませんでした。

ユーザー数が多く、インターネット上で存在感の大きい、はてなブックマークというサービスに関わることには不安もありましたが、実際にはスムーズに開発に加わることができました。入社前に「はてなサマーインターン」に参加したことで、自分の能力や経験値が底上げされたということが、うまくいった最も大きな要因です。

現在、はてなで行っている開発(GitHub Enterpriseを用いた開発フローや、Perl/MySQL/JavaScriptを用いたWebアプリケーションの開発)に関しては、昨年夏に参加したはてなサマーインターン2013の際に学んだことがベースになっています。

また、インターンの後半課程で実際にはてなのサービス(僕の場合は現担当と同じはてなブックマーク)の開発に関わったことで、たくさんのユーザーさんに自分の取り組んだ開発内容を届けるという貴重な経験を得ました。

これらの学習や経験のおかげで、入社してからスムーズに開発に加わることができたのだと思います。

入社2ヶ月目で取り組んだ、人気エントリー一覧の表示高速化

入社後3ヶ月の間に担当したタスクは、

  • 開発環境の整備
  • アルゴリズムの改善・リファクタリング
  • フロントエンドの開発

など多岐に上ります。

教育的な意図で割り当てられたケースもあるでしょうし、チーム内外のメンバーの協力や助けがあってのことではありますが、入社前に想像していたよりも、はるかに広い分野を担当してきたように思います。

ここでは、入社2ヶ月目で担当した人気エントリー一覧の表示高速化について少し紹介します。

はてなブックマークでは、レスポンスの高速化のために、さまざまなページの表示内容をmemcachedを用いてキャッシュしています。url絞り込みやサブカテゴリなどの多数の表示面、ユーザーの設定に応じた表示の出し分けなどを反映した上でキャッシュするため、memcachedにキャッシュする際のキャッシュキーは複雑化の一途を辿っていました。

この複雑化によって、正常にキャッシュされない事例が一部で発生していました。そのため2014年5月ごろに表示高速化の一環としてこの問題を解決するまでの間、人気エントリー一覧の一部で表示内容がキャッシュされず、レスポンスタイムが低下しました。

この問題は、別件のテストコードを書いていたときにテストが不可解な落ち方をすることがきっかけで発覚しました。直接的な原因の発見から必要になる変更箇所の洗い出しや見積もりまで、主導的にタスクを進められたと思っています。

実際の解決策の実装においては社内のエンジニアの助けを借りましたが、最終的に人気エントリー一覧のレスポンスタイムを約15%向上させることにつながりました。

“新卒”ではなく、いちエンジニアとして

最近は、エンジニアリング的に難易度の高いタスクに取り組んだり、サービス事情と深く関連したタスクに取り組む中で、自分の成長を実感する機会がどんどん増えています。前述のように幅広いタスクを担当してきたことが、成長の実感につながっているのかなと思います。

ディレクターから任されるタスクも変化してきています。その結果、タスクに取り組むスタンスも、だんだん主体的な取り組み方に変化してきました。入社してすぐのころは、チームの先輩エンジニアの指示を受けて調査や実装をすることが多かったのですが、徐々に(前述の高速化の事例のように)自分がメインでタスクを担当するケースが増えてきました。

このタスクの任され方や取り組み方の変化から、チーム内においても“新卒”ではなく、いちエンジニアとしての責任感が増してきているように感じています。

とはいえ、まだまだ未熟なのは間違いないことなので、今後もいっそう努力し、はてなのサービスの発展に向けて全力で頑張っていこうと思います。

サマーインターン参加者募集中! 7月7日(月)正午〆切です

今年も、8月11日(月)から9月5日(金)まで4週間、はてなサマーインターン2014が実施されます。Webアプリケーション開発についてしっかり学ぶことができ、実際のサービス開発に関われて非常に充実した夏が過ごせると思います。参加締め切りは7月7日(月)正午と迫っています。興味のある学生の方は是非ご応募ください。

ちなみに今年のインターンはアイマス9th大阪公演(8/2-3)と被らないちょうどいい日程となっておりますので、Pの皆様も安心。以上、モバマスのプロデューサーランクはS2の id:astj でした。