XP (エクストリーム プログラミング)


イベント参加レポート集

イベント参加レポート集

■ XP (エクストリーム プログラミング) - イベント参加レポート集 1 (この頁)本頁内

・ セミナー「〜米国で話題!! 新概念のソフトウェア開発プロセス方法論〜 エクストリーム・プログラミングとリファクタリング技術解説」本頁内 2001/12/20〜21
・ 「XP 祭り 2002」本頁内 2002/07/08
・ 「エクストリーム・プログラミング & アジャイル開発プロセスセミナー」本頁内 2002/09/09〜10

XP (エクストリーム プログラミング) - イベント参加レポート集 2 (次の頁)別頁

・ 「Developers Summit 2003」別頁 2003/02/20〜21
・ 「XPエクストリーム・プログラミング 入門セミナー 〜 XP行脚 in 福井 '03年 春 〜」別頁 2003/04/30〜05/01
・ 「XP祭り2003」別頁 2003/07/18
・ 「エンジニアのためのコミュニケーション トレーニング」別頁 2003/11/12
・ 「XP&アジャイル開発セミナー 〜ブームから現実へ〜」別頁 2003/11/28

XP (エクストリーム プログラミング) - イベント参加レポート集 3 (次の次の頁)別頁

・ 「Developers Summit 2004」別頁 2004/01/28〜29
・ 「第11回 日本XPユーザー会 Martin Fowler 夫妻と Gregor Hohpe 氏を囲む会」〜「.NET アーキテクトセミナー 2004」〜「ソフトウェア再利用とパターンに関する特別セミナー」別頁 2004/04/19〜20
・ 「XP 祭り 2004」別頁 2004/07/26
・ 「Developers Summit 2005」別頁 2005/02/03〜04
・ 「XP 祭り 2005」別頁 2005/09/03

オブジェクト指向 - イベント参加レポート集はこちら別頁

凡例:
本頁内 : 頁内へのリンク
別頁 : サイト内の別頁へのリンク
外頁 : 外部サイトへのリンク

・セミナー「〜米国で話題!! 新概念のソフトウェア開発プロセス方法論〜 エクストリーム・プログラミングとリファクタリング技術解説」

上記に参加して来ましたのでレポートします.

【情報】

場所 :SRCセミナールーム (東京・高田馬場)
日時 :2001/12/20 (木) 〜 21 (金)
主催 :SRC
講師 :中山 秀樹 氏

【内容】

1.エクストリーム・プログラミング(XP)入門解説

1.1 リスクに対する基本的な取組
1.2 システム開発における経済学
1.3 4つの気紛れな要素
1.4 4つの変らない価値
1.5 基本とすべき法則

2.エクストリーム・プログラミング(XP)解決技術解説

2.1 XP を概観する
2.2 実践すべき十二箇条
2.3 プロジェクトを管理するための戦略
2.4 計画を立案するための戦略
2.5 システム開発・設計にあたっての戦略
2.6 テストにあたっての戦略

3.リファクタリング導入技術解説

3.1 リファクタリングの簡単な事例
3.2 基本とすべき法則
3.3 リファクタリングを必要とする前兆
3.4 自己回帰テストの必要性

4.リファクタリング基礎技術解説

4.1 カタログにみるリファクタリング
4.2 メソッドを構成する
4.3 特性を移動する
4.4 データを再構成する
4.5 条件記述を簡潔にする
4.6 メソッド呼出を簡潔にする
4.7 継承におけるさまざまな取組
4.8 大規模なリファクタリング

【内容に関する(まと)め】

「XP とは何か」については各種 XP 本を参照して頂く事として,此処では其れ以外のキーワードについて書き留めて行きたい.

* 所所に Gerald M.Weinberg (以下ワインバーグ) の言葉が引用されていたので其れも一部入れて行く.
* プラクティスの名称に関しては初期の頃のものと比較的最近のものとを出来るだけ併記に近い形で載せる事とする.
* 尚,この文書は研修内容の要約ではなく,研修中に印象に残った言葉を筆者なりに(まと)めたもの.

■ 何故ウォーターフォールはナンセンスか

■ XP のルーツ

■ XP を学ぶには

■ プラクティスの実践

○ 先ず前提として - ソフトウェア開発上のリスクについて

