XML

2006年05月18日 木曜日

OutlookをRSS Readerに

メーラーのOutlook Expressではなく、PIMとしてOfficeの一角であるOutlookもVBAでプログラミングできるのであるが、いままでOutlookのVBAなんてウィルスを作成することくらいしかないんじゃないかと思っていたのである。そんなものいらんなと思っていたわけであるが、やっぱりマクロが使えると便利なので、設定に気を使って便利なものは使いましょう。
会社のPCへのソフトのインストール権限が無いことと、会社のサーバがどうもMicrosoft Exchange Serverで、会社内でスケジュールの公開とかもやっているっぽいので、デフォルト環境のOutlookを使う羽目になったのですが、Thunderbirdを使い込んだ後にOutlookを使って思うのは、_OutlookでRSS Readerが無いじゃない_というところ。まぁアドインとかを購入すればいいのだろうが、時間があったのと「OutlookをVBAでRSSリーダーにする」という記事があったので、VBAで書いてみることとした。codezine.jpにはアカウントを持っていないし、作る気も無いのでWebで公開されているソース片を元にいろいろ書き足してみた。自分で使うにはおおむね問題ない仕上がりにはなった。
ざっくり試したところRSS 0.9xとRSS 1.0では大体問題なくRSSを取得し、記事単位でメールにしてくれる。後の閲覧はメールと同じ。未読管理もOutlookにお任せできる。atomはXMLではなさそうな感じなので、別の枠組みが必要そう。こんなプログラムが1時間くらいで書けるというところが、福森さんがおっしゃるところのコンポーネント化の福音なのであろう。

2005年12月04日 日曜日

David Hawley, Raina Hawley / Excel Hacks—プロが教える究極のテクニック100選

最近Excelのスキルが凄くあがったなあと思ったので、道場破りでもと思って、本屋でこの本を_立ち読み_してみた。出てくる項目でしか判断してませんが、最後のXMLの項(これExcel2003の話だよなあ)を除けば、僕にとっては_ほぼすべてが既知_の本でした。O’ReillyのHacksシリーズは何冊か購入したけど内容のレベルにムラを感じるのではるが、この本ははっきりいって不要な本であるという結論ですかね。ランダムに結構な数をサンプリングしてみましたが、ほぼ既知の内容で読む価値無しという結論。ああっ、Excel依存症なのは僕のことなのかぁ・・・
ピボットテーブルとかピボットグラフとかソルバーとか言うものを使ったことが無いという人はExcel使いとしては初心者もいいところと思うので、Excelの初心者を卒業したいあたりの人にはまぁお勧めできるでしょうか。
そんなわけで、Excel依存症であることに気がついてしまった結果、全くブルーな気持ちでいっぱいです。この本を買ってやろうという予算は、ずっと買いそびれていた塩野七生さんの「ローマ人の物語」の1巻と2巻の購入資金に転用します。(実は3巻まで、図書館からかりて読んでいたので、未購入なのでした。7巻以降は別な理由で未購入ですが。と言っても、立ち読みレベルでだいぶん読んでいるのではあるけれど。)

2005年11月22日 火曜日

なんでもかんでもExcel症候群

