YKLook説明書 YKLook用アプリの最初の一歩 Webアプリとして起動・終了 前へ   次へ
   

Webアプリとして起動・終了


ここでは、 最小のプログラム構成 のページで示したプログラム例を基に説明します。
このプログラムのファイル名を firststep.rb として説明します。
そして、このファイルをWebサーバのCGIスクリプトとして起動します。
Webサーバの設定によっては、拡張子が「 .cgi 」のものしか受け付けない等の制限があります。
その場合は拡張子を .cgi に変更してください。
また、その他の注意事項等があれば、適宜お使いのWebサーバの設定に合わせて変更してください。



プログラムの保存場所を確認

YKLook 用の Ruby プログラムに限ったことではありませんが、WebサーバのCGIスクリプトとして起動するには、そのプログラムファイルを、Webサーバによって決められた場所に置く必要があります。
この保存場所は、大きく分けて以下の二つになります。
お使いのWebサーバの設定に合わせて、いずれかの場所に Ruby プログラムを置いてください。
また、Webサーバの設定によっては、拡張子が「 .cgi 」のものしか受け付けない等の制限があるかもしれません。
その場合は拡張子を .cgi に変更してください。
また、その他の注意事項等があれば、適宜お使いのWebサーバの設定に合わせて変更してください。

このページの次項以降では、下記の場所のどちらかに保存しているものとして説明します。
Webサーバの設定によっては、それぞれのユーザごとに割り当てられた場所に保存することもあります。
例えば、ユーザ yorozu のホームディレクトリの下の public_html というディレクトリの中に firststep.rb を保存しておき、これをブラウザから http://www.aaaa.jp/~yorozu/firststep.rb というURLでアクセスするような設定もよくあります。
実際にどのような設定になっているのかは、お使いのWebサーバの設定を確認してください。
(※)Mac OS X に標準装備されている Apache の場合は、 public_html ではなく Sites になります。


Webブラウザ用 jar ファイルの場所を確認

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・マック


Webブラウザ用 jar ファイルの場所を指定

前項で確認した 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サーバの説明書をご覧ください。


プログラム1行目の #! を確認

Ruby プログラムの1行目で指定しているコマンドの記述が正しいかどうかを確認してください。
これが間違っていると、Webサーバはこのプログラムを起動できません。
これは YKLook に限らず一般のCGIスクリプトでも同じです。
(参考: 最小のプログラム構成 → 1行目


ファイル実行権を確認

お使いのコンピュータがUNIX系(Mac OS X を含む)のときは、 chmod コマンドで実行権を付けてください。
この実行権がないと、Webサーバはこのプログラムを起動できません。
これは YKLook に限らず一般のCGIスクリプトでも同じです。

chmod +x firststep.rb


Ruby 構文チェック

Ruby のコマンドオプション -c を使って構文をチェックしてください。

ruby -c firststep.rb

もしエラーが出力されたら、プログラムの該当箇所を修正してください。
構文上は正しいはずなのにエラーが出るときは、プログラム1行目のコマンドオプションの指定で文字符号化方法が合っているかどうかを確認してください。
また、Ruby の動作環境が合っているかを確認してください。
(参考: 動作環境について


CGI事前チェック

YKLook をダウンロードしたディレクトリの yklook-misc の中に、 yktest-cgi.rb というファイルがあります。
このファイルを、 firststep.rb と同じ場所にコピーしてください。
そしてその場所で、以下のように実行してください。

ruby yktest-cgi.rb firststep.rb

もし正常に実行できたときは、コマンドプロンプトを表示している同じウインドウに HTML 文を出力します。
このとき、最後に「</html>」が出力されていれば、たとえ途中で文字化けしているように見えても正常です。

もし正常に実行できずエラーが出力されたら、プログラムの該当箇所を修正してください。


起動

WebブラウザからURLを指定して Ruby プログラムを起動してください。
このページの例では、Ruby プログラムを保存している場所によって以下のようなURLになります。
正常に起動できたときは、ブラウザのウインドウ内に「最初の一歩」と表示します。

もしエラーが出力されたら、プログラムの該当箇所を修正してください。
メソッド 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 をロードするのを忘れないでください。


URLの省略記法の利用

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サーバの設定やサイトの運用方法により異なります。




   
YKLook説明書 YKLook用アプリの最初の一歩 Webアプリとして起動・終了 前へ   次へ


Copyright (c) 2003-2010 YorozuKotowariYa Ltd.