タイトル【今から始めるCocoaプログラミング】抽選ソフトが簡単に作成できた(2)カテゴリーCocoa, 今から始めるCocoaプログラミング
作成日2001/3/8 16:37:24作成者新居雅行
□プログラムを行う
実際にはあれこれ試行錯誤をしているのだが、ここは説明がスムーズに行くように(笑)、とにかくユーザインタフェース部分をInterface Builderで作り込み、そこからプログラムにかかったことにしよう。連載の以前の部分で説明したように、Interface Builderで定義した各種オブジェクトをプログラムで操作するために、まずは新たに1つのクラスを定義する。特に意図はないので、NSObjectを継承したクラスMyDrawerを作成した。クラスでは、次のようなアウトレットを定義した。以下のオブジェクトとアウトレットを結ぶことにより、Javaのクラス内で、ウインドウに表示されたボタンやテキストフィールドにアクセスできるようになるというわけだ。

 drawingButton:「抽選!」ボタン
 maxNumber:「最大値」のテキストフィールド
 pastNumbers:いちばん下にある記録のテキストフィールド
 resultNumber:中央のでっかい文字を出すテキストフィールド

一方、MyDrawerクラスには、以下のようなアクションを定義しておく。アクションの目的もあわせて示しておこう。

 goDrawing():「抽選!」ボタンをクリックした
 initNumberSequence():「初期化」ボタンをクリックした
 insertNextLine():「区切り文字を挿入」ボタンをクリックした

こうして定義したMyDrawerクラスをJavaで作成する場合には、クラスのInspectorを表示して、AttributesにあるLanguageをJavaに変換しておこう。そして、Create Filesを行い、ソースファイルのMyDrawer.javaを作成する。さらにInstantiateでインスタンス化を行う。
インスタンス化を行ったMyDrawerと、ウインドウ内の各オブジェクトを結合する。たとえば、「抽選!」ボタンからcontrolキーを押しながら、インスタンス化したMyDrawerのアイコンのところまでドラッグすることで、「抽選!」ボタンのtargetというアウトレットと、MyDrawerのgoDrawingアクションを結合するという具合だ。逆に、MyDrawerからcontrolキーを押しながらドラッグして、ウインドウ上の「抽選!」ボタンまでドラッグし、MyDrawerのアウトレットであるdrawingButtonと結合する問いう具合である。いずれにしても、MyDrawerで定義したアウトレットとアクションはすべてなにかに結合されるようにする。
以上の作業は以前の連載で細かく説明したところなので、今回は細かい説明は割愛させてもらう。

□Javaのプログラム作成を行う
別掲の記事に、MyDrawer.javaのプログラムリストを示した。Interface BuilderでとにかくGUI部分は出来上がっているので、後はデータ処理部分だけを組み立てればよい。アウトレットに対応する変数がObject型になっているので、実際にはプログラムを作成しやすいように、NSTextFieldなどの型にキャストした変数を使っているのが1つのポイントだ。番号をランダムに表示するには、番号の数だけ配列numを用意する。最初はnum[0]には1、num[1]には2、num[2]には3といった連番を入れる。そして、その配列からランダムに2つの要素を取り出して、値を入れ替えることを要素の数の10倍の回数だけ行うことで、シャッフルしている。だいたい、これでそこそこランダムになるようである。
これで最低限の抽選作業はできるようになったと言えるだろう。いろいろ課題はあるし、もう少し欲張ったところでつまづいたところもある(ソースに残骸が…)。しかしながら、以前の【今から始めるCocoaプログラミング】のシリーズで示したことだけを利用して、このようにアプリケーションが簡単に作成できるということを示すことはできたと思われる。うまくいかなかった作業を差し引くと、この程度のアプリケーションは1時間くらいでできるというところだ。もちろん、手慣れていれば、もっと速いと思われる。
関連リンクDrawingX - Mac OS Xで抽選会!