2011年4月Archives

蕉門俳諧・俳論集 — 仮名遣い再考

集英社から出ていた『古典俳文学大系』所収の三冊を古書で手に入れた。『蕉門俳諧集』一及び二,そして『蕉門俳論俳文集』。集英社は『週刊少年ジャンプ』で儲けて,赤字垂れ流しでこういう本を作る。関係ありませんが,もうひとつ言うと,ベースボールマガジン社は『ベースボールマガジン』で大儲けする一方で,恒文社という版元名でロシア文学の良書を出して赤字を垂れ流す。わが国の出版文化の,しかもお国の強制とは無関係の面白い習性である。

このシリーズは私にとって垂涎ものであって,高価でこれまで手が出なかった。これだけはと思う巻を個別にアマゾンのマーケットプレイスで見つけて購入したのである。『芭蕉七部集』以外の,たとえば『虚栗』などの俳諧書や,『去来抄』・『三冊子』以外の芭蕉高弟による俳論は,文庫本などの簡易な形では読むことが出来ない。本大系本は芭蕉関係論で言及される作品をほぼ収録しているんである。

芭蕉の連句・俳句の理解のために少しずつ読みたいと思っている。とりあえず,郵送されて来てすぐ『蕉門俳論俳文集』を斜め読みしていたら,『二十五箇条』の『仮名遣ひの事』が眼に留まった。この書は解説によれば「従来秘伝書として伝写を重ねて来たもの」で,「内容は蕉門の作法書・俳論書として大方不都合な点はな」い。蕉門十哲のひとり各務支考が纏めたものだろうとある。

世に定家卿のかな遣ひといふものあれども,あまりに繁きゆへ(ゑ)にまぎれてしれがたし。むかしはかなづかひの詮義(議)もなけれ共,其後の事なれば大概しりて,埒の明事なり。されば,はいかいには,さむふとも,あつふともかくなり。さむう・あつうと書ては,かな書の経文見るやうにてわろし。此類は心得あるべき事なり。
大磯義雄・大内初夫校注『蕉門俳論俳文集』古典俳文学大系10,1976 年第三版,75頁。下線は私。

岩波文庫で芭蕉の句を読んでいると,歴史的仮名遣いから外れる表記に頻繁に出くわす。たとえば,「さとのこよ梅おりのこせうしのむち」(貞享四年)。「おりのこせ」の「お」は,「折る」の歴史的仮名遣いならば,「を」が「正しい」ことになっている。『旧かなづかひで書く日本語』の著者・萩野貞樹ならば,「降り残せ? 意味不明」と宣うに違いない(国語が専門のくせに哀れな学者先生なんである)。この時代は「実態としての仮名遣い」(築島裕『歴史的仮名遣い—その歴史と特徴』による)が主であった,要するに正書法が確立していない実用本意の仮名遣いの時代であった,という認識しか私にはなかったのだけれど,文藝に関る者には独特の統制があったことを『二十五箇条』のこのくだりは示している。ここにあるのは,「正しい」仮名遣いなんて概念ではなくて,「経文」を連想させたくないという「スタイル」の議論である。「正しい」かどうかなんて気にするはずがない。何故なら,正否の判断を分ける「ルール(正書法)」がまだ確立されていなかったのだから。ここで「正しいかそうでないか」は無意味だというのを「相対主義」っていうんでしょうかね?(そういうバカがいるんである) それはそれとして,『二十五箇条』を読み,古典において書き言葉に意識的であるとはこういう立場なのかと私は感心してしまった。

蓮實重彦 — 私はその文体が大嫌いだが言説についてはいたく尊敬してもいる — が,フローベールの書翰について面白いことを書いている。フローベールは若き日に熱愛した娼婦からの手紙にあった綴り誤りについて(彼女は作家への純な愛を書き綴るとき,automate を otomate と書いた),後年,綴り誤りに対する軽蔑と階級的優越感を愛人に書き送っている。これに対する蓮實の分析は以下のとおり。ちょっと長大な引用ですみませんが,仮名遣いを考えるにあたっても,きわめて示唆的で鋭い。

つまり,正しく書くことがフランス語にとって知的財産と見なされうることになったのは,十九世紀前半のことにすぎないというわけだ。そして,一八四〇年に十八歳であった地方都市の青年ギュスターヴ〔フローベール:私註〕は,正しく綴ることが階級的符牒となった第一世代に属しているのである。その子弟をパリの大学に送って勉学を続けさせようとするほどの地方のブルジョワジーにとって,いまや正確な綴字法の習得が一つの知的資産となったわけだ。更にいうなら,階級的差別の新たな指標がそこに形成されたとでもしようか,とにかく,automate と otomate,catégorie と cathégorie をめぐる挿話は,そうした歴史的な文脈で捉えられねばならないのだ。一見,言葉への潔癖な姿勢かと思われるギュスターヴの中には,一つの政策として普及したばかりの綴字法を介して,無意識のうちに社会的抑圧に加担する加害者の姿が,その新興ブルジョワジーとしての階級意識として露呈されている。彼は,たった三代ほど昔の自分の祖先が,その姓を Flobert とも Flaubert とも綴ったことを知らずに,そこに見られるのと全く同じ母音の綴りをめぐって,automate と otomate の書き違いを許すことができない。現実に発音された場合は,ほとんど違いとして響くことがなく,ただ,ラテン語の知識があればこそ人が auto- と綴りうる一語へのこのフローベールへのこだわりが,自国語への愛の一形態だとするなら,その愛は,明らかに捏造された政治的な虚構にほかならぬ。

「正しい」綴りや仮名遣いへの執着は近代人の幻想でしかない。実際の生きた言語の姿を,国語というフィクションを通してではなく,きちんと見よ,と蓮實はいうのである。なんか「正字正仮名」とやらの戯言をそのまま批判しているように私には思われる。「彼は,たった三代ほど昔の自分の祖先が,その姓を Flobert とも Flaubert とも綴ったことを知らずに,そこに見られるのと全く同じ母音の綴りをめぐって,automate と otomate の書き違いを許すことができない」ー「『正字正仮名』信奉者はたった三百年あまり昔の芭蕉が,俳句で『おりのこせ』と綴ったことを知らずに,そこに見られるのと同じ音の仮名遣いをめぐって,『を』りのこせと『お』りのこせの書き違いを許すことができない」。ちゃんと古典を読んでから「傳統」を語ってくださいまし。
 

20110427-shomon.png

古典俳文学大系〈10〉蕉門俳論俳文集 (1970年)

古典俳文学大系 10
大磯義雄・大内初夫校注
集英社

物理の宿題

娘が Mac を貸してくれと来た。物理で「人は一日に何 kg の空気を吸うか」という課題が出たらしい。インターネットで資料を漁るのだという。ちょっと横で煙草を吸いながら見ていると,検索で Yahoo! 知恵袋のページが出て来た。「人は一日に何 kg の空気を吸うか」という問い合わせ。誰かの回答が付いていた。「あ,この Yahoo ID,多分クラスのあの子だ!」と娘。付いた回答をいただこうとしている。

「お前ぇの学校ってその程度か? お前ぇらな,世の中をバカにしてんのか! あの京大ズル受験生とおんなじじゃねぇか! 成人の平均的な肺活量や呼吸回数だとか,WTO のようなしかるべき機関ならデータをもっているはず。空気の単位重量なんて酸素,窒素などの組成から出るはず。そういう前提条件をたてて,それに基づいて計算すりゃいいじゃねぇか!」

こいつら,「インターネットで調べものをする」とは問い合わせサイトに質問を書き込んで回答をいただくことだと思っているのかも知れない。こういう教えてクンたちが会社に入ったら何をやらかすか,そら恐ろしくなる。そのうち,仕事の内容を書き込んでどうすればよいか問い合わせるのが当たり前になるかも知れない。プログラマ,出版文書組版関係では,すでにそういうのもいるらしい。「締め切りで急いでいます,よろしくお願いします」— こういうのをいくつかみたことがある。また「善意ある」人がいるから面白い。
 

* * *

4.29 付記

その後,娘は入手した資料と,生活の特徴的なタイミングで計った自分の呼吸回数とで,前提条件を設定し,それに基づいて「一日に吸う空気の重さ」を 135 kg と算出した。Yahoo! 知恵袋における「善意ある」人の付けた回答は 75 kg。倍近い差がある。どちらが確からしい数値かは判断できないけれども,娘が出した数値のほうが遥かに価値があると私は確信している。どの数値を採るかによって己の何か重大なものを賭けなければならない事情があるとすれば,私は迷わず 135 kg を採用する。条件の設定から自分で検討し,かつ則ったその条件を明示し,それに基づいて算出された数値の重みは,「善意ある」回答の比ではない。Yahoo! 知恵袋の質問者は「善意ある」回答をそのまま引き写し,そして 75 kg を真に受けて,これからの人生を過つ。この質問者のおかげでもしかすると学校で 75 kg が一人歩きするかも知れない。こうして広がる出所も判然としない情報が,他者の人生をも誤らせるかも知れない。

