I am gathering you

Sep 30
Permalink

テスト駆動2.0は、テストを書くとシステムができてる。だ。

最近二つの方法をコーディングにおいて取り入れた。

  1. gtd
  2. code as view

gtdで、コンテクストという概念がある。gtdのプロジェクトの概念は「アクション可能でないものは全部プロジェクト」である。頭の中のことを全部キャプチャー(いや、「思うがまま検索可能」に)し、忘れることで、次のアクションに集中できる。これに加えて、「コンテクスト」をアクションに割り当てる。頻出する行動が「コンテクスト」だと思う。代替のコンテクストは洗練されているし、安心感があるくらい、簡単にできるものになる。僕のコンテクストの例:「メール」「グーグルする」「家のマシンにいく」「電話」「eclipse」など。

この手法のいいところは、「これを実現するにはどうすればいいか?」という問題解決の最初に「どのコンテクスト?」って選ぶことで、かなりの問題が解決されることだった。

ではcodingとgtdは?

バグ、あるいは画面仕様について、1.期待される動作,2.再現手順 3.現状の表示と、4.修正するファイルの4点を守って書くようにする。これはプログラミングというよりはプリプログラミングという感じだけど、1,2,3はテスターでも、顧客でもできる。4がgtdの「コンテクスト」。

バグレポをあげてもらったらすぐに、どのファイルを修正すればいいか、だけなめて埋めていく。

tips:正規表現を使うこと。*Products*.jspとか、*product.javaとか。

そして、100テスト(=バグ)がかけたなら、eclipseの前におもむろに行く。ほかのことは忘れてられる。エクリプスコンテクストの、さらにファイルごとの処理をしていけばいい。ファイルを開いてしまえば、ほとんどの場合、ファイルについての10の修正は、30回くらいのguiへの入力イベント発生でもって実装できる。その効率は?多分普通のプロウグラミングの10倍とか100倍とか速い。

こういう組み換えは工学のいたるところにあるから、gtdがギークから取り入れ始めた理由と一緒で、この効果は熟達したプログラマーなら理解できるんじゃないかと思う。

この手法には次の、刷新の可能性が待っている。つまり、pm的、上流的でありながら、非常にコーディング能力のあるあなたのような人がいるときに、したに普通のプログラマーが5人つかるときに、あなたのコーディング効率をこのひとたちにスケールアウトさせることができる。

編集するファイルの検索(あるいは開くオペレーション)が特にオブジェクト志向以降、あるいは「系的システム開発(トートロジー)」以降の開発 ではコーディング作業の9割りで、開く行為はルーチンだ(を再現性の指摘をしたぞ。、dryできんじゃん。チャリーン(金を獲得した音))から、あなたの優秀な手を煩わせるのはよくない。これには「意識インターフェイスこそ最高で最速のインターフェイスで、guiはその醜いおきかに過ぎない」ということをそろそろ考えたほうがいいということも含む。

よって、100バグを仕分けした時点で、ほぼコーディングは済んでいるし、普通のコーダーでも、このファイルに10個こういうバグがあるから直せ、といわれればさすがにそのファイルばっかり触ってればすぐになる。(キングクラス、キングビューファイルが増えそうかな?)。

もう一個、次世代のフレームワーク、コンピューティング、システム開発、あるいは「システムの言い当て」が目指すものを予言する。僕のフレームワークもそうだけど、多分世界先端のフレームワークを作っているひとたち(仲の人たち)は、おそらく、「考える、うまく言い当てること」がもう動くシステム(think once, run imediatelly)みたいなものを想定していし、実現しかけている、と思っているだろう。そして、mvcのmodel,view,controlにせよ、自然言語で顧客のいうあるページを、システムの中での言語(特にはドメインモデルを名詞と置き換えるその名詞群)に置き換えてあげることだけで、すでにシステムはできていくのだ。という感覚をもっているし、それを美とし、そうでないものを醜とするし、その美を因果するメタを持たないものも醜としているだろう。

となると、超集約的、集積的なスーパープログラマーは、顧客のいうことを、適切に言い換える、という行為で、すでにほとんどノーコストで、1000人のプログラマーがだらだらとやることを一瞬で済ませるという方角に向かう。この「言い当て能力」はまさに詩であると僕は思う。

圧縮され完璧に採用された語の選定によって、物語を語ることがテストになるし、システムになり、しかもテストを書けば、非常に高い効率で、プログラマーは働いてくれるようになろう。ここまでくると、パターン蓄積によるコードの自動補修もあと一歩だ。

だから今は「素敵なマニュアルを書く、素敵なテストを書く、するともうシステムはコーディングレス」に向かっているし、そのためには「最適な語彙選定をする、パターン認識をし、配置する」というストーリーテリングの能力がこれを可能にする。

 楽しくなってきましたねえ。すると「tumbler」に「text,image,chat,url,movieに加えてcode」がくわわる上に「test」とかも加わると思う。僕は「因果関係」が入ると世界変わると思うけど。あ、やばい。因果関係に、ハテナスターかilike itかdiggかブクマ数によって「再現しましたレポート」がつくようになるともう聖書だ。