ここでは、Rubyを利用して、ファイルから入力し、ファイルへ出力するときの基本的な処理について、述べていきます。一般的には、変数や演算子、制御構造から話を進めることが多いようですが、、ここでは、Rubyのスクリプトの「型」から入っていくことにします。「型」にしたがって、実際にスクリプトを作成し、結果を見ていったほうが理解が早いと考えるからです。
変数や演算子から解説していった場合、覚えることが多い割には、実際に何か結果が得られることが少なく、習得に時間がかかってしまうように思えます。これは、日本において、外国語を学習する場合とよく似ています。特にフランス語やドイツ語などの外国語を学習する場合、日本では、名詞から学習することが多いようですが、いくら名詞を学習しても、「文」が作れないので、結果として退屈な授業になってしまいます。しかし、動詞から学習すれば、人称代名詞を覚えるだけでとりあえず「文」がつくれるため、興味が持続できるのです。
閑話休題(それはさておき)。ここでは、最初にサンプルのスクリプトを示し、少しずつ改変しながら、説明していく方法をとることにします。サンプルをコピーして、実際に動かしてみてください。手足を動かさなければ、スクリプト言語はなかなか習得できません。
なお、スクリプトと入力データのサンプルはこちらにあるので、ダウンロードして利用してください。
基本処理とは、1レコード(1行)ずつ入力して、何らかの処理を行い、1レコード(1行)ずつ出力するスクリプトです。最も基本的なスクリプトであり、さまざまなスクリプトに応用できる重要なスクリプトです。
まず、実行する前に以下の3点について確認してください。それは、1.タブ記号を表示すること、2.行番号を表示すること、3.タブの桁数を4桁に設定すること、です。
スクリプトは一定のルールさえ守れば、多少見にくくても、コンピュータで処理することは可能ですが、人間にとっては、ある程度きれいに揃っていたほうが作成しやすく、また、修正もしやすいのです。とはいえ、前行とそろえるために、スペースを入力するのは、何かと煩雑です。
このような場合、[タブ]キーを利用すると、スクリプトが見やすくなります。具体的には、「2-1-1.スクリプトの基本形」の中のスクリプトを参照してもらうとわかりますが、このような形にそろえるためには、スペースを入力するよりも、[タブ]キーでそろえたほうが格段に入力しやすいのです。その際、[タブ]キーを押すと、多くのテキストエディタでは、8桁分として、設定されていることが多いのですが、スクリプトを記述する場合は、4桁にしておいた方が見やすいことが多いのです。
また、Rubyが正しく実行されるかどうか、文法チェック(Syntax Check)を行うと、エラーがある場合、行番号が表示されますので、テキストエディタでも行番号が表示されているほうがスクリプトがわかりやすくなります。
具体的にどのように設定するかは、各テキストエディタごとに、以下のように異なります。これ以外のテキストエディタを利用している場合は、それぞれのヘルプファイル等を参照してください。
1.[ツール]−[現在の設定のプロパティ]の中の「記号」タブで、「Tab表示」をチェックする。
2.[ツール]−[現在の設定のプロパティ]の中の「基本」タブで、「行番号の表示」をチェックする。
3.[ツール]−[現在の設定のプロパティ]の中の「基本」タブで、[Tab/インデント]ボタンをクリックし、「Tabの桁数」を4にする。
1.[その他]−[ファイルタイプ別の設定]の中の「表示」タブで「タブ文字を記号で表示」をチェックする。
2.[その他]−[ファイルタイプ別の設定]の中の「全般」タブで「行番号表示」をチェックする。
3.[その他]−[ファイルタイプ別の設定]の中の「全般」タブで「タブの文字数」の中の4をチェックする。
1.[その他]−[表示設定]の中の「表示色設定」タブで項目名の中から、「タブの表示」をチェックする。
2.[その他]−[表示設定]の中の「表示色設定」タブで項目名の中から、「行番号の表示」をチェックする。
3.[その他]−[表示設定]の中の「編集モード1」タブで「タブ文字数」の中の4をチェックする。
K2Editorの場合は、最初から設定されているままで利用できるので、特に必要はありませんが、強いて言えば、以下のようになります。
1.[その他]−[ファイルタイプ別の設定]で「ファイルタイプ」を「Perl」にし、「タブ文字」をチェックする。
2.行番号は自動的に表示されるので、設定不要。
3.[その他]−[ファイルタイプ別の設定]で「ファイルタイプ」を「Perl」にし、「タブの文字数」の中の4にする。
基本処理の具体的な内容については、以下の各項目を参照してください。
各種のスクリプトの中でもっとも基本的なスクリプトの解説です。入出力のみのスクリプトや条件を付けて必要な項目だけを出力するスクリプトについて解説します。
入力データの中から必要な項目だけを出力するスクリプトについて解説します。リレーショナル・データベースでいうところと、射影(projection)に相当します。
入力データに対して、条件に該当するデータだけを出力するスクリプトについて解説します。リレーショナル・データベースでいうと、選択(selection)に相当します。