トップ 追記

日々の破片

Subscribe with livedoor Reader
著作一覧

2017-10-09

_ @t_wadaとケントベックのテスト駆動開発

長らく絶版となっていたケントベックのテスト駆動開発(入門)が、オーム社から装いと訳者もあらたに再刊されて、しかも嬉しいことに、編集の森田さんから頂けたので早速紹介する。

くだくだしいことなどは後のほうで書くことにして(このページ群はおれにとってはその時考えたことなどを記す日記でもあるからだ)、まず本書の要点について書く。

原著は2003年、本書はそれの翻訳なので15年以上の歳月を経た準古典だ。何についての準古典かといえば、題名からわかるように開発についてで、なんの開発かと言えばプログラムだ。

一言で言えば、1人でプログラムを開発するときに、どのように開発へのモチベーションを維持しながら、開発そのものをゲーム化して楽しみながら(まあ、1人でプログラムを開発しようとした時点で、それはゲームなのだが、さらにルールをいくつか導入することでゲーム性を高めているとも言える)、しかも適切な粒度やインターフェイスを発見してプログラムのコードの質を高めながら、完成してからのデバッグ地獄に苦しむより前にバグを減らしながら、1つの関数や変数のレベルで(大げさではない)命名であったりパラメータであったり戻り値であったり大域変数などの状態であったりをどう設計するのが良いかの知見を高めながら、グレートなコードを生み出すかについての方法論とプラクティスを説明したものだ。

全然一言ではなくなってしまった。

本当に一言で書けば、こうだ。

いかにかっこいいコードを生み出すかについての方法と実践の指南書。(入門書ではないね)

命令型言語であれば、すべてに適用できる開発方法なので、サンプルもJavaありPythonありだ。わりとミクロレベルのテクニックが多いので、JavaもPythonも読めなくても問題ない。ふつうに命令型言語のどれか1つを知っていれば、自分のジャンルに翻案できる(くらいの芸当ができるのは読者としての前提となる)。

本書で重要なのは、準古典なだけに、どこまで価値を持つ本なのか、一体、どれだけポジティブ方向であれば発展や革新が、ネガティブ方向であれば誤解や曲解が生まれたかについて、歴史的な俯瞰を訳者の和田さんんが付録Cとして10ページほどの『訳者解説:テスト駆動開発の現在』を付けている点だ。

これ読めば、あっというまに、テスト駆動開発(TDD)批評家になれる。つまり、TDDという手法はこの文章の冒頭で準古典と決めつけたように、既にして批評の対象足り得るほどの広がりを持つ存在となった。つまり周縁を持つ(=パラダイムが形成された)存在であり、TDDを知らずにプログラムを開発するのはド素人だ。

要するに、読めということ。それも手を使って、エディターに打ち込み、追体験しながらだ。

(t_wadaの上記の訳者解説では、いや、そこまではしねぇだろうというような極端な読み方を勧めているが、なぜそこまで極端なんだろう? と考えて、はっと、そうかTDDの実インスタンスとしてのテストファーストはXP(eXtreaming programming ――極端プログラミング)のプラクティスでもあったなぁと気づいたり。今この瞬間の思いつきに過ぎないが)

テスト駆動開発(Kent Beck/和田 卓人)

ちなみに、artonx.orgには訳者解説にロンドン学派の代表みたいに出てくるフリーマンの初期の文書(DevelopingJdbcApplicatonsTestFirstのおれさま翻訳)があったりするのでこちらはあまりにレガシー化しているけど興味があれば読んでみてね。

#t_wadaのまさーるさんへの言及には泣けるところがある。

_ オーム社の同時代ソフトウェア技術者叢書(の終焉)

ポールグレアムとかジョエルスポルスキーとかチャドファウラーとか、その時点で息して飯食って多分プログラムを書いている人(少なくともその本が出る5年くらい前までは)のソフトウェア開発にまつわる思い出やら見識やら考察やら実験結果やらのエッセーがやたらと出てきた時代があった。どれもどえらくおもしろく、訳も飛び切り良く、選択のセンスが良い(と、読者に感じさせるわけだから、ぴったりトレンドそのものかちょっと先っぽだったということだ)。

