システム開発(アジャイル・スクラム)とか色々

スクラムについてのアウトプットだったり、時々お気に入りのものなど。

今さらエクストリームプログラミング(第2版)を読んだ

はじめに

こんにちは!
某企業で内製開発の推進やスクラムマスターとか色々やっております@daimyo404です。

弊社では、スクラムにXPのプラクティスを導入して開発を行っています。XPについては、断片的に知識はあったものの、体系的に理解できてなかったということもあり、改めて勉強してみました。

読んだ書籍は、『エクストリームプログラミング(第2版)/ケント・ベック(Kent Beck)、シンシア・アンドレス(Cynthia Andres)』です。日本語訳は角征典さんですね。今回第2版を読んだのですが、第1版とかなり違うようですので、改めて読んだりするもの良いかもしれません。なお、本記事はただの読書メモです。


XPとはなんなのか

建築家のC・アレグザンダーによる、パタンランゲージという知識記述の方法があります。それに触発されて、ソフトウェア開発における「パターン」をまとめ、著者のケントベックらはエクストリームプログラミングとして提唱しました。本書でもフォースなど、パタンランゲージの表現が出てきたりします。

XPには価値と原則、プラクティスという3つのキーワードが出てきます。


XPの5つの価値

XPでは5つの価値について述べています。

  • コミュニケーション
  • シンプリティ
  • フィードバック
  • 勇気
  • リスペクト

上記価値はそれぞれ独立したものというよりは相互的に作用します。比較的言葉の通りな感じですので、詳細知りたい方は、書籍をどうぞ。


XPの原則

  • 人間性
  • 経済性
  • 相互利益
  • 自己類似性
  • 改善
  • 多様性
  • ふりかえり
  • 流れ
  • 機械
  • 冗長性
  • 失敗
  • 品質
  • ベイビーステップ
  • 責任の引き受け

価値とプラクティスのギャップを埋めるものが原則です。

価値は抽象的すぎるため、プラクティスを実施する指針にするためのものと理解しています。 「否定的な感情に耳を傾ければ、新たな知見の源泉になる」というのは最近イライラしがちだったので自戒。


ラクティス

ラクティスには主要プラクティスと導出プラクティスの2種類があります。

主要プラクティスは無関係に役立ち、安全に始められる。導出プラクティスは主要を習得してから導入すること。つまり、基本的な主要を守ってから導出を始めようねと言っています。

主要プラクティスは以下の通り。

  • 全員同席
  • チーム全体
  • ストーリー
  • 週次サイクル
  • 四半期サイクル
  • テストファーストプログラミング

少し触れると、テストファーストプログラミングはロジック本体を修正する前に失敗するテストを書きましょうとか、週次サイクルは週次で仕事を計画しようとかそんな感じです。 スクラムでは具体的な開発方法については言及していないので、前者は導入できたりするかもですが、後者は少し被ってくる部分だったりしますかね。

導出プラクティスは以下の通り。

  • 本物の顧客参加
  • インクリメンタルなデプロイ
  • チームの継続
  • チームの縮小
  • 根本原因分析
  • コードの共有
  • コードとテスト
  • 単一のコードベース
  • デイリーデプロイ
  • 交渉によるスコープ契約
  • 利用都度課金

こちらも少し触れると、デプロイまでの期間をなるべく早く、デイリーでデプロイしようとかの考え方を言っています。主要を先に導入せよと言っているのは、テストファーストプログラミングなど、品質を高める活動をしないうちにデイリーデプロイすると失敗するから、そう言った理由になります。

また、ラクティスは組み合わせることで効果を増幅させます。


3つのキーワード

価値は抽象的なので原則という指針を持ってプラクティスに向かう。(実施する)

さいごに

気になった方は是非書籍をどうぞ。