• トップ
  • ブログ一覧
  • ライトコードに新卒入社してからの1年を振り返る
  • ライトコードに新卒入社してからの1年を振り返る

    みや(エンジニア)みや(エンジニア)
    2024.02.15

    IT技術

    はじめに

    こんにちは!昨年の4月に新卒入社しました「みや」です。入社してからもうすぐ1年が経とうとしているので、今までやってきたことを振り返りも兼ねてご紹介したいと思います。

    入社してから今までやってきたこと


    入社してから今まで、上記のように研修 > OJT > プロジェクト参加のフローで業務を行いました。では、順に内容をご紹介いたします。

    4~6月【研修期間】

    ほぼ未経験で入社したので、4~6月の研修期間は、Webの基礎知識を身につけ、プロジェクトに参加できるレベルまで持っていくことが目的でした。研修期間は2人のメンターの方についていただき、サポートしていただきました。弊社はリモート出社の社員が多いですが、私の研修期間は週に2,3日ほどメンター陣に対面でレビューや相談にのっていただきました。また、毎日30分ほど相談会を設けていただき、わからない部分や知りたい部分などをクリアにすることができました。それでは、研修期間に実施したことを簡単に紹介します。

    静的サイトの作成

    まず、書籍「1冊ですべて身につくHTML & CSSとWebデザイン入門講座」(Amazon)を教材にして、HTMLとCSSの学習をしました。1周書籍を見ながらサンプルサイトを作成し、その後もう1周書籍を見ずに同じサンプルサイトを作成しました。こちらの書籍を2周した後は、弊社が携わっているサービスサイト(静的サイト)を模写するタスクをGitHubでコードレビューを受ける形で実施しました。HTMLとCSSのアウトプットとGitの使い方の学習ができました(Gitの学習はLearning Git Branch も参考にしました)。

    学んだこと(一部抜粋)

    1. セマンティックなHTML
    2. 適切にHTMLタグを使うことで、SEOに強いと言われている。可読性も向上する。

    掲示板の作成

    次にCRUD機能を持つ掲示板の作成を行いました。最初にDockerでLAMP環境を構築する部分から始めました。Docker?LAMP環境とは?という手探りの状態だったので、環境構築には悪戦苦闘し、最終的にはメンターにサポートいただき、ペアプロを実施し解決しました(今でも環境構築周辺の知識が乏しいので、本腰を入れて勉強しなくては)。環境構築後は書籍「よくわかるPHPの教科書 【PHP7対応版】」(Amazon)や書籍「スッキリわかるSQL入門」(Amazon)を参考に、素のPHPとHTML,SQLを用いて掲示板を作成しました。この時も1度書籍を見ながら掲示板を作成した後に、書籍を見ずに同様の掲示板を作成、GitHubでレビュー依頼することで学習した知識をアウトプットしました。このとき、CSSフレームワークを初めて使い、Tailwind CSSの便利さに驚いたことを覚えています(daisyUIを使っていました)。

    学んだこと(一部抜粋)

    1. Dockerイメージ
    2. docker hubの公式イメージをそのまま使うなら、Dockerfileを作成する必要がない。公式のイメージに加えて新たな設定をする場合はDockerfileを作成し、ビルドする必要がある。

    3. RESTful API
    4. 掲示板で例えるなら、「GET /posts/ で全ての投稿を返す。POST /posts/ で新しい投稿を作成する。 id=1のpostを取得したい場合は、GET /posts/1 ...」のように、リソースでURLが決まるようなAPIの種類。

    5. わからない時の調べ方
    6. まず、公式を見る!を癖づける。記事などは公式の後に見るイメージ。どこのサイトの記事/どの人が書いた記事がどれくらい役に立ったかを覚えておくと良い。

    7. Gitのブランチ戦略
    8. こーさんの記事を参考にしました!

    掲示板の機能追加

    次は、掲示板に「いいね/リツイート/返信機能」をつけたり、ユーザ毎の投稿画面を作成する機能追加の課題に取り組みました。テーブル構成やいいね/リツイートボタンの実装などを自分で1から考えました。まだこの時、非同期処理の知識は持っていなかったので、苦戦したことを覚えています。また、余計なSQLクエリを発行してしまうN+1問題にも直面しました。そのおかげで、DBへのアクセス回数を気にすることを意識できるようになりました(最近のタスクでDBアクセスを減らせる実装をレビューいただくまで気が付かなかったので、まだまだ意識が足りないですね)。

    学んだこと(一部抜粋)

    1. 質問のタイミング
    2. 自力で解決する姿勢を大切にしつつ、うまくいかなくなった時点で相談することで無駄な時間を減らす。15分ルール(自力で15分調べてわからないことは質問する)も意識する。

    掲示板の移植

    次は作成した掲示板をPHPのフレームワークであるLaravelに移植する課題に取り組みました。Laravelの基礎知識以外にも、MVCモデル、マイグレーションの運用方法、HTTPステータスコード、GitHubでのプルリクエストの出し方などWebエンジニアとして必要な知識を学習しました。Laravelを使うことで、素のPHPで書いていた掲示板がすっきりと簡単に書けることに驚いたことを覚えています。

    学んだこと(一部抜粋)

    1. 認証と認可
    2. 認証はユーザが誰であるか検証すること。認可はユーザがアクセスできるリソースを決定すること。

    3. ミドルウェア
    4. ユーザがらのリクエストの処理をする際、その前後に前処理/後処理を加える部分。Laravelではミドルウェアの登録をkarnel.phpで行っている。

    5. DHH流のコントローラの書き方
    6. コントローラのアクションをデフォルトのCRUDアクションに限定し、デフォルトにないアクションを用いたい場合は新しいコントローラを作るような書き方。コントローラの肥大化を防ぎ、RESTfulになる。

    ここまでで3ヶ月間の研修期間は終わりました。Web基礎知識から、Laravelで掲示板を作る部分まで学ぶことができ、2人のメンター陣にサポートいただくことでわからない部分をすぐクリアにすることができました。

    7~9月【OJT】

    研修期間を終えて、7月からOJTの形でプロジェクトに参加しました。参加したプロジェクトはLaravelとVue.jsを用いているサービスの開発・保守を行っていました。OJT期間もプロジェクトメンバーの1人にメンターになっていただき、毎日30分程度の相談会を設けていただきました。わからない部分や困ったことなどはその都度チャットベースで質問できますが、口頭で質問した方が伝わりやすいことなどを相談会で相談できて良かったと感じます。では、OJT期間でやったことを紹介していきます。

    初のタスク

    プロジェクトの把握や環境構築を終え、テストコードの作成が初めてのタスクとなりました。テストコード自体書くのが初めてだったので、初めはメンターとペアプロしながら教えてもらい徐々に1人で書く流れで進めていきました。テストの内容をしっかり決めずに実装に入ったことで、修正のたびにテスト内容が右往左往してしまい、その点レビューで指摘いただきました。他にもコードの細かい部分までレビューいただき、全て修正をして初めてのタスクを終えることができました。余談ですが、初学者目線でLaravelのテストについて私が書いた記事もあるので、良ければご覧ください。

    学んだこと(一部抜粋)

    1. テストを書くときの意識
    2. 何をテストするかを洗い出し、そのテストの中で行う検証項目をある程度明確にしてからテストを書く。コードを書くこと自体が目的ではなく、テストケースや検証項目の洗い出しに対する感覚を身につけるのが重要。

    3. スタブとモック
    4. スタブ: 実際のオブジェクトやメソッドを置き換えて、決められた値を返す。
      モック: 実際のオブジェクトやメソッドについて、呼び出されたかどうかや引数を検証し、決められた値を返す。

    初のタスク完了後

    テストコードを作成する初めてのタスクが終了した後は、他のテストコードを作成するタスクや小さいバグの修正、リファクタリングなどを行いました。実装とレビューのラリーを重ねることで、徐々に実装に慣れていくことができました。また、実務でGitを使うことで、Gitの使い方/有用性がようやくわかってきました(複数人のプロジェクトでやっとGitの正しい運用方法が理解できました)。Vue.jsはもちろん、JavaScript/TypeScriptに触れるのも初めてだったので、書籍「JavaScript 第7版」(Amazon)と公式サイトを参考にしながら、実務を通して身につけていきました。特にTypeScriptの型宣言に慣れるまでは苦労しましたが、メンバーのフォローもあり実装できる程度まで持っていけました。
    また、他のメンバーが実装したコードをレビューすることもタスクの1つになりました。最初は実装箇所の理解をするだけで大変でしたが、徐々に慣れていきわからない部分や疑問に思った部分をコメントできるようになりました。他にも実装に伴うシステムテストの作成も経験することができました。

    学んだこと(一部抜粋)

    1. 開発でのproduction, staging, development, local
    2. local: 自分のPCでの環境。
      development: 開発環境。実装したコードの動作確認を行う。
      staging: 検証用の環境。本番に限りなく近く、リリース前の検証を行う。
      production: 本番環境。

    3ヶ月間のOJTの内容を簡単に紹介させていただきました。早くからプロジェクト開発に参加でき、実装を任せていただけたので、技術的な部分からプロジェクト開発の基本的な流れまでOJTの期間で学ぶことができ、仕事の理解が深まりました。

    10月~【別プロジェクト】

    OJTを終えて、10月から別のプロジェクトに移動し、現在もこのプロジェクトに配属されています。バックエンドをRails、フロントエンドをNext.js、APIをGraphQLを用いているサービスのエンハンスのプロジェクトです。OJTを終えたので基本的に与えられたタスクは自分1人で作業していきます。もちろん全てを自分で解決するのではなく、わからない部分はプロジェクトメンバーの方に質問相談し、丁寧に教えていただけるので、問題なくプロジェクトに参加できています。では、10月からのプロジェクトでやっていることを簡単に紹介します。

    日々のタスク

    私が日々やっていることは簡単に書くと次のとおりです。

    1. 任されたタスクの内容に基づいて実装する。
    2. レビューいただいた内容をもとに修正する。
    3. 修正が必要な箇所がなくなったら、システムテストを作成し実施する。

    上記のサイクルを繰り返しています。最近担当したタスクだとソート機能のフロント側の実装などやりごたえのあるタスクも任せていただけるので、やり甲斐がある仕事です。また、タスクの内容はバックエンド・フロントエンドどちらもあり、幅広い知識に触れる機会があるので、理解力を高めることができています。最初は初めての言語で手探りの状態でしたが、他のメンバーにサポートしていただき、今はある程度のタスクを実装できるまで成長できました。コーディングの知識だけでなく、GCPのの使い方やPostMan×GraphQLでのレスポンスの平均時間の調べ方、キャッシュについてなど、エンジニアとして必要な知識も吸収しています。

    まとめ

    学んだことの全てを書ききれないですが、以上がライトコードに新卒入社した約1年間の振り返りです。周りの方にサポートしていただきながら、プロジェクトの一員として働けるところまで成長することができました。ただ、もっとやれたなという気持ちもあります。まだまだエンジニアとしての知識が乏しく経験も少ないので、日々成長していけるよう頑張ります。その様子をまたブログでご紹介できればと思います。
    また、この記事がライトコードに新卒で入社しようと考えている方の参考になれば大変嬉しいです。技術力が高いメンバーばかりなので、私のようにこれからエンジニアとして頑張りたいという人にもすでに技術力があるような人にもおすすめの会社です!新卒がまだ少なくて寂しいので説明会への参加などお待ちしております!

    みや(エンジニア)

    みや(エンジニア)

    おすすめ記事