・「スケジュールの遅れ」,「プロジェクトの中断」,「システムの陳腐化」,「システムの欠陥」,「ビジネスのへの認識の不足」,「ビジネスの変化」,「機能が利益を生まない」,「スタッフが居なくなる」
-> プラクティスを実践しよう

○ オンサイト顧客 (On-Site Customer) - チーム全体 (Whole Team)

・顧客に理解してもらう

・顧客の承認の元 Proxy (代理人) を置く手も有る

・「ソフトウェア作業には製品顧客とソフトウェア開発者間の定常的な対話が必要である」(ワインバーグ)

○ 計画ゲーム (Planning Game)

・顧客と開発者の間で「ルールを作る」

・「目標の無いバーは跳び越せない」

・顧客が作る (ストーリーカードに書くのはプログラマでも良いし UML で書いても良いが理解し承認してもらう: ストーリーカードに印鑑を押す等)

・時間又は御金で見積もる

○ 小さなリリース (Small Releases)

・少品種多量生産 -> 多品種少量生産の時代へ

・ビジネス的に価値の在るものから小さいリリースを繰り返す
    「一年後の天気」は判らないでしょ?

・寧ろベンチャー ビジネス向け

○ シンプルな設計 (Simple Design)

・Let's KISS (Keep It Small and Simple)

・Once And Only Once

・「全てのテストに合格」して「表現すべき考えが網羅されている」最も少ないコード

・how だけでなく what がコード上に表現されているか

  例.
    ・悪い例 (コメントで説明)

foo()
{
    // what1
    how ...
    how ...
    how ...

    ...
    ...

    // what1 の続き
    how ...
    how ...

    // what2
    how ...
    how ...
}

    ・良い例 (コメントは不要)

foo()
{
    what1()
    ...
    ...
    what2()
}

what1()
{
    how ...
    how ...
    how ...
    how ...
    how ...
}

what2()
{
    how ...
    how ...
}

・「若しスケジュールを守る事が最優先なら最先端技術には近づくな」(ワインバーグ)

・「其の人にとってのシンプルさ」を目指すべき
    例えば「デザインパターン」が其の人にとって「消化されている技術」なら「デザインパターン」を使う事がシンプル

・シンプルにするのは簡単ではない

・「モデル要素は大き過ぎてはならない (さもなければ反応が遅く成る)」(ワインバーグ)

○ ペアプログラミング (Pair Programming)

・何故ペア プログラミングは効果的なのか
    1 + 1 が 3 にも 4 にも成り得るから
    一人一人では発想に限界がある
    どちらも持っていなかった発想が二人だと生まれる
    ペアを組替える事で全体に其れが広がって行く

・プログラマとプログラマのペアだけとは限らない (プログラマと顧客のペア等)

・「仲良しグループ」に成らないように

○ テスティング (Testing) - テストファースト開発 (Test-First Development),顧客テスト(Customer Tests)

・テストケースはストーリーを満たすものだけを作る
    テストのカバレッジは十分か?
    ストーリーに書かれていない事は顧客との契約には無い
    ストーリーに在る事について 100% テストする

○ リファクタリング (Refactoring) - 設計の改善 (Design Improvement)

・地道な作業

・対費用効果が見え難い (顧客から)

・スケジュールを立てる時には,コーディング時間 (デバッグ時間),テストの時間の他にリファクタリングの時間も入れておこう

・毎日リファクタリングしよう
    「食後の歯磨き」のように.最初は面倒に感じるけれど,習慣にすれば其の内リファクタリングしないと気持ち悪く感じるように成る.

○ 継続的インテグレーション (Continuous Integration)

・結合テストに失敗したら結合を放棄して最初から

○ メタファー (Metaphor)

・共通の用語 (概念) で短い言葉でコミュニケート

・問題について適当な抽象度でコミュニケート

○ 共同所有 (Collective Ownership) - コードの共同所有 (Collective Code Ownership)

・「無所属モデル」でも「個別所有モデル」でもない

・「所有者がいない」のでなく「全員が所有者 (責任者)」

・全体の規模が大きく成っても「シンプルな設計」であれば大丈夫

・個人の成果は無い -> どう評価する?
    評価し合う (ポイント制等)
    「個人の成績よりチームの勝利」
    個人プレーの方が効率が良い人もいる -> XP に向かない人 -> XP のチームから外してアドバイザ等に成ってもらう

