Perlは何の略かというと、二つぐらいが有名だが、Postmodern programming languageの略だと言えるかもしれない。s/(P)ostmod(er)n programming (l)anguage/$1$2$3/だからであるというのは冗談だが、ポストモダンのプログラミング言語だとは、LWが言っているはずだ。Mooseを、作者のSTEVAN Little氏はポストモダンなオブジェクト指向システムだと言っている。Perlは1987年に生まれた。1989年にベルリンの壁が崩壊したのを近代の終わりと見做そうという考え方もあるらしいので、ポストモダンなプログラミング言語とLarry Wall氏が何時発言したのかは確認していないが、適切な考え方かもしれぬ。ポストモダンなオブジェクト指向システムが出るのにはさらに20年程度を要したことになる。
Mooseとは、postmodern object systemの略である。s/post(mo)dern (o)bject (s)yst(e)m/$1$2$3$4/だからである。意味は「へらじか」。現在、頻繁にバージョンが上がって、モジュールが増殖中である。まだまだ、ドキュメントに一貫性がないが、先に見たように簡単にオブジェクト指向モジュールを作れることは間違いない。Walking World ProjectのGoogle Maps v2 版は、Mooseを使ったスクリプトが出力したものに置き換えた。なにやら期待を持たせてくれる。古いモジュールをMooseで拡張することさえできるみたいなことが書いてある。しかし、それにはかなり深いレベルでの理解が必要なようで、もう少し詳しいサンプルが欲しいところだ。
Larry Wallも注目している最新のオブジェクト指向システムモジュール、Mooseを使ってみる。題材として、手書きのWalking World Project Google Maps API v2 版をCGIで書き直すことにした。これを整理して、5月創刊予定のTSNET会報に載せる予定だ(投稿規程)。ここでは下書きのようなものになるだろう。
僕がPerlでオブジェクト指向を試みたのは、「実践実用Perl」(2004年)に「オブジェクト指向Perlモジュールミニ入門」を書いた時が最初である。自分のために書いたのである。その頃は、リファレンス-デリファレンスさえ、よく知らなかったものだ。まだ、Perl4のプログラミング・スタイルから抜け出していなかったから当然だった。単なるテキスト処理にオブジェクトは必要とは思われなかったが、WebクライアントプログラミングでPerl5のオブジェクト指向モジュールを使い始めていた僕はその必要性に気付いていた。「ミニ入門」を書くことによって、ようやくPerl5に近づいたのだった。
昔ながらのblessを使う工作的なオブジェクト指向モジュールに比べ、Mooseを使ってオブジェクト指向モジュールを書くのは超簡単でスマートだ。newメソッドを定義する必要もない。オブジェクトの属性を列挙して、必要な属性を使って、メソッドを書くだけ。例えば、Walking World Projectページのヘッダ、ボディとフッタ出力用のモジュールはこんな感じ。オブジェクト属性値の読み書き可否、データ型、デフォルト値などを指定できる。
package CreateGMap; use Moose; has 'baseurl' => (is => 'rw', isa => 'Str', default => '');# マーカーデータ中の相対URL補完用 has 'key' => (is => 'rw', isa => 'Str', default => '');# Google Maps KeyのURL文字列 has 'title' => (is => 'rw', isa => 'Str', default => '');# ページタイトル has 'desc' => (is => 'rw', isa => 'Str', default => '');# ページの説明 has 'id' => (is => 'rw', isa => 'Str', default => 'map');# Google Mapの表示位置 has 'width' => (is => 'rw', isa => 'Int', default => 500);# Google Mapの幅 has 'height' => (is => 'rw', isa => 'Int', default => 600);# Google Mapの高さ has 'messageid' => (is => 'rw', isa => 'Str', default => 'message');# Google Mapのセンター経度緯度表示 has 'lng' => (is => 'rw', isa => 'Num', default => 132.472833);# 経度 has 'lat' => (is => 'rw', isa => 'Num', default => 34.385555);# 緯度 has 'data' => (is => 'rw', isa => 'Str', default => 'data.xml');# マーカーデータファイル has 'zoom' => (is => 'rw', isa => 'Int', default => 1);# Google Mapの縮尺設定 sub header { my $self = shift; my $header = <<HEADER; ..... <title>$self->{title}</title> ..... HEADER return $header; } sub body { my $self = shift; ..... return $body; } sub footer { my $footer = <<FOOTER; ..... return $footer; } 1;
次に、Google Mapsで表示する地域を切り替えるデータリストの出力用モジュール、CreateGMap::Area。
package CreateGMap::Area; use Moose; has 'type' => (is => 'rw', isa => 'Str');# button has 'name' => (is => 'rw', isa => 'Str');# button名 has 'value' => (is => 'rw', isa => 'Str');# ボタンに表示する地域名 has 'lat' => (is => 'rw', isa => 'Num');# 緯度 has 'lng' => (is => 'rw', isa => 'Num');# 経度 has 'data' => (is => 'rw', isa => 'Str');# Marker用データファイル名 has 'zoom' => (is => 'rw', isa => 'Int');# Google Mapのzoom値 has 'desc' => (is => 'rw', isa => 'Str');# 地域紹介 sub tableunit { my $self = shift; return sprintf("\t<tr><td>\n\t<input type=\"%s\" name=\"%s\" value=\"%s\" onClick=\"onLoad(%.6f, %.6f, '%s', %d);\">\n<p>%s</p>\n<hr>\n\t</td></tr>\n", $self->type, $self->name, $self->value, $self->lat, $self->data, $self->lng, $self->zoom, $self->desc); } 1;
こんな具合に使う。
#!/Perl5.8/bin/perl.exe use CreateGMap; use CreateGMap::Area; use YAML qw(LoadFile); my $gmap = CreateGMap->new( baseurl => '<- リンクURLが相対的な場合に他のサイトに表示する場合に使う ->', key => '<- Your Google Maps Key ->', title => '<- Page Title ->', desc => '<- Page description ->' ); print $gmap->header; print $gmap->body; my @hashref = LoadFile('<- YAML形式の地域切替用データファイル ->'); foreach (@hashref){ my $area = CreateGMap::Area->new(%$_); print $area->tableunit; } print $gmap->footer;
確かにモジュールを使って書くとスクリプト本体は簡潔に書けるようになる。現実の複雑さがオブジェクト指向モジュールによって隠される。オブジェクト指向モジュールを作成する過程で、問題解決に必要な情報と結果となる表現とが整理されて結び付けられる。しかし、モジュールの使い方を覚え、スクリプトを書いて目的を達するだけではプログラミングの技量はほとんど向上しないだろう。是非、自作のモジュールを生み出すべきなのである。それには、Mooseを使うのが最適かもしれない。
開店後、最初の休日。様子を見てこようと、2時過ぎに歩いて出掛けたのだが、寒いし、風が酷くて砂埃が舞う。車にしようかと途中から引き返す。車の外気温指示は8℃、今朝は暖かく、6時半には10℃あったのに、気温が下がってきている。しかし、車の選択は失敗の元、出汐で左折、二号線に出ると大渋滞だ。おそらく比治山通りを南下する車が右折して合流するために電車通りとの交差点に達するまで、600mを1時間掛かった。このまま進むと早くてもさらに1時間はかかるだろうと、あきらめて左折、ゆめタウンを右に、表入り口に車が少ないのに驚きながら、皆実町6丁目の交差点を突っ切ると、御幸橋側には車が橋の上まで長蛇の列。あれあれ、やはり車はだめだ。
車を家に置いて、歩いて出掛ける。気温が10℃まで上がってきたし、砂埃が舞うほどの風ではない。正面左側の入り口から、紀伊国屋書店のある3階にエスカレータで上がる。一見、広そうだが、雑誌が異常に多いので、それほど見るところはない。文庫・新書コーナーを30分ばかり物色しただけで終わった。ヴィレッジヴァンガードはゆめタウンの案内図では雑貨と表示されているが、うらげつブログの話の通り、書籍も置いてある。3階をぐるっと回って、今日のところは終了。店内では、周辺道路の混雑についてだけでなく、駐車場からの出庫に時間が掛かることに陳謝するアナウンスを流していた。遠くから来る人は広島駅から広電皆実線を利用したり、送迎バスを使うのが正解だろう。時刻表を見るとバスは1時間に3本ある。帰り道で雪が降り出した。寒くなりそうだ。東京でも春一番の後、砂埃の舞う突風が吹いた。突風は全国的な現象。
今日届いたフォーサイト3月号、シリコンバレーからの手紙、138は「目からうろこが何枚も落ちたオープンソースの"人間的本質"」ネタ。
オープンソース開発の動機が利己的なものということで、目からうろこだったのだそうだ。まあ、利己的といっても自分のやりたいことをするということだから、当然の動機なわけで、それで目からうろこと言われてもねと思ったり。でも上記対談はおもしろいので、読むべし。対談では、利己的な動機の前に知的好奇心があげられている。それが抜けては人間的本質が半分足りなくなる。ついでに、まつもとゆきひろ×結城浩,Rubyを語るもある^^)
22日にグランドオープンする(20日にプレオープンする)ゆめタウン広島の周りを散歩してきた。撮影した写真をPicasaウェブアルバムにアップ。
Picasaのウェブアルバムの編集は極めて簡単だ。自作派としてはあまりおもしろくないが取りあえずアップするには便利。マップへの貼り付けもドラッグアンドドロップだし、写真の移動・削除、キャプションの編集も自在だ。ただ、写真の明るさを変えたものを再アップロードすると、うまく上書きされるものの、キャプションが消えてしまう。再入力になるので注意すること。
ゆめタウン広島 |
入り口は、表玄関側の広電比治山線が走る道路側に一つ、予想通り、裏側の京橋川側道路に一つの計二つ。出口は、表と裏に一つずつ、北側に、屋上と地下からの出口が一つずつ、計四つ。電車が通る宇品通りを北上して入る場合には、正面入り口が混むので入場が制限されそうだ。その場合は北側道路を経由して、京橋川側の入り口に回ることになるかもしれない。そうすると川沿いを市内や二号線から南下してくる車と合流することになるので大変だろうなあ。その誘導が重要になりそうだ。
現代人は日本の歴史を知らなさ過ぎる。戦後、閉ざされた歴史をもう一度開いてみよう。本居宣長は小林秀雄の現代日本語の導きがあるので、最適な道かもしれない。
例によって、固有名詞の抽出から始めよう。
Wikipediaには、橘守部は伝説と史実を区分する必要性を説いて、本居宣長を批判したとある。これで小林秀雄の宣長の弁護の話につながる。そんなことは本人は百も承知だというわけだ。
吉野百首詠を詠んだ翌年、遺言書を認めたあと、桜の歌を詠んだ歌集「まくらの山」(?)の後記が引用されている(小林秀雄著「本居宣長 上」、新潮文庫、17-19ページ)が、最初の文の長さには日本的な文章の流れを感じてしまう。「あなものぐるおし」の掛かる言葉に言及した後、桜の歌が三首示されて一節は終了する。
先週の木曜日は、朝4時半起きで、午前10時には東京でメールで届いた資料を修正して、ミーティング。帰りには、種村季弘著「書物漫遊記」(ちくま文庫、1986;初出: 筑摩書房、1979)と吉本隆明著「柳田国男論・丸山真男論」(ちくま学芸文庫、2001)を手にしていた。最近は家内から読む本が支離滅裂だと言われる。なにしろここ数年前までは、コンピュータ・プログラミング関係か、ブルーバックス、SF、クランシー、立花隆、量子論、宇宙論、複雑性の科学、脳科学、人工知能関連ぐらいしか買わなかった。
この読書傾向の変化は、この日記がもたらしたものだ。新しい知識が世界を覆いつくすまでは終わらないだろう。
[本]『 複雑な世界、単純な法則 』 - Small World 再び経由、SS > NF reviews > Mark Buchanan経由、 Susan Stepney: homeにあるmodelling and abstractionが今日のタイトルだ。このページにあるAn OO structuring for Z based on Viewsが具体的なものだ。ここのViewsは、Model-view-controller(日本語)のviewだ。ここにあるStructuring(構造化)は単純なオブジェクト指向とは違う感じ。
「Z」とは何かを探るのが本日の任務なのだが、Wikipediaにもページがある。
結局、世界を覆いつくすには集合論を理解しなくてはならない。
Zは仕様記述言語の一種で、UMLの形式的なチェックに使おうとの試みもあるようだ。言葉と物の立場からは、ものごとの構造のモデルを考えるのには参考になるかもしれない。
新規開店情報:月曜社の本を置いてくださる予定の本屋さんネタ。「ヴィレッジヴァンガードゆめタウン広島」って本屋なの。ふーむ、検索すると、ヴィレッジヴァンガードは、広島ではサンモールとマリーナホップにもある。
ゆめタウンには紀伊国屋書店が30万冊で出店するのが話題になっているのだが、ミステリあれやこれや 紀伊国屋書店 ゆめタウン広島店によれば、フタバ図書のギガ宇品店よりは大きい程度。ゆめタウン広島に「紀伊国屋書店」−SCにマッチした品ぞろえ - 広島 ...というふうに書いてある。SCって何なんだろう。SC - Wikipediaを見て、ようやく、ショッピングセンターであることに気付く。ありがとう^^;)
ウラゲツブログによれば、ヴィレッジヴァンガードが期待できるようなので、楽しみが倍増した感じ^^)最近、TSUTAYA皆実町店が模様替えをして書店は止め、CDビデオレンタルにコミックレンタルを加えて、レンタルに集中。フタバ図書ジャスコみゆき店とゆめタウンに挟撃される前に、転進を計ったのだろう。
「言葉と物」シリーズから、「モーツァルト」読解シリーズが派生し、「小林秀雄」読解シリーズへと展開しつつある。遺作「正宗白鳥の作について」(1981-1983)はあるが、「感想」(1958-1963)と「本居宣長」(1966-1977;本居宣長補記は1982年刊行)が小林秀雄の思索の到達点とすると、しばらく、ここらへんに逍遥することもよいだろう。
小林秀雄にかなり深入りしている人の詳細な年表を見つけた。以前も見つけていたかもしれないが^^;)
「本居宣長」は、ベルグソンとセットでシリーズ化しそうなので、過去の記事をリストアップしておこう。
「本居宣長」は、戦時中に「古事記」を読んでみようとして、本居宣長の「古事記伝」で読んだという話からはじまり、折口信夫から「小林さん、本居さんはね、やはり源氏ですよ、では、さようなら」と言われたという思い出が語られる。折口信夫という名前は知っているが、どのような経緯で知ったのか、もう記憶はかすれてしまって復元できないし、読んだ本もない。源氏は「源氏物語」のことだろうけど、戦後世代のわれらには、すべては遠く歴史のかなたに埋もれている。
少しは調べておこうか。例によって、千夜千冊をひもとく。松岡正剛の千夜千冊『死者の書』 折口信夫がある。Amazonで調べて、「古代研究T---祭りの発生」、「死者の書・身毒丸」、「言語情調論」を取り寄せてみる。しかし、これ以上を追いかけても深みにはまりそうだから、積読の位置を与えることにする。検索すると、青空文庫の作家別作品リストがWikipediaの次にリストされる。そこからウラ・アオゾラブンコなるものがあることも知った。
青空文庫に公開されている作品から「日本文章の発想法の起り」を縦読みブラウザで読んでみた。
日本文章の発想法の起り
文章の起源を考えるという視点というか発想はめずらしいなあと思った。やはりもう少し深入りするかもしれない。源氏物語関連では、反省の文学源氏物語がある。
本居宣長の最初に「古事記」と宣長の著書である「古事記伝」が出てくると、知っていなければ論理的、必然的に「古事記」あるいは「古事記伝」とはどういうものかを知らなくてはならないことになる。記紀に関する記憶としては、スサノオノミコトやオオクニヌシノミコトについて、それぞれ、ヤマタノオロチ退治やイナバノシロウサギの御伽話があるぐらいであり、大昔に「日本誕生」(東宝、1959)の映画のカラーポスターや岩戸隠れで朝潮太郎が出演したのを憶えているぐらいである。正確に古事記とは何かを知らない。ましてや、古事記伝については知らない。
実は「古事記」と「古事記伝」そのものに当たるのに先走って、古事記がどのようなもので、どのように読まれているのか、梅原猛著「神々の
第六百六十夜(660)、2002年11月15日。寺田寅彦(1878年11月28日 - 1935年12月31日)は、かなりの著作が青空文庫で読めるのだが、すべてかどうかは知らない。
千夜千冊にある「俳句と地球物理」は著作のタイトルではなくて、角川春樹事務所が付けたタイトルなのだそうだ。現在の視点で編集された「寺田寅彦」ということらしい。もっとも10年前の話だが。
昨日、広島国際会議場フェニックスホールでロジャー・ノリントン指揮、シュトゥットガルト放送交響楽団の演奏会があった。演目は次の通り。
ヴァイオリンのヤンセン嬢もアンコールに答えてくれたし、9時を過ぎたよとノリントンが大袈裟な身振りで腕時計を見て、笑いを誘いながらも、ブリテンとシューベルトの2曲が演奏され、最後まで素晴らしい演奏を堪能した。
この演奏会を知ったのは、[WWW]言葉と物 LXXXIV - 「モオツァルト」読解 第6節(2007/11/24)の記事を書いたときだ。ロジャー・ノリントンの話(さっそく、レポートが載っている)を読んで、ノリントンについて調べると、フェニックスの演奏会があることがわかり、@ぴあでWebから予約していた。電子チケットぴあはファミリーマートのファミポートからバーコードを印刷したシートを出力して、レジで印刷して発券することができる。
フェニックスホール演奏会前風景2階席といっても、下に見えているのは地下席である。実質的には3階席。視覚では、写真よりはもっと近くに見える。2階席からはヴァイオリン独奏の音量が小さいことは否めなかったが、交響曲は耳に優しかったかもしれない。