Edited at

The Rust Programming Language 日本語訳をe-bookにしてみる

More than 3 years have passed since last update.


宣伝

つい先日(2016/07/07)、Rust 1.10がリリースされました。

panic!の挙動をunwindからabortにできるコンパイルオプションが加わったり、他言語から呼び出せるdylibを作成できるようになったりしているようです。


Rustの文献

現時点でRustを勉強しようとするなら、やはり一番の情報源は公式ドキュメントです。というか他に使えそうな情報源がないです。オライリー(英語)のRust本が出るのも今年の12月のようです。

公式ドキュメントについては日本語訳なさっている方がいらっしゃり、頭が上がりません。


電子書籍版

ところで、英語版のドキュメントには電子書籍版があり、スマホなりタブレットなり電子書籍端末なりにぶちこんで気軽に見る事ができるようになっています。

当然の事ながら、日本語訳版には電子書籍版はありません。

ところでこの電子書籍版、なんとGithubでソースというか作成環境が公開されています。

そして、電子書籍版のソースファイルは、公式ドキュメントの生成に使っているMarkdownソースそのものでした。

日本語訳版もソースはMarkdownで管理しているので、ひょっとしてこれは単純な差し替えでPDFやEPUBが生成できるのではないか?と考えて、やってみたのが以下になります。


環境構築

大前提として、Mac OS X El Capitanで作業していきます。

電子書籍ソースのREADMEに書いてある、必要なモノをがんがんぶちこんでいきます。


  • pandoc


    • $ brew install pandoc



  • Rust (and cargo)


    • $ brew install rust



  • DejaVu Sans Mono フォント

  • IPAexフォント


    • フォントはシステムにインストールしておきます



  • XeLaTeXと依存パッケージ


    • まずBasicTeXをインストール・アップデート


      • $ brew cask install basictex

      • $ export PATH=$PATH:/Library/TeX/texbin

      • $ sudo tlmgr update --self --all



    • 依存パッケージをインストール


      • $ sudo tlmgr install framed hyphenat quotchap collection-fontsrecommended






作業

まず、電子書籍ソースと日本語訳ソースを両方clone

$ cd /path/to/working/dir

$ git clone https://github.com/killercup/trpl-ebook.git
$ git clone https://github.com/rust-lang-ja/the-rust-programming-language-ja.git

試しに英語版の電子書籍を作成してみます。

$ cd trpl-ebook

$ cargo run --release

環境構築が成功していれば、dist/に成果物ができているはずです。

続いて日本語版を作るために、いくつか手を加えます。まずtrpl_meta.ymlにちょっと手を加えて


trpl_meta.yml.diff

 author: "The Rust Team"

date: {release_date}
description: "This book will teach you about the Rust Programming Language. Rust is a modern systems programming language focusing on safety and speed. It accomplishes these goals by being memory safe without using garbage collection."
-language: en
+language: ja
documentclass: book
links-as-notes: true
verbatim-in-note: true

ソースをまるっと日本語版のものに差し替えます。

$ mv trpl _trpl

$ ln -s ../the-rust-programming-language-ja/1.9/ja/book ./trpl

この状態で、先程と同様に作成すると、

$ rm dist/*

$ cargo run --release

多少の警告は出ますが、dist/に日本語の電子書籍ファイルができているはずです。


出力サンプル

目次

rustbook-ja-toc.png

コード部分、一部リファレンスの解決に失敗

rustbook-ja-tuple.png

PDF本体を置けばよかったんですが、1メガちょいある上にまともなアップロード先がないのでごめんなさい。


課題


  • スタイルファイルが欧文スタイルの流用なので、日本語にした時のページレイアウトに多少違和感がある(余白など)



    • 真に解決するなら、同時に出力されたtexソースを編集して、適切なLaTeXコマンドに食わせる必要がある。そこまでTeXエンジンに精通している訳ではないので断念。TeXはアレ

      BXjsbookを使ってどうにかしました



  • リファレンスの解決に失敗している部分がある(警告はこのせい)


    • 解決しようと思ったが面倒だしとりあえず困らないので断念




追記

上記方法による成果物を配布している方がいらっしゃったので、リンクを置いておきます https://github.com/y-yu/trpl-ja-pdf