○ コーディング標準 (Coding Standard)

・プログラマの個性が出ないように

・決めたら従う
    「どうしても嫌」なら "indent" のようなツールを使って,自分のコーディング時だけ別のスタイルにする

・ツールが使えるなら使って良い

・「JDK に合わせる」のような決め方も有る

・「日本語でプログラミングして良いかどうか」も決める

○ 40 時間労働 (40-Hour Week) - 持続可能なペース (Sustainable Pace)

・40 時間とあるが最適な週当たりの労働時間は人によって異なる
    もっとも効率的に働ける時間を元に計画を立てる

・実際の開発でこの時間を超えるようなら「危険信号」 -> プランニングを見直す為のフィードバックにする (そうしないと「其の場凌ぎ」に成る)

○ オープン ワークスペース(Open Workspace)

・集中している時に一分でも割り込まれると元の集中力を取り戻すには時間が掛かる -> 理想的なエンジニアリング時間で仕事をするには「閉鎖的な空間」も必要

・手の届く範囲にものを置くのが効率が良い -> 其の範囲が其の人のテリトリー (「閉鎖的空間」)

・ペア プログラミングの時も同様 (其のペアにとっての「閉鎖的な空間」が必要)

  例.  (Visio で筆者が作成)
    ・有り勝ちなレイアウト: 「此れで能率上がります?」

有り勝ちなレイアウト

    ・改良したレイアウト
改良したレイアウト

■ XP での役割

○ プログラマ

・分析,設計,テスト,実装,結合等を行う
・XP の主役

○ 顧客

・XP の顧客に成るのは容易ではない
・「ストーリーに盛り込んだ内容を受け取る」と云う契約である事を理解する
・顧客のコスト (人件費) も開発費に盛り込むべき
・開発していない時は本来の自分の仕事をしていて構わない
・エンドユーザーが参加出来ない時はエンドユーザーを代弁出来る人
・権限の有る人でないと駄目 (権限の無い人と長時間話をしても何も決まらない)
・「開発者が選択肢を示さない限り顧客は自分の真の要求に気付かない」(ワインバーグ)

○ テスト担当者

・顧客の (曖昧な) 要求に従って現実的なテストを構築

○ トラッカー

・予算と対費用効果のデータを取る
・ツール・テスト・アンケート等の評価を行う
・レポートを作って開発チーム,顧客,管理者にレビューする
・チームに新しく入った人には先ずはトラッカーをやらせてみると良い
・二人一組でやらせても良い (ペア プログラミング)

○ コーチ

・XP をより深く理解している
・XP の導入時は重要 -> チームが成長して行くに従って役割は小さく成って行く
・幾つかの XP チームを掛け持ちしても良い

○ コンサルタント

・顧客だけでは問題領域への解決策が判らないとき等
・問題の解き方をアドバイスする
・XP の専門家である必要は無い

○ 上司

・資源を割り当てる
・必要でない時は邪魔をしないように

【所感】

・とても Cool な研修であった.XP な人と云うのはどうして皆楽しいのだろう.
この際なので (謎) 一番前の真中に陣取って,様様な疑問点の解消を図った.


・「XP 流の研修」との事.

私流に解釈すると,

1. 顧客 (受講生) のリクエストで始める
2. 顧客からのフィードバックによって次の内容を決めたり内容を修正したりする
3. 顧客を研修に参加させる (此れが難しい… 先ずは受講生の名前を覚えて呼び掛けてみよう)
4. 目的は? 顧客にとっての価値を最大にする事

見習わないと…


・(研修は良かったが) 大切なのは実践.先ずはワークショップから始めよう.


・XP は実践が難しそうな気がしていたが,実は技術的な問題は其れ程大きくない.「やるか,やらないか」の問題が最大のものである.実は「やらない」理由を探すのは簡単だと思う.唯 XP が現在のプロセスより役に立たない事を証明するのはとても困難だと思う.


・品質には金が掛かる -> でも金は無い.こんな時に XP は最適かも.対費用効果が良さそう.RUP だと毎年 & プロジェクト毎に結構な金が掛かりそう.



・「XP 祭り 2002」

上記に参加して来ましたのでレポートします.

【情報】

