メッセージ。 - diary

2008-10-07

# 日記

Haskellを勉強中。いやぁ、Haskell面白いなぁ。

たとえば、普通のプログラミング言語は最内簡約なんだけど、Haskellはグラフ簡約なところ(外側から簡約していくところ)が面白い。普通の(最内簡約の)プログラミング言語では、プログラムを内側(書かれたもののうち内側の小さい単位)から実行するという方式で、たとえば((1 + 2) * 3)は有無を言わさず(1+2)、1+2は3、(3*3)の順番で実行する。一方でHaskellのようなグラフ簡約の言語は、((1 + 2) * 3)という式を受け取ると、まず外側の()を実行する。つまり、括弧の内側を実行する必要があるかどうかを外側から順に計算していく。

これは要するに、Haskellではif文を関数で実装できるということだ。(if (= num 0) then 0 else (5 / num))みたいな式を書こうとしたとき、普通のプログラミング言語では、ifは「構文」であって「関数」ではない。もし普通のプログラミング言語でifが関数だとしたら、(= num 0) と0と(5 / num)の3つをまず計算し、それから(= num 0)がTrueかFalseかを判断して、それからその結果に応じて0とか「(5 / num)の結果」のどちらかを返す。

でもこれは、実際には動かない。(5 / num)を計算しようとしたとき、numが0だったら計算できないからだ(ある数を0で割ることはできない)。

--

ただHaskellはドキュメンテーションが弱いような気がするなぁ。Gaucheみたいにinfo形式のリファレンスマニュアルが欲しい。HTMLのマニュアルはあるみたいだけど、HTMLだとレスポンスが悪いし、Emacsとかから閲覧しにくいように思う。Gaucheはリファレンスマニュアルが素晴らしくて、コーディングしながらまったくストレスなくマニュアルを使える。

--

http://tabesugi.net/memo/2008/aa.html#042053
 Ventura「…世間じゃ民主党は共和党に反対するもんだと思われてるが、俺はそんなものは信じない。ちょうど、プロレスみたいなもんだと思ってる。大衆の前じゃ、どっちもお互いを敵視してるかのようにふるまっているが、楽屋じゃ仲良しクラブさ。どっちのサイドも実は『同じサイド』で、企業に奉仕してるんだ。利害は一致してる。ただそうじゃないように信じこませているだけだ。俺はいまの政治家がやっていることはそれだと思うね。…」 

ああ、そうなんだよなぁ。最近忘れてたけど。この人は賢いなぁ。

でもこういうのって、アジア的な考え方だよな。ぼくはここしばらく、「饅頭怖い」の話についてずっと考えてる。日本ではとくに、自分が好きなものややりたいことを口にすることが憚れる。それどころか逆のことを言ったり、思ってることを明かさないことが良いことだとされている。本音と建前というか。

一方で、たとえばアメリカでは、基本的に望むことを口にするのが良いことだとされているように思う。明示された言語によって議論するし、利害の反する(かもしれない)者どうしで自らの希望することをあっけらかんと口にする。

アメリカの若者は自分の思想信条にあった言葉が入ったTシャツを着たりするし、オバマを支持するとかFree Tibetと軒先に看板を付けたりとかする。でも日本の若者が着ているTシャツに書かれている言葉は、単なる模様であって主張では決してない。明示的な表現と本人の意思とは、ほとんどのケースで乖離している。

日本では、それぞれが望むこと、あるべき姿について、ほとんど口にしないし議論しない。これが理由かどうかは知らないが、本来やるべきことがどうもウヤムヤになっていて、大事なことが埋没されてしまっているように思う。「饅頭怖い」。ただこの価値観は、自然社会ではたぶん合理的なんだよな。んー。まとまらない。

--

まーいいや。適当。
2009-07-10 00:49:15 / ふじさわ / Comment: 0 / Trackback: 0

2008-09-13

# フリーの日本語OCRソフトかぁ。

Googleが試験公開しているフリーの日本語OCRソフトが、はてブでホットエントリーに入っててすごい人気。でも、そんなにみんなが期待するほど、OCRって使い物になるんだろうか? 自分、大学では文字認識の研究をやってたんすけど。OCR技術は、郵便番号の認識みたいな「枠の中に数字のコードが必ず書いてある」みたいな状況ではすごく役に立つけど、汎用的なものにしようとすると、途端に価値が下がるように思う。

