「はてなサマーインターン2020」に参加してきました

はてなによる夏インターンはてなサマーインターン2020」にリモートで参加してきました。

株式会社はてなのロゴ
リモートなので会社の写真はないです

はてなサマーインターン」とは

株式会社はてなによる、はてなでのサービス開発や研究を体験できる学生向けのインターンシッププログラムです。

はてなといえば、今まさにこの文章を執筆している「はてなブログ」を始め、様々なサービスを運営しているところです。また、僕にとっての初めてのインターネットとの接触(ファースト・コンタクト)でもあった「うごメモはてな」(現在はサービス終了)を作った会社でもあります。

そんな有名な企業の社員さん方と開発を行う事ができ、さらにお給料(今年度は参加賞としてAmazonギフト券)まで出ます。お得ですね。

この記事がこれからインターンに参加する/参加を検討している人向けの参考になれば幸いです。

参加するまで

インターン前にやったことをさらっと書いていきます。

応募課題

申し込みのために応募課題がありました。記載されているdockerコマンドを実行して少し操作するだけのものでしたが、こういうのは見たことが無かったので面白かったです。

github.com

応募フォームに書いた内容の詳細は正直覚えていないですが、GitHubのアカウントと、Django で作った自作の動画投稿サイト、Vue で作ったうごメモクローンのリポジトリを提出したはずです。

面接

応募課題の感想、提出した内容について、インターン内容の確認、などを楽しく話しました。

提出した作品はいろいろ高評価頂いて嬉しかったです。

インターン

インターンが始まってからのことについて書きます。

課題

Kubernetes、gRPC、マイクロサービスなどの技術を用いてブログシステムを拡張するという感じの課題に取り組みました。

github.com

課題は大きく分けて3つあり、

  1. Markdown記法と独自の記法を追加
  2. 記事に記載されたURLからタイトルを取得するサービスを追加
  3. URLがたくさんあったときの対策を追加(発展課題)

という感じでした。1つ目の課題には Go または TypeScript が想定されていて、2つ目の課題では自由に言語を決められるというものでした。

僕は両方 TypeScript で書いたのですが、周りのインターン生はほとんど全員 Go で書いていた印象です。Goの利用経験は少ししか無かったのでTSが使えて本当に助かりました……。

講義内容や課題は後日公開されるとのことで、インターンに参加していない方もぜひ見てみてください。

hatenacorp.jp

Dockerクイズもおすすめです。

作業

1日目に講義があったので、作業に取れた時間は実質2~4日目の資料作成開始までの3日間でした。4日目には5日目の成果発表のための資料を作るので、それも踏まえるとさらに短いです。1日に1つ以上の課題をこなしていきました。

コミュニケーションのために Discord と、情報共有のツールとして Scrapbox を使いました。メンターの id:hogashi さんが Discord でこまめに進捗を確認してくれたり、Scrapbox に書いていた呟きにときどき反応してくれたりと、詰まってもすぐに相談できる環境を整えてくれてとてもやりやすかったです。

対面だとなんとなく話しかけづらかったりする時があるので、マイクONにするとすぐに話したい意思が伝わるリモート形式は自分に合っていた気がします。

成果と発表

5日目には、これまで課題に取り組んだ内容について発表をしました。なお、課題については基本課題の全部と、発展課題が部分的に出来ました。

課題1の独自記法は Scrapbox で感銘を受けたアイコン記法をそのまま実装しました。

f:id:mkizka:20200911161536p:plain
さまざまなアイコン

その他にも記法のための unified.jsプラグインを作ったり、テストのためにモックを受け入れるような設計を考えたり、発展課題への取り組みとして課題2の結果をキャッシュするようにしたりしました。特にプラグインはドキュメントを見ながらいろいろ試行錯誤したので別で記事にしたいですね。

感想

リモート形式で会社に足を運べなかったのは残念でしたが、取り組んだ内容には対面と変わらない多くの学びがあったと思います。また、課題形式なので自由な発想で取り組むことが出来たのも良かったです。

限られた時間の中で、要件について出来ることを考えて実践する力がついたインターンでした。何かしらアピールできるものを持っていて、最高の教材で自分の実力を試してみたい方*1にはとてもオススメです。

*1:場合によってはさらに Docker と k8s が十分に動作するパソコンを持っている方