2010年12月

Last Modified: Wed Dec 29 05:16:14 UTC 2010

/29 [Wed]

@14:15

公理的意味論を使ってプログラムの正しさを証明する (1)

つづきはまた来年。

/28 [Tue]

@07:47

新山はCS病だ。CS病の症状として、たとえば 「どうでもいい中外の処理で計算量を気にする」 「必要がないのに二重連結リストにしてしまう」 …といったことがあげられる。これは立派な病気だ。

@19:16

クールなゲーム、caphを発見した。 ダウンロードはこちらから。 要SDL。わずか 3000行ほどの C のプログラムなのに、立派に物理シュミレーションしている。 世の中には頭のいいやつがいるもんだ。

/27 [Mon]

@07:34

けさ、ある人から来たメールの返事:

Sorry for the late reply, suddenly Christmas happened here.

@22:00

きょうの Picture of the Day:

/26 [Sun]

@11:03

きのう速読について書いたので思い出したんだけど、実は 本の読み方にはいろいろあって、それをみんな区別していないのは問題だと思う。 新山の読む速度は人並みだと思ってるけど、 どんな本でも教科書を読むように読むクセがあるので、 もしかすると人より遅いのかもしれない。

だいたい新山は、各段落、各章などを読んだあとに、 かならず「いま読んだこの部分は本当にオレの頭に入っているのか?」を自分に確認するための時間をとる。 このときにやるのは、内容を要約しようとしてみたり、 重要だと思った箇所をもう一度思い出してみたり、といったことだが、 計算機科学的にいえば、これは1冊の書物というものを木構造とみなして、 各階層 (文、段落、章、書籍全体) で段階的にデータ圧縮をかけているのだともいえる。 しかしこれには時間がかかる。内容を理解していなければ、圧縮はできない。 「この段落、いまいちピンとこないな」と思ったら、もう一度読みなおす。

ここで注意すべきなのは、ただなんとなく文を追うだけで、 そのまま先へ進んでしまう…ということがないようにすることだ。 あきらかに内容的に重要でないことがわかっているとき (やたら情景描写がくどかったり、 反復が多かったりする場合) はさっさと飛ばしてしまうけど、 そのときは「ここは重要でないから飛ばすぜよ」ということを明確に意識する。 一番よくないのは「重要か?/重要でないか?」を判断できないうちに飛ばしてしまうことだ。 でも、疲れていたり眠かったりすると、そういうことは無意識のうちに多くなるんだな。 そういう時はそこで読むのをやめて昼寝でもしたほうがいい (でも、同じ本でそういうことがあまりに多く起こると、本のほうを疑うケド)。

つまるところ、この「重要か、そうでないか」という判断だけが 新山にとっては本当に必要な情報であり、じつはこれを使えばほとんどすべての 情報は1ビットに圧縮できるのである! それが重要だと思った場合は、 究極的には、「そこが重要だ」ということダケを覚えておけばいい。 詳しい内容まで覚えておく必要はない、なぜならあとで戻ってくりゃいいんだから。 新山はそういうことをよくするので、ある本を見たときに「たしかこの本のここらへんに、 すごく重要なことが書いてあったはずなんだけど、それが何であったかは思い出せない」 ということがある。こういう場合はあとでその該当箇所をもう一度読み返して 「重要だと思った内容」を発見しなければならない。でも、これは情報を 圧縮しすぎたために起こるトレードオフというもんだ。しかし、 ある内容がその文脈に即して「重要かどうか」を判定するために、 ときどき読書中にかなり考えこむ。こうった読み方は疲れるので、あまり長時間はできない。

そういう意味では、新山は処理速度よりも圧倒的に「スペース効率」を重視した読書をしているのかもしれない。 考えてみれば、これは自分の整理整頓ぐせ (「これとこれの内容は似ているな」と思ったら、 頭の中でふたつを融合させてしまって、記憶領域を節約する) とも合致している。 “速読”にこだわる人は、新山とはまったく異なる頭の使い方をしている人種 (= つまり新山からみれば“バカ”) であるといえるのだ。証明おわり。

(追記) でも、オレは書物が物理的に「スイスイ読めること」には結構こだわるよなあ。 たとえば字体とか、フォントの大きさとか、行間とか、漢字とひらがなの割合とかである。 ちなみに、いま書いているこのページは画面の幅が大きいと非常に読みにくい。 どうにかしろ!

/25 [Sat]

@09:47

気づかれないようにしろ、 気づかれないようにしろ!

@09:56

そういえばきのう人と話していて「むかし『すごいデータ圧縮技術を開発した』といって 金をだまし取ろうとしてたインチキ山師企業があったよなあ〜、アレなんていう名前だったっけ?」と 思っていたが、おもいだした、ZeoSyncだ。 科学的インチキはいつみても笑える。

