Hatena::ブログ(Diary)

LazyLoadLife RSSフィード Twitter

2005-11-27

[][] Test::More - プログラミング中に湧くアイデアを書き留める

Test::More - LazyLoadLife」について、角谷さんに「詳しく」と希望されたのだがうまく書けない。ので、まずいまま書く。ここらへんを突き詰め体系化すれば、プログラミングスタイルに小さい変革を起こすことができると思うのだが、私には荷が重い。まぁ、交響チラシの裏に書いておけばミームはいつか誰かが咲かせてくれるだろう。


Perl のテスティングフレームワーク Test::More の機能・特に SKIP, TODO ブロックが、TDD(BDD) や 過去はまつもとさん、昨日は西本さんが漏らしていたTDDアイデアが失われていく」というハッカーの悩みの一助になるのではないか? と考えたのだ。


まずは、Test::More の リファレンスの SKIP, TODO の項を読んで欲しい。……読んだ? この機能が揮発性のアイデアを書き留めておくのに丁度良いのでは? ということだ。


BDD に関してはこういう機能が助けになるのは間違いないかな。散漫に浮かぶ仕様を書き留めておくことができ、テストを走らせるたび残りタスクを「見える化」するのに役立つ。ただ、Test::More はどのテストも分け隔てなくのっぺりと書いていくスタイルがイヤンなので、Test::Unit 系のフレームワークに取り込まれる形が好みだ。あぁ、こういうケースで「.NET言語属性」や「Java のアノテーション」が役に立つのかな? Ruby勉強会@関西-6 で・かずひこさんによる・TDDチュートリアルで、高橋さんと喋った時は「アノテーションなんて要らん、メソッド名を test_* にする規約で充分じゃん」と思っていたのだが。todo_* でも充分か?


ハッカー(オールド・タイプ?)の悩みに対する回答としては、Test::More は充分でない。アイデア仕様以外にもいっぱいあるからだ。しかし、ただひたすらにプログラムを書くという行為は、恐らくアイデアを相当に失っているのではないかと思う。少なくとも私は種々雑多なアイデアを片っ端から忘れていく。そこで腰リールですよ! 2週間ぐらい試しましたがかなりいい。定期的な GC が必要だけど。 図によるメモも必要だと思うのでスケッチブックなり携帯ホワイトボードなりで担保。

(追記:ハッカーTDD で失うのはアイデアでなくリズムだな。一心不乱に打ちこむ集中力。TDDTDD で心地よいリズムがあるんだけど。音楽には例えれば…例えなくてもいいか。あー TDD事故を起こさないように制限速度で確実に走り長距離でのゴールを目指す方法だった(この例えはペアプロで使われたような気がするが TDD にも当てはまるよな)。やっぱ仕事用か。いやいや、やっぱり保守を考えるとテストがあるとないとは全然違うのだった。オープンソースソフトウェアにも必要でしょ?保守。)


SKIP, TODO はインターフェイスアイデアには有効だが、アルゴリズムやデータ構造のアイデアは書けないと思い至った。あぁ、TDD (BDD) はインターフェイスの視点からプログラムを眺めているのだな。「プログラム=アルゴリズム+データ構造+インターフェイス」か。

(漫画版陰陽師』の安倍晴明気分)

[] アイデアGC

アイデアGC の仕方はどっかに体系的に纏まってないかのう。腰リールを始めたはいいが、発散したものを収縮させる方法を決めかねている。とりあえず『考具』『GTD』を読み直すか。

基本 GTD で、毎日決まった時間に GC して、週に一度「いつかやる」を KJ 法でカテゴリを切っておき、事を起こす際はもう一度眺めてマインドマップを書いてから取り掛かる。って流れだろうか。

考具―考えるための道具、持っていますか?仕事を成し遂げる技術―ストレスなく生産性を発揮する方法

問題は「いつかやる」をいつやるかと溜まったものを捨てるタイミング。リマインダーは定期的でいいならコンピュータにさせるのが吉。捨て方を考えると捨てないで全文検索できるデジタル保存が俄然魅力的になってくる。アナログの即時・機動性とデジタルの保存・検索性で喧嘩しているのが悩み。デジタル腰リール欲しい。携帯電話の進化待ちかなぁ。カメラもあるし。はたまた「作れ」ってことか。「入力」の送信さえできればいいんだよな。「処理」はサーバでするから。「出力」は PC でも携帯電話でも。

[] メトメト

娘の成長記録。

めっとーめっとー めとめと〜

ぶったーさんのー 踊り過ぎ

めっとーめっとー めとめと〜

……

歌いながら踊る(ちょっとコサックダンス風)。保育園の友達とユニットを組んでいるらしい(アイドルグループか?)。チケット1席100万円。家族割引あり。


「あおあおブレード世界」と「けんけんワールド」っていうのもあったな。時々前述の世界流行っているゲーム性の偏った(もしくは皆無の)理不尽な遊びをやらされる(あ、遊びを作ったことを褒めたかな? ちょっと思い出せない)。地図も書いてくれた。大きくなったら枕に顔を埋めてバンバン叩くだろうか。


自作絵本漫画をどっかにストックしておかなきゃな。こっちは本当に面白いものを書くので、将来に期待している。ちょっとした違いでいわゆる「腐女子」になるかもね。

[][] 日本Rubyの会 公式Wiki - Ruby勉強会@関西-7 (2)

ごめんなさい、持って行くの忘れました(厳密にいうと送ってもらった妻の車の中に忘れた)。KOF 2005 の忘れ物と、gollum さんから借りた『週刊石川雅之』と『もやしもん』。ごめんなさい。

mr さんは今回は来てなかったかな? セーフ? gollum さんには 12月の Rails 勉強会で返します。


ちなみに、Amazon アソシエイトで『週刊石川雅之』の方が売れてるんですが、私は『もやしもん』の方が面白いと思います。印象の羅列はアサマシにふさわしくないようです。


あと RubyConf 2005 の T-shirt を着ていったのに見せびらかすのを忘れていました。羨ましがられるかどうかはともかく、使いどころ少ないのに……。

インターフェイス=名前

再度、「プログラム=アルゴリズム+データ構造+インターフェイス」について。もう熱くない? いいの遅レスだから。


(プログラミング)インターフェイスって端的に言うと「名前」じゃない? RubyJavaC# だったら、「プログラム」は「メソッドの中身」+「クラスの構造」+「クラス名・メソッド名・オブジェクト名…」で表せる。ね? これだけで事足りるよね?


そして導かれる(導きたい?)のは「名前重要」や "How to Design Easy-to-Use API"。(あぁ、また安倍清明風思考か)

ミーム

  • ミームを飛ばすことを射精になぞらえることができると思った。
  • 誰にも伝わらないミームを撒き散らす行為は自慰に例えられると思った。

上記の例えは大変よろしくないと思った。イカンですよ。


ミームの初出は『利己的な遺伝子』だから、自然な発想といえば自然な発想なのだが。

利己的な遺伝子