たとえば、文字が縦書きか横書きか、フォントサイズは一定か不変か、書いてある内容は自然文かそれとも電話番号のようなコードか、誤認識はうまくフォローできるのか(どれくらい誤認識が許されるのか)等によって価値が全然違ってくるだろう。

そして、OCRがビジネスや日常の道具として損益分岐点の上に行くようなスイートスポットは、残念ながらとても小さい。文字認識の研究をやられていた先生も、懇親会の席でこんなことをおっしゃっていた。「文字認識の市場規模は残念ながら小さい。似た技術を使っているのに、バーコードのほうがビジネスとして断然上を行っている」。10年以上前の話だが、状況はそう変わっていないだろう。

バーコードは、誤りの検出と訂正機能を備え、意味論の集合を事前に定義したうえで個々の意味を二次元の印刷物やディスプレイにコード化(読み書きが可逆的に可能な状態に)することで、有用性を確保できている。一方で文字認識は、文字認識技術それだけでは意味論の抽出が不可能なので、認識結果を機械に処理させたり、意味を抽出したりするためには、人間が密にサポートするか、事前の強いコード化が欠かせない。

フリーのOCRソフトやライブラリは、あればあったに越したことはないだろうけど。でも、それが「役に立つ」といえるレベルに持っていくのは難しいだろうなぁと思う。やるとすれば、コードの意味論をかなり限定的に定められる分野か、たくさんのデータを処理できるようなスケールメリットのある分野に適用するといった使い方だろう。ぱっと思い付くところでは、学力テストをマーク式から手書きにできるとか、本をスキャンしてその内容をテキストデータで提供できるとかそういう使い方。

そういう意味では、使い道はあるにはあるんだけど。ただ、そういう場合は大きな案件で使うことになるし、大きな案件ならばアカデミックな研究成果の盛り込まれた商用のOCRライブラリを使うという選択肢もある。普通の人がこんなにたくさんはてブにメモするほど身近なライブラリには、(少なくともあと3~5年ぐらいは)ならないんじゃないかと思う。
2008-09-13 00:41:48 / ふじさわ / Comment: 0 / Trackback: 0

2008-09-08

# プログラミング言語について

「プログラミング言語」という言葉を初めて聞いたときに違和感があって、いまもその違和感のことは忘れていない。つまり、「言語ってなんですか?」と。ぼくにとっては、言語というのはあくまで自然言語のように捉えられている。うまく言えないけど、人間(知的主体)が人間(知的主体)とコミュニケーションするための手段が言語だと感じる。

逆に言うと、いま我々が使っている「プログラミング言語」というものは、単なる「オペレーションセット」(操作盤)であって「言語」ではないとぼくは考える。それはたとえば、車を運転するためのハンドルやアクセルやエアコンの操作パネルなどのような、要はスイッチ群だ。それらのスイッチを時系列・順列に、あるいは並列に組み合わせて、あくまで客体的な機械を意図するとおりに動かす。それがいまの「プログラミング言語」だと思う。

だから、100年後のプログラミング言語がどうなっているかというと、計算機が客体的なままであれば(またはチューリング機械であれば)、プログラミング言語もまた「オペレーションセット」のままその本質は変わらないだろう。

ただし、たしかまつもとゆきひろさんがおっしゃっていたように、現在でもほとんどの人々はコンピュータでプログラミングをしていない(にもかかわらず満足してコンピュータを使っている)。GoogleやYahoo!にアクセスしたりクエリを投げかけたりすることが、彼らにとっての「プログラミング」だという指摘は、納得できるものがある。

そしてまた、こうも思う。そのような「プログラミング」環境を考えたとき、はたして計算機は未だ客体的であるだろうか?と。それらの計算機(群)は常に内部データをアップデートし、また期待しない型の値を返してくる(こちらが質問を投げたら、計算機が質問を返してくるような)。

よく分からないのだけど、そういった計算機は、チューリング機械と言えるのだろうか? 科学が反証可能性を備えていなければならないように、チューリング機械もまた反証可能性を備えていなければならないのではないかとぼくは考える。つまり、「ある入力Aを与えたとき出力Bが得られる」という実行結果に対して、別のいつかほかの誰かがが再試験したとして、必ず同じ結果が得られることが「機械」であると。
2008-09-08 22:46:56 / ふじさわ / Comment: 0 / Trackback: 0

