こんにちは。株式会社フィックスポイントのよしだです。
今回は、2023年度の新入社員技術研修をご紹介します!
フィックスポイントでは、新入社員のエンジニアに対して毎年部署配属の前に2ヶ月ほど研修を行っています。
本記事では、研修の終盤に行う個人開発タスクに焦点を当てて取り上げたいと思います!
全体的な研修の内容や体制については、前年度の記事に詳しく記載しておりますので、気になる方は見てみてくださいね😊
個人開発タスクとは
研修で取り組んだ内容に入る前に、個人開発タスクとはなにかについて説明します😌
弊社エンジニアの新人研修では、研修期間の後半に個人開発タスクを課しています。
各自開発する内容のテーマを選び、要件定義からマニュアル作成に至るまで一連の開発の流れを体験し、最後に全社員に向けて成果物の発表を行う、という研修内容です。
開発テーマは、既存社員が要望や困りごとなどを元に提案したものの中から選択します。
つまり、社内の課題解決と新入社員の開発体験ができる一粒で二度おいしい研修課題ということです✨
それでは、実際の内容について見ていきましょう!
テーマ選択
開発を行うにあたり、どのテーマを取り上げるか各自が選択していきます。
今回、新入社員三名が選択したテーマは以下の通りです!
テーマが挙げられた理由も併せてご紹介します。
Aさん:Slack でスタンプがたくさん付いたものをランキング化する bot 作成
- リアクション数の多い投稿をまとめたい
- 普段見ていないチャンネルの投稿を見るきっかけになりそう
- 社内の大喜利として使われたらおもしろそう
Iさん:Kompira cloud 検証環境の予約システム作成
- 現状の検証環境使用に関する運用手順が煩わしい
- 手順を全体的に自動化できたら嬉しい
Hさん:社員の休暇予定をカレンダーから抽出し休暇当日に Slack へ不在の投稿をしてくれる bot 作成
- 休暇を取る際、諸々登録したり連絡する必要があり煩雑である
- カレンダー登録に則って自動で投稿してくれたら手間が省ける
開発内容紹介
各自のテーマが分かったところで、それぞれの開発内容や過程にフォーカスしていきましょう♪
成果物発表会の内容を基に、各開発タスクの大まかな機能や処理構成などをご紹介します。
Slack でスタンプがたくさん付いたものをランキング化する bot 作成(Aさん)
最初に取り上げるのは、Aさんが作成した "Slack でスタンプがたくさん付いたものをランキング化する bot" です!
まず、機能についてもう少し詳細に説明します。
弊社 Slack の各チャンネルにおける一日分(AM5:00~ 翌 AM4:59)の投稿に対するスタンプの総数を集計します。
集計した内容をランキング化し、上位10位までを翌日7時頃に Slack の #ranking というチャンネルに投稿します。
以上が機能の概要です✨
下図は実際に #ranking チャンネルに投稿された順位です。
リンクを踏むと該当の投稿に飛ぶことができます。
さらに一番下に記載があるように、 Web ブラウザでは100位までランキングを見ることもできます!
システム構成としては以下の通りです。
今回作成した bot はランキングコンテナと Web サーバーコンテナの2つで構成されています。
ランキングコンテナではランキングを生成するアプリ「Slack rank」を cron で定期的に実行します。
Slack rank は、まず Slack に投稿の情報を取得しに行きます。
その後、情報を基にスタンプ数によって投稿をランキング化し、今度は生成した内容を Slack の #ranking に投稿します。
Slack rank は同時に HTML でランキングを100位まで生成しており、HTML には Web サーバーコンテナを通じてアクセスすることができます。
Web サーバーコンテナは Nginx を使用しているそうです。
少し余談ですが、Aさんは最初 Docker run コマンドでコンテナを建てていたのだそうです。
ただ、メンターから「Docker compose を使用して、ついでに Web サーバーも建ててしまえば?」とアドバイスをもらったことから方針変更したとこのことでした。
メンターに都度相談に乗ってもらいながら開発を進めているからこそ、自分にない発想も取り込めることが分かるエピソードですね✨
発表中の #workshop チャンネルでも以下のようにたくさん反応が見られました😊
Kompira cloud 検証環境の予約システム作成(Iさん)
続いて、Iさん作成の "Kompira cloud 検証環境の予約システム" をご紹介します!
まず、検証環境使用における運用の背景から説明します。
検証環境は、Kompira cloud を開発しているエンジニア全員で共用しています。
検証用に手を加えるのがバッティングしないように宣言してから使う運用になっているため、各製品や機能ごとにより使用期間を調整する必要がありました。
具体的には以下のような手順でした。
文字に起こすと分かりやすいですが、画面の移動や書き込む手間が多くかなり煩雑ですね。
そこで、今回Iさんの検証環境予約システムにより全て Slack 上で済ませられるようにし、手続きの簡略化を行ったのです!
具体的な機能としては以下の通りです。
- Slack の #dev-book-channel チャンネルでユーザー登録をする
- 同チャンネルで予約可能かスケジュールを確認する
- 同チャンネルで「使用したい環境名」と「使用期間」を書き込み予約する
実際のスケジュール確認画面と予約確認画面がこちらです。
Slack 上で全て済んでしまうのでとても楽ですね!
先輩社員からも以下のように高評価なコメントが寄せられていました🌟
今回、Slack と Google カレンダーを連携させるに当たって、弊社の製品 Kompira Enterprise を活用したようです。
Kopira Enterprise については下記をご参照ください😌
それでは、上記機能を実現したシステムの概要について説明します。
ここでは、スケジュール予約をする場合を取り上げます。
以下のステップを踏むことにより、Slack のみでの予約を実現しているのだそうです!
- ユーザーが規定のメッセージを書き込む
- 規定のメッセージ:スケジュール予約 <@Slackユーザー名> <環境名> <開始日程> <終了日程> <理由>
- Kompira Enterprise が Slack からメッセージの情報を取得する
- Kompira Enterprise がメッセージの内容が正しいか確認する
- Kompira Enterprise が Google カレンダーにスケジュールを予約する
- Google カレンダー上にスケジュールが作成される
- Kompira Enterprise が作成されたスケジュールの情報を取得する
- Kompira Enterprise が最新のスケジュールを送信する
- ユーザーが Slack 上で予約が完了したことを確認する
今後実務で触れる機会もある自社製品を活用して開発を行うことで、より理解も深まるタスクなため研修の題材として最適なテーマだったのではないかと思います♪
社員の休暇予定をカレンダーから抽出し休暇当日に Slack へ不在の投稿をしてくれる bot 作成(Hさん)
最後は、Hさんの休暇予定をカレンダーから抽出し休暇当日に Slack へ不在の投稿をしてくれる bot です!
こちらのテーマも社員の手間を減らすために生まれた課題でした。
弊社では、TeamSpirit で勤怠の管理を行っており、まず TeamSpirit で休暇の申請を行います。
その後 Google カレンダーに予定を追加して会議の辞退等を行い、さらに Slack で #attendance チャンネルに休暇の連絡をする必要があります。
最低でも3つのサービスをまたがって休暇に関する手続きが必要となり、手間がかかってしまう状況でした😇
そこで、今回は Google カレンダーに休暇の予定を追加した時点で会議の辞退や Slack への投稿を自動的に行うシステムを作成したそうです!
まず Google カレンダーの不在イベントを休暇情報として扱い、Slack において下記の内容が実行できるようにしました。
- スラッシュコマンドで自身のカレンダーに登録している不在イベントの一覧を bot 通知する
- メンション @name で対象のユーザーが不在イベント中の場合、bot 通知する
- attendance チャンネルに退勤コメント「終了」を投稿した場合、翌営業日の不在イベントの有無を bot 通知する
上記を実装するため、システム構成を下図の通り設計したとのことです。
Google カレンダーには休暇情報が登録された状態で、Slack 上の動きをメインに記載します。
- ユーザーが Slack でコマンドを実行する
- Slack はコマンドに基づき、Slack bot に休暇情報を確認する
- Slack bot が Google カレンダーの休暇情報を取得する
- Slack bot が Slack に休暇情報を通知する
- ユーザーが休暇情報を確認する
本システムのポイントを一点付け加えると、一日の区切りを朝5時に設定したことが挙げられます。
弊社のエンジニアはフルフレックスでの勤務を行っており、毎朝5時が一日の区切りとなっています。
そのため、例えば「今日は8時間勤務した」と言っても、休憩を含め "N日16時~N+1日1時まで" 勤務という状況が発生し得るのです。
実際、日付をまたいで集中できる夜をメインに開発時間に充てているエンジニアもいますので、朝5時に区切りを設定したことは先輩社員からの評価も高かったようです🤭
新入社員の感想
成果物発表会では、新入社員が今回の個人開発タスク研修を通しての振り返りも行いました。
全員が口を揃えて言っていたことは「Git の経験があまりなかったので難しかった」でした😂
以下、各自の感想を一部ですが具体的にご紹介します!
- Aさん
実際にやりたいことを明確にし言語化するのが難しかったです。
実装部分では、Git の commit 粒度や見やすさといった部分で、レビュワーに指摘を受けることが多くありました。
また、少し手を抜いてしまった部分については突っ込まれるので、指摘されたくない部分は必ず指摘されるのだと痛感しました。
Mermaid や draw.io といった周辺ツールへの理解も深まりましたし、早い段階でプロトタイプを作れたこともその後の判断材料となってよかったと思います。
Iさん
要件定義のための聞き取りに苦労しました。細かい背景の部分も考慮して話を聞けるようになるといいなと感じました。
実装では、Git を入社のテストの際でしか触ったことがなかったので、操作に時間がかかってしまいました。
テストについても単体テストに時間を消費してしまったため、最初からテストに引っかからないようなコードが書けるようになりたいです。
ただ、思いつきで載せたものの、なりすまし対策が指摘される前に実装できていた点はよかったと思っています。Hさん
API やアプリケーションを勉強しながら個々の仕様を理解していくのが大変でした。
実装記事や Q&A も見ながら試しに実装し、公式ドキュメントを読解する…というループを繰り返すことで少しずつできるようになって行きました。
Git の管理については、綺麗な PR を意識しすぎると更新頻度が落ちてしまうことが分かり勉強になりました。
もう少し GitHub の Issue を使って相談すればよかったかなという反省があります。
今回の開発を通して、commit を整理しやすいようにローカルでこまめに branch を切るようになったのは成長した部分だと思います。
新入社員のみなさんからは、ほかにも書ききれないほどたくさん感想を聞くことができました。
それぞれ学びや成長のある研修だったようで、とても身になったのではないでしょうか😊
おわりに
今回は、2023年度の新入社員技術研修の個人開発タスクについてご紹介しました。
配属前に開発の一通りの体験ができるのは、今後実務に携わる上でとても役立つ経験なのではないかと思います😌
これからの弊社新入社員の活躍に期待していてくださいね!
株式会社フィックスポイントでは、一緒に働いてくれるメンバーを募集しています!
詳細は、こちらをご覧ください。