挫折しないための「R言語徹底解説」通読法

 今年の2月12日、とある書籍をご恵贈いただきました。原題 "Advanced R"の日本語版、『R言語徹底解説』。全20章、索引を含めると500ページを超える重厚な訳書です。

原著者のHadley Wickham氏は{ggplot2}{dplyr}をはじめとするいくつもの強力な拡張ライブラリの作者であり、R言語に革命を起こしたと評されるなど、今やRユーザにとっては欠くことのできない存在となっています。

Advanced R (Chapman & Hall/CRC The R Series)

Advanced R (Chapman & Hall/CRC The R Series)

R言語徹底解説

R言語徹底解説

そんなHadleyの思想が凝縮されたという "Advanced R"の邦訳を喜びつつ*1も、僕にはひとつの不安がありました。

原書冒頭には、「想定する読者層」として次のような記述があります。

  • Rについて中級程度の技能を有しているが,より深く詳しくRを知りたいと考えており,また種類の異なる課題を解決するのに汎用的に役立つ戦略を新たに身に付けたいと考えているプログラマ
  • 他のプログラミング言語には通じているが,Rをまさに学習中であり,R特有の挙動を理解したいと考えるプログラマ
(邦訳を引用)

自分はRが好きなだけ*2プログラマとしては半人前であり、「中級程度の技能」なんて疑わしい、ましてや他のプログラミング言語に通じているなんてとてもじゃないけど思えない......

まだまだ初心者の域を抜けていない自分に、この本は荷が重くはないだろうか。そんな不安を胸にページをめくっていた僕の目に、巻末の訳者あとがきのこんな一節が飛び込んできました。

Wickham氏には、初心者にも理解しやすく使いやすいコード開発を行うという姿勢が深く身についている.そのため,本書にはR言語の構造について非常に高度な内容が含まれているにも関わらず,解説は非常に平易である.(中略)本書はむしろ初心者にこそ通読して欲しい内容となっている. 

なるほど、通読すればいいのか

そう思った僕は、頂いた本書を「絶対に業務の合間に読み進めて『通読』しような」と自分に言い聞かせながらオフィスの自席卓上にドカンと積み、読み終えたらブログに紹介記事を書いて献本のお礼をしようなんてのんきなことを考え、

 

そして、あっという間に3ヶ月あまりが経ちました。

絵にかいたような「挫折」と自分の不甲斐なさに落ち込み、なんで読み通せないんだろうと悩んでいた時に出会ったある物理教師の方の文章をオマージュしつつ、この記事を書きました。

「Rを勉強する」という気持ちをいったん忘れてみる

本書を読む前の「心がまえ」として大切なのは、この本で「Rを勉強する」という気持ちをいったん忘れてみることです。「これは原作者Hadleyと徹底解説本製作委員会が作ってくれた、2クール分のアニメの台本なのだ」と思い込むのです*3。なぜこんなことをいうかというと、アニメのDVDやブルーレイなら、本書と同じかそれ以上の値段でもどんどん買ってしまう人が少なくないからです。

R言語徹底解説は、いえ、すべての本は、どんな自由な発想で読んでもいいのです。僕の好きな『ペナック先生の愉快な読書法』という本では、読者が絶対に持っている権利として次の10ヵ条が挙げられています。

  1. 読まない権利
  2. 飛ばし読みする権利
  3. 最期まで読まない権利
  4. 読み返す権利
  5. 手当たりしだいに何でも読む権利
  6. ボヴァリズムの権利(小説と現実を混同する権利)
  7. どこで読んでもいい権利
  8. あちこち拾い読みする権利
  9. 声を出して読む権利 *4
 10. 黙読する権利

ペナック先生の愉快な読書法―読者の権利10ヶ条

