はてなのサマーインターンシップ 2020 に参加しました

id:skmatz です。
はてなのサマーインターンシップ 2020 に参加したので、その体験記です。

hatenacorp.jp

普段は Hugo でブログを書いているのですが、せっかく Pro を頂いたのではてなブログで書いてみます。
今年は社会情勢もあって 1 週間と例年に比べ短く、フルリモートでもあったので来年度以降の参考になるかわかりませんが。

応募

M1 で D 進するつもりもないので夏のインターン先を探していました。
Twitterはてなを見つけ、Microservices に興味が合ったので申し込みました。
応募が簡単だった (今年は Docker を run するだけの課題) のでとりあえず応募したみたいなところもあります。

面接

次に面接がありました。
確か最初に人事の方と日程 (今年は複数日程の開催だったので) についてお話したりした記憶があります。

次にエンジニアの方と面接があり、確か id:cockscomb さんとお話しました。
事前に GitHub を見て頂いていて、作ったサービスについて解説したりしました。
会話の中でいきなりバグっぽいところを指摘されて omg となったのがいい思い出です。
何はともあれ面接した日に合格のメールを頂いて、日程的にもちょうどよかったので参加する運びとなりました。

1 日目: 講義

初日は講義でした。
今回のインターンではブログシステムのマイクロサービスを開発する課題だったので、関連する

についての講義を受けました。
講師は id:cockscomb さんと id:itchyny さんでした。
講義はかなりの速度感でついていくのが大変でしたが、とても新鮮でした。
講義は録画されていて後に公開されるらしいので、気になる方は是非見てみてください。

2 日目 - 4 日目: 課題

この 3 日間は課題に取り組みました。
ベースのブログシステムがあるので、これにサービスを追加するといった課題でした。
ベースのアプリケーションについては MIT ライセンスで GitHub に公開されているので見てみてください。

github.com

1 つ目の課題は Markdown への対応でした。
自分はサービスを Go で書いていたので、goldmark という Markdown パーサを用いて実装しました。

2 つ目の課題は独自記法を追加するというものでした。
自分は @github:skmatz みたいに書くと [skmatz](https://github.com/skmatz)レンダリングしてくれる記法を作り、正規表現を使って処理しました (AST 難しかった)。

3 つ目の課題は [](https://google.com) のようにタイトルが入っていないリンクに対して自動でタイトルを抽出して挿入するというものでした。
最初は愚直に GET を送って title タグを取ってくるようにしていましたが、goroutine を使って並列処理をするようにしたり、robots.txt を読んでクロールを制限したり、発展的なことを色々試せて面白かったです。

課題全体を通して丁寧にメンターの id:hogashi さんがレビューしてくださり、感謝の極みです。
他のインターンもいくつか行きましたが、はてなでは一番コードレビューをして頂けた気がしていて、とても勉強になりました。

5 日目: 成果発表会

最終日は成果発表会でした。
自分はプロダクト賞を頂きました!
こういう形で表彰されるのははじめてなので最高です!
基本的に課題は同じながら、一人ひとり個性のある発表で聞いていて飽きなかったです。
どの記法も使ってみたいなーとなったので、 1 つくらいはてなブログに取り入れられないものか。。。

speakerdeck.com

まとめ

5 日間と短い期間でしたが、HTTP/2 時代のモダンな設計や、Microservices について学べた良い機会でした。
本来であれば京都で 1 ヶ月の開催らしいので、京都に行きたかったーってのが本音ですが、1 ヶ月だったら日程的に参加していないかもしれないので、なんとも言えないところです。

何はともあれ新しい知識をいい感じに吸収できた 1 週間でした。
関わった社員やインターン生のみなさま、ありがとうございました!