さいきん John Perkins の「Confessions of an Economic Hit Man」を読んでいるのだが、 ペーパーバック版のp.118 に秀逸な一文がある。著者が「途上国の電力需要の推移を マルコフモデルをつかって予測する」という学術論文をMITの研究者と共著で書くくだり:

It was exactly what we wanted: a tool that scienficially "proved" we were doing countries a favor by helping them incur debts they would never be able to pay off. ...

(これこそまさに私たちの欲していたものであった。途上国に決して返済できないであろう借金を 押しつけて援助することが善であると科学的に“証明”してくれるツールが欲しかったのである。...)

これにゃあ笑いました。いや、まったくマルコフモデルは役に立つね。

双方に共通していることは「権威は詐欺に使うのにもってこい」ってことだ。

@23:05

胡蝶の夢…これは日本人なら誰でも知っている話だが、ようするに自身というものの 相対性を語っているように見える。でもよく考えてみるとここには非対称性がある。 人間は夢を見たあとで「いま胡蝶の夢を見ていた」と認識できるが、 胡蝶の夢の中では「いま人間の夢を見ていた」とは認識できないんじゃないか。 人間にとって胡蝶の記憶はあるが、胡蝶にとって人間の記憶はないように見える。 そうすると、やっぱり胡蝶の夢はただの夢なんじゃないか。まあどうでもいいけど。ddy.

@01:31

ある人の言うところによると、速読がブームなんですってさ。いまの日本で。

おーおー Don't get me started!

速読ってホントにできるの?

Dear Cecil:

速読っていったいどうなのよ? いわく、なんか単語から単語へと読むのではなくて、行から行へとか、 ついには段落から段落へ読むということなんだけど、速く読んでいるにもかかわらず 「深い理解」が得られるんだと。あれから下火になったと思ってたけど、 最近また深夜のインフォマーシャルで教材を売ってる。何かあったの?

— John Ashborne, Chicago

Dear John:

これは完璧なインチキというわけじゃないよ、もしそう思ってるんならね。 しかしそのメリットは誇張されすぎてる。速読というのは、 ロナルド・レーガン式読書とでもいったらいい -- 全体の方向はだいたいつかんでるけど、細かいところはほとんどダメ、 時には恥ずかしくなるほどに。

あるとき、速読トレーニングを受けた何人かがテキストを読むという実験をしたんだ。 このテキストはある文章と別の文章が1行ごとに交互に入るよう細工されていた。 速読者はこれを3回読み (平均速度: 毎分1700語)、理解したと言いはった。 ところが彼らのうち、文章がぎっこんばったんになっていることに気づいた人は 一人もいなかったんだ。

速読者が普通の読者と同じくらい文章を理解しているという主張は疑わしい。 ある理解テストでは、速読者は100点中68点をとっているが、 じつはこのテストはあまりにやさしかったんで、 その本をまったく読んでない人でも57点は取れるようなものだった。

真実を理解するために、Just, Carpenter および Masson らによる研究を見てみよう。 この研究者たちは、読者を3つのグループに分けた: 速読君、ふつうの読者、そして 「飛ばし読み君」 つまり速く読もうとはするけど特別な訓練を受けていない人たちだ。

その結果、速読君 (毎分700語) は、飛ばし読み君 (毎分600語) よりも やや速かった。ふつうの読者 (毎分240語) よりはずっと速い。 しかし速読君たちの内容理解はふつうの読者と比べて一律に悪い、 しかもかなり悪い、ということがわかった。

さらにわかったことは、速読君たちは飛ばし読み君に比べて、 簡単な書物を読んだときの一般的な質問はよくできるということだ。 しかし細部についての質問や、難解な書物を読んだときの質問については、 速読君も飛ばし読み君も一様にひどかった。

結論: 速読術は TV のキュー・カードを速く読むには役に立つかもしれない。 でも技術的な書物 -- 速読術ファンがこれで日本人たちよりも賢くなれるぞと 宣伝したがるやつ -- については、じつに無力だ。

読書というのはダイエットに似ている。速くて簡単な方法というのはないんだよ。 より詳しく知りたい場合は、The Psychology of Reading and Language Comprehension, 1987 を見ておくれ。

— Cecil Adams

新山の補足: Wikia の Speed Readingの項も参照。 ちなみに、理解を深めるためにわざとゆっくり読むという Slow Readingなる手法も あるそうな (これまたいかがわしい)。

ところで (てくるで)、「日本人が賢い」なんて一体どこの誰がいってるんだ?? インチキにもほどがある! …だいたい、日本には TSD のような科学コラムがまったくない。 大学やら研究機関の発表を垂れ流してる提灯記事はあるけど。