そういう一群の書籍にふさわしい名称を「叢書」と呼び、そのトレンド性をして同時代性と読み替えて、何気なくオーム社の同時代ソフトウェア技術者叢書と名付けたのだった。

11年前か。10年一昔のさらに1年がたったのだなぁ。

_ t_wadaとTDDとIoCとJavaカンブリア期

Javaにはかってカンブリア期があって、あまりのSunの迷走っぷり(あるいはIBMの横やりっぷりかも知れない)に爆発が起きた。

で、おれもその爆発に少し巻き込まれて2.3mほど吹き飛ばされたのだった。

日本での爆発の中心にいたのが、ひがやすおさんと羽生章洋さんで、媒体としては中心にWEB+DBがあって(今でも常に爆発の中心にいるところが稲尾さんのすごさだ)、t_wadaさんとはそのころ出会った(というか、羽生さんのところだった)。上のほうでフリーマンの翻訳があるが、あれは確かt_wadaにそそのかされて翻訳したはずだ。

ということは、2003~4年くらいだな。

ロッドジョンソンのExpert One-on-One J2EE Design and Develpmentが2002年10月だから、爆風は半年もたたずに日本にも吹き荒れたってわけだ(21世紀のはじめは、半年で爆風が吹き荒れるというのにずいぶんとスピード感があるなと思ったが、今は一瞬で爆風が届く。ネットワーク技術の発展はすげぇなぁ)。

この爆発で、バイナリーORPCが死んでXML+HTTP時代が来たわけだが(動きが遅いのはエンタープライズ系だからだな)、それもあっという間に淘汰されてしまったなぁ。


2017-09-24

_ ビリーエリオット

赤坂サカスでビリー・エリオット。千秋楽まであと12日(と書いた紙がぺたぺた貼ってある。ここまで煽るほどの舞台かなぁとか思いながら見たが、なんかわからんでもなかった)。

というわけで、おれにとっては、家で妻とDVDで観たリトルダンサーなわけだが、悪くない。

リトル・ダンサー [DVD]

映画のほうは、なんといっても、JAMの悪意の町に合わせて主人公のビリーエリオット(映画だと12歳より上に見える時が多いが)地団太踏むような荒っぽいダンスで、トイレに籠って閉塞状況をむき出しにする一方で、屋上に登ったり、向こうに海が見える坂をこちらに向かって来たりして、すさまじく印象的で、実はそこしか覚えてない(というと嘘で、ロイヤルバレースクールの面接や、最後の大人になって白鳥の湖を踊るところとかは、それはやはり印象的)。

何しろ、JAMの悪意の町はすごい傑作だ。

2分あるかないかの、インザシティ(ファーストかな?)もすげーかっこいい!と思ったが(というか今でも好きだが)、4枚目だか3枚目だかのサウンドアフェクツをなんかのはずみで買って聴いたら、これが結構落ち着いてアコースティックも取り入れたりしながら、ソングライターとしての才能が爆発したかのような名曲連発で心底たまげた。同じ3人組でもポリスよりも好きだ。おれはモッズじゃないけどな。

Compact Snap(Jam)

(これがうまくまとまっているベスト盤で、今となってはこれ聴いていれば十分)

でも、JAM自身のPVよりもリトルダンサーでの怒り爆発ダンスはもっともっとすごかった。映画作家の才能はすばらしい。

という知識だけでビリーエリオットを観たわけだが、最初はとまどいまくる。

なんで、この小僧はバレエ教室にここまで執着するんだ?

というような疑問は湧いてくるが、でも、歌も踊りもうまいものだ。

・労働歌っぽいのをエルトンジョン(がミュージカル版の音楽担当)が実にうまく作っているが、今の日本の政治風潮の下で労働争議とか理解されるのだろうか? というような疑念も渦を巻き巻き。

