すべてがXPになる ─ エクストリームプログラミングで見える開発風景(セミナーレポート)

すべてがXPになる ─ エクストリームプログラミングで見える開発風景(セミナーレポート)

アジャイルソフトウェア開発を企業が導入する際に、スクラムと並んで名前が挙がる開発手法にエクストリームプログラミング(XP)があります。ガイドブックや研修が存在するスクラムに対して、ペアプログラミング(ペアプロ)やテスト駆動開発といったプラクティスをエクストリーム(極限的)に実践しようというXPの導入には、どこから始めればよいのかと戸惑う開発組織もあるようです。

2022年6月に開催されたユーザベース主催の勉強会「エクストリームプログラミングで見える開発風景」では、XPの提唱者であるケント・ベックの著作などの翻訳者として知られる角征典さんと、XPを導入しているユーザベースのソフトウェアエンジニアである野口光太郎さんが講演したのち、XPの始め方やエンジニア以外との体制づくりなどについて、視聴者の質問をもとにパネルトークが行われました。

本記事では、組織にXPをどのように導入するか、またスクラムとの関係などについてパネルトークの話題をもとにレポートします。本記事からXPに興味が出たという方がいましたら、角さんが翻訳された『エクストリームプログラミング』や『Clean Agile 基本に立ち戻れ』を読むとより理解が深まるでしょう。

エクストリームプログラミングをチームに定着させる

パネルトークで中心的な話題となったのが、XPを組織に導入し、チームに定着させるにはどうすればよいかということです。そもそもソフトウェア開発組織がXPを導入することに、どういった意義があるのでしょうか?

 なぜXPを導入すべきかと言えば、プログラマーがプログラマーのために作った開発手法だからです。このような開発手法は、おそらくXP以外に存在しないのではないでしょうか。実際、テスト駆動開発、継続的インテグレーション、リファクタリング、ペアプログラミングなど、今では当たり前のようになっている技術プラクティスは、すべてXPのコミュニティが生み出したり、世の中に広めたりしたものです。

『Clean Agile』には「アジャイルを本当に理解したければ、XPを学ぶ以上の方法はない」とまで書かれています。さすがに20年以上前のものなので、現代の開発スタイルに合わない部分もあるでしょうが、これから開発者や組織を成長させたいならば、XPをお手本にすることが近道になるでしょう。

▲パネルトークの様子(記事末にアーカイブへのリンクがあります)

そうした前提をもとにパネルトークでは、組織で実際にXPを導入しようとした際に、ファーストステップとして何から実施すればよいのかという質問がありました。これに対する角さんの回答です。

 やはり「みんなで一緒に開発する」から始めることになるのかなと思います。1人で作る方が気は楽ですが、個人の成果からチームの成果というように意識を変えることが必要で、そのためにみんなで作るべきです。具体的なプラクティスとしては、ペアプログラミングなりモブプログラミングなりを始めるのがいいのではないでしょうか。

実際に「みんなで作る」ことはけっこう難しくて、XPの5つの価値(values)が、なんだかんだ全部必要になってきます。ですからみんなで一緒に作ることは、XPの価値を理解することにもつながります。

XPの価値として、ケント・ベックは「コミュニケーション」「シンプリシティ」「フィードバック」「勇気(courage)」「リスペクト」の5つを挙げています。これらを目的に実践されるプラクティスの中でも、ペアプログラミングはとくになじみ深いものでしょう。ユーザベースの野口さんからも、ペアプログラミングはとくにチームの若いメンバーにXPを定着させるコンテキストでメリットがあると語られました。

野口 ペアプロは若いメンバーの技術的な成長には絶対に効くので、そういうフックで勧めてみるのもありかと思います。

 そうですね。逆にすごくスキルがあるけれど、あまりチーム開発の経験がないメンバーにも有効で、いろいろな用途に使えますね。

野口 質問は「何から始めるか」でしたが、別の視点で「誰から始めるか」も大切で、やる気がある人と始めることの重要性もあるかと思います。私が入社する前の話ですが、弊社の林は1人から始めて、例えばテスト駆動開発(TDD)をやっていると、興味を持った人が「それどうやってるの?」と集まってきて小さなチームができた。そうやって近くに「やりたい人」を集めることは大事だと言っています。

ユーザベースのSaaS事業でCTOを務める林尚之さんのエピソードは、Agile Journey開設時に執筆された記事にも詳しく紹介されています。