(追記) …これを読んで、手話通訳の世界で言われている 「15分の法則 (←本当はこんな名前はないのだが、新山がいま勝手にそう名付けた)」を思い出した。 手話通訳の世界では、ひとりの通訳者がつづけて通訳できるのは15分間が限界だといわれる。 それ以上やると集中力が切れてミスが頻発してしまうので、ふつうは複数人の通訳を用意しておいて、かならず 15分で交代しなければいけない。で、これは手話通訳だけではなくて、要約筆記などでもそうらしい。 たぶん英語の同時通訳などでも同じだと思われる。つまり言語-intensiveなタスクは、 どんなベテランでも最高15分ぐらいしか続けられないのである。 これを考えると、速読術のインチキさがよくわかると思う。 ヒトが処理できる情報量の最大値は、誰でもほぼ一緒なのだ。 速く読めるのは、それだけ内容を薄めているからにすぎない。 しかしもちろん、どんな人もカモにされる権利をもっているので、 あなたが不幸にもこうしたインチキ商売に金を払うのが好きであれば、それはご愁傷さまである。 やれやれ、こういう連中にとってネット広告はまたとないチャンスだろうな…。

/24 [Fri]

@18:51

linky, linky.

きょう、近所の某スーパーへ行ったら、「クリスマスセール」なるものをやっており、 なぜか納豆が1パック 78円だった。べつにたいして安くもないが。 (それにここのスーパーでは毎週水曜日にも納豆を78円で売るのだが…) それにしても一番の謎は、ローストチキン (らしきもの) がひとつ298円で 大量に売れ残っていたことである。新山にはまったく理解できないのだるが、 いったいなんで今さらクリスマスにチキンなんだよ? iPhoneで月に行ける時代だぜ? そんなのよりは鯛を食ったほうがはるかにいいよね。 でもクリスマスにもかかわらず金目は高かった。どうにかしろ!

@19:32

雪に閉ざされたヒースローで あるイギリス人いわく「我々は2度の世界大戦には耐えたのに、雪にはからきしダメなんだな」

/23 [Thu]

@23:18

きょうの収穫は、新しい Perkins Braillerを さわることができたことである。クーール!

/22 [Wed]

@00:24

きょうは夕食後の 2〜3時間をずっと行列の計算をしてすごした。

…じつに健康的だる。外は雨だし。

/19 [Sun]

@19:55

Wiimote顛末記(まだそんなに顛末してないけど!)。

そもそも、なぜ新山が Wiimote のようなガラクタ (失礼…口が悪いのはいつものことなので) を 買う気になったかというと「(盲人向けの) 教材として使えるのではないか?」という もくろみがあったためである。大したアイデアではないのだが、 ひとつ考えているのは物理の教育に使うことで、Wiimoteを放り投げて その回転を音で理解させる、というもの。Wiimoteは放り投げたり物体に当てたりするのに じつにあつらえ向きの構造をしている。ちゃんとショックを吸収するカバーがついているし、 任天堂製品は昔から頑丈なことで有名だ。さらにWiimoteはそれ自体で音を出せるので (bluetooth経由でADPCMをストリーミングする)、この動きが音でわかるようにしたら、 わりあい盲人にとって面白いオモチャになるんじゃないか?

で…最初そんなの簡単にできると思っていたのだけど、じつはそう簡単じゃなかった。 なぜなら wiimote を放り投げたときの回転は、従来の wiimote では検出できないからである。 そもそも wiimote についている加速度センサというものは、実質的には重力センサであって、 重力がつねに下向きだから自分の向きを推定できるのだ。 重力がない状態では「下」を知ることはできない。 そして、Wiimote が放り投げられているときは、いわゆる自由落下状態にあるので、 加速度センサは重力を検知しない。というか、この間センサには外部からの力がまったく働かないので、 すべての測定値がゼロになってしまう。当然ながら回転も検出できない。これには困った。 しかし、新山の買った wiimote は偶然、MotionPlus拡張つきのやつだった (買うときにはまったく意識しなかったが、今ではこれしか売ってないのかもしれない)。 MotionPlusはジャイロなので、これを使えば向きが測定できるわけだ。

FLAG_MOTIONPLUS 拡張をオンにした場合、 Wiimoteから取得する6つのパラメータ (x, y, z, a, b, c) は 以下のように図示される:

…これらをうまく加算していけば、なんとか姿勢が検出できそうである。 しかし各軸に対する相対的な (単位時間での) 回転角はわかるのだが、 それを加算していくのは結構メンドくさい。まじめに行列演算をやらねばならない。 おまけに各軸の wiimote に対する向きがなんだかヘンテコな (新山の慣れていない) 座標系のために混乱することしきり。なんとか動くものを作ったが、非常に時間がかかった:

