Macintosh Developer Online (MDOnline)


2001年1月9日発行号 - WebObjectsで掲示板



今週、1週間に渡って、倉橋さんの連載では、WebObjectsで掲示板を作るというネタを流します。実は記事はすでにできているので、すぐにでも全部見たいという方は、Webサイトにアクセスしてください。5回に分けてありますが、メールでは毎日1本ずつ配信することにします。
昨年末ごろより、MTXウィルス(マトリックスとか言われているやつ)が大流行しているみたいですが、私のメールボックスにはけっこうやってきます。ただ、幸い、Windowsのexeファイルなので、Mac OSは自動的にガードされているようなものですが(笑)。だいたい今まで30通近く来ています。ヘッダファイルを見ながら誰か同じサーバを通して来ていないかを調べているのですが、特に見つかりません。ただ、ヘッダの経由しているマシン名に、ocn.ne.jpが多いのは確かです。また1つ来ると、続いていくつもぽろぽろとやってきます。なかなか感染力が強いのかも知れません。中にはマシン名と思われる単語が入っていて、個人を特定できそうなものありますが、omecomputerなどとなっているのもいくつもあります。
ちょうど去年の12月前半あたりにこのウィルスに関する警告が新聞などでデカデカと出てきましたが、それに呼応するようにうちに届くようになりました。想像ですが、警告を知ってかえって意味も知らずにウィルスを実行してまき散らす結果になっていたりしていないか心配です。セキュリティの問題はほんとに難しいですね。
さて、年末にお知らせしたプレゼントの当選者は以下の方々です(敬称略)。すでに発送しています。エアーパッドは9件の応募がありましたが、ビデオはおひとりだけでした。
 エアーパッド:田村、AIO
 Expoのビデオ:Moto
(新居雅行 msyk@mdonline.jp


【倉橋浩一、じつはWebObjectsで飯食ってます】WebObjectsで掲示板を作る(1)データベースの定義

まず最初に....私のところで発売している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のページ
カテゴリ:WebObjects, 倉橋浩一、じつはWebObjectsで飯食っています


Mac OS XのサーバソリューションiToolでASPを稼動

Tenon Intersystemsは、WebサーバのApacheをベースにした、Mac OS Xをインターネットサーバとして稼動させるソフト群「iTools for Mac OS X」をリリースする予定だが、そのiToolsにHalcyon SoftwareのiASPと、EMUmail社のWEBmailが組み込まれることになった。また、Aestiva社のWebアプリケーションも組み込まれる。
iASPは、もともとはWindowsのインターネットサーバIISで稼動するサーバサイドスクリプト処理機能のASP(Active Server Pages)を、Javaベースのエンジンで稼動させるようにしたもの。Linux上でのApacheや、あるいはWebSTARなどさまざまなWebサーバ上で稼動するとしている。HTMLの中に、VBScriptやJScriptでのスクリプトプログラムを書き込める形式ではあるが、Javaで構築されているため、JavaBeansやJDBC、さらにはサーブレットとの稼動環境にもなる。2001年の早い段階の出荷を目指しているが、iASPをバンドルしたiToolsとして販売される模様だ。いずれにしても、ASPがMac OS Xでも稼動することになる。
EMUmail社のWEBmailは、Webブラウザから、電子メールのやりとりができるサーバモジュールで、POP、IMAP、SMTPのサポートはもちろん、複数のファイルの添付やアドレスブック、ユーザによるフォルダの作成や、スパムのフィルタに対応している。WEBmailは、「iTools 6.0」に含まれる模様だ。
Aestiva社のWebアプリケーションとしては、WebサイトからのチャットができるLiveHelp、ポップアップヘルプを表示するHelpMate、伝言を行なうようなTell-A-Friend、サイト検索を可能にするKnowledge Baseが含まれる。これらも「iTools 6.0」に含まれる模様だ。
iToolsは、Apacheを核にしたインターネットサーバソリューションで、Mac OS X Server向けにも開発されている。Mac OS X対応は早くから公表しており、TomcatによるServlet/JSP環境のサポート、PHP4によるスクリプト、SSLに対応している。FTPサーバやDNSサーバなども統合されているなど、Mac OS Xを手軽にインターネットサーバ化する製品として注目されている。現在はVer.5が$495で販売されている。

関連リンク:iTools for Mac OS X Public Beta
カテゴリ:サーバー製品, サーバー関連


AppleHelpで参照するヘルプ文書の作成方法を紹介したドキュメント

Mac OSでのヘルプメッセージはHTMLベースで作られているが、Webサイトの作成ノウハウが生かせるとは言うものの、Help Viewerで参照される独特のドキュメントを作成する必要がある。その作成方法が、以下のページからのリンクにある「Providing User Assistance With Apple Help」という文書で公開されている。HTML形式で、オンラインで参照できる。利用可能なHTMLに加えて、ヘルプの文書から、アプリケーションやAppleScriptのアプレットを呼び出す方法や、ムービーの埋め込み方法などが記載されている。また、HTMLで作った文書をヘルプ文書として仕上げる方法などが記載されている。アプリケーションの完成度を高めるのには欠かせないのがヘルプをしっかり作ることだが、Mac OS 9やCarbon対応アプリケーションでの標準的な手法となるだろう。

関連リンク:AppleHelp
カテゴリ:アップルからの開発資料, ユーザインタフェース, Mac OS 9, Carbon/CF


WindowsをAppleShareクライアントにするTSStalkがWindowsの各バージョンに対応

Thursby Softwareは、WindowsマシンからAppleShareファイルサーバやMac OS向けのネットワークプリンタに接続する「TSStalk」の新しいバージョンをリリースした。Windows 95/98/Me/NT/2000で稼動する。1999年にリリースされたTSStalk Ver.1.0は、Windows NTのみの対応だった。TSStalkは、Windowsに組み込むソフトウエアで、AppleShare IPや、Mac OSのファイル共有でネットワークに公開されたサーバに接続することができる。IP接続も可能だ。プリンタについてはPostScriptプリンタへの接続が可能としている。価格は$149となっている。

関連リンク:New TSStalk from Thursby - One product for all platforms
カテゴリ:ネットワーク, Windows