TANP Blog

株式会社タンプが運営するギフトEC「TANP(タンプ)」の開発ブログです。

タンプの開発サイクルの紹介

こんにちは、エンジニアの大地です。

今回は弊社エンジニアチームの開発サイクルについてご紹介します。Issueの起票から開発、リリースまでの流れを詳しく解説します。

Issueの起票

弊社では、タスク管理にGitHubのIssueを使用し、Projectsのダッシュボードで一覧管理しています。Issueの起票には主に2つの経路があります。

事業部からの発案

PO(プロダクトオーナー)が事業部からの要望を吸い上げ、必要な情報を揃えた上で起票します。この経路では新機能の開発や既存機能の追加実装が多いです。

エンジニア主導の発案

スロークエリが発生している機能のパフォーマンス改善や、アラートが発生している機能の修正タスクとして起票するケースです。この経路は主にTechIssueとして扱われます。

 

 

開発

ブランチの運用ルール

大まかにルールとして決まっているものは以下の2点です。

  1. 大規模な開発: メインブランチからdevelopブランチを切り、さらにそこからfeatureブランチを切って開発を行います。
  2. 小規模な開発: メインブランチから直接featureブランチを切り、開発を行います。

 

プルリクエスト作成

メインブランチへ直接コミットはできないようにしており、必ずプルリクエスト(PR)を作成します。PRは最低1人以上のレビュー&承認が必要です。

また、レビュアーの負担を軽減するため、できるだけ小さい単位でPRを作成するように心がけています。

 

CI

プルリクエスト作成時には、PHPStanによるLintチェックとPHPUnitによるテストコードの実行が自動で行われます。

Lintチェック

PHPStanによるLintチェックを導入することで、以下のような恩恵を受けています。

  • コード品質の向上: コーディング規約違反や潜在的なバグを早期に検出し、コードの品質を維持します。
  • 一貫性の確保: チーム全体で統一されたコーディングスタイルを保つことで、コードの可読性と保守性が向上します。
  • レビュー時間の短縮: 人間のレビューアが見逃しがちな細かい問題を自動的に検出し、レビュープロセスを効率化します。

テストコードの実行

PHPUnitによるテストコードの実行により、以下のような利点があります。

  • バグの早期発見: 変更が既存の機能を破壊しないかを確認でき、バグの早期発見と修正が可能です。
  • 信頼性の向上: テストが通過することで、コードの信頼性が保証され、本番環境へのデプロイ時の安心感が増します。
  • 継続的な品質保証: 新機能追加や変更があっても、一貫した品質を保ち続けることができます。

これらのCIプロセスにより、コードの品質を高い水準で保ちながら、効率的に開発を進めることが可能になっています。

ステージング環境

弊社では、本番環境と同等のステージング環境を用意しています。ローカル環境と本番環境の差分による予期せぬバグを防ぐため、ステージング環境での確認を行います。また、ステークホルダーの意図通りに動作するかを確認する場としても機能しています。

 

リリース

ステージング・本番ともにCDが整備されており、ほぼ自動で各環境にデプロイされます。具体的なリリースフローに関しては以下の記事で紹介しています。

www.tanp-blog.com

 

デプロイ後、Datadogなどでサーバーへの負荷状況やエラーの増加等をしばらく監視し、本番での動作確認を行なった後、問題なければSlackで全社へのリリース報告を行います。

まとめ

今回はタンプの開発サイクルについてお話ししました。弊社では、新規機能の開発と既存機能の改善を両立しながらサービスを一緒に作っていくメンバーを募集しております!

少しでも興味を持っていただけたら、各種募集記事からお気軽にご連絡ください!

 

エンジニア採用サイト:https://tanp.jp/company/engineer

タンプ Twitter:https://twitter.com/gracia_tanp