証拠動画

やっているとだんだん誤差が蓄積して、おかしな向きを返すようになってしまう。 たぶん本物の Wii ではこれは赤外線センサを利用して補正しているのだろうが、 新山は センサーバーを持っていないし、どのみち放り投げるような状況では センサーバーを参照することはできない。加速度センサと併用して なんとかキャリブレーションする方法があるんじゃないかと思っているが、 とりあえず今日はもう寝よう。おやすみ

@00:55

Milton Friedman のインタビューを見たが、やはり「複雑さ」の問題が 見落されているような気がした。市場原理が本当にうまくいくのは、 どうしても単純な基準ですべてが評価できる場合だけのような気がする。 そもそも、人類がみんな自分にとって何が本当にいいのか判断できるなら苦労しない。

/18 [Sat]

@13:25

ふえご (fuego)。

@19:01

毎度NHKの集金を断わるのはなんか気がひけるのだが… でもホントに見てないんだからしょうがないよな。

/15 [Wed]

@07:09

寝不足するとどうも涙もろくなっていかん。

ホントーーーですよ!!

そして自分のタワゴトをここに書こうとして、失敗していることに気づく。

@23:34

プログラミングというのは小説を書くのに似ている。 本当にその仕事を職業として真面目に続けるつもりならば、 いろんな多様な知識を身につけておく必要がある。 たとえば生まれてこのかた推理小説や ライトノベル(って何?)しか読んだことのない人間が、 偶然“ヒット作”を書くことはできるかもしれないが、そいつは一発屋としてしか 成功しないだろう。小説家を持続してやりたいなら、 いろんな分野のいろんな人々による文章を読んでおかねばならない。プログラミングも同じだ。 この仕事を真面目に継続してやりたいなら、アイデア一発ではどうにもならない。 幅広いジャンル・用途・言語のコードに触れておかねばならない (ソフトウェア界の系統立った知識などたかが知れている)。 このことについては、オープンソース時代のいまは昔と比べて非常に恵まれてきたと思う。 もちろん、プログラミング以外の知識だけでソフトウェアが 書けると思っているヤツはただのバカだけど!

(追記) 新山は、いわゆる「プログラマ35歳定年説」は、ある意味では正しいと思っている。 つまり、本来はプログラミングに向いてなかった人々が淘汰されるのが だいたい 35歳ごろなのだ。その年齢を過ぎても続けている人は、 本当にプログラマに向いている人だと思う (ま、業務によっては惰性で続ける人もいるだろうけど)。 若いうちは一発ネタやド根性という、本来のソフトウェア技術とは関係のないところで ごまかしがきく。しかし、やがて人々は徐々にそれではやっていけないことを 理解してきて、それでプログラマをやめていくのだろうと新山は想像している。 自分はどうなのかって? さあね。

ところで (てくるで)、 どこぞの車内広告 (リクルートかどっか) に「時代の変化についていくには、 自分をアップデートせねばならない」みたいなことが書いてあったが、 残念ながらアップデート程度なら誰でもやっている。 本当に必要なのは、自分を再インストールすることなのじゃないか。

@23:38

いまから 20年後ぐらいに、自分が若い人々にこういっている 場面を想像できるのである。「むかしはよかったんだよ、 誰でも自分のコンピュータにどんなソフトウェアでも、 たとえ自分の作ったソフトウェアでも、インストールして 勝手に使うことができたんだから…」

…そして周囲から「ハア? 何いってんの、このジジイ?」という目で 見られることになる。そのような未来を、オレはじつにリアルに想像できるのである。

@00:05

新山は基本的に新雪を踏むのが好きなタイプだ。

/14 [Tue]

@21:19

あなたにとって正義とは何ですか??

それは八幡屋イソゴローー謹製の七味唐辛子だ。

…モツが安かったので思わず買ってしまい、 モツ煮がカレー鍋にいっぱいできてしまった。 で、モツ煮に対する正義とは何かというと、それは七味唐がらしである!! これぞ正義。ホントーに。

/13 [Mon]

@23:15

プログラムを書いている時間がないので日記を書く。これは ずっと前から考えているのだけど、あいかわらず 「win-winな関係」というもののうさん臭さについて。 今日、そのインチキのひとつがわかったような気がする。 それは「視点を広くすればするほど、win-winな関係は見いだしにくくなる」ということだ。

