haya14busa

haya14busa’s memo

2015年夏,はてなインターンでMackerelをとにかく便利にして優勝してきた

インターン終わったときに書きたかったのですが,バタバタしていたのと,イカ (Splatoon)という麻薬に犯されたので2015 年の振り返りとして書いています. 乗り遅れた感しかないけど記録として残しておきま す! 2015年全体の振り返りはこちら -> はてな,Googleインターン行ってイカやりすぎたイカVimmerの2015年の振り返り - haya14busa

今年の夏はどこかインターン行きたいなぁ〜,最高の夏を過ごしたいなぁ〜と思っていました. そんな時に はてなサマーインターン2015 情報, 特に今年は Scala や swift が書けるコースもある という話を聞いてこれは行きたい! と応募しました. その結果幸運なことに選考に受かったので8月10日から9月4日まで最高の夏を過ごしにはてなインターンに行ってきました.

はてなインターン TL;DR

  • 噂の(?)今年のインターン生の Emacs 率が0だった
  • 僕は言語がScalaのMackerelコースで, id:tyage くんさんと一緒に Mackerel を便利にして優勝してきましたっ! めでたいっ 🎉🎉🎉
  • はてなインターンで優秀なはてなの社員さんや他のインターン生の仲間と開発できたのは最高の体験でした.もっかい体験したい.

参考情報

はてなインターン応募と参加

一昨年の2013年夏にインターン探していたときも,はてなインターン卒業生のブログな どを読んで, はてなインターンよさそうだなぁ〜と思ってました.その時は能力たりな さすぎて無理だろう…というのと perl かぁ〜 という思いで応募すら出来ていま せんでした.

今年は言語が Scala (!)のコースができていたこともあったこと,一昨年よりはアルバイトでScala 書いたりとある程度経験値積んでいて,Vim でよければいくつかアピールできるようなものもあったので えいやっと応募しました.はてなインターンの選考では基本的にポートフォリオを提出するのみ だったのですが,ポートフォリオは8割 Vim でした.評価されてよかった…

ところで実際にインターンに参加してから思ったことは,もし仮に書く言語が perl だったとしても来たほうが良かったなということでした. もし来年度以降のインターン に応募しようと思っているけど perl がちょっとネック… くらいで参加を迷ってるな ら勢いで参加申し込んでもよいと思います.

結局僕は perl 1行も書きませんでしたが.Scala最高!!!(コンパイル爆速になればより…)

事前課題がScalaを基礎から勉強するのに最高

さて,晴れてはてなインターンに行けることになったらインターンまでの学習としてちょっとした事前課題が課されます.

この事前課題では perl か scala, それに JavaScript でいくつか課題が与えられ,問題を解いてテストを通していく形式でした. 事前課題は全体,課題ごとに課題のねらいが書いてあり,言語の基本を学ぶのに最高だと思いました.

Scala の課 題 は 与えられたログ用に Labeled Tab-separated Values (LTSV) パーサを書くという課題だったのですが,言語の基本やテストの仕方,テストの追加の 仕方はもちろんのこと,問題の性質上 エラーハンドリングをどうするか,Option型を 使うか,Either型を使うか,パース失敗時に エラーの行を収集するために scalaz でいう Validation 型を使えばベンリ なんじゃないか…!といろいろやりがいがありました. もっと言うと指定されたログの モデル以外にも対応できるような汎用的なLTSVパーサにしたら便利そうと思ったんですが そこまでは時間と実力が足りなくてできませんでした.残念.

LTSV パーサ,Scalaの課題としてよかったなぁと思います.

またこの事前課題は単にテストを通して提出すると終了…というわけではなくインターンの初日あたりに 講評が行われるのが最高でした.自分のコードはどう書けばよりよかったのか,他のインターン生は どう書いていてどこがよかったのかといったことも知れて便利でした.この講評はインターンの前半課題 でも行われました.

前半の講義がウェブ開発を基礎から勉強するのに最高

スケジュール

  • 1日目 Perl/Scalaによるプログラミングの基礎
  • 2日目 Perl/Scalaによるデータベースプログラミング
  • 3日目 Perl/ScalaによるWebアプリケーション開発
  • 4日目 JavaScriptによるイベント・ドリブンプログラミング
  • 5日目 自由課題
  • 6日目 インフラ
  • 7日目 SwiftでのiOSアプリ開発

