Webアプリとして起動・終了
ここでは、
最小のプログラム構成
のページで示したプログラム例を基に説明します。
このプログラムのファイル名を
firststep.rb として説明します。
そして、このファイルをWebサーバのCGIスクリプトとして起動します。
Webサーバの設定によっては、拡張子が「
.cgi 」のものしか受け付けない等の制限があります。
その場合は拡張子を .cgi に変更してください。
また、その他の注意事項等があれば、適宜お使いのWebサーバの設定に合わせて変更してください。
YKLook 用の Ruby プログラムに限ったことではありませんが、WebサーバのCGIスクリプトとして起動するには、そのプログラムファイルを、Webサーバによって決められた場所に置く必要があります。
この保存場所は、大きく分けて以下の二つになります。
- CGIスクリプト専用の場所(いわゆる cgi-bin )に置く
- HTMLファイルを置く場所に、CGIスクリプトも同じように置く
お使いのWebサーバの設定に合わせて、いずれかの場所に Ruby プログラムを置いてください。
また、Webサーバの設定によっては、拡張子が「
.cgi 」のものしか受け付けない等の制限があるかもしれません。
その場合は拡張子を .cgi に変更してください。
また、その他の注意事項等があれば、適宜お使いのWebサーバの設定に合わせて変更してください。
このページの次項以降では、下記の場所のどちらかに保存しているものとして説明します。
- CGIスクリプト専用の場所に保存
/var/http/cgi-bin/demo/firststep.rb
URLは、 http://www.aaaa.jp/cgi-bin/demo/firststep.rb
- HTMLファイルと同じ場所に保存
/var/http/html/demo/firststep.rb
URLは、 http://www.aaaa.jp/demo/firststep.rb
(WebサーバのHTMLファイル保存場所の基点を /var/http/html に設定した場合)
Webサーバの設定によっては、それぞれのユーザごとに割り当てられた場所に保存することもあります。
例えば、ユーザ yorozu のホームディレクトリの下の
public_html
というディレクトリの中に
firststep.rb を保存しておき、これをブラウザから
http://www.aaaa.jp/~yorozu/firststep.rb というURLでアクセスするような設定もよくあります。
実際にどのような設定になっているのかは、お使いのWebサーバの設定を確認してください。
(※)Mac OS X に標準装備されている Apache の場合は、
public_html ではなく
Sites になります。
YKLook をダウンロードしたディレクトリの
yklook の中に、
yklookfar.jar というファイルがあります。
これはWebブラウザ側で Java アプレットとして動作する YKLook 専用のGUIライブラリです。
このファイルを、Webブラウザから閲覧可能な場所つまりHTMLファイルを置く場所のどこかにコピーしてください。
CGIスクリプト専用の場所(いわゆる
cgi-bin )に置くことはできません。
ここでは例として、前項と同じように、WebサーバのHTMLファイル保存場所の基点が
/var/http/html に設定されているものとして説明します。
これは一般にドキュメントルート (
DOCUMENT_ROOT ) と呼ばれます。
この
/var/http/html の下に
tools
というディレクトリを作り、そこに
yklookfar.jar をコピーしたとします。
フルパスで書くと、
/var/http/html/tools/yklookfar.jar になります。
このとき、Webブラウザからは
http://www.aaaa.jp/tools/yklookfar.jar
というURLでアクセスできるようになります。
補足説明: |
YKLook をダウンロードしたディレクトリの yklook の下に
x-gaiji というディレクトリがあり、この中にも yklookfar.jar
があります。
これは、Mac OS X に特有のシステム外字に対応する機能を含んでいます。
そのような外字に対応する必要があるときは、こちらのライブラリを使うことになります。
このページのプログラム例 firststep.rb には必要ありません。
参考:
YKLook用アプリの応用 > 文字符号化方法 → シフトJIS・マック |
前項で確認した
yklookfar.jar の場所を、Ruby プログラム内に定義してください。
具体的には、
YKLookMain
クラスのメソッド
yki_ht_farpath()
を実装・オーバーライドすることになります。
例 |
class FirstStep < YKLookMain
... 他のメソッド定義 ...
def yki_ht_farpath() # 追加
return ['/tools', nil] # 追加
end # 追加
end
|
yki_ht_farpath()
は、
yklookfar.jar の場所を戻り値で示すためのメソッドです。
このメソッドの戻り値で指定する場所は、ローカルディスクでの表現ではなくURLで表現したときの場所です。
上のプログラム例では
http://www.aaaa.jp/tools/yklookfar.jar を指定したことになります。
これは、Webサーバで設定してあるドキュメントルート直下の
tools
というディレクトリの中に
yklookfar.jar があることを示しています。
以下にその他の指定例を紹介します。
戻り値 |
yklookfar.jar の場所 |
['/',nil] |
ドキュメントルート直下 |
['/yklook',nil] |
ドキュメントルート直下の yklook の中 |
['/tools/yklook',nil] |
ドキュメントルート直下の tools の下の yklook の中 |
['/~yorozu',nil] |
ユーザ yorozu の下(注意!先頭の / の記述を忘れずに!) |
['/~yorozu/yklook',nil] |
ユーザ yorozu の下の yklook の中(注意!先頭の / の記述を忘れずに!) |
[nil,nil] |
Ruby プログラムと同じディレクトリ(※) |
['yklook',nil] |
Ruby プログラムと同じディレクトリの下の yklook の中(※) |
['tools/yklook',nil] |
Ruby プログラムと同じディレクトリの下の tools の下の yklook の中(※) |
['..',nil] |
Ruby プログラムのすぐ上のディレクトリ(※) |
['../yklook',nil] |
Ruby プログラムのディレクトリと同じ階層レベルにある yklook の中(※) |
['../tools/yklook',nil] |
Ruby プログラムのディレクトリと同じ階層レベルにある tools の下の yklook の中(※) |
(※) |
Ruby プログラムをCGIスクリプト専用の場所(いわゆる cgi-bin )に置いているときは、Ruby プログラムのディレクトリを基準にした指定方法は使えません。 |
このメソッドの戻り値は必ず配列で、ふたつめの要素は
nil
にしてください。
この Ruby プログラムをスタンドアロンで起動したときは、上のメソッドは単に無視されます。
YKLook が定義しているメソッドのうち、メソッド名が
yki_ht_
で始まるものは、Webアプリとして起動したときのみ意味を持ち、スタンドアロンで起動したときは何も影響しません。
補足説明: |
yki_ht_farpath() を実装しなくても済む方法もあります。
しかし YKLook の初心者は動作確認が確実にできるように、上述のとおりメソッドを実装してください。
また、 yki_ht_farpath() を実装する代わりに、環境変数
YKLOOK_FARPATH を設定する方法もあります。
この方法を使う場合、上のプログラム例と同じ場所を指定するには、この環境変数の値として /tools を設定することになります。
環境変数を設定する方法は、Webサーバにより異なりますので、お使いのWebサーバの説明書をご覧ください。 |
Ruby プログラムの1行目で指定しているコマンドの記述が正しいかどうかを確認してください。
これが間違っていると、Webサーバはこのプログラムを起動できません。
これは YKLook に限らず一般のCGIスクリプトでも同じです。
(参考:
最小のプログラム構成 → 1行目 )
お使いのコンピュータがUNIX系(Mac OS X を含む)のときは、
chmod
コマンドで実行権を付けてください。
この実行権がないと、Webサーバはこのプログラムを起動できません。
これは YKLook に限らず一般のCGIスクリプトでも同じです。
Ruby のコマンドオプション
-c を使って構文をチェックしてください。
もしエラーが出力されたら、プログラムの該当箇所を修正してください。
構文上は正しいはずなのにエラーが出るときは、プログラム1行目のコマンドオプションの指定で文字符号化方法が合っているかどうかを確認してください。
また、Ruby の動作環境が合っているかを確認してください。
(参考:
動作環境について )
YKLook をダウンロードしたディレクトリの
yklook-misc の中に、
yktest-cgi.rb というファイルがあります。
このファイルを、
firststep.rb と同じ場所にコピーしてください。
そしてその場所で、以下のように実行してください。
例 |
ruby yktest-cgi.rb firststep.rb |
もし正常に実行できたときは、コマンドプロンプトを表示している同じウインドウに HTML 文を出力します。
このとき、最後に「</html>」が出力されていれば、たとえ途中で文字化けしているように見えても正常です。
もし正常に実行できずエラーが出力されたら、プログラムの該当箇所を修正してください。
WebブラウザからURLを指定して Ruby プログラムを起動してください。
このページの例では、Ruby プログラムを保存している場所によって以下のようなURLになります。
- CGIスクリプト専用の場所に保存
/var/http/cgi-bin/demo/firststep.rb
URLは、 http://www.aaaa.jp/cgi-bin/demo/firststep.rb
- HTMLファイルと同じ場所に保存
/var/http/html/demo/firststep.rb
URLは、 http://www.aaaa.jp/demo/firststep.rb
(WebサーバのHTMLファイル保存場所の基点を /var/http/html に設定した場合)
正常に起動できたときは、ブラウザのウインドウ内に「最初の一歩」と表示します。
もしエラーが出力されたら、プログラムの該当箇所を修正してください。
メソッド
yki_ht_farpath()
が間違っていないか確認してください。
Webサーバのエラーログ等も調べてみてください。
(参考:
エラーの解決・デバッグ > ログファイル → Webサーバのログファイル)
また、Java や Ruby の動作環境が合っているかを確認してください。
(参考:
動作環境について )
ブラウザのウインドウを閉じてください。プログラムを終了します。
ウインドウを閉じるには、ウインドウの左上または右上にある小さなボタンをマウスでクリックしてください。
Mac OS X の場合はウインドウ左上の赤丸ボタン、MS-Windows の場合は右上の「X」ボタンになります。
ブラウザウインドウ内の表示領域の大きさを変えてみましょう。
下記のとおり、プログラム例の
FirstStep
クラスに3行を追加してください。
例 |
class FirstStep < YKLookMain
... 他のメソッド定義 ...
def yki_size() # 追加
return [150,80] # 追加
end # 追加
end
|
yki_size()
は、ブラウザウインドウ内の表示領域の大きさを戻り値で示すためのメソッドです。
YKLookMain
のデフォルト実装では
[400, 300]
を返し、これは横幅を 400 ピクセルに、縦の高さを 300 ピクセルにします。
これをオーバーライドして、横幅を 150 ピクセルに、縦の高さを 80 ピクセルにしたのがこの例です。
追加したら、このプログラムをWebブラウザから起動してみてください。
ブラウザウインドウ内の表示領域の大きさが、以前よりも小さくなっているはずです。
ブラウザウインドウのタイトルを表示してみましょう。
下記のとおり、プログラム例の
FirstStep
クラスに3行を追加してください。
例 |
class FirstStep < YKLookMain
... 他のメソッド定義 ...
def yki_title() # 追加
return 'ふぁ〜すとすてっぷ' # 追加
end # 追加
end
|
yki_title()
は、ウインドウのタイトルを戻り値で示すためのメソッドです。
YKLookMain
のデフォルト実装では
nil
を返し、このときタイトルはありません。
これをオーバーライドしてタイトルを返すようにしたのがこの例です。
追加したら、このプログラムをWebブラウザから起動してみてください。
ウインドウのタイトルが、指定の文字列で表示されているはずです。
Webブラウザのウインドウとは別に、独自のウインドウを開いて、そちらで画面表示や操作をすることができます。
下記のとおり、プログラム例の
FirstStep
クラスに3行を追加してください。
また、
require
も1行追加してください。
例 |
require '/opt/yklook/swing'
require '/opt/yklook/swingframe' # 追加
class FirstStep < YKLookMain
... 他のメソッド定義 ...
def yki_ht_opener_valid() # 追加
return true # 追加
end # 追加
end
|
注意: |
require の指定に swingframe
を追加するのを忘れないでください。
|
yki_ht_opener_valid()
は、Webブラウザのウインドウ内に表示するか、独立ウインドウ形式にするかどうかを戻り値で示すためのメソッドです。
YKLookMain
のデフォルト実装では
false
を返し、このときはWebブラウザのウインドウ内に表示します。
これをオーバーライドして
true
を返すようにし、独立ウインドウ形式を指定したのがこの例です。
追加したら、このプログラムをWebブラウザから起動してみてください。
ブラウザウインドウ内の表示領域にはボタンがひとつだけ表示されたはずです。
このボタンを押すと、別のウインドウを開いてその中で「最初の一歩」を表示します。
このボタンを含め、いろいろとカスタマイズできますが、ここでは上の紹介のみとします。
参考:
YKLook用アプリの応用 > Web独立ウインドウ形式
注意: |
上の例にもあるとおり、このメソッドを使うときは、 swingframe
をロードするのを忘れないでください。
|
Webサーバの設定によっては、URLからファイル名を省略することができます。
これは YKLook に限らず一般のCGIスクリプトでも同じです。
プログラムのファイル名が
index.cgi や
index.rb のときに
URLを省略できるように設定されていることが多いです。
ファイル名 |
URL |
firststep.rb |
http://www.aaaa.jp/demo/firststep.rb |
index.rb |
http://www.aaaa.jp/demo/index.rb
http://www.aaaa.jp/demo/
(後者のように省略できることもある。末尾の「/」も省略できることがある) |
実際に省略できるかどうかは、Webサーバの設定やサイトの運用方法により異なります。
Copyright (c) 2003-2010 YorozuKotowariYa Ltd.