タイトル【倉橋浩一、じつはWebObjectsで飯食ってます】WebObjectsで掲示板を作る(1)データベースの定義カテゴリーWebObjects, 倉橋浩一、じつはWebObjectsで飯食っています
作成日2001/1/9 14:51:2作成者倉橋浩一
まず最初に....私のところで発売しているWebObjects自習用教材について、何件かお問い合わせをいただきましたので、ちょっと一言。えーと、この連載ではなるべくプログラムを書かないというのを前提にしていますのでわりと簡単なことをやっていますが、自習用教材はもうちょっと難しいです。というよりも、教材はプログラマとしてある程度経験のある方を対象にしたもので、ごりごりJava/WebScriptでプログラムを書きます。ご興味を持っていただいてありがたいのですが、最低でもJavaのソースを読んで何をやっているかわかる程度の知識が必要だと思いますので、ご了承くださいませ。

ただ、何も無いところでJavaの勉強をするよりは、WebObjectsという対象物のあるところでJavaを書く方が修得はラクかもしれません(と、常に宣伝を忘れない倉橋であった)。

■掲示板の仕様を考える
さて、お約束の掲示板、まず、仕様を考えてみます。あれもやりたいこれもやりたいと思うんですが(いや、ホントに)、以下のようなものに絞り込んでみました。

(1)一つのアプリケーションで複数の掲示板を持てるようにする。
(2)ユーザ識別はしない。メッセージの削除は著者のみ可能。
(3)メッセージは時系列順の表示のみ可能。コメントおよびスレッド表示は後日対応。

(1)は、これを実装するためにはJavaで何行か書かなければならないのですが、せっかくサイトを立ち上げるのなら複数の掲示板を平行して動かしたいのが人情ですし、少しはデータベースらしいことをやりたいので付けてみました。

(2)は、データベースとしてユーザの情報は持ちませんが、後日Cookieなどを使ってせめてユーザ名を再入力しないで済むような仕組みくらいは付けましょう。

(3)のコメントおよびスレッド表示、実はそんなに難しくないんですが、まぁ後のお楽しみということで。

....以上、仕様と言うにはあまりにもアバウトですが、この記事の目的はシステム設計ではなくてWebObjectsの紹介である、ということでご容赦ください。

■プロジェクトを作る
アプリケーションの名前は、SimpleBoardにします。ProjectBuilderを起動して、この名前で新しいプロジェクトを作ります。タイプとしてWebObjects Applicationを指定することをお忘れなく。そして、前回お世話になったWizardは、今回は「None」「Java」を選びます。つまり、Wizardに頼らず自力でやっていこう、というわけです。

■データベースの定義
データベースとしては、WOに付属しているOpenBase Liteを使用します。他のデータベースでも使用できるように配慮します。

SimpleBoardを動かすには、二つのテーブル/Entityが必要です。掲示板の種類を登録するBoardと、掲示板に書き込まれたメッセージを保存するMessageです。それぞれの項目を以下のように定義します。

Board:
dataID..........連番を記録します。データベースには、必ず一意の連番を持った項目(primary key)が必要です。
boardName....掲示板の名前です。
boardOwner....掲示板の所有者を識別するための文字列を入力します。
password....ボード所有者を認証するためのパスワードです。
created....掲示板が作られた日時を記録します。
updated....掲示板の最新のメッセージが書き込まれた日時を記録します。

Message:
dataID....上記同様、連番です。
title....メッセージのタイトルを付けます。
message....本文です。
author....メッセージの著者名を記録します。
password....パスワードを入力します。
updated....メッセージを書き込みした日時。
boardID....このメッセージがどの掲示板のものかを識別するための値を記録します。いわゆるリレーションってやつを実現するために必要です。
messageID....後日、コメントおよびスレッド表示を実現するために使用します。

パスワードは掲示板やメッセージを削除する時に、書き込むときに付けておいた合言葉を知っている人だけが削除できる、という仕組みを実装するためのものです。
データベース上に必要な項目は以上ですが、各項目がどういう性質を持っているかということも設定してやらなければなりません。いわゆる属性というやつです。ごく単純に、数値、文字列、日付を、それぞれに指定します。
その他、リレーションを定義する必要があるのですが、それは次回のお楽しみとしましょう。このように、後から必要な機能などを追加しつつ試行錯誤できるのがWebObjectsのいいところです。

ということで、以上の定義を元にして作ったEOModelは次の通りです。

◇まずModel全体。BoardとMessageが並んでいます
 

◇BoardのEntityアイコンをクリックして詳細表示をさせたところ
 

◇同じくMessageアイコンをクリックして詳細を表示させた
 

EOModelができたら、SimpleBoard.eomodeldの名前で、プロジェクトのディレクトリ内に保存します。保存しようとすると、下図のような警告が出ますので、かまわずOKを選びます。これで、このプロジェクトはデータベースを使えるようになりました。

◇eomodeldを保存する際の警告
 

では、ここで定義したものを、実際にデータベース上に生成します。それには、まず左のアイコンツリーの一番上にあるSimpleBoardをクリックしてからEOModeler上の「SQL」と書かれたボタンをクリックします。そうすると、SQL Generationというタイトルのパネルが表示されます。これは、チェックボックスでデータベースに対して行う処理を選択してから、パネルの下の方にある「Execute SQL」をクリックすると、自動的にSQLが送られて、テーブルが生成されるという仕組みになっています。
ここでは初めての実行ですから、当然データベース上にはテーブル等は存在しません。従って、「Drop *」というチェックボックスは外し、「Create Tables」〜「Create Primary Key Support」までをチェックし、「Execute SQL」をクリックします。ごく短時間のうちに処理は終了します。修了しても何のメッセージは出ませんので、ご注意ください

◇SQL Generationパネル。左の二つのチェックを外します。
 

これでデータベースの準備もOKです。
(「WebObjectsで掲示板を作る」は続きがあります)

■サポートについて
この記事に関するお問い合わせにはお答えできない場合がありますので、あらかじめご了承ください。なお、有償でのサポートをご希望の方は弊社サイトにて「掲載記事サポート券」をお買い求めください。私の書いた記事に関連した質問1件につき2500円+消費税です。詳しくは、以下のアドレスの文書をご参照ください。なお、バグ、誤字・脱字に起因すると思われる問題については無償で対応させていただきます。よろしくお願い致します。

◇雑誌等掲載記事のサポートについて
 http://www.techpit.co.jp/WO/special-support.html

[倉橋浩一/テクニカル・ピット]
関連リンクWebObjectsのページ