たとえば、上の図で A と B がそれぞれ自分の生産したものを売って、 「win-win な取り引き」をしたと仮定しよう。これ自体は、 A と B の2人だけの間 (viewpoint 1) で考えると、たしかに win-win な取り引きに見える。 経済学では、これは A と B がそれぞれ自分の得意とする (しかし、お互いにとって必要な) 商品を生産して、それを交換するからだ、と説明されている。 しかし、A も B も無から何かを生産することはできないので、 必ずなにかの資源 (Resource) を消費している。これは材木だったり、 石油だったり、あるいは人間の労働力だったりするかもしれない。 このとき、A や B はその資源に対して本当に対価を支払っているだろうか? …新山の印象では、おそらく払ってない。これらはほとんど「ただ取り」か、 あるいは真の対価よりも安い対価しか払われないケースが多いと考えられる (相手が自然ならば、なおさらそうだ)。 つまり、ここで消費されている“資源 (途上国の人間なども含まれる)”の立場から見れば (viewpoint 2)、 彼らはあきらかに負けているのだ。よって全体としては win-win ではない。系を大きくとれば、地球上にはどこかで必ず損しているやつがいるのである。 温暖化や海洋汚染、石油ピークなどは、まさにこれが物理的に表われた例だ。 ただしこれらはいずれも通常どこか遠くの場所で起きており、 A や B が直接かかわっているわけではないので、2人ともそれに気づかない。

ここでいう「系の大きさ」は、なにも人や自然だけにとどまらない。時間的な尺度でもそうだ。 もっといえば、詐欺であっても一時的には win-win の関係がなりたつ。 たとえば A と B が共謀して国の税金をムダ使いする場合を考えてほしい。 長期的な視点で見れば、こういった行動はいずれ破綻するはずだが、 ここで問題なのは、このツケを払わされるのはもしかすると A や B ではないかもしれないということだ (事態が明らかになるころには A と B はとうに死んでしまっているという可能性だってある)。すると、 こいつらの人生にとってはこの取り引きは win-win のままで終わる。

…で、現代の世の中は、すでに1人の人間がこうした巨視的・長期的な 視点をもてないほど複雑化してしまっているので、ほとんどの人間にとって こうした問題を認識するのは容易じゃない。つまり長い目でみればいつか ツケがくることでも、変化があまりに薄められているのでそれに 気づかないのである。新山が考えるに「win-win」の真のトリックはこれだと思う。 そして、この文句はこうしたことに気づいたり、 考えたりすることから目をそらすような聞こえのいい言い訳として作用している。 Weinberg がいっていたように「人間は見たくないものを見ないですむようにしたり、 考えたくないものを考えないようにすることにかけては、無限の能力を持っている」のである。 …新山はなにもそうした連中が変わるべきだ (あるいは、変えられる) とは思っていない。 ただし、納得できないことについてはとことん考えないと気がすまないのだ。 たぶんオレはそういう性格なのだろう。 何も考えずにインチキを受け入れているとそのうち頭おかしくなるぞ (もうなってるけど!)。

/12 [Sun]

@12:10

きのう、ひさしぶりに pygame.org のサイトを見てたら、 すんげークールなビデオを発見した。 Python + Wiiリモコンで巨大ロボットを動かす。 講演は こっち。 なにが超クール (≒無謀) かというと、Python インタプリタをつかって、 15トンの重機を実時間制御しているところにある。とーぜん、経路計画とか衝突回避とかも計算している、 Python インタプリタで。しかも、インターフェイスは Pygame (+ なぜか XMLRPC) だそうな。 これがクールでないはずがあろうか。バグったら家が吹き飛ぶか、最悪の場合死人がでるぞ。 個人的な Project of the Year だな。

新山は仕事でも Pygame を使っているが、(バグっても人が死なないという点で、) クールさではこれに遠く及ばない。

@22:12

さようなら Google Code。こんばんわ github。

@23:58

今日はなぜかモウロウとしているうちに Bluetooth USB アダプタと Wiiリモコンを買って帰る自分がいた。…

…いかん。新山は普段こういうバカなことをしないようにしているのだが、 アホと言われても仕方がない。とーぜん、新山はWiiをもってない。 買ったのはリモコンだけである。いま売っているやつは Motion Plus が一体化したやつなのだが、 cwiidの最新版を clone してビルドしたら、 ちゃんと Motion Plus 機能拡張もついていた。うちの赤外線ヒーターをつかって試した限りでは、 IRセンサーも動いているようだ。唯一の問題はリモコンから音がでないことだが、 このパッチをあてたら出るようになった。 しかしどうにも実装がヘボい。Windows用のドライバはちゃんと任意の波形が 再生できるとのことだが、cwiid はそうなっていない。 pthread をいじらなきゃいけないし、おまけに波形データは ADPCM で送信しなきゃいけないって? しょうがないなあ、ちょっくら調べてみるか…。

