見出し画像

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

2021年8月2日(月)~2021年8月6日(金)の5日間で,サイボウズさんの生産性向上チームのインターン(オンライン)に参加させて頂きました!

自分の備忘録・アウトプットの一環として振り返りをしていきます.

生産性向上チームでのインターンは今年が初めてということで,(今後も同じ形でインターンがあるかは分かりませんが)今後参加する人の参考になれば幸いです...!

サイボウズのインターンについて

サイボウズはkintone, Garoonなどのチームを支えるサービスを開発している企業です. 

そんなサイボウズの2021のサマーインターンは9コースがあります.フロント,デザイン,モバイルからインフラやQA,セキュリティまで幅広く網羅されてますね👀

参加した経緯

自分は普段主にサーバーサイドのことをやっていて、インフラは個人開発程度でちょっとやったことがあるというような状態で、サマーインターンでは自分が普段やっていないこと+必要性を感じているインフラ周りのことを経験したいなと考えていました.

インフラ(?)の知識は、個人開発だとGitHub ActionsでCI/CDをしたり、Grafanaでログの監視をする、AWSのEC2とかRDS,S3などの基本的なサービスを触ってアプリケーションを構築したことがあるぐらいの感じでした.

なので9つのコースを見たときに、DevOpsやKubernetesは全然知識がないけど、CI/CDなど開発に関することの効率化や自動化には興味があるし、事前知識も少しだけあると思い、生産性向上コースに興味がありました!

他にもモブプロだったり多様な働き方で有名なサイボウズさんのカルチャーを体感してみたかったというようなこともインターンに参加したかった理由の1つです.

生産性向上チームについては以下を見てもらえると👀

やったこと

5日間のインターンで,生産性向上チームの業務タスクに取り組ませて頂きました.インターン生は自分ともう1人の2名で,1日の始まりで30分間程度のデイリーミーティング,1日の終わりにKPTで振り返りをするというような形でした!タスクの進め方は,25分の作業と5分の休憩を繰り返すポモドーロ形式で,インターン生2名とメンター3名の5名でモブプロするというような形です⏳

1日目はオリエンテーションや環境構築をして,2日目から実際にタスクに取り組みました.
タスクもその都度チケットの中から自分たちインターン生の好みで選ばせて頂きました.正直他にどんなタスクがあったか覚えていないんですが, 「なるべく色んな技術を触れたい」みたいな理由で,GitHub Actions self-hosted runnersの運用改善に取り組むことにしました.

結果的に使った技術としても,GitHub ActionsAWSTerraformDatadogといった感じで色々触れて楽しかったです!

GitHub Actionsは通常,GitHubが用意してくれた実行環境(GitHub-hosted runners)で実行されますが,この実行環境だと,社内ネットワークからしかアクセスできない開発基盤で GitHub Actions を使えないなどのことがあります.そこで,自分で用意した実行環境で実行するというのがself-hosted runnersという仕組みです.

以下, runnerについてのドキュメントです👀
Github-hosted runners
self-hosted runners

ざっと箇条書きすると,取り組んだタスクは以下のような感じです.

・TerraformでIAM Userのポリシーを修正・反映
・runner poolのTerraformモジュールを切り出し
・runner poolのステージング環境を作成
・Datadogでランナー数の異常検知

↑書いてあるそのままなのですが, 少し具体的に説明すると, 
IAM Userのポリシーが不足しており,CI/CDが失敗していたため,TerraformでIAM Userのポリシーを修正・反映したり,runner poolのTerraformモジュールの切り出しでは,別リポジトリを作成してそこにTerraformモジュールを切り出し,作成したリポジトリにGitHub Actionsでプッシュ時に自動でタグを付与して,元リポジトリでは切り出したリポジトリのタグを参照するように修正するなどしました.

また,生産性向上チームではワークフローの実行に合わせて,runnerがオートスケールするような仕組みになっていました.そこで,オートスケールするランナーが異常に多くなってしまう場合などにアラートが飛ぶようDatadogで設定を加え,Terraformでコード化し管理できるようにしました.

オートスケールするGitHub Actions self-hosted runnersについては以下を見て頂けると👀