が、1幕最後、親父に禁止されたビリーが2階の自分の部屋のベッドを破壊しながら怒りの踊りを始めるところでは目が覚めた(いや、もともと寝ているわけではないが)。いいじゃん。というか、音楽こそ悪意の町ではないが(一瞬トイレに籠って暴れるので、映画のあのシーンに対応するのかと理解した)演出含めて抜群だ。

それにしても、マイケル(衣装倒錯の趣味がある友人だが、映画では大人になるとゲイになっている)が、ビリーを引き留めるのにもちょっと驚く(映画でもそうだったかな?)。

どうも、この友人関係は上村一夫の関東平野と重なってごっちゃになっていて、記憶の中の物語とマッチしなくて驚いたのかも知れない。

母親とのシーンは親の身にはずるい演出。思わず涙が一筋出てくる。

2幕。幻想的な大人になった本物のバレエダンサー(Kバレエの人らしい)とのダンスがずる過ぎて感動的。本物のバレエではあり得ないワイヤーを使った空中浮遊をビリーがするのだが、これが美しい。胸をそらし(背筋力だ)両腕をピンと伸ばし、空を駆ける舞台として、これほど美しいのは他に記憶がない(というか、空中浮遊でこれまで一番印象的だったのは東京リングのジークフリートの小鳥だ)。舞踏とは空を飛ぶことなんだよなぁ(と胸いっぱいだったら、最後のエレクトリシティーという曲の歌詞がまさにそうだった)。この曲は名曲だな。

(このビデオではどうみてもただの子供だが、舞台の上では実に立派で驚く。歌詞がこの時点では「胸でスパークして」がえらく無理があるのが、実際の舞台では「胸ではじけて」だか忘れたが、より日本語として合うのに修正していたり、丁寧に作っているのだなぁと感心した)

で、そのシーンを観た親父がコペ転してビリーを応援しはじめるのだが、金がない。地区の労働委員らしい兄貴はロイヤルという言葉を聞いただけで怒り出す、とか、どういうつながりか覚えていないがスト破りのかっての仲間が数100ポンドをカンパしてくれたりとかしながら、ロンドンで面接を受けて、当然のように失敗が続く。

あ、おれ北京ヴァイオリン 観たな、と思い出した。

が、映画と同じく、面接官たちに、本当に他に何もないくらいに踊ることが好きなんだと言葉で説明することができる(が、ミュージカルだから歌と踊りだ)。

なぜか、北京からビリーが帰った後はコメディ連発となる(ロイヤルに受かったと聞いて、バレエ教室の女子がサインをねだりに集まるところとか、妙に引っ張る婆、父親、兄貴の手紙のシーンとか)。わけわからんが、バランスかな?(炭鉱の閉鎖は決定したし、というか2幕の最初はサッチャーヘイトのコメディで始まるから、なんとなく円環構造なのかも)

で、母親と決別してロンドンへ1人旅立っておしまい(が、マイケルが呼んで戻ってくる)。

・ロストロポーヴィッチの言葉(おれは練習しない。同じ部屋のやつは朝から晩まで練習してたが、まったくものにならなかった。すべては才能だけだ、というようなやつ)はあるものの、肉体を使うものは基本的に訓練と修練だから、好きで朝から晩までそればっかりやるような人間でなければものにはならない、と考えれば、出自がなんだろうが、心底それが好きな人間を入学させるというのは実に理に適っている。と思った。


2017-09-15

_ メイカーズのエコシステムを読んだ

以前おもしろそうなので1-ClickでKindleに放り込んだまま放置していた『メイカーズのエコシステム 新しいモノづくりがとまらない。』を読んだ。おれの通勤時間で4日くらい。

