Riceソースコードの必須要件
このページの目的
先に述べたように、Cookerは、"Webオートメーション"や"Webスクレイピング"といった分野に分類されるソフトウェアです。
Webページを直接操作するためにRice言語で書かれたスクリプトを読み込んで実行します。更に、スクリプトで行うのはページ操作だけではありません。Cooker自身の設定もスクリプト経由で行います。
Cooker は設定画面の様なユーザーインターフェースを持ちません。その代わりに、自身の設定項目をRiceクラスの属性という形で外部に公開しています。
Cookerでは、全てをRiceスクリプトで行います。ですから、先ずは正しく記述されたRiceスクリプトが必要になります。
目次:
ファイル要件
Riceのソースファイルが満たすべき要件を以下に示します。
Cooker用のRiceスクリプトファイルは、UTF-8でエンコーディングされたテキストファイルで、".cook"拡張子を待たなければならない。
特に、マルチバイト文字を使う地域のユーザーは注意してください。UTF-8でエンコーディングされない場合は、スクリプトからのメッセージが文字化けする可能性があります。
Cookerに関連するテキストファイルはUTF-8でエンコーディングを統一することをお勧めします。
Riceスクリプトに読み込まれるJavaScriptソースコードやテキストファイルの間でエンコーディングが混在すると、予期せぬ文字化けを起こす可能性があります。
注意深く処理すれば、異なるエンコーディングを矛盾なく扱うことはできますが、エンコーディングを統一しておけば、そのような手間は不要です。
RiceスクリプトファイルのエンコーディングはUTF-8と決まっているので、他のテキストファイルもUTF-8でエンコーディングすることをお勧めします。
最低限のRiceスクリプト
先ずは、最低限のRiceスクリプトを示します。
1: | class main |
2: | open method void start() |
3: | endmethod |
4: | endclass |
このスクリプトはCooker上で問題なく実行することができます。ただし、実行する意味は有りません。
このスクリプトは、外部に対して意味のある動作を何一つしていないので、実行しても何も起こらないからです。
そんな最低限で無意味なスクリプトですが、CookerのRiceスクリプトとして重要な点をいくつも含んでいます。
以下で、このスクリプトに含まれる重要な点を見ていきましょう。
クラス定義とmainクラス
上記のスクリプトの例を見てください。"class" というワードで始まり"main"というワードが続き、"endclass"というワードで終わっています。
この、"class"で始まり"endclass"で終わるワードの羅列を、Riceではクラス定義と呼びます。この"class"と"endclass"はクラス定義の始まりと終わりを示す特別なワードであり、このような特別なワードをRiceでは"キーワード"と呼びます。
Riceにおいてクラス定義は最も重要な要素です。なぜなら、Riceスクリプトを構成する一番大きな塊がクラス定義だからです。
クラス定義では、classキーワードに続くワードはクラス名の指定です。上記の例は、classキーワードに"main"というワードが続いているので、mainクラスの定義になります。
mainクラスは特別なクラスです。Riceスクリプトには、mainクラスの定義が必須になります。
上記の例は、mainクラスの定義だけですが、有効なクラス名で他のクラス名と異なるならば、いくつでもクラスを定義できます。
start() メソッド
上記のスクリプトの例の二、三行目を見てください。ここがクラス定義の中身になります。
ここでは、start()メソッド、つまり、"start"という名前を持つ"引数"のないメソッドを定義しています。
メソッド定義の規則についての詳細はメソッドを参照してください。ここでは、下図のようなものだと思ってもらえば、それで十分です。
ここで大事なのは、mainクラスのstart()メソッドが特別なメソッドであるということです。
スクリプトの実行方法は後述しますが、CookerはRiceスクリプトの実行を指示されると、先ず、mainクラスのstart()メソッドを実行しようと試みます。
これがスクリプトにあれば実行しますし、無ければエラーを出して実行を中止します。
Cookerでは、このmainクラスのstart()メソッドがスクリプト開始の起点となります。全てのスクリプトがこの形を備えなければいけません。
mainクラスのstart(browser)メソッドもスクリプト開始の起点となります。
詳細についてはentry ポイントを参照してください。
コメント
上記のスクリプトの例から、本格的にスクリプトを組み上げる前に説明しておいた方が良い項目が幾つかあります。
その最初が"コメント"です。コメントとはプログラムの実行に関与しない、人間のための注釈です。
Riceは二種類のコメントを持ちますが、ここでは"単行コメント"だけを覚えれば十分です。"単行コメント"は下図のようになります。
二重スラッシュ(//)以降から行末までは実行時に無視されるので何を書いても大丈夫です。
end() メソッド
追加の説明項目の二つ目がend()メソッドです。先ず、end()メソッドの形を以下に示します。
1: | open method void end() |
2: | endmethod |
start()メソッドの対になるのがend()メソッドです。start()メソッドがスクリプト開始時に呼ばれるのに対して、end()メソッドはスクリプト終了時に呼び出されます。
ただし、start()メソッドの定義が必須なのに対して、end()メソッドのそれは任意です。
つまり、CookerはRiceスクリプトの実行の終了点で、mainクラスのend()メソッドを実行しようと試みます。これがスクリプトにあれば実行します、無ければ何もしません。
mainクラスのend(browser)メソッドもスクリプトの終了時に呼び出されます。
詳細についてはexit ポイントを参照してください。
テンプレート
最低限のRiceスクリプトに上記の項目を追加したものを以下に示します。これが、以降のチュートリアルのテンプレートとなります。
1: | // mainクラスの定義 |
2: | class main |
3: | // start()メソッドの定義。必須。 |
4: | open method void start() |
5: | // 実際の処理をここへ記述。 |
6: | endmethod |
7: | |
8: | // end()メソッドの定義。任意。 |
9: | open method void end() |
10: | // 必要ならば処理をここへ記述。 |
11: | endmethod |
12: | endclass |
スクリプトの実行
Cookerで、Riceスクリプトを実行する方法は、四つあります。
第一の方法は、Cookerのアイコンに.cookファイルをドロップすることです。
第二の方法は、スクリプトタイルに.cookファイルをドロップすることです。
第三の方法は、ファイル選択ダイアログから.cookファイルを選択することです。
第四の方法は、ショートカットキーです。
以下に、第二の方法を簡単に説明します。
Cookerを起動した後、スクリプトタイルに.cookファイルをドロップしてください。
スクリプトタイルとは、ウインドウ右側の彩色された領域です。ここに、エクスプローラーから .cookファイルをドラッグアンドドロップすればスクリプトが実行されます。
スクリプトタイル
注意 : ブラウザ領域に .cookファイルをドラッグアンドドロップしてもスクリプトは実行されません。ファイルの内容が表示されるだけです。