SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
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 バイト程度の原稿を Gauche でい
じって LaTeX にコンバート。)
10
僕らの仕事は原稿のハック
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-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
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
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
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
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
xml2tex.scm
XML っぽく構造化されているテキストをリバースエンジ
ニアリングして、各要素を適当な LaTeX のコマンドや環
境に変換するコンバータをお手軽に作りたい。
僕でもできた、メタプログラミング。
このプレゼンも、下書きのテキストに適当な
XML タグをつけてから、xml2tex.scm で LaTeX
への変換ルールを定義して作成しました。
27
xml2tex.scm
XML っぽく構造化されているテキストをリバースエンジ
ニアリングして、各要素を適当な LaTeX のコマンドや環
境に変換するコンバータをお手軽に作りたい。
僕でもできた、メタプログラミング。
このプレゼンも、下書きのテキストに適当な
XML タグをつけてから、xml2tex.scm で LaTeX
への変換ルールを定義して作成しました。
→時間が残ってたらデモします。
28
xml2tex.scm のおかげで、XML っぽい原稿から
make いっぱつで印刷用の最終 PDF データを生
成するコンバータが、毎回少しの苦労で作れる。
原稿そのものは Subversion を使って筆者と編
集者とで共有しているので、結果として赤書き
した校正紙ゲラのやり取りはゼロ。
29
デモ
本や出版の話は kshikano@ohmsha.co.jp へ。
それ以外の話は k16.shikano@gmail.com へ。
30

Mais conteúdo relacionado

Mais de Keiichiro Shikano

Sphinxで売り物の書籍を作ってみた
Sphinxで売り物の書籍を作ってみたSphinxで売り物の書籍を作ってみた
Sphinxで売り物の書籍を作ってみたKeiichiro Shikano
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版Keiichiro Shikano
 
TeX原稿からEPUBを作りたい
TeX原稿からEPUBを作りたいTeX原稿からEPUBを作りたい
TeX原稿からEPUBを作りたいKeiichiro Shikano
 
イテレーティブでインクリメンタルな技術書の作り方
イテレーティブでインクリメンタルな技術書の作り方イテレーティブでインクリメンタルな技術書の作り方
イテレーティブでインクリメンタルな技術書の作り方Keiichiro Shikano
 
Index makes your book perfect
Index makes your book perfectIndex makes your book perfect
Index makes your book perfectKeiichiro Shikano
 
多値で簡単パーサーコンビネーター
多値で簡単パーサーコンビネーター多値で簡単パーサーコンビネーター
多値で簡単パーサーコンビネーターKeiichiro Shikano
 
オーム社開発部がTeXを使う3つのおもな理由
オーム社開発部がTeXを使う3つのおもな理由オーム社開発部がTeXを使う3つのおもな理由
オーム社開発部がTeXを使う3つのおもな理由Keiichiro Shikano
 

Mais de Keiichiro Shikano (13)

Sphinxで売り物の書籍を作ってみた
Sphinxで売り物の書籍を作ってみたSphinxで売り物の書籍を作ってみた
Sphinxで売り物の書籍を作ってみた
 
脚注をめぐる冒険
脚注をめぐる冒険脚注をめぐる冒険
脚注をめぐる冒険
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版
 
TeX原稿からEPUBを作りたい
TeX原稿からEPUBを作りたいTeX原稿からEPUBを作りたい
TeX原稿からEPUBを作りたい
 
イテレーティブでインクリメンタルな技術書の作り方
イテレーティブでインクリメンタルな技術書の作り方イテレーティブでインクリメンタルな技術書の作り方
イテレーティブでインクリメンタルな技術書の作り方
 
TUG 2014 参加体験記
TUG 2014 参加体験記TUG 2014 参加体験記
TUG 2014 参加体験記
 
xml2tex at TUG 2014
xml2tex at TUG 2014xml2tex at TUG 2014
xml2tex at TUG 2014
 
Csspage1 2014-06-22
Csspage1 2014-06-22Csspage1 2014-06-22
Csspage1 2014-06-22
 
Index makes your book perfect
Index makes your book perfectIndex makes your book perfect
Index makes your book perfect
 
Our docsys-pyfes-2012-11
Our docsys-pyfes-2012-11Our docsys-pyfes-2012-11
Our docsys-pyfes-2012-11
 
Texuser 2012-lt
Texuser 2012-lt Texuser 2012-lt
Texuser 2012-lt
 
多値で簡単パーサーコンビネーター
多値で簡単パーサーコンビネーター多値で簡単パーサーコンビネーター
多値で簡単パーサーコンビネーター
 
オーム社開発部がTeXを使う3つのおもな理由
オーム社開発部がTeXを使う3つのおもな理由オーム社開発部がTeXを使う3つのおもな理由
オーム社開発部がTeXを使う3つのおもな理由
 

Último

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 

Último (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 

Gaucheで本を作る