LoginSignup
25
7

More than 3 years have passed since last update.

弁護士ドットコムの ITS/Git 運用ガイドライン

Last updated at Posted at 2019-11-30

この記事について

  • この記事は、 弁護士ドットコム Advent Calendar 2019 - Qiita  の 1 日目の記事になります。
  • 初日となる本記事では、弁護士ドットコム株式会社の ITS (Issue Tracking System, 課題管理システム )/Git 運用のガイドラインを加筆修正の上、公開します。
    • 当社でも、開発におけるビジネスの優先順位が不明瞭で、見える化されていない時期もありました。
    • 本ガイドラインは、開発に関わる人員が数人から数百人レベルに成長する過程で、都度メンテナンスされてきた当社の知見です。
  • 目新しいものはなく手垢のついた内容かもしれませんが、開発現場を改善する一助となれば幸いです。

ITS 運用ガイドライン

  • 当社では、 ITS として Redmine/Jira/GitLab Issue などを利用してきました。
  • ITS を頻繁に変更することは好しくありませんし、どれを使ってもそれなりの運用はできると思います。
  • 本件において唯一得た学びとしては、フルマネージドサービスを利用すべきだということです。
  • 保守運用や局所最適などの負荷から開放され、本来注力すべき開発に集中することができます。

目的

  • 基本的に「個人依頼」ではなく、「チーム共有」する文化を育み、以下 3 つを実現したい
    1. 共有されないことによるリスクの低減
      • 別施策とバッティングして、想定外のバグを発生してしまう
    2. 依頼を受けた人の共有するコストを削減
      • 「〇〇さんに DM したよー。」「聞いてないよー。」
    3. 複数人でフォローできる体制で属人化を防止
      • 「今日は私はお休みです。明日以降で対応します。」
  • これらは ITS を利用しなくても実現できるが、チケット駆動開発を推奨することで見える化に繋げた
  • また、情報整理や対話のきっかけとして、チケットのテンプレートも用意している

チケットテンプレートとは

  • 大きく分けて、バグ(不具合)とストーリー(それ以外)、 2 種類のテンプレートを用意している
  • テンプレートはあくまでガイドラインなので、全項目を埋める必要はない
    • 軽微な変更や、該当しない項目は空欄可
  • テンプレートを無視しても問題ない
    • 詳細な企画書を添付する、あるいはもっと良い書き方があれば柔軟に変更可

バグテンプレート


# 概要

- xxx

# 発生環境

- 端末/OS/ブラウザなど
- バグが発生した日付・時間

# 再現手順

- どのURLから、どのリンクをクリックしたか・どんな値を設定したかなど具体的に

# 期待した結果

-

# 実際の結果

- xxx

# 備考

- スクリーンショットや補足があれば

ストーリーテンプレート

# 概要

- 「誰の」ためのストーリーか
- 「何を」したいのか
- 「なぜ」そうしたいのか

# 背景/目的

- xxx

# 受け入れ基準

- 「これが実現していれば目的は達成できる」という基準

# 対象デバイス

- PC
- SP

# 備考

- スクリーンショットや補足があれば

Git 運用ガイドライン

  • 当社では、ソースコード管理サービスは GitLab を利用しています。
  • GitLab は、 GitHub と類似の機能を無料で使えることから、当社も自分たちで運用( Self-Managed )していますが、そもそも設計思想が異なります
  • 本件において唯一得た学びとしては、フルマネージドサービスを利用すべきだということです。
  • 保守運用や局所最適などの負荷から開放され、本来注力すべき開発に集中することができます。

必ずブランチを切ってからコミットする

  • no branch, no commit. no ticket, no branch.

目的

  • コミット履歴を ITS に確実に紐付けること
  • レビューのための下準備

概要

  • ブランチ名は feature/1234/hoge-fuga-piyo のように [ブランチ種別]/[ITS ID]/[ブランチ内容] で入力
    • ブランチ名の重複を避けるために命名規則を定義

ブランチ種別

  • feature : 機能開発
  • hotfix : バグ修正
  • develop : 機能統合
    • 大きな開発の際に用意してもよい(通常は不要)
      • develop から feature を切って、develop に対してマージする(レビュー必須)
      • master と乖離しないように、定期的に rebase master する

ITS ID

  • チケット駆動開発を推奨
  • チケットを切らない場合、コミットメッセージに必ず変更理由が分かる詳細を書くこと

ブランチ内容

  • 好きに入力
    • キャメルケースは同名で大文字小文字異なると問題となることがあるので、小文字ケバブケース統一を推奨
  • 禁止事項
    • master への直コミット禁止

master ブランチへのマージはレビュー必須

目的

  • 必ずレビューを通すことで、ミスを防ぐ
  • 業務知識の共有を行うことで、属人化を防止

概要

  • GitLab 上でのマージリクエストでレビューを通してから master ブランチにマージ
    • 例外は上長承認が必要
      • 運用しながら事例ベースでルールを作っていく
    • マージリクエストには最低限 ITS URL を記載する

マージリクエストはレビュー依頼者がマージする

目的

  • レビュー依頼者がマージ後も確実に動作することに責任を持つ
    • rebasemerge 時のコンフリクト解消も責務

概要

  • レビュー依頼を受けた側は、問題なければ以下の様なコメントを残す
    • LGTM
    • :thumbsup:
  • 問題はないけど、意味のある粒度でコミットをまとめたほうがよい場合は、その旨指摘する
  • レビューが通ったマージリクエストは、レビュー依頼者がマージする

ボールを持っている人を Assignee にする

目的

  • アクションし終わったら都度 Assignee を変更することで、誰がボールを持っているか明示する

概要

  • レビューを依頼する時 → レビュアーを Assignee
  • レビューし終わった時 → レビュイーを Assignee
  • LGTM を出した時 → レビュイーを Assignee に (マージするため)
  • Assignee は「レビューを放置しない」ことに責任を持つ
  • 余りに細かいもの (簡単な質問のやりとりなど) は Assignee を変更しなくともよいが、その場合でも Assignee になっている人が責任を持ってコミュニケーションを取ること

参考

最後に

  • 弁護士ドットコムに私は 5 年以上いますが、今が一番面白い時期にきていると思います。
  • 雇用形態問わず、「一枚噛みたい」という方や「ちょっと見てみたい」という方は、積極採用中ですのでぜひご連絡ください。
25
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
7