サイボウズのインターンに参加してきました

## はじめに

8/23~8/27の5日間で、サイボウズのサマーインターンに参加してきました。
サマーインターンへの参加は初めてで、すごく緊張していたのですが、
楽しくて、会社の雰囲気も知れて、学びもあって、(5日で10万貰えて、)全部最高でした！

今回は、そんなサイボウズのインターンについて書いていこうと思います！

## 概要

https://cybozu.co.jp/company/job/recruitment/intern/2021/webservice.html
> サイボウズが提供するkintoneを題材として、新機能のプロトタイプを開発します。既存の要望リストの中から課題を選び、仕様検討や実装、テストの自動化にチャレンジしてもらいます。プロトタイプはkintoneチームが実践しているプロセスに沿って、モブプログラミングで開発します。kintoneチームのエンジニアがメンターとして指導やコードレビューを担当し、大規模なWebサービス開発の現場を体験することができます。 (サイボウズのインターン募集ページの概要からです)

今年のサイボウズのサマーインターンには9つもコースがあり、僕はWebサービス開発コースに参加してきました。

> 使用技術：Java,JavaScript


同時期には6人参加で、開発は3人ずつの2チームに分かれて行われました。参加者3人、メンター2人の構成です。
フルリモートで行われ、基本的に一日中zoomを繋ぎ、モブプログラミングで開発を行いました。

1日目にkintoneの概要を知り
2日目に作るものを決め
3日目に開発を始め
4日目に開発を終えて
5日目に発表をする

みたいな感じです！
実際にやったことを見ていきましょ〜〜！

## やったこと

### 1日目

* インターンシップのオリエンテーション(& 顔合わせ会)
* セキュリティテスト
* kintoneの全体像、構成、コードを追うコツの説明
* 事初め練習課題

自己紹介や参加者との交流をしました。ついにインターンシップが始まったーって感じでした。

事初め練習課題では実際にkintoneを自分の手元で動かして、
コードを探りながら該当箇所を探して文言変更をしてみたり、特定の処理が書かれているファイルを探したりしました。

kintoneを開発しているという感動はすごかったです、、、
慣れない構成やライブラリを使ったコードを読むのは難しかったですが、落ち着いてコードを追っていけば意外とできるものなんですね〜。
※開発に慣れるためのものなので採点されるとかではないです。ちなみに答えもありました。

### 2日目

* 昨日の課題の解説や好きにコードを触ってみる時間
* 仕様書講座
* 社長ランチ
* 課題決め、要件定義、仕様書作成 (←ここからモブプロ スタート)

仕様書を作る意義や作り方について学びました。
サイボウズで扱う仕様書に関する講座を受けた後は、ついにチームが発表されました。
このチームで残りの期間を一緒に開発していきます。

チーム名決めも1分くらいで決まり、出だしばっちしです！！！！

今日は社長とのランチ会もありました。
Webサービス開発コース以外のインターン生も集まり、
ご飯を食べながら、社長に色々と質問に答えて頂く時間です。
なんか緊張しました、、、

午後は、課題決め、要件定義、仕様書作成をしました。
3人で順番にzoomの画面共有をし、話し合い、kintoneを活用しながら進めていきました！(kintone便利!)

いくつか候補で挙がっている実際の課題から、選択し実装していきました。
動くものを作り切りたいという思いで、作り切れるを第一に考えて決めていきました。
僕たちは、(全種類の)自分のチャットを一括で取得して表示するAPIを作成することにしました。

### 3日目

* 開発プロセス講座
* 開発
* スプリントレビュー見学

開発プロセス講座で、実際のサイボウズでの開発の流れについて教えてもらいました。
色々質問にも答えてもらい、実際のモブプロしている所を見て、少しずつサイボウズでの開発の雰囲気を掴むことができてきました。

他の人にコードを見られる経験が全くなかったので、初めてのモブプロはすごく緊張しました。
30分交代で、順番に回しながら進めていきました。
「これ、分からない所、分からないままにしたら詰むな」って痛感したのを覚えています。

スプリントレビュー見学では色んなチームがやっていることを色々と見学し、すごくなんとなく雰囲気を掴みました。(難しかった、、)

### 4日目

* 開発

4日目はひたすら開発を進めました。

意外とスムーズに進んだので、
リファクタリングをしたり、より良くできるところ探して改善したり、テストなども挑戦していました。

大規模ならではの少し複雑な仕様に対する実装などの経験もできました。

### 5日目

* 資料作成
* 社員面談
* 発表会
* 片付け
* 懇親会

最終日は、インターンの集大成、発表の日です。

午前中と午後の最初は資料作成です。

5日目には社員面談もあり、希望した社員の方とお話しする機会を頂けました
お忙しい中ありがとうございました！
サイボウズの働き方から、エンジニアとしての成長のためのアドバイスなど色々とお話しさせて頂きました。

そして発表の時、
たくさんの社員の方が発表を見てくださいました。
発表中もkintone上で、発表に対するコメントでライブ配信のように盛り上がっており、すごく楽しそうでした！
本当にいい雰囲気の会社だなって、、

発表が終わったら、支給PCを配送する準備やその他アンケートなどの最後にやる事を終わらせ、懇親会をして無事5日間のインターンシップに幕を閉じました

**楽しかった〜〜〜〜**

終わり、、

## 学んだこと

* 「分からない事は分からないと言う」「考えている事をアウトプットする」みたいな事や、質問するべきかどうかを早く判断する事、質問するべき所はきちんと質問する事などが大切だと痛感した。
* 考慮すべき仕様が多く、大規模ならではの難しさみたいなものを体験できた。
* サイボウズの働き方の雰囲気が掴めた。
* 少ない情報から推測していく経験ができた。
* 話し合いながら未知なものに取り組む経験ができた。
* エラー文読んだり、ログを見たり、chrome dev toolsを使ったりと正確な情報が出ている箇所は、結局1つずつそれらを見ていくのが一番早くて適切だと思った。
* 一旦仕様を考え、実装し、仕様を再検討し、実装していくという風に進めて行く経験ができた。
* テストめっちゃ大切だと痛感した。

## 感想

* 人にコードを書く所を見られる経験がなかったのでモブプロはすごい緊張しました。でも、間違った所や分からない所で助けてもらえたり、他の人がコードを書くところが見れて良かったです。
* 5日間という短い期間だと言語自体の細かな技術力よりも、(サービスの仕様とかに)どこまで気づいて考慮できるか、話し合って上手く進めていけるか、みたいな事が大事だなって思いました。
* リモートだと質問しづらかったり寂しい感じがあるのかなと思っていたのですが、全くそんなことはなく、zoomの繋ぎっぱなしが想像以上に良かったです!
* いつでも誰でも気軽に(チャットで)発言できる場があるのもすごくいいなって思いました。発言しやすい雰囲気がとても好きでした。
* 一緒に参加していた皆が強くて刺激になりました。色んなエンジニアと話す機会があって嬉しかったです。
* 有名で人気のあるサービス(kintone)の開発をしていると思うと嬉しかったです。
* インターンで必要なこと殆ど全部kintoneでやっていて、kintone便利〜！！

## さいごに

インターンシップで関わってくださった皆さん本当にありがとうございました！！
メンターの方も人事の方も一緒に参加した方もすごくいい人ばかりで、沢山支えて頂き、感謝の気持ちでいっぱいです。
5日間は本当にあっという間で、とても濃密で楽しい有意義な時間を過ごせました！

自分自身が始まる前にすごく緊張していたので、同じような人が具体的なイメージを持つことで、
「参加したい！」って思ったり、緊張を減らして楽しんでくれたらなって願っています！