ペナック先生の愉快な読書法―読者の権利10ヶ条

  • 作者: ダニエルペナック,Daniel Pennac,浜名優美,浜名エレーヌ,木村宣子
  • 出版社/メーカー: 藤原書店
  • 発売日: 2006/10
  • メディア: 単行本
  • クリック: 9回
  • この商品を含むブログ (6件) を見る

読者には本を読まない権利があります。どんなに人から「徹底解説本はいいぞ」とすすめられても、自分から読みたくなるまで、ページを1枚もめくらない権利が、あなたにはあります。絶対もったいないけどな。

飛ばし読みを多用しましょう。たとえば、TVシリーズで放映されるアニメの全てのシーンを理解しようとしていちいち録画してコマ送りで止めて観たりなんてしなくていいように、本書も、ただただ楽しむことを目的として読み、わからないところはどんどん飛ばしていいのです。

TVアニメに例えたので、週に1度1章ぶんを流し読むくらいのペースでどんどん進んでいくというやり方もあると思います。そして、これが書籍の良さでもあるのですが、それこそ、わからなければ後から何度でも読み返せばいいのです。

読み返すほどに理解レベルはあがる

後述するブログ記事でu_riboくんが書いてくれているように、本書は「読み返すほどにRの理解レベルが上がる」本です。

訳者あとがきの「初学者にこそ通読してほしい」、というのは単に文字通り「さいごまで通して読む」ことだけを勧めているのではなく、「わからないことばかりの初心者こそ、何度も通いつめるように読むうちに徐々に視界が晴れ、読む度に新しい発見があるという読書体験をしてほしい」そんな意味も暗に込められているのではないでしょうか。

原著Advanced Rが翻訳され『R言語徹底解説』という形になったことで、こうした「何度も読み返す」という読み方が、単に英語で書かれていたものが日本語になったという以上に、格段にやりやすくなったと感じます。改めて、訳者の方々や出版社の方々、本当にありがとう。

 

本書の構成と各章の詳細については、ぜひ以下に挙げるブログ記事を参照してください。読み返す際にきっと便利な書評としての意味も含め、独断と偏見で3記事を選ばせて頂きました。

uribo.hatenablog.com

notchained.hatenablog.com

qiita.com

自分だけの副題をつけて読んでいく

さて、上に挙げた先人たちの書評記事を参考にしつつ、僕も本書を週に1章くらいずつ読んで、このブログに感想を書いていこうかなと思います。読み始めるにあたり、u_riboくんにならって僕も各タイトルに副題をつけてみました。 

  1. ようこそRプログラミング
  2. よろしくデータフレーム
  3. はじめてアトミックベクトル
  4. うたうよexample
  5. ただいまコーディングスタイル
  6. きらきら遅延評価
  7. なきむしS4
  8. おまつり.GlobalEnv
  9. おねがい例外処理
  10. まっすぐFunctional Programming 
  11. おかえりapply family
  12. わたしのFO (Function Operators)
  13. さよなら参照透過
  14. かけだすモナド

本書は全部で20章ありますが、続く15章は「他の章や節で説明されてきた多くのテクニックを駆使する」と書かれていてこれまでの総まとめの様相を呈しており一筋縄ではいかなそうなことと、16〜20章のパフォーマンス改善についての部分は順番に読むというよりむしろ明日からでも知っておきたい内容なので、通読という目標としてはとりあえず秋クールのアニメが始まる10月くらいまでを目処に、ここに挙げた14章をじっくり読んでいこうかと思っています。

 

*1:https://twitter.com/wakuteka/status/670078543699845121

*2:https://twitter.com/wakuteka/status/733312026961829888

*3:4部20章構成なので、各部の終わりに総集編があることにしてもいいですね!

*4:この10ヶ条を踏まえて一つだけ訳者の方々にリクエストをすると、「声を出して読む権利」に配慮し、脚注にパッケージ名の読み方を記載してほしい、と思っています。たとえばplyrと綴られた文字列を「ぷらいやー」と読むことは、日本語話者のR初心者には難しいです。