FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

新人研修の感想

こんにちは。今年新卒で入ってきました栗原です。

弊社では、新卒研修後にブログに研修の感想などを執筆するのが恒例になっていまして、例に倣って僕も新卒研修で印象に残ったことや学んだことを書いていきます。至らない点もあるかと思いますがよろしくお願いします。
書き終わってみたら研修の内容がかなりボリューミーになってしまったので、弊社に入社希望の方でどんな研修をするのか興味のある方に読んでいただけると良いかなと思います。


自己紹介

自分は大学院卒なのですが、大学は電気系の学部、その後の研究室配属から情報系の研究室に所属し、そのまま大学院まで研究を続けました。研究室ではざっくり言うと機械学習をやってました。就職先としては、行く行くは個人で何かサービスを作って公開して収益化したいなんて思いもあったので、Webアプリ開発をしているところで開発経験が積めそうなところか、一方で機械学習を続けるのもありだなとも考えていて、AI関連のスタートアップなどのデータサイエンティスト職にも興味がありました。 結果的には、数弱な自分がAIを学び続けていくのは厳しいかなと思い、エンジニア職で探していて、十分に開発経験が積めて適度に緩そう(?)だった弊社に入社しました。

プログラミング経験

プログラミング歴は、学部時代の研究でC++を1年ほど、大学院の研究でPythonを2年間ほど使用していました。どちらの研究も一人でじっくりとやるもので、チーム開発の経験が無く、そこの点は不安でした。また、入社前に特に何も課題などがなかったので、何をやったら良いかで悩んで結局何もしなかった記憶があります(笑)。入社前に内定者インターンとかアルバイトとかあったら参加したかったですね。

研修内容

今年から研修内容が大幅にアップデートされたらしく、Scalaのプログラミングからインフラ構築まで幅広く学べました。今年はコロナウィルスの影響で、研修の全てがリモートで行われました。最初こそ戸惑うことがありましたが、慣れてからは全く問題なく研修が進められていたかなと感じます。特に自分は家にいる方がリラックスして作業できるし、通勤時間がないメリットはとても大きかったです。願わくば、この騒動が終わった後もリモートか出社かを選べるとありがたいなと思っています。

次からは、印象に残っている研修の内容とその感想を述べていきます。

Scala研修

4月中旬の2週間程度の期間でScala研修がありました。Scalaをいろんなプロダクトに採用しているのが弊社の特徴でもあるので、研修でも言語はScalaでした。 慣れ親しんでいた言語はPythonなので、研修中は関数型言語的な書き方に戸惑いを覚えることが多かったですね。基本的に関数の中では副作用(値の変更など)が出ないような書き方を心がけるべき、などに対しては理解できていませんでした。研修を終えた今では少しそういった関数型言語の書き方をするメリットを理解できてきたと思います。 後半はScalaを使ってCLIアプリケーションを作成する研修でした。この辺りは結構タイトなスケジュールだったので大変でしたが、なんとか仕様を最低限満たすものを作ることができました。

Webの仕組み研修

5月初旬の3日間程度、BN全員でWebが動いている仕組みを勉強する研修がありました。 HTTPやTCP/IPについての復習ができたのと、同期同士でコミュニケーションを取る良い機会になったかと思います。

Database研修

5月中旬の3日間程度、データベース操作の基礎的なことを学びました。データベースを操作した経験がなかったので、基本的なところから解説していただいたのはありがたかったです。SQLでクエリを書く作業は、どのチームに配属になっても基本的にやるらしいので、研修でしっかり身につけようと取り組みました。また、Dockerを使ってMySQLの実行環境を構築しましたが、そういったツールを使う練習にもなりました。

IaC研修

5月下旬の3日間程度、IaC研修を行いました。IaCとはInfrastructure as Codeの略で、インフラをコードによる記述で構築、運用していこうというものです。今回はIaCのためのツールにTerraformというものを使用して、AWSのEC2インスタンス上にサーバーを立ててWordPressの公開まで行いました。AWSのコンソール上で直接構築するのと、Terraformによる構築のどちらもやってみた感想としては、AWSのコンソール上で構築をしてしまった方が速いし、学習コストもかからないですが、同じ環境を作ろうとしたときに手間がかかる一方で、Terraformからコード上で構築するのは最初の構築時間と学習コストはかかりますが、一旦構築してしまえば同じ環境を作るのは容易になるし、管理も楽に行えるようになるのかなと感じました。AWSは聞いたことがありましたが、具体的には何も知らない状態でいつか詳しく調べてみたいと思っていたので、この研修で少し触れられることができてよかったです。

オブジェクト指向・Webアプリケーション研修

