この本の概要

Rubyの文法をサンプルコードで学び,例題でプログラミングの流れを体験できる解説書です。
ほかのプログラミング言語で開発経験のある人が,Rubyを学ぶ際に効率的に学べる内容を詰め込みました。
プログラミング未経験者向けの「変数とは」「配列とは」といったプログラミング基礎知識の説明は最小限にし,そのぶんRubyの特徴(他プログラミング言語との違い),Rubyにおけるリファクタリングの要点,テスト駆動開発やデバッグのやり方など開発現場で必要になる知識を解説しています。
本書の内容を理解すれば,開発の現場で必要とされるRuby関連の知識を一通り習得できます。そして,「今まで呪文のようにしか見えなかった不思議な構文」や「実はあまりよくわからないまま,見よう見まねで書いているコード」も自信をもって読み書きできるようになるはずです。
本書はRuby 2.4をベースに解説します。Ruby 2.2や2.3など,少し前のバージョンで動きが異なる場合は,適宜注釈を入れています。

こんな方におすすめ

  • Rubyのプログラミングを学びたい人
  • Rubyのテスト駆動開発やデバッグ技法を学びたい人
  • Railsを学ぶにあたりまずはRubyを学びたい人

著者の一言

本書の刊行に寄せて

ソフトウェア開発者としてのキャリアは,あるいはソフトウェア開発者だけではないのかもしれませんが,流れを渡る「飛び石」のようなものではないかと感じることがあります。プログラミングを始めたばかりで右も左もわからない初心者は,初心者特有のつまずきや悩みがあるでしょうし,ある程度習熟して中級者になれば,それはそれでまた別の景色が見えて,初心者とは異なる悩みが生まれることでしょう。そして,経験を積んだり,技術を身につけたりして新しいステップに進むたびに,それぞれの新しい景色が見えてくるものです。
世の中にはさまざまなトピックについて「初心者」を対象にした「入門書」があふれています。しかし,初心者向けの本を書くのは,それなりに大変です。書籍を執筆するほどその分野に精通した人は,だいたいの場合,自分が初心者のときになにを感じていたのか忘れてしまっていて,初心者がどういうふうにつまずくのか共感できなくなってしまっている人が多いせいだと思います。私も入門書とか書こうとしても書けないタイプですね。
それで,タイトルに「入門」と書いてあって,しかし,必ずしも入門に向かない本もたくさん存在することになるのです。下世話な話ですが,タイトルに「入門」と付けると売上が伸びる傾向があるんですって。そういえば,本書もタイトルに「Ruby入門」を含みますね(笑)。
で,本書です。本書は確かに「Ruby入門」という書籍ですが,対象はプログラミング初心者ではありません。「プロを目指す人のための」とあるように,プログラミング初心者を脱出して,次の段階として,職業プログラマになりたい,あるいはすでになっている人でも,プロフェッショナルとして次のステップに進みたいという人が対象になっています。そう言えば,このあたりの層を対象にした本というのは意外と見かけませんね。著者の伊藤さんはRubyの「プロ」としてのキャリアは(Ruby歴20年以上の私に比べれば)あまり長くはありませんが,このような書籍を書くためにはむしろ最適な人材だと思います。実際,私なら簡単に流してしまうところも,丁寧に解説されているところがあり,原稿を読んでいて「ああ,人の気持ちがわかるとはこういうことなんだなあ」と何度も感じました。本書はきっとみなさんが「次のステップ」に進むお役に立つでしょう。
さて最後に,プログラミング言語Rubyの作者として,Rubyについて少し説明しておこうと思います。Rubyはもともと私が趣味として1993年に開発を開始したプログラミング言語です。自分の趣味に合うような言語を作ることが最初にして最大の目標でしたから,Rubyは「初心者向け言語」ではありません。当時から私はプログラミング初心者ではありませんでしたから。ただ,プログラマがRubyを気分良く使えて,プログラミングの
楽しい側面に集中できることを目指して設計されました。ですから,単にシンプルでつまずきの少ない言語というよりは,どちらかと言うと,見かけはとっつきやすいけど,機能満載で使っていてワクワクするような言語になっています。
Rubyを使ってワクワクしながら,楽しくプログラミングができて,しかもお金も稼げて,周囲から尊敬されて,ハッピーな人生を送っている,そんなプログラミングライフを送っているみなさんをお見かけすることができれば,それはRubyの作者にとって,これ以上ない喜びです。

出張中のハンガリー・ブダペストから
2017年9月
まつもと ゆきひろ

まえがき

本書を手にとってくださり,ありがとうございます。本書はプログラミング言語Rubyの言語仕様や開発の現場で役立つRubyの知識を説明した本です。
20年以上前に生まれたRubyはもはや新しい言語ではありません。さらに,Rubyを使ったWebアプリケーションフレームワークであるRuby on Rails(以下,Rails)が非常に有名になったこともあり,Rubyは歴史が長く,人気も高いプログラミング言語の1つと言えるでしょう。それゆえ,すでに多くの入門本が出版されています。
また,本だけではなく,ネット上にもオンラインの学習コンテンツがたくさん提供されています。これだけ選択肢があると,自分にぴったり合った本や学習コンテンツを見つけるのはなかなか大変ですよね。きっと本書もその選択肢の1つになると思いますが,本書がみなさんのニーズに合っているかどうか,最初にチェックさせてください。

  • 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を始めてみたい人」や「Rubyプログラミングを始めてしばらく経ったが,まだまだ自信が持てない人」を想定して書かれています。
