Windows上でGaucheで日本語を使うための設定

今日は、
近況。脱エクセルを目指して - nibosiiwasi’s blog
について、詳しく書きます。
WindowsでのGaucheの環境設定でハマりました。
Gaucheのインストールは簡単でした。Gaucheのバージョンは0.9.5

日本語はコンソールからだと、文字化けします。
調べたら、xyzzyGaucheを使えるらしいので、やってみました。
xyzzyの設定で時間がかかりましたが、最終的にはうまくできました。

xyzzyの設定には、次のリンクなどを参考にしました。
https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AWindows%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E9%96%A2%E9%80%A3
github.com

xyzzyGaucheを使うための設定
  1. Gaucheをインストールします。
  2. xyzzyをダウンロードし、展開します。展開でできたフォルダを自分に都合の良い場所に置きます。
  3. Windows環境変数でXYZZYHOMEを設定します。 C:\フォルダを置いた場所\xyzzy-0.2.2.253\xyzzy  という感じでxyzzyフォルダのある場所を書きます。
  4. このxyzzyフォルダの中に、「.xyzzy」というファイル名のファイルを作り、(setq *default-fileio-encoding* *encoding-utf8n*) と書いて保存します。
  5. xyzzyGaucheを使えるようにするための設定をします。

github.com
からダウンロードします。
「.xyzzy」の中に、先ほどダウンロードしたREADMEのコードの部分をコピぺして保存。xyzzyのsite-lispフォルダの中にダウンロードした(site-lispの中の)scheme.lを入れます。xyzzyのetcフォルダの中にダウンロードした(etcの中の)Schemeを入れます。
xyzzyを立ち上げて、M-x(Altを押しながらxを押す)のあと、byte-compile-fileと入力
f:id:nibosiiwasi:20161022234034p:plain
ファイル名を聞かれるので、~xyzzy/site-lisp/scheme.lと入力(tabで入力補完あり)
xyzzyをCtrl、Shiftを押しながらEnterを押して起動。これでxyzzy設定完了です。

それでは実験してみましょう。

日本語の入ったcsvファイルをリスト形式に変換する実験です。
CSVファイルを読む - Gaucheクックブック

Gauche Users’ Reference: CSV tables

を参考にしました。


books.csv

書籍名,著者,出版社,発行年月,ISBN
空気を読んではいけない,青木真也,幻冬舎,201609,978-4-344-02998-9
悪口の技術,ビートたけし,新潮文庫,200502,978-4-10-122529-6
バカざんまい,中川淳一郎,新潮新書,201609,978-4-10-610683-5
勝負論 ウメハラの流儀,梅原大吾,小学館新書,201310,978-4-09-825181-0
資本主義の終焉と歴史の危機,水野和夫,集英社新書,201403,978-4-08-720732-3

エンコードはutf8nにします。xyzzyで「ファイル」、「名前をつけて保存」、「エンコーディング」 でエンコードを変えられます。

exceltest.scmファイルに

(use text.csv)
(use gauche.generator)

(define books-alldata
  (call-with-input-file "../../user-scheme/books.csv"
                        (lambda (in)
                          (port->list (make-csv-reader #\,) in))))

(define booktitle-author
  (call-with-input-file "../../user-scheme/books.csv" 
                        (^p (csv-rows->tuples 
                             (generator->list (cute (make-csv-reader #\,) p))
                             '("著者" "書籍名")))))

と書きます。scmファイルもutf8nのエンコードにします。

f:id:nibosiiwasi:20161022234533p:plain
今回、フォルダの位置関係は、こういう風にしてます。(注:カレントフォルダはXYZZYHOMEつまりxyzzy-0.2.2.253/xyzzyです。book.csvとexceltest.scmはuser-schemeの中にあります。)

それでは、テストしてみます。xyzzyを立ち上げます。Altを押しながらxを押し、make-scheme-scratchと入力します。
f:id:nibosiiwasi:20161022234857p:plain

コードを打ち込み、行末でCtrlを押しながらjを押すと、Gaucheが走ります。

実行風景
f:id:nibosiiwasi:20161022235258p:plain

実行結果

(load "../../user-scheme/exceltest.scm")
#t
books-alldata
gosh> (("書籍名" "著者" "出版社" "発行年月" "ISBN") ("空気を読んではいけない" "青木真也" "幻冬舎" "201609" "978-4-344-02998-9") ("悪口の技術" "ビートたけし" "新潮文庫" "200502" "978-4-10-122529-6") ("バカざんまい" "中川淳一郎" "新潮新書" "201609" "978-4-10-610683-5") ("勝負論 ウメハラの流儀" "梅原大吾" "小学館新書" "201310" "978-4-09-825181-0") ("資本主義の終焉と歴史の危機" "水野和夫" "集英社新書" "201403" "978-4-08-720732-3"))
booktitle-author
gosh> (("青木真也" "空気を読んではいけない") ("ビートたけし" "悪口の技術") ("中川淳一郎" "バカざんまい") ("梅原大吾" "勝負論 ウメハラの流儀") ("水野和夫" "資本主義の終焉と歴史の危機"))