6/24にHijiyama.R #6を主催し、無事終えることができました。会場までお越しいただいた方々、およびUstで見ていただいたりTwitterなどで拡散していただいた方々、ありがとうございました。

今回は調整失敗などあり,その結果9件の発表のうち7件が私がやるという事態になりました。なお、私がプレゼンに使用した資料はこちらにおいています。

こんな残念な状況だったのですが、参加してくれたみなさんや興味を持ってくださったみなさんには本当に感謝しております。ありがとうございました。自分が担当した発表について解説したほうがいいかなと思い,今回ここにメモを書こうと思いました。

初心者セッション

データ操作

内容はKazutan.Rのここの内容を説明しました。ただこの内容はdplyr0.7に対応させてなくて、*_eachを外してなかったんです…申し訳ありません。出来る限り早く修正します。

発表の時には触れていたのですが、初心者セッションで一番大事なのはここだと思ってます。R初心者がほぼ間違いなく躓くのはここですし、逆にここを乗り切ればあとは分析用諸関数に流しこめばいいだけです。結果時間オーバーしましたが、むしろもっと説明したかったです。今後は工夫します。

なお、私の中ではselectにまずなれて、filterとmutateに馴染んだあとにjoin系を習得し、gather&spreadを使えるようになれば十分だと思います。

ggplotのオブジェクトから眺めてみる

今日のメインその1。Webでggplot2入門的なトピックは無数にありますが、どれも曖昧にしてたり触れてないような、そんなOne Pieceを埋めるために作成しました。資料はこちらです。最近世間では私を「Rmdおじさん」としか認識してもらえてないですが、純粋なggplot2ユーザーですし、ggplot2逆引き記事の本数では負けません、はい。

よく世間では「ggplot2は綺麗なグラフが描ける」とか述べていますが、それはずれていると思います。そもそもggplot2はRグラフィックスに整然としたgrammerを提供するもので、綺麗かどうかは描く個人次第です。本質はその構造だと考えるべきです。

でもそうであるならば、その文法を理解することが必要であり、事実その文法的な構造を理解するとggplot2による描画が格段に楽になります。そういう思いを込めて今回の資料を作成しました。わりと自信作なので見てみてください。

ただこれを「初心者セッション向け発表でいいのか」というツッコミはあると思いますし、自分も相当悩みました。でもこの内容は基礎ですし、理解するタイミングはできるだけ早いほうがいいと思い、今回は初心者セッションで組み込むことにしました。

通常発表

R Markdown + GitHubでモダンなWebサイト構築

以前,Fukuoka.Rで発表した,R MarkdownでWebサイト作成をベースに,そのサイトをGitHub Pagesでやってみようという内容です。スライドはこちら

Rmdによるサイト作成の具体的なところは省略し,GitHubで設置する際の注意事項と当日のデモンストレーションに重きを置きました。全段落で紹介した内容を参照してもらえれば大体つかめるのではないかと。

一点だけ補足すると,(アカウント名).github.ioというリポジトリに設置した場合,docs/を公開ディレクトリとして設定することはできませんでした。この場合,リポジトリのルートディレクトリにindex.htmlなど必要なファイルを置く必要があります。したがって,_site.ymloutput_dir: "."と設定してください。それ以外のリポジトリ名ならoutput_dir: "docs/"とするのが楽でしょう。

R Markdownがやっていること

以前Tokyo.R #61の通常セッションで話した内容です。スライドはこちらです。Tokyoでプレゼンした時は配信されておらず,今回は配信していたということもあって組み込んだのですが,時間が押してしまって3分で片付けることとなりました。参加者でRmdを利用している方が一人しかいませんでしたしね…。

自分としては思い入れのある内容で,これについてある程度踏み込んで解説しているのは私の知る限りほぼありません。ただ通常のR Markdownユーザーには過剰であるというのは否めません,はい。多分近々出ると言われているWonderful RのRmd本には組み込まれるのではと予想しています。

LT

YouTube on RStudio

今回のメインその2。自分が開発した*tubeplayR*パッケージの紹介です。スライドはこちらです。またこのパッケージのGitHubリポジトリはこちらです。

*tubeplayR*の仕組み

簡単に言うと,youtubeのurlからembet用タグを生成し,それをコンパクトなtemporalなhtmlファイルへと出力してViewerへ表示しています。

RStudioのViewerにhtmlファイルを出力させるにはtmpファイルでないといけませんし,きっちりやろうとするとかなり面倒です。そこで今回はShinyやRStudio Addinまわりで使われている*miniUI*パッケージと*htmltools*パッケージを組み合わせて実現しました。