タイトル:XP 祭り 2002
場所 :国立オリンピック記念青少年総合センター 417号室
日時 :2002/7/8(月)
主催 :日本XPユーザグループ

【内容】

■ 「XP、はじめの一歩」
(株) テントアーニ 木幡 善文

(*1) JUnit.org <http://www.junit.org/> を参照のこと
(*2) CVS Home <http://www.cvshome.org/> を参照のこと

■ 「Scrumの紹介とXPへの適用」
梅澤 真史

(*3) メタボリックス - SCRUM: 超生産的ソフトウェア開発のための拡張パターン言語 <http://www.metabolics.co.jp/XP/Scrum/Scrum.html> を参照のこと

■ 「がんばれC++/CppUnit」
'河童'プロジェクト επιστημη/もりりん

(*4) SourceForge.jp: Project Info - 河童 <https://sourceforge.jp/projects/cuppa/> を参照のこと

■ 「ネットワーク管理アプリケーション開発におけるXP利用報告」
横河電機株式会社 R&D IT プロジェクトセンター 井上 健 ・ 山川利治

■ 「週一放課後XPでZopeProduct作成」
eXtremeWays チーム

(*5) Web アプリケーション サーバー,コンテンツ マネジメント システム,Web アプリケーション開発環境.日本Zopeユーザ会 <http://zope.jp/> を参照のこと.
(*6) オブジェクト指向スクリプト言語.日本Pythonユーザ会(PyJUG) <http://www.python.jp/> を参照のこと.
(*7) WikiWikiWeb <http://www.c2.com/cgi/wiki> や zwiki.org <http://zwiki.org/> を参照のこと.
(*8) XPlanner <http://xplanner.sourceforge.net/> を参照のこと.

■ 抽選会

・私は,「Java 開発者のためのアンチ デザインパターン」 (*9) という本が当たりました.

(*9) Amazon.co.jp: Java開発者のためのアンチデザインパターン―失敗を回避する秘訣 <http://www.amazon.co.jp/exec/obidos/ASIN/4774114901/qid%3D1026805849/249-9007428-5189111> を参照のこと.

■ ライトニング・トーク
持ち時間 5 分の範囲で十人位の講演者が自由に講演

等等

(*10) Extreme Hour <http://c2.com/cgi/wiki?ExtremeHour> や メタボリックス - Extreme Hour <http://www.metabolics.co.jp/XP/ExtremeHours.html> を参照のこと
(*11) Industrial Logic - PairDraw <http://www.industriallogic.com/games/pairdraw.html> を参照のこと
(*12) 日本XPユーザグループ関西支部 <http://members6.tsukaeru.net/xpjug-kansai/> -「XPのビジネスメリット」を参照のこと.

【所感】

今回,XP に関する沢山のホットな実践を識ることが出来た.

XP の「三段階の習熟度レベル」

でいう「習熟度レベル 2」も大分進んできているようである.

XP 等の開発プロセスはあくまでも「勝つ」為の手段なので,「開発プロセスをどう使って勝つか」を考えて行かなければならない訳である (*13) が,その為には,今回のような場で多くの実践を見聞きして行くことが不可欠であると考えている.

(*13) 開発プロセスを使わずに勝とうとする人もいる.
それどころか失敗したか成功したかの評価の予定すらないプロジェクトが沢山進められているらしい.
それでどうやって「勝つ」というのだろう.「負け」を認めていないだけなのではないだろうか.

「戦わなきゃ現実と!」(アポジカ風)


・「エクストリーム・プログラミング & アジャイル開発プロセスセミナー」

上記に参加して来ましたのでレポートします.

【情報】

タイトル:エクストリーム・プログラミング & アジャイル開発プロセスセミナー (eXtreme Programming & Agile Software Development)
場所 :大手町サンケイプラザ 4Fホール
日時 :2002/09/09(月) 〜 10(火)
主催 :日本XPユーザグループ,(株)テクノロジックアート,(株)エクイティ・リサーチ

【内容】
【参考 Web サイト】
・ エクストリーム・プログラミング http://www.objectclub.jp/community/XP-jp/
・ アジャイルなソフトウェア開発手法 http://www.metabolics.co.jp/XP/AgileCommentary.html
・ ケント・ベック氏 http://c2.com/ppr/about/author/kent.html
・ 山田 正樹氏 http://www.metabolics.co.jp/
・ アリスター・コーバーン氏 http://members.aol.com/acockburn/
・ 合原 一幸氏 http://www.sat.t.u-tokyo.ac.jp/aihara/
【所感】

