
ここ数年間、システムの開発方法は、パンドラの箱を開けてしまったのか大きなパラダイムシフトの中に入ってしまった。それは、急速な社会変化と著しい情報技術革新との波が情報システムの開発を、暗闇の世界へ引きずり込んでしまったからだ。
それまで軽視されていたオブジェクト指向開発が、その暗闇に放つ光となってシステム開発を救う、溺れる者にとっての藁のごとく情報技術者をその方向に導いた。その中で、ひときわ鋭く閃光を放つのがXPである。
XP──それは情報技術者にとって魔法の言葉のように入ってくる。とても魅惑的な言葉で。「実装ありき。まずは、実装しよう。」「コードが設計書。仕様書なんていらない。」と。(XPについての見識ある方なら、この大きな誤解はすぐにわかるであろう。)この魔法の言葉が多くの情報技術者を惑わし、闇雲に否定的な情報技術者や失敗する情報技術者を産み出した。
XPは魔法の言葉ではない。オブジェクト指向技術を十分理解できた人達、長年オブジェクト指向技術による開発に従事してきた人達にとってのひとつの開発方法なのである。
2.プログラマの意味
XPについて述べるときにいつも気になることがある。それは、「プログラマ」である。情報システム開発者たちを「システムエンジニア」と言い、「プログラマ」は何かその下の技術者という感じがする。これは私一人が感じていることだけなら良いのだか。しかし、そうではないように見える。
ところで、システムエンジニアは何者なのだ。分析者ならアナリスト、情報環境(ネットワークやデータベース環境など)を構築するのはアーキテクト、そして実際に実装するものに携わるのがプログラマである。システムエンジニアという名称など情報システム開発においては出てこないのだ。この言葉こそ、日本におけるソフトウェア開発の失われた10年(日本経済と同様にソフトウェアにおいても実はあると私は考える)のひとつの象徴なのである。
今、再び、プログラマの意味を考えたい。プログラマとは、実装におけるPLAN-DO-CHECK-ACTIONを行うプロフェッショナルな人達ではないのか。とすれば、本当にプログラマと胸を張って言える人はどれくらいいるのだろうか。
3.プログラマ復権
ユーザが本当に必要とするシステムはどうすればうまく作れるのだろうか。実は、その答えは意外と簡単なのだ。ユーザがユーザ自身でその思いを直接プログラマに伝えてシステムを作ればよいのである。
そのときに必要なのは、その思いを理解できるプログラマである。
意味のない設計書やユーザの思いを正しく伝えられない設計書しかプログラマに渡せないのなら、ユーザの思いを理解し、実装におけるPLAN-DO-CHECK-ACTIONができるプログラマにユーザが直接伝えた方が良いではないのか。
このことは、プログラマがシステム開発において低いレベルの技術者ではなく、そのフェーズにおける高度な技術を要する情報技術者であることを示している。
確かに、ユーザの思いを正しく伝える設計書を書ける情報技術者は多くいるであろう。しかし、本当に少ないページで設計書が書かれているだろうか。小さなシステムと言えども、数百ページのドキュメントになっているのではないだろうか。果たしてそれはすぐに、簡単に目を通せて、理解できるドキュメントと言えるのだろうか。実は、プログラマが書くドキュメントを書いているだけではないだろうか。
XPを理解していく過程で、私は、これはプログラマの地位と権利を戻そうとしているように思えてくるのである。まさに、『プログラマ復権』である。
XPは、プログラマがユーザの思いを自分達の力で実現できるということ、そして、それはプログラマにとっての楽しみであるということを教えてくれているように見えるのだ。
4.それは、スーパープログラマ
これは私自身だけが感じているのだか、プログラマがユーザの思いを実現するシステムをすべて最初から最後まで成し遂げているように見られる。これは屋台方式という一人工程がソフトウェア開発の世界で実現する手法としてXPになるのではと考てしまうからである。
この方式は昔からあるのである。そう、皆さんも良く知っている「職人」と呼ばれる人達である。職人というと、頑固一徹、技術が徒弟制度でしか伝わらないなどがすぐに思ってしまう。
しかし、そのような職人とは明らかに異なると思われる。ということは、新しい職人、つまり、New職人である。そしてプログラマで言うならば、それはスーパープログラマと呼ばれる人達であろう。
だとすれば、XPはスーパープログラマを必要としているのか。スーパープログラマであれば私自身が感じていることは容易に解決がつくのだ。しかしそれでは、XPはごく一部のプログラマしかできないことになってしまう。
5.匠の世界、その伝承
ユーザの要求を聞いた時点で、パソコンのキーボードからテストコードと実際のコードが直接打鍵できるプログラマは、まさに、達人であり匠である。そのような世界が匠の世界と言える。その匠の世界に多くのプログラマが到達すれば、システムは容易に作成されることになる。「そんなことは不可能。」と多くの人は声を大にして叫ぶだろう。
確かに、まったく同じことをすることは不可能だか、形を変えてそこに近づくことは可能である。単に匠であるスーパープログラマがその技術を他のプログラマに伝えるだけでは、長い時間を要することになるであろう。伝えることも大事だが、スーパープログラマである匠がどのように思考していくのか、どのように作業をすすめていくのか──そのプロセスを分析し、そのプロセスを他のプログラマでも可能な形に進めていけば、その技術はより早く、より多くの人に伝承し、匠の世界に近い世界を体験することは可能であろう。
XPは匠の世界に近づける開発方法と言えよう。誰でもとは言わないが、多くのプログラマがスーパープログラマとして同じように振舞えるためにXPは必要なのだ。
6.XPの呪縛
プログラミングすることは楽しいことであるということを知っている人にとって、プログラマとしての誇りや匠の世界を片隅に置き忘れてきたことをXPは後悔させるものである。私自身、もはや錆付いた道具ではプログラミングすることもできない。XPはその慕情を懐かしむには十分すぎるほどのものである。
とは言え、一人でも多くの方々に正しくXPを理解し、XPを実践してもらえるよう語り部として伝えることはできるのである。心強いことに、XPという魅力的な罠にはまった情報技術者が正しいXPを実践しているのも事実である。
どうやら、私自身もXPの罠にはまってしまい、その呪縛から逃れられないようだ。
【参考文献】