[プログラミング演習(Ruby) >  Rubyでプログラムを書きはじめる前に]

Rubyでプログラミングをするために

ここでは,Rubyでのプログラミングにあたって,知っておくべき基本事項について説明します.

もくじ

Rubyプログラムの実行方法

Rubyプログラムを実行するには,主に2通りの方法があります. まずは1番目の方法を覚えて下さい. これは演習でおそらくすでに何度か使っている(はずの)方法です. 第2の方法は覚えていなくても差し支えありませんが,使いこなせれば,より便利でしょう.

  1. ファイルに記述したプログラムを実行する もっとも一般的な方法です.演習でも主にこの方法を利用します. たとえば,foo.rbに書かれたプログラムを実行する場合には次のようにします.
    $ ruby foo.rb
    ruby(Rubyのインタプリタ)を明示的に指定しなくてもプログラムを実行できるようにする方法もあります(Rubyのプログラム自体を実行可能にする)が,ここでは,その方法については述べないことにします.


  2. 対話的インタプリタirbを利用して実行する
    irbという対話的なインタプリタを使えば, (メモリ機能付きの)電卓を使うような感覚で処理を行うことができます. いろいろなことをちょっとテストしてみるのにも便利です. irbの使い方については次のページを参考にしてみてください.

エラーへの対処

たとえば,次のようなプログラム(has_error.rb)を作って実行したとしましょう.


  a = 1
  c = a + b

すると,次のようなメッセージが表示されるでしょう.
$ ruby has_error.rb
has_error.rb:3: undefined local variable or method `b' for #<Object:0x2ac3ace0> (NameError)
これは,プログラムにエラー(間違い)があることを意味しています. 詳細は省きますが,先頭の「has_error.rb:3:」は, ファイルhas_error.rbの第3行でエラーが発生したことを意味しています. このような場合にはファイルの該当する行をみて, 何がエラーとなったのかを判断してプログラムの修正を行う必要があります. なおエラーの原因は必ずしもエラーが発生した行にあるとは限りません. 他の行のエラーの影響で当該の行でエラーが起きることもありえます.

バグとデバグ

プログラムに潜むエラー(間違い)のことをコンピュータ業界の用語で, バグ(bug)といいます. またプログラムを修正してバグをなくすことを デバグ(debug)といいます.

コメントの利用

プログラムは書いているときはよく分かるものですが, 後から見ると何を書いているのか分からなくなることが少なくありません. また他人が作成したプログラムもすぐに理解することができるとは限りません. そこでプログラムにはコメント(注釈,解説)を自然言語(日本語,英語など)で適宜書いておくことを勧めます.

Rubyでは「#」から行末までは原則として「コメント」とみなされます(例外もあります.それについては今後紹介します). コメントはプログラムとしては無関係なものとして解釈されません(プログラムの実行においては無視されます). 従って,コメントはプログラミング言語の文法に縛られることなく自由に書くことができます.

長いプログラムになると,コメントなしでは, その全体像を把握するのが困難になってきます. たとえプログラムを書いているときには,全て分かっているつもりでも, 一週間後には同じプログラムがまったく読めなくなっている自分を発見するのは, プログラマであれば,誰しも体験することです (だろうと思います.少なくとも日置はたっぷり体験しています). プログラムには,普段からマメにコメントを入れるようにすることを お奨めします.

全ての行にコメントを書く必要はありません(却って分かりにくくなるでしょう). 論理的な単位に対する説明, 解釈するのが難しいであろう部分に対する説明などを適宜入れるようにしましょう.


# すべての行にコメントをつける必要はありません.
# 何事も「中庸」が肝心です.

# aは1,2,3,4を要素とする配列(通常こんなコメントは不要でしょう)
a = [1,2,3,4] #行の途中からコメントを入れても構いません.

## 次のようなものにはコメントを入れておかないと,後で訳が分からなくなります.
## ちなみにこの例がまったく意味不明だからといって恐れることはありません.
## 演習ではこういったデータは扱いません.
LETTER='[A-Za-z]'
LETDIG='[0-9A-Za-z]'
LDH_STR='[0-9A-Za-z\-]+'
DOMAIN_LABEL="#{LETTER}(?:(?:#{LDH_STR})?#{LETDIG})?"
FQDN_REGEX="#{DOMAIN_LABEL}(?:\\.#{DOMAIN_LABEL})*"
POPCONFIG_REGEX=/^(\w+@)?(\d+>)?(#{FQDN_REGEX})(:\d+)?(%#{FQDN_REGEX})?(#\d+)?$/

さきほど述べた通り,コメント部分は,何を書いてもプログラムの動作には,影響しません. したがって,プログラムの一部を一時的に無効にしたいときや,プログラムを書き換えたときに書き換える前の状態を残したいときなどに,その部分をコメントにして対処することもできます. ただし,これはあまりお行儀のよい方法とは言えません. コメントには本来の意味のコメントだけをつけるようにするべきです.

プログラムに説明をつける方法として,「#」でコメント行を入れる他に 「=begin...=end」で行を括る方法もあります.


=begin

helloworld.rb:
このプログラムを実行すると世界に挨拶をします.
printを使ったこのプログラムはもっとも一般的な(平凡な)ものでしょう.

=end

print "Hello, World!"

「=begin」から「=end」までの行はコメントとみなされます. またそれぞれ単独の行の左端に書く必要があります. なおこのコメントには特別な用途があります(それを気にしなくても使えます).

また「__END__」とだけ書いてある行があれば, そこでプログラムは終わりとみなされます. その行より後には何を書いてもプログラムには関係なくなります. なお「__END__」以降は単に無視されるのではなくデータ領域として利用することができます.

プログラムでの日本語の利用について

日本生まれのRubyは日本語の処理をキチンとしてくれます. そこでRubyプログラムではかなり自由に日本語を使うことができますが, 基本的には,日本語を使うのは次の2点に限ることをすすめます.

これら以外にも日本語を利用できるのですが,混乱のもとになりますので避けた方が無難です.

[プログラミング演習(Ruby) >  Rubyでプログラムを書きはじめる前に]