2016年4月に出た本だが、本当に今の時間の流れの早さに驚愕するのは、キックスターターの成功例として挙げられているのが、今や身売りした(イクジットとはちょっと言いにくいと思える)Pebbleと、完全失速のGoPro(と思っていたが、ちょっと調べたら2017年第1、第2四半期は好決算で息を吹き返しつつあるっぽい)だったりするのだが、日本は時が止まっているから(と書いて気付くが、主語が大きすぎて、おれさまの時が止まっているだけの可能性が高過ぎた)、全然古びてなく刺激的で、しかも読んでいて妙な高揚感が漲って来る。小学生のころは御多分に漏れず児童会館で銅板をエッチングして(すさまじく奇妙な体験なので忘れがたい)ラジオを作ったり、電子ブロック(ではないほうの白いブロックを嵌め込んでいくほう)でいろいろ鳴らしたりしたのを思い出したが、そっちにはまったく深堀りするほどには興味を持てなかったのだなぁとか、選択しなかった人生について考えてみたりと、個人的体験とからみあうからおもしろいのだろうか。

特に興味深かったのはシンガポールについて書かれた章で、段階的に国民に教育を行き渡らせる長期的な計画実現は抜群におもしろい。尋常小学校から150年かけて大学全入って、本来はとても良いことのはずなのになぁとか、いろいろ考えさせるところがあるのがおもしろさの理由かも知れない。

末尾に山形浩生の荒野から始まる深圳発展史(中抜け)があって、これがまたとってもサイファイ(人工的な都市発展史というのはSFだよな)でおもしろい。

メイカーズのエコシステム 新しいモノづくりがとまらない。 (OnDeck Books(NextPublishing))(高須 正和)

#とってもサイファイってなんだ? you are so sci-fiのおれさま脳内翻訳だとしたら、バグルズだな。


2017-09-05

_ 3桁の数当て

子供がJavaで3桁の数当てプログラムを作ったとかいって見せるので、おれも作ってみた。
a = [rand(9) + 1, rand(10), rand(10)]
loop do
  line = gets
  if line =~ /\A(\d)(\d)(\d)\Z/
    b = [$1.to_i, $2.to_i, $3.to_i]
    eats = 0
    bytes = 0
    0.upto(2) do |i|
      if b[i] == a[i]
        eats += 1
      else
        bytes += 1 if b[i] == a[i - 1] || b[i] == a[(i + 1 > 2) ? 0 : i + 1]
      end
    end
    puts "eats:#{eats}, bytes:#{bytes}"
    exit if eats == 3
  else
    puts 'enter 3 digits number'
  end
end

2017-08-27

_ 音楽の楽しみ

昨日、栃木でばかが往く(「ばか」なのか「バカ」なのか「馬鹿」なのかどうだかもう忘れてしまった)のK水(……なんかどこかの中国マンガで見たような名前だな)さんと話をしていて、おれのオペラ好きのことになった。

で、越水さんが、でも話の内容は知っているんだよね? と異なことを聞く。

当然知りまくっているよ。と答えると、どうも怪訝そうだ。

ああ、そうか。

オペラの楽しみは、話の筋ではなく、指揮者がどう解釈し、演出家がどう解釈し、歌手がどう解釈し(あるいは解釈を通訳し)かつ技術を披露し、オーケストラが演奏するのが本質であって、話はどうでも良い。

それは映画と同じで、物語は飽きさせないためのグルーに過ぎず、どう演出するか、どう構成するか、どう音を入れるか、といったことと同じで、と説明しようとしたが、多分、これは通じない可能性が高いな、と考えてみた。

そこで次のように例えてみる。

つまり、それはFizzBuzzのコードを愛でるようなものだ。

バグがないのが前提だから、./fizzbuzzと打てば、1 2 Fizz 4 Buzz……とコンソールに表示されるのは当たり前で、それはまったくどうでも良い。物語はそれに相当する。もしかすると、14 Fizz 16 と出力されるかも知れない。作ったやつが素人なら、クソ、ゴミ、星無しの一言だが、名人の出力がそうならば、何か秘密があるのではないかと考察のネタになる。

それはそれとして、重要なのは、どんな言語を選択したかとか、どういう条件判断をしたか、とか短いのか長いのか、設計に味わいがあるかとか、そこじゃん。

そういうこと。

本当の楽しみは、本当に味わうべきは、本当におもしろいのは、いつだってメタなところだ。物語は地上にあり、音楽は天空にあるのだ。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|

ジェズイットを見習え