今日は、広島上空も雲一つない夏の真っ青な青空が広がった。暑い夏が到来した。『崖の上のポニョ』公開記念! ポニョと海の仲間たちに会える水族館&展覧会ネタ。昨日から、ロードショー。
テレビでも宣伝が始まっている。表面的には宮崎アニメとして思いがけない設定のお話のような気がする。あれって魚なの?、顔は人間チックに描かれている。そこがこの話がただものではないことを示唆している・・・あまり調べずに見たほうが感動するかも。
魚もののアニメと知って、Finding NEMO (2003/05/18)を連想してしまうのだが、もう4-5年前か。それとはまったく違った次元の世界が現出するはずである。
一部だけ引用しても仕方がないんだけど、興味がある人は読んで欲しい。養老孟司、宮崎駿著「虫眼とアニ眼」(新潮文庫、2008年)から宮崎駿の言葉。
でも、子どもたちの心の流れによりそって子どもたち自身が気づいていない願いや出口のない苦しさに陽をあてることはできるんじゃないかと思っています。ぼくは子どもの本質は悲劇性にあると思っています。つまらない大人になるために、あんなに誰もが持っていた素晴らしい可能性を失っていかざるをえない存在なんです。それでも、子どもたちがつらさや苦しみと面と向かって生きているなら、自分たちの根も葉もない仕事も存在する理由を見出せると思うんです。
(158-159ページ)
実は、昨日夜、家内とワーナーマイカルシネマズ広島に観に出掛けた。さすがに日曜の夜なので少なかったが、スクリーンはもっとも広いスクリーン1だった。客層は宮崎駿作品だからという僕等と一緒のカップルか、子ども連れだ。
子どもたちは相当喜んでみていたが、大人たちは今ひとつと感じたかもしれない。自然を破壊する人間と自然とともに生きる魚族との対立みたいなものがもう一つ充分に描かれなかったことがあるだろう。それよりも荒れ狂う海のダイナミックな表現に圧倒されてしまって、そのような図式的な対立を忘れてしまったから、逆に物語の意味を求めると少し内容が薄いと感じてしまうからだ。まだロードショーははじまったばかりだから、種明かしは止めておいて、宮崎駿ならではの世界が描かれていることは保証しておこう。
僕は、NHKの「プロフェッショナル 仕事の流儀 スペシャル 8月5日(火) 22:00~23:28 (88分)宮崎駿のすべて~「ポニョ」密着300日 ~」の前に観ておきたかったのだけど。
ゲーム理論ネタが途切れてしまったが、意味を求めて潜行している。プログラム的にはいろいろとネタはあるのだが、意味に結びつかない。
僕のように理科系の人間にとっては、とても科学に見えないからね。大体、コインを放り投げて表が出るか裏が出るかで、それぞれの確率をそれぞれ0.5と置くことさえ、あまりすぐには同意できない。コインの形状や表と裏の模様がどうかとか、重心がどの位置にあるかとか、どのように放り投げるのかとか、何を使って、どの方向に、どのような速度で、どのようにもってとか、考え出すと限がない。要はコインを決めて、どのように放るのかも決めないと本当にそうなるかどうかはわからない。コイン投げの不確定性を充分に保証するためには様々な工夫が必要な気がする。コインは立つ可能性だってある。コインはどのような状態の場所に落ちるのかも決めねばならない。
逆に言えば、ゲーム理論を文系から見ることもできるわけだ。竹田茂夫著「ゲーム理論を読みとく - 戦略的理性の批判」(ちくま新書、2004年)の最初のほうから少し引用しておこう。
「防衛知識人」の世界はゲーム理論と深く結びついている。本書でも彼らの世界を覗くことにするが(第3章)、このエピソードはもっと広く、客観性、合理性、正統性、専門性などを売り物にする言語体系の危うさを指し示している。上の引用で、ある言語体系をみずから話し始めるとそれが聞こえなくなる、つまりその言語体系に対する違和感が抑圧されてしまうという指摘は重要である。
ゲーム理論を学び、そのことばを操れるようになれば、新しく見えて来るものもあるだろう。国際政治や経済を新しい観点から見ることができるようになるかもしれない。しかし、防衛知識人たちのクリーンな言語体系が核戦争の被害者視点を排除してしまうように、ゲーム理論によって見えなくなるものもあるのだ。ゲーム理論はどのようにわれわれの目をふさいでしまうか、ゲーム理論に代わるべきものは何か---これが本書のテーマである。
(8-9ページ)
言語体系とは何か、少し考えてみよう。プログラミング言語だって、使い始めれば、その世界に入り込むことになる。そして、それを使いこなすことが目的となるのである。
本書は、松岡正剛の「千夜千冊 」第千七十七夜【1077】2005年11月14日『ゲーム理論を読みとく』にも取り上げられているだけでなく、各所で注目されている。
Scaling Large Projects With Erlangネタ。
一つのPCに展開できないほどのデータ量を一度に取り扱うなら並列分散しか方法はないわけだが、そのようなアプリケーションが個人的な課題になるとすれば、やはり検索エンジンを自前で作るというようなことかもしれない。
さてねえ。まずは更新日記の全文検索システムを作ってみるかな。大分以前に購入したものだが、Namazuについての本を二冊持っている。馬場肇著「Namazuシステムの構築と活用 日本語全文検索徹底ガイド」(ソフトバンク パブリッシング、2001年)と西村めぐみ著「超個人的Webテクノロジー活用法 オープンソフトウェアによる全文検索・データベースWebの作り方」(ソシム、2000年)である。しかし、まだ真剣に読んだことはない。2000-2001年の発行だが、もう古いかなと思ったらそれほどでもない。中味はしっかりしているし、全文検索システム Namazuは現在も更新されているからだ。Perl5.8に対応している。スクリプトの中味を見ると、スクリプトの文字コードはEUC-JPが前提。文字コード変換は自前のライブラリを使っている。UTF-8前提の世界ではないねえ・・・
ErlangはMnesiaという分散可能なデータベースを標準で持っている。Amnesiaは記憶喪失という意味なのだそうだ。RubyならNamaduなんてものもある。うーむ、はて、Perlでいくのか、Rubyでいくのか、Erlangでいくのか・・・
Computation and Knowledgeネタ。Erlang入門 4 - a Prolog meta-interpreterを越えて (2008/06/15)の記事以降、Gridの父、Ian Foster氏のブログのRSSをチェックしている。興味深い記事が多い。
TSNETスクリプト通信を5月に創刊したが、世間にそれほどのインパクトを与えたとは思えない^^;)創刊号を出しただけでは到底人に影響を与えるほどのことではないので、当然といえば当然のことだが・・・スクリプティング言語に興味のある人に少しでも自分も取り組んでみようと思わせられればうれしいのだ。
デスクトップには30年前の電子計算機センターにあったメインフレームより高性能なPCが載っている。これを他人から与えられたアプリケーションを単に使うための道具に貶めてはいけない。今のPCユーザーにプログラミングの概念がないのは残念だ。PCには自発的なもっと有意義な活用法があるはずなのである。忘れられた夢がそこにはある。
しかし、実は何をするのかが問題なのである。そして、何ができるかが問題でもある。デスクトップのMySQLデータベースには、Atom配信データが読むたびに蓄積され続けている。現在のアクセス法では順に表示させて読むだけなので、もっと他のインターフェースを作るという課題はある。RSSも同様に蓄積するという課題も残したままだ。自分の中での必要性が高まらないので手が動かない。デスクトップ資源にアクセスするインターフェースをもっとシステム化して実装したいという気持ちはあるが、まあいいよねなんて、その日その日が過ぎていく。ファイルシステムだってできるよなとか思ったり・・・
MobileMe対応のためか、Appleの新しいSafariが出たので、そろそろブックマークを検索できるようにしてみるかと思ったりしている。Apple Computerの名前が残っているのは、今や、USERPROFILEのApplication Dataにあるフォルダ名だけかもしれない。そこのSafariというフォルダに、Bookmarks.plistというファイルが置かれていて、その中味はxmlファイルである。デスクトップCGIはブラウザと一体になって動作することができる。ブラウザが紡ぎ出すデータは最も利用価値のあるデータなのかもしれないのである。あなたが3種のブラウザを使いたいなら、3種のブックマークを統合して取り扱うことは簡単である。そんなことはお茶の子さいさいなので、そんな領域にいつまでも留まっていても仕方がないという気持ちもある^^;)そこでどこに向かう。それが問題だ。このところ、様々な他の領域を廻っているのもそのためである。はて、さて、さて・・・
昨晩は22時前には寝てしまっていたらしい。今朝は早く起きて6時半には出掛けた。とにかく必死に突っ走りながら気掛かりな問題をなんとか片付けて玉を投げ返すと早々に帰宅の途に着く。外気温31℃。
帰宅するとiPhoneて凄いのねっていうテレビの話題で盛り上がる。そうそう、 第二百三十四回 表参道iPhone行列に並んびつつグダグダ語るでもやってるよってな具合。手のひらに本格的なコンピュータが載る時代になったんだよね。録音してもらった家内のピアノをiTunesで聴こうとしたら、7.7をインストールするかいって聞かれて、OKを出す。送られてきたCD-Rは音楽用CDであることがわかったので、PCから取り出して再生はオーディオ装置に任せる。7.7はiPhoneでリモートコントロールできるらしい。
ピアノ録音用にICレコーダを購入。携帯MiniDiscレコーダもあるのだが、操作がわかりにくいらしい。ICレコーダは空気みたいに超軽い。操作も単純で便利そうだ。スイッチオフの状態でUSBメモリのようにしてPCに接続して中味を見ることがてきる。機種はソニーのICD-UX70 Sで、1GBのフラッシュメモリに記録する。Amazonで、11,700円也。決め手は、まずまずの価格、内臓のステレオマイクとMP3で録音できること。欠点はディスプレーが小さいこと、これは消費電力との兼ね合いがあるのだろうけどね。電源として、単4のアルカリ電池が付属するが、単4のニッケル水素電池を使えば、USB接続で充電できる。これは便利かな。音質も悪くない。
iPhoneもあれば、確かにおもしろそうだけど、室内が主な労働環境の我等には、それほど使う機会があるかなあと思ってしまう。Wi-Fi(無線LAN)がもっと普及すればモバイル的には意味があるのだろうけどねえ。僕の場合はむしろ車がなんとかなってほしいね。
PSPはFMトランスミッターと一緒になって車載電脳空間カウボーイズ・プレーヤーとして生き延びているが、メモ機にならないのかなと思ったりしている。シャープのPI-5000にUSB接続が付いていたらよかったのにと思うこの頃^^;)手書き入力は大変便利だった。ケータイでアイデアを入力して自分にメールで送る方法もあるが、どうもケータイの入力は好きになれない。iPhoneの日本語入力はどうなっているんだろう。
@IT情報マネジメント、iPhone 3Gと家計ネタ。維持コストは掛かるというストーリーで書き始めたが、やはり欲しくなったという落ちが付いた記事。
加えて、iPhone 3Gに書いたように、MobileMeの費用(20GB、9,800円/年)が掛かる。ホワイトプラン(i)の基本使用料(980円)+パケット料金が、7,280円/月。ふーむ。パケット料金、6,300円/月は自宅のインターネット接続料金並なわけで、やはりモバイルな人種向けということになるだろうね。
ニフティ、@nifty Mobile BBデータ通信カードにExpressCardタイプを追加ネタ。
iPhone 3Gより500円/月ぐらい安いが、まあ、同等だね。今、高速モバイル通信でつなぎ放題ということになるとこれぐらいのコストは必要だということになる。@nifty Mobile BBは、提供エリアの問題はあるにせよ、7.2Mbpsということなのだが、iPhone 3Gについては明確な情報がない。
iPhone 3Gについての両極端な評価。江島健太郎 / Kenn's Clairvoyance - iPhoneという奇跡とiPhone 3Gはジョブズの敗北宣言 - 池田信夫 blog。
モバイル中にコンピューティングをゆっくりやっている暇があるのは、新幹線で移動中か、空港での待ち時間、そしてホテルぐらいじゃないかな。後は車での移動中ぐらい。そこでは振動に強いSSDを記憶メディアにしたミニノートPCが最適なような気がするのだけど・・・空港やホテルにはインターネット接続環境は常備されている。そのうち、新幹線と車で接続できるようになれば大体満足しそうだ。東海道新幹線は2009年3月から。車はまだ問題だろうね。
三連休、仕事尽くめの夏は大袈裟だけど、メールがあるお陰で、日曜日にもメールが飛んでくる。こちらが頼んでいる仕事だから仕方がない。どうしようかと考え続ける。なんとか、さっき、最後のメールを出してほっと一息。今朝はこの夏初めて蝉の鳴き声を聞いた。まだ、鳴き初めか、弱弱しい。昼からは声も聞こえてこない。今日は海の日か・・・
今年は早い梅雨明けで蝉も途惑っているだろう。でも急に出てくる時期を早めるわけにもいかなかっただろうね。蛇口へつなぐ散水用ホースのコネクタから水が漏れて困るという苦情に対応、調べてみると単にホースとコネクタ部のネジが締まっていないだけ。充分に締め付けて試すとまったく漏れない。ついでに庭に水を撒いていると、クマゼミがよたよたと飛んできて庭木に停まった。
陽の明るさに目も眩む蝉の夏
昨日の話。無言のタクシーで暑い日が続きますねと声を掛けると堰を切ったように身の上話とも自慢話ともつかぬ話が流れ出した。本人は北海道の出身で、大学で知り合った彼女に付いて中国地方に来たのだそうだ。もう40年。本人は北海道に帰りたいらしいが、孫が許してくれないと言う。自宅では夏は強力な除湿機をセットして、除湿機から出る水を庭の野菜畑に流れるように配管している。一日に20リットルは出るそうで、野菜の育ちはよいらしい。トマトには水を充分やらないと赤くならない。タクシーを降りる時は、90円まけてくれた。取ってくださいと言っても、いやまた呼んで下さいと言う。それではと有難くいただく。8月は秋ですよという話のなかで、もう空は秋の雲ですよと自分の空のように話をしてくれた。実際、8月7日は立秋だと。なるほど。
夏のおわりの空例によって広島駅に着くと廣文館書店へ上がる。丸谷才一、山崎正和著「日本語の21世紀のために」(文春新書、2002年)を購入。第1章は「言語の時代としての二十世紀」というタイトルで、非常にわかりやすく、しかも納得がいく。なぜ、フーコーのわかりにくい本をわざわざ読んでいるのかと思ってしまうほどだ。ただ、ここには西欧と日本の違いが現れているのかもしれないとも考えたりする。少し最初から引用しよう。丸谷才一氏の言葉。
僕の話の進め方はどうしても文学中心になるけど、十九世紀の文学は、観察と実験という自然科学的方法を適用したリアリズムによって作るものだった。ところが、二十世紀の文学はそうじゃなくて、言葉で作るものなんです。・・・
(10ページ)
今日は、ナルニア国物語 第2章:カスピアン王子の角笛を見に出掛けた。ワーナーマイカルシネマ広島、18:10-20:50。
第2章のナルニア国への入り口は、ロンドンのStrandにある地下鉄のSTRAND駅である。Strandには縒り糸と岸辺という意味がある。前者はロンドンとナルニアの時空が縒り合さっている場所であることを意味しており、後者の意味は映画を見るときまで覚えておこう。岸辺とは海と陸地が出会う場所という意味であり、神話の過去と現在のロンドンが出会う場所かもしれない。
広島みなと夢花火に42万人の記事によれば、1万発の花火、42万人の人出だったそうだ。昨年の僕の記事を読むと、規模は2/3ということかな。主催者発表では過去最高の人出という表現だが、花火の数も少なかったのは、なにか終わりが早い感じがしたのと一致している。
警備のパトカー自転車で向かう人は広島県立大学のところからは手押しにして、イオンで駐輪し、後は徒歩にしてほしい。危なくてかなわない。
今年は初めて、海に向かって左側(東側)の一般見物場所(Virtual Earth)から見た。花火の燃えカスがかなり降ってきたのは、風の具合か。音は迫力あり。早めに行って場所取りすれば、ACTUS側で見るよりはよいだろう。
帰りの途中、イオンに寄った。本屋を眺めて、ここは新書類をほとんど置いていないんだよなと思いながら降りると、一階の入り口にあるスターバックスは満杯になっていた。イオンが駐輪やゴミ集め、トイレに協力してくれるのは、近隣住民としても助かるだろう。
ここのところ、家内が僕のPCを使ってメールを読み書きしたり、知り合いのブログを読んだり、検索したりすることが毎日の行事となった。僕のささやかな書斎の床やライティングデスクや可搬式サイドボードや書棚の上に堆くいくつも積まれた書籍類や文献類に業を煮やして、掻きまわして整理してくれた。一部他の部屋に移してしまったりしているので記憶から消えてしまうものも出る危険性もあるが、ふと、新しく配列された書棚に見かけない本を見つけた。
山口謡司著「日本語の奇跡 <アイウエオ>と<いろは>の発明」(新潮新書、2007年)。積読の山の中に埋もれていたのだろう。
ヨーロッパ、中近東、インド、中国など、文明を創り上げて来た国々の言語と、トルコ語、モンゴル語、朝鮮語、日本語といった膠着語との間で、「借用語」の比率を調べてみると、興味深いことがわかる。膠着語の文法体系を持った言語は、借用語率が非常に高いのである。
借用語とは、わかりやすく言えば、外国語の利用である。他の言語体系で使用されている単語を借り入れて、それを自国語のなかにどんどん同化させていく。日本語における「和製英語」と言われるのもこの典型である。
このような言語的特徴を持つ膠着語は、結果として、文明と文明とをつなぐ架け橋の役割を果してきた。
(13-14ページ)
膠着語について調べていると、Googleの検索結果の4ページ目に千夜千冊が出てきた。
日本語は膠着語である。
とくに仮名をつかいはじめて膠着性がますます強まった。その日本語をどうつかうか。これは日本語をつかう者にとっては最も愉快で最も冒険を誘うものになる。
松岡正剛の千夜千冊『省略の文学』外山滋比古
松岡先生と外山滋比古が結びつくのは少し意外だった。僕は昔からの外山先生の読者なのだけど、「省略の文学」は読んでいなかった。「修辞的残像」も。みすず書房の「エディターシップ」もそうだが、「ホモ・メンティエンス」(みすず書房、1971年)の最後にエディターシップの章がある。加えて、僕が読んだのは、「日本語の論理」(中公叢書、1973年)、「文学の方法」(大修館書店、1976年)、「日本語の個性」(中公新書、1976年)、「知的創造のヒント」(講談社現代新書、1977年)、「日本語の素顔」(中公新書、1981年)、「思考の整理学」(ちくま文庫、1986年)。
それはともかく、膠着語という言葉がLarry Wallの「glue language」という言葉を連想させ、膠着語の英語は何かを調べた。「Agglutinative language」。連想はあっても使用される分野や意味が違うので英名は異なるが「glue」文字列の一部が埋め込まれている。「glue language」は異なる言語をダイナミックに結びつける役割を果す。例えば、CGIのように自然言語をHTMLやXMLでマークアップしたり、HTMLにjavascriptを埋め込んだりということを指している。テキスト処理言語の究極の役割かもしれない。
日本語は、先に見たように膠着語の代表的なものであるが、どのような言語でも文脈に取り込むことが可能である。表音文字のみからなる言語では難しいことだ。複合語でさえ、読みの組合せで記述することが要求される。しかし、Unicodeが普及すれば、屈折語の文の中に、日本語の漢字やひらがななどが、アルファベットからなる単語と一緒に並ぶことも不自然ではなくなるのかもしれない。もちろんフォントやかな漢字変換などのプログラムも必要だが。今は単に、日本語で使える文字数が多いことがそうさせているだけかもしれない。さて、どうだろうね。膠着語ゆえの特性なのか、表意語ゆえの特性なのか・・・
Perl 6は、Unicodeを普及させることを目的の一つとしているが、Larry WallがPerlで日本語を自在に操りたいという密かな願いが込められているのかもしれない。スクリプトを日本語で書くことが流行るかもしれないのだ。
use utf8; binmode STDOUT, ":utf8"; sub 挨拶{ my($誰々) = @_; $朝の挨拶 = "${誰々}さん、おはよう。\n"; $昼の挨拶 = "${誰々}さん、こんにちは。\n"; $夜の挨拶 = "${誰々}さん、今晩は。\n"; $現在時刻 = (localtime)[2] + 1; if($現在時刻 >= 5 && $現在時刻 <= 9){ print $朝の挨拶; }elsif($現在時刻 > 9 && $現在時刻 < 18){ print $昼の挨拶; }else{ print $夜の挨拶; } } $誰々 = "ラリー"; 挨拶($誰々);
Perl 5.8/5.10では、変数名にUTF-8の文字が使えるが、サブルーチン名に使うと不安定な感じだ。上記のスクリプトは動作するが、サブルーチンの引数や変数名の書き方によっては動作しない場合がある。utf8のドキュメントのBUGSの項に、パッケージ/クラス名、サブルーチン名にはUnicodeが使えないことが記載されているので当然ではある。
「日本語の奇跡」は、かなりの駆け足で古代から現代までを走りきるという荒業を見事に成し遂げているが、元は「アイウエオの誕生」というタイトルなのだったそうだ。恩師(亀井孝)が編集委員の一人の平凡社ライブラリー「日本語の歴史」(全7巻別巻1)を参照しつつ書かれたそうである。
日本語の歴史を辿ると、言語の変遷はダイナミックである。発音に、伝えられた文字をどう当てるかがその変化をもたらしている。サンスクリット語、中国語から日本語へ、その経緯は大変複雑だが、言葉は変化するものなのだということが圧倒的な現実感で迫ってきた。
last.fmでHerbie Hancockをタグとして入れると、その本人の曲ではなくて、そのテイストをもったミュージシャンの曲が流れる。よく出てくるのが、Brad Mehldauだった。気になって調べると、注目されているピアニストらしいので、CDを購入することにした。調べていくうちに、Pat Methenyと一緒に2枚のアルバムを作っているMEHLDAUであることに気が付いた。それでどこかで見た名前のように感じていたのだ。
1枚目はデビューアルバム、「introducing BRAD MEHLDAU」(1995)、2枚目は実際の2枚目「the ART of the TRIO VOLUME ONE」(1997)。いずれもピアノトリオの構成で、1枚目は少し軽い感じがするが、2枚目は落ち着いた深みのある音でなかなか良い。
フォーサイトの2008年8月号の北谷賢司著『音楽業界で進む「世界的大変化」とは何か』(44ページ)には「世界のレコード業界が"存亡の危機"に直面している。CDの売上げ激減の一方で進む二大興行会社への"寡占化"。その波は日本へも及ぶ。」とある。CD売上げが激減しているだけでなく、オンライン・デジタル・ダウンロードも伸び悩み、違法コピーが蔓延している。したがって、複製できないメディアとしての興行の価値は相対的に高まっている。
しかし、複製芸術もメディアとして極めれば、もっと付加価値は高まるはずだろう。CDというメディア形態は、昔の塩ビレコードアルバム対比、特にジャケットを含めて物としての存在感が大きく低下したことは明らかだった。ライナーノーツやアルバムデータの字も小さ過ぎて読みにくいというか、読めないぐらいのものだ。まず見る気があまりしない。取り出そうとすると引っ掛かったりすることもある。非常に不親切なメディアなのである。もっとあっと驚く工夫の余地はあるかもしれないし、そのような工夫をなぜしてこなかったのか。CD商品を物として魅力的なものにすることこそが、単なる違法コピーを防ぐ唯一の方策なのに。電脳空間カウボーイズによれば、現在のCDは音楽をPCにデータとして取り込めば、捨てても惜しくない程度のものなのである。僕のように物持ちの良いものにとっては信じられないことではあるが・・・
前回は、言葉と物 CXXXV - 記号と意味(06/18/2008)の記事である。最近、小林多喜二の「蟹工船・党生活者」(新潮文庫)が40万部という半端でないベストセラーになっているそうだ。今朝のテレビでは、姜尚中氏の「悩む力」(集英社新書、2008年)や大澤信亮氏などの活動が紹介されていた。世界は矛盾に満ちている。日本は、そして世界は何処に向かうのだろう。昨夜、出光、8月後半の卸価格 原油価格急落で3・2円下げのニュースが目に付いたが、エネルギー問題も解消するのだろうか。
手元には、ガリー・ガッティング著「1冊でわかるフーコー」(岩波書店、2007年)がある。英名タイトルは「FOUCAULT: A Very Short Introduction」である。日本人の書いたフーコー入門のようなものは何冊か読んでいるのだが、西欧人がどのようにフーコーを見ているのか、読んでいるかに興味があった。「言葉と物」に関係しているのは、「6 仮面の哲学者」の章であり、第九章「人間とその分身」について言及がある。18世紀末、カントの純粋理性批判以前以後の断絶。カント以後にフーコーのいう「人間」が出現した。その人間は今や消滅したのか、何か他のものに変貌を遂げたのか・・・
「カント以後、人間が登場する」という話も、その原因をカントに求めるのも無理がある。カントを読んだことのある人なんてほとんどいないと思われるからである。ぼくも純粋理性批判を読もうとしたことはあったかもしれないが、読んだのは「純粋理性批判殺人事件」(2006/11/05)ぐらいのものだ^^;)カントが登場するような時代環境そのものの変化をもたらしたものが何だったのか、そんなことを考える。前もどこかで書いたが、Webには現実世界に対応するものがすべて現われてくる。よいものも悪いものも。Webは現実の鏡である。逆にWeb世界が現実世界に影響を及ぼすようになる。それが21世紀かもしれない。
「一冊でわかるフーコー」には神崎繁氏が解説を書いているが、その中にイアン・ハッキングの「ダイナミックな唯名論」が登場する。
・・・そうした言葉とそれに対応する分類が成立するのと、そうした分類に合致した対象が存在するようになることとが、同時にしかも相互作用的に進行するという特徴をもっている。ハッキングはこうした見方を「ダイナミックな唯名論(dynamic nominalism)」と呼んでいるが、単なる唯名論がしばしば懐疑論や相対主義と結びつくのと違って、一定の自然的要因に基づいて構成された歴史的・社会的客観性をそなえている。その意味では、フーコーの仕事を、直ちに相対主義と規定することはできないということになる。
(161ページ)
米Microsoft社、3DCG作成ソフト「trueSpace」v7.6を無償公開 経由、窓の杜の記事経由、Microsoft、3Dモデリングソフト「trueSpace 7.6」無償公開(INTERNET Watch)経由、trueSpace v7.6ネタ。
BlenderやMetasequoiaはインストールしているが、使い方は知らない^^;)当然、創作には目的が必要だからだ。そのような当たり前のことはともかく、このような高機能なツールがフリーで公開されると何か作れるのではと考え始める。クリエーターには大変喜ばれるのではと思う。
trueSpace7.6起動画面trueSpace v7.6は、Live Search Mapsとの連動が計られているということなので、Virtual Earthを調べ始めると、Live Search Mapsに統合されていることに気が付いた。広島みなと夢花火大会の観覧場所はVirtual Earthにリンクを張ってみた。
Live Search Maps Betaサインインしている画面
色々試してみたけど、普通のタブでは完全には表示できなかった。
Perl and Cloud Computing経由、Perl Catalyst and Cloud Computingネタ。そして、Catamooseもかな。このブログによれば、MooseとCatalystの廻りでPerlの蘇生があるということらしい。
Mooseはかなり凄いねと思っていたが、まあ、Catalystのほうは巨大すぎてちょっと触ってみるというわけにもいかないし、そもそもWindowsで動くのかどうか疑問に思っていたので、試してなかった。PPMにモジュールがあるので、まずはインストールを試してみた。以下、その経緯。
Catalyst marked for install Catalyst depends on Path-Class ..... Installing 25 packages ... Downloading Catalyst-5.6902 ... done Downloading Path-Class-0.16 ... done Downloading File-Copy-Recursive-0.36 ... done Downloading MIME-Types-1.24 ... done Downloading Module-Pluggable-Fast-0.18 ... done Downloading File-Modified-0.07 ... done Downloading Tree-Simple-1.18 ... done Downloading HTTP-Request-AsCGI-0.5 ... done Downloading Module-Install-0.75 ... done Downloading Data-Visitor-0.15 ... done Downloading HTTP-Body-1.04 ... done Downloading Tree-Simple-VisitorFactory-0.10 ... done Downloading Text-SimpleTable-0.03 ... done Downloading Module-CoreList-2.15 ... done Downloading PAR-Dist-0.31 ... done Downloading Module-ScanDeps-0.84 ... done Downloading YAML-Tiny-1.32 ... done Downloading ExtUtils-ParseXS-2.19 ... done Downloading ExtUtils-Install-1.50 ... done Downloading Tie-ToObject-0.03 ... done Downloading Test-use-ok-0.02 ... done Downloading Test-MockObject-1.09 ... done Downloading Win32API-File-0.1001 ... done Downloading UNIVERSAL-can-1.12 ... done Downloading UNIVERSAL-isa-0.06 ... done Unpacking Catalyst-5.6902 ... done ..... Generating HTML for Catalyst-5.6902 ... done ..... Updating files in site area ... done Installing 25 packages done Catalyst-Runtime marked for install Catalyst-Runtime depends on Module-Pluggable Catalyst-Runtime depends on CGI-Simple Installing 3 packages ... Downloading Catalyst-Runtime-5.7014 ... done Downloading Module-Pluggable-3.8 ... done Downloading CGI-Simple-1.105 ... done Unpacking Catalyst-Runtime-5.7014 ... done Unpacking Module-Pluggable-3.8 ... done Unpacking CGI-Simple-1.105 ... done Generating HTML for Catalyst-Runtime-5.7014 ... done Generating HTML for Module-Pluggable-3.8 ... done Generating HTML for CGI-Simple-1.105 ... done Updating files in site area ... failed Installing 3 packages failed ERROR: File conflict for 'C:/Perl5.8/html/bin/catalyst.html'. The package Catalyst has already installed a file that package Catalyst-Runtime wants to install. Catalyst marked for remove Removing Catalyst from site area ... done Installing 3 packages ... Downloading Catalyst-Runtime-5.7014 ... done Downloading Module-Pluggable-3.8 ... done Downloading CGI-Simple-1.105 ... done Unpacking Catalyst-Runtime-5.7014 ... done Unpacking Module-Pluggable-3.8 ... done Unpacking CGI-Simple-1.105 ... done Generating HTML for Catalyst-Runtime-5.7014 ... done Generating HTML for Module-Pluggable-3.8 ... done Generating HTML for CGI-Simple-1.105 ... done Updating files in site area ... done Installing 3 packages done Task-Catalyst marked for install Task-Catalyst depends on Catalyst-Engine-Apache ..... Installing 63 packages ... Downloading Task-Catalyst-2.0001 ... done Downloading Catalyst-Engine-Apache-1.11 ... done Downloading PAR-0.980 ... done Downloading Catalyst-Devel-1.07 ... done Downloading Catalyst-Plugin-Authentication-Store-DBIC-0.09 ... done Downloading Catalyst-Plugin-Session-0.19 ... done Downloading Catalyst-Plugin-I18N-0.07 ... done Downloading Catalyst-Plugin-Authentication-Store-Htpasswd-0.02 ... done Downloading Catalyst-Plugin-Session-State-Cookie-0.09 ... done Downloading Catalyst-Plugin-HTML-Widget-1.1 ... done Downloading Catalyst-Plugin-Prototype-1.33 ... done Downloading FCGI-0.67 ... done Downloading Catalyst-Plugin-Authorization-Roles-0.05 ... done Downloading Catalyst-Log-Log4perl-1.00 ... done Downloading Catalyst-Plugin-Authorization-ACL-0.08 ... done Downloading Catalyst-Plugin-Session-Store-File-0.13 ... done Downloading Date-Calc-5.4 ... done Downloading Catalyst-Controller-FormBuilder-0.04 ... done Downloading Catalyst-Plugin-StackTrace-0.08 ... done Downloading Catalyst-Model-DBIC-Schema-0.20 ... done Downloading Catalyst-Plugin-Session-State-URI-0.07 ... done Downloading Test-WWW-Mechanize-Catalyst-0.41 ... done Downloading Catalyst-Plugin-Authentication-0.10006 ... done Downloading Catalyst-Controller-BindLex-0.05 ... done Downloading Catalyst-View-TT-0.26 ... done Downloading AutoLoader-5.66 ... done Downloading parent-0.221 ... done Downloading Catalyst-Plugin-ConfigLoader-0.20 ... done Downloading Catalyst-Plugin-Static-Simple-0.20 ... done Downloading Catalyst-Action-RenderView-0.08 ... done Downloading Set-Object-1.22 ... done Downloading Object-Signature-1.05 ... done Downloading Locale-Maketext-Lexicon-0.66 ... done Downloading Locale-Maketext-Simple-0.18 ... done Downloading Authen-Htpasswd-0.16 ... done Downloading HTML-Widget-1.11 ... done Downloading HTML-Prototype-1.48 ... done Downloading Log-Log4perl-1.16 ... done Downloading Class-Throwable-0.10 ... done Downloading Bit-Vector-6.4 ... done Downloading CGI-FormBuilder-3.0501 ... done Downloading Tie-IxHash-1.21 ... done Downloading URI-Find-0.16 ... done Downloading HTML-TokeParser-Simple-3.15 ... done Downloading WWW-Mechanize-1.34 ... done Downloading Test-WWW-Mechanize-1.20 ... done Downloading PadWalker-1.7 ... done Downloading Devel-Caller-2.03 ... done Downloading Devel-LexAlias-0.04 ... done Downloading Array-RefElem-1.00 ... done Downloading Template-Timer-0.04 ... done Downloading Config-Any-0.12 ... done Downloading IO-LockedFile-0.23 ... done Downloading Crypt-PasswdMD5-1.3 ... done Downloading Test-NoWarnings-0.084 ... done Downloading Email-Valid-0.179 ... done Downloading HTML-Scrubber-0.08 ... done Downloading Sub-Override-0.08 ... done Downloading HTTP-Server-Simple-0.28 ... done Downloading Carp-Assert-More-1.12 ... done Downloading Test-Tester-0.107 ... done Downloading MailTools-2.03 ... done Downloading TimeDate-1.16 ... done Unpacking Task-Catalyst-2.0001 ... done ..... Generating HTML for Task-Catalyst-2.0001 ... done ..... Updating files in site area ... done Installing 63 packages done
最初、普通のCatalyst-5.6902をインストールすると25のパッケージをインストールすることになった。その後また調べているとCatamooseはCatalyst::Runtimeになっているらしいので、続けて、Catalyst::Runtimeをインストールしようとすると3つのパッケージをインストールすることになったが、ERROR: File conflictになる。仕方がないので元のCatalystをremoveしたらRuntimeのインストールが進んだ。Catalyst::Manual::Installationを読むと、WindowsではTask::Catalystをインストールすればよいらしいので、さらにインストールしようとするととうとう63個のパッケージがインストールされた。
そうねえ。これを理解するのにどれくらいの時間と労力を要するのだろうと思う。フレームワークってやはり大変そうだ^^;)
Catalystはパッケージの多さに敬遠していたのだが、注目度が高いということはそれなりに使いやすいのだろうと判断。少し追いかけてみることに。
まずマニュアルを見ることから始めようとしたが、Catalyst::Manualがほとんどインストールできていない。PPM-GUIでは、ファイルが既に存在しているというFile conflictエラーでうまくマニュアルがインストールできない。ppm-shellでも同様なエラーになるが、--forceオプションでCatalyst-Manualを強制的にインストールした。
Catalyst::Manual::IntroのQuickstartのsetupとrunを試した。以下がコマンドラインでの経過と起動後のWebブラウザ表示。Perl5.8をインストールしているディレクトリのsite\binにcatalyst.plとcatalyst.batがインストールされている。あっけなく動いた。
C:\Perl5.8\site\bin>catalyst MyApp created "MyApp" created "MyApp\script" created "MyApp\lib" created "MyApp\root" created "MyApp\root\static" created "MyApp\root\static\images" created "MyApp\t" created "MyApp\lib\MyApp" created "MyApp\lib\MyApp\Model" created "MyApp\lib\MyApp\View" created "MyApp\lib\MyApp\Controller" created "MyApp\myapp.conf" created "MyApp\lib\MyApp.pm" created "MyApp\lib\MyApp\Controller\Root.pm" created "MyApp/README" created "MyApp/Changes" created "MyApp\t/01app.t" created "MyApp\t/02pod.t" created "MyApp\t/03podcoverage.t" created "MyApp\root\static\images\catalyst_logo.png" created "MyApp\root\static\images\btn_120x50_built.png" created "MyApp\root\static\images\btn_120x50_built_shadow.png" created "MyApp\root\static\images\btn_120x50_powered.png" created "MyApp\root\static\images\btn_120x50_powered_shadow.png" created "MyApp\root\static\images\btn_88x31_built.png" created "MyApp\root\static\images\btn_88x31_built_shadow.png" created "MyApp\root\static\images\btn_88x31_powered.png" created "MyApp\root\static\images\btn_88x31_powered_shadow.png" created "MyApp\root\favicon.ico" created "MyApp/Makefile.PL" created "MyApp\script/myapp_cgi.pl" created "MyApp\script/myapp_fastcgi.pl" created "MyApp\script/myapp_server.pl" created "MyApp\script/myapp_test.pl" created "MyApp\script/myapp_create.pl" C:\Perl5.8\site\bin>cd MyApp C:\Perl5.8\site\bin\MyApp>perl script/myapp_create.pl controller Library::Login created "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Controller\Library" exists "C:\Perl5.8\site\bin\MyApp\t" created "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Controller\Library\Login.pm" created "C:\Perl5.8\site\bin\MyApp\t\controller_Library-Login.t" C:\Perl5.8\site\bin\MyApp>perl script/myapp_server.pl [debug] Debug messages enabled [debug] Statistics enabled [debug] Loaded plugins: .----------------------------------------------------------------------------. | Catalyst::Plugin::ConfigLoader 0.20 | | Catalyst::Plugin::Static::Simple 0.20 | '----------------------------------------------------------------------------' [debug] Loaded dispatcher "Catalyst::Dispatcher" [debug] Loaded engine "Catalyst::Engine::HTTP" [debug] Found home "C:\Perl5.8\site\bin\MyApp" [debug] Loaded components: .-----------------------------------------------------------------+----------. | Class | Type | +-----------------------------------------------------------------+----------+ | MyApp::Controller::Library::Login | instance | | MyApp::Controller::Root | instance | '-----------------------------------------------------------------+----------' [debug] Loaded Private actions: .----------------------+--------------------------------------+--------------. | Private | Class | Method | +----------------------+--------------------------------------+--------------+ | /default | MyApp::Controller::Root | default | | /end | MyApp::Controller::Root | end | | /index | MyApp::Controller::Root | index | | /library/login/index | MyApp::Controller::Library::Login | index | '----------------------+--------------------------------------+--------------' [debug] Loaded Path actions: .-------------------------------------+--------------------------------------. | Path | Private | +-------------------------------------+--------------------------------------+ | / | /default | | / | /index | | /library/login | /library/login/index | '-------------------------------------+--------------------------------------' [info] MyApp powered by Catalyst 5.7014 You can connect to your server at http://dell3:3000 [info] *** Request 1 (0.032/s) [2224] [Sat Jul 19 08:48:18 2008] *** [debug] "GET" request for "/" from "127.0.0.1" [info] Request took 0.029949s (33.390/s) .----------------------------------------------------------------+-----------. | Action | Time | +----------------------------------------------------------------+-----------+ | /index | 0.001890s | | /end | 0.003273s | '----------------------------------------------------------------+-----------'
マニュアルにあるチュートリアルのイントロでCatalystが起動できたので、先に進んでみた。CatalystBasicsとMoreCatalystBasicsの内容をクリアできれば、Catalystを使う環境が整ったと言えるかもしれない。チュートリアルの作業を進めることができるかどうか確かめていこう。見直していると、イントロも端折って進んできているみたいだが・・・
アプリケーションのフレームワークはMVCの三つの要素からなる。Model-View-Controllerである。まず、書籍データベースアプリケーションのコントローラとビューを作る。ビューはTemplate ToolkitとCSSで作る。
C:\Perl5.8\site\bin\MyApp>perl script\myapp_create.pl controller Books exists "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Controller" exists "C:\Perl5.8\site\bin\MyApp\t" created "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Controller\Books.pm" created "C:\Perl5.8\site\bin\MyApp\t\controller_Books.t" C:\Perl5.8\site\bin\MyApp>perl script\myapp_create.pl view TT TTSite exists "C:\Perl5.8\site\bin\MyApp\lib\MyApp\View" exists "C:\Perl5.8\site\bin\MyApp\t" exists "C:\Perl5.8\site\bin\MyApp\lib\MyApp\View\TT.pm" created "C:\Perl5.8\site\bin\MyApp\lib\MyApp\View\TT.pm.new" created "C:\Perl5.8\site\bin\MyApp\root\lib" created "C:\Perl5.8\site\bin\MyApp\root\src" created "C:\Perl5.8\site\bin\MyApp\root\lib\config" created "C:\Perl5.8\site\bin\MyApp\root\lib\config\main" created "C:\Perl5.8\site\bin\MyApp\root\lib\config\col" created "C:\Perl5.8\site\bin\MyApp\root\lib\config\url" created "C:\Perl5.8\site\bin\MyApp\root\lib\site" created "C:\Perl5.8\site\bin\MyApp\root\lib\site\wrapper" created "C:\Perl5.8\site\bin\MyApp\root\lib\site\layout" created "C:\Perl5.8\site\bin\MyApp\root\lib\site\html" created "C:\Perl5.8\site\bin\MyApp\root\lib\site\header" created "C:\Perl5.8\site\bin\MyApp\root\lib\site\footer" created "C:\Perl5.8\site\bin\MyApp\root\src\welcome.tt2" created "C:\Perl5.8\site\bin\MyApp\root\src\message.tt2" created "C:\Perl5.8\site\bin\MyApp\root\src\error.tt2" created "C:\Perl5.8\site\bin\MyApp\root\src\ttsite.css"
データ構造がモデルとなる。まず実体となるSQLiteデータベースを作る。sqlite3は、Home Pageからダウンロードして解凍し、パスの通ったディレクトリに格納しておくとよい。データベースはアプリケーションのルートに置いた。
C:\Perl5.8\site\bin\MyApp>sqlite3 myapp.db < myapp01.sql C:\Perl5.8\site\bin\MyApp>dir ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 4409-537B です C:\Perl5.8\site\bin\MyApp のディレクトリ 2008/07/19 13:10 <DIR> . 2008/07/19 13:10 <DIR> .. 2008/07/19 08:45 144 Changes 2008/07/19 08:45 <DIR> lib 2008/07/19 08:45 588 Makefile.PL 2008/07/19 08:45 133 myapp.conf 2008/07/19 13:10 5,120 myapp.db 2008/07/19 12:08 1,657 myapp01.sql 2008/07/19 08:45 52 README 2008/07/19 11:44 <DIR> root 2008/07/19 08:45 <DIR> script 2008/07/19 11:41 <DIR> t 6 個のファイル 7,694 バイト 6 個のディレクトリ 48,063,893,504 バイトの空き領域 C:\Perl5.8\site\bin\MyApp>sqlite3 myapp.db SQLite version 3.6.0 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> select * from books; 1|CCSP SNRS Exam Certification Guide|5 2|TCP/IP Illustrated, Volume 1|5 3|Internetworking with TCP/IP Vol.1|4 4|Perl Cookbook|5 5|Designing with Web Standards|5 sqlite> .q C:\Perl5.8\site\bin\MyApp>perl script/myapp_create.pl model DB DBIC::Schema crea te=dynamic dbi:SQLite:myapp.db exists "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Model" exists "C:\Perl5.8\site\bin\MyApp\t" created "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Model\DB.pm" created "C:\Perl5.8\site\bin\MyApp\t\model_DB.t"
コマンドラインの記述漏れでモデル化を失敗。やり直し。
C:\Perl5.8\site\bin\MyApp>perl script/myapp_create.pl model DB DBIC::Schema MyAp p::Schema create=dynamic dbi:SQLite:myapp.db exists "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Model" exists "C:\Perl5.8\site\bin\MyApp\t" exists "C:\Perl5.8\site\bin\MyApp\lib\MyApp" created "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Schema.pm" exists "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Model\DB.pm" created "C:\Perl5.8\site\bin\MyApp\lib\MyApp\Model\DB.pm.new" exists "C:\Perl5.8\site\bin\MyApp\t\model_DB.t"
DB.pm.newの内容で、DB.pmを上書きして、DB.pm..newは削除する。
DBIC_TRACE環境変数をセット。
C:\Perl5.8\site\bin\MyApp>set DBIC_TRACE=1 C:\Perl5.8\site\bin\MyApp>set DBIC_TRACE DBIC_TRACE=1 C:\Perl5.8\site\bin\MyApp>perl script/myapp_server.pl Couldn't instantiate component "MyApp::Model::DB", "Cannot load schema class 'My App::Schema': Base class package "DBIx::Class::Schema::Loader" is empty. (Perhaps you need to 'use' the module which defines that package first.) at C:/Perl5.8/site/bin/MyApp/script/../lib/MyApp/Schema.pm line 4 BEGIN failed--compilation aborted at C:/Perl5.8/site/bin/MyApp/script/../lib/MyA pp/Schema.pm line 4. Compilation failed in require at C:/Perl5.8/site/lib/Catalyst/Model/DBIC/Schema. pm line 271. at script/myapp_server.pl line 55" at script/myapp_server.pl line 55 Compilation failed in require at script/myapp_server.pl line 55.
サーバースクリプトがライブラリ、DBIx::Class::Schema::Loaderがないためにエラーとなる。このライブラリは、DBIx::Class::Schemaに含まれるのだろうか。
C:\Perl5.8\site\bin\MyApp>ppm-shell ppm 4.01 Copyright (C) 2007 ActiveState Software Inc. All rights reserved. ppm> search DBIx::Class::Schema Downloading ActiveState Package Repository packlist...not modified Downloading ppm.tcool.org packlist...not modified Downloading theoryx5.uwinnipeg.ca packlist...not modified ..... Downloading Akaneiro Text-Kakasi PPD...not modified 1: DBIx-Class DBIx::Class file producer Version: 0.06000 Repo: ActiveState Package Repository 2: DBIx-Class Extensible and flexible object <-> relational mapper. Version: 0.08009 Repo: ppm.tcool.org 3: DBIx-Class Extensible and flexible object <-> relational mapper. Version: 0.07001 Repo: theoryx5.uwinnipeg.ca ppm> install 2 Downloading DBIx-Class-0.08009...done Downloading Scope-Guard-0.03...done Downloading Class-C3-Componentised-1.0003...done Downloading Class-Accessor-Grouped-0.08001...done Downloading MRO-Compat-0.09...done Downloading Class-C3-XS-0.08...done Unpacking DBIx-Class-0.08009...done Unpacking Scope-Guard-0.03...done Unpacking Class-C3-Componentised-1.0003...done Unpacking Class-Accessor-Grouped-0.08001...done Unpacking MRO-Compat-0.09...done Unpacking Class-C3-XS-0.08...done Generating HTML for DBIx-Class-0.08009...done Generating HTML for Scope-Guard-0.03...done Generating HTML for Class-C3-Componentised-1.0003...done Generating HTML for Class-Accessor-Grouped-0.08001...done Generating HTML for MRO-Compat-0.09...done Generating HTML for Class-C3-XS-0.08...done Updating files in site area...done 35 files installed 61 files unchanged 91 files updated ppm> quit C:\Perl5.8\site\bin\MyApp>perl script/myapp_server.pl Couldn't instantiate component "MyApp::Model::DB", "Cannot load schema class 'My App::Schema': Base class package "DBIx::Class::Schema::Loader" is empty. (Perhaps you need to 'use' the module which defines that package first.) at C:/Perl5.8/site/bin/MyApp/script/../lib/MyApp/Schema.pm line 4 BEGIN failed--compilation aborted at C:/Perl5.8/site/bin/MyApp/script/../lib/MyA pp/Schema.pm line 4. Compilation failed in require at C:/Perl5.8/site/lib/Catalyst/Model/DBIC/Schema. pm line 271. at script/myapp_server.pl line 55" at script/myapp_server.pl line 55 Compilation failed in require at script/myapp_server.pl line 55.
やはりダメ。フルのパッケージ名で調べてみよう。
C:\Perl5.8\site\bin\MyApp>ppm-shell ppm 4.01 Copyright (C) 2007 ActiveState Software Inc. All rights reserved. ppm> search DBIx::Class::Schema::Loader Downloading ActiveState Package Repository packlist...not modified 1: DBIx-Class-Schema-Loader Dynamic definition of a DBIx::Class::Schema Version: 0.04003 Author: Brandon L Black <blblack@gmail.com> Provide: DBIx::Class::Schema::Loader version 0.04003 Provide: DBIx::Class::Schema::Loader::Base version 0.04003 Provide: DBIx::Class::Schema::Loader::DBI version 0.04003 Provide: DBIx::Class::Schema::Loader::DBI::DB2 version 0.04003 Provide: DBIx::Class::Schema::Loader::DBI::Oracle version 0.04003 Provide: DBIx::Class::Schema::Loader::DBI::Pg version 0.04003 Provide: DBIx::Class::Schema::Loader::DBI::SQLite version 0.04003 Provide: DBIx::Class::Schema::Loader::DBI::Writing version 0.04003 Provide: DBIx::Class::Schema::Loader::DBI::mysql version 0.04003 Provide: DBIx::Class::Schema::Loader::RelBuilder version 0.04003 Require: Carp-Clan Require: Class-Accessor Require: Class-C3 Require: Class-Data-Accessor Require: Class-Inspector Require: DBD-SQLite Require: DBD-mysql Require: DBI Require: DBIx-Class Require: Data-Dump Require: Digest-MD5 Require: Lingua-EN-Inflect-Number Require: UNIVERSAL-require Repo: ppm.tcool.org CPAN: http://search.cpan.org/dist/DBIx-Class-Schema-Loader-0.04003/ ppm> install 1 Downloading DBIx-Class-Schema-Loader-0.04003...done Downloading Lingua-EN-Inflect-Number-1.1...done Downloading Digest-MD5-2.36...done Unpacking DBIx-Class-Schema-Loader-0.04003...done Unpacking Lingua-EN-Inflect-Number-1.1...done Unpacking Digest-MD5-2.36...done Generating HTML for DBIx-Class-Schema-Loader-0.04003...done Generating HTML for Lingua-EN-Inflect-Number-1.1...done Generating HTML for Digest-MD5-2.36...done Updating files in site area...done 28 files installed ppm> quit
在ったね^^)
C:\Perl5.8\site\bin\MyApp>perl script/myapp_server.pl [debug] Debug messages enabled [debug] Statistics enabled [debug] Loaded plugins: .----------------------------------------------------------------------------. | Catalyst::Plugin::ConfigLoader 0.20 | | Catalyst::Plugin::StackTrace 0.08 | | Catalyst::Plugin::Static::Simple 0.20 | '----------------------------------------------------------------------------' [debug] Loaded dispatcher "Catalyst::Dispatcher" [debug] Loaded engine "Catalyst::Engine::HTTP" [debug] Found home "C:\Perl5.8\site\bin\MyApp" [debug] Loaded components: .-----------------------------------------------------------------+----------. | Class | Type | +-----------------------------------------------------------------+----------+ | MyApp::Controller::Books | instance | | MyApp::Controller::Library::Login | instance | | MyApp::Controller::Root | instance | | MyApp::Controller::Site | instance | | MyApp::Model::DB | instance | | MyApp::Model::DB::Authors | class | | MyApp::Model::DB::BookAuthors | class | | MyApp::Model::DB::Books | class | | MyApp::View::TT | instance | '-----------------------------------------------------------------+----------' [debug] Loaded Private actions: .----------------------+--------------------------------------+--------------. | Private | Class | Method | +----------------------+--------------------------------------+--------------+ | /default | MyApp::Controller::Root | default | | /end | MyApp::Controller::Root | end | | /index | MyApp::Controller::Root | index | | /hello | MyApp::Controller::Root | hello | | /library/login/index | MyApp::Controller::Library::Login | index | | /books/index | MyApp::Controller::Books | index | | /books/list | MyApp::Controller::Books | list | | /site/test | MyApp::Controller::Site | test | | /site/index | MyApp::Controller::Site | index | '----------------------+--------------------------------------+--------------' [debug] Loaded Path actions: .-------------------------------------+--------------------------------------. | Path | Private | +-------------------------------------+--------------------------------------+ | / | /default | | / | /index | | /books | /books/index | | /books/list | /books/list | | /hello | /hello | | /library/login | /library/login/index | | /site | /site/index | | /site/test | /site/test | '-------------------------------------+--------------------------------------' [info] MyApp powered by Catalyst 5.7014 You can connect to your server at http://dell3:3000
動いた。
ブックリストの表示予想通り、チュートリアルはうまく進まなくなってきた。おかしなところがある。テンプレートなどをどこに置くと動くのかが変化している。最初はrootの直下だと動いたが、そのうち、root\srcに置くようになって、それからどちらに置いてもエラーになるようになった。もともとroot\srcの下に置くはずなのだろうと思っていたら最初のほうのサンプルはそうではなかった。うーむ、Quickstartは表面的な操作を学ぶだけだから、操作の意味が分からない。機械的な操作では、へんなことをやっている可能性がある。そろそろ中味を調べる段階に入ったかな。
Catalystに最初に注目したのは、メーリングリストを購読しはじめた3年前(2005年)の夏だろう。Catalystとは「触媒」の意だが、マニュアルページのタイトルには、「The Elegant MVC Web Application Framework」とある。僕のようなパーソナルなスクリプト言語ユーザーにとっては、フレームワークは自分自身なので、他のフレームワークを使う必然性は感じられない。わけのわからないもの(失礼!)に取り込まれたくないという感じがある。が、データ構造としてのモデル(Model)、データ構造をいかに表現するかを決めるビュー(View)、データ構造と表現を結びつけて操作する(?)コントローラ(Controller)と分けて考えるMVCフレームワークは合理的だ。しかし、表現とデータの操作は一体で行われることが多い。そこをどの程度分離できているのか、どのように分離しているのかに興味がある。
普通はWindows上ではモジュールが足りなくてあきらめて放り投げてしまうことが多いのだが、Catalyst関連は、ActivePerlのモジュールは揃っている。少し調べていくことにしよう。連想記憶モデル、オブジェクトモデル、集合論モデル、確率的モデル、アクターモデルなど、最近のモデル理論を廻る僕の思索の一助となるかもしれないからである。
まず、フレームワークを生成するxxx_create.plを調べると、中味はほとんど空で、Catalyst::Helperモジュールを呼んでいる。マニュアルを調べる。うーむ、結局、そこもほとんど空であり、・・・。いろいろと辿ってみたが、マニュアルを最初から読めってことだろうなと自分で納得。
Catalyst関連のドキュメントの探索で得られた予備知識。CatalystのComponentとは、Model、View、Controllerを指す。ViewはActionにつながるが、ActionはHTMLのFormのaction属性を意味している。Actionの記述はテンプレートで行い、定義するのはControllerの役目になる。探索の取りあえずの終点となったCatalyst::Controller::FormBuilderには、「このベース・コントローラーはCatalystのCGI::FormBuilderの機能性と次のテンプレーティング・システム、Template Toolkit、Mason とHTML::Templateをマージする」とある。ActivePerlのモジュールリストを見ると、いずれのテンプレーティング・キットもWindowsで使えるようだ。CGI::FormBuilderのモジュールも中味が濃いので、Catalystを理解するのと同様に大変そうかな。
そうこうしているうちに、うまく動かなくなった原因に思い至った。チュートリアルの過程のModelの生成で、create=dynamicとcreate=staticを混在させたせいだろう。
2005年当時のCatalyst関連記事{[Perl]CatalystでAjax Wikiを動かす (2005/08/30)}を読み直していて、元のスクリプトが2006年にupdateされたようなので調べた。
MiniMojoこのページはTEXTAREAに入力したものがページに反映出力されるというAjaxサンプルだ。Firefox(3.0.1)ではまともに動かない。HTMLソースを印刷してみると、52ページ×70行程度の分量がある。最初の半分ぐらいはprototype.jsで、残りはscriptaculous.js、更に残りのBODY本体は10行程度のもの。最早、HTMLはjavascriptの塊に変身してしまったようだ。Ajaxのjavascriptライブラリのほとんどは無駄じゃない・・・。このアプリケーションを動作させるのに、Catalyst::Plugin::Textileのインストールが必要だった。蛇足だが、本家のMOJOはこれ。
グーグル社員、「App Engine」でPerl対応を目指すプロジェクトを明らかにネタ。Catalyst Core Developer参戦の模様。
最初の注文は品切れでキャンセルされたが、間髪を入れず、次の注文を出した。少し割高だったが仕方がない。今日、届いた。
PSPのインターネットラジオを再生するidog清と濁ネタ。TSNETネタのひさしぶりのスクリプト IIの記事に関連してコメントをいただいた。「日本語の奇跡 <アイウエオ>と<いろは>の発明」で、アイウエオ順といろは順について読んだので、なんとタイムリーな話題だったかと思ってしまった。
僕の書いたスクリプトは、文字辞書にない文字がデータに含まれるとRuby1.9.0ではエラーになるというお話。取りあえず、文字辞書を清音に加えて、濁音・半濁音に対応することにして、お茶を濁そうと思ったのだが、手抜きは止めて、Yさawk仕様の文字辞書にない場合の対応を加えることにした。スクリプトをここにも転載しておこう。
tbl = "いろはばぱにほぼぽへべぺとどちぢりぬるをわかがよただれそぞつづねならむうゐのおくぐやまけげふぶぷこごえてであさざきぎゆめみしじゑひびぴもせぜすずん".split(//) j = 0 char = Hash.new for i in 0..(tbl.length - 1) do j += 1 char[tbl[i]] = j end numstr = "" words = Hash.new while line = DATA.gets wchars = line.chomp.split(//) p wchars.length for k in 0 .. (wchars.length - 1) do if char[wchars[k]] numstr += sprintf("%02d", char[wchars[k]]) else numstr += sprintf("%02d", tbl.length + 1) end end words[numstr] = line numstr = "" end words.keys.sort.each{|numstr| print "#{numstr} #{words[numstr]}"} __END__ いぬ とちのき にんじん畑 はむたろう ろば へらぶな とり ほらがい
松岡正剛の千夜千冊 1251夜 第千二百五十一夜 2008年7月04日『現代日本のアニメ』スーザン・J・ネイピアネタ。まだ、RSSは配信されていなかった。たまたま覗いて気が付いたのだ。真っ先に読もうと思えば、毎日、チェックしたほうがよいかもしれない。
千夜千冊はペースは遅いが、絶好調でまだまだ面白い本が出てくる。1250夜をこれで越えた。2006年6月6日の1145夜から遊蕩篇に入ったから、大雑把には2年で100夜の進捗である。このペースなら2000夜に到達するまでに、15年を要する。放埓篇は、1144夜に2000年2月23日~2006年5月22日の6年3ヶ月を要した。ペースは1/4程度に落ちているが、書くことは身を削るようなもの、息長くゆったりと続けていただきたい。
昨夜はアニメの話で、アメリカ人が日本アニメをどう読むかというような話が主軸となるが、もちろん、対象の本を追い越して読んだというだけあって、様々なことが語られるのだが、まだまだ終わらないような気がする。確かにディズニーなどのアメリカマンガの勧善懲悪的肯定的世界像と日本のアニメは比較にならない。「もののけ姫」(1997年)を日本人はどのように見たのか。ドラマチックな物語の完結とともに問題の状況は変化するが、完全に解決しないままに矛盾を内包した世界は持続していく。良いも悪いもない、万物流転の世界観だろう。最後は本書にある宮崎駿の言葉が引用されて終わる。衝撃的な言葉かもしれない。
養老孟司、宮崎駿著「虫眼とアニ眼」(2008年)に宮崎駿が「もののけ姫」のストーリーについてどのように考えていたかがあるので、その部分の最初の方を少し引用しよう。
・・・「もののけ姫」であるサンという女の子の、人間に対する憎悪とか不信を、はたして解放することができるかどうかというのが課題だったんですが、作っていくうちに、どうにも解放できない、解放なんかさせたらウソになる、そういうところに行かざるをえなかった。自分の中で全然払拭できないんです。そう思って周りの人間たちを見ると、決してそう強く意識しているわけではないけれど、やっぱりみんな「人間嫌い」になっているんですね。・・・
(「虫眼とアニ眼」、41ページ)
作る側と見る側では作品に対する見方が全く異なる。作者は現代人をサンに重ねてみている。養老先生は「日本の作品って染み込むものだ。論理的に解釈して捉えられるものではない。」というような発言をされている。「諸行無常」、「行く川の流れは絶えずして、しかももとの水にあらず」が出てくる。「もののけ姫」は宮崎駿作品では最も難解かもしれないが、そういうことだね。
ハツもあったのだったネタ。五十音順、いろは順の定義はWikipediaを参考にしよう。
Yささんのawkスクリプトはでびさんのサンプルのいろは順に並べることに対応していたのだが、すべてのかな文字を想定してはいなかった。それでRuby版は濁音・半濁音に対応したのだが、よく考えるとそれでも足りないことに気が付いた。半濁音には、「ぱぴぷぺぽ」だけでなく、「ぴゃぴゅぴょ」もある。そのほかに、促音の「っ」、開拗音の「ぎゃぎゅぎょ」など、長音の「ー」もある。また、キーボードには、「ぁぃぅぇぉ」の小文字はあるが、肝心の合拗音の「くわぐわ」の「わ」の小文字がない。
長音の取り扱いを少し考えたのだが、最も楽な撥音「ん」の次に置くことにした。他の五十音順の定義では母音と子音の区別も必要になりそうだから敬遠した。スクリプト自体は変わってないが、一応、辞書とデータを作り直したものを置いておこう。
tbl = "いぃろはばぱにほぼぽへべぺとどちぢりぬるをわかがよょただれそぞつづっねならむうぅゐのおぉくぐやゃまけげふぶぷこごえぇてであぁさざきぎゆゅめみしじゑひびぴもせぜすずんー".split(//) j = 0 char = Hash.new for i in 0..(tbl.length - 1) do j += 1 char[tbl[i]] = j end numstr = "" words = Hash.new while line = DATA.gets wchars = line.chomp.split(//) p wchars.length for k in 0 .. (wchars.length - 1) do if char[wchars[k]] numstr += sprintf("%02d", char[wchars[k]]) else numstr += sprintf("%02d", tbl.length + 1) end end words[numstr] = line numstr = "" end words.keys.sort.each{|numstr| print "#{numstr} #{words[numstr]}"} __END__ いぬ とちのき にんじん畑 はむたろう ろば へらぶな とり ほらがい ぴょん吉 買って じゅう あーん きぃーん かぁーん
TS Networkのつながりを保ってくれたのはGoogleだった。TSNETスクリプト通信をGoogleで検索していて、Maukie!さんのブログを見いだした。そこで、最近のいろはソートネタが継続することになった。
元々、僕が構想していたのはTSNET(メーリングリスト)を中心とするホームページ間の緩やかなネットワークだった。TSNETは公開されているために、読むだけならsubscribeする必要はない。今回は元FGALTSユーザーとの再会であったわけだ。TSNETの遊星的ユーザーの存在に気が付いたのは大きな収穫だった。TSNETスクリプト通信への投稿条件をもっと緩めるべきかもね^^;)
ホノオとシャドーネタ。おもしろい写真なので、調べた。関連ネタは犬型ロボット「idog」、マックに登場などとidogである。
iPhoneもおもしろいけど、idogもおもしろい。どこかでidogのニュースは見ていたはずだけど、記憶には残っていなかった。今回のおまけのアイデアには感心した。なーるほどと。
idogをいろいろと調べた末、PSPやICレコーダ用のスピーカーとしておもしろそうだとの結論に。PSPの内臓スピーカはよくない。イヤフォンで聴くことが前提で考えられているのだろう。i-dog STEREO COOL TAPを注文。遊びがあるのが楽しそうだ。
「クラウドコンピューティング」とは?ネタ。「Cloud computing」が現われる本日記の最初の記事は、Web 3.0 - Semantic Web を越えて? (2007/01/03)である。
Webは蜘蛛の巣だが、雲の巣だったというお話。