海外R界のはてなブログことRbindにblogdownでブログをつくる
「R界のWordpress.com/Medium」的なものを目指すRbindというプロジェクトがあります。knitrの開発者として有名なYihui Xieさんがプロジェクトを引っ張っています。解説はkazutanさんの記事が参考になります。
RbindにはすでにYihui、Romain 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から先ほどつくったディレクトリを選びます。
このとき、RStudioが気を利かせてビルドの設定をWebsite
にしてしまうんですが、これで「Build」ボタンを押したときに実行されるのはrmarkdown::render_site()
なので求めているものとはちょっと違います。別に害はないといえばないですが、気になる人はProject Options > Build Toolsから変更しておきましょう。
config.toml
をいじる
config.toml
というファイルにいろいろ設定項目があります。たぶんテーマによっていろいろ違うと思いますが、適当に設定します。とりあえず以下の設定は入れておいた方がよさそうです。
ignoreFiles = ["\\.Rmd$", "_files$", "_cache$"]
コメント欄をつけるにはDisqusでアカウントを取りましょう。コメント欄がなくてもいい場合は無視しても大丈夫です。
disqusShortname = "yutani"
blogdown::serve_site()
でプレビュー
設定がだいたい終わったらblogdown::serve_site()
を実行しましょう。すると、Viewerペインにブログのプレビューが表示されます。
ここで大幅に表示が崩れている場合は何かおかしいので設定などを見直しましょう(テンプレートがおかしい場合もあります。この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通りの進め方があります。
- 自分で勝手にレポジトリを作っていろいろ設定した後、Rbindにtransferする
- 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を参照)。
独自ドメインの設定
無事にデプロイできたら次は独自ドメインの設定です。rbind.ioのサブドメインを使うならrbind/supportのIssuesでお願いします。こんな感じです。
同時に、Netlifyの管理画面から独自ドメインを設定できるので、そこをいじります。
もちろん、rbind.ioじゃなくて自分で管理しているドメインを使うのでもOKです。
番外編:トラブルと戦う
ここで、なんかよくわからないんですが、rbindの独自ドメインを入れると「must be unique」というエラーが出るというトラブルが多発してるみたいです。。
こうなったらサポートに問い合わせましょう。私は拙い英語で「なんかmust be uniqueとか言われるんですけど??」と言ったらすぐ対応してもらえました。
完成
ということで完成です。まだ中身なにもないんですけど。
がんばって英語練習していくぞ!