c5n's i18n

Webサービスの多言語化について書きたいとは思っています。

「プロを目指す人のためのRuby入門」から学ぶ「分かりやすい入門書」

@JunichiItoさんの「プロを目指す人のためのRuby入門」をとりあえず1周読みました。 まだ全部写経できた訳でも理解できた訳でもないですが、ひとまず読み終わりましたということで、考えたことを一度まとめてみようと思います。

Ruby初心者」にオススメ!

先にオススメしておきます。この本は僕のような他の言語で開発の経験があったり、すでにある程度Rubyプログラミングを進めていたりする人には強くオススメです!

言語に依らない基本的なプログラムの書き方(forやif、変数など)は理解していることを前提に、「Rubyらしさ」が重点的に書かれているため、新しい言語としてRubyを学ぶ時に知りたいことがとてもよく分かる内容になっています。

その辺りはまさに @JunichiItoさんがブログに書いている通りでした。

blog.jnito.com

というところで、Rubyの学習にとても良い本であるということは上の記事や他の方のブログなどに書かれている通りですので、この記事では詳しく書きません。代わりにこの記事では、どうやったらこんな分かりやすい内容の入門書が書けるのかという点に着目して考えてみたいと思います。

この記事の対象読者

先述した通り、この記事では「ここがよかった!」などの読む側の視点ではなく、「こう書くと分かりやすい!」という書く側としての視点から本書の良いところを探してみたいと思います。

現在僕はDjangoを利用したWebアプリケーション入門研修のテキストを作成しています。しかし自分の書いた内容がどうしても「分かりやすい」とは思えず悩んでいたところ、ちょうど本書が発売され、なぜこの本が「分かりやすい」のかを考えてみることが自分のテキスト作りにもプラスになるのではないかと感じました。

この記事は僕のような初心者に対して「分かりやすい」文章を書きたいと思っている方に役に立つような記事になれば良いと思います。

なお、この記事に書かれていることは引用部分を除いて全て僕の推測ですので、@JunichiItoさんや編集者さんの意図したことだとは限らないことにご了承ください。

50点の内容を100%理解できる本

まず、この本の一番の特徴は50点の内容を100%理解できるように書かれた本であるということだと思います。

多くの技術的な入門書やWebの記事は、なるべく誤解を与えないためか「100点の内容を書く」ことに注力する傾向があります。APIドキュメントのようにメソッドとその説明を列挙したり、文法を余すところなく説明したり、という具合です。

そのような内容はリファレンスとして有用ですし、それをきちんと理解できれば実際の開発で役に立つことは間違いありません。しかし「入門書」となると話は別です。

その分野の初心者としては、隅々まで説明されても実際の開発現場ではその中のどこが特に重要になるのかが判別できません。その結果、100点の内容のうち10%しか理解できない結果になってしまいます。

一方で、要点を絞り、主観を交えて大事な部分を強調することによって厳選された50点の内容を100%理解できれば、結果として5倍の内容を身につけられるというのが本書を読んで考えたことでした。

ここからは、厳選した50点の内容を100%理解できる文章にするための本書の具体的な工夫について考えてみたいと思います。

「分かりづらい」書き方

「分かりやすい」書き方を考える前に、ここでは先に「分かりづらい」書き方について考えてみようと思います。あらかじめ書いておくと、本書はここで説明する「分かりづらい」書き方を避ける工夫がいろいろと凝らされています。

今までの経験上、僕が本を読んでいて「分かりづらい」と感じてしまう瞬間は以下の通りです。

  • 何が便利でどう使われるのかが説明されないまま淡々と話が進む
  • 新しい話題が突然出てくる
  • 自分の前提知識や目的に沿っていない

それぞれについて、詳しく考えてみたいと思います。

何が便利でどう使われるのかが説明されないまま淡々と話が進む

