Opt Technologies Magazine

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

新卒研修 2021 を新卒の視点から振り返ってみた。

f:id:mame5han:20210818173854j:plain

あいさつ

皆様、こんにちは。2021 年度新卒入社の牧野(@yamk_fuu_k)、野中、池原です。

今年の弊社の新卒研修についてエンジニア新卒入社組 3 人のそれぞれの視点から振り返っていこうと思います。

全体研修(4/1~5/14)

牧野)

昨年度もそうでしたが、まず 21 年度新卒全員を対象とした研修を受けました。 全体研修は主にリモートでしたが、週 2 回は出社して顔を合わせるという形で行われました。

全体研修で行ったことは以下の通りです。

  • 社内制度、環境についての説明
  • ビジネスマナー研修
  • IT パスポート資格取得のための研修
  • Web 広告、マーケティングについてのチーム研修
  • Google App Script を触る

この他にも会社の先輩からどんなモチベーションで入社し、今に至るのかという話を聞いて 非常に刺激になったことを覚えています。 週 2 で出社し同期と話すことで、 孤独感や、コミュニケーションが取りづらいということもなく働くモチベーション維持にもつながりました。 個人的に週 2 回出社の全体研修は継続して欲しいと感じている部分です。

エンジニア研修(5/17~7/29)

牧野)

5/17 からエンジニア新卒研修が始まりました。 エンジニア研修は全体研修とは異なりフルリモートでの研修でした。

研修の概要は以下の通りでした。

  • 計算機入門
  • コマンドライン入門
  • インターネット入門、Web 入門
  • HTML/CSS 入門
  • バージョン管理入門
  • プログラミング入門(JavaScript)
  • データベース入門
  • 仮想化入門(docker)
  • AWS 研修(AWS SA さんによる外部での研修)
  • アジャイル入門
  • Scala 入門
  • Web API 開発入門
  • SPA 開発入門
  • ソフトウェアアーキテクチャ入門
  • CI/CD 入門
  • Web アプリケーション開発研修
  • ハッカソン研修

この中から 21 年度新卒エンジニアが各々印象に残った研修について触れていきます。

私が取り上げる研修はプログラミング入門と Web アプリケーション開発研修の2つです。

プログラミング入門

牧野)

プログラミング入門の研修は 3 日間で行われました。この講義では主に JavaScript を用いてプログラミングとは何か?といった部分に触れました。 最初の 1,2 日目は基礎の基礎(変数宣言や出力の仕方など)から学ぶことができたので、正直何も知らない人でもある程度プログラミングができるようになるくらい丁寧な進行でした。 今年の新卒は全員 JavaScript を経験済みでしたが、改めて基本から振り返るいいきっかけになったと感じています。 3 日目には Glitch というサービスを利用してライツアウトを作成しました。

ライツアウトについては Google で調べると詳しいゲームのルールなどが出てくると思うので気になった人は調べてみてください。 ゲームを作成することを通して、1,2 日目で学んだ基本を応用して作成するというものでした。 本当にわからない場合はチュートリアルなどもついていたので、とりあえず手を動かして理解することができるようになっていて、とても丁寧な研修だった印象です。

Web アプリケーション開発研修

牧野)

Web アプリケーション開発研修は新卒 3 人 1 チームで美容室の予約管理アプリケーションを作成するものでした。 位置付けとしては研修終盤で今まで学んだことを活かすといったものだと認識しています。 この研修ではチーム開発が一番難しかったっと考えています。最初にぶつかった壁が役割分担の部分でした。 どこを誰がやるみたいなことで揉めることはなかったのですが、そもそもどのように役割を分担するのかというのがなかなか決まらなかったことを覚えています。 最初は 3 人なので、データベース担当、バックエンド担当、フロントエンド担当のように初め分けていました。 既存プロジェクトならこのやり方もよかったとは思いますが、ゼロからの状態ではなかなかうまく行きませんでした。 先輩方などに相談をしていった結果、環境作成までは足並みを揃える。そのあとは機能ごとに役割を分担するという形が自分たちにはハマりました。 ここでいう環境作成とはデータベースや、実行環境を同じものにするということです。 自分は最初、機能設計を担当しました。設計後は会員登録機能、予約済一覧を取得する API の開発も行いました。また、仕様を満たすための制約を監視して、満たしていない部分を修正するという役割も担いました。 アプリケーションを作成するのはもちろん楽しかったですが、個人的にはそれ以上に、チームで開発を行っていく難しさを初めて実感できた研修でした。実務に入る前にこの難しさを味わっておくことができていい経験になったと感じています。

次、野中さんによる振り返りになります。

野中自己紹介

AI ソリューション開発部門に配属された野中です。大学院で機械学習やデータサイエンスなどを研究している中で、ソフトウェアエンジニアリングにも興味を持ち、Opt Technologies に参加しました。実際のチーム開発経験はほぼゼロに等しい状態から研修に臨みました。

バージョン管理入門

そんな自分が、大変勉強になった研修がバージョン管理入門です。Git のドキュメントをみんなで読み進めていく形で、バージョン管理の基本から Pull Request によるチーム開発の基礎を学びました。
特に学んだことは、技術ドキュメントを精読することの重要性です。当たり前かもしれませんが、この当たり前のことが全くできていなかったことを感じました。大学院時代にも、Git を使用して研究を押し進めることを画策していたのですが、結局使ったのはgit cloneで有名なリポジトリを取得する程度で、自らのソースコードのバージョン管理は出来ていませんでした。このような使い方しかできなかった原因は、Git や GitHub の背景にある仕組みやバージョン管理の発想自体を学ぼうとせずに、安直に技術ブログにあるコマンドの使い方だけを知ろうとした結果ではないかと思います。
Git のドキュメントは、非常によく作られており、Git によるバージョン管理のそもそもの考え方をチュートリアル形式で学ぶことができます。研修では、このドキュメントを皆で精読することにより、ステージング、コミット、リポジトリ、ブランチといった概念が何のためにあるのかを理解でき、本来の Git/Github の使用方法(ブランチを切って、そこで開発を進める。Pull Request によるチーム開発など)ができるようになりました。
Git のドキュメントの紹介みたいになってしまいましたが、そこが本題ではなく研修で良い意味で強制的にドキュメントを精読するという経験を積むことができ、その重要性を認識したことが焦点です。このことは、他の研修(例えば、React, Next.js を使用した SPA 開発研修)でも、新しい技術へのキャッチアップという点で役に立つものでした。

