はじめに
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のユーザー名/対象リポジトリ名
おわりに
一連の作業をまとめると次のような感じ。
-
checkForGitbook()
# Gitbookがインストールされているかを確認 -
newGitbook()
# 新規gitbook用のディレクトリを用意 -
SUMMARY.md
を編集 -
initGitbook()
#.Rmd
ファイルを自動生成 - 各
.Rmd
ファイルを編集 -
buildRmd()
#.Rmd
->.md
buildGitbook()
openGitbook()
-
publishGitbook()
# gh-pagesブランチに変更点をプッシュ
というわけで、つまづくところもあったがなんとかして.Rmd
で本を書く用意ができた。めでたい。備えよう。
目標達成
そもそもこれで何がしたかったのかというと、パッケージの利用方法について、これまでEvernoteにちまちまメモをとっていたのだけど、Evernote上ではR実行できないし、数が増えてきてつらくなってきた(検索は便利だけど)。
あくまでも個人のメモ段階であるが、Rパッケージの使い方メモと、パッケージ開発のための覚え書きリポジトリを立てた。個人のチラシの裏段階だが、将来誰かのお役に立てれば幸いである。