ゆめみの2weekサマーインターンに参加してきました

# はじめに

はじめまして。26卒（予定）エンジニアの山口です。
8/28〜9/8までの計２週間、[株式会社ゆめみ](https://www.yumemi.co.jp/)のサマーインターンにサーバーサイドとして参加してきました。

今回はインターン初参加で緊張しまくりの自分が、どんなインターンだったかを記していきたいと思います！

# 概要
> 「社内プロダクトの拡張機能を開発しよう！」をテーマに、インターン生でチームを組んで開発していただきます。「そもそもどういった機能を作るのか？」からチームで考え、設計からテスト実施までメンターと協力しながら一気通貫で行います。
> 

職種としてはフロントエンドエンジニアとサーバーサイドエンジニアの２種類で、計8人〜12人程度の募集でした。
業務時間としては10時〜19時のフルタイムインターンです。

ちなみに今回が初回開催で、自分はサマーインターン１期生だそうです。

# 選考
選考フローは「エントリー」→「コーディングテスト」→「オンライン面接」という流れでした。

### 1. エントリー
基本的な経歴とかを入力する感じです。

### 2. コーディングテスト
エントリーをすると入力したメールアドレスに自動でコーディングテストのURLが送られてきました。
コーディングテストはWeb APIの叩き方を理解していれば、実装はできるかなという感じの難易度で実装難易度だけで言えば簡単だったと思います。
ただコードの綺麗さが見られるので、ただ実装できれば良いという感じではなかったです。

そしてコーディングテストを受けて、２日程度でコーディングテストに対するフィードバックが送られてきました。

ゆめみにはGood/Nextというフィードバック文化があるようで、良かったところをGood（褒める）、今後のステップアップ・改善点としてのNext（機会点）というフィードバックのフォーマットが定義されていて、コーディングテストのフィードバックもこのフォーマットに則ったものでした。
落ちるかも…自分の技術力じゃ…という方も受けるとコードに対してフィードバックがもらえて、次の成長につながるのでとりあえず受けてみるのをおすすめします！

私はこのフィードバックとともにコーディングテストの合格を伝えられ、面接に進むことができました！

### 3. オンライン面接
面接の前にメールで履歴書を送るのと、Googleフォームで志望理由やアピールポイントを事前に聞かれました。
面接では自分が送ったアピールポイントを元に話をしていくといった感じでした。
自分がメインで話をして、面接官の方が気になることがあったら質問されるという流れでした。
また面接の最中にもフィードバックがたくさんありました。ここでもGood/Nextが意識されていて、面接の最中なのに、成長ができるとは思ってなかったです。

また合格通知が送られてきたときにも、Good/Nextで面接に対するフィードバックがあってとても良かったです！

# 合格後の話
合格後、契約や口座情報のやり取りなどの事務的なことと、貸与PC関連でメールでやり取りを行います。
今回、PC貸与ではMacBook Proが送られてきました。
その際、USかJISを選べたのはUS派の自分としてすごく嬉しかったです…

ちなみにスペックですが、インターン生間でも結構バラバラで、Intel i7 Mac 〜 M1 Macまで幅が広かったです。ただでも最低でもメモリ16GBはあったので、スペックで困ることはないと思います。（自分はi7 32GBの2020 Intel Macでした！） 

貸与PCが届いてからはSlack上でのコミュニケーションに移り、インターン期間中にバディをしてくださる社員の方との面談やインターンの準備を進めていくという感じでした。

# インターン期間中の話
インターン期間中の話として、全体の流れを説明してから、開発のこと、会社の雰囲気など思ったことの順で話していこうと思います。

## 全体の流れ
まず始業が10時だったんですが、10時から朝会というのがありました。
名前的に堅苦しいやつを想像していたんですが、今の気分や昨日やったこと、今日やるタスクの確認、今困っていることなどを共有する場で、全体を通して和やかな雰囲気でした。
ここはバディの方もいますが基本的にはROM専で、インターン生が中心となって進める感じでした。

18時からはバディ定例があり、バディの方と1日の振り返りを行いました。
KFCCといういかにもフライドチキンをイメージしそうな振り返りを行います。
```
K=Keep（継続したいこと）、F=Failure（失敗したこと）、C=Challenge（挑戦したいこと）、C=Celebrate（チームの他の人の褒めたいところ）
```
それを元にバディ定例を行います。自分の書いたKFCCに対して、Good（お褒めの言葉）をいただいたりNext（今後どうするべきか）をもらえます。
自分の場合は、どんな小さいことであっても見てもらえてて、色々な褒めの言葉をもらえたのですごくありがたい限りです…

またインターン期間中はfeedbackチャンネルというのがあり、Thanks（感謝）やFeedback（Good/Next）が飛び交います。（これ自体もゆめみの社内文化の１つらしい）
バディの方に対してやメンバーに感謝やフィードバックを送ります。

そしてインターン期間中はインターン生１人ずつにOJTチャンネルという、いわゆるtimesに近いチャンネルが設けられました。
ここで自分の何でもないこと、悩み、批判など思考を垂れ流すことが推奨され、自分も積極的にOJTチャンネルに考えていること・やっていることを流しました。
OJTチャンネルで悩みや詰まってることなどをポロッと書くと、誰かが飛んできて解決してくれます（インターン期間中、すごく何度も助けられました）

### Day1
1日目は開発というより、話を聞く時間の方が長かったです。
午前はインターン全体の説明から始まり、期間中に一緒に開発に取り組むチームとのお昼会兼チームビルディングとしての簡単なゲームを行いました。
チーム分けは8人を2チームに分け、1チーム4人でフロントエンド2人、サーバーサイド2人みたいな感じでした。（みんなつよつよだった…）

ここのお昼会ですが、なんとゆめみの制度である[ミニレク（懇親会費用補助）](https://notion.yumemi.co.jp/oss/db/%E3%83%9F%E3%83%8B%E3%83%AC%E3%82%AF%E6%87%87%E8%A6%AA%E4%BC%9A%E8%B2%BB%E7%94%A8%E8%A3%9C%E5%8A%A9)という5000円まで会社のお金でご飯が食べられる制度を利用できました。

午後はゆめみの代表直々からのフィードバック研修というのを受け、どうすれば最高のフィードバックをもらえるか？というチームビルディングを兼ねた研修を受けました。
最高のフィードバックを受ける為に、
- 自己紹介ではなく、自虐紹介をすることによってツッコミを受ける
- 先輩をお大袈裟に褒める
ことでフィードバックを受けやすくなるとのお話があり、その後に実際にチーム内で試す時間が設けられた感じです。

この研修の後、今回のインターンで取り組むタスクについての説明があり、チーム内でタスクの読み込み、分解や分担を行って１日目が終わった感じです。

### Day2 〜 Day4
基本的に開発メインでした。
開発の章で詳しく話します。

### Day5

５日目である金曜日は午後から成果物の中間発表会がありました。
１週間どのように取り組んだか？どのようなタスクに取り組んだかを社内勉強会の一環として発表を行いました。
その後、１週間全体の振り返りとしてチーム全体でKFCCをやりました。
チームや自分の来週継続していきたいこと、今週失敗したこと、来週挑戦したいこと、そしてチームメンバー同士で褒め合う時間でした。

その後、全社会という会社全体の会議に参加させてもらいました。
インターン生であっても、このような会議に参加させてもらえるというのはゆめみのオープンさをとてもよく表しているなと思いました。

### Day6 〜 Day9

基本的に開発メインでした。
開発の章で詳しく話します。

### Day10
最終日は開発という感じではなく、2週間の振り返りという感じでした。
午後から最終発表を中間発表と同じように、この１週間どのように、どんなタスクに取り組んだかをこれまた社内勉強会として発表を行いました。
その後、最後のKFCCを行いました。この週、そして２週間を通じて、今後継続したいところと、失敗したところを振り返りました。
また来週はないけども、チャレンジとして今後各々で取り組んでいきたいことやもし来週があるならば挑戦したかったことなどを考えました。

その後、総括や打ち上げをして終了となりました。

打ち上げでは初日のチームビルディングと同じく、[ミニレク（懇親会費用補助）](https://notion.yumemi.co.jp/oss/db/%E3%83%9F%E3%83%8B%E3%83%AC%E3%82%AF%E6%87%87%E8%A6%AA%E4%BC%9A%E8%B2%BB%E7%94%A8%E8%A3%9C%E5%8A%A9)を活用でき、ゆめみのお金で夜ご飯を食べられました！

インターン生やバディの方とインターンを振り返ったり、趣味や大学・学校の話で盛り上がりました。

## インターンで取り組んだ開発
今回のインターンで取り組んだプロダクトはゆめみの社内ツールである「JobBoard」のリニューアルでした。
JobBoard自体はNotionで元々管理されていた、ゆめみ社内の求人ツールです。
ゆめみは珍しいことに上司やマネージャーという概念がなく、全社員が平等であり、全社員がCEOという会社なので当然自分の参加するプロジェクトも自分で探してくるそうです。

なので完全に社内の「求人サイト」というわけですね。

それで今回はそんなNotionで管理されていたJobBoardをWebアプリに置き換えよう！という計画です。
また今回のインターンはなんとサーバーサイドRustです。
アーキテクチャとしてはDDD＋オニオンアーキテクチャを採用していました。
自分はRustもDDDもオニオンアーキテクチャも未経験で、始まる前はついていけるかとにかく不安でした。

今回、自分が取り組んだタスクは主に３つです。

- 求人に対してリアクションをつけられるようにする
- 求人にリアクションがついたら案件担当者にSlackで通知する
- マイページの説明欄

うち、上２つのタスクは既に仕様は決まっていて、OpenAPIでAPIを定義して、Rustで実装する感じでした。
しかし、下のマイページについては仕様が何も決まっておらず、どんな機能があれば良いか？というところからチームで決めていく感じでした。

当然デザインも自分たちで決めるので、フロントエンド組は自由さに歓喜してたっぽいです。

技術スタック的には言語はRust、ORMはSeaORMでHTTPフレームワークは自社開発のものでした。
RustやSeaORMについては近日中に別で記事を書こうと思っています。
（インターン期間中にRustの型推論の限界にぶち当たったり、SeaORMのバグを踏んだりと結構語ることが多いので分けます…）

## 会社について思ったこと
このインターンを通して、ゆめみという会社や社員の皆さんの雰囲気を十分に感じることができました。

まずフルリモートなのに社員の皆さんが仲が良く、雰囲気がいいのを感じられました。これは普段から感謝の言葉やフィードバックを送る文化が根付いていることであったり、勉強会がよく開催されていること、オフ会などのオフラインイベントなども積極的に行なっていることが関係しているのかなと思いました。
それだけでなく、OJTチャンネルの活用が積極的な社員の方が多く、そういったところも関係しているのかなと思いました。
あと代表のれいっちさんが社員の方にかなりいじられていて、面白かったです。

また改めて制度が非常に充実している会社だなと感じました。
実際にインターン期間中に[ミニレク（懇親会費用補助）](https://notion.yumemi.co.jp/oss/db/%E3%83%9F%E3%83%8B%E3%83%AC%E3%82%AF%E6%87%87%E8%A6%AA%E4%BC%9A%E8%B2%BB%E7%94%A8%E8%A3%9C%E5%8A%A9)制度も活用させていただきましたし、全員CEO制度でプロリクが出されているところも目にしました。
また[フルリモし放題制度 ㊗️ MAX](https://notion.yumemi.co.jp/oss/max)という制度のおかげで、バディのみなさんの作業環境が非常に良さそうで期間中すごく羨ましくなりました…！

そしてオープンな会社であると改めて感じた次第です。
元々Notionでゆめみのさまざまなことを公開していることや、全員CEO制度というのもあって、風通しの良い会社であることは分かっていたのですが、想像以上でした。
インターン生にも関わらず、全社会でゆめみの経営状態や経営課題など、経営に関わるセンシティブな情報も知らせちゃうということにかなり衝撃を受けました。また全社会という名前からして真面目な会議かと思っていたのですが、真面目な部分とネタな部分があって面白かったです。

またサマーインターン自体が23卒の方がチャレンジ取締役となって、進めた企画という風に聞いて驚きました。
23卒で取締役というのはなかなかのパワーワードですし、企画してから半年経たずして実際に開催というスピード感はなかなか真似できる会社さんは多くないと思います。

# 学んだこと

- OJTチャンネルに自分がやっていること・思考などを垂れ流すことで詰まっていることや進捗状況などをみんなに積極的に共有するのは大切だと感じた。
- 自分の強みや弱み・今後学習するべきことを明確にできた。
- ほとんど知らない言語であったRustを最低限は書くことができるようになった。
- DDDやオニオンアーキテクチャがどんなものであるか、どんなところが利点であるかなどを掴むことができた。また実際にどのようにディレクトリを分けて、どのように実装していくかの実践的なことを学ぶことができた。
- 自分にはデータベースやSQL周りの知識が足りていないことを痛感した。特に結合周りの知識が全然足りていない。NoSQLに逃げている場合ではなかった。
- ゆめみがどんな会社でどんな社員さんが働いているのかを掴むことができた。
- フルリモートで働くとはどのような感じであるか、体感することができた。

# 感想

- インターンが始まった当初、周りがつよつよだらけで困惑したがなんとか走り切ることができて良かった。
- 人にコードを見られる経験が少ないのでレビューで指摘されることで自分のコードの品質を高めることができたかなと思った。
- 今回２Weekということもあって、あまりペアプロする時間を取れなかったがもうちょっと取っても良かったのかなと思った。
- チーム内のフロントエンドとサーバーサイド間、チーム間でのコミュニケーション不足だったなという反省点があった。次に何かしら機会があるならば、もっと密にコミュニケーションする必要があると感じた。
- そこまで大きくないと思ったPRが最終的に大きなPRになってしまったので、もっと初めの方で細かくタスクを分けるべきだったと思った。これも反省点。

# 最後に
２週間という長いようであっと言う間の素敵な日々でした！
このインターンに携わった社員の皆様、レビューしてくださった皆様、インターンを企画してくださった社員の方、バディの方、チームの皆さんに改めて本当にありがとうございました！！！
本当に参加して良かったです。

この記事が少しでもゆめみのインターンに興味がある方にとって、参考になれば幸いです。