Opt Technologies Magazine

オプトテクノロジーズ 公式Webマガジン

2023年度の新卒研修を新卒の視点から振り返ってみた

alt

こんにちは、2023年度新卒入社の尾内と大橋(@ppza53893)です。 今年の弊社の新卒研修について、エンジニア新卒入社の2人がそれぞれの視点から振り返っていこうと思います。

全体研修

全体研修は新卒社員全員で研修を受けました。 全体研修の内容は以下のとおりです。

  • 社内制度・環境についての説明
  • グループ会社の紹介
  • ビジネスマナー研修
  • データ分析とマーケティングのグループワーク
  • 先輩社員のキャリアの話

全体研修を通して、社会人として働いていく上で必要な基礎知識を身につけました。 全体研修は週3回オフィス出社、週2回リモートという形式で適度に出社し、同期と顔を合わせることで同期との仲を深めることもできました。 去年の全体研修と比較して日数が2週間ほど短くなっており、より効率的なプログラム構成になっていました。

エンジニア研修

エンジニア研修はゴールデンウィーク明けの5/8から始まりました。昨年はエンジニアの採用がなかったため、エンジニア研修の開催は2年ぶりでした。今年はグループ会社の株式会社デジタルシフトの第2新卒と一緒に研修を受けるという初めての試みも行われました。全体研修と同様にエンジニア研修期間が縮小し、1ヶ月以上も短縮されています。研修期間が短縮された理由は以下のとおりです。

  • 2021年度は敢えて過去回よりも長期の研修にしていた
  • 研修講座を実験的に多く/長くしすぎていた
  • 発展的/応用的なテーマの講座は必須ではない
  • 今年度受け入れるメンバーはプログラミング/ソフトウェア開発完全未経験者ではない
  • High/Middle/Lowの3段階でいえはMiddleレベルの層を前提に構成できそう
  • 初歩的な学習項目はある程度省略しうる

エンジニア研修で社内のエンジニアが作成したテキストを教材として使用しました。2018年から作成されている研修テキストは継続的に改善されており、この記事を書いている2人も研修テキストの改善のためにPRを出しました。

エンジニア研修の内容は次のとおりです。

  • イントロダクション、セットアップ(5/8)
  • インターネット・Web入門(5/8)
  • バージョン管理(5/9)
  • プログラミング入門(5/9 ~ 5/16)
  • ローコード・ノーコード入門(5/16)
  • データベース入門(5/17)
  • クラウドインフラ入門(5/18 ~ 5/19)
  • Web API開発入門(5/22 ~ 5/24)
  • SPA開発入門(5/25 ~ 5/26)
  • Webアプリケーション開発実践(5/29 ~ 6/9)

ここからは、上記の講座からいくつかをピックアップして説明をします。

イントロダクション、セットアップ

イントロダクションではエンジニアとして働いていく上での心構えや、学習のヒントを学びました。そして、セットアップでは研修で使用する次のツールのセットアップを行いました。

  • Homebrew
  • Git
  • Docker
  • ターミナル
  • エディタ
  • Node.js

ターミナルはiTerm2、Warp、Weztermなど各々が好きなターミナルをインストールして使いました。PCはWindowsとMacを選択することができるのですが、今年は全員が同じMacだったためトラブルシューティングや助け合いがやりやすかったです。一部の端末ではsudoは動作しないというトラブルもあったのですが、研修に関わっていないエンジニアにもサポートしていただいたことで素早く問題を解決できました。

バージョン管理

この講座ではGitのバージョン管理システムの概念やGitを使ってバージョンを管理しているソースコードをホスティングするGitHubについて学びました。受講者の中には初めてGitを触る人もいましたが、ブランチを切ってプルリクエストを作成してマージするところまでは全員やり切ることができました。研修時間が短く理解が浅い人もいましたが、他の講座で時間が余った時に補足の説明をしていただくなど、柔軟に対応していただきました。

プログラミング入門

プログラミング入門は6日間かけて行われました。今まで使用していたプログラミング言語はScalaでしたが、次のような理由で今年からTypeScriptに変更されました。

  • フロントエンド/サーバーサイド共通で使える
  • 静的型付けである
  • 社内でのTypeScriptを使用したプロダクトが増加している

プログラミング入門では、まず最初にJavaScriptの歴史とTypeScriptが誕生した背景、そしてこれらの2つの言語の関係などを学びました。静的型付け言語の重要性と利点を理解することができ、型を活用することでプログラムの可読性の向上とエラーの早期発見に繋がることを知りました。そのあとはTypeScriptの基本的な文法を学び、AtCoderの問題を解いたりライツアウトを実装するなどの演習問題を解くことでTypeScriptの理解を深めました。初期盤面としてクリアできないものを生成しない課題や、最短手数を計算する課題など、アルゴリズムについて考えるものもあり、難しかったですが面白かったです。

データベース入門

ここからは大橋が担当します。大学院では機械学習を使った画像処理の研究をしていましたが、広告やWeb関係についてはほとんどわかっていない状態で入社しました。

