R Markdownで楽々レポートづくり

第7回R Markdownでスライドづくり ~目指せ☆プレゼンの星~

プレゼン、愛してますか?

プレゼン準備、進捗出てますか?

はじめに

読者が自分でパラパラめくって読んでいくレポートとは違い、プレゼンにおける情報伝達は演者のペースで進んで行きます。ですから、プレゼンには聴衆の理解度や注意を操作する、聴衆の反応によってプレゼンの内容をリアルタイムに変更する、等々の特殊な技術が求められます。プレゼンがうまくいった時は、全てを忘れてビールでも飲みたい気持ちになりますね。うまくいかなかった時も、別の意味で全てを忘れてビールでも飲みたい気持ちになります。

それはさておき、プレゼンを行うためにはプレゼン用のスライドを作成する必要があります。スライドを作成するのは、正直メンドウです。パワポを立ち上げ、図表をコピペ、ダイアグラムを作って、テキスト注釈つけて……、オートメーション化とは程遠い世界です。このようなタスクの弊害は連載第1回を読んでもらえば実感できることでしょう。

さて、これまでの連載にお付き合い頂いている読者の方々であれば、R Markdownからプレゼン用スライドを作成したいと考えているに違いありません。たとえばレポート用に作成した.Rmdファイルを使ってプレゼン用のスライドを作成できたら、どれだけ手間が省けることでしょう。

安心してください。できるのです。R Markdownなら、レポートづくりとほぼ同じ流れでプレゼン用のスライドを作成できるのです。ここに至って、レポートだけでなくスライド作りまでオートメーション化してしまうという環境を実現できるようになりました。

前回も紹介したようにR Markdownではioslides、Slidy、Beamerという3種類のフォーマットのスライド作成をサポートしています。このうち、ioslidesGoogle I/O 2012Slidyは、Webスライドと呼ばれる、ブラウザ上で表示、閲覧できるスライドです。BeamerはPDF形式のスライドです。

連載第5回で紹介したようなWeb技術を使った可視化の力を活かすうえでも、Webスライドは有効な手段です。ぜひぜひ試してみてください。

スライドづくりの基礎

スライド作成のための.Rmdの形式は、レポート作成の場合とほとんど同じです。マークダウン記法で本文を記述し、コードチャンクにコードを記述していきます。

たった一つ、スライド作りで重要な点は「ページ区切り」を明示する、ということです。これには###----というマークダウン記法を使います。なお、これらの記法は通常のレポートでは見出しや水平線として出力されるので、スライド用に作った.Rmdからそのままレポートを作成できるという利点もあります。オフィススイートのプレゼンソフトも配布資料形式にできますが、見にくいですよね。

また、前回同様、出力形式をYAMLフロントマターで指定します。たとえばioslidesなら、output: ioslides_presentationと指定します。これだけです。

この他、インクリメンタル表示など、プレゼンの際の動作を指定するためのオプションが用意されています。これについては、それぞれのスライド形式の説明の中で紹介します。

ioslides