複雑系とアジャイルなソフトウェア開発について
〜 何故ウォーターフォールはナンセンスか Part II〜

今回のセミナーで大きく扱われていた複雑系に関して,以下に(まと)めてみたい.



「ソフトウェア開発がうまく行かない,どうしてだろう.どうすればうまく行くのだろう」


ソフトウェアの開発者がずっと考えてきたことである.

中には,「うまく行かないとかどうすればうまく行くかなんて,そんな風に考えたことはない.そして問題は起こっていない」と言う人も居るかも知れないが,そんな人は自分の失敗に気付いていないか,失敗しなかったことにしたいだけであろう.



ここで例題をあげてみたい.


例題 1.

或るシステムを開発するための二十人の開発要員からなるプロジェクトが有るとする.
このプロジェクトで納期迄にきちんとしたシステムを作り上げるにはどうしたら良いだろうか.


先ず,こんな考え方はどうだろうか.


「従来の思考プロセス」
  1. まず何を作らなければならないか十分に顧客からヒアリングをして仕様をきちんと決めよう.
  2. 仕様を個々の開発要員が十分に理解し,見積もりをきちんと立てよう.全員分の見積もりの総和からこのプロジェクトの工数が求まる.
  3. つまり,仕様の精度を出来る限り高くし,また見積もりの精度を出来る限り高くしよう.そうすれば全体としての精度が上がる.
  4. そうすればうまく行く筈.もし,うまく行かなかったとしたら,それは仕様が不十分であったか,または,見積もりが甘かった所為だ.

ところが,この (ウォーターフォール式の) ソフトウェア開発を小さな構成要素に分解しそれぞれの確かさを上げることで全体としての確かさを確保しようというアプローチは,大概うまく行かないようである.


何故なのだろうか.



ここに「ソフトウェア開発というのは複雑系である.だからそれではうまく行かないのだ」という説がある.


まず複雑系についてだが,今回東京大学の合原 一幸教授の大変に楽しい講演を聴くことが出来た.

余りに楽しそうで,帰ってくるなり複雑系の本を何冊か注文してしまった程である.


# 合原 教授については,月刊 ASCII の「哲学者クロサキと工学者アイハラの神はカオスに宿りたもう」と云う連載を御記憶の方もいるかも知れない.ちなみにこの連載は単行本に成っている.



以下,教わった内容に関して,ソフトウェア開発に関係有りそうな部分を少し述べてみたい.


・ バタフライ効果 (The Butterfly Effect) とカオス (chaos)


気象学者エドワード・ローレンツ (Edward N. Lorenz) の 1972年の講演は,