いちおうスクリーンショット:

(こうしてまた寝不足)

/11 [Sat]

@12:18

言語のシリアライズ性 (serializability) について。 もし新山が言語学者だったら、たぶん間違いなく手話を研究対象にするだろう。 それほどこの言語はおもしろい。しかし、同時に、手話はもっとも伝統的な意味での 学術的な研究対象にしづらい言語であろうとも思うのである。なぜならそれは ひとえに文章で表現するのが非常に困難なためだ。もちろん近似的にはどんな文も 音声言語に翻訳できるが、音声言語のように符号そのものを文字で簡単に 表すことができない。つまり手話は「シリアライズしにくい」のである。 Stokoe などは手話を記号化する方法を考案しているが、 人間の表情など基本的にすべてを符号化することは不可能のように思われる。 なにかもっと別のブレイクスルーが必要だろう。 あるいは、こういうところこそパターン認識が役に立つところなのかもしれない。 ただし、手話そのものの認識というよりは、あくまで記号化のための 補助ツールとしてだろうけど。

/09 [Thu]

@08:23

According to Urbandictionary, every word in English implies some sextual connotation.

/09 [Thu]

@00:23

きょう昼食時にふと気づいたこと。新山は箸については左利きだが、 そうすると、どういうわけか毎回、右側にゴハンを、左側にオカズを置いている。 このほうが具合がいいらしい。なぜか。なぜか??

/07 [Tue]

@18:41

そういえば書き忘れてたこと。 新山が手話をするさいにいつも問題っぽいのが、 「目芝居ができないこと」である。 まず、新山は話をしているあいだ特定の1点を見つめているのが苦手だ。 そのため、よく終わったあとに「どこ見てたんだ?」という注意を受けてしまう。 そしてどういうわけか、新山は考えるときに視線をあっちこっち動かす癖があるようである。 しかも、ときどき顔をしかめたりするので、相手にかなり違和感を与えるらしい。 手話では表情や視線も「記号」の一部として扱われるため、手の動きが同じでも 視線がどこを向いているか (正面か、手の指先か、あるいはそれ以外か、など) によってニュアンスや意味が違ってしまう。ましてや表情が違えばなおさらである。 これは一体どうやったらトレーニングできるのだろう…

@19:17

そういえばキョーは仕事を途中で抜けだして眼鏡店へいった。 なぜかというと、じつは先週も行って視力の測定をしたのだが、そのときは 「あんたの目はいま疲れすぎていて、まともに測定できない。 もう一度、目が疲れてないときに来てくれ」と言われたのである。 なんでも、目が疲れていると複数回の測定結果にばらつきがあって 信頼度の低い値しか出せず、こういうときにメガネを作ると使いにくいものができてしまうんだそうな。 へーそうなの? 人間の視力が身体的・心理的要素に左右されるとは聞いていたが、 それほどとは思わんかった。それで、今日の午前中にまた行ったら 今度はよかったらしく、レンズを注文して帰ってきた。 全部で2時間ぐらいかかった。測定だけでこんなにかかるなんて! しかし、このメガネ屋のおじさんは真面目そうな人で、 いやな顔ひとつせずに視力測定をしてくれ、しかも結果をかなり 細かく解説してくれるので、買い物するならこういう相手にかぎる。 新山ほどのド近眼かつド乱視になると、メガネのレンズはけっこう高い買い物になるし、 これほど身体の一部になっているので、スタイルその他よりも見え方のほうがはるかに重要だ。 なんでもサッサとやってしまうよりも、客に「きちんと考えさせる」店は いい店にちがいない。途中でメガネ業界の「ギョーカイ話」をいろいろと教えてもらい 勉強になったが、それをすべて記すにはこの余白は狭すぎる。

/06 [Mon]

@20:31

複雑なシステムを理解するには大きく分けて2つのやり方がある。 ひとつは還元論的なアプローチで、ようするに全体をこまかく切り刻んで部分部分で理解する方法。 もうひとつは holistic なアプローチで、全体を「総体として」簡略化する方法、 つまりはアナロジーによる理解である。

…と思う。の、ような、気がする。気のする。気のせい? dontassumeanythingworkingatall.

@20:34

ぷったべ

/05 [Sun]

@13:16

平和かつ乾燥した週末の午後である。どういうわけか、手がカサカサ。

@16:51

新山はカネをおろすのをいつも忘れる。 きょうはなぜか高円寺へ行き、 喫茶店へ入ったあとに現金が足りないことに気づいて恥をかいた。 いつも1000円ぐらいはサイフに残しといたのほうがいいのだが、 なかなかそうならない。