# LL Futureに行ったときに感じたこと、またはPerlについて

LL Futureに行った。そのときに感じたことと、その後いくつかの関連ブログ記事を読んだりして考えたことを一つ。

LL FutureでLarry Wallさんの講演を聞きながら、Perlのことを漠然と考え、少し見直した。というのも、ここ数年、ぼくはPerlのことを「全然アカデミックじゃないチョイダメ言語の1つ」だと見なしていた。分かりやすく言えば、「素人の作った言語」と言ってもいい。つまり、数学的基礎(王家の血統)をほとんど持たない蛮族の言語として。「正規表現? それでたとえば、S式はパースできるのかい?」

でも、ぼくは歳を取ったのか、Larryさんの顔を見ていると、ぼんやりとその考えが緩んできた。Larryさんといえば、patchコマンドの開発者でもある。そしてぼくは、patchコマンドが好きだ。

patchコマンドは、テキストの差分情報をもとに、複数のテキストの更新を同期させるソフトウェア。たとえば、太郎さんと花子さんの2人が結婚の挨拶状を作っているとしよう。普通は2人で膝を付き合わせて文章を練るのが一番だが、忙しくてそうできない場合もある。2人はテキストをそれぞれ自分のパソコンにファイルとして保存し、少しずつ修正する。2つのバージョンができるわけだ。それらのバージョンのファイルを機械的に統合して、1つの完成した文章を作る機能を、patchコマンドは提供する。

普通は、1つの文章が複数のバージョンに分かれてしまうと、人間の力でそれらの差分を把握して統合するのは困難だ。単純に2つの文章を付き合わせるだけでも、2つの文章を1字ずつ追い掛けて差分を把握する必要がある。挨拶状ぐらいの短い文章ならいいが、論文や契約書のような長い文章になると途端に難しくなる。そして、差分の把握と統合といった作業は、「文章を読む」というよりは「文字や文字のつながりを見る」ことに近い。だから本来、それは機械でもできる仕事なのだ。patchコマンドは実際にそれを機械にやらせるために作られた。

ぼくがpatchコマンドを好きなのは、それが「機械にやらせるべき仕事と、人間がやるべき仕事」を明確に意識しているところにある。大量のデータを一律にチェックするとか、加工するとか、1分1秒も休むことなく何かを待ち続けるとか、機械はそういう仕事が得意だ。しかも間違わない(逆に人間はそれが苦手だ)。だから、機械にやらせるべき仕事は、機械にやらせたほうが断然良い。ただ難しいのは、どの仕事が機械にやらせるべき仕事で、またどの程度人間との連絡を取らせるべきかを判断するのが困難なことだ。そこのバランスが崩れると、「せっかく機械にやらせるようにしたのに案外メリットがなかった」という結果になる。

patchコマンドは、そういった問題を、文章の編集という誰にも身近なレベルで経験できるようにした。以前どこかで読んだのだけど、「ビジネスとは結局のところ文書を作ることだ」という考え方がある。極端な考え方で異論もあるけど、確かに「一切紙も文字も数字も介在しないビジネス」というのは存在しない。物々交換のときをすぎ、貨幣経済の中に生きるということは、文書とともに暮らすということだ。だから文章の編集に対して、機械を適用するという解決策を提案したpatchコマンドを、ぼくは面白いと思う。ただ、実際のところ、patchコマンドはいわゆる普通の人にはなかなか取っ付きにくく、「バランスの問題」というハードルは依然立ち塞がっているのだけど。

さて、Perlについて。Perlもたぶん、「機械にやらせるべき仕事と、人間がやるべき仕事」を意識して作られたんだと思うんだよね。だから、できるだけ簡単に(書かなきゃいけないプログラムが短かくなるように)、ちょっとの入力(労力と時間)で大きな出力(仕事の結果)を引き出せるように、Perlの仕様は作られたのだろう。Perlを使えば、ちょっとした文章を加工するとか、たくさんのファイルを一括処理するとかいった、カオティックで雑多で短いターンアラウンドが適した(数学的でない)問題を容易に解決できる。逆にPerlは、数学的な構造や再帰的問題や強固なビルディングブロックを要する問題を解決するのが、あまり得意ではない。

