うに

技術

最高のはてなサマーインターン

はじめに

id:Leptonです。08/10 ~ 09/04 にはてなインターンをしました。
f:id:Lepton:20150907142011j:plain

応募

過去のはてなインターンのエントリを見て最高だと思い「大規模システムコース」に応募しました。

面接

「大規模システムコース」では面接がありました。
自分の場合は、東京オフィスに行き、京都とリモートで面接しました。最高の会議室でした。
面接では、色々なことを幅広く聞かれました。また、後半課程でやることの候補のことを聞きました。

インターン開始前

事前課題をしました。
前半課程の課題は量が多いので、余裕があれば、「初めてのPerl」「続・初めてのPerl」を読んでおくとよいです。これらの本は最高です。
自分はAOJ-ICPCをしていて忙しくて「初めてのPerl」の11章までしかしませんでしたが、全部読むことをオススメします。
まあでも、後半でやることがはっきりしていれば、そちらを優先するほうが良いかもしれません。

インターン前半

初日

京都に着く。思っていたよりは暑くなかったです。
オフィスに着く。午前中は色々説明があって、空いた時間に軽くわいわいしてました。午後は事前課題の講評があり、その後環境構築をして、夜に歓迎会がありました。Mac だと環境構築が簡単にできるという話でしたが、Ubuntu on Windows でも大丈夫でした。ほとんどのインターン生は Mac を使っていて、エディタは色々でしたが、Vimが多かった気がします。Emacs

今年のインターン生は12人でしたが、そのうちの7人が「以前競プロしていた」 OR 「競プロしている」 OR 「インターン期間中に競プロを始めた」という条件に当てはまっていて、かなり多いという印象を受けました。(後から聞いたことですが、応募の段階で競プロをしている人が多かったらしいです。)他にも同期のインターン生は最高なので色々な得意分野を持っていました。

自分は自己紹介のときにHow to Create a Good Game | Aizu Online Judgeの紹介をしました。この問題は得るものが多いのでおすすめです。

2~7日目

課題が出ます。内容はそのうち公開されるはずです。
今年は例年より2日短くなったため、iOSアプリ開発は、アプリチームだけになり、Perl, MySQL, WAF, JS, 自由課題だけが共通になりました。
必須課題ができないと後半課程には進めませんが、だいたいその日の内に必須課題が終わる(けど、定時までには終わらない)ような難易度に調整されていて、気軽に質問もできるので、普通にしていれば大丈夫です。量は結構あって大変ですが、やれば自分の力になるので、成長できて良いです。因みに、今年は12人全員後半課程に進むことができました。めでたい。
前半課程のメンターのいちりんちゃん(id:ichirin2501)さんはMySQLに最高に詳しく*1、最高のアドバイスを頂きました。
自由課題は、面白い機能を追加してる人が多かったです。自分は SA-IS を実装して、高速な全文検索機能(文字列の比較にローリングハッシュを用いれば、前計算がO(n+m)で、検索がO(logn)でできる)を付けたのと、MeCabを用いて形態素解析して、記事の難易度の推定*2をしました。文字列アルゴリズムは得意ではなかったのですが、気がついたら実装していました。最初は、SuffixArray を json で出力する機能を考えていましたが、普通の人はそんなものは要らないので、全文検索できるようにしました。
他の方が作ったものでは「酔っぱらい検出器」(id:eemon18)が技術的にも、内容的にも最高に面白かったです。

インターン後半

後半課程では、メンターの halfrack さんと、相方のメンターの wtatsuru さんにはお世話になりました。ありがとうございました。
後半課程では、2人1組に分かれてそれぞれの課題に取り組みますが、「大規模システムコース」では2人でそれぞれ全く別なことをしました。せっかくなのでここで引用機能*3を使ってみます。

僕はMackerelのDBであるPostgreSQLの運用改善、ツール開発を行うことになり、同じコースのid: Lepton君は仮想化基盤の性能改善をテーマにしました。