何でもかんでもPowerPoint症候群の弊害を日記で書いたのだが、それよりも世の中に広く広まっている病的な物と言えば、_なんでもかんでもExcel症候群_であろう。とにかく通常の表だけに飽きたらず、提出書類から報告書まで_何でもかんでもExcel_なのである。つまり「何でもかんでもExcel症候群」とはExcelだけですべての仕事が完結してしまう恐ろしい病気なのだ。
その病巣の由来を簡単に予想するとすれば、子供の頃に升目の入ったノートで漢字の書き取りをやらされ(つまりカーニングとかに無頓着になる)、読書感想文などの類は原稿用紙で書かされ、漢字は少ない文字数で情報量を詰め込めることからすっきりとした表が書きやすく、何でもかんでも_表にしないと気が済まない_という日本人の悲しい習性に由来する物であろうと思うのだ。
まぁUnixでEmacsしか使わないというのと似たような話ではあるのだが、典型的なEmacsユーザーが扱うのは汎用的なテキストファイルであり、Emacs LISPでがんがんプログラムを書く(設定ですらLISPを書かねばならないので、多少は誰でも書く物だ)人が多い用に思われる。Excelの場合は、XLS形式という特殊なフォーマット(最近のはXMLなのか?)を用い、適当なワークシート関数などを表層的に使いこなしている人が多く、Excelの基本技とも言えるピボットテーブルとかソルバーを使いこなしている人がどの程度いるかと問えば、結構怪しい物だ。
まぁ会社で働いているとこういう病的な世界と常に隣り合わせであり、いつも精神汚染を受けているのであるが、これを前向きに楽しむにはどうすればいいか? ということに焦点を絞り込んで生活しないとやってられないと言うことになるであろうか。
そんなわけでExcelをちゃんと使いこなすにはVBAで遊びまくればいいのであるが、テキストファイルとのつきあいもやめられない。Unixな環境に一度でも触れてしまうと、VBAのお気軽さを楽しんでいても感じる最大の問題点は_正規表現が使えない_と言うところがなやましい。これまで正規表現(とハッシュ)を使うためにVBAからだと駄目だと思い、Active PerlとかActive Rubyとか非VBAでCOMオブジェクトをさわれる言語を選択していたのであるが、書いたプログラムを使ってもらうのに_わざわざPerlだのRubyだのをインストールしてもらわねばならない_という痛い問題があった。Windowsで全然閉じていないのである。Mac OSXみたいにPerlとかRubyがインストールされていればこんなことは考えなくて良いのだが、PerlやRubyを使うのは_Windows的なやり方ではないのである_と言う結論に落ち着いた。
Windows的にどうすればいいのかと言う話なのだが、結局のところ現在のほぼすべてのオフィスにあるWindows環境で前提として良さそうな物は、Internet Explorer 6 SP2とExcelであろうと言うことになる。いろいろ調べているとIE5以降だと、WIndows Scripting Hostが使える。_まてよWSHにはたしか正規表現オブジェクトがあったぞ_と思い出して、さらにCOMで呼び出せるじゃんと言うことを思い出したので、一気にこの方面の悩みが解消した。要はWSHの正規表現オブジェクトをVBAのオブジェクトにしてしまえばいいのである。なんてこったい。こんなので数年悩んでたよ。とりあえず、あるディレクトリにある複数のファイルを選択して、そのすべてのファイルに、入力したパターンマッチをして置換を行うVBAプログラムを書いてみよう。

2005年08月27日 土曜日

Lightweight Language Day (and Night)

今年もLightweight Languageの年に一度のお祭りであるLightweight Language Day (and Night)に参加してきました。チケットの発売に気がつかなかったので、何とか買えた昼間の部のみ参加。
今年の僕が感じた目玉のひとつ目は、GNU awk(gawk)のXML拡張であるxmlgawkであろうか。僕がgawkやnawkを使っていたのは学部の4年目のころで、あのころは日本語化パッチを当てたjgawkをメインに使っていた。(今にして思うとperlのプログラムも結構書いたけどawkほど使ってないな。) 気がつけば国際化されて、キーワードが増えてXML文書をSAXっぽく扱えるようだ。この拡張はgawkの先端開発版という位置づけで、コンパイルオプションで無効にできるそうだ。awkは行指向ツールとしてはperlやrubyより使いやすいところはあるので、まだ開発が行われていて進化が続いているのかと言う驚きとともに、昔師匠のawkの技でうんざりしてしまいやめてしまったawkであるが、再び遊んでみたいなあと思ったのである。(僕の師匠(指導教官ともいう)はawkとかPostScriptのプログラムをサクサクと・・・)
二つ目は全然追いかけてもいなかったけどPerl6周辺の話。昨年のLLでは北京オリンピック頃と言っていたPerl6であるが、この1年でPerl6のHaskellによる実装(Pugs)を行ったという天才が登場して、突如として開発が加速しているようだ。それにしても1ヶ月でHaskellを覚えて、Perl6の仕様を具現化してしまうとは。若い天才的な人物の登場というのはなかなかエキサイティングなことだったのだと思う。小飼さんのPerl6のデモを見ていたのだけれど、Perl5との互換性を捨てているせいか、言語自身がリファインされて、どことなくrubyに近づいているような・・・ 似たような機能を影響しながら追加していくと、結局PerlとRubyとPythonを足して3で割ったような言語ができるのだろうか? もうちょっとPerlの良いところであり悪いところでもある毒々しさを残して置いて欲しいのだけれど。
他の言語に関しては特に進展があったわけではないのでここで述べる必要もないと思う。ざっと10個の言語プレゼンを聞いたのであるが、聞いた結論としてLightweight Languageとは何だろうかと思ってしまう。個人的なLightweightであることの定義付けであるが、まず最初に軽い記述で高度な処理ができること、次にたいていの人にとって理解しやすい概念のみでプログラム可能であることかなと思う。そういう点でエヴァンジェリストの方々には大変申し訳ないが、monadsとか、Curry化とか、継続とかが一般に理解されるようになるとはとうてい思えない。(一応分かりやすいと思う解説へのリンクは貼った。) むろん関数型プログラミングの威力は理解できるのだが、果たしてLightweightなのか? 誰しも知っていて当たり前なのか? と言うあたりが僕は知りたい。(Scheme的にはSICPを読めと言う話だと思うのだが、みんなしなければならないもんでも無かろう。) ちなみに僕自身はLightweightに関係なく関数型な言語の1つはプログラマを志す人は教養レベルでも良いからやっておくべきだと思ってはいる。第一、面白いし。
フレームワーク対決については、Kahuaは昨年のLLで面白いツールだと思っていろいろ調べていたので、面白くデモを拝見したのだが、もう少しうまく説明できればなという場面が多かったかも。Ruby on Railsについては、一度デモを見ておきたいと思っていたので、今回のプレゼンは参考になった。みんなが凄いというだけあるな。うちのサーバにインストールというのはバックエンドDBをインストールしたくないので保留としても、試験動作環境のDebianマシンには入れてみてもいいかも。ちょっと検討してみよう。Sledgeについては今更Perl Baseなシステムを持ちたくない(我が家の環境でPerl依存なものはもうほとんどない)ので、意見は保留。
「君ならどう書く」というセッションは、漢数字を扱う電卓ということで、面白く眺めさせてもらった。今回の漢数字の定義自身が、一般的ではない(世間的には無量大数まで万進のはず。今回はどの桁か忘れたけど万万進に切り替わる)こともあり、パースをどうするかというところが面白かった。(万万進の場合は人間が聞いてもよくわからなくなるので、少なくとも国内では廃れている。) 桁数が多くなれば誰しもがやるように、下の桁から勘定すればいいのよね。今回は個人的にはプログラム可能な電卓を作りこんでいたPythonのチームが秀逸であったと思う。
あと自由演技のsfの小林さんなのだが、科学技術計算という論点では特に行列計算ができる計算機という位置づけだったかと思う。この手の計算は特に実験系の人は常に悩ましいと思うのだが、測定器が吐き出すテキストデータをなんとかパースして、どう配列に取り込むかという点でいつも悩むところがあるが、このプログラムの場合データを表のようなものに落としこんでテキストファイルとして、テキストファイル自身が行列やベクトルをあらわして、ファイル名を記号として使えるような計算に特化したシェルのようなものという風に読めたのであるが、あの場で量子力学の固有値計算をするのはどうかと思う。説明によっては面白いと思うのだけど。ちなみに僕はあの規模の計算は普通にCで書くべきだと思う。いろいろ悩ましいけど。