また,embed用タグを生成するにも*htmltools*の関数を活用し,urlの書換は普通に正規表現を使いました。youtubeのその辺りの仕組みを調べたらかなりシンプルだったので,そこまで難しくなかったです。あとはPaneいっぱいに広がるようにstyleを設定したり,プレイリストにも対応するように条件分岐を設定したくらいです。アイデアさえ出れば実装はわりとさくっといきました。

限界と今後

残念ながら,RStudioの実行環境によっては再生できず,そのままRStudioを固まらせます

RStudio Server版なら(おそらく)youtubeを再生できるブラウザで問題なく使えます。RStudio デスクトップ版のうち,WindowsとUbuntuでは動作しないのを確認しています。これはRStudio内に組み込まれているQt Webkit周りが原因だろうと推測してます。こうなるとパッケージレベルでは対応できません。Macはちょっと検証してないのでわからないですが,Mac版はQtに依存してないっぽいので,うまくいけば使えるかもしれません。

今後としては,あまり時間的に余裕もないので機能追加はしなくてもいいかなと思ってます。ただ,APIを叩いて色々と情報を取得して,それを持ってこれるようにするというアイデアはあります。でも現在このような対応状況なので,このまま私+αな方々で楽しんでいければと。

fullpagejsという新しいRmdテンプレを作った

これはGW中に山中湖開発合宿で取り組んだ成果で,自分が開発した*fullpagejs*パッケージの紹介です。スライドはこちらです。またこのパッケージのGitHubリポジトリはこちらです。

*fullpagejs*パッケージの特徴

R Markdownでfullpage.jsをベースとしたhtmlを生成するための,R Markdown用テンプレートです。主な特徴は以下のとおりです:

  • fullpage.jsでフルスクリーンでスライド式のhtmlドキュメント生成
  • fullpage.jsの機能をほぼ利用可能
  • 標準で書式設定なし
  • jQuery + jQueryUIを利用可能
  • 使い方は通常のR Markdownとほぼ同一

使い方などは上述のスライドに記載しているのでそちらをご覧ください。

標準で書式設定がないのは残念に感じるかもしれませんが,私としてはこれは重要なポイントだと思っています。通常のhtml_documentだとテンプレートに書式設定が組み込まれていたり,Bootstrapが組み込まれていたりしています。また*revealjs*パッケージなどスライド機能を提供するものでも,その多くがそれぞれ専用の書式設定がきっちり組み込まれている以上,かなりデザインでの制約を受けます。

これらはデザインを意識せずドキュメント構造に注力できるというR Markdownの最大メリットであると同時に大きな制約ともなるのです。これをどうにかして外したかったのですが,なんとか実現できました。

限界と今後

まず,ヘルプやドキュメントまわりが全く準備できていません。がんばります。。。

あと,今後については以下のようなことを考えています:

  • 簡単なテーマ機能を準備
  • less.jsを組み込む
  • katexを組み込む
  • fullpagejs_optionsを簡単に記述できるようにする

さきほどメリットとして書式設定がないことを強調したのですが,さすがにある程度簡便に提供すべきだなとは考えています。テーマはフォント設定あたりを準備する予定です。あとless.jsが思ったより簡単に実装できそうだったので近いうちにやります。なおless.jsが組み込めるようになると,R Markdownのデザインの幅および労力が格段に改善されます。

数式については,これまでR Markdownではmathjaxを採用していましたが,このパッケージではmathjaxかkatexのどちらかを選択できるようにしたいです。またfullpage.jsの豊富な機能を簡単に設定できるよう,yamlまわりの処理を改善させたいです。

これらが整備されたら,「ぼくのかんがえたさいきょうのRmd」みたいな感じになるんだけどなぁと考えてます。オサレなサイトも作れるようになりますし。でも一人ではしんどいので仲間(特にWebデザインに強い人)を募集しています。よろしくお願いします。

webshotパッケージでwebをキャプチャ

以前なにを思ったか調べてまとめていた内容を,LT用にスライドへ起こした内容です。スライドはこちらです。

スライド内容を見てもらえれば解ると思いますが,要するに告知()です。でもこのパッケージはちゃんとしたもので,開発者はRStudioのメンバーの一人です。またhtmlwidgets系を使うなら一度は確認しておくのをおすすめします。

最後の応用例については,ちょっとマニアックな気がしないでもないですが,こういう使い方もあるんだなと思ってもらえれば満足です。

全体的な感想と次回のHijiyama.R

この半年で取り組んできた内容を,これでもかと盛り込んだものでした。ただ正直疲れたししんどかった。調整失敗もさることながら,地方のRコミュニティの一つとして色々考えました。悩みました。そして決断しました。

次回のHijiyama.Rはおよそ半年後に開催します。そして次回がファイナルです

私の思いや考えについてはその時にしゃべるつもりなので,まだ言わないようにします。ぜひ多くの方に参加してもらえればと願っています。

Enjoy!