アジャイルプラクティスガイドブック チームで成果を出すための開発技術の実践知


翔泳社


著者:常松祐一
監修:川口恭伸、松元健


はじめに
この本はどんな本ですか?
この本の対象読者
この本の読み方
本書で取り扱うプラクティスについて
監修者序文
はじめまして!
一方そのころ

第1章 アジャイル開発を支えるプラクティス
1-1 プラクティスの実践
 アジャイルの「ライトウィング」と「レフトウィング」
 技術プラクティスの実践を通じ、文化を定着させる
1-2 高速に石橋を叩いて渡る
 早く気がつく
 小さい単位で完成させる
 継続的に見直す
1-3 広く知られたアジャイル開発手法とプラクティス
 スクラム
 エクストリームプログラミング
 カンバン
1-4 プラクティス理解に役立つ考え方
 同時に取り掛かるタスクを絞る
 WIP制限
 リソース効率とフロー効率
 小さい単位で完成させつつ、全体バランスにも目を配る
 インクリメンタル
 イテレーティブ
 動作する状態を保ちつつ、変化させていく

第2章 「実装」で活用できるプラクティス
2-1 実装方針
 実装前に方針を話して手戻りを防ぐ
 実装前に方針を話す
 ユーザーストーリーをタスク分解する
 タスク分解
 カンバン
 完了基準を明確にする
 準備完了の定義(Definition of Ready)
 完成の定義(Definition of Done)
 受け入れ基準(Acceptance Criteria)
 未完了作業(Undoneワーク)
 コメントで実装のガイドラインを用意する
 疑似コードプログラミング
2-2 ブランチ戦略
 並行して修正を進めるための運用規約
 ブランチ戦略
 細かく頻繁に直接コミットを積み重ねて開発を進める
 トランクベース開発
 動く状態を保ったまま小さくマージしていく仕組み
 フィーチャーフラグ
 長命ブランチが必要な場合
 長命ブランチへの定期マージ
2-3 コミット
 標準的なコミットメッセージを書く
 読み手に配慮したコミットメッセージ
 異なる目的の修正を1つのコミットに混ぜない
 コミットを目的別に分ける
 コミットにプレフィックスを付与する
 コミット履歴を書き換える方法
 コミット履歴を書き換える
 読み手に受け取ってほしい流れでコミットを並べる
 物語のようにコミットを並べる
2-4 コードレビュー
 コードレビューの目的
 ソースコードの共同所有
 コードレビューの取り組み方
 コードレビューにも積極的に参加する
 ソースコード全体を見てコードレビューする
 レビュアーはグループにアサイン
 コードオーナーの設定
 ツールにできる指摘はツールに任せる
 linter、formatterの活用
 ツールの出力結果をプルリクエストにコメントする
 作業が確認できる場を早期に用意する
 実装の着手と同時にプルリクエストを作る
 親ブランチを使ったコードレビューとマージ
 建設的なコミュニケーションのための心構え
 レビュアー/レビュイーから伝える努力
 プルリクエストテンプレート
 協働作業でソースコードをよくする
 コードレビューのやり方を見直す
 コメントにフィードバックのニュアンスを含める
 コードレビューでコメントが思いつかない状態を乗り越える
 質問することで学ぶ姿勢を持つ
2-5 協働作業
 1つのユーザーストーリーに多くの関係者を巻き込む
 スウォーミング
 2人で協働し開発を進める
 ペアプログラミング
 リアルタイム共同編集機能のある開発環境を使う
 複数人で協働し開発を進める
 モブプログラミング、モブワーク
2-6 テスト
 検証(Verification)と妥当性確認(Validation)の観点
 検証(Verification)と妥当性確認(Validation)
 妥当性確認はステークホルダーと一緒に進める
 テストの自動化に関する技術プラクティスの違い
 自動テスト
 テストファースト
 テスト駆動開発
 テストコードを長く運用するためにできること
 読みやすいテストコードを書く
 テーブル駆動テスト
 テストコードの分量を適正に保つ
 必要十分なテストコードを用意する
 ミューテーションテスト
2-7 長期的な開発/運用ができるソースコード
 日々の開発からソースコードの品質に気を配る
 長期的に開発/運用できるソースコード
 ソースコードを長期的に開発/運用できるようにする
 リファクタリング
 リアーキテクチャ
 元のソースコードよりも綺麗にする
 ボーイスカウトルール
 機能の取り下げ方を身につける
 ソフトウェアの依存関係を見直す
 依存関係の自動更新

第3章 「CI/CD」で活用できるプラクティス
3-1 継続的インテグレーション
 ビルドやテストを繰り返し、問題を早期発見する
 継続的インテグレーション
 ローカル環境で頻繁にチェックを動かす
 フックスクリプト
 ドキュメントの継続的な更新
 ツールによるドキュメント自動生成
