XML

2003年12月06日 土曜日

う〜む、恐るべし

今日Googleで自分のページを検索すると、まぁ予想外のところでリンクされているわなぁ。アクセス解析とかしてないからなぁ。予想外のところでは、XML関連のツールの使い方、特にFOPのインストールの仕方_あたりにリンクが貼ってあったり。(あんなページでも_需要あるのか!) まぁ確かに日本語のソース少ないからなぁ。PSGMLとかもまとめると良いかもしれない。(こないだ.emacsから設定を消してしまったが…)
アンテナなるものにも微妙に捕捉されているようだ。もともと動的な日記生成をしていないので、アンテナに登録されにくいのかなと思っていたのだが、その年のインデックスにリンク貼ればいいのか。とりあえず検索性をあげるために日記のタイトルをテンプレートに入れてみました。さすがに「Diary of 2003」だと検索し辛いので。

しまったぁ!じゃないですか。

なにげにテレビを付けてBS-Hi(NHK)を見ると、アバドがマーラーの交響曲第2番「復活」を振っているじゃないですか。しかも第5楽章の最高潮のこんな歌詞の場面。

2003年10月27日 月曜日

.NETの呼び声

最近、VBAでのプログラムにほとほと嫌気がさしてきたのであるが、お仕事関係ではMicrosoft WindowsというかMicrosoft Officeの呪縛を逃れることは出来ない。それ故プログラム環境としてVisual Basic for Application(VBA)を使うことになるのであるが、不満は多いので使っていてなんだかだめだめだなぁと思うことを列挙してみよう。

  • _必ずExcelやWord文書の付録_みたいなものになる。文書を開くときに何となく厭な気分になる。(回避法はあるけれど。)
  • 当然コードの_履歴管理をするのが大変_。(何が楽しくてVisual Source Safeを使わねばならないのか。頼むからCVSSubversionを使わせてくださいな。)
  • 正規表現が使えない。(がーん。 かなり不便。)
  • 正規表現を差し引いてもテキスト処理がいまいち。(変形CVSなテキストを読むのがもう大変。)
  • しょっちゅう関数の名前がだぶる。(名前空間をサポートしてくださいよ。僕のボキャブラリが寂しいだけ?)
  • 使えるデータ型が_恐ろしいくらい貧弱_。(未だに基本な型と構造体と配列くらいしかなく、ハッシュやリストのような現代的な言語でサポートされているデータ型は_当然ない_。)
  • クラスは作れるが、継承は出来ない。(勘違いしている人は多いけれど継承はOOPの必須事項ではない。)
  • スレッドって何だっけ?
    という具合で、結構痛いところが満載なのである。そこまで使い込んでいるんだったらVisual Source Safeというか、OfficeのDeveloper Editionを買えばいいじゃんと言う意見もあろうが、僕はお仕事のためにわざわざOffice Developer版を買うほど酔狂な人間ではありません。 ちなみに家のPCにはOfficeをインストールしてません。家に帰って_Excelのアイコンを見るのも厭です_。ということで、会社で買ってくれないものを使う気にはならんのです。
    かといって、Windows Scriptの上で動く現代的なスクリプト言語であるActivePerlActiveRubyは、_デフォルトでインストールされない_ということもあって、プログラムを使ってもらうという前提の開発では、管理が発生するためにメインの言語として選べない。(ExcelはどのPCでもバージョンは同じであることを前提に出来るが、PerlやRubyのバージョンなどの管理は職場で誰がするの?)
    ひょっとしたらVBA自身は、Office2003でVB.netのような言語の現代化が行われるのではないかと多少期待したのだけど、VBA自身はVBA 6.3から6.4にアップデートで余り変化はないみたい。(がっかり。 まぁ無論会社ではOffice2000までしか使ったら駄目ということになっているので、Office2003は使えないのだが。)
    という状況で、なんだか良い解法は無いなぁと思っていたのだが、先日のTCP/IP勉強会で、PostgreSQL方面の高橋さんより、「そういう話なら、.NETが良いよ。」という話を聞いたので、早速試すことにした。
    よく.NETのページを眺めていると、.NET Framework SDKには、コマンドライン版のC++とC#とVBのコンパイラが付属してくるのね! てっきり、C#やVB.netで遊ぶにはVisual Studio .NETを買わねばならないのかと思っていたのであるが、僕が組むプログラムの規模ではVisual Studioには手を出さなくてよさそう。
    ダウンロード・インストールをしている間にWebをさまよえば、_フリーの統合環境は転がっている_もので、Javaの開発環境から進化して、C++やC#やPerlやRubyやXMLなどの編集が行えるJavaで書かれているEclipse(エクリプス)や、C#の開発環境に特化しつつVBの開発環境にも使えそうなC#で書かれているSharpDevelop(SharpDevelop-JP)といったオープンソースな環境が出回っているので、なんだか簡便な開発環境が整いそうである。
    今日はつらつら.NETのドキュメントとC#やVBのサンプルソースを眺めているわけだが、眺めているだけでも上記の問題は解決しそうである。例えば順に並べるとこんな感じ。
  • ソースコードは_ただのテキストファイルになる_(当然)
  • 当然コードの管理にCVSSubversionを使える。
  • Microsoft .NET Framework ではPerl5のような正規表現がサポートされている。
  • テキスト処理はようわからんが、コンソールアプリを書けるからたぶん大丈夫でしょう。(調査中)
  • 名前空間をサポートしている。(僕のボキャブラリが寂しくても_安心だ_。)
  • コレクションクラスが_充実している_。(ハッシュもリストも_当然ありますよ_。)
  • VBでも継承ができるようになった。(VB7からは継承が出来るようになりました。)
  • スレッドを考慮したプログラムも当然書ける。
    という具合。ガベージコレクションもしてくれるのですか。メモリ管理関係も結構楽になるのかしら… しばらく眺めて勉強してみることにするが、MSと仲良く付き合うには、_過度の期待はしない_ことと_仕様はどうせすぐに変わるもの_と思って、_適当に勉強すること_と言うのが重用である。どうせ勉強しても長く持たないバッドノウハウだらけになるに決まっているのだから。
    今日の日記はリンクをいっぱい付けてみた。疲れたなぁ。

