パーフェクトRubyという本を(共著で)書きました
8/10 パーフェクトRubyが発売になりましたね
パーフェクトPythonやパーフェクトPHPで有名なパーフェクトシリーズのRuby版であるパーフェクトRubyが発売されました。
@hibariya @takkanm @ryopeko @joker1007 @udzura たちとチームを組んで書きました。面白そうだなと思ったら買ってみてください :)
- 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/10
- メディア: 大型本
- この商品を含むブログ (1件) を見る
目次
目次はこんな感じです。Rubyの基本的な部分からBundlerやGemのつくり方(C拡張も説明あるよ!!)まで網羅されている書籍はなかなか無いのではないかな〜と思っております。
Part1 Ruby ~overview 1章 Rubyの概要 1-1 Rubyについて 1-2 本書の読み方 1-3 Rubyドキュメントの歩き方 1-4 Ruby処理系の入手方法 1-5 Rubyを使ってみよう 1-6 コーディングスタイル 1-7 様々なRuby実装 1-8 Rubyのコミュニティとの関わり方 1-9 Rubyの開発について知る Part2 Ruby言語仕様 2章 Rubyの基礎 2-1 Hello, Ruby. 2-2 変数と定数 2-3 条件分岐と真偽値 2-4 式 2-5 クラス 2-6 モジュール 2-7 主な組み込みクラス 2-8 様々な代入式 2-9 例外 2-10 外部ファイルの読み込み 2-11 予約語 2-12 組み込みの変数/定数 3章 制御構造/メソッド/組み込み関数 3-1 演算子 3-2 基本的な制御構造 3-3 例外処理 3-4 大域脱出 3-5 メソッドの定義と呼び出し 3-6 基本的な組み込み関数 4章 クラスとモジュール 4-1 クラス 4-2 モジュール 4-3 オブジェクト 5章 主な組み込みクラス/モジュール 5-1 Numeric 5-2 String 5-3 Regexp 5-4 Comparable 5-5 Enumerable 5-6 Time 5-7 IO・File 5-8 Dir 5-9 Thread 5-10 Fiber 5-11 Process 5-12 Struct 5-13 Marshal 5-14 ObjectSpace Part3 メタプログラミング 6章 Rubyのクラスオブジェクト 6-1 Classクラスからクラスを作る 6-2 クラスオブジェクト 6-3 特異クラス 6-4 メソッド探索方法 6-5 Module#prepend 6-6 Refinements 7章 動的なプログラミング 7-1 オープンなクラス 7-2 BasicObject#method_missing 7-3 eval 8章 Procオブジェクト 8-1 Procクラス 8-2 Proc#new以外のProcオブジェクトの作り方 8-3 Proc.new/Kernel.proc/Kernel.lambda 8-4 Rubyでのクロージャ 9章 Methodクラス 9-1 Methodオブジェクト 9-2 MethodクラスとUnboundMethodクラス 9-3 MethodオブジェクトとProcオブジェクト 10章 Rubyでのリフレクションプログラミング 10-1 オブジェクトについて調べる 10-2 クラスについて調べる 10-3 イベントをフックする Part4 標準添付ライブラリ 11章 ライブラリ 11-1 マルチスレッドプログラミング(thread) 11-2 より手軽な非同期プログラミング(fiber) 11-3 ファイル/ディレクトリ操作を極める(pathname/fileutils/tmpdir/tempfile) 11-4 特定のフォーマットのテキストデータを手軽に扱う(yaml/json/csv) 11-5 上級者のための文字列オブジェクト(stringio) 11-6 集合で遊ぶ(set) 11-7 もっと詳しく,日付と時刻(time/date) 11-8 シンプルなHTTPクライアント(net/http) 11-9 最も基本的なテンプレートライブラリ(erb) 11-10 Rubyのベンチマークを簡単に(benchmark) 11-11 ログファイルを取り扱う(logger) 12章 組み込みツール 12-1 irb 12-2 RDoc 12-3 Rake 12-4 RubyGems Part5 実践プログラミング 13章 gemパッケージの作り方 13-1 雛形の生成 13-2 gemspecについて 13-3 gemパッケージの作成 13-4 Rakeタスク 13-5 C言語でライブラリの作成 14章 よく使われる標準外のツール 14-1 Bundler 14-2 Capistrano 14-3 YARD 14-4 Pry 15章 コマンドラインアプリケーション開発 15-1 作成するTodo管理アプリケーションについて 15-2 Todo管理アプリケーションを作成する前に 15-3 CLIアプリケーションの作成 15-4 データベースアクセス処理とCommandクラス 15-5 コマンドラインからの引数解析 15-6 Commandクラスとの結合 15-7 Todo管理アプリケーションの完成とgemパッケージ化 16章 Webアプリケーション開発 16-1 Webアプリケーションを取り巻く環境 16-2 Todoアプリケーション 2.0.0で利用するライブラリ 16-3 Webインターフェースの追加 16-4 再び todoコマンド 16-5 Todoアプリケーション 2.0.0 の完成
本の出版までの流れ
執筆の話を頂いたのははるか昔で2011年の2月頃でした。パーフェクトPythonの著者でもある@everes 親分に「お前本書きたいって言ったけどRubyの本どうよ」みたいな感じで編集者さんに紹介してもらったのでした。本を書いてみたいとかは10年くらい前から言っているんですけど、こういうのは言い続けてみるもんですね……。
このパーフェクトシリーズというネームバリュー*1とボリュームを一人で書くのは無理だというのは明白だったわけで、その後は一緒にチームでやっていけそうな人を探して、なんとかかんとかここまでやってきました。当時は 日本Ruby会議2011のレポート班などもやっていたので、実際に執筆を開始したのはそれが終わってから、2011年の9月くらいからですね。ホント、発売までまる二年掛かっていて何をやっているんだ感ありますね。反省しております。。。
最終的に思ったのは、項レベル*2まできちんと書く内容をブレークダウンしたり、作成するサンプルソースの方を先に完成させてから*3文章を書くと、後戻りが少なくて良いかなと思いました。慣れてくればある程度の粒度でも行けるかもしれませんが、如何せん慣れてない人が書くので*4ゴールがかなり見える状態まで持って行ってから書かないと、途中で破綻してやりなおしたりすることになってしまうんですね。我々の普段の仕事と同じで、設計が重要です*5。
本を執筆する際に使ったテクノロジーについて
今はmarkdown2inaoとかも話題になっていて、markdownで書けば良いのでは?みたいな感じがありますが、僕らはReVIEW*6を使いました。書籍用ということもあり、パートや章、節といったアウトラインやリスト1.1みたいな番号がきちんと連動して出力されるので便利でしたね*7。
GitHubはレビューで大いに活用しました*8。また、執筆後半の細々とした作業(例えば著者略歴を書く、など)はissueでやりとりできたのでそれも良かったです。最初はチャットワークスとかスカイプとか色々試してみたのですが、結局FBのメッセージやグループで情報や状況のやりとりは行い、原稿など成果物のやり取りはGithubという形に落ち着きました。
Jenkinsはビルドするように使っていたものの、あまり運用に載せられなかったのは、心残りですね……。ビルドエラーの通知や成果物をDropboxに置いて最新版を見るようにする、とかできれば良かったなぁと思っています。
そんなわけで
この本を読んで得るものがあった、といってもらえれば、とても嬉しいです。
ちなみに、執筆時はこんな感じでwatchrを使ってreviewファイルを監視し、HTMLへビルドしてそれを参照するような感じでした(左側のgVimで原稿を書き、右側のvimではサンプルソースを書いてる)。
執筆メンバーの大半が書籍を書くというのは初めての経験だったので手探りでの作業も結構あって*9大変だったり迷惑掛けたりもしましたが、ここまでこれて良かったです。また、本書を書くにあたってレビューをしてくれた皆様のおかげでより良い本にすることができました。本当にありがとうございました。
ここまで読んでくれた方へ
もうパーフェクトRubyを読みたくて読みたくて仕方ないですよね?さあAmazonでポチってしまいましょう!!
- 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/10
- メディア: 大型本
- この商品を含むブログ (1件) を見る
パーフェクトPython (PERFECT SERIES 5)
- 作者: Pythonサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2013/03/05
- メディア: 大型本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (8件) を見る
追記
本を読んでくれた人、ぜひ感想をお手持ちのブログやAmazonのレビュー欄に書いてください〜
*1:果たして自分に書けるのか、みたいな不安もありました……
*2:パート→章→節→項という見出しレベルなのだ
*3:もちろん、ある程度作成していたのだけど、もっと時間を掛けてでもここをしっかり固めるべきだったと思う
*4:しかもブログのような一気に書くものじゃなくて長いスパンのものなので
*5:なんかもう当たり前すぎる結論である……
*6:ちなむと、ReVIEWでもinaoフォーマットで出力できるよ
*7:review-indexでおおよその規模感を把握できたりできたのも良かった
*8:ビルドしたテキストをPull Requestでメンバーに通知する形でやってました
*9:文章書かなきゃいけないのに便利Rakeタスク作って満足してしまったり……