こんにちは、コーポレートスタッフの小谷です。今回は、ジーニアルテクノロジー社内で開催されている勉強会の舞台裏をご紹介します。当社のエンジニアチームでは毎月1回、知識と技術の向上を目指すことを目的として勉強会を開催しています。当社のバリューの1つである「ともに成長する」を大切にし、メンバー同士で意見を出し合ったり情報交換しながら、業務に関連するスキル向上を積極的に推進しています。
エンジニアの仕事は、常に新しい情報をキャッチアップし、スキルをアップデートし続けることが求められます。そのため、社内勉強会を実施する企業は増えています。一方で、「勉強会を開催したいけど時間やスケジュールの調整、準備などハードルが高い」「過去に開催したことがあるが、負担が大きかった」と悩む方もいることでしょう。
当社ではCTOやVPoEが先頭になって自主的に勉強会を企画・推進しており、CTOの國田は、「負担も確かにあるが、試しに開催してみてメンバーの知見がアップデートされたり、何より充実感を持ってくれていることが分かってきたので、今後も積極的に開催していきたい」と感想を挙げており、勉強会という機会を大切にしていることが分かりました。
今回は、ジーニアルテクノロジーのフロントエンドチームが一堂に会し、使用言語の安全な書き方やテストコードに焦点を当て、その技術の向上を図りました。
以下に、勉強会の内容の概要を紹介します。
スケジュールはこちら
午前
(1)型ガードの書き方勉強
(2)selectorの役割について検討
午後
(1)テストコードもくもく会
型ガードの書き方
まず、当社が製品開発で利用しているTypeScriptの奥深い部分である「typeof」や「in」を使って型を判定する方法について議論しました。これにより、変数に入っている値の正体を見破り、データ型についてより安全なコードにする方法を学びました。
さらに、関数の返り値を「is」という名前で定義することで型ガード関数を定義し、型推論の部分を独立したロジックで扱う方法を学びました。
既存の型の見直しについても議論を行い、「型ガードを書きやすいか」といった新しい観点で課題を発見することができました。また、TypeScriptにおいて、コードを最も型安全にするために「strictモード」を採用した方がいいことや、「as」の使用を減らすことでより安全なコードを書けることにも焦点が向けられました。
typeとinterfaceについて
次に、「type」と「interface」の使い方について議論しました。「interface」は「type」よりも処理速度に優れているという点から、プロダクトでの適用方針についての議論も実施できました。また、共通の型やユーティリティ型を活用して、コードの共通化を検討することで、コードの保守性と品質が向上することを学びました。
selectorの役割について検討
当社ではグローバルステート管理ライブラリとして「Recoil」を使用していますが、ステートの一つである「selector」がどのような役割を果たすのかについて議論しました。「atom」と「selector」を分離している理由や、現状の課題の認識、代替案について検討しました。この中で共通関数の作成、不要な「selector」の削除など、コードを整理する方法を見つけることができました。
テストコードもくもく会
午後は各自でテストコードをもくもくと書く時間に充てられました。当社ではVitestを使用してテストコードを運用していますが、今回のもくもく会を通じて自動テストの網羅性を高めていくだけでなく、テスト作成の際に必要な関数の利用方法などをメンバー間で情報交換する良い機会にもなりました。知識とスキルが向上して、新しい技術への挑戦の糧となりました。
ジーニアルテクノロジーのエンジニアメンバーは、協力しながら新しい技術を探求することで、アイデアを共有しながらお互いに学び合っています。
これからも新しい技術への探求心と情熱をもって、顧客に最高の価値を提供し続けて行きます。今回の勉強会は、未来に向けての期待が膨らむ一日でした。
今後も社内の様子を随時公開できればと思っていますので、楽しみにしていてください!