3-2 継続的デリバリー
 常にデプロイ可能な状態にシステムを保つ
 継続的デリバリー
 CI/CDパイプラインの構築
 CI/CDパイプライン
 利用環境をブランチ戦略と紐づけ自動更新する
 ブランチ戦略と利用環境との紐づけ
 ブランチ保護を設定し、リリースできる状態を保つ
 ブランチ保護
3-3 継続的テスト
 自動テストの望ましいテスト分量
 テストピラミッド
 ユーザー環境に近しいシステム全体のテスト
 E2Eテストの自動化
 開発にまつわるすべての工程でテストする
 継続的テスト

第4章 「運用」で活用できるプラクティス
4-1 デプロイ/リリース
 デプロイ戦略の選択
 ローリングアップデート
 ブルーグリーンデプロイメント
 カナリアリリース
 データベーススキーマの管理とマイグレーション
 データベーススキーマの定義と管理
 誰でもデプロイ/リリースできるように整備する
 デプロイツール
 ChatOps
 定期リリースを守るリリーストレイン
 リリーストレイン
4-2 モニタリング
 メトリクス/ログ/トレース
 メトリクス
 ログ
 トレース
 モニタリングとオブザーバビリティ
 モニタリング、オブザーバビリティ
 有用なログを出力する
 ログレベル
 JSONによるログ出力
4-3 ドキュメント
 チームのためにドキュメントを書く
 チーム内のコミュニケーションのためのドキュメント
 READMEファイル
 Playbook/Runbook
 目的を意識してドキュメントを書く
 Diátaxisフレームワーク

第5章 「認識合わせ」で活用できるプラクティス
5-1 関係者との認識合わせ
 関係者を集め、ゴールやスコープを揃える
 関係者を揃える/ゴールを揃える/スコープを揃える
 ユビキタス言語
 実例による仕様
 話題が減るまで毎日話す
 進め方の認識を揃える
 不確実性の高いものからやる
 コントロールできる事項は早めに決定する
 コントロールできない事項の決定はできるだけ先送りする
 進捗状況の認識を揃える
 関係者の期待値を聞いて認識を合わせる
 報告フォーマットを揃える
 技術プラクティスを適用する余力を確保する
5-2 開発内での認識合わせ
 設計を事前に協議する
 事前の設計相談
 リスクがあるユーザーストーリーは「スパイク調査」
 スパイク調査
 大きめの開発はDesign Docで目線を合わせる
 Design Doc
5-3 計画の継続的な見直し
 ユーザーストーリーを小さく分ける
 ユーザーストーリーの分割
 INVEST
 ユーザーストーリーを整理して見通しをよくする
 ユーザーストーリーの定期的な棚卸し

第6章 「チーム連携」で活用できるプラクティス
6-1 チームの基本単位
 チームで仕事を担う
 フィーチャーチーム
 フィーチャーチームがよく受ける疑問や誤解
 コンポーネントメンターを任命する
 会社組織とチーム体制の合わせ方
6-2 属人化の解消
 危険のサイン「トラックナンバー= 1」を避ける
 トラックナンバー
 スキルマップを作成し、属人化スキルを特定する
 スキルマップ
6-3 パフォーマンスの測定
 メトリクスを最大化する力学を避ける
 相関のあるメトリクスの組み合わせを複数見る
 “FourKeysMetrics”でチームのパフォーマンスを測る
 Four Keys Metrics
6-4 円滑なコミュニケーションのアイデア
 必要なときに直接やりとりする
 ただ話す
 トラベラーがチームを渡り歩く
 トラベラー
 声に出して働く
 Working Out Loud
 リモートワークを前提とした仕組み
 同期コミュニケーションを柔軟に取り入れる
 ワーキングアグリーメント
 オンサイトをリモートと同じ条件にする
 コラボレーションツールの活用
6-5 認識を揃えるワークショップ
 ユーザー目線で優先順位を確認する
 ユーザーストーリーマッピング
 短時間で見積もり、実績に基づいた進捗を示す
 サイレントグルーピング
 バーンアップチャート
 アイデアが生まれてからデリバリーまでを短くする
 バリューストリームマッピング

おわりに
コラム執筆者紹介
著者・監修者紹介
索引

コラム
■チームで1つずつ終わらせよう
 椎葉光行
■ペアプログラミングの効果と影響
 安井力
■テスト駆動開発ではTODOリストがテストよりも先
 大谷和紀
■技術的負債―問題発見までの時間とリスクをビジネス側に説明する
 川口恭伸
■インフラ構築を自動化しよう
 吉羽龍太郎
■Logging as API contract
 牛尾剛
■AIフレンドリーなドキュメントを書こう
 服部佑樹
■開発と運用、分けて考えていませんか?―ダッシュボードのその先へ―
 河野通宗
■開発項目をコンパクトに保つには、クリーンなコード
 大谷和紀
■チームに命を吹き込むゴール設定
 天野祐介
■グラデーションで考える 12年間のアジャイル実践
 きょん

書籍目次技術書籍

Posted by shi-n