君はWard Cunninghamを知っているか?(前篇)

新装版が出版された「達人プログラマー」。この本の紹介をする前に、どうしても知っておいてもらいたい重要な人物がいます。それが達人プログラマーの序文を寄稿しているWard Cunningham氏です。

Ward Cunningham(photo by https://en.wikipedia.org/wiki/Ward_Cunningham)

熟練エンジニアの間で支持される 達人プログラマーの新装版が11月に出版されました。本サイトでは、数回に渡って「達人プログラマー」の魅力をお伝えします。

君はWard Cunninghamを知っているか?

が、その前に寄り道です。今回は、達人プログラマーの序文を書いた Ward Cunningham(ウォード・カニンガム. 以下 Wardと略す)に触れたいと思います。Ward は、今のソフトウェア開発の歴史に影響を与えた活動と成果が幾つかあります。それは、Wiki、パターン、CRCカード、エクストリームプログラミング(XP)、Fit、そして技術的負債です。Ward の名前を知らなかったとしても、いくつかの言葉は聞いたことがあるでしょう。

この記事を書こうと思ったのは、訪問先の若手2年目が達人プログラマーの序文を読んでいるのを隣で観ていたのが発端です。今の私達の日常的な開発風景に多大なインパクト与えた一人であるWardを若手がまったく知らない現実を目の当たりにしました。

開発の歴史をふりかえって、Wardの活動と成果を若い世代にも知ってもらい、連続性から現在のトレンドを理解するのも大事だろうと思い、この記事を書きました。

Webで共同編集ツールの先駆け的存在の「Wiki」

Wikiが登場する以前は、編集作業は、1人が時間をかけてPCで論文や本を記述して、レビューし、やっと公開することが主流でした。そこに、インターネットが出現し、Web上で複数人が共同で素早く編集し公開するツールが、1995年ごろに登場します。その共同編集ツールの先駆け的存在であるWikiの作者が Ward です。

この新しい編集スタイルは、これまでのソフトウェア開発のあり方に大きな変化を起こすきっかけの役割を果たします。暗黙的になりがちなソフトウェア開発の設計判断や開発のすすめ方についての経験(暗黙知)が、Wikiというオープンな場を通じて活発に議論され整理された知識(形式知)としてインターネットを通じて公開されていきました。

Wikiはその後、ソフトウェア分野だけでなく、Wikipediaなど一般分野にも広がっています。近年では代替ツールの登場で、ソフトウェア開発の現場で、Wiki そのものを使う機会は減少していますが、複数人が共同でオープンにコラボレーションして成果を生み出そうとする哲学は広がっています。共同コラボレーションの精神をWebブラウザ上で動作するように具現化したWikiの役割は大きかったです。

繰り返し出会うであろう課題と解決を形式化した「パターン」

パターンは、ある状況における課題と解決案を言語化し、それに記憶に残る名前を付けたものです。オブジェクト指向言語を使ったプログラマであれば、「ファクトリーパターン」「ストラテジーパターン」などの「デザインパターン」を耳にしたことがあるはずです。これもパターンの一種で、ソフトウェア分野では盛んにパターンについて議論され公開されていきました。パターンは、ソフトウェアの設計判断のコツだけではなく、ソフトウェア開発のすすめ方のコツや新しいアイデアを組織に広めるコツなどなど様々な領域に広がりました。

下記にパターンの書籍とWeb上で公開されてたものの一部を紹介します。記載したリスト以外にも多数存在します。改めて見直すとパターンのその後の広がりとインパクトは大きいですね。

ソフトウェアに関するパターンは多数存在しますが、もともと、繰り返し立ち現れる課題と解決をパターンとして言語化し共有し設計するアイデアは、建築分野で誕生したもので、「パタン・ランゲージ」と呼ばれていました。それをソフトウェア分野に、はじめて持ち込んだのは1987年、Ward CunninghamとKent Beck です。当初2人がパターンを持ち込んだときは、建築のパタン・ランゲージの目指した理想が色濃く反映されていました。一人の専制的な建築家の設計によってではなく、そこに実際に暮らす人々が設計行為に参加し、より住みやすい街や家をかたちつくっていくことを意図したのがパタン・ランゲージの特徴です。このユーザや顧客との共創を具現化しようとする意志は、次回に触れるエクストリームプログラミングにも内包されています。

パターンを完成させる頃には、100から150個になると予測している。ユーザーインターフェイス設計におけるパターンランゲージの使用が最初に成功したときは、コンピュータユーザーたちが自分自身のアプリケーションを自らが設計し、プログラミングするという可能性があるのだということに、我々は大変熱狂した。

オブジェクト指向プログラムのためのパターンランゲージの使用
http://kdmsnr.com/translations/using-pattern-languages-for-oop/
http://c2.com/doc/oopsla87.html

DIYのようにソフトウェアも顧客やユーザが自分たちの手で欲しい物をつくっていく未来のビジョンは大胆な構想ですね。2016年の現在でもまだ現実化しているとは言い難いです。が、その代わりに、ユーザや顧客参加型のソフトウェアづくりは、エクストリームプログラミングやアジャイルの登場で浸透し始めています。

Ward CunninghamやKent Beckの活動の詳しくは、「パターン、Wiki、XP-~時を超えた創造の原則」に詳細に解説されています。この記事を読んで、もし詳しく知りたいと思ったら、こちらの本をお勧めします。(後篇につづく)

--

--

Published in 時を超えたプログラミングの道

編集長の永和システムマネジメントの家永(http://goo.gl/0kxCPi)です。より多くのプログラマを笑顔にするために情報を発信します。主な内容は、エクストリームプログラミングや、その周辺の技術と哲学です。 想定している読者はプログラマおよび、プログラマの育成責任者たるマネージャーです。 外部からは、疲弊した現場と見えても、プログラマが笑顔でいきいきと働ける、そんなヒントをお伝えしていきます。現場コーチ、コンサルティング、トレーニングのお問い合わせは [email protected] まで。

Responses (1)