[vine-users:082940] Re: ブックマークのHTMLファイルを見やすくするソフト / プログラミング言語 Gauche、Schemeの話
田中 秀知
hidetomo @ tanaka.email.ne.jp
2018年 2月 5日 (月) 01:01:08 JST
私は、VineSeedのMLアーカイブのWebページで、
Gaucheというパッケージをアップデートしましたというお知らせを見て、
Gaucheというプログラミング言語があるのを知って、
使ってみようと思って、勉強しはじめました。
Gaucheは Schemeというプログラミング言語の くくりに属しています。
私は 今までは C言語、C++ で プログラムを作る経験が多かったので、
Schemeのプログラムを作る時も、
C言語の時のプログラムの作り方で発想してしまって、
なかなか Schemeの発想に切り替わらずに 悪戦苦闘しました。
世の中には、プログラミング言語の種類が多くあるので、
別に Schemeに こだわらなくて いいのですが、
Schemeに興味を持ってしまったので、
これからも勉強してみようと思っています。
以降に、Gauche、Schemeの解説の話を載せてみます。
◆ GaucheのサイトのWebページ
・「Gauche - A Scheme Implementation」
http://practical-scheme.net/gauche/index-j.html
・「Practical Scheme」
http://practical-scheme.net/index-j.html
(「Practical Scheme」というタイトルは 最初に見た時、
「Schemeの練習」という意味に勘違いしていたのですが、
たぶん 「実用的なScheme」「実践的なScheme」というのが正解だと思います。)
・「Gauche ユーザリファレンス: Top」
http://practical-scheme.net/gauche/man/gauche-refj/index.html
・オフライン時のGaucheユーザリファレンスは、VineLinuxでは 次の場所に
インストールされています。
/usr/share/doc/gauche-0.9.5/gauche-refj.html
・「WiLiKi - Gauche, Scheme」
https://practical-scheme.net/wiliki/wiliki.cgi
◆ Gauche、Schemeのプログラミング言語の解説。
・「Gaucheでメタプログラミング(1):ちょっと変わったLisp入門 (1/5) - @IT」
http://www.atmarkit.co.jp/ait/articles/0810/31/news148.html
・「Scheme入門 スーパービギナー編 - atpons @ Lisp」
https://sites.google.com/site/atponslisp/home/scheme/racket/schemenyuumon-1/schemenyuumon
・「独習 Scheme 三週間 Teach Yourself Scheme in Fixnum Days」
http://www.sampou.org/scheme/t-y-scheme/t-y-scheme.html
・「お気楽 Scheme プログラミング入門 contents」
http://www.geocities.jp/m_hiroi/func/scheme.html
・「もうひとつの Scheme 入門」
http://www.shido.info/lisp/idx_scm.html
・「Scheme - Expressions」
https://www.cs.cmu.edu/Groups/AI/html/r4rs/r4rs_6.html
・「Scheme演習 第3回 - Scheme演習」
http://www-ui.is.s.u-tokyo.ac.jp/~hara2001/scheme/material/3/3.mtd.column.html
・「説明のないとってもシンプルなサンプルプログラム集(Gauche)」
http://simplesandsamples.com/hello.scm.html
・「初めてのGauche - Qiita」
https://qiita.com/kou_tana77/items/b1638e8ae2630cc82a40
・「Learn Scheme in 15 minutes」
http://web-artanis.com/scheme.html
・「逆引きScheme: 一覧」
http://tips.cddddr.org/scheme/index.cgi?c=a
・「プログラミング言語 Scheme の解説」
http://www7b.biglobe.ne.jp/~saia/scheme.html
・「なんでも再帰」
http://practical-scheme.net/docs/tailcall-j.html
・「なんでもλ」
http://practical-scheme.net/docs/lambda-j.html
◆ Gaucheプログラムのテスト動作の確認の方法。
・「Gaucheでプログラミング (2/4)」
http://www.atmarkit.co.jp/ait/articles/0812/17/news149_2.html
・goshのREPLは、(exit)と入力すると、終了します。
◆ WindowsでGaucheを動かす件について。
・Windowsに MinGWというソフトをインストールし、Gaucheをインストールします。
Gaucheが MinGWを利用して動くという形に なります。
・「MinGW(GCC)のインストール(Windows10)」
http://windows.blogo.jp/programming/install_mingw_gcc
・上記の方法でインストールに失敗する場合は、MinGWのバージョンが古くなって
しまいますが、次の方法でも インストールすることができそうです。
「version 4.4.0 / HOWTO Install the MinGW (GCC) Compiler Suite」
http://www.mingw.org/wiki/InstallationHOWTOforMinGW#comment-781
「MinGW - /MinGW/Base/gcc/Version4/Previous Release gcc-4.4.0 」
https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/Previous%20Release%20gcc-4.4.0/
・「7zip」というファイル圧縮ソフトで、ファイル名の
拡張子「.lzma」「.tar」が 解凍できるようです。
・「Windows用バイナリインストーラ - Gaucheダウンロード」
http://practical-scheme.net/gauche/download-j.html
ページ先頭から8割ほど進んだ所の「Windows用バイナリインストーラ」の章に
書いてあります。
・「Windowsコンソール」
http://practical-scheme.net/gauche/gmemo/index.cgi?Windows%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB
・「Gauche : Windowsコンソール関連」(2018年2月時点で Gauche v0.9.5での話)
http://practical-scheme.net/wiliki/wiliki2.cgi?Gauche%3AWindows%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E9%96%A2%E9%80%A3
・「Gauche : Windowsコンソール対応」(2018年2月時点で Gauche v0.9.6での話)
http://practical-scheme.net/wiliki/wiliki2.cgi?Gauche%3AWindows%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E5%AF%BE%E5%BF%9C
・「MinGW, MSYS 周りの知識整理: 参考までに cygwin について - Qiita」
https://qiita.com/Yuki-Inoue/items/58d3bb564cf2c20fde97
・「Gauche : Windows特有の実行ファイル」
http://practical-scheme.net/gauche/man/gauche-refj/GauchewoQi-Dong-suru.html#WindowsTe-You-noShi-Xing-huairu
◆ 省略したプログラムの記述の仕方。
・「lambda」の代わりに「^」と 書くことができます。
これはGauche独自の仕様拡張との事です。
・リストの何番目かの要素を返す関数は list-ref ですが、
Gaucheの場合、万能アクセサ「~」という物があり、
list-ref の代わりに使えます。
「万能アクセサ - Gauche」
https://practical-scheme.net/gauche/man/gauche-refj/Shou-Sok-kitoJi-Sok-.html#g_t_4e07_80fd_30a2_30af_30bb_30b5
◆ 「'」についての説明。
・以降の文章で、「'」が出てくるので、
リテラル式 「quote」、「'」について、ここで説明しておきます。
「Scheme 入門 3. リストを作ろう」
http://www.shido.info/lisp/scheme3.html
ページ先頭から5割ほど進んだ所の「3. quote」の章に書いてあります。
だいたいの意味で言うと、前に「'」を付けると、
定数のような扱いになるということです。
◆ GaucheからのLinuxコマンドの呼び出しの方法(その1)。
・関数 process-output->string、process-output->string-list の使い方
について 書きます。
・「高レベルプロセスインタフェース - Gauche」
https://practical-scheme.net/gauche/man/gauche-refj/Gao-reberupurosesuintahuesu.html#index-process_002doutput_002d_003estring
・事前に モジュールを読み込んでおく必要があります。
(use gauche.process) と 書いておきます。
process-output->string等よりも前に 行なっておきます。
・ (process-output->string-list "ls /bin | head") のように
ダブルクォーテーションで囲むこともできて、
途中に パイプライン「|」を入れることもできるようです。
◆ GaucheからのLinuxコマンドの呼び出しの方法(その2)。
・関数 run-process の使い方について 書きます。
・「高レベルプロセスインタフェース - Gauche」
https://practical-scheme.net/gauche/man/gauche-refj/Gao-reberupurosesuintahuesu.html#g_t_9ad8_30ec_30d9_30eb_30d7_30ed_30bb_30b9_30a4_30f3_30bf_30d5_30a7_30fc_30b9
・run-process-pipeline という関数もあります。
・事前に モジュールを読み込んでおく必要があります。
(use gauche.process) と 書いておきます。
run-processよりも前に 行なっておきます。
・引き数の cmd/argsは、形式としては リストです。
・cmd/argsの各要素は、x->stringで文字列に変換されるとのことなので、
各要素をダブルクォーテーションで囲む必要はありません。
・子プロセスの終了を待ちたい場合はwaitキーワード 引数を使います。
(run-process '(ls -al) :wait #t)
・cmd/argsの中に、リダイレクト">"等を 記述してはいけません。
・例えば、Linuxコマンドの出力を "calender.txt"というファイルへ
リダイレクトしたい時は、次のような書き方になります。
(run-process '(cal) :redirects '((> 1 "calender.txt")) :wait #t)
・もし、上記の"calender.txt"の部分を 変数に したいなら、
次のような書き方になります。 output_f_nameが変数です。
(run-process '(cal) :redirects
(list (list '> '1 output_f_name)) :wait #t)
◆ Gaucheで、実行形式ファイル、スクリプトを書く件について。
・シェルのスクリプトを書く場合は、1行目に
「#!/bin/sh」や「#!/bin/bash」を書きますが、
Gaucheの場合は、「#!/usr/bin/env gosh」と書くのが良さそうです。
・「Gauche > コマンドライン引数を使う(その1)」
http://simplesandsamples.com/arg.scm.html
・「Gauche > コマンドライン引数を使う(その2)」
http://simplesandsamples.com/args.scm.html
・さらに詳しい話は 次のWebページに載っています。
「Schemeスクリプトを書く - Gauche」
https://practical-scheme.net/gauche/man/gauche-refj/SchemesukuriputowoShu-ku.html
「コマンドライン引数の解析 - Gauche」
https://practical-scheme.net/gauche/man/gauche-refj/komandorainYin-Shu-noJie-Xi-.html
◆ 文字列の検索、置換の話(正規表現を使った場合)。
・「サルにもわかる正規表現入門」
http://www.mnet.ne.jp/~nakama/#no-one
・ "def"が "abcdefghi"の中に含まれているかどうかの判定。
if文の中の判定が真になるので "yes"が選ばれます。
(if (rxmatch #/def/ "abcdefghi") "yes" "no")
・ "klm"が "abcdefghi"の中に含まれているかどうかの判定。
if文の中の判定が偽になるので "no"が選ばれます。
(if (rxmatch #/klm/ "abcdefghi") "yes" "no")
・ 検索結果は、一致が見つかった場合は <regmatch>オブジェクト
という形式で返ってきます。
一致が見つからなかった場合は #f (論理値でいうFALSE、偽)が
返ってきます。
<regmatch>オブジェクトの両端を 丸括弧で囲む事で、
評価が行なわれ、結果の文字列が返ってきます。
(define match (rxmatch #/def/ "abcdefghi") )
(print match)
=> #<<regmatch> 0x82c8000>
(print (match) )
=> def
・ 文字列の変数 str2の内容に対して、
"def"を "xyz"に 置換する処理です。
(define str2 "abcdefghi")
(set! str2 (regexp-replace #/def/ str2 "xyz") )
(print str2)
・「正規表現 - Gaucheユーザリファレンス」
http://practical-scheme.net/gauche/man/gauche-refj/Zheng-Gui-Biao-Xian-.html#g_t_6b63_898f_8868_73fe
・「Gauche:正規表現を使う」
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3A%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%92%E4%BD%BF%E3%81%86
・「Gauche:regexp - WiLiKi」
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3Aregexp
◆ 関数の中で、defineを使う時について。
・関数の中で defineを使う場合、lambda文があって、let文があるとすると、
位置的に let文の次あたりに define文を書かないといけないようです。
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3ABugs%3Alog8#H-qa8lys
◆ C言語の関数呼び出しの際の 引き数のポインタ渡しのような事が
Schemeで可能なのかどうかを調べた件について。
・「Scheme pass-by-reference - Stack Overflow」
https://stackoverflow.com/questions/3262119/scheme-pass-by-reference
・「Parameter Passing in Scheme - Stack Overflow」
https://stackoverflow.com/questions/2304481/parameter-passing-in-scheme
◆ エディタ Emacsで、Schemeのプログラムの対応する括弧を色付けする件について。
・Emacsで「rainbow-delimiters」というパッケージを使うと、
プログラムの対応する括弧を色付けすることができます。
Emacsが scheme-modeで動いている時に、rainbow-delimitersが有効に
なるように設定しておこうと思います。
Schemeのプログラムのファイルの拡張子が「.scm」だと
自動的に scheme-modeに切り変わります
・インターネット検索で 「rainbow-delimiters」で検索してもらうと、
色々と情報が出てくると思うのですが、
VineLinux6.5で デフォルトでインストールされているEmacsが
バージョン 23.3.1 で、 導入方法が インターネットの情報とは異なっていたので、
以降に、バージョン 23の場合の やり方を書いておきます。
行なった時のメモが不十分で、記憶で書いているところがあり、
間違っている所があるかもしれません。
・package.elをインストールします。
「package.el - Emacs JP」
http://emacs-jp.github.io/packages/package-management/package-el.html
Emacs23ユーザーの方は、 http://bit.ly/pkg-el23 から
Emacs23向けの package.elをダウンロードし,
load-pathの通ったディレクトリに配置してください
と、書かれています。
私は、/usr/share/emacs/23.3/lisp に package.el を 置きました。
・package.elを使って、rainbow-delimitersをインストールします。
上記のWebページを参考にしてください。
・インストールの結果、 /usr/share/emacs/23.3/lisp に、
rainbow-delimiters.el と rainbow-delimiters.elc が 置かれました。
rainbow-delimiters.elのバージョンは 2.1.3 でした。
・rainbow-delimitersのデフォルトの状態では、色付けが薄い感じになっています。
これを 濃いめの色に変更します。
・rainbow-delimiters.elの118行目から125行目です。
次のようになっています。
(eval-when-compile
(defmacro rainbow-delimiters--define-depth-faces ()
(let ((faces '())
(light-colors ["#707183" "#7388d6" "#909183" "#709870" "#907373"
"#6276ba" "#858580" "#80a880" "#887070"])
(dark-colors ["grey55" "#93a8c6" "#b0b1a3" "#97b098" "#aebed8"
"#b0b0b3" "#90a890" "#a2b6da" "#9cb6ad"]))
・118行目から125行目を 次のように 書き換えます。
(eval-when-compile
(defmacro rainbow-delimiters--define-depth-faces ()
(let ((faces '())
(light-colors ["#00b0b0" "#ff0000" "#0000b0" "#00ff00"
"#ff00ff" "#b0b000" "#00b000" "#e0e000" "#0000ff"])
(dark-colors ["grey55" "#93a8c6" "#b0b1a3" "#97b098" "#aebed8"
"#b0b0b3" "#90a890" "#a2b6da" "#9cb6ad"]))
・rainbow-delimiters.el を コンパイルして、
rainbow-delimiters.elc を 作り直します。
「Emacs のバイトコンパイル | プログラマーズ雑記帳」
http://yohshiy.blog.fc2.com/blog-entry-22.html
管理者の権限が必要なようなので、
「sudo -」で いったん スーパーユーザーになって、
「emacs &」で emacsを起動して、コンパイルを行なってください。
・自分のユーザーのホームディレクトリ等にある「.emacs」のファイルに、
次の内容を追加で記入します。
;;--------- rainbow-delimiters を使うための設定 ------------------
(require 'rainbow-delimiters)
(add-hook 'scheme-mode-hook 'rainbow-delimiters-mode)
◆ 対応する括弧の色付けが、正規表現の中の「|」パイプラインにより
誤作動するのを防ぐ件について。
・rainbow-delimitersで 対応する括弧の色付けを行なっている時、
正規表現の中の「|」パイプラインにより、色付けが誤作動します。
これは、Emacsのscheme.elの中の パイプラインに対する処理を
除外することで防ぐことができます。
・変更には 管理者の権限が必要なので、
「sudo -」で いったん スーパーユーザーになります。
・次のコマンドを行ないます。
cd /usr/share/emacs/23.3/lisp/progmodes
cp -p scheme.el.gz scheme.el.gz.org
mv scheme.elc scheme.elc.org
gunzip scheme.el.gz
・スーパーユーザーの状態で、「emacs &」で emacsを起動します。
・/usr/share/emacs/23.3/lisp/progmodes/scheme.elのファイルを開きます。
・scheme.elの91行目です。 次のようになっています。
(modify-syntax-entry ?\| "\" 23bn" st)
・その91行目を無効化するために 次のように書き換えて、保存します。
;;(modify-syntax-entry ?\| "\" 23bn" st)
・scheme.el を コンパイルして、scheme.elc を 作り直します。
次のWebページを参考にしてください。
「Emacs のバイトコンパイル | プログラマーズ雑記帳」
http://yohshiy.blog.fc2.com/blog-entry-22.html
◆ モジュールとは? (モジュールの作り方)。
「お気楽 Scheme プログラミング入門 / オブジェクト指向編」
http://www.geocities.jp/m_hiroi/func/abcobj07.html
◆ Gaucheから C言語のライブラリを使う件について。
・「Gauche:c-wrapper関連」
https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3Ac-wrapper%E9%96%A2%E9%80%A3
・「GitHub - Hamayama/c-wrapper-mg: Gauche 用の c-wrapper を MinGW 上で
動くように改造したものです(実験中)」
https://github.com/Hamayama/c-wrapper-mg
・「 FFI (Foreign Function Interface) とは」
https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AFFI
◆ C言語からGaucheを使う件について。
・「 C言語からGaucheを使おう! (1) コンパイル環境を整える TECHSCORE BLO」
http://www.techscore.com/blog/category/%e8%a8%98%e4%ba%8b/%e9%80%a3%e8%bc%89/c%e8%a8%80%e8%aa%9e%e3%81%8b%e3%82%89gauche%e3%82%92%e4%bd%bf%e3%81%8a%e3%81%86%ef%bc%81/
◆ CGIのプログラムに Gaucheを使う件について。
・「GaucheでCGIプログラミング」
https://www.slideshare.net/kazh98/gauchecgi
・「Gauche:CGI - WiLiKi」
https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3ACGI
◆ GaucheからGUIを使う件について。
・GaucheからGTK2を使うための拡張ライブラリの件についてです。
ページ先頭から1割ほど進んだ所の「Gauche-gtk」の項目に書いてあります。
http://practical-scheme.net/index-j.html
◆ Gaucheでグラフィック描画を行なう件について。
・GaucheからOpenGLを使うための拡張ライブラリの件についてです。
ページ先頭から1割ほど進んだ所の「Gauche-gl」の項目に書いてあります。
http://practical-scheme.net/index-j.html
・「Gauche:Gauche-glサンプル」
https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AGauche-gl%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB
・Gauche-glを動かすためには freeglutというC言語のライブラリが必要です。
以下の話は VineLinux6.3 および 6.5 の時代の話なのですが、
VineLinux6.3には freeglutのバージョン2.6.0がありました。
けれど、VineLinuxのfreeglut 2.6.0では、動作しませんでした。
・freeglut2.8.1のソースをwebから ダウンロードして コンパイルしたところ、
glutが 動作するようになりました。
「The freeglut Project :: About」
http://freeglut.sourceforge.net/
ただし、VineLinux6.3と6.5 へのインスールの際には 問題があり、
問題を回避するような手順が必要になってきます。
以下に その手順を書いておきます。
・freeglut2.8.1をインストールするために、
VineLinuxのfreeglutのパーッケージを削除しようとしたのですが、
apt-getのコマンドが パッケージの依存関係がおかしくなっていると
エラーを出すようになってしまいました。
なので、VineLinuxのfreeglutのパーッケージを削除するという操作は
しないようにしました。
その代わり 下記のような手順を行なうことにしました。
・freeglut2.8.1を ソースからコンパイルして、インスールします。
インストール先は デフォルトでは /usr/local/lib/に なります。
・以降の操作は スーパーユーザーで行なってください。
/usr/lib/下にあるVineLinuxのlibglutをリネームして、
次の名前に変更しました。
libglut.so.3.9.0.vine libglut.so.3.vine libglut.so.vine
・次の操作をします。
# cd /usr/lib
# ln -s /usr/local/lib/libglut.so.3.9.0 libglut.so
# ln -s /usr/local/lib/libglut.so.3.9.0 libglut.so.3
# ln -s /usr/local/lib/libglut.so.3.9.0 libglut.so.3.9.0
・操作の結果としては このようになります。
# ls -l libglut*
lrwxrwxrwx 1 root root 31 12月 20 17:11 libglut.so ->
/usr/local/lib/libglut.so.3.9.0*
lrwxrwxrwx 1 root root 31 12月 20 17:11 libglut.so.3 ->
/usr/local/lib/libglut.so.3.9.0*
lrwxrwxrwx 1 root root 31 12月 20 17:13 libglut.so.3.9.0 ->
/usr/local/lib/libglut.so.3.9.0*
-rwxr-xr-x 1 root root 314421 3月 27 2011 libglut.so.3.9.0.vine*
lrwxrwxrwx 1 root root 16 12月 20 16:56 libglut.so.3.vine ->
libglut.so.3.9.0*
lrwxrwxrwx 1 root root 16 12月 20 16:56 libglut.so.vine ->
libglut.so.3.9.0*
◆ エディタやドキュメント・ブラウザで ユーザーリファレンスを
見るという件について。
・Gauche本家サイトのGaucheのソースは 2018年2月時点で
http://practical-scheme.net/vault/ の Gauche-0.9.5.tgz です。
html版のユーザーリファレンス以外に info版のユーザーリファレンスも
含まれているようです。make等のビルドが必要なようです。
・「Gaucheのユーザーリファレンスを呼び出す - (define -ayalog '())」
http://ayato.hateblo.jp/entry/20130509/1368124378
・「紫ログ: Emacs上でGaucheのinfoを引く」
http://blog.livedoor.jp/naoya_t/archives/51350496.html
・「Gauche:マニュアルにアクセス」
https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3A%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9
・「GaucheのドキュメントをDashに追加する - ぼっち勉強会」
http://kannokanno.hatenablog.com/entry/2017/05/04/161642
・Dashというのは Macのオフラインのドキュメント・ブラウザの事だそうです。
関連するwebページとして 次のwebページがありました。
「Zeal - Linux, Windowsで使えるオフラインドキュメントブラウザ」
http://syohex.hatenablog.com/entry/20131104/1383544614
◆ HTMLファイルを解析(パーズ、parse)する件について。
・「Scheme:htmlprag - WiLiKi」
https://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3Ahtmlprag
・「html-parserをGaucheに移植」
http://practical-scheme.net/wiliki/wiliki.cgi?%E9%BD%8A%E8%97%A4
ページ先頭から1割ほど進んだ所の「html-parser」の章に書いてあります。
・「#:g1: html-parserの紹介」
http://g000001.cddddr.org/3617797200
・「SXML - WiLiKi」
https://practical-scheme.net/wiliki/wiliki.cgi?SXML
・「SXMLからマークアップへの変換 - Gaucheリファレンス」
http://practical-scheme.net/gauche/man/gauche-refj/SXMLGou-Zao-woCao-Zuo-suru.html#SXMLkaramakuatupuhenoBian-Huan-
・「SXMLからXMLとXHTMLのシリアライゼーション - Gaucheリファレンス」
http://practical-scheme.net/gauche/man/gauche-refj/SXMLkaraXMLtoXHTMLnosiriaraizesiyon.html#SXML_304b_3089XML_3068XHTML_306e_30b7_30ea_30a2_30e9_30a4_30bc_30fc_30b7_30e7_30f3
・「k16's note: はじめてでも安心 SXML入門」
http://note.golden-lucky.net/2011/08/sxml.html
vine-users メーリングリストの案内