こんにちは。2020年4月に新卒入社しました植江田 和成です。PR TIMESでは社内向けwebアプリケーション開発チームに配属され、PHPを用いバックエンド側の開発を主に行っています。
この記事では、私が新卒エンジニアとして1年間取り組んできたことを紹介したいと思います。
業務内容
最初の業務内容は、すでに完成しているAPIを叩いてデータを画面上に表示する。というものです。
実装
まずは、APIが返すデータから必要なデータを洗い出し、洗い出しが終わればそのデータを適切な箇所に埋め込みます。
実装内容は、社内で利用されているボイラープレートを利用して行いました。このボイラープレートに関しては後ほど紹介します。
私は設計の知見があまりなかったので、ボイラープレートのキャッチアップを同時に行いながらの実装でした。初めは難しかったですが、ドキュメントが充実しているのもあり、徐々に理解していくことができました。
また、その過程で設計の重要さや楽しさを知ることができ大変勉強になりました。
主な開発の流れ
私が所属したチームでの主な開発の流れは以下のようになります。
- 仕様を確認しながら実装
- テストを実装
- コードレビュー
- 仕様レビュー
- Circle CIによる自動テスト
- 3 ~ 5の間でバグや仕様間違いが見つかれば繰り返し
このようにコードと仕様、それぞれ担当の方の2段階でレビューを踏むことによって、仕様の捉え違いやコードの品質などをある程度担保することが可能です。
社内ボイラープレートを一部紹介
社内ボイラープレートはドメイン駆動設計とクリーンアーキテクチャの主に2つを織り交ぜて設計されています。
下の図が主な流れになります。

この設計には3つの基本設計があります。
- 責務ごとにレイヤーを分けて、依存の方向を一方向にする
- 同じレイヤー間で依存してはいけない(ただしEntityレイヤーは除く)
- レイヤーを跨いで依存してはいけない
上記の基本設計に合わせて、各レイヤーに責務が定義されています。
各レイヤーの詳細な責務は説明すると長くなるので、別記事にして紹介したいと思います。
では、このボイラープレートを使って実際にどのような恩恵が受けられるでしょうか。
例えば、前述したようなAPIを用いたクライアント側の実装で、「APIを叩いて、データを取得する処理を実装したい」場合DataAccess層に、「取得したデータを加工して必要なデータだけ抽出する」などのビジネスロジックはService層に実装する。と下の図のように定義されています。

このように各レイヤーの責務が定義されていることで、ある程度実装場所に迷わずコードが書けるということや、コードを参考にしたい場合やバグの修正の際なども各レイヤーごとのコードを参照すればすぐに目当てのコードに辿り着くことが可能です。
また、ドキュメントがしっかり用意されており、実装者によってレイヤーの責務定義が違うといったことも起こりにくいので、コードがいろんな箇所に散りばめられたり処理の特定が難しいといったことはかなり軽減されていると感じました。
コミュニケーション
週2回のStand Upミーティングで自分がこれからやる作業の報告やそれについて相談し、2週間に1回のレビューで対応してきたissueの内容を報告する時間が設けられています。
これらのミーティングを通して経験年数や立場などに関わらずみなさんがフラットに話し合える社風だと感じました。
その後の業務内容
引き続き、社内ボイラープレートを使いAPIの実装を行ったり、仕様を確認しながら機能実装を進めていきました。
APIの実装も社内ボイラープレートで開発を進めていきましたが、まだSQLに不慣れなため、データベースが絡むアプリケーションの実装に苦労しました。ですが、気軽に相談できる環境で、少しずつ実装を進めることができました。
また、一部私がコードレビューを担当することもありました。1年目からコードレビューを担当することは自身の技術アップにも繋がりメンバーとのコミュニケーションの仕方も学べる非常に良い機会でした。
最後に
コロナウイルスの影響で、入社してから1年間ほぼ在宅ワークです。
社会人になったばかりで右も左もわからずでしたが、オンラインで相談もすぐに受けてくださったりなど非常に働きやすいと感じています。
この記事を読んでPR TIMESの仕事に少しでも興味を持ってくだされば幸いです。