田中善信の『芭蕉—「かるみ」の境地へ』を読む。中公新書 2010 年刊の比較的新しい芭蕉論。先日,『芭蕉二つの顔』がたいそう面白かったが,読んでいる最中にこの『芭蕉』も同じ田中善信による著書であることに気付いた。俺も,最近,抜けが酷い。

本書は芭蕉の生涯と作品を解説した啓蒙書である。俳句文藝に詳しくない者も芭蕉時代における連句や俳諧の事情についてわかるようにやさしく書かれている。蕉風確立の過程で一定の影響を与えた貞門,談林の俳諧潮流の特徴を具体的作品に照らして説明してくれるプロローグから,本書は確かな研究者によるものだと納得させられた。

芭蕉は,俳聖とされ神と崇められ,俳句の世界では頂点に君臨する権威者,俳論と藝術観の高尚なヴェールに覆われた求道者,といったイメージが確固としてある。一般の芭蕉研究では,芭蕉もそれに相応しい堅苦しい「芸術家/思想家」の人物像を着せられることが多いのではなかろうか。これに対し,『芭蕉—「かるみ」の境地へ』では,冗談好きで明るくサービス精神旺盛で涙もろい人間的側面がより表に出るように描かれている。

漢句とされてきた『虚栗(みなしぐり)』掲載句を発句と評価したり,作品の位置づけの解釈も著者独自の見解がある。2008 年に発見された芭蕉書簡によって,路通(芭蕉の弟子で,乞食の放浪生活をした。他の門人から嫌われていたが,芭蕉自身は彼の独特の才能を高く買っていた)が直前に失踪したために,曽良が『おくのほそ道』に随行することになった事情など,新しい研究成果についても述べられている。
 

The One Ring, Tengwar fonts

J. R. R. トールキンの『指輪物語』にテングワールという謎めいた文字が出て来る。架空の言語は謎めいたファンタスティックな世界の完結性をこの上もなく表わしている。あの恐ろしい力を持つ The One Ring にモルドール語で刻印された火文字を,LaTeX tengwarscript パッケージで組んでみた。

20110418-mordor.png

One ring to rule them all, one ring to find them,
One ring to bring them all and in the darkness bind them.
一つの指輪は,すべてを統べ,一つの指輪は,すべてを見つけ,
一つの指輪は,すべてを捕えて,くらやみのなかにつなぎとめる。
J. R. R. トールキン『指輪物語1』瀬田貞二・田中明子 訳,評論社,1992年,p. 112.

tengwarscript は CTAN: macros/latex/contrib/tengwarscript/ にある。バージョンは 1.3。フォントは何種類も出回っているが,私は AnnatarFormal だけを組込んで試してみた。上の画像は Annatar Italic である。流麗でなんとも美しい。原稿は以下のとおり。このモルドール語テクストはパッケージ添付 tengtest.tex にサンプルとして掲載されている。これを pdflatex で処理した。

% -*- coding: utf-8; -*-
% Tengwar on The One Ring from "The Load of the Ring" 
\documentclass[12pt]{article}
\usepackage[pdftex]{color}
\usepackage[T1]{fontenc}
\usepackage[all]{tengwarscript}
\definecolor{charc}{cmyk}{0,0.77,0.87,0}%
\begin{document}
\pagestyle{empty}
\color{charc}
\begin{center}
\tengwarannataritalic[2.0]
\tengwa{254}
\Textendedcalma\TTthreedots\Tnuumen\Tessenuquerna\TTthreedots%
\Tungwe\Tando\Toore\TTrightcurl\Tumbar\Ttinco\TTthreedots%
\Tlambealt\TTrightcurl\Tquesse\TTdoublerightcurl
\Tromanperiod\Ts
\Textendedcalma\TTthreedots\Tnuumen\Tessenuquerna\TTthreedots%
\Tungwe\Tungwe\Tumbar\TTnasalizer\TTdot\Ttinco\TTthreedots%
\Tlambe\TTrightcurl
\tengwa{255}\\
\Textendedcalma\TTthreedots\Tnuumen\Tessenuquerna\TTthreedots%
\Tungwe\Tthuule\Troomen\Tquesse\TTthreedots\Ttinco\TTthreedots%
\Tlambealt\TTrightcurl\Tquesse\TTdoublerightcurl
\Tromanperiod\Ts
\Textendedungwe\TTthreedots\Tumbar\Toore\TTrightcurl%
\Tesse\Tkern{-0.2}\Tmalta\TTrightcurl%
\Textendedcalma\TTdot\Ttelco\TTdot\Tquesse\Troomen\Tparma%
\TTnasalizer\TTdot\Ttinco\TTthreedots\Tlambe\TTrightcurl
\end{center}
\end{document}

tengwarscript のインストールは通常の LaTeX パッケージ組込となにも変わらない。ダウンロードした tengwarscript リソースを TDS に準拠して TeX ツリーに格納し,tengwarscript.mapupdmap-sys で登録する。フォントもほぼ同じだけれど,Formal については TrueType フォントファイル名を tengwarscript.map の記載に合わせてリネームする必要がある(もちろん map を訂正してもよい)。テングワール文字の出力命令については,ドキュメント tengwarscript.pdf を参照。
 

※ 4.20 付記

一応,端末上のインストール・オペレーションもメモっておく。端末操作は tcsh シェルである。TeX ツリーはローカル texmf とし,そのトップ・ディレクトリ名称を /usr/local/texlive/texmf-local としている。

まず,作業ディレクトリ(ここでは ~/tmp/tengwar)で tengwarscript パッケージをダウンロード,展開し,dtx, ins ファイルを latex 処理する。dtx はドキュメントでもあり,以下の操作ではリファレンス解決のため 2 回実行している。もとより PDF はすでに添付されているのできちんとした dvi ファイルが不要ならば,1 回の処理でもよい。

% mkdir -p ~/tmp/tengwar
% cd ~/tmp/tengwar
% set WGET="wget -nH -nd"
% set TEXDIR="/usr/local/texlive/texmf-local"
% $WGET http://mirror.ctan.org/macros/latex/contrib/tengwarscript.zip
% unzip tengwarscript.zip
% cd tengwartscript
% latex tengwarscript.dtx
% latex tengwarscript.dtx
% latex tengwarscript.ins

次に,Annatar 及び Formal フォントをダウンロード,解凍する。Formal フォントについては,map の記述に合うようにファイル名を変更する。

% $WGET http://home.student.uu.se/j/jowi4905/fonts/tngan120.zip
% unzip tngan120.zip
% $WGET http://tengwarformal.limes.com.pl/fonts/TengwarFormal-12c-ttf-pc.zip
% unzip TengwarFormal-12c-ttf-pc.zip
% cd TengwarFormal-12c-ttf-pc/fonts/
% mv TengwarFormal12b.ttf TengwarFormal12.ttf
% mv TengwarFormalA12b.ttf TengwarFormalA12.ttf

su -m で特権ユーザとなり,上で展開したリソースを TeX ツリーに格納し,フォントマップ登録を行う。

% cd ~/tmp/tengwar/tengwarscript
% su -m
# mkdir -p $TEXDIR/{doc/latex,tex/latex,fonts/\
{tfm,vf,type1,truetype,map/dvips,enc/dvips}}/tengwarscript
# cp -p *.pdf $TEXDIR/doc/latex/tengwarscript/
# cp -p *.cfg *.sty $TEXDIR/tex/latex/tengwarscript/
# cp -p tfm/* #$TEXDIR/fonts/tfm/tengwarscript/
# cp -p vf/* $TEXDIR/fonts/vf/tengwarscript/
# cp -p map/* $TEXDIR/fonts/map/dvips/tengwarscript/
# cp -p enc/* $TEXDIR/fonts/enc/dvips/tengwarscript/
# cp -p *.ttf $TEXDIR/fonts/truetype/tengwarscript/
# cp -p TengwarFormal-12c-ttf-pc/fonts/*.ttf \
$TEXDIR/fonts/truetype/tengwarscript/
# mktexlsr
# updmap-sys --enable Map=tengwarscript.map

以上。

後を囘顧みたれば