2005年05月09日 月曜日

RSS配信開始

連休中いろいろがんばったおかげで、この日記のRSSを配信できるようにしました。多分今日の修正で所望の動作をするはず。広瀬さん作のmkdiary.rbのRSS生成パッケージrss.tar.gzを配布しますので、mkdiary.rbをご利用の方はつかってやってください。一応ruby-1.6系でもruby-1.8系でも動きます。(追加するパッケージはuconvもしくはrbuconvのみです。)
ドキュメントもあらかた書いたので、多分インストールできると思いますが、ようわからん人はご連絡ください。

Google自分の日記の名前で検索

Google自分の日記の名前で検索してみると、意外な方面の意外な記事にリンクが貼られていたりしてなかなか面白い。やっぱりGoogleで飛んでくるのだろうか?

ApacheのMIME型とcharset設定のメモ

忘れないようにメモ。RSSの配信に伴って、RSSのMIME型を text/xml ; charset=UTF-8とすることにした。(本来ならtext/xml+rss ; charset=UTF-8だろうけど) .htacessファイルに以下のように設定する。
AddType “text/xml ; charset=UTF-8” rss
XHTML 1.1でもこの辺の問題はあるので、非常に悩ましい。(text/xml+xhtmlとかtext/xml+rssとか言ったMIME型をちゃんとサポートしているものは少ないのです。)

2005年04月19日 火曜日

いろいろ調べもの…

いろいろ調べもの。今はこんなことを調べている。
XHTMLファイルの解析
SAXやDOMを使わずに、もっと簡単な方法での特定要素の中身を取り出したい。(たとえばh3要素やa要素)
プログラムコードのHTMLにおける引用の仕方
これまでpreでくくった中身をさらにcodeでくくっていたんだが、これはやっぱおかしい。もっと論理的に表現したい。
UTF-8でのファイルの保存について
1つはBOM(Byte Order Mark)を付けるべきか否か。本来UTF-8でのエンコードではエンディアン(卵を丸みがある方から食べるのが好きかのか、尖った方から食べるのが好きかとか言った区別だ)は関係ないはずなのだけど、Unicodeの規格を読むと署名として使っているらしい。BOMを付けるとおかしくなったり(たいていのエディタで付けてくれない)、無いとおかしかったり(IEは文字コードの自動認識が巧く行えない)するので、どうしたものか。2つ目は_変換表はどれが正しい?_ どれも同じ程度に微妙に違う。何を信じればいいのか… いずれにせよ全く何とかして欲しい。(それ以外はUTF-8の方が扱いやすいのよね。XMLの場合。)
X-Windowでの漢字変換
うちの環境ではGnomeもKDEもデスクトップ環境としては使ってません。(鬱陶しいんだもの。) ウィンドウマネージャはFluxboxを使っている。適当なディスプレイマネージャ(kdmやwdm)でウィンドウマネージャにFluxboxに指定してログインすると、kinput2が起動してくれないというか~/.xsessionを無視しているっぽい動作をするため、いろいろ不便な目に遭っている。なぜだろう?