前半の講義パートは言語の基礎からWebアプリケーション,インフラ,それにSwift コースや希望者はSwiftのiOSアプリ開発までを1週間で学べるようになっていました. それぞれのコースのインターン生ごとにメンターさんがついてくれます.僕の場合は id:sixeight さん でした.

毎日課題が課されてそれをメンターさんに質問したり,レビューを受けたり,講評をも らったりとヒイヒイこなして行くことで後半に向けて基礎力を向上できる仕組みになってい ました.大変でしたが楽しかった…!

課題としては自由課題が最後で,その内容はそれまでに学んできた技術と課題で作って きたブログシステムを活かして好きなWeb アプリケーションを作るというものでした.

ここで作ったサービスは社内で投票で順位もつく前半の集大成という課題で厳しくも楽 しい,燃える課題となっていました.僕はあんまり独創的なアイデアのなくこれがあれ ばベンリやろ〜というノリでちょっとしたものしか作れなかったのですが,他のイン ターン生のアプリケーションのクオリティが高くて刺激になりました.

完全に言い訳になるのですが僕は自由課題の日の前の土日で開催されたオープンイン ターネッツに公開されてない,はてなで行われたもくもく回ハッカソンで途中まで 作ってた Vim script版 power-assert に夢中になってました. 他のインターン生のつくったサービスをみてもっと自由課題に力入れればよかった…と 思ったので来年度以降はてなインターンへの参加を考えている各位は前半最後の自由 課題はやりがいあってよいよ!と言っておきます.

後半の実践パートでサービスにコミットしていく実践経験が得られて最高

実践パート - はてなサマーインターン2015 レポートサイト

今年から前半/後半の比率が代わり前半が少し短く,その分後半の実践パートが長く なったようです.開発に時間がとれてベンリ.

後半は僕は id:tyage くんさんと一緒にMackerelコースに配属され, ちょっとしたバグ修正によるインターン生最速リリース(ちょっとズルイ)から始まり4つほ ど多方面からMackerelの機能改善や新機能のリリースを行い,最終成果発表で1位を獲得できました!

だいたい id:tyage くんやメンターの id:sixeightさんをはじめとするMackerelチーム の皆さんのおかげでした.

id:tyage くんさんはインターンまでScalaほとんど書いてなかったらしいのに, 後半過程では1年くらいScala経験あった僕と同じかそれ以上のレベルでScalaかけちゃうし, JavaScriptまわりでペアプロして相談しても的確に正しい方向に導いていってくれるし最強かよ〜という感じでした. id:tyage くんさんとのペアプロ,最高に便利体験でした.

id:sixeightさんやMackerelチームの方には 方針を一緒に考えてもらったり,ダメなところをダメと指摘してもらったり,実装・仕様の相談をさせてもらったりと, 最高の体験でした.

id:tyageくんや優秀なMackerelチームのメンバーと 少しの間とは言えチームとして働く経験ができて,しかも最後には優勝というおまけまでついてきて 最高の夏を過ごせました.ありがとうございました!

はてなインターン最高でした

上述したカリキュラム上の話だけじゃなく毎日おいしいはてなのまかないをはてなの社員さんと お話しながら食べたり,他の優秀なインターン生の話を聞いたり,実力を垣間見たり, インターン途中に参加したYAPCや社内TGIF,ごはん連れてってもらったりしたときにはてなの社員さんの 話を聞いたりなどなど,最高の夏を過ごせました.

逆に慣れなかったことといえばはてなの 「シュッと」 っという言葉だけは いやいや「サッと」とかのほうが馴染むじゃん…?とあんまり慣れな かったのですが, インターン終わってから「シュッと」,いいじゃん使いやすいじゃん…? となぜかインターン終わってから馴染むようになってしまいました.不思議だ…

他のインターン生の紹介

イカしたやつらを紹介するぜ! ってやつ.終始凄い人多すぎてびびってました… 僕も頑張りたい.

最高の夏〜

Comments