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

第1回レポートづくりのオートメーション化 ~素早く・ミスなく・再現可能に

はじめに~レポートづくりのオートメーション化~

データを扱う仕事をしている人にとって、レポートの作成はあらゆる業務に欠かせない、しかし決して面白くはない作業です。本連載ではレポート作成の手間と苦労に頭を悩ます人々を救うべく、R言語とR Markdownと言うツールを用いたレポート作成のオートメーション化について解説します。

ここでのレポートとは格調高いフォーマルな報告書から日々の業務報告まで、データやログを処理して図・表・数値として要約し、説明文書とともにアウトプットを作成する作業すべてを含みます。例えばデータアナリストならビジネスデータを使った経営戦略に関わるKPIレポート、システム管理者なら日々のアクセスログの統計・集約レポート、研究者なら実験データに対する統計解析結果を示すレポートや論文、などなど。

R Markdownについての技術的な解説は、Rによるデータ解析を現在行っている、これから始めたい、という人にとってすぐに役に立つでしょう。また、本連載で紹介する効率的なレポート作成のワークフロー、再現可能性と言う考え方など、レポート作成リテラシーは、Rを使う、使わないにかかわらずレポートを作成する全ての人に役立つでしょう。本連載によって、多くの読者が効率的なレポート作成スキルを身につけ、退屈で非生産的なレポート作成作業から開放されれば著者冥利に尽きます。

連載の内容

本連載では統計解析向けのプログラミング言語Rとアドオンパッケージである{rmarkdown}パッケージ(本連載ではRパッケージ名を{package-name}と表記しています)を使って、R Markdownと言うファイルを編集してレポートを作る方法を解説して行きます。R Markdownとは文書・説明・注釈などのドキュメントと、データの分析を行うRのコードが混在したテキストファイルです。このファイルを{rmarkdown}により自動処理することで様々な形式のレポートを作成することができます。

本連載ではR言語そのものや統計解析手法に関する解説は行いません。これらのトピックに関しては、Web上にも書籍としても素晴らしい解説が多数ありますので参考にしてください。

本連載では次のようなトピックについて解説していく予定です。

  • レポート作成のオートメーション化、そのメリット
  • R Markdownによるレポート作成例(チュートリアル)
  • R Markdownのマークダウン記法・Rコード処理の制御
  • 図表の出力の制御
  • HTML文書の作成
  • PDF文書の作成・ワード(DOCX)形式文書の作成
  • プレゼンテーション(スライド)の作成
  • RStudioの活用

なお本連載の内容は拙著「ドキュメント・プレゼンテーション生成」⁠シリーズ Useful R 9、共立出版)と一部重複します。興味がある方は一読頂ければ幸いです。また本連載の元ネタであるrmarkdownパッケージの解説サイトも参考にしてください。

良いレポート作成とオートメーション化のメリット

内容云々は別として、レポート作成のワークフローという観点から、良いレポートとは次のようなものだと考えられます。

  • 無駄な手作業が入っていない
  • コピペ汚染されていない
  • 間違いが起こりにくい
  • 全く同じレポートを他人が作成できる
  • データやログの変更に容易に対応できる

これらをまとめれば、レポート作成に関わる全てのプロセスを再現できる(その結果としてレポートも再現できる)=ワークフローがオートメーション化されている、と言うことです。レポート作成のオートメーション化の主なメリットは時間短縮、人為的ミスの軽減、再現可能性の確保であり、上に挙げた「良いレポート作成」の全てを満たします。以下では、具体的なレポート作成パターンを紹介しながら、これらのメリットについて解説します。

とても残念なレポート作成パターン

まずは最悪な、しかしありがちなケースから紹介しましょう。

図1 最悪な、しかしありがちなケース
図1 最悪な、しかしありがちなケース

このパターンでは以下の手順でレポートを作成します。

  1. データやログをかき集める
  2. (Rで)アドホックな処理・分析して、図・表・数値を出力する
  3. (WordやPowerPointなどで)説明や注釈などを作成し、2.の出力をコピペ
  4. 1.に戻る。このループを繰り返して、レポートが完成。

ダメな部分は図中の赤で示してありますが、このパターンにはいくつもの問題があります。まず、これはレポート作成に限らないことですが、データやログの管理体制を整えましょう。データを探して、そのフォルダに移動して解析作業して、結果を文書にコピペ、というパターンはすぐに破綻します。