『予測可能性:ブラジルで一匹の蝶が羽ばたくとテキサスで大竜巻が起こるか』
(Predictability: Does the Flap of a Butterfly's Wings in Brazil set off a Tornado in Texas?)

と題されていた.天気予報はなぜ外れるのか,という点からカオス的な性質に関して説明したものである (未だカオスと云う言葉は無かったが).


天気予報では,気象を観測し,流体力学の方程式によって未来の大気の状態を計算する.日本で一番速いスーパーコンピュータはこの為に使われている,と聞いたことがあるが,計算量はともかく計算自体は出来る.


ところが,ローレンツは大気の対流運動の式を持ち出し,その計算結果がカオス的な性質を持つことを示した.初期データの僅かな誤差が,時間とともに指数関数的に広がって仕舞うのである.

「バタフライ効果」とは,一匹の蝶の羽ばたきのような小さな大気の動きが時間とともに指数関数的に広がって遠方で大竜巻となることもあるかも,という喩えである.


ジュラシック・パーク」と言う小説の中でイアン・マルカム博士と称する数学者が複雑系について語っていたのを覚えている方もいるであろう.

「これを一名、バタフライ効果という。北京で蝶々がはばたけば、ニューヨークの天気が変わるというやつだ」

少し言葉が変化してはいるが,これはイアン・マルカム博士が,「ジュラシック・パーク」というシステムが何故うまく行かないかを説明していく中の一節である (「ジュラシック・パーク」 マイクル・クライトン 著 酒井昭伸 訳 早川書房).


「或る強さで或る方向にボールを投げて,未来のこのボールの位置を予測する」のような線形 (linear) な問題の場合にはこのようなことは起こらず,ほぼ正確に予測が可能である.初期値の精度を上げれば上げただけ予測の精度を上げることが出来る.

ところが,非線形 (non-linear) な対象の場合,式で表されていて計算可能で本来決定論的 (初めの状況によって未来が決定する) であるにもかかわらず,或る程度遠い将来では予測が不可能になってしまう場合が有る.これをカオスと呼ぶ.



・ 複雑系 (Complex System)


複雑系は,高次元なカオスである.非線形な多くの要素と要素間の非線形な相互作用から成るシステムで,或る要素の性質をいくら解析してもシステム全体の振る舞いが予測出来ないという性質を持っている.


例えば,大気の流れの中には非線形な相互作用が多く存在していて,大変複雑な動きをして予測が困難である.また,人間の脳も非線形な性質を持つ神経が相互作用し合うことで機能している.その他の生物の組織や生物自体,生物の集まり (生態系や社会) 等も同様である.


そして複雑で予測困難ではあるが,全体としては或る秩序を有している.

脳の構成要素である神経は非線形でカオス的な振る舞いを持っている.そして沢山の神経は並行して動作し,また相互に作用する.それでいて脳は,全体としては極めてうまく機能している.


このような系では,ギリシャ以来の伝統的な学問の手法,つまり出来るだけ簡潔な基本原理 (例えばニュートンの運動方程式) に還元して理解しようとする手法が使えない.



・ ソフトウェア開発と複雑系


多くのソフトウェア開発者によるチームで開発が行われるような場合.個々のソフトウェア開発者は製造機械のような単純なものではなく,「エージェント」として振舞う.即ち,自分を取り巻く環境と適応していくように自ら環境と相互作用をしていく存在である.


# 「マトリックス」という映画を御覧になった方は,コンピュータの作り出した世界を意思をもって自由に行き来する「エージェント」という監視プログラムの事を覚えているかも知れない.


「エージェント」から成り立つチーム全体は,複雑系の性質を持っている.非線形な性質を持っている為,「全体は部分の総和」ということが云えない.そしていくら個々の構成要素を細かく規定しても全体としての振る舞いの予測が大変困難である.

これはつまり,ウォーターフォール式の計画の立て方が無意味であることを表している.


そして勿論ここから,アジャイルな開発方法の出番と成る訳である.アジャイルなやり方では,この複雑系の持つ予測不可能性を前提とした上で,そこから時間と共に生じる様々なずれに「アジャイルに」対応して行くのである.

この続きはまたいずれ. <See you another week. (謎)>



■ 新しい概念を習得することについて

今回も様々なアジャイルなアプローチを見聞きした.新しい幾つもの考え方を感じることが出来た.

本当に新しい考え方というのは,書籍を読むだけでは中々身に付かないものである.一人で書籍を読む,ということと,セミナーに参加する,というのは全然違う体験である,と改めて感じた.



最近,私や周りの人がどうやって新しい概念を吸収して行けば良いか,ということを良く考える.

今回のセミナー中にも,素晴らしい多くのアイディアに触れる度にそのことを考えていた.


書籍を読む,セミナーに参加する,というのは勿論知識を吸収するのも目的であるが,本当に私が習得したいのは,直接的な知識:「それがどういう概念なのか」より,考え方:「どうやってその概念に辿り着くのか」の方である.直接的な知識だけでは本当に自分のものとすることは難しい.例えば,「XP (エクストリーム・プログラミング) とは何かを知っている」からといって「様々な問題を XP でどう解決すれば良いのか判る」とは限らない.そこには大きな隔たりが存在し得る.


ところが,直接的な知識の方は,書籍でも得られるが,考え方,思考プロセスというものは,いくら正しいことを言葉で説明されても中々身に付くものではないようである.

最近某所で聴いた「何かを学ぶためには自分で体験する以上にいい方法はない」というアインシュタインの言葉がマイ・ブームなのであるが,思考プロセスを身に付ける際には,矢張り何らかの体験が大切なのだと思う.


TOC (Theory of Constraints: 制約条件の理論) を紹介したベストセラー小説「ザ・ゴール」にこんな一節が有る.

「アレックス、もし私がすぐに答えを教えてしまったら、君はきっと失敗するに違いない。成功したいんだったら自分自身で考えて理解しなければいけない」 (「ザ・ゴール」エリヤフ・ゴールドラット著 三本木亮訳 ダイヤモンド社)


「ザ・ゴール」のアプローチは面白いと思う.「常識」に囚われている人は,たとえそれよりずっと理に適った解を示されようとも中々耳を貸そうとしない.そこで正当性を詳細に説明するのではなく,主人公が自らその考えに至っていく過程を書くことによって,新しい考え方の受け入れを疑似体験させようとしたのだと思う.


# ところで (謎),今年の私のテーマは「学びて思わざれば則ち罔し」(学而不思則罔) である.


セミナーを聴くと判ったような気に成る.今回も,講師の方達は大変話すのが上手で,且つ実に判り易く話されるため,言われることに一々頷いて仕舞う.

それでも,同じ会場で同じように話を聴いても,私が理解したことと,この分野で活躍されているような人達の理解したことは違う訳で,この違いは,単なる知識の量の差ではないと思う.


もっとも,二日目の途中で確かに自分の脳の中で新しくニューロンが繋がったように思えた瞬間が有った.もっと俗な言い方をするならば「目から鱗」と云うやつである.新しい考え方のヒント位は手に入れられたようである.

# 私は,「新しい概念を取り込む場合には,自分の持っている習得済みの概念に新しい概念を繋げて行く」と云うアプローチを取ることが多かったが,このようなアプローチだけでは不十分であることも判ったような気がする.



唐突だが,ここで例題を二つばかり (謎)… 答えは保留としておきたい.


例題 2.

私は幾つかの技術系のメーリング リストに参加しているが,そうした所の参加者の中に,職業プログラマなのに「何時まで経っても自称初心者」という方がごくたまに居る.
例えば,プログラミングに躓く度に「ほにゃららしたいのですが,遣り方が判らないので教えて下さい」,或るいは「ほにゃららしたいのですが,うまく行きません.教えて下さい」というように質問をされる.そして一年経っても同じことの繰り返しである.
この方の問題解決の方法に欠けているものはなんだろうか.

例題 3.

ここに様々な経験と深い思索の中で「人生を成功させるための真理」に気付いた人が居るとする.そんなものが有るどうかは別にして.
彼の名前を仮にゴータマ・シッダールタとする.
ゴータマは,この真理を人に伝えたいと考えた (人々を人生の様々な苦しみから救うためである).一体どのようにすればこの真理を人に伝えられるであろうか.
前提条件として,彼自身はこの「真理」を理解しているとする.唯,これは人に簡単に説明出来るような易しいものではない.何せ「人生を成功させるための真理」なのであるから.

【最後にどうでも良い話】

おまけ 1.
今回も (謎) 外国からの講師の方にサインをねだりに行った.


おまけ 2.




  ∧_∧  カタカタ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (    )  ∧ ∧ < さて,早速 TDD を試してみるか…
 (    )  (,,゚Д゚)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
        ̄   =======  \


/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ほう,TDD ですか? 楽しそうで良いですな

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)  ∧∧ < な,なんですか? あなた…
 (  ⊃ )  (゚Д゚;)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
        ̄   =======  \


/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 東京ディズニーリゾートですね

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (  ・∀)  ∧ ∧ < そりゃ TDR でしょうが まったく
 (     )  (;゚Д゚)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
        ̄   =======  \

/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| でもわたしゃ,どっちかというと UFJ の方が…

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・) ∧ ∧ < それじゃ銀行だってば!!
 (  ⊃ )  (゚Д゚;)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
        ̄   =======  \

* アスキーアートは 2ch.net からお借りしました.

# ちなみに何処が面白いのかと云うと,最後のコ$$;NO CARRIER

参考資料:
「ジュラシック・パーク」 マイクル・クライトン 著 酒井昭伸 訳 早川書房
「ザ・ゴール」 エリヤフ・ゴールドラット著 三本木亮訳 ダイヤモンド社



XP (エクストリーム プログラミング) - イベント参加レポート集 2 (次の頁)