読者です 読者をやめる 読者になる 読者になる

Aqutras Members' Blog

株式会社アキュトラスのメンバーが、技術情報などを楽しく書いています。

書籍「エクストリームプログラミング」の紹介

チームビルディング

今日の香川は少し涼しかったです、こんにちは joniy です!

今回は書籍「エクストリームプログラミング」の紹介をします。

この記事の対象者

  • エクストリームプログラミングって名前は聞いたことがあるけど具体的にどういうものか分かっていない方
  • エクストリームプログラミングを実践してみたいけど何をしたら良いのかわからない方

この本では,そういった方にもわかりやすい内容となっています。
主なターゲットはエクストリームプログラミングを少し実践してみた人という印象を受けます。

本の概要

この本では、

  • エクストリームプログラミングとは何なのか
  • どうやってエクストリームプログラミングは生まれたのか
  • 実践する上で必要なことは何なのか
  • 実践する上で問題となることは何かどうやってそれを克服するか
  • XP(エクストリームプログラミング)チームにはどういう役割のメンバーが必要なのか

などが書かれています。

「エクストリームプログラミング」は,「Extreme Programming Explained」第二版の訳本です. 「Extreme Programming Explained」第二版は,「Extreme Programming Explained」第一版が出版されてから5年後に出版されています. 第一版を読んで,実践してみたチームの声を参考にして,エクストリームプログラミング(以降XPと表記)を実践してみて出てきた問題点や謎について 掘り下げており,第一版から大きく内容が変更され,より実践的な内容となっています.

二部構成となっています。 第一部は「XPの探求」というタイトルで,XPとはどういうものか,どう実践するのか,どういうメンバーが必要なのかなどを述べています。 第二部は「XPの哲学」というタイトルで,XPというアイデアに至った経緯,XPを適用できるか判断する基準などを述べています。

第一部の紹介

XPとはどういうものなのか、これは第1章に書かれています。 そしてここを読んだだけでは「こんなこと実践できない...」と思ってしまう人が多いでしょう。
第一章の最初の段落にはこうあります。

エクストリームプログラミング(XP)はソーシャルチェンジである。XPとは、 以前はうまくいっていたかもしれないが、今では最高の仕事の邪魔になっている習 慣やパターンを手放すことだ。XPとは、これまで自分たちを守ってきてくれたが、 今では生産性の妨げになっているものを捨て去ることだ。何だか自分がさらけ出さ れたような気持ちになるかもしれない。

XPとは「変化すること・変化し続けること」ということのようです。 変化し続ける開発プロセスってどういうことなんだ...どうやって実践すればいいんだと混乱してしまうのではないでしょうか。

要約すると、
従来のやり方で、ネックになっている部分を分析し、シンプルな問題に切り出して
尊敬できるチームメンバーと勇気を持って取り組む。
失敗することもあるが、失敗を恐れず失敗から学び改善し続ける...。

この姿勢がXPを実践する上では必要であると書かれています。

また、XPを実践するためのプラクティスとして、

  • 継続的インテグレーション
  • テストファーストプログラミング
  • ペアプログラミング
  • 10分ビルド
  • インクリメンタルな設計

などが紹介されています。

第一部を読むことで、XPを実践するために必要な知識、先駆者たちの苦悩と解決方法などを知ることができます。

第二部の紹介

第二部ではXPという開発プロセスに至った道筋が書かれています。

XPの話の前に、生産手法の一つである科学的管理法(テイラー主義)がソフトウェア開発には適していないことが述べられています。

科学的管理法とは | ブリタニカ国際大百科事典 小項目事典より

近代的経営管理論の創始者 F. W.テーラーと彼の仲間とによって開発された管理方法の科学的思考をさす。この考え方は 1910年のいわゆる「東部鉄道運賃値上げ事件」 Eastern Rates Caseにおいて,H. L.ガント,H.エマソン,L.ブランデースなどによって科学的管理法と名づけられ,この事件を契機にしてアメリカ全土に普及した。

これは当時のアメリカの工場で、生産効率がなかなか上がらない問題に対して、 作業者全員を観察して、その中で最も効率の良い作業者の方法を工場全体で標準化することで生産効率を上げるといった手法です。

また、科学的管理法では作業者はサボるものという前提で考えられているため、 品質管理部門が別に設定されています。

これはソフトウェア開発でもよくあることで、科学的管理法がソフトウェア開発に適用されていると筆者は述べています。 これによる弊害として、品質を管理する役割とプロダクトを製作する役割が乖離してしまい、エンジニアが品質に対して責任を持たなくなってしまうため、 品質管理部門は排除し、チームメンバ全員で品質を管理し、誇りを持つべきだと述べています。

チームメンバが品質に責任を持たなくなる科学的管理法の反対として、トヨタ生産方式が挙げられています。

トヨタ生産方式とは | TOYOTA公式ホームページより

トヨタ生産方式は、「異常が発生したら機械がただちに停止して、不良品を造らない」という考え方(トヨタではニンベンの付いた「自働化」といいます)と、 各工程が必要なものだけを、流れるように停滞なく生産する考え方(「ジャスト・イン・タイム」)の2つの考え方を柱として確立されました。

トヨタ生産方式の特徴的な部分として、

  • 問題を発見した作業員が生産ラインを止めて、作業員全員で問題の原因を解決すること、
  • 作業員を多能化し、生産ラインのどこにでも入れるようにすることで流動するコストに対応すること

などがあり、これにより作業員全員が製品に対して責任と誇りを持つことができると挙げられていました。

そして、ソフトウェア開発においても同様の手法が適しており、XPの構想を固める上でトヨタ生産方式が参考になったと筆者は述べています。

第二部を読むことで、XPの背景を知ることができ、より立体的にXPについて理解することができます。

終わりに

書籍「エクストリームプログラミング」について紹介しました。
この本を読んで実践して、すぐに成果を得ることは難しいと思います。
実践して詰まったところを反省して、経験を積み、自分たちで手法を模索していくことで成果が得られると本著には書かれています。 まさしく「変化し続けること」ですね。

読んでみた感想としましては、「エクストリーム」と仰々しい名前がついていますが、 その実述べられていることの一つ一つを見てみると、実際に普段からやっていることであったり、 必要だと感じていることだけど後回しにしてしまっていることであったりと、普段の業務内容から逸脱したことは書かれていません。 ですが、XP全体を見ると経営層も絡めていますので、変化についてきてもらう人員が大きく膨れ上がってしまい、 ここに書いている通りに実践するのは相当骨が折れるな...という印象を受けました。 身近なところから、この本に書いていることで実践できることとしては、

  • ペアプログラミング
  • 自動テスト
  • メンバーをリスペクトすること
  • 品質に誇りを持つこと

でしょうか。こういったところから少しずつ実践していき、自分自身を改善し続けていくようにしたいと感じました!

みなさんもこの本を読んで日々の業務にXPのプラクティスを取り入れてみてはどうでしょうか!

また、読んだ後には、本書の後半にある注釈付き参考書籍から何かを手に取ってみるのも面白いと思います! ソフトウェア開発に向いていないと書かれていた、テイラー主義について書かれている「[新約]科学的管理法」や、 トヨタ生産方式を解説している「トヨタ生産方式―脱規模の経営をめざして」 などなど興味深い書籍が紹介されているのでぜひ!

それではノシ