参考▶ 「1人アジャイル」から始める、アジャイル開発導入のススメ|Agile Journeyローンチによせて

XPとスクラム、ビジネスとエンジニアリング

XPの始め方については、さらに話題が続きます。XPを始めるときにスクラムと合わせて始めるのがよいのか、まずどちらか一方を始めるならどちらが適切か? という質問があり、XPとスクラムそれぞれの考え方を角さんが説明しました。

 基本的にXPの方がスコープが大きいですね。スクラムの方がサブセットというか、要素が少ない感じです。『Clean Agile』にXPのプラクティスの関係をまとめた「サークルオブライフ(circle of life)」という図があります。3つのレイヤーに分かれていて、真ん中が技術に関するプラクティス。外側がビジネス向けのプラクティスで、その間がチームのプラクティスになっています。

XPプラクティスの「サークルオブライフ」
エクストリームプログラミング―基本に立ち戻れ―」発表資料(28ページ)より

つまり、外側に行くほどステークホルダーとのインターフェースになるんですが、スクラムは真ん中の技術プラクティスをごそっと抜いちゃったんですね。そのためスクラムはソフトウェア開発だけでなく、さまざまな分野に活用できると言われていますけど、逆にソフトウェア開発だとスクラムだけでは不十分で、「同時にXPもやれ」とよく言われています。なので両方ないと困る。困るんだけど、XPからすると、基本的にはXPだけでOKというか、XPが全部を表しています。

野口 私はスクラムもやったことがあるんですけど、やはりスクラムは始めやすいと思います。角さんが言うようにXPですべてが満たせますが、その「始めやすい」という意味でスクラムはお勧めできます。スクラムから始めてXPの技術プラクティスを入れつつ、価値をずっと届け続けることができている会社はいっぱいあるので、当然ですけどスクラムでもいいと思うんです。

一方で、結局はXPになる。始めづらいですけどすべてがXPになるのなら、ハードモードでいきなりXPで始めてみるのもアリかなって私は考えたりします。

さらにエンジニア組織ではペアプログラミングやテスト駆動開発といったXPのプラクティスもなじみがありますが、ビジネス組織や経営層を巻き込んで実践する際には、また異なった視点もあります。

 事業や経営を考えている人が導入したいのはアジャイルなので、この「アジャイル」という言葉をインターフェースとして使い、エンジニア組織の外には「アジャイルをする」とか「スクラムをやる」と言っておいて、開発チームでは粛々とTDDといったXPのプラクティスを実践すればいいと思いますし、実際そうしている会社も多いのではないかと想像します。

実際にビジネス組織とアジャイルを実践しているユーザベースはどのように取り組んでいるのでしょうか。

野口 やはり、エンジニアサイドから「巻き込んでいく」という側面が大きいかもしれません。ビジネスサイドに「どんどん関わってください、優先順位なども決めてください」と言っています。会社全体として、いわゆるビジネスサイドとエンジニア組織がリスペクトしあう風土があったため、言えば応えてくれるということも大きいです。

ただ、確かにプログラマー以外に「XPです」とは言ってないですね。「アジャイルです」とか「リーンです」みたいな言い方はしてますが。社内で「XP」という言葉が浸透しているかというと、正直そこまで認識されているわけでもないのかなと思います。

 ひょっとすると名前がよくないのかもしれませんね。名前に「プログラミング」と入ってるので、ビジネス側から「自分には関係ない」と思われることもあるのではないかと思います。

野口 それを言うと、私自身も最初はプログラミングだけだと誤解していて、サークルオブライフの内側だけだと思っていました。けっこう後になってから実はそうじゃなかったって気づいたんですけど、そういう誤解はあるかなと思います。

コロナ禍におけるプラクティスの変化

導入や定着といった話題のほか、発表から20年以上もたってずっと本質が変わらないXPにおいて、時代に合わせた変化がどうなっているのかについて聞かれた角さんは、次のように語りました。

 まったく変化していないということはなくて、例えばこの2〜3年はリモート勤務が増えているので「チームで同席しましょう」と提案されることは少なくなっていると思います。みんなで同じ情報を見るための工夫にしても、壁にポストイットを貼って「情報ラジエーターだ」と主張する人はそれほどいなくなっていて、基本的にはオンラインツールを使いましょうというトーンになっています。