どうでもいいけど、じつは高円寺って初めて行った。 新山の生活範囲はキホン的に北の新青梅街道から南の早稲田通りにはさまれた 領域内であるので、早稲田通りよりも南にはとんと行く機会がない。 …って、中野駅にはしょっちゅう行っているけど、あそこだけは別だる。

/04 [Sat]

@19:39

ディープな話だって?

ある種の人々のいう「ディープな」話あるいは「濃い」話ってのの意味が、 新山には全然わからない。連中のいう「ディープ」ってのは、 要するにサブカル的な重箱の隅をつつく話というダケのことだ。 新山に言わせれば、そんなのぜんぜんディープじゃなく、むしろ非常に底の浅い話である。 だって知ってるかどうかだけのレベルじゃん。 新山にとって「ディープな」話あるいは「濃い」話とは (これらはだいたい同じような意味と仮定しているが、もしかしたら違うかもしれない)、 文字どおり深い洞察を必要とする話だ。具体的には:

といったたぐいのテーマである。 たしかにこうした話ができる人は (新山にとっては) とても少ない。 とくに日本人でこうした話ができる知り合いはほとんどいない。 これは問題である。まあ、日本人じゃなくてもそんなに沢山はいないけど、 これはオレが「友達いない」奴だからなのか、あるいは世の人々というのは 基本的にそういうもんなのか。

そもそも、(新山が個人的に追求している) プログラミング関連の話なぞは、 人と話すときには本当にどうでもいい話題なのだる! 新山はつねに 価値判断が入る話を好む。価値判断が入るってことは、つまり 「個人の偏見が入る」ってことで、すなわち 「相手と意見が食い違う可能性を覚悟せにゃならない」ってことだ。 偏見ばんざい。もし偏見がいっさい入らない話をしたければ、 そもそも相手は人間でなくてもよい。機械や本やテレビを見ていればいいことだ。 新山は「人間」と話がしたいのである。 そして基本的には、一人の人間を人間たらしめているのは、そのバカさとキチガイさと 頑固な思い込みなのだから、これらが表に出てこない話題だったらちっとも面白くないじゃん。

…さて、ここまで書いたところで、なぜこういう話のできる人が非常に少ないかも 新山にはある程度わかるのである。まず、こういう話題は基本的に自分の無知や混乱をさらけ出すことになるので、 そういうのを嫌がる人が多いこと。まあそれは新山もそうだと思うけれど、でもある程度うちとけた相手とならいいよね。 それから、他人との不同意をおおっぴらに話したくない人がいること。 それから、これは日本人に特徴的だと思うのだが、基本的に 「世間一般に合意のとれていないことを堂々と主張できない」というのがあると思う。 とくにかつて優等生だった人々の場合はそうだ。 彼らは、模範解答のない質問を本質的に恐れるのだが、 じつはかなりの日本人は (たとえ実際に優等生でなかったとしても) 多かれ少なかれ「優等生的」な思考パターンを植えつけられているのである。 かくいう新山もその一人かもしれない。学校教育というのは恐ろしい。とにかく、結果的に 「あたりさわりのないこと」ばっかり言う人間が大量生産されてしまうのは 大変つまらないので、新山はなるべく「あたりさわりのあること」を 言うように心がけているワケです。だから死刑は廃止しろとか、 麻薬は合法化しろとか…。おっと、「ディープな話」の定義から いつのまにこんな話になったんだ?

…ついしん。 そういえば最近 Ralph Nader の "The Seventeen Traditions" を読んだのだるが、 この Ralph のおやじという人がとても政治的な人物で、 コネティカット州でレストランを経営してたんだけど、 客と毎日のようにカウンターで政治議論をしていたらしい。で、あるとき知人が 「おまえ、そんなに政治的な話ばっかりしてたら、そのうち客こなくなるよ」と 忠告すると、Ralph の父親は「おれは自由の女神様の側を通ったときから (Naderの両親はレバノンからの移民)、 こういうことは決して軽んじないようにって決めたんだよ」といって 耳を貸さなかったという。で、この父親は自分の意見も主張するのだが、 相手がすでに確固とした意見を持っているときは、それを尊重した。 Ralph いわく「父は相手の信念が強固であればあるほど、それを好んだ。 (pp. 139, "The firmer they appeared to be in their views, the better he liked it.")」 という。ほかの部分はどうあれ、ここに関しては新山はとても共感する。 新山が一番ムカつくのは、こうした「ディープな話題」について 何の意見も持っていないし、そもそも考えたことすらない、という連中だ。