データベース入門では、RDB(リレーショナルデータベース)とSQLの基礎、そしてTypeScriptを用いたDB操作について学習しました。 RDB基礎では、初めにデータベース全般について、次にRDBとトランザクション、そしてデータベースの設計と正規化について順に学びました。個人的に印象的だった内容は、データの不整合を防ぐ仕組みであるACID特性や、主キー、UNIQUE制約などでした。初めは混乱しましたが、仕組みを理解して「なるほど!」となったときに非常に満足感がありました。 SQL基礎では、DB操作を実際に行いながら、SELECTや結合といった各種操作を学びました。私自身はPythonを用いたデータ分析の経験があったため、普段行っていた操作をSQLでどのように表現するんだろう、といった気持ちで臨んでいました。 最後に、TypeScriptを用いたDB操作では、サーバーサイドでDBを操作するケースを考慮し、TypeScriptのmysqlモジュールの活用法を習得しました。プログラミング研修で学んだ非同期処理などが再登場し、それらを復習する目的も込めてテーブルの操作に取り組みました。

クラウドインフラ入門

クラウドインフラ入門では、2日間でDockerとAWSについて学びました。
Dockerでは仮想サーバーやコンテナについての座学から、実際にDockerを使用したコンテナイメージの作成やnginxのサーバーの起動まで行いました。大学院での研究で使用経験があったので、仕組み等の理解には問題ありませんでした。
AWSでは、1日目にリクルートの研修資料を参考にVPCやEC2、IAMなどの基本的な知識を学びました。AWSは初めてだったので、当日のみで内容を理解することはほとんどできなかったのですが、2日目に演習でコンテナデプロイまで行ったことで、理解できる部分が多くなりました。

Web API開発入門

Web API開発入門では、3日間にわたりWeb APIとREST、GraphQLについて学びました。 初日はAPIの基礎を中心に学びました。講義はWebAPI の設計を資料として、APIの設計方法や、設計方式の1つであるRESTについてなど解説していて、充実した内容でした。
2日目はRESTとは別の設計方式であるGraphQLについて学びました。私自身GraphQLは初めてだったため、初めは悩んだ部分もありましたが、途中Github GraphQL APIを使った演習があったので、徐々に慣れていきました。
2日目後半〜3日目では、実践として設計書からAPIを書いていくまでの演習を行いました。API開発を行うことは初めてだったので、設計書を書いてからコードに落とし込む段階に一番時間がかかりました。ですが、設計書を一旦図に書き起こし、その図からからどのようにコードに落とし込むかを考えたことで、コーディングにかかる時間が大幅に削減ができました。

SPA開発入門

SPA (Single Page Application) 開発入門では、2日間でReactを使った簡単なWebアプリケーション開発を行いました。
初日はSPAについての座学で、Reactを使ってコンポーネントやルーティングといった概念を学びました。自分は過去にReactを使った経験があったのですが、SPAの仕組みなどはあまり触れずに使っていたこともあり、今回の研修では1から学ぶ感覚で受講しました。座学で学んだ内容は以降の研修や実務でも重宝しており、執筆している現在でも都度テキストを見直したりしています。
2日目はReactとGithub GraphQL APIを使った、リポジトリ検索が可能なWebアプリケーションの開発を行いました。すでにAPIを呼び出すためのベースは用意されており、そこからUIや機能、ルーティングなどの機能を追加していくといった形でした。UIライブラリの理解や初日の内容も含めて必要な知識が多く、初めは実装方法に悩んだところもありましたが、時間が経つと講師側にヒントを共有していただいたので、後半からはスムーズに開発を進めることが出来ました。演習全体を通して、ヘルプが必要な方には講師側がモブプログラミングを使った手厚いサポートを提供していたので、受講者それぞれが理解しやすいような仕組みで進められていました。

Webアプリケーション開発実践

最後のWebアプリケーション開発実践は2週間に渡って行われました。前回までの新卒研修では美容室予約アプリケーションをチームで開発するという内容でしたが、今年から大きく変化し、「誰とでも1対1で面談ができるマッチングサービス」をテーマにしたものとなりました。またチーム開発ではなく個人開発となりました。
開発実践では、大きく課題が7つ与えられ、1つの課題が終われば次の課題へ進む形式で進められました。初めの課題はSPA研修の復習として、フロントエンドのルーティング機能の実装でした。それ以降の課題では、Firebaseやバックエンドでの認証認可機能の追加、CASLを使った権限管理など、私達が普段Webサービスを使う上でのログインシステムの実装に取り組みました。各課題のヒントなどは研修テキストや社内Slackの研修チャンネル・研修ミーティング中などで共有されていましたが、内容の理解や実装方法を習得するには期間の半分以上を要しました。マッチングサービスについては、最後の2つの課題で機能の実装を行いました。予めDBのテーブル定義やAPIの設計などは与えられていたので、完成条件を満たすように実装していきました。
また、開発実践の終盤では、実際に作成したアプリケーションをGoogle Cloud上へデプロイする作業も行いました。自身の作ったアプリケーションを実際にデプロイでき、オンライン上でユーザ登録、ログインが可能になったときの達成感は大きかったです。
研修全体として、これまでの研修期間で学んだ内容を総合して利用するような内容でした。研修の初めに講師から「この実践が終わったら、0からWebアプリケーションを作れる様になっている」とおっしゃっていたのですが、その通りになったと感じています。難易度が高い研修でしたが、私を含む受講生全員が満足する研修だったと思います。

まとめ

2023年度の新卒研修について、新卒エンジニアの視点から振り返った記事でした。 研修の後半あたりからは難易度が上がり苦戦している受講生が多かったですが、講師のサポートが手厚く、質問もしやすい雰囲気だったので順調に研修を進めることができました。 最後まで読んでいただきありがとうございます。 Opt Technologies ではエンジニアを募集中です。カジュアル面談も可能ですので、下記リンク先よりお気軽にご応募ください。