次に、このパターンで最もダメな点が「アドホック解析」です。アドホックとは「その場限り」という意味で、具体的にはRのコンソールでコマンドを入力するなどして、逐次的に処理を進めることを意味します。ポイントは何をどう処理したのか記録が残らないということです。確かにその場で図や表を作ることはできますが、同じものを二度作ることは不可能です。

さらに、アドホック解析で出力された図・表・数値をレポートに埋め込むためにコピペしています。レポート作成におけるコピペは害悪でしかありません。レポート作成中に一度でもコピペを行った場合、そのプロセスはコピペ汚染されています。コピペ汚染されたレポートをクリーンにする術は存在しません。

大事なことですが、レポートは芸術作品ではありません。重要なのは成果物の保存ではなく、プロセスの保存です。どんなに素晴らしい内容であっても、再現性のないレポートは紙くず同然です。レポートを作成する時は、このことを常に強く意識してください。

少しはましなレポート作成パターン

今度は多少ましなパターンを紹介しましょう。このパターンでレポートを作成してる方は多いのではないでしょうか。

図2 多少ましなパターン
図2 多少ましなパターン

このパターンでは、データ処理~図・表・数値出力と文書作成がパラレルになっています。特に先ほどの最悪パターンからの改善として、分析処理をアドホックではなくスクリプトとして保存しています。ですので、データやログ収集~図・表・数値出力までは再現性のある分析処理になっています。

一方の文書作成では、WordやPowerPointなどを使って文書を編集します。ここまでは問題ありません。ところが最後に、分析処理で出力した図・表・数値などを文書中の適当な場所にコピペします。問題はこの部分で、この方法ではやはりコピペ汚染から逃れられていないことがわかります(なお、WordやPowerPointのファイルリンク機能を使えば、この方法でもコピペ汚染されていないレポートを作成できるかもしれませんが、 本連載では解説しません⁠⁠。

一見良さそうなパターンですが、最後のコピペ汚染によって次のような弊害が出てきてしまいます。

  • 大量の図・表・出力があった場合、コピペすべき場所を間違えてしまう(実際によく起こります⁠⁠。
  • データやログの差し替えがあった場合、同じコピペを一から繰り返す必要がある(これは本当に不毛な作業です⁠⁠。
  • レポートの中の図・表・数値がどのスクリプトによって出力されたものなのかわからない。たとえば上司から「この図の出力に使った解析アルゴリズムを教えて欲しい」と言われても、レポートからスクリプトはトレースできません。

結果、どんなに素晴らしい内容であっても、レポートは紙くず同然……、とまでは言いませんが、本来の価値を著しく損ねていることは間違いありません。

オートメーション化されたレポート作成パターン

最後に、我々が目指すオートメーション化されたレポート作成パターンを紹介します。

図3 我々が目指すオートメーション化されたレポート作成パターン
図3 我々が目指すオートメーション化されたレポート作成パターン

この図を見ただけでは、何をやっているのかわかりにくいかもしれません。まず、データ処理~図・表・数値出力が文書作成のプロセスに入り込んでいます。そして、コピペが「自動埋め込み」に入れ替わっています。

簡単に説明すると、このパターンでは、レポートの文書を作成・編集しながら、図・表・数値を埋め込みたい場所に、その分析を行うコードを記述します。この作業によって文書とコードが混在したファイルが出来あがります。このファイルを自動処理することで、コードが出力に置き換えられ、文書と図・表・数値が入ったレポートが完成します。

このパターンには次のようなメリットがあります。

  • コピペ汚染から完全に開放される。結果、手作業による間違いは劇的に減り、作業時間は大幅に短縮される。
  • データやログが差し替えられても自動処理を再実行するだけでレポートを更新することができる。
  • レポートの中の図・表・数値を出力した分析コードがすぐにわかる。

以上のように、時間短縮、人為的ミスの軽減、再現可能性の確保の全てが満たされていることがわかります。

慣れるまでは作業のイメージがつかみにくく、やや面倒そうに見えるかもしれません。ですが、R Markdownでは様々なレポート作成支援機能が導入されており、習得は容易です。多少の労を惜しまず、ぜひ一度レポート作成のオートメーションを試してみることをお勧めします。

節約できた時間で仲間と飲みに行って生産的な人生を送りましょう! Enjoy!!

次回からは

次回からはR Markdownによる具体的なレポート作成方法を紹介します。なお、この記事も図を含め全てR Markdownで作成しています。参考までに、入稿したオリジナルの原稿である、自動変換処理などを行う前のR Markdownファイルを公開しておきます。

おすすめ記事

記事・ニュース一覧