ポエムです。XPの部分はお好きなプログラミング言語とかフレームワークに置き換えていただいて読んでも構いません。
先日、XP祭り2017にいって、XP 2ndではなくなったけど、1stにあったプラクティスについての発表をしてきました。あまぴょんさんも同じ境遇の別のプラクティスについて、いろいろな考察を話されていました。ここ最近思っていることや、懇親会で話をしたのが、なぜ「最近はこの手の話題(新しいプロセスやパターン、それを自分なりに深化させた話)が流行らないのか」ということです。いや、ちょこちょこ発表はされるんですが、単発で先が続かないんですよね。
アジャイルやパタン・ランゲージの現状
XP祭り2017で何人かにお話してみたり、イベントのアイスブレイクのセッションで挙手してもらったりした感じでは、XPについて本を読んだり学んだりという人は必ずしも多数派ではありません。1/4ぐらいでしょうかね。XP祭りは15年ぐらい続いているイベントですが、XPという一派からアジャイルというグループに範囲が広がり、その後スクラムが主流になって、というこの分野の特殊性もあります。あと、今回はサイボウズの代表取締役社長の青野さんが、納品のない受託開発のソニックガーデンの倉貫さんとの対談ということで、アジャイルよりもそっちに興味があって初参加という人も多かったのだと思います。実際面白かったですし。
実際、アジャイルを学ぶのは少しやっかいです。2013年のピアソン桐原のコンピュータ書籍撤退は記憶に新しいでしょう。他にもトッパンが撤退したり、アスキーもアスキーメディアワークスになったり、ハイエンド書籍部が移動してアスキードワンゴになったりしています。僕も倒産した九天社でXPの翻訳書を出していました。日本で最初の書き下ろしのアジャイル系の本は実は「Rubyを256倍使うための本 極道編」というアスキーから出ていたRubyUnitの本だったりしますが、これも当然絶版です。そんな感じでまず本があまり手に入らない、という問題があります。
スクラムは定着した感じがあります。また、XPそのものは、第二版を再訳したバージョンが、その他の重要書籍であるリファクタリングや、テスト駆動開発もオーム社から出ています/今後出ますが、書籍ではなくて、ぱっと検索して出てくるのが1st時代の話が多かったり、Wikipediaで説明されている内容も2ndが出る直前のIBMがdeveloperWorksで紹介した内容ベースで古いままだったりして、最新の内容を共通のボキャブラリーとして会話するのも難しいという状況です。
XP・アジャイルムーブメントでは、単に舶来のプロセスをいかに使うかという話だけではなくて、本家のプラクティスもどんどん変化していきました。また、XPやスクラム以外のプロセスもたくさんありました。勉強会でもアレンジして適用してみたりといった話もたくさんありました。また、一部のコアな人はXPと関連の強いパタン・ランゲージに注目し、オリジナルのパターンを作ったりもしました。こういった活動も、検索してすぐに出ては来ないし、歴史が止まってしまった感覚があります。工夫したりオリジナルのアイディアも霧散しています。情報を追いかけてなかった人からすると、一番注目度が高かった初代のXPとスクラムしか観測ができないのです。
多くの人の共通知識になることによる価値と当時のアジャイルの雰囲気
共通のボキャブラリーがなければコミュニケーションなんかできません。ちょうど、これを書いている時にこんな投稿もありました。
書籍を読めばいいんですよ、みたいな話があっても、書籍ってすごく売れていると思われている本でも4桁だったり、かろうじて5桁だったりという感じです。なかなか勉強会とかコミュニティでも「この本、みんな読んで当然だよね」という想定のもとでは話ができません。
また、「これは◯◯だ」というのが分かっていないと、怖くてインターネットでは発信できない、という話をXP祭りの懇親会で聞きました。僕なんかは、ぱぱっと書いてしまって、反論が来るのを楽しみにしたりもするんですが、「Java Houseのようで怖くて」らしいです。
僕も勉強法の本は書きました。ただし、それは「あまり本を読む人がいないので、本を読むと差が付けられます」という説明でした。コミュニケーションをして知識を深めて、新しいレベルに発展させて日本のコミュニティ全体のレベルが上っていく、というサイクルを回すには、多くの人が「それ知っているよ」というレベルにならないと実現できません。
XPは、「なんかアメリカの方で今までとまったく違うすごい方法論があるらしいぞ」みたいな雰囲気で入ってきました。オブジェクト指向のメーリングリストとかそういうところから口コミで広まり、新しいコミュニティができたりしました。みんな英語版の書籍を買ってきて、メーリングリスト上で輪読したりしました。
あと、忘れてはいけないのがテクノロジックアートの長瀬さんの謎のパワーです。XPが話題になって日本語の書籍が出るか出ないかのころにすでにケント・ベックやマーチン・ファウラーとかアリスター・コーバーンとかの大物を続々と日本につれてきて有料のセミナーとかが開催されていました。僕も学生でしたが自腹で(当時は学生割引とかそういうのが用意されることはなかった)参加したりもしました。翻訳書のタイムラグがとか、日米の時間差が、ということもなく世界にキャッチアップしていました。
その後はXPユーザーグループも設立され、永和システムマネジメントさんのオブジェクト倶楽部でも頻繁にイベントがあり、メルマガでの情報発信があり、オージス総研さんオブジェクトの広場でも情報公開があり、いろいろな会社で社内勉強会で取り上げられ(いくつか参加したことがあります)、Java Worldみたいな雑誌とか、Cマガジンとかで特集が組まれたり、ピアソン・エデュケーションや翔泳社やらからたくさん本が出たりしました。
オンラインコミュニティ、オフラインコミュニティ、技術系のウェブサイト、雑誌、書籍、あらゆるものが取り上げていました。少なくとも当時はXPのプラクティスとかは、プログラマー同士の会話に出しても「なにそれ?」ということはあまりなかったように思います。
なぜ人は本を買うのか・なぜ買わないのか
50万とも100万とも言われるソフトウェア開発者人口。多いですよね。10人に1人が買えば、5万部とか10万部です。といっても、その割に本は売れません。出版業界のレジェンド超人の鈴木嘉平さんは「そろそろ500部スタートという時代が来る」と言われています。
ITの技術書についてもすでに500部程度を基準に考えざるを得ない状況になっているので、特に違和感はないな。 https://t.co/p1UslDesw3
— Kahei Suzuki (@kahei) May 15, 2017
とはいっても、2000年ぐらいの水準であった5000部ぐらい?を考えても、全体の1%未満です。大ブームになったオリジナルのデザインパターンは2万部ぐらいでは?という噂を聞いたことがあります。結城浩さんのJava版の方が売れているのかもしれませんが、それでも多くて1桁%の普及度でしょう。
本を買うのはどの程度の前提知識がある人なんでしょうか?
適当にレベル分けをしました。もちろん、人によっては調査行動に差があるので、順番が前後したり別のアプローチをする人もいるかもしれません。勉強会やトレーニングコースといった方法によっても変わってくるでしょう。
理解度 | 状態 | 例 |
---|---|---|
0 | 存在を知らない | XPなにそれ? |
1 | 名前だけは知っている | XPって何か聞いたことある |
2 | どういったカテゴリのものか知っている | XPって開発プロセスだよね? |
3 | 正しいかどうかは別にして雰囲気を知っている | XPってドキュメント書かないんでしょ? |
4 | 正しく雰囲気を知っている | XPはイテレーションで開発するんだよね? |
5 | 出自、情報のソースを知っている | XPって白い表紙の本だよね? |
6 | 概要を知っている | XPってテスト駆動開発とかリファクタリングとかのプラクティスで構成されているんだよね? |
7 | 書籍や詳しい資料を読んだことがある | XPって5つの価値と12の基本プラクティス、12の導出プラクティスで構成されている開発プロセスだよね |
8 | 実際に試したことがある | 顧客同席はちょっとむずかしいけどユニットテストとリファクタリングはやってみたよ |
9 | アレンジができる | うちは教育資料をユーザーストーリーとして作成して流用できるようにしているよ |
10 | オリジナルのものを作り出せる | @m_seki < うちのプロセスはかつてXPだったもの |
それぞれの理解度ごとに必要な経験値はべき乗のイメージです。月に10冊とか買って読むような人は、もしかしたら1とか2のレベルでも敏感に察知して本を買っているかもしれません。書籍を手にとって購入して読み切るというのは、世間一般からすればかなりハードルが高い行動です。「アニメの円盤は、地上波とかで無料で見て、気に入ったものを買う」というのが一般的な購買行動です。それを考慮すると、この6や7のレベルまで到達し、なおかつ「これは自分には合っていそう」「今の課題の解消に役立ちそう」といったプラスの感想を持って初めて買うというのが一般的でしょう。
雑誌の記事があったり、勉強会で取り上げられる機会が多いということは、知識レベルが5-6あたりまで高めるチャンスが多いということでもあるので、本を買う人が多くなることが考えられます。
今後、プロセスの知識を伝えていくために
やはり、入り口がわからない、最新のステータスがわからない、というのが大きなふたつの問題でしょう。たとえ書籍があるものでも、「これをよめ」ではなく、なるべく多くの情報が無料で手に入るようにして、検索できるようにすることが大切かなと思います。何らかのウェブサイトで概略が分かって議論ができる程度の情報を出していくべきだなと思います。
情報を出すといっても全部を無料公開という話ではなくて、これは何で、何でないか、というが分かる程度の概略、そして具体的な手順の議論ができるような、プラクティスとかそのレベルでの概略もあると良いかと思います。てっとり早くできることとしては、書籍の目次を詳細に出すのもいいなと思います。それで、何があって、何がないかが分かりますし、検索したときに「この本の◯章あたりに書いてありそうだぞ」ということがわかれば、情報を見つける糸口になります。オライリーさんは僕の本について詳細な目次を公開してくださったのですが、これはすごい良かったなと思っています。
かつて、◯◯-users.jpブームというものがありました。最近だと、英語圏を中心にAwesome ◯◯というGithubを利用したポータルサイトをよく見かけます。これは一つのヒントになると思います。入り口を作るというのは、決して◯◯入門を作るというわけではありません。入門コンテンツも一つの大事な要素ですが、それが何であって何でないか、というのを簡潔に伝える(知識レベルを4以上にする)紹介が一番大切です。その後は6や7に上げるためのチュートリアル、8以上にするための応用的なトピックも大切です。
そして、ある程度まとまった内容になったら、電子書籍でもなんでも、201◯年のスナップショットとして書籍とかにしていけばいいのでは、と思います。
まとめ
開発プロセスという抽象的なものは、特定の具体的なフレームワークやプログラミング言語の新機能の使い方とかと比べるとなかなか扱いにくいものではあると思います。最近話題になるのは、ライブラリやツールの使い方や、VRやIoTなどのIT技術を使う具体的な技術の話ばかりです。しかし、10年以上前から進歩的な話をあまり聞かない、というのは寂しい話です。
では不要なのか?というと、そうではないです。少なくとも「なんだろう?」と思って勉強会に来てくれる人はたくさんいるわけですし(ただし東京、関西ぐらいしか今はなさそう)、「怖くて発言できない」という人もいるわけです。僕が考えているパタン・ランゲージの話(そのうちまとまったら公開したい)とかも、話をすると多くの人が興味深く聞いてくれますし。
少なくとも僕は何かしらの発信をするときは、情報の入り口が開かれているか、というのを気にしていきたいな、と思った次第であります。