新卒1年目のエンジニアが新規機能の開発で得た3つの学び

こんにちは、2020年4月に新卒エンジニアとして入社した山内です。

現在は『リネット※』のマーケティング部エンジニアとして日々業務に取り組んでいます。(※自宅にいたままクリーニングが出せる、ネット完結型のクリーニングサービスのことです。)
入社後は、 1ヶ月間のプログラミング研修・ビジネス研修を経て、 『リネット』 のシステム改善や、マーケティング部の施策を遂行するために必要な開発を行ってきました。

その中で 『リネット』 での新規機能の開発に初めて携わったので、今回はどのように開発したのかを振り返りながら、今回の経験で何を学んだかについてご紹介したいと思います。

どんな新規機能の開発だったのか?

技術研修が終了して以降は、SQLを用いたデータ抽出や、サービス利用者に向けたメール配信設定の更新などの業務を、先輩から助言を頂きながら進めていました。

そして入社後、1ヶ月半かけて行った新規機能の開発が「キャンペーンページで提供するオプション選択機能の仕組み化」です。

『リネット』 では普段の衣類のクリーニングにプラスしてオプション仕上げを追加することが可能で、企業とのタイアップページでどのオプションを提供可能とするか選択できるようにする機能です。

例えば、2020年7月に実施したフリークスストア様とのタイアップでは、 対象商品を購入していただいたお客様に限り、「全品銀イオン抗菌防臭仕上げ」または「全品サラっと撥水仕上げ」のいずれかのオプションを無料で提供させていただきました。

    (クリーニングしたい衣類にオプション仕上げの追加が可能)

今までは、キャンペーンページを作成する際に対象とするオプションの設定はエンジニアが担当し、コードの編集を行っていましたが、今回の開発では、社内ツールを用いることで、エンジニア以外の社員でも設定が可能になるような機能を作成しました。
基本的には先輩社員とペアプログラミング(※2)の形で開発を行い、疑問点があがったら自分で調べる、もしくはそのつど質問するという形で進めていきました。

※2:ふたりのプログラマが1台のマシンを操作してプログラミングを行う開発手法のことです

企業でサービスを開発するということ

今回携わった新規機能開発は、学生時代におこなって来た、いわゆる「行きあたりばったり」の個人開発とは大きく内容が違いました。

一般的にエンジニアは以下の工程を踏んで開発を進めていきます。

企業での開発は、私が学生時代に行った個人開発のような「とりあえず手を動かしながら進める」「作業に詰まるたびに設計・開発・動作確認を何度も行き来する」ものではなく、今後を見据えたコードの拡張性や保守性を考慮しながら丁寧な設計を行い、 過去のコードと新たに追加するコードとの整合性を取るための改修を行ったりと、今までに経験することがなかった「企業に属するエンジニア」としての一通りの開発をここで初めて体験しました。

大変だったこと

1.コード改修
現在リネットではDDD(ドメイン駆動設計)と呼ばれる開発手法が導入されていますが、導入する前に書かれたコードの中には現在の設計手法に切り替わっていない部分があります。データベースから得られた結果を社内ツールに反映させる機能を開発する際、設計手法が導入されていないコードを改修する必要がありました。

その際の懸念点として
・コードを改修することによってどこまで他のロジックに影響が出るのか
というものがありました。

事前に影響範囲を調べ、改修を行い、副作用が出た場合はそのつど調査を行い、また改修を行うというサイクルを回すことで、一歩一歩開発を進めていきました。
トライアンドエラーの繰り返しで非常に時間はかかってしまいましたが、おかげで着実に力を付けることが出来たと思っています。

2.コード理解
新規開発を行う場合、完全に1からコードを書き始めるわけではなく、過去のコードと関連する部分に新しいコードを組み込む必要があったり、既に存在するロジックを再利用したりと、既存のコードへの理解が非常に重要になります。

これは1のコード改修と繋がっており、当たり前ですが大前提として、コードが何を示しているのか理解できていないとコードの改修を行うことができません。

知らない関数に出くわしたらそのつど調べ、複雑なもの、動作が予想できないものに関してはデバッグを行い、どこから何の値を渡しているのか挙動を確認して進めていきました。

開発を通じて得た3つの学び

①技術面
実際にサービスを動かしているソースコードを触ることで、自主学習ではなかなかたどり着かないコードの書き方やロジック、設計手法を身につけることが出来ました。

②コミュニケーション面
技術的なものだけではなく、他部署の方とのコミュニケーションという面でも学びがあったと思っています。
当初予定されていた開発期日を超えそうな場合はマーケティング担当者に連絡しなければならなかったり、開発した機能が正しく動作するかを確認する「受け入れテスト」を実施する必要があったりと、個人開発でよくある「作って終わり」ではなく、開発したものが本番環境にリリースされるまで他部署との連携が必要不可欠です。

③働き方
開発の要件定義をする際、エンジニア側から積極的に指摘や提案を行ったりと、エンジニアの枠にとらわれない働き方を実際に体感することが出来ました。
スピード感を持って開発案件についてエンジニアが担当者と密に話し合うことができるのは、ベンチャー企業ならではだと思いました。

まとめ

初めての新規機能開発ということで、プログラミングを始めた人特有の「何が分からないのか分からない」という状態に陥ることが多々ありながらも、最後まで開発を進めることが出来たのは、粘り強く教えてくださった先輩方があってのものでした。ありがとうございました。

今後は、開発で培った技術や他部署との連携を活かして活躍できるよう、奮って業務を進めていきたいと思っています。

山内 大志(やまうち たいし)
2020年 東海大学工学部航空宇宙学科卒業後、新卒でホワイトプラスに入社。現在はリネットマーケティング部のエンジニアとして日々業務に携わっている。三度の飯より対戦ゲームが好き。

記事をシェアする