(さらに追伸) 新山がここで言う「ディープな話」ってのは、もしかすると 「ヘビーな話」の間違いかもしれない。しかしそんなことはどうでもいい。 とにかく世間一般で言われている「ディープな話」の語用が、 オレには納得できないのはたしかだ。

/03 [Fri]

@08:00

一体こりゃ何だ? もう風邪ひいたってことにして会社休んじゃおうか。

@08:18

…かと思うと突然、雨は止んだりする。会社行こう。

@19:03

くりかえすが、 Python3 == IPv6 == OOXML == Daisy3 である。

さて、これらの共通点は何でしょう。

@19:43

最近の Amazon.com は配送が早すぎる。 この週末は絶対、本を読み進めるからな!

ちなみに、新しく4冊も買ってしまい、しかもそのうちの2冊が 1000ページを超える書物であるので、現在の未読ページ数は合計 3000ぐらいである。 オレって一体いつからこんなに「積ん読君」になったんだろう…

@20:23

組織は強くても人間はみな弱い。

@20:26

仕事の話。先月までやっていたプロジェクトがひと段落し、 今月からまた別の休眠中のプロジェクト (Python) をひっぱり出して 開発をはじめたのだが、あいかわらず思ったことは、 自分はコードを書くのがいかに好きかということだった。

「コードを書く」というのにはやや語弊がある。 実際には、新山は作業としてのコーディング、 つまりタイピングしている間はそんなに好きではない。 ほんとに好きなのは設計というか、どのモジュールをどのような役割分担にし、 各変数やメソッドをどのような名前にするか決定しているときだ。 それらは一貫しており、かつ自然言語での説明が容易であるように決めなければならない。 これはほとんど日本語で長い説明文を書くのと同じような楽しさ (と難しさ) がある。 また、将来的な拡張や起こりうる例外処理、デバッグの容易さも考慮に入れる必要がある。 それにこれは (ゆるい意味での) 組み込みシステムなので、 プロファイルが取りやすいように作る必要もある。

ところで logging について。 新山は Python の logging モジュールをよく使っているが、 どのレベルで Logger を切り分け、どの段階で info() を 使うようにするか debug() を使うようにするか、ある程度の ガイドラインを (自分のプログラムにとって) 決めておかなければならない。 でないとログ出力を見てもワケわかんなくなるので。 これは、なにか世間で合意された基準があるのだろうか? 世間的には fatal() < error() < warn() < info() < debug() の順に使用頻度が多くなっていくのかもしれないが、 新山がいちばんよく使っているのは info() である。 基本的に info() を使うか debug() を使うかは イベントの粒度というよりも「出力の多さ」で決めている。 log4j を使っているオープンソースのプロジェクトをあまり知らないのだが、 Tomcat 7.0 のツリーなどでざっと grep 'logger.*error' | wc などをしてみると:

となっている。フォーマットも一貫してない。 ふむ、よくわからんが、たいして厳密な基準があるわけではないようだ。

cf. "logging level guidelines" などで検索すると:

ちなみに "guideline" は英語では通常かならず複数形で "guidelines" である、ということを最近知った。

/02 [Thu]

@08:15

まったく相反する2つの意見を堂々と主張できれば、あなたには政治家の素質がある。

/01 [Wed]

@19:27

本日の間抜けなバグ・その1729:

Python で、

raise SomeException
とやるべきところを、
return SomeException
とやっていて、本来 raise されるはずの例外が return されていた。

Python は嫌いだ。 …オーケイ、オーケイ。つうか、型なし言語を使っているオレが悪いよ。 あるいは、ある人の言うところによれば Python は「型なし」言語じゃない。 でもオレにとっては同じことだ。とにかく、どの言語を使おうが アホなバグは発生するんであって、いまのところその頻度は 言語ごとに大差があるわけでない。 (といっても、慣れてない言語に対してアホなバグが発生するのはしょうがない。 新山が流暢に扱えるプログラミング言語は 今のところたかだか 3つぐらいなので、 ほんとにすべての言語に対して言えるわけじゃないが)

ちなみに新山のいう「流暢」とは、少なくともその言語で3万行ぐらいは書いた… 程度の意味です。。。

(注: コード「量」を自慢するプログラマはどいつも例外なくアホである)

ところで (てくるで) ぜんぜん関係ないけど Windows を使っていると資本主義を思い出させる。 なぜならどんなアホなソフトウェアでも金がかかるから (新山は、Vectorとか窓のなんて知らない)。

@19:34

またみゃー遅れた話なのだが、 これ。 いまや OSS のコミットログを監視して特許申請する企業があるんだ。すげえ。

@19:44

扉の陰に何かがいる…ように思える。


Yusuke Shinyama
Document ID: 7609e2730852e22d95c8fff032fa93e7