また,本書はあくまでRubyの入門本であり,Rails の入門本ではありません。ですが,本書はRailsの存在を強く意識しながら書かれています。筆者自身も普段はRailsアプリケーションの開発をメインでやっています。
Railsに特化した知識は説明しないものの,筆者の経験上,「Railsアプリを開発するなら,ここは必ず押さえておきたい」というトピックは必ずカバーするようにしました。これが2つめの質問の背景です。もちろん,Rails以外のRubyプログラミングでも本書は役立ちますが,その場合はもしかすると「こんなことが知りたい」と思う内容が多少不足しているかもしれません。目次にざっと目を通して,自分の知りたいトピックがカバーされているかどうかを確認してください。
最後の質問は,読者のみなさんがどれくらい真剣にRubyに取り組む必要性があるのかを確認したくて尋ねた質問です。本書はなかなかのボリュームです。最初から最後まで読み進めるためにはそれなりの時間がかかると思います。ですが,開発の現場で本格的なRubyプログラムを書くためには,最低でもこれぐらいの知識が必要になります。本気でRubyをやっていくつもりなら,本書を手にとってRubyをしっかり勉強しましょう。逆に,「ちょっとRubyをかじってみたい」という程度のニーズであれば,本書は少し網羅的すぎるかもしれません。

読んで終わり,ではなく手と頭を動かそう

ところで,みなさんはこれまでどんなふうにプログラミングの勉強をしてきましたか?筆者もこれまでいろんな方法で勉強してきましたが,その中で「一番失敗したなあ」と思うのは,「本を読むだけでわかった気になってしまうこと」です。本を読んでその内容を理解すると,それだけで「わかったつもり」になりがちです。
しかし,いざ自分でプログラムを書こうとするとまったく手が動かず,何をどうすればいいんだと途方に暮れてしまう……そんな経験が筆者にはありました。
その経験から筆者が学んだのは「自分の手と頭を動かさなければ,プログラミングは学べない」ということです。そこで,本書では読者のみなさんに手と頭を動かしてもらうために,簡単なプログラミング問題を各章に用意しています。このプログラミング問題はぜひ手元のマシンを使って実際にプログラムを組んでみてください。「本を読んで終わり」にするよりも,ずっと高い学習効果が得られるはずです。

分厚い本は難しい?

最後に,本書はとても分厚い本ですが,「分厚い本=難しい本」だと思わないでください。いや,難しい内容が多少登場することは否定しませんが,分厚くなった理由はそれだけではありません。本書のボリュームが大きくなったのは以下のような理由からです。

  • 文章による説明だけでなく,サンプルコードをふんだんに用いて説明している。
  • 難しい内容もできるだけわかりやすくなるよう,筆者が自分の言葉でできるだけかみ砕いて説明している。
  • 高度な話題ばかりでなく,Rubyをまったく知らない人でも無理なく読み進められるよう,初歩的な話題から順番に説明している。

つまり,筆者が目指したのは「分厚くて難しい技術書」ではなく,「分厚いが非常にわかりやすい技術書」です。
また,本書は技術的に簡単な内容ほど前半に,高度な話題ほど後半に配置しています。これは本書全体を通しての章構成もそうですし,各章ごとの説明内容もそうなっています。それゆえ,ほかのRubyの入門書と比較すると少し変わった構成になっているかもしれません。しかし,前から順番に読んでいけば,前半で学んだ基礎知識のおかげで,後半の高度な知識もすんなり頭に入ってくるはずです。

これから本書を読むみなさんに向けて

もちろん,このまえがきで説明した内容が本当かどうかは,みなさんの感想しだいです。ですが,このまえがきを読んで「なんかおもしろそう」「これは自分に向いているかも」と思った人は,ぜひこの続きを読み進めていってほしいと思います。この本を最後まで読み終わったら,まえがきの内容が合っていたかどうか,あとがきのページでみなさんと答え合わせをしましょう。

  • 「本書を読む前に比べると全然コードが違って見える!」
  • 「Rubyの言語機能を使って,こんなにシンプルで読みやすいコードが書けるようになった!」

本書を読み終えたみなさんから,そんな声が聞こえてくることを願っています。

伊藤淳一

著者プロフィール

伊藤淳一(いとうじゅんいち)

1977 年生まれ。大阪府豊中市出身,兵庫県西脇市在住。
学生時代はミュージシャンを志し,就職もせずにバンド活動を続けていたが,ひょんなきっかけでIT業界に就職。
SIer,社内SEを経て,2012年から株式会社ソニックガーデンでRubyプログラマとしてのキャリアをスタート。
ブログやQiitaなどで公開したプログラミング関連の記事多数。説明のわかりやすさには定評がある。
地域Rubyコミュニティ・西脇.rbの主催者。
訳書(電子書籍)に「Everyday Rails - RSpecによるRailsテスト入門」(Aaron Sumner 著,Leanpub)がある。
Twitter:@jnchito
ブログ:http://blog.jnito.com