【サマーインターン】3-shakeの2週間インターンに行った話

# はじめに
　8月21日から9月1日までの2週間、3-shakeさんのインターンに参加してきましたので、インターン内容と感想を話していきたいと思います。
　本ブログでは、参加理由から、内容、感想、向き不向きについてまとめていますので、ごゆるりと見てってください。

# 筆者のスペック
　一言でまとめると、**プログラミング好きで色々やってたけど、インフラ系は知らぬっていう情報系大学院生** という感じです。大学に入ってから、情報系の勉強を0から始めました。大学入ってからは結構手当たり次第にコーディング遊びをしてました。流れとして、最初はC言語で基礎学習を一通りやってから、Web系、Pythonで雑にデータ分析、OS系の勉強やってました。趣味なんで大したrateじゃないですが、競プロもたまにやってます。ただ、ネットワークとかセキュリティとかのインフラ関係の知識は授業で聞いたくらいで対して詳しくないです。
　就活初めてから、いろんなジャンルの技術と繋がれそうなセキュリティ分野に興味を持ち始めたので、最近はその勉強やってる感じです。

# 3-shakeインターンの参加理由
　[3-shake](https://3-shake.com/)さんは、インフラ関係のエンジニアリングやR&Dをやってらっしゃる会社です。似たような分野の興味を持った大学の先輩にオススメされて私は知りました。近年のITセキュリティ業務は、サイバーセキュリティと呼ばれることが多いくらいにインフラ関係の知識と密接にかかわってることが多いので、やってみるといいよとのことで興味を持ち、参加しました。

# インターン内容
　内容は、メンターと調査したいテーマを決め、それについてブログ形式でまとめて最終日に発表するという流れでした。全体のテーマとしては、kubernetes[^1]とそれに関連する技術についての調査という感じでした。[インターンで作成したブログはこのような感じです。](https://sreake.com/blog/container-security-comparison/)改めてみると結構いい感じですね（自画自賛）。

[^1]:コンテナ化したアプリを管理するためのシステムです。増加したコンテナを複数の階層で一括管理することができ、コンテナオーケストレーションシステムと呼ばれたりします。元はGoogleが設計したシステムで、現在ではDocker Desktopに標準で入っており、Google以外のクラウドベンダーでもコンテナサービスとして提供されているコンテナ界隈では一般的なシステムのようです。

## 事前講義
　インフラ系の知識があまりなくても、準備期間としてインターンが始まる1か月前から数回ほど講義をしてくださります。私のときは以下のような内容でした。
* クラウドでの環境構築方法
* コンテナとは
* kubernetesとは
* ブログへのまとめ方

最初からこれらの内容がわかるということはなかったので、なんとなくインターンの際に必要になる技術ってこういうものなんだなという感じで私は聞いていました。

## インターン本番
　2つのグループに分かれて、調査テーマを決めていきます。私のグループは2人グループでした。私のグループは2人ともインフラ系の知識に関しては詳しくありませんでした。もう一方のグループは3人でした。

### インターンのメンター
メンターは普段、エンジニア業務を行っている方だそうです。メインの1人とサブ2人という感じでついてくれました。技術書の翻訳をやっていた方やgoを使ってサーバいじるのが好きな人など面白い方たちでした。質問などに対しては丁寧に教えていただき、場合によってはその場でハンズオンで教えてくださるなど、質問に対しては優しく細かく対応してくださりました。

### テーマ決め
　私の興味がセキュリティであったことと、もう一方の方がジャンルは何でもいいとのことだったので、コンテナセキュリティに関する分野を調査しようということで決まりました。また、さらにいくつか関連するソフトの情報を教えてくださり、そこから調査テーマを明確化しようとのことでした。最初はほぼほぼ言ってることがわからなかったので、とりあえず調べまくる作業です。メンターさんは基本的に1から10まで全部教えてくれるというよりは、関連する技術に関して1,2くらいの情報（ここからは**知識の種**と呼んでいます）を教えてくださる感じでした。なので、わからなければメモしておいて後で調べて自分のものにしていく必要があります。
　操作環境は基本的にGCP上でした。ちょくちょく権限回りでerrorに小言を言われましたが、メンターさんに言うとすぐに権限回りはなんとかしてくれました。IaaSを触るのは初めてだったので、最初はここからビビッて使っていました。また、コンテナに関してはなんとなく知っていましたが、kubernetesに関しては名前すら知らなかったので、kubernetesとは何か、どう使うのかをずっと調べていました。同時に、知識の種をもとに関連ソフトについて調べていき、テーマをどうするかを考えていった結果、3日目くらいに**TetragonとPodSecurity/seccompの機能比較**という調査テーマになりました。

### テーマ内容調べ
　Tetragonというkubernetesのセキュリティソフトを主軸に、Tetragonはかなり汎用性が高いソフトなので、他のセキュリティソフトであるPodSecurityやseccompの機能を比較してみようというテーマになりました。もちろん、TetragonもPodSecurityもseccompも具体的にどういうものなのかわかりませんでしたので、一つ一つ調べていきました。
　グループ内で個々で調べたいことを調べて理解を各自で深めていき、1日1回のメンターとのGoogle Meetで知識を共有するという流れでやっていきました。もう少し分業してやってもいいなとも思いましたが、分業すると自分の調べたところばかりが詳しくなって他がわからなくなる可能性があったため、時間のあるうちはこの形式でやっていきました。

### ブログへのまとめ
　最終日の前日が発表日、最終日がフィードバックの日だったので、最終日から3日前くらいから調べた内容をブログにまとめる作業を行いました。今まで調べた内容は日報という形で毎日報告していたので、そこからそのまま持ってきたりしつつ、言い回しや繋がりを考えつつまとめていきました。この時点でやっとグループでの本格的な共同作業をやりました。基本的な担当分担は私が行い、細かい内容については相談しながら書いていくという感じです。書き終えたブログは、ぜひ[こちら](https://sreake.com/blog/container-security-comparison/)から確認してみてください！

### 発表とフィードバック
　発表は、20人くらいの社員さんが見に来てくださり、その中で書いたブログを映しながら説明していくという感じでやっていきました。フィードバックは、ブログにコメントをいただく形でやっていき、お褒めいただくこともあれば、内容について修正した方がいい部分を指摘いただく形でした。フィードバックをもとにブログを修正したら、本インターンとしては終了です。

### 職場訪問
　私は所用で行けなかったのですが、職場訪問をする機会もありました。元はこのような機会を設けられていませんでしたが、職場訪問したいという方がいらっしゃったようで実現しました。このため、行っても行かなくてもどちらでもいいという形ですが、他のインターン生やメンターの方と直接話せる機会なので行ければよかったなと思いました。

# 良かった点
* 短期間でインフラの技術の一面にがっつり触れられる
* メンターの方から毎日フィードバックがもらえ、質問の回答も早い
* メンターから知識の種がもらえる
* 相談した内容を極力実現できるように動いてくれる
* 調査テーマを自分の興味に合わせて設定してくれる
* 作業やる時間を自分に合わせて柔軟に決められる
* お金が少しもらえる
    * 時給が出るインターンだったので、バイトを休んで作業することもできます
* SREに関する本がもらえる

# 残念だった点
* 結構インターン生側の自主性が求められる
    * 自分で問題を探し、解決し、考えたことをメンターに話すということが必要になります。教えてもらう前提でいると困惑するかなと思うので一応残念な点に入れましたが、むしろいい経験になるかもしれません。
* 完全オンラインだったので、若干質問しにくい
    * オンラインの弊害ですね。相手の顔が見えないので、質問しにくいです。1日1回のGoogle Meetは顔出しでやってもいいのかなと考えていました。
* グループの人数が少なく、知識の共有があまりできない
    * インターンの醍醐味の1つは普段関われない人との関わりかなと思うので、インターンの参加者が5人であれば1つのグループでもよかったのかなと思いました。
* 会社での実務を想像することができない
    * 会社での実務を取り入れたようなインターンではないので、自分が実務ではどういうことをやるのかというのを想像できるようなインターンではなかったと考えます。

# オススメの人
ITインフラ、特にコンテナ関係の技術に興味があれば、初心者から上級者にかけて誰でもオススメだと思います。初級者であれば大幅に成長できると思いますし、上級者であれば腕試しになると思います。
* ITインフラに興味のある人
* ネットワークやクラウド、セキュリティについて知りたい人
* 現場で働くエンジニアと話がしたい人
* インフラ系の知識は既にあり、さらなる知識を獲得したい人
* dockerやkubernetesを使ってみたい人
* グループでの作業をしてみたい人

# あんまり向かない人
　全体的に、用語や知識の種は教えるから後は頑張ってという感じになることが多いので、IT系の勉強を始めたばかりという超初心者はかなり厳しいと思います。誤解のないように言っておくと、質問したりもできるので完全に手放しという意味ではなく、質問点が不明なくらいわからないだと質問できないので大変だよという意味です。また、自分で調べて知識を広げていかなければ最後のブログを書くことが難しいので、これもできなくてはなりません。
　また必須でもないのですが、コンテナのOSの関係上、Linuxを扱う機会が多いのでLinuxの操作が極端に苦手という方は苦労するかなと思います。

* ITに関する知識が全くない超初心者
* 1を教えてもらい、10を調べていくように知識を広げるのが苦手な人
* 時間や役割が決まっていないとだらけてしまう人
* 実務に近い経験を積みたい人
* 英語のドキュメント読むの嫌な人

# おわりに
　3-shakeさんでの2週間インターンについて色々話してきました。社長さんと最後に話す機会があったのですが、考え方が現代的で現実的な印象の方でインターン生に対しても非常に丁寧な方でした。このインターンは、全体を通じてかなり成長できたと考えています。説明会やグループワークの延長のようなインターンではなく、メンターの方と一緒に考えて技術を学んでいくインターンだったので、他とは異なるインターンでテック系好きの私としては楽しいインターンでした。

　インフラ技術に興味があればぜひ3-shakeさんを覗いてみると楽しいと思います！