私は、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 mailing list vine-users@xxxxxxxxxxxxxxxxxxxx http://listserv.linux.or.jp/mailman/listinfo/vine-users