たとえ素晴らしい技術や仕組みだったとしても、その素晴らしさが伝わらなければ読んでも頭に残りません。自分がそれを使う具体的なイメージがないままだと、その内容をとりあえず「暗記」しなければならない気になってしまい、結果的に「分かりづらい」説明になってしまいます。

新しい話題が突然出てくる

ひとつの技術について説明していると、周辺知識として別の技術の説明が必要になることがあります。そんなとき、「100点の説明」をしようとするとどうしてもその周辺知識の説明が長くなってしまい、読んでいて「あれ、今なんでこの技術を勉強してるんだっけ?」という気分になってしまい、結果としてその内容が頭に残らなくなってしまいます。

自分の前提知識や目的に沿っていない

基本的に入門書を読むときは、「これができるようになりたい」という目的や「今はここまで理解している」という前提知識があります。

そんな中、自分の目的に沿っていない内容にページを割かれたり、すでに知っている内容を改めて説明されてしまう(もしくはまだ知らない内容を既に知っている前提で説明が進んでしまう)と、「この本は自分に合っていないのではないか?読み進めても意味がないのではないか?」と考え始めてしまい、とりあえずページを進めることが目的になってしまいます。

 

以上、「分かりづらい」文章の特徴をざっと挙げてみました。

ここから考えてみると、自分にとって程よく新しい内容が書かれていて、さらに読み終わった後に自分がそれを活用できている姿が想像できると「分かりやすい」と感じられるのではないかと思います。逆にその状態から外れてしまうと、だんだんと集中力がなくなって「分かりづらい」と感じるようになるのではないでしょうか。

「プロを目指す人のためのRuby入門」はそれをどう解決しているか?

では、このような問題を本書はどのように解決しているのかについて考えてみます。

念のためもう一度書きますが、ここで書く内容はあくまで僕の推測や感想であり、@JunichiItoさんが意図した工夫だとは限りませんので、ご了承ください。

「何が便利でどう使われるのかが分からない」問題

これは「第3章 テストを自動化する」や「第6章 正規表現を理解する」が良い例だと思います。

本書では、その技術を「使わなかった場合」について説明した上で、「使った場合」に同じ要件をどれだけ楽に解決できるか、という順序で説明しています。

これについては@JunichiItoさんご本人も以下のようにツイートしています。

また、本書は各章の構成が「例題の要件定義」→「基礎的な説明」→「例題」→「さらに発展的な説明」となっており、中でも「基礎的な説明」は例題を解決するためいの必要最低限な内容に絞られているため、そのどれもが例題として挙げた要件を解決するために実際に使えるものであることを意識しながら読むことができます。

また、細かく文章を見てみると、「実際に使うことはありませんが知識として」とか、「Rubyの開発では~がよく使われます」などのように、どの程度の温度感で説明を読めばよいのかが分かる前置きがされていて、メリハリをつけて読めるよう工夫されています。

「新しい話題が突然出てくる」問題

先述の通り、本書は「例題の要件定義」→「基礎的な説明」→「例題」→「さらに発展的な説明」という構成になっています。

そして、個別のAPI仕様などの細かな要素は例題の要件を実現するために必要なものだけに厳選されていて、それ以外の周辺知識についてはWeb上の記事や公式ドキュメントへのリンクを示すのみにしてバッサリと切り捨てる、という工夫がされています。

これによって、書く側としても今書くべき内容が何かを迷う必要なく、また読む方としても話題があちこち逸れる感覚がなく読み進められるようになっています。

書籍によってはバッサリ切ることも詳しく説明することもないままに「とりあえずこれはおまじないとして、~のようなものだと思っていてください」のような曖昧で混乱を招くだけの説明をされることもあることを考えると、この進め方はとても読者に親切だと感じました。

このあたりの既存の記事へのリンクの活用方法は、普段QiitaやブログなどWebで記事を書き慣れている@JunichiItoさんならではの感覚だなー、と思います。

「自分の前提知識や目的に沿っていない」問題

