2007-04-29[n年前へ]
■「無名関数」と「吾輩は猫である」
夏目漱石の「吾輩は猫である」は、雑誌「ホトトギス」に1905年1月に発表された。最初は、冒頭の章だけで完結する短い読み切り小説だった。
吾輩は猫である。名前はまだ無い。 …吾輩がこの家へ住み込んだ当時は、主人以外のものにははなはだ不人望であった。どこへ行っても跳ね付けられて相手にしてくれ手がなかった。いかに珍重されなかったかは、今日に至るまで名前さえつけてくれないのでもわかる。数学ソフトウェア Mathematica でプログラムのスケッチ(素描)を作りながら、「この「名前はまだ無い・名前をつけてくれない」という言葉が頭の中に浮かんだ。
「吾輩は猫である」を連想したのは、Mathematicaの「純関数」の勉強のための練習題材を書いていたときだ。Mathematica の入門・中級の講習会に参加すると、この純関数とやらが登場した途端に、講師が話す内容を見失ってしまうことが多い。講師の筋道が見えなくなってしまう理由は、純関数の必要性・存在価値といったものが今ひとつわからないままに、純関数がいきなり登場してくるからである。もちろん、「(数値でなく)関数を引数として与える」ということに慣れていない生徒が多いこともあって、いつも、純関数が登場した瞬間に、何かその場が失速したような感覚を受ける。
話の流れ・必然性がなくても、文法をただ暗記することができる人であれば、おそらく何の問題もないのだと思う。あるいは、他のプログラミング言語をよく知っていて、文法の必然性が自然と理解できる人たちであったなら、これもまた問題は起きないのだろうと思う。しかし、私も含めて、入門・中級の講習会に来ているような、そうでない多くの人たちの場合は、純関数が登場した途端に、話についていけなくなることが多いように感じるのである。
Mathematica における純関数 "Pure Function" というのは名前(シンボル)を持たない関数で、ほかの関数への引数などとして、関数の内容を書いた一瞬だけ使われるものだ。もう少し違う呼び方をしてしまえば、つまりそれは「無名関数」だ。「無名」というところが重要で、名前がないから、使ったら最後もう二度と呼ぶ・使うことはできない、ということである。つまりは、「使い捨ての関数」だ。この「関数を使い捨てる」というところで、どうしても引っかかってしまう。値を入力するのであれば、あまり考えることなどせずに、数字キーを2・3回押せばすむ。だから、値に名前(シンボル)と付けずに、使い捨てにすることには慣れている。けれど、関数を書く場合には、(ハッカーでない私たちは)頭も多少使わざるをえない。すると、せっかく考えて・苦労して書いたのだから、名前をつけて、あとで呼んでまた使うことができるようにしたい、などと思ってしまうのである。使い捨ての「無名」ということと、苦労をともなう「関数」ということを、なかなか重ね合わせることができないのである。
そこで、自分なりの「純関数の存在価値・意義」を作ることで、その存在意義を納得したくて、純関数を使った例題を作ってみた。実は、それが前回の Spectrum Color Conversion を動かしているベース部分、「離散化を必要としない連続的なスペクトル演算・表示を扱うためのパッケージ」である。これは、無名関数(純関数)を使うための例題である。このパッケージを使うと、スペクトルを描くのに、
plotSpector[ (128 red[#] + 255 blue[#])& ];というような命令でスペクトルを描くことができる。これは「強度128の赤色と強度255の青色を足したスペクトル」を描けという命令なのだが、この中の
(128 red[#] + 255 blue[#])&という部分が、「強度128の赤色と強度255の青色を足したスペクトル」を表す無名関数だ。あるいは、
rgb=fitSpector[(D65[#]-128 cyan[#])&,red,green,blue]というのは、「シアン色が128載せられた色」を、赤色と青色と緑色で近似しろという命令であるが、この (D65[#] - 128 cyan[#])& というのも、「シアン色が128載せられた色」という無名関数である。こういう書き方をしてみると、スペクトルを示す「関数」ではあるが、見方によっては、スペクトルという「値」のようにも見えると思う。値のように見えることで、スペクトルを示す無名関数を引数として他の関数(命令)に渡すことへのアレルギーを低減してみようとしたのである。そして、(128 red[#] + 255 blue[#])& というようにあまり考えることなく直感的に無名関数を書くことができるようにすることで、その関数を使い捨てることへの違和感を減らそうとしてみた。さらに、こういった内容であれば、下手な名前をつけてしまうよりも、式そのままの方が内容・意味がわかりやすい、ということを実感してみようとしたのである。たとえば、(128 red[#] + 255 blue[#])& であれば、この式自体が「強度128の赤色と強度255の青色を足したスペクトル」という風に話しかけてくるように感じられ、下手に名前をつけてしまうよりは内容が見えることがわかると思う。
こんな例題を作ることで、無名関数アレルギーが低減した、と言いたいところなのだけれど、関数を使い捨てることには、やはりまだ慣れることができそうにない。関数を引数として渡すことは自然に感じられるようになっても、無名関数に名前をつけて、再度その関数を呼んでみたい気持ちはなかなか止められそうにない。名前をつけるより、その関数の中身をそのまま書いた方がわかりやすいとわかっていても、単純な名前をつけてしまいたくなる欲望はなかなか止められそうにない。
その理由を考えてみると、やはり、苦労をともなう「関数」を使い捨ての「無名」にしてしまう、ということに一因がある。そして、もう一つ、名前をつけることで、単純化して安心してしまいたくなる、ということがあるように思う。ほんの何文字かの関数であっても、その内容を自分の頭で考えるよりは、なにがしかの単純な言葉で表現された関数名を聞いて納得したくなることがあるように思う。
「吾輩は猫である」の第一章の最後、つまり、当初の読み切り短編小説「吾輩は猫である」はこのように結ばれる。
吾輩は御馳走も食わないから別段 肥りもしないが、まずまず健康でびっこにもならずにその日その日を暮している。鼠は決して取らない。おさんは未だに嫌いである。名前はまだつけてくれないが、欲をいっても際限がないから生涯この教師の家で無名の猫で終るつもりだ。「吾輩は猫である」を思い浮かべながら、無名関数について考えたせいか、それ以来、無名関数が「吾輩は~」と話しかけてくるような気がするようになった。無名関数を書くと、どこかで世界を眺めながら、「我が輩は青色と緑色を足した色である。名前はまだない」「名前はまだつけてくれないが、欲をいっても際限がないから生涯ここで無名で終るつもりだ」と無名関数が呟いているさまが目に浮かぶようになった。存在意義はあるけれど、無名のままの関数、そんなものを思い浮かべながら作ったのがSpectrum Color Conversion である。
2007-07-04[n年前へ]
■オカルトと「説明・制御への欲望」
MatLabで制御工学に浸っていると、「物理系の類似性」なんていう言葉が出てくる。電気系・力学系…全く異なる対象なのに、なぜか似通った関係・同じような描写がされるものは多い。それと同じように、全然違う分野の本を読んでいても、なぜか少しづつ重なることが書かれていることが頻繁にある。制御工学に浸かりながら思い浮かべたのは、こんな言葉だ。
科学と現代オカルトに共通するものは何か。それは原理への欲望とコントロール願望であろう。 「科学とオカルト」P.143 現代オカルトは科学の鏡である科学とオカルト(池田清彦 講談社学術文庫)」が書く「原理への欲望」と「制御への欲望」を言い換えるなら、それは「説明が欲しい・納得したい」という欲望と「望むような自分になりたい・世界を変えたい(制御したい)」という欲望だろう。少なくとも、原始の科学やオカルトは、「原理」と「制御」という欲望の下に、完全に同じものだったに違いない。
1入出力系システムで可制御行列が正則でなければ、可制御、すなわち、任意の状態に制御することはできない。
1入出力系システムで可観測行列行列が正則でなければ、可観測、すなわち、状態量を正確に知ることはできない。現在では、むしろ科学の方が原理・説明や制御において、「できないこと」を声高らかに謳うようになった。今では、「原理的にできないこと」が証明されることを面白く感じる人もきっと多いことだろう。
科学は、原理的に説明できない現象は説明できないままに放置せざるを得ない。それは科学の欠点ではなく最大の美点である。 「科学とオカルト」P.145 現代オカルトは科学の鏡であるとはいえ、「科学」という広い言葉より実社会にもう少し近い、工学としての科学という側面においては、やはり「できないこと」「制御できないこと」「説明できないこと」が、表だって語られることは少ないと思う。
オカルトは、科学では説明できない現象を説明すると称して、いとも簡単にこの禁欲を破ってしまう。 …一回性の出来事を説明できない科学に、頼りなさを感じている人々の一部は、こういったオカルトに引きつけられてゆくのであろう。 「科学とオカルト」P.145 現代オカルトは科学の鏡である科学を使って何かを把握・制御しようとする人の行動も、「科学は老化の原理を教えてくれても、人が生きる意味は教えてくれない」と思う人の行動も、それらの行動や言葉の原動力は、いずれも「説明と制御への欲望」であるという一点で、ピタリと重なり合うものなのかもしれない。
2007-07-06[n年前へ]
■「物語」と「市場経済」
現代は大衆民主主義と資本主義と科学技術の時代である。人々は原則平等という権利と引き替えに、細かい差異化過程に巻き込まれ序列化されることを余儀なくされる。「科学とオカルト(池田清彦 講談社学術文庫)」は科学という積み木と隣り合うオカルトという積み木の姿を描く。そして、それと同時にこの本が描くのは、科学だけでなく資本主義と大衆民主主義という積み木とも隣接するオカルトの姿でもある。
「科学とオカルト 」P.7 はじめに
本屋に置いてある雑誌や駅に置いてあるフリーペーパーを眺めてみれば、たくさんのファッション・スタイルや数限りないグルメスポットが掲載されている。そんなたくさんの選択肢から自分なりのものを選んで自分に振りかけてみても、他人と自分の違いは、スターバックスで注文するコーヒーかホットドッグのトッピング程度の違いしかないことだって多い。
宗教という大きな公共性も身分制という規範も存在しない現代では、自分が何者なのかということを教えてくれるものは何もない。唯一、最大の公共性であり科学は、そういう問いには原理的に答えることができない。元サッカー日本代表の中田英寿は「自分探しの旅」へと出かけてしまい、須藤元気は格闘技のリングから「スピリチュアルな世界」へと舞台を変えた。「僕って何」という問いかけをする「一見さんに対し」、ほとんど全てのものが明確な答えを与えることはしないように、科学が一見さんが抱えるその問いに答えることはない。
「科学とオカルト 」P.148 現代オカルトは科学の鏡である
お客様は神様です。 三波春夫「お客様は神様です」という言葉とともに、スーパーにはたくさんのものが並び、私たちは自分が持っているお金の範囲で自由に商品を選ぶことができる。現代社会は、お金を持っている限り有効の神様チケットを持った人で満ちあふれている。それと同時に、そんな神様たちは「選択」という価格の付けられたチケットを持ってはいるけれども、選択に迷いがちで自分を見つけられない存在でもある。
幸か不幸か、社会はこの現実社会にはないものを物語という形で流布する。「かけがえのない私」というのも、こういった物語の一つである。消費者が望むものを誰かが生産する。需要のあるところには、必ず供給が生まれる。科学が生産できないものを現代の消費者が望むなら、そこには、必ず別の供給者が現れる。それが自由市場主義で動く現代社会なのだろう。消費者という神様は欲しいものに応じ、時には科学を選び、時にオカルトを選ぶのである。お客様という神様たちと、そんな神様たちの欲望に応える供給者が作り出していくのが、21世紀の世界なのだろうか。
「科学とオカルト 」P.149 現代オカルトは科学の鏡である
(「科学とオカルト」を書いた)池田の著書は、自分で考えるとはどういうことか、結局はそれを教えてくれる本なのである。
養老孟司
2007-07-11[n年前へ]
■科学と経済学ともう一つ
(dekirukana9/engineerEconomics)2007-10-07[n年前へ]
■WEB API
WEB APIを作ってみようか、と考えながら朝のコンビニに行く。
「自らの欲望の重荷を、これからも背負っていく覚悟はあって?」高速なクライントPCが、非力なサーバPCに作業をさせるのは、ちょっと無理がある。「サーバ」とは言っても、多数のクライントPCからの命令を受取り処理するのには、かなり無理があるスペックだ。
「もちろんよ。それが私の選んだ生き方だから」だとしたら、やり方を知っているサーバPCが、上手くクライアントPCに処理をさせるような仕組みを作ることはできないのだろうか。
誰かが未来をつくってくれると思ったら大間違いです。ソース&バイナリ配布すれば、いいだけだろうか。けれど、それでは何だか単純で面白くない感じだ。