ioslidesはGoogle I/O 2012というGoogleがGoogle I/O 2012で使ったWebスライドテンプレートです。公式サンプルはこちらです。シンプルで綺麗ですね。このテンプレートの登場がWebスライド普及のきっかけになったような気がしています(違うかもしれません⁠⁠。

ioslides形式で出力するにはを使うにはYAMLフロントマターにoutput: ioslides_presentationと指定します。いろいろなオプションが指定できるので、R上で?ioslides_presentationとしてヘルプファイルを参照してください。ここでは代表的なオプションを紹介します。

.Rmdファイルがやや大きめなので、別途サンプルRmd出力サンプルをおいておきます。R上でlibrary ('rmarkdown'); render('ios.Rmd')とすればWebスライドを出力できます。

インクリメンタル表示

インクリメンタル表示とは、箇条書きを順番に表示していく例のやつです。もったいぶった感じがいやらしいですが、プレゼンでは聴衆の注意を操作する有効な方法です。YAMLフロントマターで

---
output:
  ioslides_presentation:
    incremental: true
---

とすれば、スライド中の箇条書きが全てインクリメンタル表示になります。一部だけインクリメンタル表示にしたい場合は、

> - 食べる
> - 飲む
> - 太る

という記法(箇条書き用-の前に>を用います。

ページ属性

ページ見出しのあとに{.hoge .boke}とすることで、そのページの属性を指定できます。たとえば

## 結構文字が多いページ `{.smaller}`

とすれば小さめの文字が使われます。

2段組

2段組を使うには、直接HTMLタグを記述します。

<div class="columns-2">
blabla
blabla
</div>

ロゴ

YAMLフロントマターでlogo: logo.pngのように指定することで、スライドにロゴを表示できます。

発表者ノート

発表者用のノートを追加するには、HTMLタグを記述します。

<div class="notes">
ここにノート
- 言うことその1
- 言うことその2
</div>

そして、スライドのURLに?presentme=trueを追加して発表者モードを有効にします。 サンプルです。

プレゼン中のキーボードショートカット

プレゼン中には次のキーボードショートカットで表示モードを切り替えることができます。

  • f フルスクリーン表示
  • w ワイドスクリーン表示
  • o オーバービュー(スライドがズラッと並ぶ)
  • h コードハイライト
  • p プレゼンターノート
  • ESC デフォルト表示に戻る

いかがでしょう? R Markdownから、実務で使えるレベルのプレゼンを作成できることがお分かり頂けたでしょうか? 著者は最近は内輪のミーティングなどでは.RmdでWebスライドを使っています。とても捗ります。

Slidy

SlidyはW3Cが推奨するWebスライドテンプレートです。ioslideとほぼ同じ.Rmdからウェブスライドを作成できます。

Slidy形式で出力するにはを使うにはYAMLフロントマターにoutput: slidy_presentationと指定します。ioslideと同じように、いろいろなオプションが指定できるので、R上で?slidy_presentationとしてヘルプファイルを参照してください。

別途サンプルRmd出力サンプルをおいておきます。R上でlibrary ('rmarkdown'); render('sli.Rmd')とすればWebスライドを出力できます。

インクリメンタル表示はioslideと同じように、

---
output:
  slidy_presentation:
    incremental: true
---

または、

> - 食べる
> - 飲む
> - 太る

とします。

フッタ

Slidyではフッタを挿入できます。YAMLフロントマターで次のように記述します。

---
output:
  slidy_presentation:
    footer: "Copyright (c) 2015, @kohske"
---

プレゼン中のキーボードショートカット

次のようなキーボードショートカットを使うことができます。

  • C 目次の表示
  • F フッタの表示
  • A 全てのスライドを表示
  • S フォントを小さく
  • B フォントを大きく

ioslidesとSlidy、どちらを選ぶかは好みの問題だと思います。連載第5回で紹介したDiagrammeRは、今のところSlidyのみで使えるようです。

ここで紹介した以外にも細かいカスタマイズを行うことで、公式な場所でのプレゼンにも充分使えるものになるでしょう。R MarkdownとWebスライドで、目指せ☆プレゼンの星!!

Beamer

Beamerはプレゼン作成用のLaTexパッケージです。詳しい説明はTEX Wikiを参考にしてください。また、Beamerスライドを作成するにはLaTeX環境が必須なので、前回を参考に環境を導入してください。

Beamer形式で出力するにはYAMLフロントマターにoutput: beamer_presentationと指定します。日本語用に\usepackage{luatexja}\hypersetup{unicode=true}及びlatex_engine: lualatexが必要なので、おまじないとして次のようにフロントマターを指定してください。

---
header-includes:
   - \usepackage{luatexja}
   - \hypersetup{unicode=true}   
output: 
  beamer_presentation:
    latex_engine: lualatex
---

他にもいろいろなオプションが指定できるので、R上で?beamer_presentationとしてヘルプファイルを参照してください。

Beamerスライドについても、別途サンプルRmd出力サンプル(PDFファイル)をおいておきます。R上でlibrary ('rmarkdown'); render('bea.Rmd')とすればPDFスライドを出力できます。

インクリメンタル表示はWebスライドと同じように、

---
output:
  beamer_presentation:
    incremental: true
---

または、

> - 食べる
> - 飲む
> - 太る

とします。

いかがでしょう? なんとなく、格調高いスライドが出来上がった気がしますね。数式を多用するプレゼンなどでは、Beamerを利用するのもいいかもしれません(ただしWebスライドでも数式は表示できます⁠⁠。

まとめ

今回はR Markdownからプレゼン用のスライドを作成する方法を紹介しました。いつもに比べて内容が薄いように見えたかもしれません。しかし、よ~く考えてみてください。スライドづくりのための特別な解説がほとんど不要ということは、つまりこれまで説明したレポートづくりの手法からほとんど変更なしでスライドを作成できるということです。.Rmdファイルはほぼ変更不要で流用できますし、マークダウン記法を使う点、コードチャンクの書き方など、これまでと全く変わりありません。

ワードで作ったレポートの内容をパワポにする事態を考えてみてください。コピペ地獄ですし、パワポの使い方を覚える必要もありますね。R Markdownでスライド作成の記事内容が薄い、説明が不要ということは、つまりそういうことです。決して、手抜き記事を書いているわけではありません。

また、今回も入稿したオリジナルの原稿である、自動変換処理などを行う前のR Markdownファイルやサンプルなどをまとめて公開しておきます。

さて、ゴールデンウィーク頃に始まった連載も第7回、あっという間に子どもたちは夏休みです。

ここで一句

「夏の海 子は水浴び~る 父ビール」

お後がよろしいようで~。

次回は

次回はとうとう最終回の予定です。これまで秘密兵器として温存してきたRStudioによるレポートづくりについて紹介します。

おすすめ記事

記事・ニュース一覧