海外R界のはてなブログことRbindにblogdownでブログをつくる

「R界のWordpress.com/Medium」的なものを目指すRbindというプロジェクトがあります。knitrの開発者として有名なYihui Xieさんがプロジェクトを引っ張っています。解説はkazutanさんの記事が参考になります。

RbindにはすでにYihuiRomain François(Rcppがめっちゃできる人)、Rob J Hyndman(forecastパッケージの人)などなど著名な方々が名を連ねています。乗るしかない、このビッグウェーブに!

ということで英語ブログを作ってみようと思います(Rbind自体は別に言語に縛りはないので日本語ブログでも大丈夫なはずです)。

ローカルでblogdownのウェブサイトをつくる

まずはblogdownでウェブサイトのひな形をつくります。blogdownを使ったウェブサイトの作成方法は以下のページが参考になります。

blogdownとHugoをインストー

まずは必要なものをインストールしましょう。現時点ではまだblogdownパッケージはCRANに上がっていないのでdevtools::install_github()でインストールします。

devtools::install_github("rstudio/blogdown")

また、blogdownはHugoというウェブサイト生成ツールを使っています。これもインストールしておきましょう(何らかの手段ですでにインストールしていれば不要です)。

blogdown::install_hugo()

blogdown::new_site()

まずはblogdown::new_site()を使ってウェブサイトをつくります。これは空のディレクトリに対してしか使えないので、RStudioのプロジェクトをつくるより前にやりましょう。

blogdown::new_site("新しいディレクトリ名", theme = "beli3ver/hemingway2")

これでウェブサイトのひな形ができます。theme引数に指定しているのはウェブサイトのテーマで、Hugo Themesから選ぶことができます(devtools::install_github()と同じくGitHubのレポジトリをユーザ名/レポジトリ名で指定します)。今回はHemingway2というやつにしてみました。

テーマが気に入らなければblogdown::install_theme()であとから別のテーマに変えることもできます。

RStudioのプロジェクトをつくる

RStudioを使っている場合はプロジェクトをつくりましょう。New Project > Existing Directoryから先ほどつくったディレクトリを選びます。

f:id:yutannihilation:20170719000029p:plain

このとき、RStudioが気を利かせてビルドの設定をWebsiteにしてしまうんですが、これで「Build」ボタンを押したときに実行されるのはrmarkdown::render_site()なので求めているものとはちょっと違います。別に害はないといえばないですが、気になる人はProject Options > Build Toolsから変更しておきましょう。

f:id:yutannihilation:20170719000043p:plain

config.tomlをいじる

config.tomlというファイルにいろいろ設定項目があります。たぶんテーマによっていろいろ違うと思いますが、適当に設定します。とりあえず以下の設定は入れておいた方がよさそうです。

ignoreFiles = ["\\.Rmd$", "_files$", "_cache$"]

コメント欄をつけるにはDisqusでアカウントを取りましょう。コメント欄がなくてもいい場合は無視しても大丈夫です。

disqusShortname = "yutani"

blogdown::serve_site()でプレビュー

設定がだいたい終わったらblogdown::serve_site()を実行しましょう。すると、Viewerペインにブログのプレビューが表示されます。

f:id:yutannihilation:20170719000123p:plain:w450

ここで大幅に表示が崩れている場合は何かおかしいので設定などを見直しましょう(テンプレートがおかしい場合もあります。このHemingway2はそのパターンで、ローカルではうまく表示されないやつでした…)。

うまくいかない場合は、r-wakalangの#rmarkdownチャンネルあたりで聞いてみましょう。

blogdown::build_site()で本番用サイトの生成

build_site()は、serve_site()と違って本番用のサイトを生成する関数です。blogdown本のC.2 Building a website for local previewによると、具体的には以下の3つの点で異なります。

  • URLを絶対URLで生成する
  • 下書きや未来の日付の投稿は生成しない
  • 更新日時に関わらず、すべてのRmdファイルをknitしなおす。

3つ目からわかるように、これはけっこう時間がかかります。実行が大変なチャンクはcache=TRUEにするなどしておきましょう。

rbindにレポジトリをつくる

ここからは2通りの進め方があります。

  1. 自分で勝手にレポジトリを作っていろいろ設定した後、Rbindにtransferする
  2. Rbindに空のレポジトリを作ってもらってそれをいじっていく

私は前者のやり方でやったんですけど、transferしたあともう一度管理者権限を付けてもらう必要があってちょっとめんどくさかったです。

ということで、後者の、まずRbindに空のレポジトリをつくる方がオススメです。↑と同じくrbind/supportのIssuesでお願いすれば対応してもらえます。

GitHubにpush

ともかくもレポジトリを作れたら、先ほどつくったウェブサイトをそこにpushします。

# 必要あれば
git init

# .gitignoreの設定を確かめてから
git add .
git commit -m "initial commit"

# 空レポジトリをoriginに指定してpush
git remote add origin https://github.com/ユーザ名/レポジトリ名
git push origin -u master

Netlifyの設定

RbindはNetlifyという高機能ウェブホスティングサービスを推しています。これは、GitHub Pagesの更に高機能版、みたいに思っておけばいいでしょう。

サインアップしたらウェブサイトを追加し、こんな感じで設定します(詳しくはblogdown本の3.1 Netlifyを参照)。

f:id:yutannihilation:20170719000230p:plain:w450

独自ドメインの設定

無事にデプロイできたら次は独自ドメインの設定です。rbind.ioのサブドメインを使うならrbind/supportのIssuesでお願いします。こんな感じです。

f:id:yutannihilation:20170719000256p:plain:w450

同時に、Netlifyの管理画面から独自ドメインを設定できるので、そこをいじります。

f:id:yutannihilation:20170719000317p:plain:w450

もちろん、rbind.ioじゃなくて自分で管理しているドメインを使うのでもOKです。

番外編:トラブルと戦う

ここで、なんかよくわからないんですが、rbindの独自ドメインを入れると「must be unique」というエラーが出るというトラブルが多発してるみたいです。。

f:id:yutannihilation:20170719000336p:plain:w450

こうなったらサポートに問い合わせましょう。私は拙い英語で「なんかmust be uniqueとか言われるんですけど??」と言ったらすぐ対応してもらえました。

完成

ということで完成です。まだ中身なにもないんですけど。

https://yutani.rbind.io/

がんばって英語練習していくぞ!