「ロト,ゾアルに至れる時日地の上に昇れり ヱホバ硫黃と火をヱホバの所より卽ち天よりソドムとゴモラに雨しめ 其邑と低地と其邑の居民および地に生ふるところの物を盡く滅ぼし給へり ロトの妻は後を囘顧みたれば鹽の柱となりぬ」。

『創世記』19 章 23−26,罪と頽廃の街・ソドムとゴモラが神の劫火に滅び,ただロトの家族のみが神の救済に与るくだりである。引用は日本聖書協会による文語訳からのものである(『舊新約聖書』日本聖書協会, 1991 年, p. 21)。クライシスとそこからの救済というモチーフ。震災ゆえかなにか心に迫るところがあり,読み返してみた(もちろん震災被災地はソドムでもゴモラでもない)。ロトの妻は,後ろを振返るなと天使から諭されていたにもかかわらず振返ってしまい「鹽の柱」と化す。これが恐ろしい象徴として胸を打つ。「後」とは過去のことを言うのだろうか。滅びて行くものに後ろ髪を引かれ,それゆえに己をも滅ぼす。私も振返って己を滅ぼすクチだと思う。それにしても,この後ろを振返ることで本意が遂げられないというモチーフは,オルフェウスとユーリディケーの逸話にもあって興味深い。

泉鏡花の怪異短編小説『黒壁』(明治二十七年)に「予も何となく後顧(うしろぐら)き心地して」という表現が出て来る。「後ろ暗い」が「後ろを顧みるような」と等価の関係で捉えられている。「後ろ暗い」とは「気掛かり,心配だ」のほかに「ふた心がある」という意味もある。つまり,心に覚悟がなく,信念に反する邪念があるの謂いである。神はロトの妻のそういう心の奥底を「振返るな」との命により試したのかも知れない。

『創世記』のこのくだりを教会スラヴ語訳聖書でも読んでみた。「鹽の柱」は «столпъ сланъ»「霜の柱」という訳になっている。拙作 OldSlav 教会スラヴ語 LaTeX パッケージ (See also OldSlav: An extension of SlavTeX for Old Church Slavonic typesetting) を使って,タイプセットしてみた。

bytie19-23-26.png

LaTeX の原稿は以下のとおり。

% -*- coding: utf-8; -*-
% Ветхая Библия 19:23-26
\documentclass[b5paper]{article}
\usepackage[pdftex]{color}
\usepackage[T2A,T1]{fontenc}
\usepackage[russian,oldchurchslavonic]{babel}
\languageattribute{oldchurchslavonic}{utf8,slavdate}
\setlength{\textwidth}{11cm}
\DeclareFontFamily{LST}{cmr}{}%
\DeclareFontShape{LST}{cmr}{m}{n}{<-> s * [1.12] fslavrm}{}%
\definecolor{bibc}{rgb}{0.40,0.44,0,20}%
\begin{document}
\color{bibc}
\Large
С'олнце вз'ыде над\ъ з'емлю,
л'ѡтъ же вн'иде въ си\-г'ѡръ.
\И г|сдь <ѡдожд`и на сод'омъ \и
гом'орръ ж'упелъ, \и "ѻгнь ѿ г|сда
съ небес`е.
\И преврат`и гр'ады сї^ѧ, \и вс`ю
<ѡкр'естную стран`у, \и вс'ѧ жив'ущыѧ
во град'ѣхъ, \и вс^ѧ прозѧб^ающаѧ
ѿ земл`и.
\И <ѡзр'ѣсѧ жен`а єг`ѡ всп'ѧть,
\и б'ысть ст'олпъ сл'анъ.
 
\vspace{.4em}
\hfill БЫТЇ`Е ГЛАВ`А \slnum(19).:
\slnum(23).{\selectlanguage{russian}--}\slnum(26).
\end{document}
 
* * *

震災の影響で国産煙草が品薄になっている。一週間ほど前,会社からの帰途にある煙草屋に寄るも,どこもハイライトが品切れだった。帰宅して,近所を探しまわったがやはり品切れ。しようがなく昔住んでいた平間の煙草屋に行ってみるとかろうじて自販機に残があり,店のオヤジにタスポを借りて4箱手に入れた。それ以後,もう入手できない。ま,煙草なんて生活必需品ではないのだから,どうでもいいことではある。
 

* * *

まったく関係ありませんが,麻雀ゲームで清老頭を上がってしまいました。
 
20110417-tinroto.png

家族でラーメン・片付け

娘がうるさくせがむので,家族で外食。JR 鹿島田駅近くの『原製麺所』なるラーメン屋に行った。黒胡麻担々麺,カレーラーメンの旨い私のお勧めの店。皆満足。

統一地方選挙が終わったところ。大学生にもなって AKB48 に現を抜かす息子が — 別にいいじゃねぇか — ラーメンを食いながら,AKB 総選挙のことを話題にした。「なんじゃ総選挙って?」— うじゃうじゃいる AKB ガールの,ファンによる人気投票らしい。テレビで歌って躍っているこの女の子たちに対して,私にはただただ自分の子供を見るような保護者的視線しか持ち合わせていない。CM の「当り前田アツコ」でやっと前田敦子さんの名前を覚えたくらいなんである。へぇー,芸能界にも民主主義のトレンドか。あるいは,芸能界の厳しい臆面のない序列化潮流なのか。AKB48 のファンはこの選挙権を得るために彼女たちの CD を買うんだそうである。血道を上げるファンのなかには 1 CD 当り得られる 1 投票権のために何枚も同じ CD を買うらしい。最近 CD が売れないという話を聞くけれども,おかげで AKB の CD は近年稀にみるミリオンセラーを記録した。この女の子たちは政令指定都市の首長と同じくらいの規模の投票でしのぎを削るわけである。凄い。一番人気の者と同時にドンジリも明らかになり,民主主義ゆえの残酷がここにはある。顧客(ファン)の意思を最重要視するという発想が顧客の参画意識を刺激し顧客の思い入れを増大させ,これにより彼女たちの人気をさらに上げることが出来る。商売の巧みに感心。これビジネス特許ものではなかろうか。それにつけても,AKB 総選挙に比べりゃ,統一地方選挙有権者の真剣度合いの貧弱さが想像され,笑ってしまう。

家の片付けをした。壊れたプリンタ,パソコン,オーディオを廃品回収業者に,ダンボール四箱の本をブックオフに,引き取らせた。床にぶちまけていた岩波日本古典文学体系本 102 巻をやっと書架に収めた。喪失してしまっていた私の ZIPPO 50 年モデルを妻が見つけた。学生時代に購入した懐かしい一品。老斑のような拭えない傷・錆。その後新たに購入した 50 年モデルと比べると,古いの(写真左)はエッジの丸みが強く,やっぱりこちらのほうが古色がある。オイルを注入しフリンツを装填したら,勢いよく点火した。

20110416-zippo.png

レベル7

宮部みゆきの小説にもありましたね,レベル7。あのチェルノーブイリと同レベルなんだそうである。原発事故そのもので一般市民に死者が出たとは聞かないが,福島県民は「計画的避難」というわけのわからない行政措置に振り回されはじめているし,県内の相当エリアは今後どれくらいの期間かは「立入禁止」区域となるはずで,県民にとってはレベル云々の問題ではなく,「ほとんど壊滅」の悔しさだろう。放射能の許容限度引き上げもなされた。いったいこれまでの基準とはなんだったのか。そうすると引き上げられた基準もどういう数値なのか皆目わからない。どこまで人をバカにしてんの? そろそろ「政府はいったい何やってんの?」と愚痴も出て来ようというものである。頑張ってくれてんのはわかるけどね,かいた汗で労ってもらえるのは学生と社会人一年目くらいまでじゃないでしょうか。

東電社長が福島入りして非難囂々の様子をテレビで見た。当ったり前田アツコじゃ。福島第一原発事故の補償で東電はつぶれるかも知れない。電気料金が値上げになるんじゃないかとの噂もある。いずれにせよ,なんだかんだ言ってもツケは国民に回って来る。

統一地方選挙は予想通り民主党が惨敗した。菅党首,岡田幹事長は,この非常事態にもかかわらず,党内で引責辞任を迫られている。当ったりまえじゃ。菅総理は被災地の視察しかせず,官房長官は「安全」をしか口にせず,その間にいつの間にやらレベル7で「計画的避難」。日本製品を巡って海外でもパニック状態が起きる始末。選挙で負け続けて国民の信任が底を突いているのになおもこの人たちは居座ろうとしているようである。佐藤優がラジオで「菅総理ってのはヘタクソなのにマイクを放さないカラオケオヤジと同じ」と言っていた。でもこれは喜劇ではない。震災直後はとにかく被災地救助の至上命題のもとに批判を控えるべきとの雰囲気がないことはなかったけれども,やっぱり「不作為」体質が — 国民の眼から見て震災対応は,東電の現場の人々,自衛隊員,消防隊員,救急隊員,海外からの支援部隊しか印象にないはずだ — 国内にも海外にも不信感を植え付けてしまったわけで,選挙で国民の怒りが噴出したと見るべきである。

これから日本は経済的に奈落に落ちて行くかも知れない。これからこそが正念場。「がんばろう日本」— そうなんだけど,食うにも困るようになる危機を,被災しなかった人もそろそろ本気で考えなくちゃいけないかも知れない。政府の尻馬にのっていると,「死ぬ迄闘うぞ,絶対に勝つ,と息巻いていたのに,結果国民は空襲で家を失い家族を失い路頭に迷い,あっけなく敗戦,気付いたら最悪の事態。なんだったんだあの気合いは?」みたいなかつての状況になるかも知れない。あの戦争でも政府は気合いだけでなんの現実的判断もできなかった。天皇陛下のツルの一声による終戦。このクライシスにおいても,相手が米国でなく天災であるだけで事情はまったく同じじゃなかろうか。でも日本は,— あの不幸な戦争時代と同じで — 国の指導者がいかに愚かで無責任でも,民間が恐るべき智慧と勇気をもっている。必ず立て直す。

AC 広告でがぜん有名になった金子みすゞの詩のパロディで,最近こういうのがあるらしい —「『安全?』っていうと『安全』って答える。こだまでしょうか。いいえ昔から」。

カッパでございますね

妻から聞いた,もう十四,五年前の大和銀行(現りそな銀行)でのひとこま。

 - 美女店員:「カッパになさいますか,それとも,パンダになさいますか」
 - 妻:「カッパにします」
 - 美女店員:「カッパでございますね。少々お待ちくださいませ」

妻が口座を新設した際のやりとりである。当時,銀行の通帳に動物キャラをあしらうのが流行ったらしく,銀行員はどの意匠にするかを問い合わせたのである。なんだ,ってなもんやけれども,女性銀行員の大真面目な「カッパでございますね」は,いたくシュールである。これを思い出すたびに,世の中の何気ないやりとりから喜劇的プレートが滑り出て来るもんだと笑ってしまう。

加瀬山観桜散歩

桜を観に近所の加瀬山に行った。午ご飯を食べてから出かけた。一昨日夜に眺めた近所の工場跡の桜も,お午時の陽光でいまが盛りであった。新川崎駅の跨線橋を渡り,子供たちの通った日吉小学校を過ぎ,幸区役所出張所から坂を上る。坂の途中から桜が満開であった。

20110410-01-fujidenko.png20110410-04-kase.png

加瀬山は川崎市幸区南加瀬にある小高い丘である。古代の古墳跡である。前方後円墳の地を馴らして夢見ヶ崎公園になっている。無料の動物園がある。戦時大空襲の慰霊塔が立っている。染井吉野や山桜の大樹が群生していて,綺麗だった。近隣の家族連れの花見で賑わっていた。ベンチに座り,持って来た発泡酒を飲みながら,妻と私はプチお花見。私が煙草を吹かしながら放屁したら,妻が「加瀬山には桜がよく似合ふ」と笑った。『富嶽百景』のもじりか。

20110410-07-kase.png20110410-06-hanami.png

動物を眺め歩いた。名物のレッサーパンダは身を潜めていて観られなかった。猿を観て楽しんだ。ペンギンが代わる代わる天に向かって咆哮していた。バスクラリネットの音のような野太い声が哀れに響いた。

加瀬山には神社がいくつかある。熊野神社と天照皇大神社に参詣した。天照皇大神社で賽銭ついでにお神籤を引いた。「雲の上にほのかに咲ける白梅に有明の月にほふ清しさ」― 吉。梅の花の香り? もう過ぎているな。待人,来ますが楽しみ少なし。桜の樹に結ぶ。

帰途,統一地方選挙の投票をした。神奈川県議会議員選挙は立候補者定数未達なのか,無投票であった。こんなのありかよ。民主党惨敗は確実か。

20110410-16-penguins.png20110410-14-amaterasu.png

新常用漢字表

「𠮟」という文字がいまあなたのモニタに表示されているだろうか? 私の愛用する Mac OS X Snow Leopard: Safari 5.0.4 あるいは Mac OS X Tiger: Safari 4.1.3 ならしっかり見えるが,Windows ユーザはどうだろうか? Windows 7 なら大丈夫か。XP ユーザは見えないのではないだろうか? なんでこんなことを記すのかというと,昨年,11 月 30 日に告示された改訂常用漢字表にこの文字が追加されたからである。1981 年以来の改訂である。なんとその前は 1946 年。

上の「𠮟」という文字は「しかる」という訓を持つ字である。口偏に「七」と書く「しかる」。「しかる」と入力して仮名漢字変換されて普通に出て来る「叱」なら,おそらく誰のモニタにも表示されるはずである。ところが,いつもパソコンで入力している「叱」という文字のほうは誤字であって,「𠮟」こそがじつは正しい「しかる」なのだ(『字源』には「俗に叱と作るは非」とある)。JIS がはじめのボタンを着け間違えた次第なのである。ここに来て常用漢字表に正しい字体が入れられた。

文字「𠮟」は Unicode CJK Unified Ideograph U+20B9F というコードポイントを持つ。いわゆるサロゲートペアと呼ばれる拡張領域(Extension B)に配置されている(JIS では JIS X 0213:2000 第三水準区点 4752)。この領域をきちんと読書きできるソフトウェアはまだ多くないのではなかろうか。私はここで「𠮟」の文字を Mac OS の「ことえり」で入力したわけではない。多言語テキストエディタ GNU Emacs 24 の ucs-insert 関数に 20b9f を指示して得られたものを,コピペしたんである。

そう,そんな特殊なところにある文字(正しい文字なんだけど)が常用漢字表に収録されたんである。このことはいまあんまり騒がれていないが,官庁,地方自治体はもとより,出版や報道業界にも少なからざる影響が出るはずである。その筋のシステム屋は,もうすでに,これら常用漢字表にあるにも拘らずシステムで表示・印字できない文字の取扱いに悩まされているはずである。大騒ぎにならないうちになんとかしなくっちゃと。

官庁・地方自治体のシステムは,つい最近に設計された新しいものは別として,Unicode 対応すら進んでいないのが実情だと思う。文字コードは JIS X 0208:1983, :1990 準拠が基本ではなかろうか。漢字コード草創期の設計を踏襲して大きくなって来た官庁・自治体システムは,人名許容漢字の法令に従わなければならず,貧弱な JIS X 0208 を補うために,JIS 第一水準/第二水準にない文字のために大量の外字を抱えている。そして,文字周りはいろんなところに影響するので,おいそれとは改修できない。(同じようなことを JIS 2004 についても書いたような気がする。)

JIS の独善的標準なら「システム仕様として対応してません」で済むかも知れないが,こと日本国政府ご指定の「常用漢字」に扱えない文字があるとなると深刻である。国民との文書交換を考慮すれば,世の官庁・自治体もこの常用漢字改訂で Unicode 対応システム改修に重い腰を上げることになると思う。また税金が本質的でないことのために消えて行くというわけである。漢字・仮名遣いという悪魔的正書法に立つ日本は,いつまでたっても文字を巡る混乱から解き放たれない宿命にある。「歴史的仮名遣いに戻せ」云々のエセ文化人による戯言よりも,もっと高度で抜差しならない宿命である。
 

* * *

ことのついでに,「𠮟」のようなサロゲートペア文字をどうしても入力できないとき,Perl で出力させるワンライナーを示しておく。Perl 5.8.5 くらいのバージョンが必要だと思う。

端末コマンドラインから次を叩くと,「𠮟」(=U+20B9F)が出力される。(※ 4.27: 少し簡略化した)

% perl -e 'binmode STDOUT, ":utf8"; print pack("U", 0x20b9f);'

あるいは,

% perl -e 'binmode STDOUT, ":utf8"; print "\x{20b9f}";'

20b9f のところに必要な文字の Unicode コードポイント十六進数を指定する。20bb7 を指定すると「𠮷」(吉野家のつちよし)が出力される。この出力をファイルにでもリダイレクトしてコピペして利用すればよい。Mac OS X Tiger 以降のターミナルなら端末上にきちんと文字が表示されるので,それをコピーすればよい。もちろんターミナルの LC_ALL 環境変数は ja_JP.UTF-8 に設定されていなければならない(これはデフォルトのはず)。

Unicode コードポイント十六進数は,学研の『漢字源』なら JIS コードとともに掲載されている。何の役にもたたない『JIS 漢字字典』なんて高価本を買うのはやめて,ぜひこちらを座右に置いていただきたい。私は改訂第四版を愛用しているが,最近第五版が刊行された。

Windows Vista, Windows 7 なら IME パッドから CJK Unified Ideograph Extension B 領域の文字を入力できると思う。Office も 2007 ならきちんと使えるはずである。
 

 

※ 4.26 付記

この記事を書いたあと,ネットを渉猟していたら,京大の安岡孝一先生(文字コードに関する権威でもある。日本語文字コードに関する見識において私が尊敬する学者のひとりである)が,2009 年 12 月の段階で『新常用漢字表が迫るUnicode移行,『シフトJIS』では対応不可能』というコラムを ITpro に掲載し,新常用漢字表の改訂について IT 業界に警鐘を鳴らしていた。さすがである。

上で「いつもパソコンで入力している『叱』という文字のほうは誤字であって」と書いた。この記述そのものを訂正するつもりはないのだけれど,「叱」という字体はすでに一般に浸透しており,もはや「誤り」とするのは時代錯誤というものである。出版の世界でも「しかる」「しっせき」に対して「叱」を表記しても,「無知無教養」でも「恥ずかしい」わけでもない。きちんとした国語辞典,しかもコンピュータの利用が一般化する以前に出版された新潮国語辞典(昭和 40 年初版)でもすでに「叱る,呵る」となっている(ただし,私の手元にある昭和 58 年刊岩波書店『広辞苑』第三版では「𠮟」という正字体のみが掲載されているし,平成 14 年再版・大修館書店『新漢語新辞典』では正字体「𠮟」のみが見出しになっており「叱」字体については「叱(口を開くさま)は別字であるが,俗に混用する」という記事がある)。つまり,JIS 第一・第二水準における「叱」採用は,JIS が「間違った」というよりも,もとよりこうした俗化・混用の「定着」の反映と捉えるべきである。
 

※ 2011.5.28 付記

会社の Windows XP professional Version 2002, SP3 + IE 6.0.2900.5512 では「𠮟」がきちんと表示された。どのタイミングかのパッチで改善されたようである。

Babelbib with ptexlive

ptexlive で多言語文献参照パッケージ Babelbib を使ってみた。

LaTeX のマルチリンガルインタフェースとして Babel はデファクトスタンダードになっている。文献参照機能 BibTeX の世界でも Babelbib という Babel の言語切替に対応したパッケージが公開されている。Babelbib 2009 年 10 月の版でロシア語もサポートされた。ptexlive には初期導入されていて,すぐ使いはじめることができる。

pLaTeX2e においては BibTeX は jBibTeX を用いるのが主流だったが,ptexlive における日本語対応版は pBibTeX (pbibtex コマンド) という名称になっている。しかしながら,Babelbib を ptexlive で使う場合,pBibTeX ではなく BibTeX (bibtex コマンド) を使う。pBibTeX で文献データベース処理を行うとロシア語などでエラーになるからである。ptexlive ではキリル文字を欧文として扱う場合エスケープ形式 (文字を十六進数で表現した形式。例えば Ю^^d0^^ae で表す) にしなければならないが,pbibtex がこれをうまく処理できない。本家 bibtex ならうまく通るのである。

Babel を用いて ptexlive で日本語と外国語を混植するとき,稲垣さんの japanese.ldf 日本語言語定義を使っている人は多いと思う。Babelbib でも同様に japanese 環境に応じて文献参照の言語を切替えたい場合,Babelbib 用の日本語言語定義ファイル japanese.bdf を準備しなくてはならない。これの作り方はそんな難しいものではなく,すでにある言語定義をコピーして "Volume" などの文献項目表示ラベルを UTF-8 日本語で書直せばよい。私が試験的に準備した japanese.bdf を置いておく。ただし,これ,英語用を複製して japanese で動くようにしただけのしろもので,まったくラベルの書換をしていない。(※ 4.18 付記: nippon.ldf でも動くようにした。)

Babelbib の使い方は,端末から texdoc babelbib と打ち込めば表示される Babelbib PDF ドキュメントを参照していただきたい。ごくごく簡単に記すと,プリアンブルに以下のように書いておく。

\usepackage[utf8x]{inputenc}
\usepackage[T2A,T1]{fontenc}
\usepackage[italian,german,french,russian,english,japanese]{babel}
\usepackage[japanese]{babelbib}% load japanese.bdf

japanese.bdf は Babelbib 標準言語ではないので,パッケージ・オプションに japanese を指定してロードするよう指示しておくことがポイントである。

日本語 BibTeX では \bibliographystyle として jplainjabbrv が用意されているが,Babelbib では babplain などを使う。ただし,私が試した範囲では,ptexlive との組み合わせで,babplain, babplai3, babunsrt スタイル以外は動作しなかった。

サンプルを以下に示す。LaTeX 原稿 (mlbibjp.tex):

% -*- coding: utf-8; -*-
% mlbibjp.tex: BibTeX Babelbib test
% coded by isao yasuda.
\documentclass[b5paper]{jsarticle}
\usepackage[utf8x]{inputenc}
\usepackage[T2A,T1]{fontenc}
\usepackage[italian,german,french,russian,english,japanese]{babel}
\usepackage[japanese]{babelbib}
\setlength{\textwidth}{30zw}
\begin{document}
\begin{center}
  \Large\bf ptexlive Babelbib試験
\end{center}
 
Bib\TeX{}は\texttt{pbibtex}ではなく\texttt{bibtex}で実行した。
 
\vspace{1em}
ロシア語:
\selectlanguage{russian}
Юрий Лотман написал это в лит.\cite[с. 256]{lotman1970}.
 
\vspace{1em}
\selectlanguage{japanese}
イタリア語:
\selectlanguage{italian}
Nel 1930 venne pubblicato ``\textit{La carne, la morte e 
il diavolo nella letteratura romantica}'' (\cite{mario1930}), 
un testo che tradotto in inglese nel 1933 contribuirà 
ad estendere la sua fama in Gran Bretagna e Stati Uniti, 
e provocherà invece forti reazioni contrarie in Italia, 
fra cui quella di Benedetto Croce.
 
\nocite*
%% Choose one BibTeX style:
\bibliographystyle{babplain}% OK
%\bibliographystyle{bababbrv}% NG
%\bibliographystyle{babalpha}% NG
%\bibliographystyle{babunsrt}% OK
%\bibliographystyle{babamspl}% NG
\bibliography{ml}% see ml.bib
\end{document}

文献データベースファイル例 (ml.bib) は以下のとおり。書誌情報 language に Babel 言語名を指定すると,その言語でのマナーで文献出力がなされる。例にあるとおり,著者名,書名の文字列は UTF-8 で直接入力ができる。ロシア語もキリル文字をそのまま書いてよいし,独・仏語もアクセント付き文字をそのまま入力できる。

% -*- coding: utf-8; -*-
% ml.bib: babelbib test
% coded by isao yasuda.
@book{curtius1961,
  author={Curtius, E. R.},
  title={Europäische Literatur und lateinisches Mittelalter},
  year={1961},
  address={Berlin},
  language={german}
}
@inBook{mario1930,
  author={Praz, M.},
  title={La carne, la morte e il diavolo nella letteratura romantica},
  year={1930},
  address={Milano},
  language={italian}
}
@book{lotman1970,
  author={Лотман, Ю. М.},
  title={Структуры художественного текста},
  year={1970},
  publisher={Искусство},
  address={Москва},
  language={russian}
}
@book{tynyanov1969,
  author={Тынянов, Ю. Н.},
  title={Пушкин и его современники},
  year={1969},
  publisher={Наука},
  address={Москва},
  language={russian}
}
@Book{gracq1938,
  author={Gracq, Julien},
  title={Au château d’Argol},
  publisher={José Corti},
  year={1938},
  address={Paris},
  language={french}
}
@Book{basho1970,
  author={松尾 芭蕉},
  editor={中村俊定},
  title={芭蕉句集},
  publisher={岩波書店},
  year={1970},
  address={東京},
  language={japanese}
}

上記原稿をコンパイルし,PDF を生成するには以下のようにする。

% eplatex mlbibjp.tex
% bibtex mlbibjp.aux
% eplatex mlbibjp.tex
% eplatex mlbibjp.tex
% dvipdfmx mlbibjp.dvi

このとき注意が必要なのは,ロシア語,ギリシア語が原稿,文献データベースに含まれている場合,エスケープ形式にしておかないといけない点である。PTEX_IN_FILTER 環境変数にここであげたフィルタを指定して実行すれば,利用者が意識しなくても ptexlive (UNIX 版) がこの処理を通してくれる。

組版結果は以下のとおり。ここでは文献一覧をイタリア語環境で出力してみた。

20110409-babelbib.png

桜が咲いた。まだ花見はしていない。今週末のお休みには散歩がてら桜を眺めたいものである。さっき会社からの帰り,自宅に着く直前,近所の工場跡(トタンに覆われた昭和な建屋なのに,バレエのレッスンをやっていたり,デザイン系の事務所が入っていたりする,ちょっと変わった場所になっている)の夜桜がきれいだった。

与謝野晶子は「清水へ祇園をよぎる桜月夜今宵会ふ人みな美しき」という歌を詠んだ。まったく根拠も無いのにこの世がなべて美しいと思われることがあるものである。今夜は残念ながら月は見えない。けれども,宵闇の桜もよかった。
 

20110407-yozakura.png

* * *

金子みすゞの本がいま売れてるらしいよ,と妻が言っていた。震災後,一般のテレビ CM がかからないなか,金子の詩を朗読する AC の広告が,非日常の研ぎすまされた何かを人の心に呼び起こしているんだと私は思う。金子の詩は,コミュニケーションが枯れ果ててしまったこの現代にこそ魂を揺さぶるものをもっている。
 

  さびしいとき
 
私がさびしいときに,
よその人は知らないの。
 
私がさびしいときに,
お友だちは笑ふの。
 
私がさびしいときに,
お母さんはやさしいの。
 
私がさびしいときに,
佛さまはさびしいの。
『金子みすゞ全集』巻二,JULA出版局,1984年,p. 176.
 


金子みすゞ全集 (1984年)

金子 みすゞ
与田準一ほか編
JULA出版局

喫茶店に寄る・安東次男『芭蕉』

今日,顧客との打合せのあと,メシを食いひとり喫茶店で息抜きをした。上島珈琲店。最近「喫茶店」というものはスタバやドトール,エクセルシオールなどの小綺麗な米国風チェーン店に席巻されてしまい,昔ながらのお店 — 店主がコーヒーをドリップしていて,店主のほかはアルバイトのお姉さんがぽつねんと居て,クラシックやジャズのレコードが回っていて,というようなお店は,身近には珍しくなってしまった。上島珈琲店もチェーン店ではあるのだけれども,今日たまたま入ったお店では,店主と思しき男性が一杯一杯丁寧にドリップし,一人だけの女性店員が注文を取りに来た。お店も白と褐色が基調の古風なたたずまいである。おまけに,私が席に着いた瞬間に,"When I was just a little girl,.." のあの『ケセラセラ』が流れはじめて,「うっわぁー」と思わず呻いてしまった。そしてお次は,なんとクィーンの "Let Us Cling Together"。"Te o tori atte kono mama ikou" と日本語の歌詞が入っている私の大好きな曲。低音をやたらに強調した音響が,まるでジュークボックスに耳を傾けているようで,懐かしかった。

東北大地震・福島第一原発事故の爪痕はしばらくは消えないだろう。これは真のクライシスである。国としての本当の危機的状況はこれから起こるような不安がある。被災者の方々は途方に暮れ疲れている。一方,無事だった者も,この先行きの不安で精神的変調を来す者もいるはずである。太宰治の小説にあるように「トカトントン」という音がどこからか聞こえて来て,なにもする気がしなくなってしまう人がいるかも知れない。私も少し虚脱感に襲われつつある。

加藤楸邨はその『芭蕉全句』(全三巻)のなかで,太平洋戦争での空襲のなか,「ぎりぎりのところに,常に深い静かさを湛えている」芭蕉作品に惹き付けられてやまなかったと述懐している。私もこの震災のせいか加藤のような心境にいたく親近感を覚える。この虚脱感からなんとか脱したいと,私も芭蕉の事蹟をたどりたいと思うようになった。

上島珈琲店で苦いストロングブレンドを飲みながら,安東次男『芭蕉』を読んだ。安東は文献学的レアリアを踏まえながら詩的想像力を縦横に働かせることの出来る数少ない詩人・評論家のひとりである(レアリアとは無関係に勝手な「感性」で芭蕉の凄さを語る人はゴマンといる)。彼の書いた芭蕉七部集注釈の金字塔『風狂始末』は,おそらく芭蕉鑑賞・批評の最高峰である。安東は,芭蕉の俳句を独立した個人の芸術として評価するというよりも,連句の付け合いの心の発露にこそ前代未聞の独創性があると見ている。『芭蕉』は,まさにこの連衆心,同行心をキーワードとする。

芭蕉はとりわけ同行を重んじた俳諧師だったが,俳諧師にとって連衆の座と独居の間を時計の振子のように往き戻りするのは,避けることのかなわぬ宿命だろう。それを芭蕉は,「発句の事は行て帰る心の味」(『三冊子』),「歌仙は三十六歩也,一歩も跡に帰る心なし。行にしたがひ心の改は,たゞ先へゆく心」(同)があるゆえだ,と一読明らかな矛盾と思わせることばで訓えているのであるが,俳諧者の平常心の在り様を端的に言取っている。
安東次男『芭蕉』中公文庫,1979 年,144 ページ。

芭蕉の言に認められる詩精神の「矛盾」の,これほど素晴らしい止揚に私が出会うことができたのは,これまで安東の著書くらいである。
 

Unicode msearch 導入メモ

私のメインサイトでは namazu 2 でサイト内全文検索ができるようになっている。namazu 2 は UNIX 環境日本語全文検索エンジンの定番になって久しいが,基本的に ISO-2022-JP, Shift_JIS, EUC-JP の日本語文字コードを前提としており,多国語文書には適さない。ロシア語に限って言えば,Unicode ロシア語文書も検索できるのだけど(JIS の智慧のおかげ)。

最近ではサイト内検索エンジンをブログ管理システムに任せるか,Google のドメイン指定の検索窓を設けることで,自らインデックス管理自体をしないですむようになっており,独自に検索エンジンを設置する必要性は薄くなって来ている。ちなみに,Google のドメイン指定で自分のサイト内だけを検索するための検索窓は,以下のようなコードを自サイトのページに埋め込めばよい。

<form method="get" action="http://www.google.com/search">
  <input type="text" name="q" size="30" maxlength="255" value="" />
  <input type="hidden" value="検索対象ドメイン" name="as_sitesearch" />
  <input type="hidden" name="hl" value="ja" />
  <input type="hidden" name="ie" value="UTF-8" />
  <input type="submit" value="Google 検索" />
</form>
このサイト内なら—

私は受信したメールを MHonArc でアーカイブし,パスワードで文書セキュリティを保護することで,Web でどこからでも自分のメールを見られるようにしている。このような用途では,Google を使うわけには行かず(非公開なんだから当然),どうしても独自に検索エンジンを設置しなければならない。

Katsushi Matsuda,毛流麦花両氏による msearch は Unicode 文書からインデキシングが可能である。よって多国語文書も本来の文字列で検索が可能である。そこで私も Unicode 版 msearch Ver. 1.52 を導入してみた。これで柔軟な多国語検索とメールアーカイブ検索が両立できるというわけだ。http://yasuda.homeip.net/msearch.html から私のサイト内の検索ができるようにしてみた(メール検索は当然ながら非公開)。検索結果画面は msearch のお仕着せをそのまま使っている。まだ画面右上の namazu 検索は生きている。そのうち整理するつもりである。

msearch は,茶筌で日本語検索対象語を抽出してインデキシングを行う namazu とは異なり,おそらく n-gram で全文インデックスを抽出している。これは検索モレを防ぎかつ高速化を実現するのに有効な方法である。ただし,msearch は多国語文字を取り扱うことができるとはいえ,いわゆる語形変化に追随できるようなインデキシング解析をしているわけではなさそうである。Google なら,нести (「携える」という意味のロシア語不規則変化動詞不定形) を入力すると,несут (三人称複数現在) などの変化形をも検索できる。さすがである。

msearch は PDF, Microsoft Word, Microsoft Excel, Microsoft PowerPoint をインデキシングするためのフィルタを持たないため,そのままでは原則 HTML 文書だけを扱うことになる。私自身は .doc, .xls, .ppt ファイルをプライベートで扱うことはないので,まったく困らないのだが,PDF だけはなんとしても検索できるようにしたい。以下,PDF も取り扱うことができるように msearch 環境を調整するメモをしるしておく。環境は Mac OS X Snow Leopard (インデックス作成) 及び FreeBSD 8.1-RELEASE (公開 Web 環境) である。掲載内容は無保証である。

Unicode 版 msearch インストール

Unicode msearch のダウンロード,インストールは『サイト内全文検索エンジン ― Unicode版msearch』に毛流麦花氏による懇切丁寧な解説があるので,そちらを参照する。アーカイブを解凍し,cgi-bin/msearch にリソースを格納するだけである。Perl 5 が必要である。/~user/ などの Web ユーザディレクトリ下で msearch を運用する場合は,public_html/cgi-bin/msearch のパーミッションが 644 あるいは 755 (他ユーザの書込権限なし) になっていないと,Premature end of script headers のエラーが出て動作しないので注意。

私の場合,PDF 処理その他でサイトのドキュメント・ツリーを書き換えてしまうオペレーションが発生するため,Apache22 の公開エリアとは別に ~/var/webindex ディレクトリ (以下「ワークツリー」) を作成し,そのなかにサイト・ドキュメント・ツリーをコピーするとともに,msearch リソース・ディレクトリをも設置した。ここで検索インデックスをローカル作成(msearch では,Web ブラウザからインデックス作成操作が可能であるが,これを使わず,サーバ・ローカルの端末でコマンド操作によりインデックス作成を行うことを「ローカル作成」と呼んでいる)し,できたものを Apache22 の公開エリア /usr/local/www/apache22/cgi-bin/msearch にコピーするという運用である。

msearch のサイト用独自設定は default.cfg で行う。本稿の試行では,とりあえず set $home= の右辺を私のサイト URL に書き換えただけである。

PDF インデキシング

msearch で PDF ファイルのインデックスを作成するには,いくつか注意事項があり,少し工夫が必要である。そのままで PDF をインデックス作成対象に指定すると,インデックス・ローカル作成プログラム genindex.pl (本稿で「インデクサ」とあるのはこれのこと) は異常終了する。

PDF はテキスト変換した上でインデクサに掛けるのが基本である。UNIX X11 PDF ビュア XPDF のユーティリティ pdftotext で PDF — テキスト変換を行った上でインデキシング実行すればよい。このときテキスト化されたファイルを元の PDF ファイルと同じ名称にしておかないと,検索結果のリンクで当該ファイルを参照できないので,テキスト変換結果で元 PDF ファイルを上書きしておく必要がある。PDF 以外でも wvWare (Microsoft Word 用),xlHtml (Microsoft Excel 用),pptHtml (Microsoft PowerPoint 用) の各 UNIX ソフトウェアを利用し HTML ないしテキスト形式に変換することで,msearch インデキシングが可能である。

第二の注意点として,HTML / XML 以外のファイルに対して msearch は BOM で Unicode エンコードを判断していることがある。BOM がないと,Web 検索結果画面上の当該ヒットエントリの文字が化けてしまうのである。普通,UTF-8 でテキストファイルを作成するとき,BOM を付けたりしないので,インデクサに掛ける前に UTF-8 BOM (十六進コード "EFBBBF") をワークツリーのテキスト変換後ファイルの先頭に書き込んでおく。これは echo, cat コマンドなどで簡単にできるのだけれども,私は,PDF に混在した不要な制御コード文字を取り除く目的と合わせて,これを行う簡単なプログラム chkucntlchr を書いた。PDF 以外のテキストファイルも同様の処置が必要である。

以上の処理を自動で行うシェルスクリプトのコード例を以下に示す。これを含んで,msearch インデックス作成の全体シェルスクリプト例を最後に掲げてある。

# PDF format conversion
$WRK=ワークツリー
$UCK=chkucntlchr # 制御コード削除・BOM 付加ツール
$STP=タイムスタンプファイル (前回実行時の日付属性をもつ空ファイル)
echo "*  Convert PDF to TEXT by pdftotext (XPDF)."
cd $WRK
for i in `find -L . -newer $STP -name "*.pdf"`
do
    pdftotext -enc UTF-8 -nopgbrk $i $i.txt
    if [ $? -eq 0 ]; then
        echo "**  pdftotext $i OK."
        $UCK < $i.txt > $i
        if [ $? -eq 2 ]; then
            echo "**  $i is empty. Ignore."
            rm -f $i
        fi
    else
        echo "**  pdftotext $i NG. Ignore."
        rm -f $i
    fi
    rm -f $i.txt
done

また,chkucntlchr ツールの Perl コードは以下の通りである。

#!/usr/bin/perl -w
# -*- coding: utf-8; mode: cperl; -*-
# chkucntlchr
# 2011(c) isao yasuda.
# - delete words including control characters (U+0001--U+0020, U+007F--U+00A0)
# - Add UTF-8 BOM (x'efbbbf') for msearch indexer
# - Return code 0: normal; 1: suppressed; 2: imput empty;
use strict;
use utf8;
binmode STDOUT, ":utf8";
my $flg = 0;
my $lc = 0;
my $utf8_bom = "\xEF\xBB\xBF";      # BOM for UTF-8
utf8::decode($utf8_bom);
print $utf8_bom;
while (<STDIN>) {
    chomp($_); $lc++;
    utf8::decode($_);
    my @line = split(/\s/, $_);
    foreach my $wd (@line) {
        if ($wd =~ /[\x{0001}-\x{0020}\x{007F}-\x{00A0}]/) {
            $flg = 1;
        } else {
            print "$wd ";
        }
    }
    print "\n";
}
if (! $lc) {
    print STDERR "*** $0: input empty.\n";
    exit 2;
}
if ($flg) {
    print STDERR "*** $0: suppressed control characters.\n";
} else {
    print STDERR "*** $0: no problem.\n";
}
exit $flg;


segmentation fault 対策

msearch インデクサに PDF を食わせるに際して,もっとも悩んだのはテキスト化した PDF でも,インデクサが segmentation fault エラーで異常終了する場合があることであった。インデクサからコールされる indexing.pl に罠を仕掛けて調査したところ,問題が二つ判明した。

まず第一には,サイトのインデックス対象ファイル数が多いと,UNIX の ulimit のファイルオープン数の制限に引っ掛かり,異常終了してしまう。ulimit -a で制限値を確認し,インデックス対象ファイル数よりも open files の設定値が小さければ,ulimit -n 数値 で値をファイル数よりも大きな値に設定する。

第二には,msearch インデクサは正規表現 s 演算子によって HTML タグの除去処理を行っているが,これをすべてのファイルに適用しており,テキスト変換された PDF ファイル中の文字列如何によっては誤動作してしまう。私のサイトの PDF は,LaTeX 多言語文書を dvipdfmx で処理した生成物が多い。LaTeX フォント・パッケージの enc ファイル(エンコーディング定義ファイル)によってはヘンな文字の羅列になることがあり,これでタグ判定の正規表現がぶっとんでしまったらしい。indexing.pl 791 行目を,HTML / XML でないときは実行しないように,以下の改変を行うと,アボートしないようになった。

#    $contents =~ s/<(?:[^"'>]|"[^"]*"|'[^']*')*>/ /g;  # オリジナル
    $contents =~ s/<(?:[^"'>]|"[^"]*"|'[^']*')*>/ /g if ($html_xml); # 対策

XPDF 多国語化

XPDF pdftotext の多国語対応について簡単にしるしておく。FreeBSD Ports,Mac OS X MacPorts では XPDF Japanese port が用意されており,これをインストールすれば日本語 PDF については扱うことが出来るようになる。しかし,多国語 PDF はダメ。

XPDF のサイトでは中国語,ギリシア語などいくつかの言語設定追加リソース・パッケージが公開されている。これらを用いて多国語対応設定ファイルを作成する。以下のシェルスクリプトを実行すれば,パッケージをダウンロード・展開した上で,カレントディレクトリに xpdfrc を生成する。これを $HOME/.xpdfrc として格納する。次に,パッケージのリソース xpdf-japanese 等を XPDF 管理ディレクトリ (FreeBSD なら /usr/local/share/xpdf) にコピーする。これで,pdftotext により,日本語のほか簡体中文,繁體中文,韓国語,ロシア語,ギリシア語,アラビア語,ヘブライ語などの Unicode テキストが出力できるようになる。ただし,この実行で生成された xpdfrc には PDF 表示の際に必要となるフォント定義がないので,あくまで pdftotext テキスト変換用途と理解いただきたい。表示も含めた設定は XPDF ドキュメントを参照して displayNamedCIDFontTT 定義に好みの TrueType, OpenType フォントを指定するなりして調整してほしい(私は UNIX 環境での PDF 表示は Adobe Reader を使っているのでこのへんは放置している)。

#!/bin/sh
# Download XPDF language packs
WGET="wget -nH -nd "
XPDFSITE="ftp://ftp.foolabs.com/pub/xpdf"
# XPDFETC は xpdfrc があるディレクトリに変更する
XPDFETC="/usr/local/etc"
$WGET $XPDFSITE/xpdf-arabic.tar.gz
$WGET $XPDFSITE/xpdf-chinese-simplified.tar.gz
$WGET $XPDFSITE/xpdf-chinese-traditional.tar.gz
$WGET $XPDFSITE/xpdf-cyrillic.tar.gz
$WGET $XPDFSITE/xpdf-greek.tar.gz
$WGET $XPDFSITE/xpdf-hebrew.tar.gz
$WGET $XPDFSITE/xpdf-japanese.tar.gz
$WGET $XPDFSITE/xpdf-korean.tar.gz
$WGET $XPDFSITE/xpdf-latin2.tar.gz
$WGET $XPDFSITE/xpdf-thai.tar.gz
$WGET $XPDFSITE/xpdf-turkish.tar.gz
# Expand archives
for i in *.tar.gz; do tar zxvf $i; done
# make xpdfrc
cp $XPDFETC/xpdfrc .
for i in `find . -name "add-to-xpdfrc"`
do cat $i >> xpdfrc; done

インデキシング用シェルスクリプト

最後に私が自サイト用に作成したインデキシング用シェルスクリプトを掲載しておく。Mac OS X Snow Leopard 環境である。HTML ソース Subversion 管理エリアからワークツリーに更新ファイルをコピーし,ワークツリーでインデキシングしたのち,Mac 上の Apache22 cgi-bin 試験環境にインデックスファイル default.idx をコピーする。これでできた Mac 上の default.idx をそのまま FreeBSD サーバの msearch 環境に転送して公開するという運用形態である。

私は自サイトの HTML 等公開コンテンツを Subversion でバージョン管理しており,ソースを commit すると Subversion の commit スクリプトが動作して,自動的に更新コンテンツを Apache22 のドキュメント・ツリーにコピーするようにしている。このスクリプトを変更し,commit のタイミングで msearch インデクス作成スクリプトを呼び出して,検索インデクスを自動的に更新することもできる。crontab に登録して定時自動実行するのもよいと思う。

上記の PDF テキスト変換以外にも,HTML の iso-2022-jp to UTF-8 変換なども実行内容に含まれている。シェル内の各パス設定,サイト設定は私の環境そのままなので,もしこれを活用する方がいらっしゃるのなら,自分の環境に応じて書き換えないといけない。もちろん,中味をよく確認し,私のいい加減なコードにヘンなところがあれば手直しいただいたほうがよい。

#!/bin/sh
# -*- coding: utf-8; -*-
# msearch index generator for ISOLDE
# - coded by isao yasuda, 1 Apr. 2011
#
# DESCRIPTION
# -----------
# 1.前回タイムスタンンプより新しいページをSRCからWRKに格納する。
# 2.JISコードのページをUTF-8に変換して格納する。(nkf, sed)
# 3.PDFをテキスト変換してWRKに格納する。
#     rc OK: .pdf の内容はテキストファイル 
#     rc NG: .pdf, .pdf.txt を削除する
# 5.テキスト変換 OK のものの制御コードを削除する。(chkucntlchr)
# 4.WRKでインデックスを生成する。(genindex.pl
# 5.インデックスをWRKからPUBに格納する。
#
# CAUTION
# -------
# 1.初期作成時はファイル数が多いのでWRKにsite treeをコピーしておく。
#
 
# SRC: ページソースエリア
# WRK: ワークエリア
# PUB: 公開エリア (ここでは触らない)
WWW=/usr/local/www/apache22
SRC=/home/isao/src/noxinsomniae
PUB=$WWW/data
CGI=$WWW/cgi-bin/msearch
WRK=/home/isao/var/webindex/website
MSE=/home/isao/var/webindex/msearch
STP=/home/isao/var/webindex/stamp
TMP=/home/isao/var/webindex/tmp
UCK=$MSE/chkucntlchr
NKF=/usr/local/bin/nkf
PDFTOTEXT=/usr/local/bin/pdftotext
 
echo "********************************************************"
echo "*  msearch Index Generation Start `date '+%Y/%m/%d %H:%M:%S.'`  *"
echo "********************************************************"
# Copy SRC to WRK
echo "*  New Files Archiving."
cd $SRC
find -L . -newer $STP -type f | grep -v '.svn' |\
xargs tar cf - | ( cd $WRK; tar xvf - )
cd $WRK
 
# Convert iso-2022-jp to utf-8
echo "*  Convert ISO-2022-JP pages to UTF-8 pages."
cd $SRC
for i in `find -L . -newer $STP -name "*.html"`
do
    $NKF -w $i |\
    sed -e 's|charset=[Ii][Ss][Oo]-2022-[Jj][Pp]|charset=UTF-8|g' > $WRK/$i
done
 
# PDF format conversion
echo "*  Convert PDF to TEXT by pdftotext (XPDF)."
cd $WRK
for i in `find -L . -newer $STP -name "*.pdf"`
do
    $PDFTOTEXT -enc UTF-8 -nopgbrk $SRC/$i $i.txt
    if [ $? -eq 0 ]; then
        echo "**  $PDFTOTEXT $i OK."
        $UCK < $i.txt > $i
        if [ $? -eq 2 ]; then
            echo "**  $i is empty. Ignore."
            rm -f $i
        fi
    else
        echo "**  $PDFTOTEXT $i NG. Ignore."
        rm -f $i
    fi
    rm -f $i.txt
done
 
# add BOM to text files
echo "*  Add BOM to TEXT files."
cd $WRK
for i in `find -L . -newer $STP -name "*.txt" -or -name "*.tex"`
do
    $UCK < $i > $i.tmp
    if [ $? -eq 2 ]; then
        echo "**  $i is empty. Ignore."
        rm -f $i
    fi
    mv $i.tmp $i
done
 
# rm svn control
cd $WRK
find . -name ".svn" -or -name ".#*" | xargs rm -fr
 
# Indexing
echo "*  Execute Indexing by genindex.pl. PARAM:"
echo "*   1 インデックス名前:        default"
echo "*   2 インデックス対象DIR:     $WRK"
echo "*   3 インデックス対象URL:     http://yasuda.homeip.net/"
echo "*   4 インデックス対象拡張子:   .html,.txt,.pdf,.tex"
echo "*   5 非インデックス対象DIR:   admin,common,css,archives"
echo "*   6 非インデックス対象拡張子: (指定無し)"
echo "*   7 非インデックス対象KWD:   (指定無し)"
echo "*   8 ランキング方法:         最終更新日時降順(1)"
echo "*   9 alt属性の文字:         指定しない(0)"
cd $MSE
./genindex.pl <<EOM
default
/home/isao/var/webindex/website
http://yasuda.homeip.net/
.html,.txt,.pdf,.tex
admin,common,css,archives
 
 
1
0
EOM
 
if [ $? -eq 0 ]; then
    echo "*  Index Generation Succeeded."
    ls -l $MSE/default.idx
    echo "*  Now Copy default.idx to $CGI."
    cp -p $MSE/default.idx $CGI
    # STAMP modify
    SDT=`ls -l $STP`
    echo "*  Previous Update: $SDT"
    touch $STP
    SDT=`ls -l $STP`
    echo "*  Now Updated:     $SDT"
else
    echo "*  Index Generation Something bad."
    ls -l $MSE/default.idx
fi
 
echo "*  Procedure Ended. `date '+%Y/%m/%d %H:%M:%S.'`"
# end of script

Moon Calendar

Profile

ISAO YASUDA。システムエンジニア。神奈川県在住。昭和 30 年代を懐かしむオヤジ。ロシアに興味があります。
[more], [About our site]

Notice

この文書はフィクションであり,実在する個人,団体等とは一切関係ありません。

R-18 指定サイトです。そのうち「18 歳以上ですか」の認証を入れる予定です。

文書の記述内容は無保証です。不適切な表現があればコメントにてご指摘ください。

コメント,トラックバックは,現在,運用を停止しています。ご意見等ありましたら isao@yasuda.homeip.net 宛電子メールにてお願いします。

Links

Entries

About this archive

Entries at 2011年4月 in chronological order.

Previous: 2011年3月

Next: 2011年5月

Recent Entries in Main Index.
All Entries in Archive Index.

March 2012

Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Emacs: Monthly Archives

Powered by Movable Type 5.12 Powered by FreeBSD 8.2-RELEASE
blog counter