最小のプログラム構成
このページでは、プログラムのステップ数が最小の YKLook用プログラムを紹介します。
このプログラム例を使って、YKLook でのプログラミングを説明します。
次のページ以降では、このプログラムを実際に動かしながら、YKLook の理解を進めます。
以下のプログラムは、画面に「最初の一歩」と表示します。
#!/usr/bin/ruby -Ke
require '/opt/yklook/swing'
class FirstStep < YKLookMain
def yki_make_display()
yk_add( YKLookLabel.new( '最初の一歩' ) )
end
end
YKLookMain.yk_mainloop( FirstStep.new() )
|
このプログラムは、実質的には5行目と8行目の2行だけで動いています。
この2行を除いた残りの部分は、
「外部のクラスを扱う Ruby プログラムであれば最低限必要な構造物」
であり YKLook に限らず一般的なものです。
つまり、たった2行だけで、Webアプリとしてもスタンドアロンでも動くGUIプログラムを作ることができたとも言えます。
しかも、このプログラムはOSが変わっても同じように動き、ブラウザにも依存しません。
各行の詳細は、以下の項目で順に説明していきます。
1行目の、行頭が
#!
で始まる記述は、お使いのコンピュータの環境に合わせて指定してください。
この行は YKLook に限らずすべての Ruby プログラムにおける共通事項です。
また、Ruby に限らず多くのスクリプト言語で一般的なものでもあります。
これは起動する Ruby コマンドを、その場所とコマンドオプションを含めて指定するものです。
この例で指定しているコマンドオプションの
-Ke
は文字符号化方法を EUC
にしています。
これもお使いの環境に合わせて指定してください。
参考(コマンドの場所):
OS |
場所の確認方法と指定例 |
UNIX系のOS (Mac OS X を含む) |
type または which コマンドで Ruby の場所を確認。
コマンド例 |
type ruby |
which ruby |
多くの場合、以下のどちらかになっています。
/usr/bin/ruby
/usr/local/bin/ruby
このときの指定例は以下のようになります。
指定例 |
#!/usr/bin/ruby -Ke |
#!/usr/local/bin/ruby -Ke |
|
MS-Windows |
Ruby の場所は、インストールした人に聞いてください。
指定例 |
#!/opt/ruby/ruby -Ke |
#!c:/opt/ruby/ruby -Ke |
#!ruby -Ke |
ディレクトリの区切りは半角の¥や\ではなく半角の/を使ってください。
先頭のドライブの指定を省略できる場合は、なるべく省略してください。
|
参考(文字符号化方法):
指定 |
意味 |
-Ke |
文字符号化方法をEUCとみなす |
-Ks |
文字符号化方法をシフトJISとみなす |
-Ku |
文字符号化方法をUTF−8とみなす |
-Kn |
文字符号化方法を指定しない |
YKLook をダウンロードしたディレクトリの
yklook-misc
の中にそれぞれのファイルがあります。
必要に応じてお使いください。
ファイル名 |
文字符号化方法 |
firststep-e.rb |
EUC(プログラム例と同じ) |
firststep-s.rb |
シフトJIS |
firststep-u.rb |
UTF−8 |
※ |
これらのファイルの改行コードはいずれも LF のみです。
プログラムを実行するのは問題ありませんし、多くのテキストエディタでも問題ありません。
しかし、MS-Windows のメモ帳やワードパッドなどの一部のアプリでは改行コードを正しく認識できません。
そのようなアプリでファイルを開くと、すべてのテキストが改行されずにまとめて1行とみなされ、表示もそのようになります。
|
2行目: require '/opt/yklook/swing' |
2行目の require
は Ruby 組み込み関数で、YKLook をロードしています。
この例は、 /opt
の下に YKLook を置いている場合で、具体的には /opt/yklook/swing.rb
をロードします。
利用者の環境に合わせて YKLook の場所を指定してください。
require
は、YKLook に限らず Ruby で外部のライブラリを使うなら必要なものです。
また、Ruby でのディレクトリ区切り文字は、OSに関係なく / を使うのが一般的です。
MS-Windows の環境でも、半角の¥や\ではなく半角の/を使ってください。
この例では、Ruby でのプログラミング経験が少ない方を想定して絶対ディレクトリ指定しています。
Ruby に精通している方であれば、相対ディレクトリによる指定をされても構いません。
3行目: class FirstStep < YKLookMain |
3行目からのクラス定義によりGUIプログラムを作っていきます。
このクラスは必ず YKLookMain
クラスを継承する形で作っていきます。
この例では FirstStep
というクラス名にしていますが、Ruby の文法に合う名前であれば問題ありません。
このクラスのスーパークラスである YKLookMain
をはじめ、YKLook で定義しているクラス名はすべて「YK
」で始まります。
そしてこれは将来にわたって保証します。
言い換えると、YKLook用アプリの製作者が作るクラス名には「YK
」で始まる名前を付けないほうが無難です。
4行目: def yki_make_display() |
4行目からのメソッド定義により画面を構築します。
この yki_make_display()
というメソッドは YKLookMain
で定義しているメソッドで、画面を構築するためのものです。
YKLook用アプリの製作者はこのメソッドをオーバーライドして、ご自分の画面を構築することになります。
5行目: yk_add( YKLookLabel.new( '最初の一歩' ) ) |
5行目は以下の二つの処理をまとめたものです。
- 「最初の一歩」というラベルを作る
- このラベルをウインドウに追加する
これは以下のように2行に分けて書いたものと同じです。
lab = YKLookLabel.new( '最初の一歩' )
yk_add( lab )
|
YKLookLabel
は、文字やアイコン等のラベルを作って表示するためのGUI部品クラスです。
yk_add()
は
YKLookMain
クラスのメソッドで、引数に指定されたGUI部品をウインドウに追加するものです。
それぞれの詳細は YKLook説明書にありますが、ここでは詳細に立ち入らずに先へ進んでください。
8行目: YKLookMain.yk_mainloop( FirstStep.new() ) |
8行目のメソッド
yk_mainloop()
により実際にウインドウをコンピュータ画面に表示します。
このメソッドは
YKLookMain
クラスのクラスメソッドです。
このメソッドの引数に
FirstStep
クラスのインスタンスオブジェクトを渡します。
すると
FirstStep
の
yki_make_display()
が呼び出されて
画面を構築し、実際にウインドウが表示されます。
重要: |
yk_mainloop()
を呼び出さない限り、YKLook は画面を表示しません。
画面を表示するには、このメソッドを呼び出す必要があります。
|
このプログラム例では、全部で四つのメソッドが出てきました。
-
new()
-
yki_make_display()
-
yk_add()
-
yk_mainloop()
このうち
new()
は、YKLook に限らずすべての Ruby オブジェクトが持っているメソッドです。
残りの三つは YKLook が定義しているメソッドで、その名前は以下の原則に基づいています。
- YKLook が定義するメソッドの名前は、
new()
を除いてすべて「yk
」で始まる
- メソッドの名前が「
yki_
」で始まるものは、YKLook用アプリの製作者が実装(オーバーライド)する可能性がある。もしくは、実装(オーバーライド)することを前提にしている。
- メソッドの名前が「
yk_
」で始まるものは、YKLook用アプリの製作者が呼び出して利用することはあっても、実装(オーバーライド)することはない。
Copyright (c) 2003-2010 YorozuKotowariYa Ltd.