こんにちは。今回ははてなサマーインターンに参加したので、そのことについて書いていきたいと思います。
はてなサマーインターンについて
はてなサマーインターンは今年の夏に開催された株式会社はてなさんのインターンになります。
今年は全日リモート開催ということで、一週間おうちからはてなさんのインターンに参加させていただきました。 京都行きたかった……
はてなサマーインターン2020の詳細については下記をご参照ください。 hatenacorp.jp
応募
私は学部4年でほぼ院進が決まっている状態だったのでインターンの募集要項から微妙に除外されているケースが多く、まず募集要項に適合してるインターン先を探すところからでした。 はてなさんはその辺の制約が緩く、申し込みしやすかったです。
事前課題は指定されたイメージをdocker run
して軽く情報を打ち込むというものでした。
いいのかこんな簡単で……とか思いましたが良かったみたいです。
正直はてなさんは「通らないだろ〜」とか思いながら申し込んだので、面接の話がきたときはびっくりしました。
面接も、提出したESをじっくりみて丁寧に評価してくださって、ありがたかったです。
講義
講義は体系的でわかりやすく説明されていて非常に質の高いものでした。
内容はHTTPの基本から始まりgRPCについて、Dockerについて基本的なこと、Kubernetesについて基本的なこと、という感じでした。 実践問題なども用意されていて、楽しく受講することができました。 実践問題で突如発生したCTF、解けなかった……*1
講義動画は後日配信される*2とのことなので、楽しみに待ちましょう。
2020/10/04更新
配信されました。 hatenacorp.jp
課題
課題としては、Kubernetes上のブログサービスの拡張をすると行った感じです。
ブログ記事のレンダラーサービスの改良と、リンクのタイトル自動取得を行うマイクロサービスの開発が基本課題、大量のリンクがあったときへの対処とrobots.txtの考慮などが発展課題という感じでした。
課題説明ではコミットの粒度に注意する、テストを書く、などの基本的な部分も丁寧に説明していただきました。
実際の課題に使われたソースコードはGitHubで公開されているので、気になる方は見てみると良いのではないでしょうか。 github.com
実装
実装したこととしては、次の通りです。
- レンダラーサービスにMarkdownライブラリgoldmarkを導入する
- Markdownライブラリの拡張をして独自記法を導入
- MarkdownライブラリのASTと向き合う、という感じでした
- リンク記法のタイトルが空欄のときに、リンク先からタイトルを自動で取得する
- これもMarkdownライブラリに手を突っ込んで、ASTを走査してタイトルを自動補完すると言った感じでした
- これについてはレンダラーサービスとタイトル取得間でgRPCで通信して……という感じで実装しました
- タイトル自動取得の際にrobots.txtを参照してクロールして良いページかどうか判定する
- 簡単にrobots.txtの仕様を調べて、簡易的なrobots.txtパーサを手書きするという感じでした
メンターさんとのやり取り
メンターの id:yigarashi さんには3日間DiscordとScrapbox上でお世話になりました。 基本的に自分のコードを誰かにレビューしてもらう・レビューをもとに今後の実装について相談する機会というのはなかなかなかったので、メンターさんの優しいレビューやプチ講座には感動しました。
特にテストをきれいに書くためにどういう設計をしたらいいかの講座はありがたかったです。
自分は実装速度はとても遅いほうだと思っていたのですが、メンターさんにはとても手が速くて丁寧と褒めていただけたのでめちゃくちゃ嬉しかったです。
発表
インターン最終日は成果発表会がありました。
皆さんの発表がどれも特徴的で、同じ課題でも様々な取り組み方があって面白かったです。 まず言語もバラバラだったり、自分が難しくて手を付けられなかった課題に全く思いつかなかった方法で解決策が提示されたりと、非常に興味深かったです。
発表中はみんなでScrapboxに感想コメントを書き込みながら発表を聞いていたのですが、自分の発表に「実装も発表も丁寧」と書いていただけてこれもまためちゃくちゃ嬉しかったです。
面談
発表が終わったあとに面談をしていただきました。 ここでも丁寧にインターン中のことや今後のことについてお話させていただけてありがたかったです。
最後に
インターンではめちゃくちゃ褒められが発生したので、嬉しいことの連続でした。
はてなの皆さん、メンターの id:yigarashi さん、同じ部屋*3で作業していた id:CNaan さん、その他のインターン生の皆さん、本当にありがとうございました。 この経験を活かして今後とも頑張ってまいります!
今後ともよろしくお願いします。
*1:初めてCTFっぽいことをしたのですが、楽しかったです
*2:https://developer.hatenastaff.com/entry/2020/07/01/185834