CodeZine(コードジン)

特集ページ一覧

10分でできる初めてのRubyプログラム

プログラムを拡張しながらRubyの動作を学習する

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/07/25 14:00

Rubyの多様で強力な機能を理解するには、コードエディタを開いてRubyプログラムを作成するのが一番です。小さな実用的なRubyプログラムを作成する中で、この言語の仕組みを理解することができるでしょう。

目次

はじめに

 Rubyの多様性や強力さについては既にご存知のことでしょう。Rubyをさらに深く知るためには、その背後にある繊細かつ重要な概念を理解しておきたいところです。この記事では、小さな実用的なRubyプログラムを作成します。Rubyは基本的にクラスとオブジェクトを使用するオブジェクト指向の言語であり、動作をカプセル化したクラスを簡単に作成できます。この記事では、最初に簡易版のプログラムを作成し、そのプログラムを拡張していきます。読み進むにつれて、Rubyの仕組みをより深く理解できるようになるでしょう。

 今回のサンプルプログラムには2つの目的があります。

  1. Rubyの機能を紹介する。
  2. 実用的に処理を進める。

 Rubyに関する知識が適度にある読者がこのプログラムを作成するならば、この記事のタイトルにあるように、おそらく10分以上の時間がかかることはないでしょう。Rubyの動作について学習し、どのようなコードが有効であるかを理解できれば、実用的なユーティリティを簡単に作り出すことができます。もちろん、Rubyを扱うのがまったく初めての場合は、このようなプログラムを作成するのに10分以上の時間がかかります。

必要なもの

 このチュートリアルは、Rubyの最新バージョンがインストールされ、コードエディタが使用できることを前提としています。Rubyでプログラミングするのに、特別なIDEは必要ありません。Vim、Emacs、TextMateで十分です。NetBeansとEclipseも使用できます。

目標: ファイル起動の簡便化

 Rubyは本来、テキストベースのコマンドライン指向の言語です。複数のWebアプリケーションフレームワークに加えて、いくつかのGUIライブラリも使用できますが、RubyでのGUI開発はこの記事の範囲を超えています。ここでの目標は、コマンドラインから動作するものを作成することです。

 サンプルプログラムの役割は、ファイル起動の簡便化です。指定されたテキストファイル(おそらくRubyソースコードファイル)を、コマンドラインから関連アプリケーションで起動する手段を作成するものとします。さらに、ファイルの種類とアプリケーションの関連付けを追跡することなくこの動作を実現したいと思います。ご存知のようにこの動作はWindowsで既に実現されていますが、今回のランチャープログラムでは、この単純な動作に追加の機能を実装します。

バージョン0のLauncherコード

 最初に、ほんの数行から成るRubyファイルを作成します。Rubyファイルの拡張子は「.rb」であり、ファイルの冒頭には、Rubyインタプリタのパスを定義する非常に重要な行を記述します。ファイルの名前は「launcher.rb」とします。

#!/usr/local/bin/ruby

# Example application to demonstrate some basic Ruby features
# This code loads a given file into an associated application

class Launcher
end

 シャープ記号(#)で行レベルのコメントを開始できることに注意してください。#の右側に続くすべての文字列はインタプリタの処理対象外になります。この他に、複数のコード行をコメント化する方法もあります。Rubyのクラス名は大文字で始まります。クラスは定数であり、Rubyのすべての定数は大文字で始まります(Ruby構文の詳細については、「Ruby ― A Diamond of a Programming Language?」のPart 1およびPart 2を参照してください)。

 このコードは何の処理も行っていないように見えますが、実行は可能です。実際に試してみれば、コピーが実行されている様子を確認できるでしょう。Rubyスクリプトの実行方法は簡単です。次に示すように、rubyインタプリタを呼び出し、ファイルの名前を渡すだけです。

$ ruby launcher.rb
UnixおよびWindowsでlauncher.rbを実行する方法
 Unixシステムでは、ファイルを実行ファイルとして設定し、直接呼び出すことができます。
$ chmod u+x launcher.rb
$ ./launcher.rb
 この点に関しては、いわゆるワンクリックRubyインストーラを使用しているWindowsユーザーの方が一歩進んでいます。文字どおりワンクリックというわけにはいきませんが、最終的には.rbファイルに対する関連付けが設定されるからです。このため、Windowsユーザーは次の方法でアプリケーションを簡単に実行できます。
C:\some\dir> launcher.rb
 しかし、WindowsファイルエクスプローラからRubyファイルをダブルクリックして起動したとしても、結果はすぐに消えてしまいます。コードはコマンドシェルで実行されますが、これが表示されるのはアプリケーションの実行中だけです。今回のサンプルでは、デモンストレーションの目的上、ファイルはコマンドシェルから実行するのが良いでしょう。

 ファイルを実行すると、コードに何らかのエラーがない限り、何も表示されないまま実行が終了します。何も表示されなければそれでOKです。何も表示されないからと言って、何も起きていないわけではありません。rubyインタプリタはファイルを解析し、クラス定義を検出すると、その定義を使ってオブジェクトを作成できるよう準備します。次のコードでは、前述のコードにクラス定義を追加しています。

#!/usr/local/bin/ruby

# Example application to demonstrate some basic Ruby features
# This code loads a given file into an associated application

class Launcher
end

launcher = Launcher.new

 このコードでは最初に変数(launcher)を作成します。この変数には、Launcherクラスの新しいインスタンスへの参照が割り当てられます。変数の型を宣言する必要はありません。Rubyは強力な動的型を採用しており、変数は任意の型のオブジェクトへの参照を保持できます。Rubyでは、文字列、数値、正規表現を含めて、ほとんどすべてのものがオブジェクトとして扱われます。それぞれに正式な作成メソッド(String.newなど)が用意されていますが、Rubyは常識的な判断に基づいて簡単かつ柔軟に処理しようとします。

 次に、RubyはLauncherクラスのnewを呼び出すことによってオブジェクトインスタンスを作成します。newはクラスメソッドで、Javaのコンストラクタメソッドに似ています。もちろん、空のオブジェクトでは役に立たないので、何らかの動作を追加する必要があります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

著者プロフィール

  • James Britt(James Britt)

    アリゾナ州スコッツデールでRubyコンサルティング会社のNeurogamiを経営。仕事でRailsやNitroのアプリケーションを作成していないときは、Ruby-Doc.orgとRubyStuff.comの運営に携わる。2001年以来Rubyコミュニティで活動し、Rubyに関する書籍を多数執筆。米国...

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5