Rで本を書く📚

  • 31
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

Gitbookというものがある。Gitbookを使えばマークダウン形式で書かれたファイルを本の形式で表示したり電子書籍として公開・配布することができる。使い道はいろいろあると思うのだけど、自分はRユーザーなのでRのことを書きたい。その際、図の貼り付けは自動的にできるようにしたいし、出力結果の表示はコピペしたくない。要するに、.mdでなくて.Rmdで、Rのコードを実行したりしながらあれこれ書きたい。...そんな願いはRgitbookを使えば叶えることができる。

セットアップ

RgitbookはCRANに登録されていない野良パッケージ。GitHubにリポジトリがあるのでそちらからダウンロードする。

library(devtools)
install_github("jbryer/Rgitbook")
library(Rgitbook)
checkForGitbook()
# Error in checkForGitbook() : 
#   Cannot find node.js. You can install it from http://nodejs.org/download/

どうもRgitbookのエラー修正・更新がとまっているみたいで、蓮くんをはじめとした有志が解決案を提案している ref) https://github.com/jbryer/Rgitbook/issues/23。というわけでそちらのリポジトリから再度ダウンロード。

# install_github("renkun-ken/Rgitbook")
install_github("liyi-1989/Rgitbook")
checkForGitbook()
# checking npm
# checking gitbook
# gitbook is installed and available

新規GitBookの作成

newGitbook("~/rpkg_showcase/") # GitBookを作るディレクトリ、フォルダ名を指定する

指定したフォルダ内に4つのファイルができた。

initGitbook()

initGitbook()SUMMARY.mdに記述されているマークダウンファイルを生成する関数。SUMMARY.mdに従ってファイルを自動作成してくれるので大変便利だ。その際に作成されるファイルは、こちらのようになっている。chunkオプションや俺々風な変更を加えたい場合には、フォークしてから該当ファイルを編集し、再度パッケージとしてビルド・インストールすると良い。自分は次のようにしている

ビルド

buildRmd().Rmdファイルを実行し、.mdとして出力してくれる関数なのでとても重要。ある程度作業を進めたら定期的にbuildRmd()を実行しよう。

buildRmd()

この関数を実行すると、.Rmdファイルから同名の.mdファイルが作成される。

しかしこれで終わりではない。次にbuildGitbook()関数でGitbook全体のビルドを行う必要がある。ビルドをすると_bookというフォルダができあがる。Gitbookの実態は、ここにあるHTMLをもとに表示しているので、この作業が欠かせない。ビルドが成功したらできたものを見てみる。openGitbook()でビルドされたgitbookの内容をブラウザで確認することができる。

見た目はこんな感じになる -> http://suryu.me/rpkg_showcase/utility/Rgitbook.html

GitHubにリポジトリをつくる

ここまできたら、Gitbookの公開先としてGitHubにリポジトリを作成する。Rgitbook()にはpublishGitbook()という便利な関数があり、_bookフォルダのファイルをgh-pagesブランチにプッシュしてくれる。

publishGitbook("uribo/rpkg_showcase") # GitHubのユーザー名/対象リポジトリ名

おわりに

一連の作業をまとめると次のような感じ。

  1. checkForGitbook() # Gitbookがインストールされているかを確認
  2. newGitbook() # 新規gitbook用のディレクトリを用意
  3. SUMMARY.mdを編集
  4. initGitbook() # .Rmdファイルを自動生成
  5. .Rmdファイルを編集
  6. buildRmd() # .Rmd -> .md
  7. buildGitbook()
  8. openGitbook()
  9. publishGitbook() # gh-pagesブランチに変更点をプッシュ

というわけで、つまづくところもあったがなんとかして.Rmdで本を書く用意ができた。めでたい。備えよう

目標達成

そもそもこれで何がしたかったのかというと、パッケージの利用方法について、これまでEvernoteにちまちまメモをとっていたのだけど、Evernote上ではR実行できないし、数が増えてきてつらくなってきた(検索は便利だけど)。

あくまでも個人のメモ段階であるが、Rパッケージの使い方メモと、パッケージ開発のための覚え書きリポジトリを立てた。個人のチラシの裏段階だが、将来誰かのお役に立てれば幸いである。