5日間のインターンでしたが,小さいものも含めると(手元のメモによると)PRの数としては10個ほどマージでき,良いペースでタスクを消化できました(もう1人のインターン生とナビゲーターしてくれたメンターさん達のおかげ...)

開発以外のイベント

開発以外にも毎日のランチ会で生産性向上チーム以外のチームの社員さんを呼んで頂いて雑談をしたり,4日目に社員面談があるなど,生産性向上チーム以外のサイボウズ全体の話を聞ける機会がたくさん設けられていました!(毎日ランチ代が出るのも素晴らしかった🤤)

2日目には人事面談があって,困っていることや不安なことがないかなどたくさんサポートして頂いて,困ることなく業務に集中できました!

3日目には他コースのインターン生も含めてみんなで社長の青野さんと1時間ほどお話しする機会も設けて頂いて,青野さんの考え方やサイボウズのことについてもより詳しく知る機会がありました!

最終日には懇親会があり,インターンの余談や雑談,ここだけの話で盛り上がってめちゃくちゃ楽しかったです...エモかった...

後日談ですが,10月中旬にはインターン生限定(?)のMeetUpがあって「もう2ヶ月経ったんだね...」とか言いながら近況を話したりして懇親しました!

学べたことと発見した課題

生産性向上のための取り組みやインフラ・DevOps周りの技術的な知見を広げることと,サイボウズの開発やチームの雰囲気を知るという大きく2つのことを目標にして参加して,5日間という短い期間ですが,非常に充実していました.

技術的なところで言うと,なかなか業務で触れる機会がなかったTerraformやDatadogに触れることができ,知見が増えました.自分はTerraformは全く触ったことがなく,self-hosted runnersについてもインターン初日で初めて知りました.ですが,何のためにこのCI/CDやself-hosted runnersの仕組みが必要で何のためにこのタスクが必要なのかを理解することで,やるべきことの手順が明確になり,どういう流れで.tfファイルを修正して反映させるかだったり,Datadogでは何を見なければいけないのかが分かり,理解が深まりました.

それに加えて,自分がインフラ領域を触れるために足りていない基礎知識も明確になりました.ちょっとしたことをやるためにシェルスクリプト(あまり書いたことないからビクビクしながらドライバーしてた👼),自分の生産性を上げるようなVimやGit,Linuxコマンド.シェル自体や環境変数に関する理解も甘くて,詰まった部分が多々ありました.

Vimについてはいつもちょっと編集して保存して終わりぐらいな感じで,今回のインターンほどヘビーユーズしたことがなかったので覚える良い機会になりました(最初に比べると操作だいぶ速くなったはず...改めてVimmerすごい👁)

Gitにしても、WIPでcommitを積んでおいて後からrebaseして積み直すなど品質に対するこだわりを感じました.他にも git add -p とか git commit --amend --no-editとか便利なコマンド達を教えてもらい,自分が今までやっていたことの非効率さに気付けて勉強になりました(モブプロの良いところな気がする)あとタグを打つのも初体験でした...

チーム開発的なところでは,モブプロでのドライバーやナビゲーターの立ち回り,ポモドーロ形式での進め方,受け入れ条件やカンバンでのスクラム開発を生産性向上チームでの普段の業務と同じように体験できました.

技術以外にも会社や社員さんの雰囲気も体感できましたし,サイボウズさんはグループウェアを作っていることもあり,圧倒的にセキュリティ遵守意識の高さを感じました.インターン開始前にセキュリティに関する簡易なテストがあったり,インターン中やインターン後も情報管理にすごく手が込んでいました.学生のうちからセキュリティに気を遣う意識があるのは今後のためにもなると思うので非常に勉強になりました.

まとめ

5日間というめちゃくちゃ短い期間ですが,モブプロだったからこそ短期間で自分の知らないことをたくさん吸収できましたし,もっと言うと生産性向上チームの温かい雰囲気のおかげで心理的安全性が高く,分からないことだらけでも楽しく学べました!(人事の方も社員の方も温かい人ばかりだった)

ありがとうございました🙌

参考


この記事が気に入ったらサポートをしてみませんか?