2005年04月18日 月曜日

findメモ

この日記の記事(限りなくHTML4 Strictに近くて、ISO-2022JPで書かれているファイル)を諸般の事情により内容を再利用することを目的に、元の記事をを残しつつ、XHTML 1.0 Strict(UTF-8)に変換しようかと画策している。今回の見直しは結構大きめで、せっかくだからスタイルシートの指定も一気につもりつもりなのだ。
今日の努力で一日分の記事のファイル(index.html)について、上記の変換がshとsedとHTML Tidyでできるようになったのだが、変換したいファイルはyyyyが西暦年、mmが月、ddが日として
~/html/diary/yyyy/mm/dd/
と言うディレクトリに静的に入っている。個数を勘定(LS-lRしてindex.htmlを検索語にgrep書けて行数を数えただけ)してみたところ、1200個くらいのファイルがある。(足かけ5年分だとこのくらい?当然ディレクトリの個数がその程度ある。) さすがに手でやるのも気が遠いというか、そんなの人間のお仕事ではないので、再帰的にできないかなと思うわけだ。いったん1つのファイルを処理する適当に書いたシェルスクリプトはこんなかんじ。あんまり考えないで書いたので、動作の通りそのまんま。

2005年04月14日 木曜日

今日は1日中XML/HTML周りの調査

サイト全体の見直しを考えていて、これまで積んできた日記を中心とするデータの再利用を行うため、XMLやXHTML周りの調査など。うちの日記は、僕が書く際になるべくHTML4 Strictになるように書いているので、扱いやすいデータだと思うのですが、任意に何個かのファイルに対してHTML Tidyをかけてみた。割とすんなりとXHTML1.0 Strictに変換できることが分かったので、これで処理してみることにする。ざっくりと使えそうなTidyの設定ファイルは以下のようなもの。

2004年08月08日 日曜日

Lightweight Language Weekend 2日目

2日目の前半は最近はやりのblogな話題。僕は基本的に興味がないのだが一応お勉強のため… 大きなblogサイト(Livedoor Blog)やはてなダイアリーなど)の方が来ていたので、個人的には「(政府や各種圧力団体などから圧力がかかりそうな)非常にまずい記事の削除要請があった場合にどのように考えるかの立ち位置」を効きたかったのだが、LLには関係ないし、契約で乗り切れる話かもしれないし、あまりにダークなんで聞けなかった。聞いておけば良かったかな? LLの最も巨大な応用先であることは認めるが、blogだけでこんなに時間を取るんだったら他の話が聞きたかった。
Lightning Talkは詳細はあまり覚えてない。(なんせ半分くらいBitKeeperと話をしていたので。) 平内さんの「木のマッチ」では、Schemeを使用した木構造のデータに対して正規表現みたいなパターンマッチをする話。さくっとXML VallidatorがかけるあたりがSchemeのマクロらしい。久井さんの「Gauche-glによる、3次元図形言語」では、Gauche-GLとストリーム(SICP Chap3の後半)を使ったアニメーションによるプレゼンでGaucheではこんなこともできるのかと言うこともあってこれまた面白かった。
高橋さんの「日本Rubyの会設立」の話は要点とをついたインパクトのあるプレゼンで、こうあるべきかと思ったり… 早川さんの「LL侍」は最初は照れが見えたが、吹っ切れたあとはかなり面白かった。(もう一段切れが欲しかったかな。)

2004年02月10日 火曜日

Java 2 Platform, Standard Edition (J2SE) 1.5.0 Beta1

2月4日にSun MicrosystemsからJ2SE(Java 2 Platform, Standard Edition)の次期バージョンであるJ2SE 1.5.0 Beta1が公開された。JavaはまだJDK1.0のα版とかβ版とか言っていた頃の熱い時代に熱狂的に遊んでいたが、いろいろ熱が冷めるような事件があって、さらに諸般の理由があって_使わない/使えない言語_であった。いままでわりと保守的な更新を続けてきたJavaであるが、J2SE 1.5.0(コード名「Tiger」)では、Java2になったときと同じ程度、もしくはかつて例のない大きな改良が加えられることとなった。言語仕様に関わりそうなものは、ざっくり…