人間の本質的なニーズはそれほど変わらないんですね。安心感を得たいとか、人に認められたいとか、そういうところは変わらない。だけど、表面的なところはけっこう変わっています。それはアジャイル全般にも同じことが言えて、価値や原則はあまり変わらないけど、開発プラクティスは変えていけばいい。じゃあ、誰がそれを変えるかといえば、それぞれの開発現場に合わせてみんなで変化させていけばいいのです。

ケント・ベックも「一人ひとりがそれぞれ自分なりのXPを実践していけばよい」というスタンスになっています。「ケント・ベックが言うXPはこれだ、と盲信されてしまう方が怖い」とすら言っています。そのためかもしれませんが、体系化して広めるということについて、XPはスクラムほどわかりやすくないかもしれません。

コロナ禍での変化については、ユーザベースでどのように実践しているかを野口さんが語りました。

野口 答え方が難しいんですけど「勇気」を持って端的に答えると、あまり変えてないと思っています。リモートワークではオンラインコミュニケーションツールのGatherを積極的に活用して同席していますが、この「Gatherで同席しています」というのも「同席」にこだわってのことなので、今の世の中では珍しい方なのかもしれません。

あえて愚直にやっているって言えばいいのかな。実践する中で価値がわかる面もあるので、守破離の「守」ということをよく言うんですけど、下手に変え過ぎないことはけっこう大事にしています。

続けてGatherを含めて、XPを実践するにあたって現状でツールの活用において工夫している点を語りました。

野口 Gatherで重要なことは、すぐに話しかけられることです。表示されているアイコンのところに行けば話しかけられるというのは、XP的な働き方にかなり向いています。それから強制はしていませんが、基本的にビデオをオン、音声も(ペアプロをするので)当然ずっとオンで仕事をしています。できるだけコミュニケーションの帯域を広くすることも大事にしていますから。

ペアプログラミングでは、使ってる人も多いと思うんですけど、Code with MeLive Shareといった同時にコードを書けるツールを使っています。

 現代では、開発環境を揃えることがわりと重要なのかもしれませんね。以前はエディター論争みたいなものが普通に行われていましたが、最近はチームのみんなが同じ環境で開発することが一般的になっているように思います。その方がXPを実践しやすいということはありますね。

このようにパネルトークにおいては、XPの導入についてファーストステップからツールの工夫まで、具体的なアドバイスを含めて語られたセミナーでした。

YouTubeのアーカイブでは、XPの基本やサークルオフライフの実践について語る角さんのメインセッションや、ユーザベースで実践されている独自のプラクティスを解説する野口さんのセッションも視聴することができます。

参考▶ エクストリームプログラミングで見える開発風景 - TechBase vol.1 - YouTube

※本記事では、角さんと野口さんの回答を、テーマごとに再構成し、追記修正いただいた上で、冒頭の質問は角さんに追加で回答いただいています。当日の質疑通りではないことをご了承ください。

構成・編集:はてな編集部

角 征典(かど・まさのり) @kdmsnr
ワイクル株式会社 代表取締役、東京工業大学 環境・社会理工学院 特任講師。アジャイル開発やリーンスタートアップに関する書籍の翻訳を数多く担当し、それらの手法を企業に導入するコンサルティングに従事。主な訳書に『リーダブルコード』『Running Lean』『Team Geek』(オライリー・ジャパン)、『エクストリームプログラミング』『アジャイルレトロスペクティブズ』(オーム社)、『図解リーン・スタートアップ成長戦略』(日経BP社)、『Clean Coder』(KADOKAWA)など。大学では、起業家育成プログラムにおいて、「デザイン思考基礎」および企業と連携したPBL型講義「エンジニアリングデザインプロジェクト」を担当。共著書に『エンジニアのためのデザイン思考入門』(翔泳社)がある。
kdmsnr.com
野口 光太郎(のぐち・こうたろう) @enk_enk
株式会社ユーザベース SaaS事業 Product Division ソフトウェアエンジニア
就職して最初の会社で『テスト駆動開発入門』に出会い感動、見様見真似でテスト駆動開発に取り組み始めたのがXPとの縁の始まり。途中スクラムに浮気したりもしつつ、2019年ユーザベースに入社してXPに復帰。現在はソフトウェアエンジニアとして、経済情報の力で誰もがビジネスを楽しめる世界を作るために、継続的に価値を届けている。一番好きな価値と原則は、シンプリシティと人間性。
ブログ:この国では犬が