実用的
Rubyスクリプティング

Scripting with Ruby - cover

オープンドキュメント化しました!! (CC-BY-NC)

本書をカットシステムの同意の元 オープンドキュメント化しました。御利用ください。

実用的Rubyスクリプティング

Scripting with Ruby

著書「実用的Rubyスクリプティング」に関する情報Webです。

本書は、Rubyの文法は覚えたものの、 何が作れるようになるかイメージが涌かなかったり、 作ろうと思っても文法知識以外に何かが足りなくて先に進めない感覚を覚えている人の 案内役となることを願った内容になっています。 この構成は、実際にRubyを覚えたばかりの学習者が実用的なスクリプトを作るときに、 必要となる知識を補充する形で徐々にできあがりました。 きっかけだけ分かれば自習できるようなものは導入部分だけあっさりと、 そうでないものは説明を多めにしています。

読み進め方

本書は、まず練習問題に先に目を通してから本文を読み進めるとよいでしょう。 学習内容が何につながるかを理解してから学ぶのがお勧めです。 さらに言えば、順番は無視して、面白そうなところから始めるとよいでしょう。 たとえば、第9講や第10講を先に見て「ゲームを作る!」 といきなり挑戦するのも悪くありません。 作りたい機能が増えるにつれ前半に書かれた内容がだんだん必要になってきます。

各講の内容を紹介します。

第1講 Ruby文法のおさらい

既にRubyそのものの学習は済ませた後で、 文法的なことをど忘れしてしまったときに役立つ簡略形式です。

第2講 入出力処理の基本

テキストを基本としたデータ処理をするために必要な手順を、 テキストファイルのまま入出力を行なう方法と、 ゲームのセーブ機能のように変数の状態を次回に持ち越せる 永続化を利用する方法で解説します。

第3講 非対話的処理

コマンドラインからではなく非対話的に動くプログラムの代表例として、 ネットワークデーモンから起動されるプログラムの作成例を示します。

第4講 プロセスとスレッド

実用的なプログラムでは、ユーザインタフェース処理も、 その裏の実処理もスムーズにこなしたいものです。 処理の同時実行を実現するプロセスとスレッドについて説明します。

第5講 Rubyらしい記法

プログラムは、同じ処理をするものなら短い程よいものです。 ある程度プログラミングに慣れてきた段階で、プログラムをすっきりさせる Ruby の便利な記法を復習しましょう。

第6講 例外を意識した処理

バグのないプログラムでも、 実戦投入すると条件によっては異常終了すると気付きます。 プログラムが動作するときの様々な悪条件を想定することは、 あまり楽しい作業ではありませんが重要なことです。 事前に配慮すべき条件について理解しましょう。

第7講 周辺ツールの利用

作業を効率化するには「適材適所」が重要です。 有名なフィルタコマンドの基本的な使い方を覚えることで、 自作スクリプトの間口が広がるでしょう。

第8講 シェルの活用

シェルプログラミングの基本を覚えると、 自作スクリプトを含めた色々なツールを効果的に組み合わせることができます。 場合によっては、スクリプトを作らずにシェルでちょっとした制御構造を 書き上げるだけで作業を終えられます。

第9講 自由度の高いCUI

伝統的なCUIライブラリである curses を使うと、コマンドラインインタフェースの操作性を一気に高められます。 Ruby 以外の多くの言語でも利用できる curses は、 慣れない利用者むけのスクリプトや、 ゲームの作成に手軽に利用できます。

第10講 GUIプログラミングの基礎

GUIにおける伝統的なライブラリと言えばTkです。 こちらもRuby以外の多くの言語で利用でき、 比較的短時間の学習で済むため、 GUIプログラムを手っ取り早く作るためには最適です。 また、高機能かつ複雑化した他のGUIライブラリを学ぶ基礎にもなります。

学習時の質問等

本書に関する質問等は巻末の連絡方法に従ってください。

また、それとは別に、本書で想定しているプログラミング環境を 実際に利用したい場合は、会費制のレンタルサーバProjectG をご利用ください。加入してProjectGサーバにログインし、 作成したプログラムを置いて頂ければ、本書の内容を超えない範囲で 直接コメント・添削します。


yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]