はじめに
3か月間、採用サイトの開発プロジェクトにバックエンドエンジニアとして参加しました。
このプロジェクトは、毎週のリリースを行い、CI/CD(継続的インテグレーション/継続的デリバリー)環境を活用しているのが特徴でした。久々にウォーターフォール以外の開発体制で、頻繁なリリースサイクルの中で、効率的に開発を進めるための工夫が求められました。また、Go言語を使った開発も初めての経験だったため、新しい技術に触れる機会にもなりました。
担当業務
主な役割は、既存機能のリファクタリングやシステムの保守でした。
リファクタリングでは、既存コードの可読性や保守性を高めることに重点を置き、特に繰り返し処理の最適化や、関数の整理を行いました。
加えて、コードの修正時には影響範囲を慎重に確認する必要がありました。
プロジェクト全体の構成を把握するために、関連するドキュメントを参照したり、ログを活用して挙動を追う工夫をしました。特に、呼び出し元の特定が難しい場面では、テスト環境での動作確認を行いながら、コードの動きを細かく検証しました。
技術的な学び
Go言語の習得
今回のプロジェクトでは、新たにGo言語を使用しました。(これまでは主にPHPを用いて開発していました。)
特に、lo関数を用いたリファクタリングを行い、PHPにはないスライスやマップの使い方を学びました。Goでは、データ構造の扱い方やエラーハンドリングの考え方がPHPとは異なり、最初は戸惑う部分もありましたが、実際に手を動かすことで徐々に慣れていきました。
また、Goのシンプルな構文や並行処理の仕組みについても学ぶことができ、特にgoroutineの概念は今後の開発に活かせる知見となりました。
テストコードの導入
「AAA」(Arrange-Act-Assert)パターンを意識したテストコードの作成を初めて行いました。これは、現場の社内Wikiを通して初めて知った概念でした。
では、AAA とは何なのでしょう?
それは、テストコードを読みやすくするための指針です。AAA は arrange, act, assert の略語で、arrange は『準備』、act は『実行』、assertは『検証』を表します。
参考:https://tech.pepabo.com/2021/08/23/writing-unit-test-with-aaa/
テストコードを書くことで、開発のたびに手動で動作確認を行う手間が省け、開発速度の向上につながりました。最初はテストの書き方に迷う場面もありましたが、実際に試行錯誤を繰り返しながら、徐々に書き慣れていきました。
特に、既存のコードに対してテストを追加する際には、影響範囲を考慮しながら進めることが重要だと実感しました。テストの自動化が進めば、将来的な開発コストの削減にもつながるため、今後も積極的に取り入れていきたいと考えています。
成果と工夫
ドキュメント整備
プロジェクト中に直面した課題や解決策を社内Wikiに詳細に記録しました。
ドキュメントがあまりない現場だったため、今後の開発メンバーの負担軽減につながると考えました。短い期間の中でもいくつかスターをもらっており、他のメンバーが同様の問題に直面した際の参考資料として活用されたと思います。
チーム内での知見共有の重要性を改めて実感する機会になりました。
コミュニケーションの工夫
フルリモートでの作業環境下、即時のレスポンスや積極的な質問を心掛け、コミュニケーションの円滑化に努めました。これにより、チーム全体の連携が強化され、スムーズなプロジェクト進行に寄与できたと感じています。
特に、分からないことを早めに質問することで、開発の手戻りを防ぐことができました。
課題と今後の展望
技術的課題
修正箇所の呼び出し元(画面やバッチ)の特定が難しい場面がありました。
ログを活用しながら調査を進めることはできましたが、システムの全体像を把握するのに時間がかかることが課題でした。今後は、より効率的にコードの影響範囲を特定できるよう、リファクタリング時の設計やドキュメントの活用を意識していきたいと考えています。
加えて、社内MTGではクリーンアーキテクチャや設計のベストプラクティスについての議論が行われることが多く、自分の理解が追いつかないこともありました。
今後は、Goの知識をより深めるとともに、設計の原則やベストプラクティスについても学び、よりスムーズに議論に参加できるようになりたいと考えています。
また、CI/CDの設定や運用についても理解を深め、環境構築の効率化やトラブル対応のスキルを向上させていきたいです。
次のステップ
今回の経験を活かし、今後も即時のレスポンスや積極的な質問を続け、チーム内外でのコミュニケーションを深化させていきたいと考えています。
また、Go言語のさらなる習熟を目指し、次のプロジェクトでも積極的に活用していきたいです。
特に、Goでの開発経験を積み重ねることで、より効率的なコードの書き方や設計の考え方を学んでいきたいと考えています。また、テストの重要性を再認識したため、今後はより多くのプロジェクトでテストコードの作成に取り組みたいです。
おわりに
短期間のプロジェクトでしたが、多くの学びと成長を実感することができました。これからも新しい技術や手法に挑戦していきたいと思います。
また、今回の経験を活かし、より多くのプロジェクトで技術的な貢献をしていきたいと考えています。今後も積極的に学び、経験を積み重ねていくことで、さらに成長していければと思います。
採用案内
株式会社TechReisでは、一緒に成長できるエンジニアを募集しています!
- エンジニアが案件を選択できる制度
- 契約時の単価を完全公開
- 単価に連動した給与設定
などの仕組みがあり、自身のキャリアプランやライフスタイルに合わせた案件選びが可能です。