「tidyな分析環境つくるのがたいぎぃ」からDocker使う

これは[RStudio Advent Calendar 2017](https://qiita.com/advent-calendar/2017/rstudio)と[tidyポエム Advent Calendar 2017](https://adventar.org/calendars/2188)の22日目の記事です。クロスポストご容赦ください。

## tidyたいぎぃ

「たいぎぃ」とは広島弁で「めんどくさい」とかそういうニュアンスの方言です。老若男女問わずに「あーもうこれやるんたいぎぃわー」といった感じで使ってます。なお私は広島県民になって20年以上経過しましたが，未だに無意識で「たいぎぃ」という言葉を発するまでには至ってません。「じゃけぇ」は使うのに。

閑話休題。Rで分析環境を整えようとするなら，少なくとも以下のような手順が必要になるかと思います:

1. マシンにRをインストール
    2. R本体をインストール
    3. (必要であれば)Rtoolsといったコンパイラをインストール
2. マシンにRStudioをインストール
3. Rを起動して必要なパッケージをインストール
    4. パッケージをCRANなどから持ってくる
    5. (必要に応じて)R外のライブラリなども入れる

結構面倒ですね。そしてtidyverseはパッケージが多く，いくら`install.packages("tidyverse")`で入れられるといえ，結構時間かかります。「たいぎぃ」です。

さらに，これがたったひとつのマシンならいざ知らず，複数台を所有(or管理)している，さらにOSもWin, Mac, Ubuntuなどバラバラだったらどうでしょう。これはもう「くそたいぎぃ」ですね。

というわけで，Dockerを利用します。

## Dockerでtidyな分析環境を構築

### DockerでR環境?

Dockerを利用してR+RStudioの分析環境を構築する方法や手順については，すでに私自身や他の方の記事がありますので，それらを紹介するに留めます。ぜひともRユーザーの方は一読をおすすめします:

- [Reproducebility 100倍 Dockerマン](https://www.slideshare.net/teramonagi/reproducebility-100-docker)
    - teramonagi氏によるスライド。**tokyor/rstudio**イメージの紹介
- [Dockerを利用してrstanがすぐ使えるRStudio Serverの構築2017年版](https://qiita.com/kazutan/items/87b3117579271b06898a)
    - rstanユーザー向けに準備したイメージの話。[これの一つ前の話](https://qiita.com/kazutan/items/f1447cbabed8d4dd50b8)の方が解説おおいかも
- [Rから離れたくない人向けのDocker環境の操作: RStudio Serverを分析・開発の基盤にするために - まだ厨二病](http://uribo.hatenablog.com/entry/2017/12/21/212941)
    - うりさん( @uri )の記事で，RからDockerを操作する方法や各種リンクなど情報がたくさん

### `rocker/tidyverse` イメージ

RのDockerイメージとして最も有名なのが[Rocker Project](https://hub.docker.com/u/rocker/)です。リンク先を見てもらえればわかるように，様々なイメージが公開され，日々更新されています。

その中でも，`rocker/tidyverse`というイメージに注目してください。これは**tidyverseな環境を一気に持ってきてくれるイメージ**で，今回のコンセプトにバッチリです。なお，このイメージに関する説明は[DockerHubにあるこちらの説明](https://hub.docker.com/r/rocker/tidyverse/)を参照してください。

さて，「じゃあもう`rocker/tidyverse`イメージを利用してコンテナ作れば解決じゃね?」と言いたいところですがそうはいきません。このイメージはあくまでグローバルなもので，日本(日本語)向けではありません。タイムゾーンや日本語化，そして日本語フォントなどの設定をしなければいけません。これは「たいぎぃ」ですね。

### `tokyor/rstudio`イメージがある

**2017/12/25 13:49追記: Dockerイメージの管理をtokyorから切り離し，別途rocker-jpというのを立てることにしました。次節へ飛ばしてください。**

これらを現在クリアしているのが`tokyor/rstudio`イメージです。実はこのイメージは先日まで古いバージョンのままでしたが，先日私も[Source Repogitory側](https://github.com/tokyor/rstudio)の方へcontributorとして入りましたので，いくつか修正を行いました。

1. `FROM`を`rocker/hadleyverse`から`rocker/tidyverse`へ変更
2. 日本語用フォントとしてIPA系フォントを導入[^1]
3. `rocker/tidyverse`をリンクさせることで，リンク先のリポジトリがupdateされた時に自動的にリビルドするように

[^1]: 2017/12/21 22:30時点では，IPAMinchoとIPAGothicが入っていますが，近々IPAexMinchoとIPAexGothicに切り替える予定です。

1により，Rの最新版，RStudio Serverの最新安定版へ移行し，tidyverseなパッケージ群も新しい物が導入されるようになります。また，また日本語も新たに追加しましたので，すんなりとggplot2などで日本語をplotしたりできます。さらに3にあるように，更新も自動的になりました。

つまり，**`tokyor/rstudio`イメージでコンテナ作ればOK**…なのですが，メンバーで協議した結果，新たに組織を作って運用していくことにしました。

### そしてこれからは`rockerjp/tidyverse`へ

前節のとおりなのですが，tokyorでDockerまわりを続けるのもなぁということで切り離すことになりました。**その名もrocker-jp**です:

- https://github.com/rocker-jp (GitHubサイト)
- https://hub.docker.com/u/rockerjp/ (DockerHubサイト)

現在`tokyor/rstudio`で準備していたDockerイメージをそのまま`rockerjp/tidyverse`として移行し，また`rocker/verse`を日本語化したものを`rockerjp/verse`として準備しています。

今後はこちらで運用していくこととなりますので，よかったら今後もチェックしてもらえればと思います。

## 今後のお話

せっかくcontributorに入れてもらえたので，もう少しいろんなイメージを準備できたらなと思ってます。今のところディスカッションしているのはrockerの中のイメージをベースに日本語環境を整えたものを提供する，などです。いつになるかはわかりませんが，ぼちぼちとやっていきたいと思ってます。

「まだ自分にはDockerなんてよくわからないし難しそう…」と思わずに，ぜひ一度試してみてください。そして「たいぎぃ」から開放されましょう。

**Enjoy!**