8/24 ~ 8/28 の1週間,はてなサマーインターン2020に参加参加させていただきました.
本年度のインターンは完全にオンラインで行われ,5日間のうち初日にオリエンテーション・講義,2日〜4日目で与えられた課題についての開発,5日目で発表というスケジュールでした.
全体を通して1人のメンターの方に対して2,3人のメンティーが割り当てられ,Discordに常駐していただいて問題解決やレビューをして下さる体制でした.
講義
Web API(特にgRPC), Docker, Kubernetes, Microserviceなどのトピックについて手を動かしつつ一通り勘所を把握できるような非常に充実した内容でした.特にk8s周辺の技術やMicroserviceについてはあまり扱った経験がなく大変勉強になりました.Dockerに関するCTF(下記ツイート参照)はなんとか時間内に解くことができました.
二時間目コンテナの講義ではDocker Quizが出題。君は、すべて解くことができるか?
— hatenatech (@hatenatech) 2020年9月7日
$ docker run --rm -i hatena/intern-2020-docker-quiz #hatenaintern2020
講義動画については後日一般に公開されるそうなので,(これを言い訳にしつつ現状時間が無いため)詳しい内容については今後追記します.
成果物
課題はKubernetesで動作するMicroserviceなWebアプリケーション(ブログサービス)の機能を拡張・改善するというものでした.ブログサービスの基礎となる部分は予め用意されており,実装はGolang,サービス間の通信はgRPCを用いて行われています.
課題の雛形は以下のリポジトリにて公開されています. github.com
必須課題としてブログの記事作成においてMarkdown記法を受け付けるための記法変換サービスを実装しました.また,与えられたURL先のページのtitleをフェッチするようなサービスを新たに追加し,記法変換サービスに手を加えてリンク記法(- [example](https://example.com)
)でタイトルの入力が省略された場合にこれを補完する機能を追加しました.
発展課題として独自記法の開発,追加したサービスのレスポンス・挙動の改善などを行いました.
発表資料は以下になります.
また,成果物のリポジトリは以下になります.
感想
非常に楽しく,また実りのある5日間でした.
大学に入学してから忙しさを理由にプログラミングを真面目にやらなくなってしまったため全く知識がアップデートできておらず,バックエンドに関して言えば参加前時点でのまとな開発経験がモノリシックなRailsアプリケーションをせいぜいDocker使ってPasSで動かす程度だったため,宛ら文明開化の如く現代的な開発手法を一挙に体系的に学び,フィードバッグをいただきつつ手を動かすことができたことは非常に大きな糧となりました.
Golangについてはインターン開始当初殆ど書いたことが無い状況だったためやや不安がありましたが,メンターの方々に仔細にレビューしていただけたりテストの実装パターンや非同期処理等についてアドバイスをいただけたため確信を持って実装を進めることができ,また大変勉強になりました.
情勢が落ち着いたら京都にお邪魔したいです.ありがとうございました.