Macintosh Developer Online (MDOnline)


2001年2月9日発行号 - Mac OS Xでのファイル同時最大オープン数



今月に購読期限がきれる方々には今日の未明にメールをお送りしましたので、更新の方、よろしくお願いします。数日前にちょっとお話した、抽選用のアプリケーションですが、以下のページで公開しています。少し先に、解説の記事を作成したいと考えています。アプリケーションだけでなく、プロジェクトのファイルもダウンロードしました。
http://msyk.locus.co.jp/macos/drawingx/

来週の月曜日は振替休日ですので、この土日月の配信はお休みさせていただきます。次回は、14日の火曜日の配信となります。
それから『GoLive 5.0 Webサイト構築ガイドfor Macintosh』の当選者は、田村さんです。すでに送付しました。
FreeMLが大規模にダウンしていたようで、せっかく始めたMacMediaメーリングリストの登録者内容が何日か前の状態になってしまいました。登録情報がメールで来るような仕組みになっているので、誰が登録をしようとしたのかということは分かることは分かるのですがちょっと混乱がありました。ディスクがクラッシュしたとかいちおう言い訳は来ましたけど、きっとFreeMLくらいになるとかなり大規模なシステムのために、ちょっとしたクラッシュも下手をすると大規模に止まってしまうレベルになるのかもしれません。登録内容のメールのように、別の場所に取っておくバックアップというのはやはり重要だということでしょうね。
(新居雅行 msyk@mdonline.jp


Mac OS Xの1つのプロセスが同時に開くことができるファイル数は既定値は256

Technical Q&Aに、Mac OS Xのアプリケーションが同時に開くことができるファイルの最大数についての情報が掲載されている。それによると、1つのプロセスは256までのファイルを開くことができるように設定されている。通常、1つのアプリケーションは1つのプロセスと考えればよいだろう。ただし、さまざまな理由で、256よりも実際には少ない数値になっている。また、Systemフレームワークのシステムコールを利用すると、その上限値を変更することもできる。そのサンプルプログラムも掲載されている。ただし、Code Fragment Managerベースのアプリケーションの場合には直接呼び出すことができないので、CFBundleを使うと説明されている。
また、システム全体での同時に開くことができるファイル数と思われるが、その数値は12288と示されている。ただし、これはRAM容量に関連し、Virtual-Filesystemが使用するノードのレコードの数が確保できるだけということになる。128MBだと、約2864のノードまでの確保が限界になると紹介されている。一般的な利用状態だと、だいたい300から400くらいのファイルを同時に開いているくらいだということだ。さらに、システム側の同時に開くファイルの最大数をsysctlというルーチンで変更はできるが、ルート権限が必要なのと、そうした用途が実際に必要になるのは、サーバのような異なる利用形態となると説明されている。

関連リンク:Open File Limits on Mac OS X
カテゴリ:Technical Q&A, Mac OS X


MacHack 2001のキーノートはAndy Hertzfeld氏ら

2001年6月21日〜23日の日程で開催される、Macintosh分野のプログラマが集まる「MacHack 2001」でのキーノートのスピーカーが発表された。Eazel社のAndy Hertzfeld氏、Guy "Bud" Tribble氏、そしてテクニカルライターのCaroline Rose氏だ。Eazel社は、現在LinuxのGNOME上で利用できるビジュアルシェルの「Nautilus」を開発中だ。Linuxでのユーザインタフェースを向上させるソフトウエアとして注目を浴びている。Andy Hertzfeld氏は、Apple IIやMac OSの初期の開発メンバーとして有名で、その後、Thunder Scanの開発やGeneral Magic社へ参画をしている。現在はEazel社のSoftware Wizardとして、Nautilusの開発を行っている。Guy "Bud" Tribble氏は、Appleで初期のMac OSの開発を担当した後、NeXT社でOpenStepの開発を指揮し、Sun-Netscape Allianceでの副社長を経て、Easel社でのソフトウエアエンジニアリング担当の副社長となった。Caroline Rose氏は、Inside Macintoshの最初の3巻の執筆や編集を行い、後にはdevelop誌の編集で知られている。現在は書籍などを執筆している。
MacHack 2001はミシガン州のDearbornで開催される。参加費は$425で、学生は参加数に制限があるが$50で参加できる。2000年のMacHackのキーノートはEric Raymond氏であり、オープンソースという動きに注目が集まっていた。今年の1つの大きな話題はNautilusということになり、ちょうど、Mac OS Xという新しいOSにも関連して、ユーザインタフェースにフォーカスしたと言ってよいだろう。

◇Easel
 http://www.eazel.com

◇Caroline Rose
 http://www.differnet.com/crose

関連リンク:MacHack
カテゴリ:イベント


【WindowsオフィスでWebObjects】いよいよ実際に動かす

WebObjects Application Wizardを使ってDirect to Webによるプロジェクトを作成するところまでを前回に説明した。すると、プロジェクト名がウインドウのタイトルにあって、上部が3列に分割されており、下の部分が白く広い領域になっているウインドウが開くだろう。これが、プロジェクトの文書ウインドウであり、プログラムの編集などを行う、プロジェクトの中心的なウインドウなのだ。ここで編集作業をしたいのだが、実はプログラムを追加する必要がある。そのプログラムは以下のページに記載されている。

◇WebObjects4、4.5の日本語に関する設定方法
 http://www.apple.co.jp/webobjects/establishment.html

もちろん、キータイプしてもいいのだが、一般的にはWebページからコピー&ペーストすることになるだろう。ソースプログラムを選択して、もちろん、Command+Cなどコピーが必要だ。(実はちょっと注意がある。すぐ後で説明する。)

◇追加する部分をWebページからコピーする
 

このコピーしたプログラムは、Javaのメソッドの定義である。このメソッドを、Application.javaというソースファイルのApplicationクラスに追加する。仕上がりイメージは次の図の通りだ。

◇2つのメソッドをApplicationクラスに追加する
 

Project Builderのプロジェクトのウインドウに慣れていないとちょっと戸惑うところかもしれない。このウインドウの上部は、ブラウザになっており、プロジェクトを構成するさまざまなものをブラウズすることができる。ここで、最上位の区分でのClassesというところに、Javaのプログラム、すなわちアプリケーションの本体と言えるものが分類されている。Classesの下に、Application.javaというソースファイルの項目がある。そのApplication.javaをクリックして選択すると、その中身がプロジェクトのウインドウの下半分に出てきて編集作業ができるという仕組みだ。最初、Applicationクラスにはメソッドは1つも存在しない。そこに、takeValuesFromRequestとappendToResponseというメソッドを作成するのである。プログラムをざっと見て分かるように、アプリケーションへのリクエストや、アプリケーションの応答に、日本語のシフトJISを扱うというエンコーディングの情報を付加している。ApplicationクラスのスーパークラスであるWOApplicationの同じメソッドをオーバーライドしているので、親クラスの同じメソッドを呼び出している。つまりは、これによって、Webブラウザでの日本語表示や入力が正しく処理されるようになるということに他ならない。なお、このApplicationクラスへのメソッドの追加は、プロジェクトを新たに作成したときには必ず必要になる。
ここでプログラムをWebページから単にコピー&ペーストした場合、実はコンパイルエラーが出る。どうやら、各行の頭にある空白は、全角のスペースが使われているようなのだ。行の頭の空白をうまく削除しておく必要があるが、どうも幅のないキャラクタとして入ってしまうこともあるようだ。矢印キーで最初の文字の前に挿入ポイントを設定し、BackSpaceキーで削除をして、いったん前の行とつなげてしまい、そして改行と半角のスペースかタブをキータイプするようにしないといけないかもしれない。

それでは実際にコンパイルを行い、アプリケーションのビルドを行おう。プロジェクトのウインドウの上部にあるツールバーの一番左にBuildボタンがある。カナズチの図柄のボタンだ。それをクリックすると、Project Buildのウインドウが別途開く。さらに、カナズチの図柄のBuildボタンをクリックすることで、実際にコンパイルが行われる。なお、通常は、Application.javaファイルを変更したことになるので、そのファイルを保存するかどうかをたずねるダイアログボックスが表示される。もちろん、Save and buildボタンをクリックして保存を行い、コンパイルとビルドを行う。

◇コンパイルを行う
 
 

Project Buildの下側にコンパイル時のメッセージが出てくる。他の部分はエラーメッセージなどが出てくるが、通常はWizardの出力結果なのでエラーにはならないだろう。もっとも、Webページからコピー&ペーストしてApplication.javaに追加したときに余分なキャラクタが除去されていない場合にはエラーが出るので、その場合には、再度Application.javaの中身をチェックする。

(続く)

カテゴリ:Windows, WebObjects


【WindowsオフィスでWebObjects】いよいよ実際に動かす(続き)

こうしてビルドしたアプリケーションは、起動をする必要がある。もちろん、Project Builderから作業をすることができる。プロジェクトのウインドウのパレットの左から4
つ目に、ディスプレイの形をしたLauncher/Debubberボタンがある。これをクリックすると、Launchウインドウが表示される。そして、さらに、ここでも同じくディスプレイのデザインをしたLaunchボタンをクリックする。すると、アプリケーションが起動するのだが、WebObjectsのアプリケーションは特に画面やタスクバーには何もでない。そして、そのアプリケーションにとってのクライアントとなるWebページがブラウザで表示される。Webブラウザのウインドウが出てくるが、背後のLaunchウインドウには実行状態が表示される。

◇アプリケーションを起動する
 

◇起動した状態のLaunchウインドウと、クライアントのWebブラウザ
 

開発マシンで起動すると、このように、サーバアプリケーションが起動し、同時にクライアントとなるWebブラウザも起動する。ドメイン名はlocalhostになっているが、この状態ですでに別のマシンからも接続できるようになっている。以下のURLで開いてみるとよいだろう。

 http://<ドメイン名 or IPアドレス>/Scripts/WebObjects.exe/<プロジェクト名>

なお、Launchウインドウは、実は標準出力の結果が表示される。プログラムの中に、System.out.printlnなどのメソッドがあれば、Launchウインドウに引数の内容が表示される。Launchウインドウはデバッグなどでも使用される。

クライアントのWebページ側を見てみよう。ログインとあるので、アカウントとパスワードはどうするのかと思うかも知れないが、Wizardで作った既定の状態では、アカウントもパスワードも何も入力しないで、Loginボタンをクリックすれば、それでログインができる。トップの画面は次のようなもので、テーブル名が一覧され、各テーブルごとに検索条件を指定するポップアップメニューなどが表示されている。たとえば、Addressテーブルに対して、Nameフィールドが指定した文字のレコードのものなどが検索できるのである。

◇ログインを行った画面
 

あとは画面に従って使えばいいかというと、実はここで大きくつまずきがある。というか、当初はあきらめかけた。なぜか、データベースからのデータの取り出しが全然できないのである。適当に条件を設定すると、次のようなエラーメッセージが出てきた。これは、どんなデータベースでも必ず出てくるわけではないようで、シンプルなデータベースでは出てこなかった。どんな条件が絡むのかは現状では筆者は把握できてはいない。

◇検索を行うとエラーが出てくることもある
 

こうしたエラーが出てきても、なぜか、何度か検索を行っているうちに、きちんと検索ができるようになってくる。経験的には最初に2回ほど失敗したあと、後はきちんと動くようになるという感じだ。アプリケーションを終了し、再起動すると、やはり最初の2回の検索はうまくいかない。だから、起動した後、他の利用者にばれないように、検索がうまくいくまで何度か検索を行っておくということで、非常に情けない手法ではあるが、とりあえず対処できそうだ。
なんでエラーが出てくるかは不明だし、いろいろ探してみたけど、それらしいトラブル対策は見つからない。だけど、必ずこういった問題が出るのなら、きっとすでに顕在化しているだろうから、もしかするとODBC/Access特有の問題なのかもしれない。

さて、ここでは見て分かるように、住所録のデータベースを使った、単純な1つのテーブルに納めたものをとりあえず、Direct to Webで公開できるようにしたという次第だ。よくある使い方は、左側でSearchボタンをクリックし、Entitiesで選択しているテーブルのフィールドが一覧され、そこで検索条件を入れるというものだろう。なお、最初の画面で→の部分をクリックしても、同様にフィールドごとに指定できるページになる。最初のページだと、条件が>や=などしかないのだが、フィールド名が一覧されているページだと、starts withや、containsなどがあるので、住所録の検索だとこっちの方が一般的だろう。

◇より詳細な検索条件を指定するページ
 

検索した結果、絞り込まれたレコードが、ページに一覧される。もし、レコードが10以上あるのなら、自動的に分割されたページで表示される。フィールド名が見出しに直接来ていて、レコードがよこにずらりと表で並ぶため、どうしても、横スクロールが必要になってしまうが、とにかく、データベースの取り出しができるようになったという次第だ。

◇検索した結果
 

レコードの左側にペンを手で持ったアイコンがあるが、ここをクリックして入力データの編集や、Newボタンをクリックして新しいレコードが入力できるあたりに目が向くだろう。ただ、これらはどうやらAccessを使う限りは初期状態では使えないらしい。使えるようにするにはデータベースの変更が必要になるのだが、これについては次回に説明をしよう。

また、こうしてDirect to Webで作成されたページは、任意にカスタマイズできる。カスタマイズの方法は、Webブラウザから行う方法と、プログラムに手を入れる方法がある。あまりたくさんのカスタマイズが必要になるというのは、かえって大変になるが、たとえばレコードは参照しかできず、新規作成や削除をできなくするというくらいであれば、ブラウザか行えるカスタマイズの範囲内で可能である。これらの機能については時期を置いて、お伝えするつもりである。

カテゴリ:


DVDビデオ再生でビデオデッキに接続した場合の画像の乱れは故障ではない

DVDビデオを再生するとき、本体のS端子からビデオデッキに接続すると、画像が乱れることについて、Tech Info Libraryに掲載された。これは、故障ではなく、コピープロテクトのための機能「Macrovision」であると説明されている。画面が明るくなったり暗くなったりするか、あるいは色が出なくなる。ビデオ端子からテレビに接続することで、問題なく画像は表示される。ビデオデッキにこうした機能が組み込まれていると説明されている。

関連リンク:Apple DVD Player: Distorted Video When Played Through VCR
カテゴリ:Knowledge Base(旧TIL), 周辺機器


Mac OS 9.0.4でAppleShare IP 6.3を適合させるためのアップデータ日本語版が公開

AppleShare IP Ver.6.3を、Mac OS 9.0.4で稼動させる場合の互換性を高めるためのアップデータの日本語版がリリースされている。英語版はすでに公開されている。詳細な変更点については明示されていない。

関連リンク:AppleShare IP 9.0.4 Update 1.0
カテゴリ:各種製品, サーバー製品


REALbasic 3.0のベータ版はRelease 7まで

REALbasicの次期バージョンVer.3.0のベータ版はリリース7まで進んでいる。現在、英語版と日本語版、いずれも3.0b7が公開されている。リリース7ではそれほど大きな変化はなく、小幅なバージョンアップとなっている。正式版は近いのかもしれない。

◇REALbasic日本語版
 http://www.ascii.co.jp/realbasic/

関連リンク:REALbasic 3.0b7
カテゴリ:REALbasic