メッセージ。 - diary
2006-01-26
# 『Joel on Software』に載っていた「漏れのある抽象化」
お正月休みに『Joel on Software』を読んだ。鋭い考察をした本で、なかなか興味深かったのだけど、とくに面白かったのが「漏れのある抽象化の法則」だった。ちょっと引用してみますね。
P.221
これはほんと、慧眼だよなぁ。ぼくも昔から「プログラミングができるようになるためには、コンピュータの気持ちを理解できるようにならなければいけない」と言っていたのだけど、これではうまく説明できていない。だけど漏れのある抽象化の法則は、これを本当にうまく説明してくれている。
ちょっと前、malaさんや増井さん、荻野さんと飲んだときも同じような話になった。「初心者にも、Ruby on Railsみたいなものを教えるべきだ」、「Ruby on Railsってどこがすごいんですか? あんなの昔からありましたよ。便利なんですかねぇ?」、「簡単なことを簡単にできるようになっていて、かなりうまく抽象化してくれている」、「どの程度うまくやってくれるんでしょう?」、「……」という感じ。
漏れのある抽象化の法則は、まさしくこういった疑問に答を与えてくれる。プログラミングの本質に切り込む重要な理解だと思う。
P.221
漏れのある抽象化の法則が問題である理由の1つは、抽象化が、それが意図されているほどには私たちの生活を楽にはしてくれないことにある。誰かをC++プログラマとして鍛えていると、char*とかポインタ演算とかについて教えずに済めばいいのにと思う。すぐにSTLのstringに進むことができたらいいのに。しかしある日、彼らが"foo"+"bar"のようなコードを書いて、とても奇妙なことが起こり、私は立ち止まってchar*について教えざるを得なくなる。あるいは、彼らはあるとき「OUT LPTSTRを引数に取る」とドキュメントに書かれたWindows API関数を呼ぼうとするのだが、char*、ポインタ、Unicode、wchar_t、TCHARヘッダといった、漏れ出てくるものすべてについて学ぶまでは、その関数をどうやって呼べばいいのかさえ分からない。COMプログラミングについて教えるとき、Visual Studioのウィザードとコード生成機能の使い方について教えるだけで済めばいいのにと思う。しかし何かが上手くいかないとき、彼らには、何が起こっているのか、まったく見当が付かない。そうして私は、彼らにみんな教えなければならなくなる。IUnkownに、CLSIDに、ProgIDに……ああ、慈悲を!ASP.NETプログラミングを教えるとき、いろいろなものをダブルクリックして、それからユーザがそれをクリックしたときにサーバで走るコードを書けばいいのだと教えるだけで済めばいいのにと思う。確かにASP.NETは、ハイパーリンク(<a>)のクリックを処理するHTMLコードを書くことと、ボタンのクリックを書くことの違いを抽象化している。問題は、ASP.NETのデザイナが、HTMLにはハイパーリンクからサブミットする方法がないという事実を隠す必要があったことだ。彼らはそれができるようにするために、数行のJavaScriptを生成して、それをハイパーリンクのonClickハンドラに付けた。しかし抽象化は漏れて、エンドユーザーがJavaScriptを無効にしているとASP.NETは正しく動かない。ASP.NETが何を抽象化しているのか理解していなかったら、プログラマには何が悪いのか見当も付かない。(中略)今日、CityDeskに取り組んでいて、私が知っていなければならないことは、Visual Basic、COM、ATL、C++、InnoSetup、Internet Explorerの内部構造、正規表現、DOM、HTML、CSS、XML—いずれも、古い『K&R』にあるものに比べて高レベルのツールであるが、しかし私は依然として『K&R』に載っていることを知っている必要があり、そうでなければトラブルに見舞われる。10年前、私たちは、将来は新しいプログラミングパラダイムによってプログラミングが簡単になっているだろうと想像していた。確かに、何年にもわたって私たちが築き上げてきた抽象化は、GUIプログラミングやネットワークプログラミングのような、10年、15年前には扱う必要がなかった、ソフトウェア開発の新しいレベルの複雑さを取り扱うことを可能にしてくれた。そして、現代的なオブジェクト指向のフォームベースの言語のような素晴しいツールは、たくさんの仕事を驚くほど早く成し遂げられるようにしてくれる。しかし、ある日突然、抽象化が漏れているところで問題を解明する必要が生じ、それには2週間もかかるのだ。そして、あなたがプログラマを雇うとき、仕事のほとんどがVBプログラミングであっても、VBプログラマを雇ったのでは十分ではない。VBの抽象化が漏れているところに出会うたび、彼らはタールにはまりこんで動けなくなってしまうからだ。
これはほんと、慧眼だよなぁ。ぼくも昔から「プログラミングができるようになるためには、コンピュータの気持ちを理解できるようにならなければいけない」と言っていたのだけど、これではうまく説明できていない。だけど漏れのある抽象化の法則は、これを本当にうまく説明してくれている。
ちょっと前、malaさんや増井さん、荻野さんと飲んだときも同じような話になった。「初心者にも、Ruby on Railsみたいなものを教えるべきだ」、「Ruby on Railsってどこがすごいんですか? あんなの昔からありましたよ。便利なんですかねぇ?」、「簡単なことを簡単にできるようになっていて、かなりうまく抽象化してくれている」、「どの程度うまくやってくれるんでしょう?」、「……」という感じ。
漏れのある抽象化の法則は、まさしくこういった疑問に答を与えてくれる。プログラミングの本質に切り込む重要な理解だと思う。
2006-01-25
# ネットという望まれざる子
http://d.hatena.ne.jp/umedamochio/20060124/p2
という梅田望夫さんの文章。でもねぇ。実際にはそういう流れがあるように感じちゃったな。
今回の一件では。昨日ホリエモン問題を扱うテレビ番組を見ていたら、鳥越さんという人が、次のようなことを言っていた。「ITだけを持て囃すような社会になってほしくない。われわれは製造業によって支えられているんだから。額に汗して働くことを是とする社会であってほしい」。
言いたいことは分かるけど、ITだってものづくりをしてるんだよね。額に汗っていう体の使いかたじゃないけど。それこそ現場では、汗も涙も(ときには命さえも)流されてる。一生懸命勉強して、苦労して、なにかを信じてものを作っている人たちがいる。どうしてITと非ITで線引きをするのか? 彼らがラクして儲けてるようにでも見えるんだろうか? 見えるんだろうなぁ。
My Life Between Silicon Valley and Japan - 「ネット社会、時計の針戻すな」(産経新聞1/25一面)堀江前社長とライブドアは、特にここ一年、ネット企業や起業家主導型経済という「新しい潮流」を日本において体現する存在として脚光を浴びてきた。そんな「時代の寵児(ちょうじ)」の転落を見て、「新しい潮流」全体を、日本が否定する方向に向かっていきはしないかと、私は強く危惧(きぐ)する。
という梅田望夫さんの文章。でもねぇ。実際にはそういう流れがあるように感じちゃったな。
今回の一件では。昨日ホリエモン問題を扱うテレビ番組を見ていたら、鳥越さんという人が、次のようなことを言っていた。「ITだけを持て囃すような社会になってほしくない。われわれは製造業によって支えられているんだから。額に汗して働くことを是とする社会であってほしい」。
言いたいことは分かるけど、ITだってものづくりをしてるんだよね。額に汗っていう体の使いかたじゃないけど。それこそ現場では、汗も涙も(ときには命さえも)流されてる。一生懸命勉強して、苦労して、なにかを信じてものを作っている人たちがいる。どうしてITと非ITで線引きをするのか? 彼らがラクして儲けてるようにでも見えるんだろうか? 見えるんだろうなぁ。
2006-01-24
# 悪いやつをいかに悪く言うか
http://slashdot.jp/comments.pl?sid=298453&cid=869744
ああ、そういう感じはあるかもなぁと思った。
この週末、『ホテル・ルワンダ』という映画を観てきたところで、「よってたかって」ってところがちょうどオーバーラップしたんだよね。『ホテル・ルワンダ』は、1994年にルワンダで起こった民族紛争をもとにした物語。暴徒化した多数派民族が、みんなして少数民族を襲うさまが描かれていた。
やっぱりそういう状況になると、「どっちにつくか」が求められるんだよね。暴徒の一員になって弱い者を攻撃するか、さもなくば自らが弱い者として殺されるか。いじめの構図とよく似てるなぁと思った。
堀江社長等、証取法違反容疑で逮捕うんうん悪いやつをいかに悪く言う(報道)するかに地道をあげているような希ガス。とはいえ、そういう言葉(報道)を望んでいる人たちが大勢居るのもまた事実。#対象によってたかってなにか(リンチとか)するってのは人間のサガか?#いじめもその辺にねざしているのかなぁと思う今日この頃。
ああ、そういう感じはあるかもなぁと思った。
この週末、『ホテル・ルワンダ』という映画を観てきたところで、「よってたかって」ってところがちょうどオーバーラップしたんだよね。『ホテル・ルワンダ』は、1994年にルワンダで起こった民族紛争をもとにした物語。暴徒化した多数派民族が、みんなして少数民族を襲うさまが描かれていた。
やっぱりそういう状況になると、「どっちにつくか」が求められるんだよね。暴徒の一員になって弱い者を攻撃するか、さもなくば自らが弱い者として殺されるか。いじめの構図とよく似てるなぁと思った。
2006-01-23
# ハウルを見てきたよ
えーと、友達が『ハウルの動く城』を見てきたと日記に書いてたので、昔mixiに書いた日記を再掲しようかなと。古いやつだけど、……いいよね? 日付はえーと、2005年02月25日でした。わー。あれからもうすぐ1年になるんだねぇ。
ハウルを見てきたよ
って日記をずっと前から書こうとしてるんだけど、できずにいた。
映画はまぁまぁ面白かったんだけど、どこがどう面白いか説明できなかったからだ。
映画生活.comでも評価が分かれていて雰囲気が悪い。ストーリーが中途半端であるとか、メッセージが不明瞭であるなどの原因があるんだろう。
# 参考までに映画生活.com
# http://www.eigaseikatu.com/title/4544/
ぼくがハウルを面白いと思ったのは、なんとなくだった。映画を見終わった後、なんとなくキャラクターが好きになって「よかったね」と思えた。ストーリーの面白さとか映画的エンターテイメントという意味では物足りないところがあったけど、まぁいいやと思えるレベルだった。ひとことで言うと「スカッとした」って感じ? ……違うかな。やっぱり「なんとなく」かも。
一緒に見た人に「どうしてソフィがおばあさんになったり若くなったりしたの?」と聞かれたときには、口がこんなことを勝手にしゃべっていた。「結局、魔法は心が作り出すものなんじゃないかな。魔法のように不思議なことも、悲しみも喜びも、結局は心が生み出すものなんだよ」。……そういう意味では、この話はソフィという少女の生き方を軸に、心の魔法性をテーマにしたものといえるかもしれない。
先日あるblogで、この映画について、素朴だけどぴったりの表現だって感じる評価を見つけた。
http://blog.goo.ne.jp/enjugumi/e/3f3c9d2f0c345bc02f3054b8a9e6ea50
<<
なるほどと思わされる。生き生きとしたキャラクターの魅力こそがテーマ? だとしたら、極端な尻すぼみのストーリーも、キャラクターがテーマだよというメッセージを伝えるためのテクニックだといえるかもしれないね。そんな風に思い、とても納得できた。
ハウルを見てきたよ
って日記をずっと前から書こうとしてるんだけど、できずにいた。
映画はまぁまぁ面白かったんだけど、どこがどう面白いか説明できなかったからだ。
映画生活.comでも評価が分かれていて雰囲気が悪い。ストーリーが中途半端であるとか、メッセージが不明瞭であるなどの原因があるんだろう。
# 参考までに映画生活.com
# http://www.eigaseikatu.com/title/4544/
ぼくがハウルを面白いと思ったのは、なんとなくだった。映画を見終わった後、なんとなくキャラクターが好きになって「よかったね」と思えた。ストーリーの面白さとか映画的エンターテイメントという意味では物足りないところがあったけど、まぁいいやと思えるレベルだった。ひとことで言うと「スカッとした」って感じ? ……違うかな。やっぱり「なんとなく」かも。
一緒に見た人に「どうしてソフィがおばあさんになったり若くなったりしたの?」と聞かれたときには、口がこんなことを勝手にしゃべっていた。「結局、魔法は心が作り出すものなんじゃないかな。魔法のように不思議なことも、悲しみも喜びも、結局は心が生み出すものなんだよ」。……そういう意味では、この話はソフィという少女の生き方を軸に、心の魔法性をテーマにしたものといえるかもしれない。
先日あるblogで、この映画について、素朴だけどぴったりの表現だって感じる評価を見つけた。
http://blog.goo.ne.jp/enjugumi/e/3f3c9d2f0c345bc02f3054b8a9e6ea50
『ハウル』はもういろんな人がいろんなことを言っているから、期待半分くらいで観たのだけど、老婆になっても全然前向きなソフィーはすごいと思ったですよ。敵だったひとが全部味方になっていくさまとかね。結局一番の魔法使いはソフィーだったって話でしょ?>
<<
なるほどと思わされる。生き生きとしたキャラクターの魅力こそがテーマ? だとしたら、極端な尻すぼみのストーリーも、キャラクターがテーマだよというメッセージを伝えるためのテクニックだといえるかもしれないね。そんな風に思い、とても納得できた。
2006-01-22
# マンションの偽装設計はモデルルーム見学で見抜けるか?
http://blog.a-utada.com/chikyu/2005/12/post_3c31.html
なかなか面白かった。エコシステムとからめて考えるところがありメモ。
歌田明弘の『地球村の事件簿』: あわや偽装設計マンションに住むところだった‥‥
なかなか面白かった。エコシステムとからめて考えるところがありメモ。
# システム障害はなぜ起こるのか?
http://d.hatena.ne.jp/kibashiri/20060120/1137740301
↑は個人的なメモ。東証とニューヨーク証券取引所では一日に処理できる件数が100倍違い、とくにクリティカルなシステム要件であるレスポンスタイムが、10秒と0.2秒というような開きがあるとのこと。
http://itpro.nikkeibp.co.jp/article/COLUMN/20051222/226680/
誰でも昔からそう思ってんじゃね? ぼくはこれ、2002年ごろに考えてました。それで(それを改善したくて)いまの業界に転職したんだもん。システム障害に関してだけじゃなくて、開発でトラブルになるのも同じだよね。
木走日記 - 抜本的改良は手遅れな東京証券取引所システム〜問われる技術立国日本の脆弱性
↑は個人的なメモ。東証とニューヨーク証券取引所では一日に処理できる件数が100倍違い、とくにクリティカルなシステム要件であるレスポンスタイムが、10秒と0.2秒というような開きがあるとのこと。
http://itpro.nikkeibp.co.jp/article/COLUMN/20051222/226680/
システム障害の根源はIT部門の弱体化にある---針路IT(15回):IT Proシステム障害の根本的な原因は、IT部門の弱体化にありそうだ。こんな考えを持ち始めた業界関係者はきっと多いことだろう。証券会社のIT部門に在籍したことのある東京情報大学の玉置彰宏教授もその1人だ。ITは本流でないとし、IT部門を縮小したり子会社化したりする。さらにIT子会社を売却してしまう。そんな企業がIT部門の人材育成に力を入れるわけもなく、システム開発はITベンダーに丸投げする。
誰でも昔からそう思ってんじゃね? ぼくはこれ、2002年ごろに考えてました。それで(それを改善したくて)いまの業界に転職したんだもん。システム障害に関してだけじゃなくて、開発でトラブルになるのも同じだよね。