エクストリーム・プログラミング(XP)とは
👴🏼ケント・ベックが, 📝パターンの考えをソフトウェア開発のプラクティスに応用した.
開発プロセスの📝ベストプラクティス(Best Practice)をカタログ化したもの. プロセスへパターンを適用したもの.
XPの歴史
👴🏼ウォード・カンニガム, 👴🏼ケント・ベック, 👴🏼ロン・ジェフリーズが作り上げたものとされている.
XP関連人物まとめ
👴🏼ロン・ジェフリーズ
ロン・ジェフリーズはケント・ベックが当時35歳くらいのとき, 20年以上年上のプログラマ.
👴🏼ケント・ベックはロン・ジェフリーズのやっていたことを言語化したにすぎない. デトロイト研究所仕込みのの📝ハッカー文化のなかやられていた方法論をケント・ベックなりにソフトウェア開発の文脈で整理した.
👴🏼ケント・ベック
西部劇の孤独を愛する男が対話とコミュニティを重視するXPフレームワークを生み出した!
- 📝テスト駆動開発(TDD)
- 📚エクストリームプログラミング - Kent Beck, Cynthia Andres(2015, 2nd)
- 📚テスト駆動開発入門 - Kent Beck(2003)
- 🔖カッコいい人
- 🔖プログラマ
👴🏼クリストファー・アレクサンダーと直接の接点はなかったものの, オレゴン大学の実験という1975年の実験があり, 爪痕がオレゴン大学に残っていて間接的にパタン・ランゲージの影響を受けたとか.
👴🏼Martin Fowler
マーチン・ファウラー.
パターンを見出して名前をつけてカタログ化することの名手.
用語
📝イテレーション
一連の開発工程を短期間でまわすため1つの単位. XPの文脈ではイテレーションだが, スクラム開発でいうところのスプリント. アジャイル開発ではイテレーション/スクラムのどちらかが用いられるが指しているものは同じ.
📝ペアプログラミング
ソフトウェア開発手法のひとつ. 2人のプログラマが1台のマシンを操作してプログラミングを行う. 略してペアプロ.
💎XPの価値(Values)
ある状況における好き嫌いの根源にあるもの. 価値判断の大きな基準. 📝価値観.
価値はプラクティスに目的を与える. 価値がないとプラクティスが機械的な作業になる.
XPの5つの価値
XPでは5つの価値を定義している. リスペクトは第2版で追加された.
- コミュニケーション
- シンプリシティ
- フィードバック
- 勇気
- リスペクト
💎コミュニケーション(Communication)
ソフトウェア開発において, 最も重要な価値.
💎シンプリシティ(Simplicity)
XPの価値のなかで最も知的な部分.
最もシンプルでうまくいきそうなものはなんですか?
シンプリシティが達成されるとコミュニケーションは少なくなる.
💎フィードバック(Feedback)
一時的な成功ではなく, フィードバックによるカイゼンを常に続けていこう. フィードバックをつかってゴールにたどり着くことができる.
💎勇気(Courage)
恐怖に直面したときの効果的な行動.
💎リスペクト
ソフトウェア開発に関係している人は, 等しく重要.
XPのプラクティス(Practices)
日常的な取り組み. 明確で具体的な行動. 📝プラクティス.
プラクティスは価値の証拠. 価値の説明責任を果たす.
📏XPの原則(Principles)
価値とプラクティスのギャップを埋めるもの. 価値は普遍的なものだが, プラクティスは状況により異なる.
プラクティスの意図を教えるもの, 背景.
分野別に, xxによりこの価値は高まるということを説明する単語.
初版
- 素早いフィードバック
- 単純さの採用
- インクリメンタルな変更
- 変化を取り込む
- 質の高い作業
第2版
- 人間性(Humanity)
- 経済性(Economics)
- 相互利益(Mutual Benefit)
- 自己相似性(Self-Similarity)
- 改善(Improvement)
- 多様性(Diversity)
- ふりかえり(Reflection)
- 流れ(Flow)
- 機会(Opportunity)
- 冗長性(Redundancy)
- 失敗(Failure)
- 品質(Quality)
- ベイビーステップ(Baby Steps)
- 責任の引き受け(Accepted Responsibility)
失敗
うまく成功できなければ失敗しよう.
ベイビーステップ
Baby Steps. 前進が確認できる最小のタスク.
あなたができる最も小さなことで, 正しい方向がすぐにわかるものはなんですか?
XP Topics
- 💡アジャイルとスクラムとXPの違い
- 💡Wikiは知識の共同編集方法のよい方法まとめでありXPはソフトウェアのチーム開発のよい方法まとめ
- 💡XPとはプログラマがオーセンティシティを発揮して開発をすること
💡アレクサンダー6つの原理とXPプラクティス
📚パターン、Wiki、XP ~ 時を超えた創造の原則 - 江渡浩一郎より.
- 有機的秩序の原則 ・・・ フィーチャーに注目した開発
- 参加の原則 ・・・ 顧客との対話を重視
- 漸近的成長の原則 ・・・ インクリメンタルな開発
- パターンの原則 ・・・ UML, XPプラクティス
- 診断の原則 ・・・ TDD, CI
- 調整の原則 ・・・ PDCA
💡すべてがXPになる
エクストリームプログラミングはスクラムよりもスコープが大きい.
- すべてがXPになる ─ エクストリームプログラミングで見える開発風景(セミナーレポート) - Agile Journey: このYoutube動画がわかりやすかった.
💡XPにおけるエクストリームとはすべてが自由なときどうするかという思考実験
リソースが豊かならば人々の活動は生産的になり, 過酷な環境だと生産的でなくなる.
これは人類学者コリン・ターンブルのフィールドワークからのインサイトらしいが, それをソフトウェア開発に置き換えると, 時間, 人, モノ, 金がすべて自由につかえるとき, ソフトウェア開発者としてどう振る舞うか?という思考実験.
💡時間やお金やスキルが足りなくても常に充分であるかのように振る舞うことで最高の仕事ができる
XP Insights
✨XPの原則がゲーミフィケーションの項目に該当する
XPの原則は客観的に効果があると言われている普遍の法則. これと📝ゲーミフィケーションが相性が良さそうだ.
✨XPの価値/パターン/プラクティスを参考にして自己省察や行動原則に応用したい
価値とプラクティスの関係に興味を持った. 価値観とは, それを日常で実践してはじめて価値が生み出される. そしてそれはパターンというようにある程度型にまとめることができる.
このようなパターンや価値やプラクティスの考えを自分の価値観や行動原則として応用したい.
✨科学的に効果がある研究と習慣化のアレンジこそXPのワクワクの源のひとつ
XPの原則とは, プラクティスをするべき科学的根拠.
価値観は善悪の判断でありそれは主観的なものだが, この原則というのは心理学や統計学に基づく科学的客観的な根拠にあたる. プラクティスをなぜやるのかという説明責任としては, そのカルチャーのような価値観と同様に, それが効果的である科学的根拠もまた, それをやるべき理由になる.
ただ, Kent Beckはプログラマであり🤵🏽メンタリストDaiGoさんではないので, 知識は📝Harvard Business Reviewでも読んでUpdateし続けることが大事かも.
💡XPとは、効果のない技術的/社会的な古い習慣を捨て、効果のある新しい習慣を選ぶこと
この科学的に効果がある研究と習慣化のアレンジこそ, XPのワクワクのひとつかもしれない.
✨価値は原則のタグ付け
これは解釈のひとつで違うかもしれないし間違っているかもしれない.
価値はそれ自体では抽象的であり意味が広すぎる. より深く理解するには原則レベルの抽象度で考えないといけない.
価値とは, 原則を束ねる少数のものでタグのようなものではないか? そして, これがカテゴリではないのは, 原則はきれいにグルーピングできなくて複数の価値に貢献するからでは?
References
📚プリンジ・ヌガク - 食いものをくれ - コリン・ターンブル(1974)
エクストリームの語源の元. 人類学者, コリン・ターンブルの研究.
;; https://www.amazon.co.jp/dp/B000J9GLQ4
プリンジ・ヌガク - 食いものをくれ
;; https://twitter.com/takeshi_mochida/status/1016276877793562625
60年代当時にこの地域を襲った旱魃による大飢饉の中で、人間性が破綻して、善性を喪失し、冷酷無慈悲な個人主義に支配された「もはやいいところなどなにひとつも残っていない」滅びゆく部族として、このイク族を描いた。
Ikland | trailer - YouTubeとしてドキメンタリー映画化も2011されたらしい.
アフリカのイク族について書かれた「ブリンジ・ヌガグー食うものをくれ」という本の中に、人はなぜ笑うのかという疑問のヒントが隠されたシーンがあります。食料を分けてもらえず飢餓状態の老人が、崖から落ちて怪我をしているのを村人が見て大笑いするという場面です。