要するに右脳的というか。Larryさんは「Artistic License」というラインセンスを作って、それをPerlにも採用しているけど、いったいどうして「artistic」なんて名前を付けるんだろう?と思う。不思議な感じ。ただ、確かにPerlはArtistic(芸術家的)なんだろうな。芸術と数学は、ときに鋭い一致を見せるけど、ときにまったく反目したりもする。artというのはいったいなんなんだろうか。そういうことを考えている。
2008-09-08 21:40:22 / ふじさわ / Comment: 0 / Trackback: 0

2008-08-21

# 日記

怒っている人を見る。でも、その怒りが正当なものなのか、よく分からない。先入観で判断して、分かったつもりになって、勝手に怒ってるように感じる。世の中には、「自分は分かっている」、「自分は正しい」と思っている人が多すぎる。弱い人間を見たとき、その人が弱いからといって責めてどうなる? 弱い人間が、どうして弱いのかを理解しようとしなければ、何も変わりはしない。そうじゃないかな? ……少なくとも、相手のことをよく分かっていない状況で、でも自分がなにかをしたくて仕方なくなったのならば、相手のことを知ることから始めるべきで、そこをすっ飛ばして怒ったって仕方がない。と思う。だからさぁ、ちょっと冷静になって、優しい言葉で尋ねてみることから始めたらどうかなぁ?

--

アメリカを旅行中、なんかいかスターバックスに入った。日本では、スターバックスは高いし、ぼくはコーヒーを飲まない人間なので、「スターバックスはあまり好きじゃないなぁ」と思っていた。でもアメリカのスターバックスは安かった。レモネードのスムージーみたいなのが150円ぐらい。安い。それに、スターバックスはけっこういろんなところにあって、暑くってまいってるときなんかに助かる。アメリカの人がスターバックスを贔屓にするのは分かる気がするなぁ。大袈裟かもしれないけど、アメリカ人からすれば、スターバックスは砂漠のオアシスみたいに感じられるのかもしれない。

--

アメリカを旅行中、マクドナルドに一度だけ入った。ビッグマックは日本とほぼ同じ大きさで、味も同じ。値段も同じぐらいでセットが650円ぐらいかなぁ。これじゃあアメリカの人はお腹いっぱいにならないと思った。あと、100円マックみたいなのもないので、余計にお腹いっぱいにならないだろうなぁ。ほかのファーストフードに比べると割高な感じ。

--

アメリカ旅行でいろいろ感じたことや、知ったことがあって、なにかメモに残したい。でも、どういう形でメモにすればいいのかなぁ。ここで日記という形で、思い出したときに書けばよいかしら。

--

そうそう。アメリカを旅行しているとき、外出中はけっこう気を遣って疲れたのだった。アメリカでは、「ストリートは危ない場所」という感じがあって、ストリートより一段安全な場所は「お店など私有の建物の中」。一番安全で、唯一気が抜けるのは、「ホテルの自分の部屋の中」という感じだった。ほかの人がどう感じているのかは分からないけど、ガイドブックを読んだり、街を歩いたりしている限りは、そういう感覚で合っているのかなぁと。で、もしそうだとしたら、スターバックスみたいなお店の価値は一層高まると思うんだな。なにしろ道ばたで休むわけにはいかないのだから、安くて休憩できるお店があるのは有り難い。

--

予定調和がつまらないなぁと思う。どうして市場には、こんなに予定調和したモノばっかりが溢れかえっているのだろうか。天然に存在するはずのリアリティをほぼ完全に消臭して、予定調和だけを形にすることに、どういう意味があるんだろう? 個人的には、そういった予定調和モノはまったく面白く感じないのだけど、逆に市場には予定調和モノしか存在しないという現実。全然意味が分からない。市場にはリアルは存在できないということなのかなぁ? それはまぁそのとおりというか、「市場とリアルは相反する」(消費されるものと消費されざるもの)という理屈はぼくが長年考えて辿り着いた仮説ではあるけど。でもそれにしたって、リアルの存在感が薄すぎる。リアルが遠すぎて、もうほとんど手の届かないところにあるかのように感じる。疑問なのは、ぼく以外の人は、この状況になにも感じないのだろうかということ。誰も彼もが、今ほどに予定調和を欲しがっているのだろうか。よく分からない。ぼくは間違った場所を探しているんだろうか。まぁそうなんだろうな。
2008-08-21 23:38:06 / ふじさわ / Comment: 0 / Trackback: 0

