Gauche で本を作る
株式会社オーム社開発部
鹿野 桂一郎
kshikano@ohmsha.co.jp
1
Gauche で本を作る
鹿野 桂一郎
k16.shikano@gmail.com
http://k16journal.blogspot.com/
2
祝
『プログラミング Gauche』
出版
3
ほんとのこと言うと、僕が編集したかった
4
ほんとのこと言うと、僕が編集したかった
Scheme 本ならオーム社だろ、常考
5
ほんとのこと言うと、僕が編集したかった
Scheme 本ならオーム社だろ、常考
2 月発行予定が結局 Gauche.Night 当日かよ!
6
ほんとのこと言うと、僕が編集したかった
Scheme 本ならオーム社だろ、常考
2 月発行予定が結局 Gauche.Night 当日かよ!
実はオライリージャパンで
発行がちょっとくやしい
7
「Gauche の本」の話ができないなら、
「Gauche で本」の話をするしかない。
8
「理論的にクールな話だけではなくて、実稼働に
応用して得られた具体的な数値や経験なんかも
知りたい」
— Shiro さんの Wiliki より
9
「理論的にクールな話だけではなくて、実稼働に
応用して得られた具体的な数値や経験なんかも
知りたい」
— Shiro さんの Wiliki より
オーム社内の編集制作で Gauche + SXML が実稼働中。
(SXML にして数 M バイト...
僕らの仕事は原稿のハック
11
原稿ハッキング環境
Gauche
12
なぜ Gauche?(Perl や Ruby でなく)
13
なぜ Gauche?(Perl や Ruby でなく)
答え:マルチバイトな関数型言語
14
なぜ Gauche?(Perl や Ruby でなく)
答え:マルチバイトな関数型言語
↑
日本語の原稿だし
15
なぜ Gauche?(Perl や Ruby でなく)
答え:マルチバイトな関数型言語
↑
日本語の原稿だし
↑
愚問
16
Gauche といえば正規表現
(regexp-replace-all* manuscript
#/(行) な ([いうえわ])/ "12")
17
Gauche といえば正規表現
(regexp-replace-all* manuscript
#/(行) な ([いうえわ])/ "12")
送り仮名は本則で!
18
充実したライブラリとリファレンス
19
Gauche の周りの人たちもすごい。
たとえば c-wrapper
素人にここまでのパワーを許している関数型言
語のコミュニティがあるか?
20
hurigana.scm
漢字をひらがな化する自作ユーティリティ。
LaTeX で索引を作るときの最大の手間である読み仮名の
入力を省力化。
(c-load-library "/usr/lib/libkakasi.so.2.1.0")
(c-i...
なんといっても関数型言語
原稿のハックをサポートするツールがざくざく
作れる。
22
xml-trivial.scm
整形式じゃない XML っぽい原稿を処理したい。
(define (read-xml)
(define (in-tag c tag)
(cond ((eof-object? c)
(error "EOF whil...
xml-trivial.scm
整形式じゃない XML っぽい原稿を処理したい。
僕でも作れた、特定目的用の再帰下降パーザ。
(define (read-xml)
(define (in-tag c tag)
(cond ((eof-objec...
xml2tex.scm
XML っぽく構造化されているテキストをリバースエンジ
ニアリングして、各要素を適当な LaTeX のコマンドや環
境に変換するコンバータをお手軽に作りたい。
(define (make-p name)
(define-...
xml2tex.scm
XML っぽく構造化されているテキストをリバースエンジ
ニアリングして、各要素を適当な LaTeX のコマンドや環
境に変換するコンバータをお手軽に作りたい。
僕でもできた、メタプログラミング。
(define (mak...
xml2tex.scm
XML っぽく構造化されているテキストをリバースエンジ
ニアリングして、各要素を適当な LaTeX のコマンドや環
境に変換するコンバータをお手軽に作りたい。
僕でもできた、メタプログラミング。
このプレゼンも、下書きの...
xml2tex.scm
XML っぽく構造化されているテキストをリバースエンジ
ニアリングして、各要素を適当な LaTeX のコマンドや環
境に変換するコンバータをお手軽に作りたい。
僕でもできた、メタプログラミング。
このプレゼンも、下書きの...
xml2tex.scm のおかげで、XML っぽい原稿から
make いっぱつで印刷用の最終 PDF データを生
成するコンバータが、毎回少しの苦労で作れる。
原稿そのものは Subversion を使って筆者と編
集者とで共有しているので、結...
デモ
本や出版の話は kshikano@ohmsha.co.jp へ。
それ以外の話は k16.shikano@gmail.com へ。
30
Upcoming SlideShare
Loading in …5
×

Gaucheで本を作る

859 views

Published on

http://www.slideshare.net/guest7a66b8/gauche の再掲

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Gaucheで本を作る

  1. 1. Gauche で本を作る 株式会社オーム社開発部 鹿野 桂一郎 kshikano@ohmsha.co.jp 1
  2. 2. Gauche で本を作る 鹿野 桂一郎 k16.shikano@gmail.com http://k16journal.blogspot.com/ 2
  3. 3. 祝 『プログラミング Gauche』 出版 3
  4. 4. ほんとのこと言うと、僕が編集したかった 4
  5. 5. ほんとのこと言うと、僕が編集したかった Scheme 本ならオーム社だろ、常考 5
  6. 6. ほんとのこと言うと、僕が編集したかった Scheme 本ならオーム社だろ、常考 2 月発行予定が結局 Gauche.Night 当日かよ! 6
  7. 7. ほんとのこと言うと、僕が編集したかった Scheme 本ならオーム社だろ、常考 2 月発行予定が結局 Gauche.Night 当日かよ! 実はオライリージャパンで 発行がちょっとくやしい 7
  8. 8. 「Gauche の本」の話ができないなら、 「Gauche で本」の話をするしかない。 8
  9. 9. 「理論的にクールな話だけではなくて、実稼働に 応用して得られた具体的な数値や経験なんかも 知りたい」 — Shiro さんの Wiliki より 9
  10. 10. 「理論的にクールな話だけではなくて、実稼働に 応用して得られた具体的な数値や経験なんかも 知りたい」 — Shiro さんの Wiliki より オーム社内の編集制作で Gauche + SXML が実稼働中。 (SXML にして数 M バイト程度の原稿を Gauche でい じって LaTeX にコンバート。) 10
  11. 11. 僕らの仕事は原稿のハック 11
  12. 12. 原稿ハッキング環境 Gauche 12
  13. 13. なぜ Gauche?(Perl や Ruby でなく) 13
  14. 14. なぜ Gauche?(Perl や Ruby でなく) 答え:マルチバイトな関数型言語 14
  15. 15. なぜ Gauche?(Perl や Ruby でなく) 答え:マルチバイトな関数型言語 ↑ 日本語の原稿だし 15
  16. 16. なぜ Gauche?(Perl や Ruby でなく) 答え:マルチバイトな関数型言語 ↑ 日本語の原稿だし ↑ 愚問 16
  17. 17. Gauche といえば正規表現 (regexp-replace-all* manuscript #/(行) な ([いうえわ])/ "12") 17
  18. 18. Gauche といえば正規表現 (regexp-replace-all* manuscript #/(行) な ([いうえわ])/ "12") 送り仮名は本則で! 18
  19. 19. 充実したライブラリとリファレンス 19
  20. 20. Gauche の周りの人たちもすごい。 たとえば c-wrapper 素人にここまでのパワーを許している関数型言 語のコミュニティがあるか? 20
  21. 21. hurigana.scm 漢字をひらがな化する自作ユーティリティ。 LaTeX で索引を作るときの最大の手間である読み仮名の 入力を省力化。 (c-load-library "/usr/lib/libkakasi.so.2.1.0") (c-include "/usr/include/libkakasi.h") (define (kanji->hira str) (let ((base-ces "utf-8") (kakasi-ces "iso2022jp")) (kakasi_close_kanwadict) (kakasi_getopt_argv 2 ’("kakasi" "-JH")) ... 21
  22. 22. なんといっても関数型言語 原稿のハックをサポートするツールがざくざく 作れる。 22
  23. 23. xml-trivial.scm 整形式じゃない XML っぽい原稿を処理したい。 (define (read-xml) (define (in-tag c tag) (cond ((eof-object? c) (error "EOF while tag" tag)) ((char=? # c) (in-escaped (read-char) (string+char tag c))) ... 23
  24. 24. xml-trivial.scm 整形式じゃない XML っぽい原稿を処理したい。 僕でも作れた、特定目的用の再帰下降パーザ。 (define (read-xml) (define (in-tag c tag) (cond ((eof-object? c) (error "EOF while tag" tag)) ((char=? # c) (in-escaped (read-char) (string+char tag c))) ... 24
  25. 25. xml2tex.scm XML っぽく構造化されているテキストをリバースエンジ ニアリングして、各要素を適当な LaTeX のコマンドや環 境に変換するコンバータをお手軽に作りたい。 (define (make-p name) (define-rule (lambda () (receive (vskip hskip) (values (ifstr ($@ ’vskip) (cut list "vskip" <> "n")) ... (define-simple-rules make-p p0 p1 p2 p3) 25
  26. 26. xml2tex.scm XML っぽく構造化されているテキストをリバースエンジ ニアリングして、各要素を適当な LaTeX のコマンドや環 境に変換するコンバータをお手軽に作りたい。 僕でもできた、メタプログラミング。 (define (make-p name) (define-rule (lambda () (receive (vskip hskip) (values (ifstr ($@ ’vskip) (cut list "vskip" <> "n")) ... (define-simple-rules make-p p0 p1 p2 p3) 26
  27. 27. xml2tex.scm XML っぽく構造化されているテキストをリバースエンジ ニアリングして、各要素を適当な LaTeX のコマンドや環 境に変換するコンバータをお手軽に作りたい。 僕でもできた、メタプログラミング。 このプレゼンも、下書きのテキストに適当な XML タグをつけてから、xml2tex.scm で LaTeX への変換ルールを定義して作成しました。 27
  28. 28. xml2tex.scm XML っぽく構造化されているテキストをリバースエンジ ニアリングして、各要素を適当な LaTeX のコマンドや環 境に変換するコンバータをお手軽に作りたい。 僕でもできた、メタプログラミング。 このプレゼンも、下書きのテキストに適当な XML タグをつけてから、xml2tex.scm で LaTeX への変換ルールを定義して作成しました。 →時間が残ってたらデモします。 28
  29. 29. xml2tex.scm のおかげで、XML っぽい原稿から make いっぱつで印刷用の最終 PDF データを生 成するコンバータが、毎回少しの苦労で作れる。 原稿そのものは Subversion を使って筆者と編 集者とで共有しているので、結果として赤書き した校正紙ゲラのやり取りはゼロ。 29
  30. 30. デモ 本や出版の話は kshikano@ohmsha.co.jp へ。 それ以外の話は k16.shikano@gmail.com へ。 30

×