前提知識や目的は、読者一人ひとりによってさまざまですので、この問題を100%解決するのは難しいように思います。しかしだからと言って内容を網羅的にしてしまって「読者一人ひとりが自分に合った読み方をしてくれればよい」というアプローチは、この問題をさらに深刻にする結果にしかなりません。

本書はまえがきを以下のような質問から始めることによって、この問題を解決しようとしています。

Q1.すでにほかのプログラミング言語で3年以上の開発経験がある。もしくは「プログラミング歴=Ruby歴」で、 Rubyを始めてから半年以上経っている。 (Yes/No)

Q2.Rubyを学習する動機はRailsアプリケーションの開発に役立てるためだ。 (Yes/No)

Q3.すでに仕事でRubyを使っている。もしくはこれからRubyを使った仕事に就こうとしている。 (Yes/No)

 

みなさんはいくつYesになりましたか?  3つともYesになった方は、本書がみなさんのニーズを満たしている可能性が高いです! 反対に、3つともNoだった方は残念ながら本書がお役に立つ部分は少ないかもしれません。Yesが1つ、または2つだった方は、もしかするとみなさんのニーズにマッチする部分があるかもしれないので、もう少しじっくり本書の内容を吟味してください。

これからRubyを勉強しようという人の中で、これが3つともYesになる人の割合はそれほど高くないのではないかと思います。このような質問によって「読者を減らす」ことで、読者の前提知識や目的をある程度そろえることができるのです。

あとは、その絞られた読者に対してのみマッチする内容や文章を書くことによって、より多くの読者にとって前提知識や目的に沿った説明ができる、という訳です。

また、少し小道に逸れた説明に入る際は必ず「ちょっと難しい内容で混乱するかもしれませんが」のような注釈がついて、ここから説明する内容が前提知識や目的に沿っていない可能性があることを教えてくれるのも、本書の親切なところです。

「ターゲットを絞る」というのはマーケティングの基本だと言われたりもしますが、いわゆる入門本でここまで具体的に、バッサリと読者を選ぶ本というのも珍しいのではないかと思います。(たぶん「初級者でも中級者でも楽しめます!」と書いておいた方が売り上げが良いとかそんな事情があるんじゃないかと邪推しています)

しかし、そうすることによって読者にとってピッタリの内容を狙って書くことができるというのは、読者目線に立った工夫なのではないかと思います。

まとめ

以上、「プロを目指す人のためのRuby入門」から学ぶ「分かりやすい入門書」の書き方の考察でした。

テキスト作成であれ、Qiitaへ投稿する記事であれ、ある内容を誰かに説明する機会は少なからずあると思います。そんなとき、本書でされている(と思う)工夫を活用してみることで、もう一歩「分かりやすい」説明ができるようになるのではないかと思います。

少し話題は逸れますが、この本を読んでいてもうひとつ、@JunichiItoさんはとてもよく勉強されている方なんだなー、とも感じました。

このテキストは写経しやすいような閉じない紙質であったり、議論が発生することを前提にした主観的な説明であったり、すべての説明に付属されているサンプルソースであったりと、「読んでわかった気になって終わり」ではなく実際に仕事で使えるようになるための道案内がとても親切にされています。

これはきっと、実際に@JunichiItoさん自身がRubyRailsを1から勉強して仕事で使う中で、実践で使えるようになるために必要な道筋をその身をもって体感したした結果なのではないかと思います。

「本書の刊行に寄せて」に書かれているまつもとゆきひろさんの

「ああ、人の気持ちがわかるとはこういうことなんだなあ」と何度も感じました

という表現は、本書の読者と同じように@JunichiItoさんもRubyを勉強してきた経験が、本書に強く反映されているということなのかな、と勝手に解釈しています。


長くなってしまいましたが、このような良書を先行販売で読めてよかったです!

まだ仕事でRubyを使うのは少し先になりそうですが、それ時が来るまでに本書をもう一度写経し直し、それをベースにAPIリファレンス等を読み、実際にプログラムを書きながらRubyの腕を磨いておこうと思います。