# 日記

ああ、もう朝晩は涼しいなぁ。風が気持ちいい。夏ってこんな風に終わっていくんだったっけ。
2008-08-21 21:04:07 / ふじさわ / Comment: 0 / Trackback: 0

2008-08-18

# 日本人のコミュニケーションには「徳」という思想があるという仮説

数日前に、渡辺京二さんの『日本近世の起源―戦国乱世から徳川の平和へ』という本を読んだ。面白かった。それで、直接はこの本と関係ないのだけど、ちょっと思ったこと。

# 『日本近世の起源―戦国乱世から徳川の平和へ』
http://www.amazon.co.jp/exec/obidos/ASIN/4862482643/

ある時期から、日本人のコミュニケーションには「徳」というベースがあるんじゃないかなぁ。ここでいう「徳」は、Win-Winのことを指してる。

日本人にとっては、双方が満足するコミュニケーション(取引)が「良いコミュニケーション(取引)」であって、しかも「誰もがそれを目指すべきである」という価値観を持っているように思う。

たとえば上記の本の中で、豊臣や徳川といった幕府と民衆の間には、ゆるやかな契約関係のようなものがあったと述べられている。彼らの関係は、もちろん支配―被支配の構図にはなっているけれども、それは必ずしも暴力による強制的なものではなかった。

本によると、豊臣・徳川幕府が成立する直前は、悲惨な状況だったらしい。朝廷や室町幕府の力が弱まるにつれ暴力が横行し、法も秩序もなく、世間は貧困と殺人と戦争と人身売買にまみれていたとのこと。そういった状況を克服し、平和をもたらしたのが豊臣・徳川幕府だった。

暴力が支配する世界は、そもそもアナーキー(無政府状態)が原因で起こったものだった。村々はめいめい土地と水と道と山の権利を主張し、有効な調停者がいないことで実質暴力によって問題は解決された。農民たちは村ごとに武装し暴力に対抗したが、戦いにあけくれる日々は、そもそもの農業生産に疲弊をもたらした。ながいあいだ、平和は農民をはじめとする国民の願いであっただろう。

だから、平和をもたらしてくれるような幕府が成立することを国民は歓迎したし、また幕府を作ろうとした人たちも、そもそも人民に平和をもたらすことを目的に活動していた。これはつまり、孔子が言うところの徳政だ。君子には人民を統べるだけの徳が求められるし、またそのような徳のある君子に対して、人民は誇りをもって臣民となる。

現代で言えば、Win-Winの関係だ。こういった関係は、支配者―被支配者の間で「あるべき形」として考えられたし、商売における販売者―消費者の関係にといても、また個人対個人の関係においても「あるべき形」とされたのではないか。そして現代にいたるまで、そういったWin-Winの関係、もっというと「徳」の考え方が、日本人のコミュニケーション観には息衝いているのではないかと思う。

一方で過去の歴史に目を向けると、イギリスやアメリカなどと日本の外交において、彼我の間のコミュニケーションはしばしばコンフリクトを起こしている。先方の外交手法は、当方を敵と見なす形でとられ、「双方が各々自国の利益を最大化することが当然(自国以外が不利益を被ろうと知らない)」という立場だ。しかし日本は外交手法においても、「双方の利益を最大化するべき」という「徳」の立場に立った。それゆえ齟齬が起こった。

ぼくが企業システムにおける「組合」に違和感を覚えるのも、そこに「徳」という概念が抜け落ちているからだ。組合という考え方は、経営者と雇用者が絶対的に対立することを想定している。しかし、そもそも日本においては、経営者と雇用者はそれほど険悪に対立していない。もちろん、経営者によっては悪徳経営に傾く企業もあるだろうけど、基本的に経営者は徳による経営を行うことが求められている(経営者側も雇用者側も、そのような経営を望んでいる)。悪徳経営が支配するときには、雇用者は一揆を行うこともあるだろうし、社会として悪徳経営を嫌う思想性がある。組合のように、「経営者はつねに搾取を試みている」いう想定のもとのシステムは、徳に対して牙を向くもので、日本の企業風土にそぐわないと思うのだ。
2008-08-18 21:42:12 / ふじさわ / Comment: 0 / Trackback: 0
recent days<< | >>old days