2003年10月23日 木曜日

NLUG解散の話

昨日、TLUC-MLで三浦さん聞いた話。名古屋のLinuxのユーザー会が解散したそうだ。(上記リンクもNLUGのページではないところに設定している。NLUGのWebサーバもいつまで動いているか分からないからだ。) こういう話は多かれ少なかれ、どこでも感じるところはあって_ついに来るべきものが来たか_と思っている。僕が参加している東北Linuxユーザ連合会(TLUC)もMLの流量と話題が寂しいし、Activeなメンバがほんとに少なくなってきているので。
ただLinuxに限って活動をするという風に考えてしまうと、どんなイベントを行ったとしても、なにもLinuxでなくても出来るという一昔前から見れば贅沢な状況になったこともあって、いろいろとLinuxのユーザー会という存在意義を問い出す事となり禅問答のように考え込んでしまうことになるのだが、NLUGでは解散という結論に至ったと言う事だ。自然消滅・休眠状態というところが多い中で、彼らはそれなりの議論をして活動のけじめを付けたのだから、僕はそれはそれで立派なことだと思う。まぁLUGの運営に参画しているという観点で物を言えば、同行者が一人いなくなるのはやっぱり寂しいものだけれど、時代の流れなのかも知れない。(もし贅沢な環境が衰退を呼んでいるとすると何とも悲しいのだ。)
まぁ数年前の各地LUG立ち上げ時は、インストールをネタにしたインストール大会みたいなイベントを行っていた(まぁ普及活動なんですが)こともあったが、今となってはどのディストリビューションを使ってもインストールが非常に簡単になったし、僕らが*BSDをつかっても簡単にインストールできちゃう。さらにKnoppixのようなCD起動のものが出てきたことがあって、現状で行う意味消失している事もあって、現状でLUGの活動の質的転換を要求されていると考えるべきなのでしょう。
Linuxにしかできないことに限って活動を展開するというのは、現状ではいろいろと非常に難しく、そういう方向だけを考えても仕方ないので、もうちょっと広く世の中を見ることにして、Linuxを介して集まった仲間と言う認識で活動を続けていくのが良いのかなと考えている。(何を題材に扱ってもできるけど、Linuxベースでやった方が自然という雰囲気を指向する。) そういう仲間で共有できるような題材があれば、勉強会やイベントのネタにつかっている状況で、一昨年はXML関連の勉強会、昨年はHTML関連の勉強会、今年はRubyやTCP/IPの勉強会を提案し実施している。(僕は企画した割に、忙しくて全く参加できず非常に悔しい思いをしているが、それでもみなさんに楽しんでいただけているようなので満足している。(こういう方向で質的転換を図っているのだが…)
こういう方向で物を考えているのだが、LinuxをはじめとするPU-Unixは普及活動期から、普及してしまった時期に入ったわけで、いろいろと価値観やら物事の進め方が変わってしまったも致し方ないものなのかも知れ無いなぁと思うわけだが、何ともとりとめがないのよねぇ。(考えはまとまらないし。)

2003年09月12日 金曜日

nXML

James Clarkが書いた新しいEmacs用のXML mode。XMLの世界ではJames Clark以上に有名な人はいないと言うくらいの人だが、こういうツールを作ってくれるのは非常にありがたい。
で、素晴らしいと思うのは_DTDが要らない_ということだ。PSGMLではDTDを使ってEmacsでValidationを行っており、要素や属性の補完もDTDを使って行っていた。まぁ慣れれば簡単なのであるが、DTDであるが所以のデメリットはあって、Namespaces in XMLと非常に相性が悪いと言うのが問題だった。例えばHTML 1.1な文書の中にMathMLで書いた数式やSVGで書いた図形などを入れて編集したいなぁと思うと破綻してしまう。運用上の工夫(namespace prefixを決めうちする)をすることによって、出来なくはないが_なんか違うなぁ_と思うのである。
nXMLの場合は、SchemerにRelax NGを採用している。まだ使い込んでいるわけではないが、_DTDの制約から解放されるのではないか_と思っているのである。
インストールはお手軽だったが、Meadowの場合、C-reternに割当たっている「補完」がうまく割当たっていない模様。はて、どうした物か…

2003年09月11日 木曜日

RelaxNGの勉強をしようかと。

今回のコンテンツの見直しで、元々やろうと思っていたXML化の推進をしないとやっていられない状況になってきました。ぼくはXHTML 1.0のFramesetが嫌いな人なので、今のようなページ構成になっています。しかしそれぞれのページで部品として共用している部分を書き換えることになると、手修正だけではやってられないと言うことで、XMLで書いた部品を寄せ集めてXHTML 1.1(or XHTML 2.0?)にレンダリングした方が良さそうです。
最近の流行りであれば、真面目にXMLに突っ走るならCocoon 2みたいな物を使うか、よりお手軽なZope、もっとお手軽な方向としては、XOOPSのようなWeb Applicationか、がらっと変えてtDiaryみたいな日記ツールとかblogなツールを普通、選ぶのだろう。
ただ今のところ動的なサイトにしたくないのと、JavaやpythonPHPに依存できない環境であること。Java以外は一生コードを見ないですむなら見たくないという個人的な偏見と趣味とRubyPerl(これも使いたくはない)はサーバで使える環境にあるので、選択肢はこれらのどっちかですな。
ただCGIなどでページをDynamicにページを生成するとCGI自身のメンテがかったるいので、WikiWiki Cloneは却下で、結局今のところはStaticなページ構造にして置いた方がよいかもと個人的に思うので、XML文書を書いてXSLTでXHTMLに変換するのがよいかなと思っている。最終的な目標はサーバにXMLファイルをいっぱい置いておいて、半動的生成を目指そうかと思うわけだが、しばらくはXMLで書いて、makeでStaticに作ってしまえと言う感じである。
XMLで適当に文書を書くと自分で作ったXML文法(XMLボキャブラリというのかな)を忘れてしまうと言う問題があり編集の便利さを追求するためにも、僕の場合は必ず文書型定義(DTD)を書く必要がある。ただ_DTD自身がXMLじゃないやん_とか_いまさらDTDなんて勉強しても仕方ないやん_ということで、何かしらのSchemerを勉強せねばと言うことになったわけだ。こういう用途でThe World Wide Web Consortium (W3C)御謹製のXML Schemaを使うほど暇人でもないので、Relaxを勉強かと思ったのである。いろいろ調べているうちに、Relax NGのページやTutorialを眺めていると、こっちの方がえらく簡単ということで_勉強する気になった。_(ようやく表題の話になった。)
ということで、いったんどういう事を書いているのか再分析して、Relax NGパターンを書き下して、DTDを生成してみようと思う。