Macintosh Developer Online (MDOnline)


2000年11月14日発行号 - WebObjectsでアプリケーション作成



今日から倉橋さんの連載もはじまりますが、カテゴリ名が欠けています。すみません。カテゴリ名のフィールドを上限値のあるvarcharで定義してあるためで、近日中に直します。それまでは、記事末尾のカテゴリーのところとWebサイトでのカテゴリー一覧で、カテゴリー名が欠けてしまいますが、お許しください。
自宅のインターネット環境はケーブルテレビなのですが、J-COMから@NetHomeにサービスが変更になりました。違いはいろいろ言っているものの、メールアドレスが変わってしまうなど不便だなと思っていたのですが、いいこともあります。ダウンロードのスピードが倍くらい早くなりました。J-COMのころは、上限で32KB/sくらいだったんですが、@NetHomeだと最高で72KB/sくらいでるのです。Developer Toolsのダウンロードも、20分そこそこです。まあ、なんぞメリットもないとつらいのですが、これだけ早くなるといいですねぇ。だけど、Internet Explorerでダウンロードしたのですが、ダウンロード結果がなかなかFinderに出てこなくて難儀しました。IEよりもMac OS X側の問題なんでしょうけど、Finderウインドウでのファイル一覧の更新がいまひとつなのが使いづらいところです。そういうわけで、手探りながらもDeveloper Toolsを使っての記事を少しずつお届けすることにします。
(新居雅行 msyk@mdonline.jp


【倉橋浩一、じつはWebObjectsで飯食ってます】5分で作るWebアプリ

こんにちわ。

今回からこちらに書かせていただくことになりました、倉橋浩一と申します。何者かといえば、えー、まさにタイトルの通りのことをやってます。たまたま縁あって、日本初のWebObjects専門書「WebObjects実践ガイドブック」(ソフトバンク・パブリッシング刊・なぜか書店ではあまり見かけませんが、絶賛発売中)という本の一部を書かせてもらいまして、それ以来、なんとなくWebObjects業界の端っこの方に生息するようになりました。WebObjectsのテクニカルサポート、自習用教材の販売、受託開発など、タイトル通りWebObjectsで生計を立てています。どうぞよろしく…記事の方も、商売の方も。

この連載では、できるだけJavaなどのプログラミング言語をいじらずにWebObjecetsで身の回りのことを片づけていくことをコンセプトとします。WebObjectsの“ファイルメーカーPro”のような側面をご覧いただきたいと思います。

すでにご存じの方も多いと思いますが、WebObjectsについて簡単にご紹介させていただきたいと思います。

Webページには、PageMillやGoLive!などを使って書いてhttpサーバにアップロードしたものがそのままの状態で表示されるページと、電子掲示板や株価情報ページなどのようにユーザの操作や外部から提供されたデータなどによって内容が変化するページとにわけることができます。前者をスタティックなページ、後者をダイナミックなページと呼びます。WebObjectsはダイナミックなページを生成するためのツールです。たとえば、電子掲示板を作ったことのある方は、perlだcgiだなどと大変な苦労をされたことだと思いますが、WebObjectsを使えば、その何十分の一の労力で、ダイナミックなページを生成することができます。

こういうものにデータベース処理の機能を加えて、「Webサーバ・アプリケーション開発・運用環境」といいます。WebObjectsもその一種ということになるのですが…私はちょっと違うと考えてます。「優れたデータベース・アプリケーション開発環境が、たまたまGUIとしてWebを選んでいる」だけではないかと。実際、WebObjectsの誕生は、Appleに買収される前のNeXT社で米国の金融機関などからも非常に高い評価を得ていたデータベース開発環境Enterprise Objects Framework(EOF)を、当時流行し始めていたWeb上で使用できないか?というスティーブ・ジョブズ氏のアイディアにより誕生したと聞いています。この生まれの違いに加えて、まだ世の中にWebが普及してすら居なかった時代、もちろんWebサーバアプリケーション開発環境などという概念すらない時代に誕生し、歴史を重ねてきました。Webがブームになってから出てきたような他の環境とは、熟成の度合いが違います。

◇データベースの検索ページを作成してみる

さて、あんまり能書きばかり長いのもなんですから、「ファイルメーカーProのような」側面をちらっとご覧いただこうと思います。とりあえず、WebObjectsに付属しているサンプルデータベースと、Wizard機能を使って、データベースの検索・表示・修正を行うページを作ってみます。ここで使用している環境は、Mac OS X Server 1.2 + WebObjects 4.5です。

まず、ProjectBuilderを起動し、新しいプロジェクトを作ります。プロジェクトを作るフォルダを指定し、名前を「WizardMovies」とし、最後にProjectTypeとして「WebObjects Application」を選びます。
 

「WebObjects Application Wizard」ダイアログが表示されますので、機能として「Wizard」を選びます。他に選択可能な機能としては、データベースアクセスの基本的な機能を処理するJava Appletを自動生成してくれる「Direct to Web」、デスクトップ・アプリケーションと同じGUIをApplet + Swingで実現する「Java Client」があります。また、もちろん、何もしない空白のページを選ぶこともできます(「None」)。デフォルトの言語として、ここでは「Java」を選択しますが、このほかに比較的習得しやすいインタプリタ言語の「WebScript」、実行効率に優れた「objective-C」を選ぶことができます。
 

データベースを参照するためにはeomodelが必要です。WebObjectsではファイルメーカーProと異なり、各種市販のデータベースを使用することができますので、データベースとして何を使用するか、データベース上の定義をWebObjectsアプリ上でどのようにして扱うかを設定するためのものです。非常に高度な機能を持ったツールなのですが、非常にシンプルに使うこともできます。すでに存在するデータベースから、eomodelを作ることにしましょう。「Create new model」を選びます。
 

前述の通り、使用したいデータベースを選ぶことができます。ここでは、WebObjectsに付属している「OpenBase Lite」を選択します。
 

OpenBaseのパネルが現れます。WebObjectsに付属している「Movies.db」を選びます。
 

次にデータベースから読み取った情報のうち、指示の必要な項目を選択します。処理に必要なテーブルだけを選んだりすることができるのですが、手っ取り早く、「必要なこと以外何も聞かないでくれい」、のモードにします。4つあるチェックボックスのうち、「Assign primary keys to all entities」だけをチェックします。データベースを使用する際には、レコードを特定するためのプライマリキーというものが必要ですが、ここでは「すべてのエンティティ(テーブルのこと)にプライマリキーをつける」という設定を選んだ、ということです。
 

「Choose the tables to include in your model(eomodelに取り込みたいテーブルを選んでください)」の画面で「MOVIE」を選んでNextボタンをクリックし、「Choose the entity to use in the Main page(メインページで使用するエンティティを選んでください)」画面でもそのままNextボタンをクリックします。
<続く>

関連リンク:WebObjectsのページ
カテゴリ:WebObjects, 倉橋浩一、じつはWebObjectsで飯食っています


【倉橋浩一、じつはWebObjectsで飯食ってます】5分で作るWebアプリ(2)

◇ページのレイアウトを作成する

次は、メインページに使用するレイアウトを指定します。ここでは、「Selected Record(選択したレコードを編集する機能付き)」と、「Matching Records(条件に一致するレコードを表示)」を指定します。ラジオボタンを切り替えると、その都度、サンプルレイアウトが表示されますので、サンプルを見ながら希望するページを選ぶことができます。なお、ここで選ぶことができるのは基本的な9パターンだけですが、Wizardで作られたページは自由にレイアウトや機能を変更することができますので、ご心配なく。
 

ページは、データ入力修正部分、一覧表部分、検索条件入力部分にわけることができます。まず、「Choose attributes to display」で表示する項目を選びます。「title」「category」「rated」にします。
 

「Choose an attribute for the hyperlink」で、一覧表示されたデータの中から一つを選び出すためのHyperlinkとして使用する項目を選びます。ここでは無難に「title」にします。
 

さらに条件検索の対象となる項目を「Choose attributes to quary on」で選びます。これまた無難に「title」と「category」を使用します。さて、これでページを作るために必要な設定が終わりました。「Finish」ボタンをクリックします。
 

Wizardが設定された条件に基づいてプロジェクトを生成し、数秒後、ProjectBuilderが現れます。
 

ProjectBuilderはプロジェクトとして必要な各種ファイルやツール類の管理、ソースコードの編集などを行うためのツールです。ProjectBuilderには、プロジェクトを実行可能なアプリケーション形式にしたり(buildと言います)、でき上がったアプリケーションを起動したり(Launchと言います)することができます。では、お待たせしました、さっそく出来たアプリケーションを動かしてみましょう。
ToolsメニューからProjectBuild->Build & Runを選びます。すると、buildが終わるとアプリケーションが起動し、自動的にブラウザが立ち上がってWebページが表示されます。
 

「Title:」のところにとりあえず"a"と入力して、「Match」ボタンをクリックしてみると、"a"で始まる映画名が一覧表示されます。Hyperlinkから「Alien」をクリックすると、入力編集部分に「Alien」のデータが表示されます。
 

以上、文章にすると長いのですが、実際には3分ほどの作業です。

これだけのことならば、わざわざWebObjectsを使う必要はないかもしれません。ファイルメーカーProの方が値段も安いし、おそらく単にデータベースへの入力・修正・検索を行うだけであれば、ファイルメーカーProの方が簡単ですから。それどころか、WebObjectsはWeb上で動作しますので、どうしても印刷機能が弱く、基本的には(※)ブラウザ上での印刷機能しか使うことができません。

※基本的にはWebObjectsにはPDFを取り扱うための機能も設けられていますが、既存のPDFにフォームとしてのデータを表示するためのもので、完全にダイナミックなデータのパブリッシングを配慮した機能ではありません。ダイナミックにPDFページを生成するためには、ReportMil社などサードパーティーの製品を使用する必要があります。

◇WebObjectsを使う理由

では、なぜわざわざWebObjectsを使うのでしょうか。

<1>構成の自由度が高い
WebObjectsは現在Windows NT/2000、Mac OS X Server、Solaris、HP-UXなどの上で動作します。どの動作環境で動かす場合でも、ソースの書き換えは必要ありません。また、サイト構成の自由度が高いため、NTマシン1台だけの小さな構成から、Sunのワークステーションを32台つなげたような大規模サイトまで、基本的には同じプログラムを使って運用していくことができます。たとえば、必要最小限のハードウエアだけでWebサイトを立ち上げたとして、もしサイトが大繁盛してしまった場合でも、マシンを追加して設定を行うだけでOKです。これは大規模なeコマースサイトだけに限った話ではなく、たとえば企業内の情報交換用サイトを立ち上げたような場合にも、特にプログラマがそのための準備をすることなく複数のマシンで並列稼働させることができますので、一台のマシンの故障でサービスが停止してしまうということを防ぐことができます。

<2>パフォーマンスが高い
同じような規模のハードウエア上で動作させて少人数でアクセスしている分にはそれほど大きな差は感じられませんが、アクセスが殺到したような場合にはWebObjectsの方が高いレスポンスを得ることができます。

<3>Javaなど汎用的な言語でプログラミング可能
WebObjectsはObjective-C、WebScript、Javaでプログラミングします。Javaはご存じの通り、インターネット標準プログラミング言語としての地位を固めつつありますので、プログラミングのための情報も多く、またメモリ管理などの点においても通常はあまり意識する必要がありません。

一方、Objective-CとWebScriptは、あまり一般的な言語ではありませんが、データの型などに余計な神経を使うことなくプログラミングすることができますので、非常に生産性が高いという特徴があります。

◇つまりは…

ファイルメーカーProでは、プログラミング言語を使わないようにするために多大な神経が払われていて、それが使いやすさとなって現れています。しかし、ちょっとファイルメーカーProの流儀からはずれたことをしようとすると、プログラミング言語を使う場合よりむしろ複雑になってしまうようです。逆にWebObjectsは、『データベースへの入力・修正・検索を行う』以上のことをする場合に、ファイルメーカーProよりも簡単に処理することができます。たとえば住所録を作るような場合でしたら、ファイルメーカーProの方が簡単でいいものができると思います。一方、給料計算や財務会計システムならば、WebObjectsの方がファイルメーカーProの制約に悩まないで済みます。

まぁ、適所適材と言ってしまえば、それまでなんですが。

さて、次回以降何度かにわたって、「簡単な」Web版電子掲示板を作ってみます。『簡単な』が、「簡単な機能しかない」なのか、それとも「簡単に作れる」を意味しているのか…どうぞおたのしみに。

今回の成果物のダウンロードは以下のアドレスで(約280KB):
 figs/kurahashi/ser-001/mdo-kura-001.tar.gz

プロフィール:
倉橋浩一(くらはしこういち)
1978年よりフリーのエンジニアとして活動。1988年有限会社テクニカルピットを設立、現在に至る。アセンブラ、DOS、Windowsを経て、1993年よりMacintoshプログラマ。現在は、WebObjectsアプリケーションの開発者およびコンサルタントとして活動中。著書に「WebObjects実践ガイドブック」(ソフトバンクパブリッシング)がある。

カテゴリ:


WebObjects 4.5のUpdate 3がリリース、ログ参照ページのパスワードなど

WebObjects 4.5のUpdate 3がリリースされた。修正点はバグフィックスなどいくつかあるが、イベントログを表示するページに認証が必要になった点が1つの大きな修正点だ。その他の修正点は以下のTech Info Libraryの文書「WebObjects 4.5 Update 3 Overview」に記載されている。すべてのWebObjects 4.5ユーザにこのアップデートの適用が奨められている。MultiCountry版なので、日本語で利用しているアプリケーションなどでも適用することは基本的には問題はないと言えるだろう。

◇WebObjects 4.5: WebObjects 4.5 Update 3 Overview
 http://til.info.apple.com/techinfo.nsf/artnum/n75091

◇WebObjects 4.5 Update 3 (Windows) Ver.3
 http://asu.info.apple.com/swupdates.nsf/artnum/n11869
◇WebObjects 4.5 Update 3 (Mac OS X Server) Ver.3
 http://asu.info.apple.com/swupdates.nsf/artnum/n11867
◇WebObjects 4.5 Update 3 (HP-UX) Ver.3
 http://asu.info.apple.com/swupdates.nsf/artnum/n11866
◇WebObjects 4.5 Update 3 (Solaris) Ver.3
 http://asu.info.apple.com/swupdates.nsf/artnum/n11868

カテゴリ:WebObjects, OS関連ソフトウエア


【Mac OS X Public Betaシリーズ】Mac OS X Public BetaのDeveloper Toolsをインストールする

Mac OS XのAppleによって提供される開発ツールは、今のところ、ADC Premier/Selectメンバに送られたとされるDeveloper ToolsのCD-ROMと、ADCのメンバサイトからダウンロードできるものがある。CD-ROMはADC会員には、9月と11月に送付されてきているはずだ。どちらもCD-ROMには「Z693-3135」という製造番号になっていて、同じものかと思ってしまう。しかしながら、MOSA Software Meeting 2000での情報によれば、9月配付版(パリで開催されたApple expo 2000のリリースに対応したもので「パリ版」と呼ばれている)と11月配付版(日本語版のリリースに対応したもので「タカシマヤ版」と言われている)にはいくらか違いがあるという。実際、微妙な違いは見つかったが、いずれにしても、現状ではタカシマヤ版を使うのが得策と言える。同じ製造番号のCD-ROMであるが、タカシマヤ版は「October 2000」という文字があり、パリ版にはその年月を示す文字がない。CD-ROMをごちゃまぜにしてしまったときには、これを手がかりにしよう。
さて、タカシマヤ版のDeveloper Toolsのインストールは、CD-ROMにある「Developer.pkg」というファイルをダブルクリックするだけであるが、システムの言語設定を日本語にしていると、カギをクリックして管理者パスワードを入力する作業を、2回(あるいは3回とも言われている)行う必要がある。1度行っても次に進めないので、もう1度カギのアイコンをクリックして認証を行うと、インストールが始まるという具合だ。これはインストールされるソフトというより、インストーラのアプリケーション側の不具合のようで、Developer Toolsではない他のソフトウエアでも同様な症状になる。知っておくと迷わないで済むだろう。なお、パリ版は、インストール時に言語を英語にしておかないといけない模様だったが、タカシマヤ版は言語を日本語にしてインストールしてもとりあえずは大丈夫だ。
さて、こうしてインストールするとインストールしたボリュームのルートにDeveloperというフォルダがあり、さらにその中にApplicationsというフォルダがある。そこに、統合開発ツールのProjectBuilderがあるのでダブルクリックすれば起動する。すでにアップルからサンプルコードも配付されているのでそれを開いてどうなっているのかを見てみるのもいいだろう。おそらく最初にやってみることの1つはとにかく新しいプロジェクトを作ってみることだろう。FileメニューからNew Projectを選択して、ダイアログボックスで作成するプロジェクトの種類を選択する。ここで注意しなければならないのは、現状でいちばん無難なのは、プロジェクトを新規に作成するときには、Mac OS Xの言語を英語にしておくことだ。たとえば、日本語にしておいて「Java Application」を作ろうとしても、ひな形になるソースファイルすら作られないという症状に見回れる。システムの言語を英語にしておくと問題なく作成できる。「Cocoa-Java Document based-Application」の場合は、日本語システムの状態でプロジェクトとを作成しても、一見きちんと作られたように見える。しかしながら、ResourcesフォルダにあるInfoPlist.stringsファイルを見てもらえば分かるように、情報文字列がうまく設定されていない。おそらくひな形になるファイルの中身がそのまま来ているのだろう。そのため、実行すると、アプリケーションメニューがひどい結果になる。もっとも、少し試した限りではこのファイルを書き直せば問題はないので復旧はできるようだ。
いずれにしても、英語システムにしてプロジェクトを作れば失敗はない模様だ。その後のプログラミング作業でも、もしかすると英語システムでないとうまく行かないこともあるのかもしれないが、少し使った限りではそうした場面にはまだ出くわしていない。しかしながら、プログラミング作業をするときには英語システムにしておくのが安全圏ということも言えるかもしれない。なお、英語システムにするには、System Preferences(システム環境設定)を呼び出し「地域」のアイコンをクリックし、表示されるパネルの「言語」のタブにある「言語」の一覧で、リストの最初にEnglishをドラッグして移動しておく。そして、ログアウトして再度ログインするか、再起動を行えばよい。
また、ProjectBuilderを起動しただけの状態だと、.nibの拡張子がInterface Builderと結びついていない状況になり、たとえば、MainMenu.nibファイルをProject Builderでダブルクリックしても、なぜかStuffIt Expanderが起動してしまう。ここではInterface Builderを直接一度起動してみるなどいろいろやっているうちに、.nibファイルのダブルクリックでInterface Builderが起動するようになった。この点も注意が必要だろう。
さて、ADCのサイトからダウンロードするDeveloper Toolsについて、どこまで公開していいのかは難しいが、Developer Tools自体は機密でないということで、ダウンロードしてからの作業のポイントを説明しよう。ADCのサイトには、1つのtarファイル(複数のファイルを1つのファイルにまとめたアーカイブファイル)があってそれをダウンロードするということのようだが、筆者が試したときにはオリジナルのファイル名が再現されなかった。そこで、ファイル名を「devtools.tar」など拡張子が.tarで適当な前をつけておく。そして、自分のホームフォルダに保存しておく。そして、Terminalを起動して解凍を行ってみた。UNIXを知らない方向けにやり方だけ書いておくと、devtools.tarというファイルがホームフォルダにあるとして、Terminalを起動直後に「tar zxvf devtools.tar」と入力しreturnキーを押せばよい。すると、同じフォルダに「Developer.pkg」というファイルができる。それを、Finderのウインドウで表示させてダブルクリックすればよい。あとは、CD-ROMの場合と同じである。日本語システムだと、何度かカギの解除をしないといけないのも同様である。

カテゴリ:開発情報, Mac OS X Public Betaシリーズ


Mac OS XからMac OSに切り替えて起動しない場合の対処方法

Mac OS X Pubilc BetaをインストールしたマシンでMac OS 9から起動させようとしても起動しない場合の原因について説明する文書がTech Info Libraryに掲載された。ハードディスクのドライバが適切なものが入っていないか、あるいはMcAfeeのウィルス除去ソフトVirexの影響であることが考えられるとしている。それぞれの場合の対処方法を示した文書へのリンクも設定されている。それぞれ、以下の文書にリンクされている。

◇Mac OS X Public Beta: Cannot Update Disk Drivers in Classic
 http://til.info.apple.com/techinfo.nsf/artnum/n106053
Classic環境内で、Mac OS 9をMac OS 9.0.4にアップデートした場合、ディスクのドライバが適切には更新されないこともある。その場合に起動しないということになってしまうこともある。

◇Mac OS X Public Beta: Using McAfee Virex With Classic May Cause a Startup Issue
 http://til.info.apple.com/techinfo.nsf/artnum/n106052
McAfeeのVirexはClassic環境で起動するシステムフォルダにはない状態にしておくのがよい。起動するシステムフォルダはSystem PreferencesのClassicの設定で選択できる。

関連リンク:Mac OS X Public Beta: Computer No Longer Starts Up From Mac OS 9
カテゴリ:Knowledge Base(旧TIL), Mac OS X


Mac OS Xでの日付時刻設定はClassis環境ではできずSystem Preferencesを使う

Mac OS XでのClassic環境では「日付&時刻」コントロールパネルによる時刻設定はできないことがTech Info Libraryの文書で公開された。これは正常な動作で、Classic環境でも、System Preferences(システム環境設定)で設定した日付や時刻を利用するようになっている。また、修正もSystem Preferencesで行うようになっている。

関連リンク:Mac OS X Public Beta: Changing Date and Time
カテゴリ:Mac OS X


iTooLs KidSafeをインストールするとAppleShareでのファイル共有機能は使えない

Tech Info Libraryに公開された文書によると、iTools KidSafeをインストールすると、AppleTalkによるファイル共有の機能が利用できなくなる。ファイル共有はAppleShare IPつまりTCP/IPベースで行わないといけない。

関連リンク:iTools KidSafe: Cannot Log on to File Server Through AppleTalk
カテゴリ:Knowledge Base(旧TIL), ネットワーク


iToolsのホームページやiCardではグレースケールの画像は正しく表示されない

Tech Info Libraryに公開された文書に寄ると、iToolsのホームページ作成サービスやiCardにおいて、グレースケールのグラフィックスを利用しようとしても、画像が正しく表示されない。歪んだりノイズが入ったりするが、これを避けるためには、グレースケールの画像をグラフィックスソフトを利用してRGBモードに変更し、修正したファイルをiDiskに保存して、iToolsやiCardのサービスを利用するようにすればよい。

関連リンク:iTools HomePage, iCard: Distorted Grayscale Images
カテゴリ:Knowledge Base(旧TIL), ネットワーク