AWS

AWS(Amazon Web Service)に関する研修は、Opt Technologies 内での開催ではなく、AWS のソリューションアーキテクトの方々が、各企業の新卒エンジニア向けに主催した"AWS JumpstartforNewGrads"に参加してきました。 特に刺激になったことは、他企業の新卒エンジニアとの交流です。エンジニアのスキルアップを比較的積極的に行っているテクノロジー関連のベンチャー企業の参加が多いように感じました。セミナーの内容としては、参加者が複数のグループに分けられ、スタートアップの社員になりきり、ある程度要件が定まったプロダクトのインフラアーキテクチャを AWS のサービスを用いて構築するというものでした。参加者のレベル感も様々で、自分のように AWS のサービスなんて EC2 ぐらいしかわからず、途方に暮れながら手探りで進めている人もいれば、考えたアーキテクチャを元に実際のサービスをデプロイするところまで行ったチームもありました。 個人的に、AWS や GCP などのインフラサービスは、サーバーレスやマネージドなサービスに代表されるように、インフラに特化していない開発者でも比較的容易にサービスのデプロイができる点で非常に魅力的だと考えています。実際、AI ソリューション開発部に入ってからもデモや α 版の開発などで使用することが多く、伸ばしていきたいスキルとなりました。 ​

SPA

SPA(Single Page Application)研修は、今年から始まった研修です。React, Next.js を利用して、フロントの画面を作成する方法を学びました。例えば、PokeAPIを呼び出して、ポケモン図鑑の画面を作成したりしました。 特に、これは API 開発研修とも関わることですが、自分が作成した API をフロントエンドから叩いて、情報を可視化するという作業を通じて、Web 開発の大まかな流れを知ることができたのは有益でした。プログラミングといえば研究に使用するだけで、web 開発が全くわからなかった自分にとっては、これ以降の学習の指針になる研修だったかと思います。

最後に池原さんによる振り返りになります。

池原自己紹介

池原)

ビジネステクノロジー開発部に配属された池原です。大学ではメディア論などを色々やっていましたが、部活で Processing を用いたアニメーション作品を制作したり、アルバイトでプログラムを書いたりしてきました。そのため、コンピュータが動く仕組みなど、情報工学的なことについてはあまりよく分かっていない状態で入社しました。

データベース入門

池原)

データベース入門では、データベースと SQL について学びました。データベースやリレーショナルデータベース(RDB)、リレーショナルデータベースマネジメントシステム(RDBMS)とは何かということや、どのようにテーブルを設計すべきなのかということ、加えて、SQL 文の書き方といったことが取り上げられました。 講義ではテーブル設計に関することとして、SQL アンチパターンが紹介されましたが、面白かったです。特にツリー構造のデータを扱う際にどのような方法を採用すべきか、という話は刺激的でした。 また、W3Schools(https://www.w3schools.com)を使った演習が印象に残っています。W3SchoolsではSQL文の基礎的な構文について、クイズ形式で演習していくことができます。こうした形式で技術を覚えたことは今までありませんでしたが、ゲーミフィケーションされた演習は思いの外学びやすかったです。ただ単にドキュメント等を読み込んでいくよりも知識を定着させることができたように思います。 ちなみに、W3Schools では SQL 以外にもプログラミング言語やフレームワークなど様々なものが学べるようです。

Web API 開発入門

池原)

WebAPI 開発入門では Web API の設計について学び、さらには実際に作ってみるということもしました。 WebAPI の設計については、Arnaud Lauret『Web API の設計』を読み進めて学習しました。演習では、Swagger を使って WebAPI を設計し、実装も行いました。実装は一人で行うので、それぞれが好きな言語を選ぶこととなりました。今回の演習では Python(Flask、FastAPI)と C++(Drogon)が使われました。また、今回は RESTfulAPI が中心でしたが、GraphQL や gRPC といった RESTfulAPI とは異なった API 方式についてもある程度学びました。 RESTfulAPI について面白いなと思ったのは、RESTfulAPI であるかどうかは段階的であるということです。Richardson Maturity Model(RMM)において RESTfulAPI は以下のような 4 段階に分けることができます。

  • Level0:XML が返される。
  • Level1:リソースごとに URL が割り当てられる。
  • Level2:Level1 に加えて、HTTP メソッドが用いられる。
  • Level3:Level2 に加えてハイパーリンクが活用される。

Level2 になると十分に RESTful な API であるとすることができる段階だと言え、現在の RESTfulAPI の多くが Level2 にあります。 このような RESTfulAPI であるか、そうでないかをはっきり分けるのではなく、その度合いを問題とする発想はとても興味深く感じました。

まとめ

2021 年度の新卒研修について、新卒側の視点から振り返った記事でした。 リモートでの研修に対する体制も整ってきたこともあり、力をつけるのにかなり手厚くサポートしていただいた研修だったと思います。 最後まで読んでいただきありがとうございます。

Opt Technologies ではエンジニアを募集中です。カジュアル面談も可能ですので、下記リンク先よりお気軽にご応募ください。