5月下旬から6月上旬にかけてオブジェクト指向研修とWebアプリケーション研修がありました。Pythonオブジェクト指向言語と言われているので、既に知っていることの復習になるかなと思っていましたが、この研修もほぼ知らないことだらけでした。それも当たり前で、この研修で言っているオブジェクト指向は、言語の設計思想的なところではなくてアプリケーションの設計思想に関するものでした。SOLID原則というものをご存知でしょうか?僕は初耳だったのですが、これは、アプリケーションを細い部品に分割して作っていくための指針となるものです。この原則通りにアプリケーションを作っていくことで、管理の容易な見やすいコードになっていくということです。 研修では、この原則について説明した後に、Scala研修のときに作成したCLIアプリケーションのリファクタリングを行いました。座学で学んでもいざ書いてみるとなると難しくて、本当にこの書き方でいいのかと、悩んでいたら研修が終わってしまった印象です。この研修で、リファクタリングは突き詰めていくと終わりがないなと学習しました。

DDD研修

6月上旬の3日間では、DDD研修をしました。DDDはDomain Driven Designの略で、開発手法の一種です。もう少し具体的には、ドメイン(領域)を意識した設計をし、オブジェクトの役割を明確にしてアプリケーションを効率的に作成する手法です。研修内容としては、配られた教材を読み込むことが主でした。弊社では、DDDで開発をすることになっているので、真剣に読み込みましたが、抽象的な話も多くて、理解度はそこまで高くないかなと思っています。ですので、配属後に業務で取り組みつつしっかり理解したいですね。

チーム研修

6月中旬から6月下旬までの2週間程度で、チームで古着屋のWebサイトを作る研修をしました。本格的なチーム開発はこれが初めてになるので不安もありましたが、今までの研修で得た知識をフルに活用していく感じで、良いアウトプットになったかなと思います。進め方は、チーム内で話し合ってタスクを分担し、担当領域の作業が一区切りついたらgitlabにpushして、チームメンバーにレビューしてもらい問題なければマージするといった流れで進んで行きました。この研修で、gitを使ってチームで開発を進めていく流れが掴めたので、配属前にこの研修があって良かったなと感じています。

f:id:Ry-ku:20200630161007p:plain
サイトトップ

f:id:Ry-ku:20200630161106p:plain
商品一覧

研修の学びと振り返り

開発経験が何もなかった状態から、出来るようになったことがかなり多く、とても充実した研修だったなと感じています。 研修内容の部分で専門的な話題が多くなってしまったので、ここでは研修を通して良かったところや大変だったところを書いていきたいと思います。

良かったところ

  • 定期的にメンターの方と1on1があった
    研修で詰まっているところや、研修以外でも困っていることがあればなんでも聞ける場があったのはとても良かったです。わからないところは出来るだけ研修中に質問するようにしていましたが、それでもやはり不明点などは溜まってしまうものなので、そういったことについて聞いたり、会社で使用するツールや会社の制度についても聞かせていただいていました。

  • 朝に自習時間が設けられている
    基本的には業務開始から1時間、自分の好きなことが出来る時間があります。その時間では、研修の予習復習をするのもありだし、技術書を読む時間などに当てることができます。この時間で、前日の研修でわからないことがあった場合はそこの復習に使ったり、当日の研修が難しそうな場合はその予習に使ったりと有効に使えたと思っています。また、この時間に競技プログラミングに興味を持ち、AtCoderの過去問などを解いたりもしていましたが、C問題以降は結局数学ゲーだなと感じて数弱な自分は落胆しております。

  • 休憩時間がしっかり取れるように配慮されている
    昼休憩の1時間の他に、研修1時間に対して10分程度の休憩が設けられています。自分で作業することが主な研修でも、slackで休憩はとりましょうといった旨のメッセージを送ってくださるので、疲れたら後ろめたさを感じることなく休めます。これは結構大事なことで、例えば上司が黙々と残業してると帰りづらいみたいな心理状態になってしまうので、講師陣がそういったことを気にかけてくれるのはすごい助かるなと感じました。

大変だったところ

  • CLI上での操作
    研修中はWindowsコマンドプロンプトや、Macのターミナルを使ってファイルを操作したり編集したりすることが多いのですが、研修初期はコマンドを十分に覚えられていない状態だったので、簡単なことをするのにも時間がかかってしまっていました。特にVimでファイル編集をする作業で、数行を書き込んで保存するだけの作業に詰まってしまったのを覚えています。今思うと、入社までにターミナルコマンドとVimの使い方の基礎的なところくらいは勉強しておいても良かったなと思いました。

  • 環境構築
    今年はコロナウイルスの影響でBNへのMacPCの配布が遅れていたそうで、しばらくはグループ全体に配布されるWindowsPCで研修を受けていました。研修のためのプログラム動作環境はMac向けになっていて、環境構築でエラーに遭遇することが多く、解決するのが大変でした。Macが配布されたのは6月になってからでしたが、最新型MacBook Pro16インチのメモリ32GBというかなりの高スペックPCが配布されたので現在めちゃめちゃ快適に作業できています。

最後に

研修を担当してくださったメンターの皆さんにはとても感謝しています。特に、池田さんと原田さんにはほとんどの研修でお世話になりました。この研修が充実したものになったのは、メンターの方々が、BNのことを第一に考えてカリキュラムを組み、研修をより良くしようと行動してくれたおかげだと思っていますので、この場を借りてお礼を申し上げます。