Help us understand the problem. What is going on with this article?

Rで本を書く📚

More than 5 years have passed since last update.

はじめに

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

hoxom
Machine Learning and Data Analysis Company for Your Smiles :)
http://hoxo-m.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした