Time for Reflection

きままに、きらくに

「ゼロからわかるRuby超入門」は本当にはじめてのプログラミングに適しているというお話

こんにちは。ぷぽと言います。私は昔々、文系未経験からひょんなことでIT企業に入社し、うっかりエンジニアになってしまった人間です。今回は11/22発売の「ゼロからわかるRuby超入門」が、当時の自分に渡してあげられれば...と悶絶するくらい素晴らしい本でしたので紹介させてもらいます!

gihyo.jp

一言で表現するならば「ゼロからわかるRuby超入門は優しさでできている、その名に恥じない本である」です。なぜそう思ったか、どこが(誰に)オススメか、といったことをずらずら書き連ねていきます。

※この先の文章ですが、もしかすると本当に初心者の方は「なんだその単語は?」って思う部分があるかもしれません。ただ、それは今後この本で学べば大丈夫()なので、今は雰囲気だけでも受け取っていただけると幸いです!

本当に初心者の視点で書かれている

Rubyというプログラミング言語に限らず、私は技術周りの本やWebページで巷に溢れる「◯◯でもわかる」「◯◯入門」「やさしい〜」「本当にやさしい〜」といった売り文句はほとんど信じないようにしています。何度裏切られたことか...私はサル未満なのか...?

Matz(Rubyの作者)が「Ruby超入門」のまえがきで書かれていたのであえてネタにしますが、私が新卒内定者だった時期、入社後の技術研修でRubyを使うとのことで「たのしいRubyという本が自宅に送られてきました。

たのしいRuby 第5版

たのしいRuby 第5版

内定者の中で自分だけプログラミングをやったことがなく想像もつかなかったので、遅れをとらないようにと予め読んでみたのですが、最初の数ページで脳内フリーズして環境構築すらできませんでした。(誤解のないように言いますが私がサル未満だったので!)

実際の新人研修でも講師(先輩)が「Rubyは楽しい!」「Rubyは初心者にもやさしい!」と言っていたのに、ちっともわからなくて「全然やさしくない!」「これすらもわからないならもうダメだ...」だなんて思ったり。

ただし、このRuby超入門はそんな初心者*1が「わからない」と言いそうな部分を一つ一つ丁寧に拾っています。本当の初心者はなんとでもないところで躓く習性()があるのですが、それをこれでもか!と拾ってくれます。環境構築も丁寧ですし、なんとエディターの説明までしてくれます。とても細かいのですが、初めてプログラムを書くときに「エディターを開いてみましょう」と言った言葉が出てきます。そして、書くべきコードだけでなくそれを入力したエディターのスクショまで貼ってくれているんです。これはありがたい!

最初は本当に「何もわからない」ので、こういった小さな気遣いがとてつもなく助かります。エンジニアが普段当たり前のように書いていること、使っているコマンドでも、初めて見る人には何をどうすればいいのか想像がつきません。最初に何度か丁寧に記述してくれるおかげで、次第に「あぁ、これはここに入力すればよくって、本にこう書いてあることは実際の画面ではこう表示されるってことか」というのがわかってくるんです。ちょっとプログラムをやったことがある人は「お前は何を言っているんだ」って感じかもしれないですが、こういうのってかなり大きいと思っています。

例題やテーマが簡単でわかりやすい

初心者が躓かないためには「例文の質」がとても重要だと思っています。最悪な例でいうと「hoge」など意味のないものを変数名などに使ってしまうことで、何もイメージがつかないのでなかなか頭に入ってきません。実際、私が新人研修で教える立場だったときもかなりこの辺に気を使って資料を作っていました。

Ruby超入門は、本の中で一貫して「カフェ・コーヒー」などを題材に使っています。これは初心者の人でもイメージしやすいものですし、プログラミングのそれぞれの機能「メソッド」「クラス」などを、一つの流れで無駄な脳内スイッチをせずに理解していくことができます。余計なことに頭を使わなくていいというのはかなり大事。 また、端々に散りばめられている「ちょっとした例」もかなり身近なもの、とっつきやすいものに例えてあります。レビューをしてて「あ〜〜その例確かにいい!」と何度唸ったことか...。私は特にイメージ・感覚先行なので嬉しかったです。

話し言葉で優しい先生がいるかのよう

ただ単調に教えていくという感じではなく、優しい先生が一緒に並走してくれているような安心感があります。これは私が著者の一人を知っている、人となりをある程度知っている(つもりな)ので脳内補完がたぶんに働いているとは思いますが、それ抜きでも優しく、時にはちょっとしたユーモアを交えながら教えてくれるので、楽しく学ぶことができると思います。

あと、個人的に唸ったのはポイントポイントで前にやったことを思い出させる記述があることです。わかる!わかるぞ!!そのやり方大共感!!!本に限らず、「一度説明したから終わり」「それ以降はわかったものとして進める」というスタンスになってしまうことは結構あるのではないでしょうか。「ここでやりましたね」というような問いかけがあることによって思い出させる、こういうのも優しい先生だなぁと感じました。

[追記] そして、最初にまとめて一気に教えるのではなく、的確に分割されて組み立てられているなと感じました。文章を論理構造的に忠実に?まとめようとすると、例えば「エラー文はエラー文で1章」といったように一気にまとめちゃいがちなのですが、最初に少しだけ紹介しておいてなんとも絶妙なタイミングで再登場or詳しい説明が入ってきてる...!と唸った部分がありました。ただの文章ではなく、初心者に優しいステップでストーリーが流れていく印象がある。

絵がかわいい

楽しく学べる、の要素の一つとしてもう一つ大事なのが、絵がとにかくかわいい!です。個人的にはpopメソッドのビューンって飛んでるやつが好きです。(わかる人にはわかる)先生形式といい、本自体に親しみを持てるのは大事。*2

ただ教えて終わりじゃない

私は「学び方を教えることこそ最上」という思考なのですが、この本もポイントポイントでその要素が散りばめられています。特に感動したのが、「エラーの読み方」です。初心者の頃、エラー文というのはかなり怖いものでした。英語だし、何書いているかわからないし、どこをどう読めばいいかわからないし。ただし、この本はそういった「怖い」「難しい」というイメージを持たせないように、という気遣いが見られます。また、どう読んでいけばいいかも丁寧に書いてある。これは本当に当時知りたかった...。

また、リファレンスの調べ方も載っています。ただ「このメソッドはこういうものです」で終わるのではなく、知らないメソッドに出会った時にどうすればいいかが書いてある。これは本当に「読む人のその後」までを考えていて素敵だな、と感じました。そういえば、Rubyのバージョン間での違いも丁寧に書いてあり、まだリリースされていないバージョンのことまで「今後こうなる予定です」と書いてあって、手取り足取りだなぁと感じました。

[追記]的確にポイントを絞っている

11/21に銀座Railsというイベントで著者の五十嵐さんが登壇されていたのですが、こちらのスライドにある通り対象者、立ち位置に忠実な作りだなと感じました。

自分で研修考えたり資料作ったり、あるいは人に依頼して作ってもらう時にありがちなのが、「あれも教えたい、これも大事だから」と内容が広がってしまうことです。特に五十嵐さんほどいろんなことを知っている人は大変かと思います。紙面の関係で削られてしまったところも多く残念だった部分もあるのですが、「最初に必要なことを必要なだけ教えてくれている、いい意味で割り切れている」のは素晴らしいと思いました。*3

終わりに

長々と書いてきましたが「何もやったことがない本当の初心者」には特にオススメの本です!そうでない方も、丁寧に基礎を教えてくれるので学びになることはあると思いますし、逆に「初心者にはこういう教え方をすればいいのかな?」という教える側の視点で見てみるのも学びになるかと思います。

またまたMatzのまえがきからネタを拝借しますが、私は(少なくともMatzよりは)初心者の気持ちがわかるつもりでいます。私はRubyのプロでも、大学で講義をする人間でもないですが、自身が初心者の頃につらい思いをして、そのために「後輩にはもっとわかりやすくて楽しい研修を!」とかなり熱を入れて研修を作り、実際にやってきたのというのはあります。これは、そんな人間が自信を持ってオススメする本です!

今はいろんな学習ツールが充実していますが、ぜひその一つとしてこちらの本も試してみてください。

お決まりの

最後にもう一度貼っておきますね。

gihyo.jp

余談

紙面の関係で削られたところも多くあるということで「もったいないなぁ」というのはあるのですが、別途カスタマイズとかで研修とかも依頼できそうな雰囲気ですよ?

*1:※これ以降にも「初心者は〜」という表現を使用していますが、"当時ガチガチの初心者だった私"という意味で捉えていただけると幸いです

*2:絵に限らず、文も、その他あらゆることはそれを受け取る側の好みの影響が強いので、万人がそうだとは言いません(ただ、私はとても親しみを持ちました)

*3:これ結構つらくって、もっと知ってるのに...!とか、厳密には違うけれどなんとなくなイメージを捉えてもらうためにはこう言った方がいいよな...とか、かなり葛藤があります。少なくとも私はありました。笑