ようやく、マーク・ブキャナン著、「複雑な世界、単純な法則」を読了。読みやすく良い本だ。スモールワールドがあらゆる領域に存在していることをわかりやすくまとめてある。インターネットや河川の流域の構造がスモールワールドであるのはそれほどどうってことはないが、生態系自体がスモールワールドだったり、エイズや感染症の感染経路がスモールワールドだったりすることについては、スモールワールドの特性を理解することが人類にとって死活問題かもしれないと考えさせられた。この本はある意味で事例の繰り返しでもあるが、飽きないような工夫が随所にあるので最後まで読むことができた。べき乗則のところでは、フラクタル理論の話も出てくるし、理論物理学におけるランダウの相転移理論も一種のネットワークの理論であり、スモールワールドという考え方がもっと大きなネットワークに関する理論の一部であることを示唆しているのは大変興味深い(254ページ)。
このようなネットワークの理論が発展してきたのも、コンピュータによるシミュレーションが容易にできるようなってきたことが関連していると今更ながら思う。
『複雑な世界、単純な法則』マーク・ブキャナンジェフ・ホーキンス、サンドラ・ブレイクスリー著、伊藤文英訳、「考える脳 考えるコンピューター」、ランダムハウス講談社、2005年3月23日第1刷、269ページ、1900円。On Intelligenceの訳書である。
夕方、家内と比治山に花見に出掛けた。サティまで歩き、スカイウォークに抜けて、満開の桜を眺めながら広島市現代美術館の前を通って、西側の比治山神社のほうに下りる。夜桜見物を用意しているグループも多い。途中の豆匠ではジャズのライブをやっていて、塀越しに覗き込んだ。足を延ばして、川を渡って平和大通りに入る。広島ワシントンホテルの23階ガス燈で外界が夜景へ変化するのを眺めながら夕食。帰りに、中央通のフタバ図書で、ホーキンスの本を探す。家内から、「また脳とコンピュータ」と言われる(^^;)先日買ってきたのが、けいはんな社会的知能発生学研究会編、「知能の謎 認知発達ロボティクスの挑戦」、講談社B1461、2004年12月20日第1刷、273ページ、980円だからね。
『知能の謎 認知発達ロボティクスの挑戦』けいはんな社会的知能発生学研究会本サイトで取り扱う情報の中には、直接人名がキーワードになるような、繰り返して取り上げてきたテーマがある。気になる人々である。「立花隆」、「増井俊之」、「茂木健一郎」、「松岡正剛」各氏の現在を追いかける。いずれの方もインターネットとの関わりが深いので、インターネット上のリソースにリンクを張ることによって、メモを残せる。
今日は、松岡正剛さん。千夜千冊が千一夜(2004年12月26日)にブライアン・グリーンの「エレガントな宇宙」で終わったのだが、昨日久し振りに訪れてみると、1022夜、2005年4月8日、三島由紀夫「絹と明察」まで延びている。また、楽しみが続くということで、再開を喜びたい。
「エレガントな宇宙」に関する更新日記記事へのリンクをまとめておこう。更新日記検索(renewal_r.cgi)で記事を集めて、記事を表示させながら、FirefoxのCopy URL+エクステンションで、記事タイトルを選択して、Copy URL + SelectionでURLと選択した部分をクリップボードに送り、更新日記コンソールのマイ楽コピーでHTMLのリンクに変換出力して集め、TeraPadエディタ上の更新日記のHTMLにコピー、HTMLリスト化するためのdmlを付加して、dmlsio.plでHTMLリストに変換というのが一連の作業。書くと面倒そうだが、楽に処理できる。そうは言っても、一連の作業を一つのスクリプトにまとめることも可能だなあ。一つ一つの作業結果を確認して編集するので、そこまで自動化することもないかもしれないが。
『エレガントな宇宙』ブライアン・グリーンまだ、昨日買ってきたばかり。中沢新一の「チベットのモーツァルト」は20年以上前に買おうとして買いそびれていたもの。その頃は文学や哲学などから遠ざかりつつあったから。また、元の場所に戻りつつあるという気がする。「唯脳論」は養老先生の最近の論考の出発点になる本だし読んでみようと。
過去の記憶をまさぐりながら、「チベットのモーツァルト」を読みかけているのだが、瞑想のテクニックによって現実を変容させたり意識の深層領域に下降したりする訓練をコンピュータができるとは思えないと、最近の「考える脳 考えるコンピュータ」の内容を引きずりながら考えた。人間の意識の世界にはまだ人間でさえ未解明の領域があることを忘れていたと苦笑してしまった。
「チベットのモーツァルト」は奇妙な本で、「本の調律」から始まって、「孤独な鳥の条件 - カスタネダ論」、「チベットのモーツァルト - クリステヴァ論」の途中まで読んだところなのだが、フランス現代文学・哲学とチベット密教の修業の経験を統合する試みが描かれているように思える。あるいは数学や言語、物理学、哲学、文学の発生の原点、すなわち意識の生成の起源を描き出そうとしているように思える。クリステヴァやフィリップ・ソレルスなどのフランス現代文学の影響を強く受けている。現代といっても随分昔の現代かもしれないが・・・
私が読んでいるのは、講談社学術文庫、2003年4月10日第1刷で、元の書(せりか書房、1983年11月刊行)にはない学術文庫版まえがきと吉本隆明氏の解説が付いている。中沢新一氏自身はまえがきで、わざとか、「意識(心)の考古学」と読み違えているけど、吉本隆明氏は「精神(心)の考古学」と解説に書いている。この考古学という言い方はミシェル・フーコーの「知の考古学」を意識している。このような思索の具体的な応用が可能なのかどうか、ジェフ・ホーキンスの「考える脳 考えるコンピュータ」のような実体の思索にどのように結び付くのか、コンピュータでここ数年時折試みてきた分類のために単に出現する語の数を数えたり、語のつながりだけを解析するような方法では、元の文と対比して何かが新たに生まれるのは疑問だなあとか、いろいろと考えさせる。普遍文法のチョムスキーに戻るのかな。最近購入した、荻原裕子著、「脳にいどむ言語学」、岩波科学ライブラリー59、1998年2月23日第1刷(2004年10月5日第9刷)、128ページ、1100円、を読んでみよう。
同時代のフランスの作家で僕が好きなのは、ル・クレジオなんだけど、「物質的恍惚」(訳: 1970;原著: 1967)の「訳者(豊崎光一)のことば」に引用されているインタビューに「・・・重要なのは、書くものに対する自分の位置を決めることではなくて、書いているあいだボールペンを導いてゆくエネルギーをためしてみることなのです。人々が述べているのが自分たちの考えであるのか、それともその人々が明らかにしようと試みているのは隣人たちの考えであるのか、それはけっしてはっきりとはわかりません。そしてまさにそのことこそ、興味深い点なのです - 思考の、そして言語使用の、このような共有性こそ。」このような認識は、クリステヴァにしてもロラン・バルトにしても共通のように思える。同時期に現れた歴史的な認識である。言語がコミュニケーションをある程度の目的としているからには当然のことのようにも思えるし、「物質的恍惚」としての意識生成のメカニズムの結果なのかもしれない。
『物質的恍惚』ル・クレジオ[added: 2005-04-23 20:55]千夜千冊のRSSを引くと、偶然にも松岡正剛の千夜千冊『恐怖の権力』ジュリア・クリステヴァが最新の記事として出てきた。参考になるので付記しておこう。
チベットのモーツァルトもまだ読みかけだが、先に進もう。「脳にいどむ言語学」は薄っぺらだが、事実に裏付けられた衝撃的な本である。へーっ、ここまでわかっているのかと思う。失語症の言語理論からの検証、文法障害と遺伝との関係、チョムスキーの生成文法理論が仮定している普遍文法を言語活動から探る試みなどが紹介されている。萩原裕子著、「脳にいどむ言語学」、岩波科学ライブラリー59、1998年2月23日第1刷(2004年10月5日第9刷)、128ページ、1100円。養老孟司著、「唯脳論」、ちくま学芸文庫ヨ-5-1、1998年10月8日第1刷(2004年4月30日第12刷)、原著: 1989年9月25日(青土社)、278ページ、880円。意識の役割、言語の発生の章があり、多い図版も興味深く、読むのが楽しみだ。
『脳にいどむ言語学』萩原裕子日経サイエンス編、「養老孟司 ガクモンの壁」、日経ビジネス人文庫648、2003年8月1日第1刷(2003年8月18日第2刷)、332ページ、648円(原著: 養老孟司・学問の挌闘、1999年6月)。『私は実験室など、いまや持っていない。しかし自宅の部屋が、かつての大学の研究室よりも、ましな備品をそろえられるようになってきた。現役時代は百万円台の価格だった実体顕微鏡が、いまでは四分の一の値段で買える。バソコンのような文房具は、いうまでもない。最新の文献であれば、インターネットが十二分にカバーしてくれる。科学は日常化してきたのである。』(5ページ)日経サイエンスの1997-1999年に連載された「脳の見方、モノの見方」から14編が選ばれて収録されたもの。PCとインターネットで科学が日常化してきたことは間違いない。自宅でまさか解剖はできないだろうけど、簡単なシミュレーションなどは現実的なものになりつつある。1989年に書かれた「唯脳論」の10年後の進展を期待して読んでみよう。
『養老孟司 ガクモンの壁』日経サイエンス編千夜千冊を最近探索して、読んでみたいなと思った本二冊。第318夜、アンドレ・ルロワ=グーラン著、荒木亨訳、「身ぶりと言葉」、新潮社、昭和48年(1973)7月30日発行、413ページ、2500円。第854夜、ハーバート・A・サイモン著、稲葉元吉・吉原英樹訳、「システムの科学 The Science of the Artificial 第3版」、パーソナルメディア、1999年6月30日第3版第1刷(2003年10月20日第3版第3刷)、331ページ、2000円。
「システムの科学」は第3版がまだ新しいのですぐに購入可能だったが、「身ぶりと言葉」は古すぎて(1973年)、Amazonのマーケット・プレイスにも出ていない。広島県立図書館で蔵書検索しても所蔵無しなので、市の図書館も合わせた横断検索をしてみると一冊だけ広島市立中央図書館に蔵書されていることが判明。県立図書館でこちらに配本できるかと尋ねてみると、送料が有料になるので、市立の区図書館で頼んだほうがよいと言われた。帰りに市立南区図書館で、予約・リクエストカードを書いて提出、取り寄せたら電話で連絡してもらえる。直接、中央に行けないこともないが、駐車を考えないといけないし、面倒。連絡があったので、今朝、用事のついでに南区図書館に取りに行ってきた。ちょうど開館の9時に着いたのだが、もう利用者が入っていた。駐車券は2F事務室の受付の棚に置いてある機械に差し込んで利用確認を済ませておくこと。そうしないと駐車場から出れない。
「身ぶりと言葉」探しで、今回は図書館の知識のアーカイブとしての威力を目の当たりにした。大変ありがたいものだ。アーカイブは一種のタイムマシンであり、過去を取り戻すための重要な手段である。多かれ少なかれ、記録されたものへアクセスするためには、タイムマシンで過去に遡ることになるのだ。逆に未来へ行くタイムマシンはあなたの頭の中にある。想像力の中に。
「身ぶりと言葉」は松岡正剛氏絶賛の本なので期待していたが、まだパラパラ捲っているだけでも、おもしろそうである。「唯脳論」や「ガクモンの壁」とも密接な関連がありそうなので驚いている。第7章「記憶の解放」、第8章「身ぶりとプログラム」、第9章「ひろがる記憶」などの論考はすぐにでも読んでみたい。結局自分自身が匂いのする方向に関連のありそうな本を渉猟している結果なのだろう。
第318夜の記事に、第80夜のJ.G.バラードの「時の声」が引用されていて、それをきっかけに個人で所蔵しているバラードの本を引っ張り出して眺め始めた。バラードが一番好きな作家だった時期もあったぐらいなので、大体は集めていたのだが、「燃える世界」や「狂風世界」が見当たらない。その中で、バラードの翻訳としては遅いほうでおそらくハヤカワ文庫の「ハイ-ライズ」などと同時期ではと思うのだが、「残虐行為博覧会」は工作舎の発行であることに気がついた。松岡氏は工作舎の編集長時代があったようで、第80夜は工作舎の話から始まる。購入した当初はデザインや装丁が目新しいことが印象に残っているだけだ。ざっと読んだだけの記憶が残っている。この本の最後に、「鉱物的風景の告示」というバラードと松岡正剛氏の対談がある。この対談では、バラードの「時の声」と「結晶世界」が一番好きと告白しているが、同様の話が第80夜「時の声」に出てくる。第80夜のページには、バラードのサインがある「時の声」の中表紙の写真がある。
蔵書リストとして、バラードの本も含めて整理してみよう。背表紙を使うとどうなるか試してみよう。
一冊一冊を分離し、マウスが上に来ると表紙画像が表示されるようにしてみた。
テスト的ではあるが、Vookshelfのページを作成した。背表紙が見えないと本があるのさえ忘れてしまうという問題点を解消する環境を作り出すのが一つの目的である。もう一つはJavascript+HTMLでどのような表現の可能性があるのか試行錯誤することである。Perl Desktop CGI + Javascript + HTMLという仕組みを基本的に使うことになるだろう。もっと複雑なリンク構造を一貫したインターフェースで表現したいのだが、・・・さらには、GraphVizやデータベースとの連動についても考えることが野心的な目的の一つである。乗り心地の良いタイムマシンが製作できるか(^^;)
txt2graph.plを見つけたお陰で、いよいよGraphVizがおもしろくなってきた。Perl5.8も使い道が見つかった。SVGはXMLであり、文字コードはUTF-8が前提である。Perl5.8もUTF-8が前提であれば、本来の使い方になるわけで、効率よく、モジュールの動作を心配せずに使えるだろう。UTF-8データとSVG出力と高性能なSVG Viewerによって、WinGraphVizは出番がなくなってしまった。
GraphVizもブラックボックスのままでは意味がないので、グラフ理論をまじめに勉強しよう。実はスモールワールドの関連で、グラフ理論を勉強しようと思っていたところで、二重に動機付けができたわけだ。先週の土曜日にエリエールのジュンク堂で、R.ディーステル著、根上生也・太田克弘訳、「グラフ理論」、シュプリンガー・フェアラーク東京、2000年10月12日初版(2004年4月30日初版第4刷)、383ページ、4200円を購入。グラフ理論の最新の動向がわかると思ったのだが、純粋数学の視点から書かれているので、もう少し他の本も読んでみようと日曜日に広島県立図書館を探した。
『グラフ理論』R.ディーステル落合豊行著、「グラフ理論入門 平面グラフへの応用」日評数学選書、日本評論社、2004年2月20日第1版第1刷、186ページ、2700円。新しいだけあって、GoogleのPageRankの計算の仕方をグラフ理論で解説している。もう一冊は、R.J.ウィルソン、J.J.ワトキンス共著、大石泰彦訳、「グラフ理論へのアプローチ」、日本評論社、1997年9月10日第1版第1刷、409ページ、6500円。こちらは少し古いが、応用についての解説があるので参考になるだろう。タイトルにはグラフ理論という言葉はないが、「グラフ理論」の訳者の根上生也著、「離散構造」情報数学講座3、共立出版、1993年9月20日初版第1刷、222ページ、2800円もグラフ理論の本だ。こちらもゲットしてきた。
『グラフ理論へのアプローチ』R.J.ウィルソン、J.J.ワトキンススラッシュドット ジャパン | VaraTerm がオープンソース化ネタ。
Poderosaのおもしろいのは、ローカルのCygwinのシェルに接続できること。エンコーディングにUTF-8が使えるので、CygwinのシェルをUTF-8のコンソールとして使うことが可能になる。これは私の特殊な関心に過ぎないが、大変興味深いターミナルエミュレータである。
txt2graph.plを日本語向けに改造している。txt2graph.plは隣り合う二つの語をクラスタとして考えるが、元のスクリプトは語でない文字は空白に置換することになっていて、前文末と文頭の語もつながりとして捉えてしまう。これも語のつながりを考える場合に適切とは考えられない。文の途中にある句点の取り扱いをどうするか、すなわち複文の取り扱いや代名詞の取り扱い、各種の括弧の中の文の取り扱い等、思いつく問題はいろいろとある。
ホーキンスの「考える脳 考えるコンピュータ」を読んでいると、スモールワールドの話との結びつきはあるのだろうかと、ふと思ってしまう。まだ、88ページあたりをウロウロしているので、核心に触れるのはもう少し先だろう。
AJAXに注目--グーグルが最新ウェブアプリ開発に選んだ「旧技術」 - CNET Japanネタ。実際のところ、デスクトップならいざ知らず、Webではブラウザが標準でサポートしていない技術は使えない。あるものを使おうというのが当然の選択である。
PDF + Flash = ? とでも言った方がわかりやすいかもしれない。現在のPDFやFlashを見る限り、それらが融合するようなアプリケーションではないので、アドビとマクロメディアの合併で短期的な成果が出るとは思えない。Webにおけるビジュアルな表現力で最も大きな力を持つのは実質的にFlashだが、標準という意味ではSVGが今後の方向性であるというのが一般的な理解であったろうと思う。もう一つの大きな勢力はJavaなわけだけど、Web Applications(HTML+Javascript)も現実的な解を追求するという意味で重要な動きである。
ユーザーとしては標準の技術であり、かつ存在する技術を使うことになる。特定のプラットフォームでしか動かない技術は実質的に使えない。SVGでさえ、現状では実験的にしか使えない。Firefox 1.1ではSVGをサポートするようなので、今後のW3C標準の継続的拡大サポートを期待したい。
もっとも、MicrosoftはAvalonを使う。テキストであれば変換すれば済むわけだけど、さてWebで標準化されていないものを使うのか。デスクトップでは問題ないが。IE 7.0はAvalonをサポートするのだろうか・・・
ワークステーションの復興なるか--「個人用クラスタ」システム登場へ - CNET Japanネタの続き、米で96プロセッサ搭載のワークステーション登場--メモリも192Gバイト - CNET Japanネタ。
単一のプロセッサの能力を向上させるよりもクラスタのほうが手っ取り早く性能を上げることができる。本当の意味で個人のデスクトップに載るのはいつだろうか。という意味は、今のマシン並みに安くなるのはいつかということだけど、原理的にはそう安くなりそうもないし、いまより使い方は複雑になるだろう。新しいテクノロジーが登場するチャンスではある。まずはCellのようなマルチコアCPUのシステムがやってくるのだろうけど、性能的にはどうなるのだろう。OSはどうなるのか。コスト的にはこちらのほうが有利だが。
ネットスケープの創業メンバーら、TivoとBitTorrentを融合 - CNET Japanネタ。マーク・アンドリーセンが帰ってきたというのがニュース。
[added: 2005-04-29]
3.5インチ1枚で1TBのHDDを考える時代になってきた。世界が手のひらにのっかるようになる。これは何を意味するのだろう。
・・・、原子が生まれ、分子が生まれ、高分子が生まれ、単細胞が生まれ、多細胞生物が生まれ、そして、そして人間が生まれた。そして、社会が生まれ、インターネットが生まれ、・・・
気温が急上昇。昨日の帰宅時の定点観測は19℃を示した。桜も急に満開。今日は花見日和だろう。日米の技術者 夢の大きさに格差 日経エレクトロニクス-Tech-On!ネタ。昨日の「NIKKEI ELECTRONICS WIRE SERVICE 2005年4月8日号 no.1862」の記事からジャンプ。On Intelligenceの話題。
「技術者よ大志を抱け」のNEネタの一環でもあるわけだけど、大切なこと。インターネットとパーソナルコンピュータのお陰で、望めば、低コストで時間の制約もなく、膨大で良質な情報を個人で入手することが可能になった。10年前には想像もできなかったことである。大志を抱くことはより容易になったと思う。しかし、勉強ができる環境は充実したとしても、夢につながるような意味のあるアイデアを思いつくのは、そう簡単ではないのが現実だろう。
記事に関連して、増井さんのサイトを久しぶりに探索。本棚.orgはちょうど動いていなかったが、蔵書リストをお互いに公開して、絶版になって図書館や古本でも入手できないような本をお互いに貸し出しするのもおもしろいアイデアかも。「実践実用Perl」の企画時に引用文献として蔵書をリストアップしたのや、更新日記の蔵書目録から書籍データを抽出もできるが、パーソナルな本棚としては、常に本の背表紙が仮想的に見えるような仕組みを作れればおもしろいと考えている。背表紙が見えない本は、脳を刺激しないからである。二段、三段と奥に所蔵している本を見えるようにしたい(^^;)増井さんのBibWikiも発想を刺激する。
娘との通信用にIP電話を導入するために、CATVの回線をBフレッツへ変更。今日は疲れた。フレッツの工事はしてくれたのだが、帰宅すると結局、@niftyとのフレッツ接続は何もできていないし、当然、VoIPの設定はできていない。娘のぶんも合わせて、@niftyからフリーダイアルで申し込んだのだけど、新しいIDの連絡も問い合わせるまではなかったし、@niftyもNTTもとにかく説明が悪い。ユーザーが何をしなくてはならないかをキチンと説明してほしい。説明しないのは、無料の設定のための派遣をしたくないためと勘ぐられても仕方がないと思う。新しいIDについては@niftyにメール連絡を入れて2回目で解決したが、何を伝えれば解決するのか実験するようなものだ。メールを入れるたびに担当が代わるのもどうかと思う。受付(@nifty)、工事のコンサルティング(NTT?)、問い合わせ対応(@nifty)そのものもデータベースをもとにした分業、工事(NTT?)、すべては分業で、その間の関係は極めて希薄だ。ユーザーが必死になって結び合わせないとつながらない。
あなたが、Bフレッツ導入予定で、自分で設定をするつもりなら、よくNTTと@niftyのサイトを調べておくこと。VoIPアダプタが届いたら、取説等は熟読しておくこと。ブロードバンド・ルーターを当然併用することになるので、その取説もPPPoEの設定の部分を調べておこう。そしてあなたが古いNIFTY SERVEユーザーで@nifty.ne.jpが使えたとしても、フレッツで接続する場合のIDはID@nifty.comとすること。ログインIDと違うので注意。何かあったときのためにフレッツの前の接続手段もフレッツが開通するまでは残しておくほうが安全である。インターネットに接続できないと何も調べることができない。今回の工事では、CATVの回線も活かしておいてくれたので助かった。
何はともあれ開通。IP電話もつながった。CATVは公称ベストエフォート20Mbpsで実効5Mbpsだったが、@nifty光 with フレッツ(ファミリー100)は100Mbps共用で、実効20Mbps程度。思ったより遅い(;_;)フレッツの計測サイトでは70Mbps出ていたのに。5Mbpsも20Mbpsも体感スピードはあまり変わらない。おそらくダウンロードは速くなるのだろうけど。
ライブドア、西武問題で見えてきた日本の企業を蝕む新たな闇 - nikkeibp.jp - 立花隆の「メディア ソシオ-ポリティクス」ネタ。へーっ、そうなのというしかない。おもしろいと言えばおもしろいけど、怖いといえば怖いかも・・・
昔から、Macのユーザーであったことはないのだが、その物語は「スカリー」、「エデンの西」、「スティーブ・ジョブス パーソナル・コンピュータを創った男」で、何度か読んできた。ここで、もう一つの物語が聞けるかもしれない。
「考える脳 考えるコンピュータ」読了。脳の新皮質の構造についてかなり具体的なイメージが示され、解剖学的には6層の皮質が柱状構造を成して並んでいるのだそうだ。つい最近、IBMの研究者が脳のミニ円柱の持つアルゴリズムを考えたというのと同じような話である。脳が100ステップぐらいで答えを出すのは、記憶から近い答えを引き出すからだそうだ。コンピュータなら数千ステップか数百万ステップのプログラムになるのかどうかは知らない。脳は刺激をパターンに変換し、パターンを記憶から探し出す仕組みを持っている。こう考えると、パターンを入力して、記憶から同じようなパターンの部分を抽出し、その記憶につながっている記憶を芋ずる式に引き出していくことが思考であり、知能、すなわち予測につながるのかもしれない。
正規表現によるパターンマッチングを使えば、テキストから特定のパターン部位を抽出するのは容易なことである。Perlなどのプログラムのステップ数が少ないのは、主にプログラムでパターンマッチングを使うからであり、これは正に人工知能そのものではと思ったりしている。最近はバイオインフォマティクスへの応用も盛んなようだが、パターンマッチングの有用性を示すものだろう。脳においてもパターンマッチングは重要なのだ。
脳の新皮質による記憶と記憶による連想を使った予測に関するホーキンスの理論・仮説は、解剖学的な最近の知見による裏づけと相まって、現実的な記憶や思考に関する経験と直感によく合うことから、それなりに説得力のあるものだと思った。記憶を知識データベースと考えることができるということは言うまでもないことだが、これをコンピュータ上に実現することができるのだろうか。テキストデータベースからパターンマッチで連想的に関係するテキストを引き出すことは現在でも可能である。マッチした部分にはリンクを張る。これはすべてを自動化はしていないが、更新日記でやっていることでもある。これは一種の記憶であると言えないだろうか。人間の記憶はあやふやなもので、それほど大量に明確には覚えていられないような気がする。外化した記憶との相互作用で記憶を強化しているのだと思う。そのために言語があり、話すことによって記憶を共有し、書くことによって記憶を記録するのである。
記憶をコンピュータ上に実現できるかということから、少し論点が変わってきたが、Macの連想からハイパーカードを思い出し、さらにはPython Cardを、Perl Cardの話題を思い出し、更新日記の記事からインターネットへ漕ぎ出すというように、人間の記憶は外化された記憶と相互作用することによって連想するのである。従って、記憶内のネットワークだけを探ってもすべてを復元することは不可能な可能性がある。思考は脳が置かれている環境に依存するのである。この観点から、知識の組織化は考える必要がある。コンピュータ上に組織化される知識は自己完結するのではなくて、人間との相互作用を考える必要がある。
千夜千冊記事のRSS化スクリプトを書いたのをきっかけに、最近の記事からいろいろと読んでいる。松岡正剛の千夜千冊『仁斎・徂徠・宣長』吉川幸次郎の最初に「ゆくりなく」という言葉があって、意味がわからなかった。意味がわからなくて国語辞典を引いたことはここ少なくとも10年はまず記憶にないのだが、久しぶりに国語辞典(岩波第三版)を引いた。『文語形容詞「ゆくりなし」の連用形から』との解説があり、『思いがけず、偶然に』という意である。人間が一生に読める本の数はおそらくいくらがんばっても5000冊程度だと思う。ゆくりなくだけではないだろうと思うが、1000冊以上の本について、これだけ深い感想を述べることができるのは素晴らしいことである。その一冊一冊に引用される本の数を合わせると5000冊程度にはなるのではないかと思われる。この千夜千冊を解析してみると大変おもしろいかもしれないと思うこの頃である。松岡正剛氏の脳の回路が浮かび上がるかもしれない。
【千夜通信】senya-communicationには【12】ZENetic Computerの衝撃のような発想もある。脳の持つ仕組みには単なる機械とは異なる幽玄の味わいがあるというべきかもしれない。効率の追求ではない、このような遊びのあるインターフェースには一度触ってみたいと思うけど、広島現代美術館で展示してくれれば有難いのだが。
見つかっていなかった二つの画像ファイルの記事の内容から、Vine Linuxの関係だと判明。Vine Linux on Vaioを起動。gFTPを起動して、@niftyのFTPサイトに接続するように設定した。目的のファイルはLocalのディレクトリに見つかった(^^;)人間の注意力や記憶なんて頼りにならないものだ。最近記憶力が衰えた感じがするのだが、年のせいだけではないかもしれない。PCやゲーム機、テレビなどを常用することによって、大脳皮質のニューロンのリンク構造自体が変質している可能性だってあるだろう。外部の記憶への依存度が高まっているかもしれない。CNET Japanに米国でPC無使用週間実施の記事が出ていたが、それもいいことだよね。
「チベットのモーツァルト」が千夜千冊にピックアップされていないのはおかしいなと思って調べると、「対称性人類学」が中沢新一氏の著書として取り上げられていた。その中に「チベットのモーツァルト」も引用されていた。mirror_site.pl(「実践実用Perl」)を調整して、記事内部を探索するために千夜千冊の記事をミラーしてみた。相対パスではなく、スキーム-ホストを除いたパスで記事がリンクされているので、元のままのmirror_site.plではうまく動かない。そのほかにもいろいろと問題が判明(^^;)
日記を読んでいると、もう一つぐらい見つからない画像ファイルが出てくる可能性がありそうだが、面倒だからこれぐらいにしておこうという「厳密」かつ「アバウト(about)」な自分を見出す。そのうち、『もう一つの「最後の」探し物』という日記を書くかもしれない。
プログラミング関係のサイトで、なぜ、哲学や文学なのか。あるいは芸術なのか。数学や物理学は数字、数学を基盤とする。哲学や文学は言語を基盤とする。芸術は時空間を基盤とする。プログラミングの目的が知的生産の技術である以上、必要とする認識は多岐に渡るものになる。知的生産を考える場合、「人間の意識」を意識せざるを得ないのである。
「チベットのモーツァルト」、極楽論からの引用(114ページ)、『フッサールが「幾何学の起源」でしめしてみせたように、人間の空間直感の能力は「言語にむすびつく論理の働き」に深く根ざしている。空間直感の能力は、だから言語の持つ論理化し象徴化する機能とまったく同じプロセスをたどって同時に形成されてくることになる。』と「考える脳 考えるコンピュータ」のマウントキャッスルの発見からの引用(61ページ)、『1978年、「大脳機能の構成原理」と題した論文で、マウントキャッスルは新皮質の見た目と構造がきわめて均質なことを指摘した。聴覚と触覚を処理する領域はよく似ていて、筋肉を動かす運動野も、言語をつかさどるブローカ野も、新皮質のあらゆるほかの部分も、実質的に見た目が変わらない。さらに、これらの領域がすべて同じに見えることから、基本的な処理も同じなのではないかという仮説が提示された。つまり、新皮質が実行するあらゆる処理には、同一の計算手段が使われているということだ。』を比較してみよう。フッサールの「幾何学の起源」手稿は1936年に書かれたのだが、マウントキャッスルの発見と仮説以前に哲学者がなぜそのようなことを考え付いたのか大変興味深い。すべては通底している。
『チベットのモーツァルト』中沢新一[added: 2005-04-24 22:15] 確認のために広島県立図書館から、エドムント・フッサール著、ジャック・デリダ序説、田島節夫、矢島忠夫、鈴木修一訳、「幾何学の起源」、青土社、1992年7月24日第1刷、320ページ、2200円を借りてきた。染みが入ったり、小さな虫の死骸が押しつぶされていたりと、歴史を感じさせるが。302ページ、『ところでなによりも重要なことは、つぎのような洞察をきわだたせ確定すべきことである。すなわち、理念化のさいに、空間時間的形態の領域の必当然的に普遍的な内実、あらゆる仮構的変更において不変な内実が考察されるかぎりでのみ、あらゆる未来と来たるべきあらゆる人間世代にとって追理解の可能な、したがって伝承の可能な、すなわち同一の相互主観的な意味で追産出することの可能な理念的形象が生まれうるのである。』これがフッサールの言う「幾何学の起源」である。「チベットのモーツァルト」における要約のもとになる部分を探してみたが、要約としては少し言い過ぎのような気がする。引用するとすれば、265ページ、『ピタゴラスの定理も、幾何学の全体も、いかにしばしば、そればかりかいかなる言語で表現されようとも、ただ一度しか存在しない。それはユークリッドの「原論」においても、すべてのその「翻訳」においてもまさに同一のものである。さらにまた、あらゆる国語において、最初の口述と筆記以来、無数の口頭による発現ないしは文書による記録Dokumentierungやその他の記録のなかで、何回感性的に表出されようと、それは同一のものである。感性的表出は、あらゆる物体的出来事ないしそのものとして物体化されているすべてのものと同じように、空間時間的固体化を世界のなかにもっている。しかしここに「理念的対象性」と呼ばれる精神的形象自体はそうではない。この精神的形象といえども、やはりあるしかたでこの世界のうちに存在してはいるが、それはただこの二重の層をもつ反復のおかげであり、最終的には感性的に物体化する反復によるのである。と言うのも、言語それ自身もまた、諸々の単語、文章、言説などへのそのあらゆる特殊化において、文法的な見方をすれば容易に見てとれるように、徹底して理念的対象性から築きあげられているからである。』である。が、言語による精神的形象からの感性的表出が空間時間的形態としての幾何学であるということであろう。人間の空間直感の能力まで「言語の持つ論理化し象徴化する機能とまったく同じプロセスをたどって同時に形成されてくることになる」とは読めない気がする。マウントキャッスルの仮説との類似性をここに読み取るのは無理がある。これはチベット密教行者としての中沢仮説として了解するほうがよい。「チベットのモーツァルト」の発刊(1983)はマウントキャッスルの仮説の発表(1978)後であることも留意しておかなくてはならない。[revised: 2005-05-02]
桜の花は山の中にはまだ残っているようだが、平地ではとっくの昔に葉桜になっている。更新日記のタイトル行の背景色は桜の咲くのに合わせて変えたホットピンクのままで、少し場違いな雰囲気を醸し出している。帰宅時の気温は18℃。
なんでもプロジェクトにすればいいってものじゃないけど、仮想本棚プロジェクトをスタートしよう。"Virtual Bookshelf Project"を略して、"Vookshelf Project"とする。千夜千冊や本棚.orgなどと相互作用して、本棚を自己増殖させることを目的とする。書物が媒介して世界を再構築するという遠大な目的を背後に隠している。って、単にリンクですべてをつないでみようというだけなんだけど・・・
4月の更新日記関連の書籍の表紙スキャンデータを5件追加した。
さて、さて、さて。五月連休突入初日。唯脳論を読んでいる。唯脳論という言葉が、唯物論や唯心論に対置あるいは並置される言葉だということにようやく気付く。意識的活動が脳の産物であるという当たり前のことを述べているに過ぎないということだが、この本は是非読むべき本である。少し気持ちが悪くなることもあるが、コンピュータ(正確には計算機)が脳の延長であることが既に述べられている(80ページ)。脳の実体を知った上で、考えるコンピュータを考える人間についても考えるとよいだろう。
脳の神経細胞から出ているシナプスの数は、大きな細胞では数千にも及び、興奮性と抑制性の二通りがある。グラフ理論のアナロジーで考えると、神経細胞が頂点(Vertex)であり、シナプスが辺(edge)である。興奮性と抑制性は符号付グラフで表すとよいのかもしれない。樹状突起につながるシナプスは他の神経細胞からの入力であり、軸索から分岐して伸びるシナプスは他の神経細胞への出力である。この方向性はdirected graphで表すのだろうけど、符号付のdirected graphっていうのは見たことがない。シナプスは固定的なものでなくて変化するらしい(シナプスの可塑性と言われるもの)。『脳は、神経細胞という単位から見ると、こんなものである。むろん、詳細を尋ねれば、まだまだ際限はない。一つだけ強調したいことがある。それは、脳は複雑怪奇な構造をしているが、ここの神経細胞の機能からすれば、複雑ではないことである。神経細胞が連結しあい、興奮するか、抑制される。それだけである。それでどうして、記憶や、心理や、計算や、夢が生じるのか、複雑怪奇なのは、そこである。』(69ページ)
一昨日だったか、夏日26℃。夏を先取りした季節のなかで、五月連休を迎えた。JR福知山線脱線事故の連日の報道の中、歓迎会や懇親会が続いた。思い起こすと、この話題は一度も出なかった。みんな自分のことで忙しいが、事故はどこでも起こる可能性がある。起こりえる事故はいつかは起こるものである、壊れる可能性のあるものはいつかは壊れるように。線路の状況によって危険な速度で走行できないようにすることができれば安全性は確保されるのだろうが、原理的に無理な運行ダイヤをまず考え直す必要があるだろう。世界に誇る分単位の正確な運行システムも事故が起こっては価値がなくなる。乗客の乗降時に要する時間を正確に制御はできないしと思う。ある程度の余裕がシステムには必要である。伸びるゴムも引っ張り続ければいつかは切れる。
五月連休ならではのペースで「唯脳論」を読了。大体本を読むペースというのは1時間あたり文庫本100ページである。278ページならば、集中すれば3時間程度で読めるはずである。大脳皮質が新皮質と古皮質に分かれ、人間は新皮質の比率が90%に及ぶ。新皮質の構造は6層構造をしており、見方によってはハチの巣状と見ることも可能で、コラム構造といわれる皮質を縦貫する小柱構造をなす。機能的には、これを情報処理の素子と見なすことができる。(160ページ)というように、ホーキンスの「考える脳 考えるコンピューター」に書いてあるのと同じ話が既に出ている。しかし、これは大雑把な議論であり、神経細胞とそれに付着するシナプスの集団として捉えると気が遠くなるような複雑な話になる。今のPCではこのグラフを書くのはおそらく無理だろう。
新皮質の厚みを2mmとして計算すると、神経細胞数は440億、シナプスの数は440兆個となる。2000年代の極超集積回路でも素子数は1000万から数億個程度だそうだし、一つの素子の持つ配線数が1万という複雑さはまた別の話である。1万ものシナプスを持つということは神経細胞自身も複雑な構造と機能を持っている可能性があるのではと思う。神経細胞は単に興奮したりしなかったりするだけなのだろうか。
『だから、計算機を使って脳を作ろうというのは、実際の進化からすれば、話の向きが逆方向だと私は考えている。逆方向だからそれはできない、と言うのではない。計算機という脳の進化は、われわれの脳の一部の、これからの進化なのであって、原理的に脳を代替するものではない。』(82ページ)気持ちの悪い部分もあったが、大変おもしろい本である。
HICATに置いていた49件の画像ファイルのうち、見当たらないものが6件。今年になってPCを変えたし、はて。Google Desktop Searchを使うと見つからなかったファイルを2件あっという間に発見。検索結果から、残りの4件はこのPC(Dell3)上にはないと確信できる。Dell2にGoogle Desktop Searchをインストールして走らそう。そうすれば見つかるはずだ。
昨日の続き。旧マシンにDesktop Searchをインストールして見つかった画像は、1件のみ。残りはLinuxマシンで作ったデータみたいだ。LinuxマシンはおそらくPS2Linuxかもしれないが、記憶が定かでない。画像ファイル名でGoogle Web Searchで検索すると当然とはいえ、ヒットする。キャッシュを開くと画像も再現される。OK。右クリックで「画像を名前を付けて保存」。預けていた画像ファイルを回収といった感じ。Googleさん、ありがとう。
OpenOffice.orgにこのような問題があるとは知らなかった。GNU Compiler for Javaなんていうのもおもしろい。へーっ、そこまでやるの、でも必然かと・・・GNUはほとんどあらゆるすべてのものをフリーにしようと飽くなき追求を続けている。ほとんど感動してしまう。
スティーブ・ジョブスはまだ10年間はWindowsの支配が続くと言っているようだが、確かに今のところLinuxが取って代わる存在になるとは考えにくい。しかし、MS Officeが10年持つかどうかは定かでない。OpenOfficeの登場がどこまで影響を与えるかだ。実は「実践実用Perl」はOpenOfficeのWriterを使って執筆したのだが、400ページぐらいの分量でもどうってことはなかったし、PDFへの変換機能は重宝した。ImpressはまだPowerPointとの互換性が不十分なので、PowerPointで使う場合には一度読み込んで修正する必要がある。しかし、多少の手直しで済むので、自宅ではImpress、会社ではPowerPointというのは十分に有り得る選択肢である。MS Officeが1万円ぐらいなら、購入して継続して使う可能性はあると思うが、5万円もすると個人ではきつい。それぐらいの開発コストを投じているとすれば、もう少しコストダウンを考えたほうがよいと思う。
あらゆる形式のデータが、Webのお蔭でテキストに標準化されつつあり、すべてのアプリケーションは広い意味においてテキストのエディタであり、ブラウザである。Webの表現力が増せば、Officeの存在価値はさらに低下する可能性がある。スクリプタとすれば、エディタとWebブラウザとHTTPサーバーがあれば、すべての表現が可能になるという理想郷を思い描ける時代になりつつある。むしろ、こちらの道に未来があるように思うのだが・・・
GNUで開発されているアプリケーションを調べていたら、おもしろそうなPerlスクリプトを見つけた。Andreas Romeyke氏のtxt2graph.plである。Graphvizと一緒に使って、テキストの構造と依存性を視覚化するツールである。ドキュメントには原理的なものは書かれていないので、動作の詳細を理解するにはスクリプトを読む必要があるだろう。仕様の詳細は、--help オプションで知ることができる。
インストール: まず、GraphvizをATTのインストーラ付きパッケージを使ってインストールしておく。Perl関連では、GraphVizモジュールをインストールしておく必要があり、さらにその前にIPC-Runモジュールが必要だ。CPANからそれぞれダウンロードして、解凍し、Perl5.8を使って、makefileを作り、nmake;nmake test;nmake installしよう。Jperl/Perl5.005_03ではうまくmakeできない。IPC-Runモジュールは5.006以上を必要とするからである。
テスト: グラフを作成してみよう。まず、txt2graph.plを使って、英文テキストを入力して、dotファイルを出力する。
type text.txt | perl txt2graph.pl --undirect > text.dot
japan.linux.com | エンタープライズ用にも使われ始めたPython記事の原文をコピーし、テキストとして保存して試した。txt2graph.plは、直接、pngファイルを生成するオプションを持っているが、生成したファイルはPhotoshopやペイントの画像処理ソフトではエラーになるために読み込めない。最終的にはSJIS日本語を使いたいから、いずれにせよWinGraphvizを使うことになるので、txt2graph.plのオプションをdotファイルを出力するように変更して、実行する。得られたdotファイルを基に、pngファイルを生成するWinGraphviz/Perlスクリプトを書いて実行する。生成されたpngファイルは1MB以上あるので、そのほんの一部を縮小して掲載する。素晴らしいの一言。
txt2graph.pl/WinGraphvizによるPython関連ニュース記事の無向グラフ ("Python"から、"inventor" → "Guido" → ""van" → "Rossum"とグラフがつながっているのが見て取れる。)txt2graph.plの他のオプションを試してみよう。svgの出力がある。出力して、IEに読み込ませようとすると大きすぎるためか、ほんの一部しか表示できない。Firefoxでは全体が縮小して表示される。Firefoxの画像を縮小して載せておこう。
txt2graph.plのsvg出力① (--undirect --layout=twopi オプション出力)今後: txt2graph.plは、ATT配布のGraphVizとGraphViz.pmを使うことが前提のASCIIテキスト処理ツールなので、WinGraphvizでSJIS日本語を処理するのには使えない。WinGraphviz用のtxt2graph.plが必要である。しばらく頭を捻ってみよう。
txt2graph.plをちょっと改造して、今月の更新日記をMeCabで分かち書きし、UTF-8に変換して入力してみた。SVG出力をBatikで表示したイメージの一部。
更新日記をグラフ化「松岡正剛の千夜千冊」のページを題材にRSSエージェントを作ってみよう。「千 夜 千 冊 BACK NUMBER」以下の部分から指定数の最新記事のタイトルとリンクを読み取って、RSSファイルに変換して出力する。このページはShift_JISで書かれているので、UTF-8に変換してデータは出力する。RSSファイルへの変換は、XML::RSSモジュールに任せている。夜の数から、「第何夜」という文字列を作って、titleに入れ、書名をdescriptionに入れている。記事のURLはパス名を取得して、スキームとホスト名を補完し、linkとしている。
使い方は、ローカルサーバーのcgiとして動かすとよいだろう。例えば、「実践実用Perl」のシステムであれば、http://localhost/cgi-bin/awakening/senya2rss.cgi?lastnights=20 とすれば、最新20件の記事のRSS出力が得られる。「お気に入り」やブックマークのRSSフォルダに登録することによって、rss2html.cgiに渡しても良いし、自分の好きなRSSリーダーに登録しても良い(FirefoxのSageというRSSリーダーのエクステンションでは、localhostは127.0.0.1と書かないとURLとして認められないので注意すること)。jperlスクリプトを掲載しておく。自作のRSSエージェントを作成する場合の参考にしていただきたい。
require 'cgi-lib.pl'; use LWP::Simple; use XML::RSS; use Unicode::Japanese; $s = Unicode::Japanese->new(); &ReadParse(*in); $baseurl = "http://www.isis.ne.jp/mnn/senya/"; $channel_title = "松岡正剛の千夜千冊"; $channel_description = "千冊の「本」で語られた世界の知の放埓な記憶"; $max = $in{'lastnights'}; print "Content-type: text/xml\n\n"; $rss = new XML::RSS (version => '1.0'); my $doc = get($baseurl); @content = split(/\n+/, $doc); foreach $line (@content){ if($line =~ /千 夜 千 冊 BACK NUMBER/){ $sw = 1; } if($sw == 1 && $line =~ /<p class="mover"><font color="#000000"><a href="\/mnn\/senya\/senya(\d*)\.html">(\d+)<\/a><\/font><\/p>/){ $htmlnum = $1; $nightnum = $2; $getnightcount++; next; } if($sw == 1 && $getnightcount <= $max && $line =~ /<p class="mover"><font color="#000000">(.+?)<\/font><\/p>/){ $title = $1; $rss->add_item( title => $s->set("第${nightnum}夜", 'sjis')->utf8, link => $baseurl . "senya" . $htmlnum . ".html", description => $s->set($title, 'sjis')->utf8, ); } last if $getnightcount > $max; } $rss->channel( title => $s->set($channel_title, 'sjis')->utf8, link => $baseurl, description => $s->set(&entities_encode($channel_description),'sjis')->utf8, language => 'ja' ); print $rss->as_string; sub entities_encode{ local($str) = @_; $str =~ s/&/&/g; $str =~ s/</</g; $str =~ s/>/>/g; $str =~ s/"/"/g; return $str; }
rss(_ff)*.cgiの出力から、rss2html.cgiでsenya2rss.cgiのRSS出力を受け取り、HTMLの表に変換して出力した例を載せておく。
「松岡正剛の千夜千冊」のRSSエージェント出力をRSSリーダーで読む千夜千冊の第800夜まではトップページから直接アクセスできないので、検索用スクリプトを書いてみた。
千夜千冊の800夜までは、javascriptで100夜ずつまとめて別ウインドウで表示されるようになっているが、ソースを見ればHTMLファイル名がわかる。LWP::Simpleのget関数で、スクリプトで生成したHTMLファイル名を使ってアクセスし、夜数とリンクとタイトル・著者名を読み取り、夜数をキーにして、リンクとタイトル・著者名をタブで区切って、値としてDBMデータベースに格納する。この仕事を担当するのが、senya_800get.plである。毎度検索するたびに、サイトにアクセスするのは負担が大きいし、変化するデータではないので、ローカルに保存して活用する。一度だけ、CGIスクリプトを置くディレクトリで実行するだけでよい。完全に規則的にHTMLが書かれていないので、全部を読み取るには多少の工夫を要する。タイトルと著者名が別になっているデータがあったり、一行が数行に分かれていたり、途中で改行が入っていたりしている場合に対応している。
もう一つのCGIスクリプトは、senya_800get.plが作り出したDBMデータベースを検索して、結果をリンクのリストにして出力する。スクリプト名はsenya_search.cgiである。使うためには次のようにする。検索文字列には正規表現が使える。すべてをリストする場合には次のようにアドレスを入力しても良い。詳細な検索をしたい場合には検索文字列入力インターフェースをHTMLフォームで作ること。
http://localhost/cgi-bin/awakening/senya_search.cgi?str=.
[senya_800get.pl]
use LWP::Simple; $baseurl = "http://www.isis.ne.jp/mnn/senya/"; for($i=1;$i<=800;$i+=100){ push(@senya_htmls, sprintf("BN%.03u_%.3u.html", $i, $i+99)); } dbmopen(SENYA, 'senya800', 0666); foreach $html (@senya_htmls){ print $html,"\n"; @content = split(/\n/,get("${baseurl}$html")); foreach (@content){ chomp; if($_ !~ />\s*$/){ $buffer = $_; next; } if($buffer){ $_ = $buffer . $_; $buffer = ""; } if(/javascript:ctrlWind\('(.+?)'\)/){ $mhtml = $1;$sw = 1;next; } if($sw == 1){ if(/<font color="#\d+" size="\d+">(.+?)<\/font><font size="\d+">(.+?)<\/font>/){ $title = "$1$2";$sw = 0; }elsif(/<font size="\d+">(.+?)<\/font>/){ $title = $1;$sw = 0; } if($sw == 0){ $mhtml =~ /^senya(\d+)\.html$/;$night = $1 + 0; $SENYA{$night} = "${baseurl}$mhtml\t$title"; print $SENYA{$night},"\n"; } } } } dbmclose(SENYA);
[senya_search.cgi]
require 'cgi-lib.pl'; use LWP::Simple; $baseurl = "http://www.isis.ne.jp/mnn/senya/"; &ReadParse(*in); if($in{'str'}){ $str = $in{'str'}; }else{ $str = "AKIRA"; } dbmopen(SENYA, 'senya800', 0666); print "Content-type text/html\n\n<html><body>\n<ul>\n"; foreach $night (sort {$a <=> $b} keys (%SENYA)){ if($SENYA{$night} =~ /$str/){ ($url, $title) = split(/\t/, $SENYA{$night}); print "<li><a href=\"$url\">第$night夜</a> $title\n"; } } dbmclose(SENYA); print "</ul>\n</body></html>\n";
use Perl | NLnet sponsors Parrotネタ。Stichting NLnet; Parrotを参照すれば、Parrotの必要性が要領よくまとめられている。
perl.com: Automating Windows Applications with Win32::OLEネタ。インストールは最後にエラーが出たけど、記事の最後にあるサンプルは正常に動くようだ。このようなノウハウが蓄積されるとうれしいかもしれない。
perl.com: This Week in Perl 6, April 12 - 19, 2005ネタ。仮名CarrotというC-Parrotコンパイラを開発中。なら、Perl6で書けばと思うのだけど、Cのリソースが多いことも想像できる。ParrotはC並みのスピードに調整可能らしい。その他、Pugsの記事がトップにあり、Parrot Common Lisp Projectも動き始めた。
senya2rss.cgiをsenya_search.cgi/senya_800get.plと連動させるように改造した。RSSとして千夜千冊の最新20件を読むたびに、DBMデータベースも同時に更新する。番外と1001夜は取りあえず取り込んでいない。タイトル・著者検索用のインターフェースをitems.html(「実践実用Perl」)に追加。次は、昨晩ミラーした記事を少し料理してみようと思う。5月連休の楽しみにとっておくか(^^)サイトミラースクリプトはリンク解析を相対パスに対応しているだけで、まだあらゆる場合を想定できておらず(というか、原理的に対応できるのかどうかもよくわかっていない)、ミラーのためのディレクトリ生成をほぼ意図どおりにできるようになったが、もうしばらくブラッシュアップが必要だろう(千夜千冊サイトのような/path 形式のリンクに対応できるようにチューニングしたけど、他のサイトでは副作用が出る可能性もある)。サイトに負荷を掛けないような方法も工夫する必要があるだろう。今回試した(プログラムを動作させながら、別にブラウザでアクセスしてみる)限りではアクセスに支障が出ることはないようだが、負荷が低いほうが良いに決まっている。SPIDERING HACKS #16 「スクレーピング対象の作業負荷を軽減する」が参考になるだろう。
最近、更新日記一月分のファイルが長くなっているので、日付別の記事へのリンクを記事の上部に置くことにした。ブログ風にはカレンダ形式のリンクを作ってもよいのだが、シンプルさを重視した。エディタ上で実行して、選択位置に出力する。
Up > ... > 日(記事,...) > ... > Down のような形式で、新しい記事の順に出力する。
[rn_dlink.pl]
$htmldir = "C:\\sites\\tsnetwork"; open(IN,"${htmldir}/renewal.html"); while(<IN>){ if(/^<DT>\d+\/(\d+)\/\d+.+?<DD>$/){ $mday = $1; }elsif(/^<div class="emph">.+?<A NAME="([a-z]+_\d+)">/){ $alink{$mday} .= $1 . "\t"; } } close(IN); print "<p>Up > "; foreach (sort {$b <=> $a} keys(%alink)){ @links = split(/\t/,$alink{$_}); print "$_("; while($link = pop(@links)){ $count++; unshift(@hlinks, "<a href=\"#$link\">$count</a>"); } print join(", ", @hlinks),") > "; $count = 0;@hlinks = (); } print " Down</p>\n<hr>\n";
千夜千冊私的データベース化プロジェクトへ対応したsenya2rss.cgiのバグが取れたので、一応公開しておく。http://localhost/cgi-bin/awakening/senya2rss.cgi?lastnights=20 などとすれば最新の20件のみを読み取るが、lastnightsを指定しなければ、2000件まで読み取る。読み取るといっても最新ページのBACK NUMBERデータからなので、サーバーの負担は増えるわけではない。lastnightsはrss2html.cgiへsenya2rss.cgiの適当なサイズの出力を与える場合に使う。senya_800get.plで作成したDBMデータベースに第801夜以降のデータを一気に書き込む場合には、lastnights変数を与えずに起動すればよい。senya2rss.cgiを使って千夜千冊の最新ページを読めば、その度にタイトル・著者DBMデータベースが追加更新される。
[senya2rss.cgi]
require 'cgi-lib.pl'; use LWP::Simple; use XML::RSS; use Unicode::Japanese; $s = Unicode::Japanese->new(); &ReadParse(*in); $baseurl = "http://www.isis.ne.jp/mnn/senya/"; $channel_title = "松岡正剛の千夜千冊"; $channel_description = "千冊の「本」で語られた世界の知の放埓な記憶"; if($in{'lastnights'}){ $max = $in{'lastnights'}; }else{ $max = 2000; } print "Content-type: text/xml\n\n"; $rss = new XML::RSS (version => '1.0'); my $doc = get($baseurl); dbmopen(SENYA, 'senya800', 0666); @content = split(/\n+/, $doc); foreach $line (@content){ if($line =~ /千 夜 千 冊 BACK NUMBER/){ $sw = 1; } if($sw == 1 && $line =~ /<p class="mover"><font color="#000000"><a href="\/mnn\/senya\/senya(\d*)\.html">(\d+)<\/a><\/font><\/p>/){ $htmlnum = $1; $nightnum = $2; $getnightcount++;$sw = 2; if($sw == 2 && $getnightcount <= $max && $line =~ /<td[^<>]+?class="mover"><font color="#000000">(.+?)<\/font><\/td>/){ $title = $1;$mhtml = "senya" . $htmlnum . ".html";$sw = 1; $rss->add_item( title => $s->set("第${nightnum}夜", 'sjis')->utf8, link => $baseurl . $mhtml, description => $s->set($title, 'sjis')->utf8, ); $SENYA{$nightnum} = "${baseurl}$mhtml\t$title"; } next; } if($sw == 2 && $getnightcount <= $max && $line =~ /<p class="mover"><font color="#000000">(.+?)<\/font><\/p>/){ $title = $1;$mhtml = "senya" . $htmlnum . ".html";$sw = 1; $rss->add_item( title => $s->set("第${nightnum}夜", 'sjis')->utf8, link => $baseurl . $mhtml, description => $s->set($title, 'sjis')->utf8, ); $SENYA{$nightnum} = "${baseurl}$mhtml\t$title"; } last if $getnightcount > $max; } $rss->channel( title => $s->set($channel_title, 'sjis')->utf8, link => $baseurl, description => $s->set(&entities_encode($channel_description),'sjis')->utf8, language => 'ja' ); print $rss->as_string; dbmclose(SENYA); sub entities_encode{ local($str) = @_; $str =~ s/&/&/g; $str =~ s/</</g; $str =~ s/>/>/g; $str =~ s/"/"/g; return $str; }
IronPythonは注目すべきか。ダイナミックなスクリプト言語以外の使用については、我々純粋スクリプタは(いや、私だけかもしれないけど)敬遠の傾向がある。私の意見では、Perl、Python、Ruby、Tcl/Tkの利用領域の拡大には一も二もなく賛成ということで・・・
PyCon 2005の内容を見ていても、Pythonは応用に強い。元々そうだけど・・・
pre-αのプレビューリリースなので、これからだろうけど、IronPythonConsole.exeを起動してコンソールモードで使用すると、日本語の表示も問題ない。スクリプトからはなぜか文字が認識できない。フォントの設定に関わるのかも・・・コンソールモードに関しては、同梱のFAQ.htmlを参照。
CATVのホームページに置いてリンクしていた画像ファイルを@niftyのページに移動し、CATVのページへのリンクを書き換える作業を実行した。もう今日はCATVのページにアクセスできなくなっていて少し慌てた。こういういらぬ時は仕事が速い(^^;)昨日のうちに移行を済ませておいてよかった(^^)
仕方がないので、ローカルの更新日記のHTMLファイルからCATVのページにリンクされているファイル名を抽出。FFFTPで画像ファイルを選んで送り始めるが、あちこちにファイルは散らばっている(^^;)しかし、まだ20MBのホームページは満杯になってすべては送れない。早く100MBに拡張させてくれないと・・・
HTMLから、URLの画像ファイルのディレクトリ名だけを残してパスを削除して出力。一応安全のために別のディレクトリに出力して、エディタで変更部分を確認する。OK。@niftyのページに上書き。多少の欠落のある可能性はあるが、ざっと見たところ問題はなさそう(^^;)参考までに、スクリプトを載せておく。
opendir(DIR,"."); @files = grep(/renewal_\d{4}_\d{2}.html/,readdir(DIR)); foreach $file (@files){ open(IN, $file); open(OUT,"> rw/$file"); while(<IN>){ s/="http:\/\/www.hicat.ne.jp\/home\/fujioka9\/(.+?)"/="$1"/g; print OUT $_; } close(OUT); close(IN); } closedir(DIR);
確かに個人の購買・検索行動情報の蓄積利用には、おいおいと思うことがある。大体そういういらぬお節介は無視することになるわけだけど。まあ、いずれインターネット上の必要な情報は次第にデスクトップ上に存在するようになり、そのときはWeb上の検索エンジンの利用度も低下するかも・・・パーソナル検索ロボットを動かして、常時関心のある情報の収集をしておくことが流行るかもしれないからね。
昨日、txt2graph.plで直接、pngファイルを生成すると画像表示ツールでなぜか表示できない。テキストデータをベースにしたほうが問題がわかりやすいと、svgの表示の検討を始めたが、Adobe SVG ViewerやCorel SVG Viewerでは日本語フォントの表示ができないことに気が付いて、SVG Viewerをもう一度探した。その探索の成果が、Batik SVG Toolkitである。このJavaベースのツールは凄い。お勧めだ。このツールキットを介して、pngやjpg、tiffファイルの生成も容易である。更新日記のグラフを--twopiオプションでsvg出力し、Batik(Squiggle)で読み込んだ後、pngで出力してみた。
更新日記のグラフ化 Ⅱ(--undirect --layout=twopi)一般的なSVG Viewerの問題は、視点を移動したい場合にスクロールができないことである。Findでノードを検索して移動する必要がある。Graphvizのサイトを調べていて見つけたのが、ZGRViewerである。これは優れもの。カーソルキーでスクロールできるし、マウスのドラッグで移動させることも可能だ。Zoom In/OutはPage UP/Downキーで容易に操作できる。グラフを探索するには必須のツールである。
BatikのSquiggleも後で確認してみると、動きは遅いが、カーソルキーでスクロール可能だった。Zoom In/Outはctrl+I/Oである。ZGRViewerは少し画像は粗いが、動作が極めて軽い。ストレスなく見るには、ZGRViewerがお勧め。
ZGRViewer (「の」のような助詞にリンクが集中するのは日本語のグラフの特徴である。)最近、Web日記、Weblogの流行現象が見られるわけだけど、その仕掛けはワンパターンでまったくおもしろくない。なんて言い切ってしまうのは多少言い過ぎだが、どのように知識を組織化するのがよいかを考え続けることは無駄ではないだろう。更新日記は一種のWeblogだが、半自動生成の手書きブログである。インデックス類やRSSの生成も自動的に行うが、更新のタイミングは人間が決める。デスクトップから検索するツールやRSSリーダーも装備している。情報や知識を提示するための仕組みとして、Blog的なもの以外に注目されるものにWikiがあるのだが、Blog的なものと同様に、データが増えすぎると結局全体を提示するのが困難になる。インデックスも情報が増えるとあまり有効ではなくなる。結局、最終的には検索に頼ることになる。ハイパーテキストの特徴であるハイパーリンクは従来の文書にはない有効な機能であるだけでなく、全体の構造を提示するキーを握っていると思われる。これをどう生かすかが今後の方向だろう。
そんなことが頭のなかでぐるぐる回っているのだが、増井さんの本棚.orgに触発されて、更新日記流で何か考えてみたいと思う。素材を作るために本の表紙のスキャンデータを作り始めた。EPSON GT-5500WINSという旧式のフラットベットスキャナを使っているのだが、Windows XPでも一応動く。EPSONのサイトにXP用のドライバがないので少し慌てたが、Windowsの標準ドライバで単にスキャンして画像ファイルにするぐらいは問題はない。