はてなサマーインターン2015に参加してきた - tom__bo’s blog

実はDBの方にも少し興味がありましたが、仮想化基盤の性能改善をテーマにしました。
Mackerel でデータを見たり、本番環境で直接調査したり、実験環境で好き勝手なことをしたりしてました。
コードはほとんど書きませんでしたが、申し訳程度にC言語シェルスクリプトを書きました。インターン期間が短い上に、色々な理由で時間が吹き飛ぶので、辛い所もありましたが、実験環境を自由に使って、色々なことを試せたので面白かったです。
やり残したことは大量にあるのですが、とりあえずは Xen の credit2 スケジューラの解説みたいなものを書いたり、パッチを書いたりしたいと思っています。
詳しいことは別な記事で書きます。

最終成果発表では、どのチームも有用な成果を出していて良かったです。
自分とid:Tom__boさんの成果で技術賞(冒頭の画像参照)を頂きました。最高。

まとめ

はてなインターンにとてつもなく力*4を入れていて、最高でした。同期のインターン生のレベルが高く刺激になりました。
ぜひ応募しましょう。

他のインターン生の一覧 (感想エントリを書いた人を追加していきます)

tombo2.hatenablog.com

daiiz.hatenablog.com

misc

エディタ

なんと、今年のインターン生の Emacs 率は 0 でした!!

フリードリンク・フリーフード

はてなでは、飲み物、お菓子を自由に入手することができます。「朝のYoo」はかなりの高倍率で、多くのインターン生が飲んでいました。

朝のおすすめドリンクを紹介します。 www.itoen.co.jp インターン期間中、インターン生ほぼ全員で、ほぼ毎朝飲んでいる。

おすすめドリンク - daizの日記

観光1

何人かのインターン生で、嵐山に行きました。

ハッカソン

最初の週の日曜日にハッカソンがありました。自分は SA-IS を途中まで実装しました。そのあとで、送り火を見ました。

観光2

一人で伏見稲荷に行きました。上の方に行くと蜘蛛の巣とかがたくさんあって思っていたより楽しめました。途中の方でちっちゃいネコがいたのも良かったです。火のついたろうそくや、きつねの像もかわいかったです。
最高の場所*5です。

きつねの像
f:id:Lepton:20150907212638j:plain

すき焼き

今日のお昼、インターン仲間とモリタ屋という高級なすき焼きのお店に行ってきました。

最高のすき焼き - daizの日記

最高級。

🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣

何回か食べました。うには別なときに食べました。うによりも、うなぎが好きです。よく覚えてないですが、別なときにうなぎも食べたかもしれないです。

ホテル

今年は新しいホテルが手配されて、最高でした。
自分の部屋のアメニティは常識的な範囲で個数が変化したため、そんなに面白くはなかったです。

コインランドリー

あまり安くないので、服は多めに持って行くといいです。服が多い時は、追加で乾燥するのがおすすめです。おそらく宿泊施設は別な所になりますが、一般的にもそうだと思います。
外のコインランドリーはもっと高いらしいです。

語彙

  • 最高
  • いけるいける
  • わいわい
  • しゅっ
  • じゃそれで
  • 世界観

まかない

美味しい

ごはん

たぶんグループに書いてあると思うので、そこに行くのがおすすめです。特に「和醸良麺 すがり」はおすすめですが、かなりわかりづらい場所にあって、最初の2回は探索に失敗しました。時間帯によってはかなり混んでいます。
グループに書いて無さそうな店では、「やよい軒」がおすすめで、インターン期間中に0~3回くらい行くと良いと思います。

ボードゲーム

オフィスに色々置いてあります。昼とか金曜夜とかにやってました。

治安

京都は治安が良いです。治安の良い発表を心がけましょう。

*1:驚くべきことに、MySQLソースコードを読んでいる

*2:かなり雑にやったので、解説はしません

*3:ブログチームがリリースした便利機能

*4:熱意やコスト

*5:山頂