Macintosh Developer Online (MDOnline)


2000年8月8日発行号 - FatBarins.comでのタイトルが増えている



今、出先で原稿を書いています。また、新宿から代々木の方に少し行ったところにあるカフェドクリエで書いています。クーラーがちょっと利き過ぎのような気もしますが、席は半分も埋まっていません。新宿にしてはがらすきでしょう。気軽にPowerBookを開くことができます。(もしかして、前に書いた時にはベローチェと書きましたか? 正確にはカフェドクリエです、すみません)
今日はジャストシステムの発表があって「ジャストホームi」の発表がありました。同社は昨年までは一太郎にフォーカスしていましたが、今年になってからは積極的にホーム市場の製品を投入しています。思うに、99年はパソコン市場がもっとも個人にアピールした年ではないかと思います。というかシェア的に個人すなわちホームにもっとも振れたと言っていいのではないかと思います。従って、今後もそれなりのシェアがあるのは当然で、その市場に向けた多くの製品が出てくるでしょう。昔から個人やホーム向け製品はあったわけですが、ジャストシステムは、いちばん最近の盛り上がりに合わせ、現世代のパソコン環境に合った製品を出してきている点は注目すべきでしょう。市場の変化を追うのはさておきますが、これが将来に続くかというとちょっと疑問点もあります。というのは、現在、iモードや専用端末を始め、「パソコンを買わなくてもいい」という状況がより強く出始めています。これらは、おおざっぱに言えば、ここ2年くらいに形成されたコンシューマ市場を崩すものと言ってもいいかもしれません。こうした専用機系の勢いが強くなると、パソコンのコンシューマ市場は逆に縮小することも十分考えられます。Eメール系サービスでは、すでにその徴候は出ているような気がします。テンキーで文字を打ち込む世代向けに、WebのBBSに参加して読み書きできるような専用機なんかがあって、サービスが支持されれば、Webですらパソコンなしでも使えるでしょう。そういう時代がくるのか来ないのか、あるいはいつくらいにそうなるのか? 一概には言えませんが、ドッグイヤーの世界だけに決着は早いかもしれません。そうなると、ソフトウエアでホーム市場を征するには、ここ1年が山場でしょう。
(新居雅行 msyk@mdonline.jp


REALbasic 3.0a5がリリース、Windowsで全画面表示機能を追加

REALbasicの次期バージョン3.0のアルファ版の5つ目のリリースが配付されはじめている。Windows向けに生成したアプリケーションで、メニューバーを隠して全画面表示する機能が加わった。また、IDEのコードエディタでは、キーワードの候補が表示されてそこから選択される機能が加わっている。その他、バグ修正や処理速度の向上などが図られている。REALbasicは、オブジェクトをウインドウに配置し、そこにプログラムを付加するタイプのRADツールで、Basic言語を基調としている。現在は、Ver.2.1.2が正式版だが、3.0ではCarbon対応となり、Mac OS Xで開発ツールが稼動すると共に、アプリケーションの生成も可能だ。Mac OS Xで利用する上ではAquaインタフェースが利用できる。

関連リンク:REALbasic 3.0a5
カテゴリ:開発ツール, REALbasic


Inside Cocoa、Inside Carbonなど、印刷ドキュメントが販売を開始

アップルの開発関連のドキュメントを販売するFatBrain.comでは、Inside Mac OS X: Overviewに続いていくつかのタイトルが追加されており、現在は以下のものが販売されている。いずれも書籍になっている紙のドキュメントである。Inside Cocoaでは、Objective-C言語とオブジェクト指向プログラミングの書籍が含まれている。Inside CarbonはCarbonに搭載確実ないくつかのシステム機能の書籍がリリースされているが、マルチプロセッシング向けの書籍もある。またMac OS Runtime ArchitectureはすでにリリースされているもののMac OS 9向け改定版である可能性が高い。なお、以前はNew Inside Macintoshと呼ばれていた黒背表紙のInside Macintosh(Textなどの書籍があるもの)についても、新しい表紙で販売されている。MDOnlineでは入手できればそれぞれ記事として内容をお伝えする予定だ。

Inside Cocoa:
Object-Oriented Programming and the Objective-C Language ($13.00)

Inside Carbon:
Adding Multitasking Capability to Applications Using Multiprocessing Services ($12.00)
Managing Color With ColorSync ($32.00)
Inside Carbon: Obtaining and Using Icons With Icon Services ($5.00)
Inside Carbon: Programming With the Appearance Manager ($16.00)

Mac OS Runtime Architectures for System 7 Through Mac OS 9 ($10.00)

関連リンク:FatBrain.com: ADC Developer Library
カテゴリ:アップルからの開発資料, 雑誌、書籍


【小池邦人のプログラミング日記】2000/8/6<Mac OS Xへの道 Carbon対応の実際(3)>

既存のソースコードをCarbon APIに対応させ、Mac OS X環境でも起動できるアプリを作るための工程のうち、今回は(5)のPrint Manager APIの書き換えについて解説します。

(5)Print Manager関連のAPIを変更

Carbon環境では、以前(Mac OS 8/9)のAPIは、なるべくそのまま利用できるように考慮されています。(と言うか、それがCarbonの存在意義なのですが...)よって、古すぎて使用不可になったAPIを除き、旧ソースコードのAPIを書き換える必要はほとんどありません。ごく普通のアプリケーションのソースコードなら、85%から90%は書き換え無しでCarbon環境へ移行できると思われます。しかし、Carbon環境にはAPIが完全に書き換えられているToolBox Managerがふたつ存在します。そのうちのひとつが「Print Manager」です。Print Managerは、ToolBoxの中でもほとんど変更されることがなかった「最古」のManagerです。(化石になりかかっていた)よって、Appleがこの機会に「Manager自体の大修理が必要であろう!」と判断したようです。

例えば、旧Print Manager APIで用紙設定ダイアログを表示する処理を記述すると以下の様になりました。ドキュメントファイルのデータ内、もしくは’PREC’リソースに保存しておいたTPrint構造体(用紙情報)のハンドラ(THPrint)をPrStlDialog()に渡すだけの非常に簡単な仕組みです。(この処理ではTHPrintの内容が正しいかどうかは判断していませんので注意してください)


Boolean oldPageSetup(THPrint *thd)
{
Boolean ret;

PrOpen();
if( ! thd )
{
*thd=(THPrint)NewHandle( sizeof( TPrint ) );
PrintDefault( *thd );
}
ret=PrStlDialog( *thd );
PrClose();
return( ret );
}

これを新しいPrint Manager APIで記述し直すと、以下の様に変わります。旧Print Managerに関するヘッダーファイルは「Printing.h」だったのですが、CarbonLibでは「PMApplication.h」を用いますので注意してください。旧APIとの区別のために、新APIには、すべて頭に「PM」の文字が入ります。また、新Print Manager APIを使った処理は、必ずPMBegin()で開始し、PMEnd()で終了する必要があります。

新Print ManagerではTPrintの代わりにPMPageFormat構造体を利用します。ただし、このメンバーには直接アクセスすることはできません。まずは、リソースなどに保存したドキュメントの用紙情報(*phd)をPMUnflattenPageFormat()に渡しPMPageFormatを作成します。ドキュメントが用紙情報を持っていない場合には(*phdがnilの場合)PMNewPageFormat()とPMDefaultPageFormat()を使い、新しいディフォルトPMPageFormatを作成します。用紙設定ダイアログはPMPageSetupDialog()を呼ぶことでオープンします。ユーザによりダイアログのOKボタンが押されると、PMFlattenPageFormat()で新しいハンドラ(phd1)を得て、それをドキュメントに保存し直すようにします。

Boolean newPageSetup(Handle *phd)
{
PMPageFormat form;
Handle phd1;
Boolean ret;

PMBegin();
if( *phd )
PMUnflattenPageFormat( *phd,&form );
else
{
PMNewPageFormat( &form );
PMDefaultPageFormat( form );
}
PMPageSetupDialog( form,&ret );
if( ret )
{
DisposeHandle( *phd );
PMFlattenPageFormat( form,&phd1 );
*phd=phd1;
}
PMDisposePageFormat( form );
PMEnd();
return( ret );
}

続いてプリントアウトの例です。PMPrintDialog()でプリントアウトダイアログを表示するには、PMPageFormatに加えて、PMPrintSettings構造体も必要となります。PMPrintSettingsにはプリントダイアログでユーザが設定した情報が保存されています。プリントダイアログでOKボタンが押されると、プリント環境へアクセスするためにPMBeginDocument()にょりPMPrintContextを得ます。この例で実際にプリントを実行しているのはdoMyPrintOut()ルーチンですが、これはQuickDrawの描画ルーチンなどを用いてユーザ自身で作成することになります。(この仕組みは変わらない)旧Print Managerを利用してプリントアウト処理を実行したことがある方なら、新APIでも処理の流れ自体はそんなに大きく変化していないことが理解できると思います。

Boolean newPrintOut(Handle phd)
{
CGrafPtr cptr,port;
PMPageFormat form;
PMPrintContext pctx;
PMPrintSettings set;
PMRect pmrt;
Boolean ret;

GetPort( &cptr );
PMBegin();
if( phd )
PMUnflattenPageFormat( phd,&form );
else
{
PMNewPageFormat( &form );
PMDefaultPageFormat( form );
}
PMNewPrintSettings( &set );
PMDefaultPrintSettings( set );
PMPrintDialog( set,form,&ret );
if( ret )
{
if( ! PMBeginDocument( set,form,&pctx ) )
{
PMGetAdjustedPageRect( form,&pmrt );
if( ! PMBeginPage( pctx,&pmrt ) )
{
PMGetGrafPtr( pctx,&port );
SetPort( port );
doMyPrintOut();
PMEndPage( pctx );
}
PMEndDocument( pctx );
}
}
PMDisposePageFormat( form );
PMDisposePrintSettings( set );
PMEnd();
SetPort( cptr );
return( ret );
}

次回は(6)以降の工程について詳しくお話しする予定です。APIが完全に変更されたもうひとつのMnagerである「Scrap Manager」の話しが中心となります。

関連リンク:オッティモ
カテゴリ:Carbon/CF, 小池邦人のプログラミング日記


PCIカードのROMを参照する方法を記した文書が公開

Technoteに「PCI Expantion ROMs and You」という文書が公開された。PCIカードにはROMが搭載されているが、その内容を参照する方法などが記載されている。1つはOpenFirmwareの機能を使ってROMの内容を読み出すという方法で、そのコマンド入力方法や例が示されている。また、PCIPeekなどの関連ユーティリティを使った方法も説明されている。ここで説明している方法は、Mac OS Xには適用できず、現状のMac OSでの作業方法となっている。

関連リンク:Technote 2000:PCI Expansion ROMs and You
カテゴリ:周辺機器, Technote


List Managerの代替えライブラリがリリース、セルにコントロールを埋め込める

Brian S Hall氏は、ToolboxのList Managerの代替えとなるライブラリ「Blugs」のベータリリースを公開した。List Managerは、表形式のデータ表示をサポートする機能だ。List Managerは32KBまでのデータしか保持できないが、Blugsではより多くのデータを保持できる。タイトルバーをサポートし、行列共に65535まで作成できる。また、インラインのテキスト編集機能も備える。ソートや検索もできる。階層化にも対応し、リストの中にコントロールを含めることができる。Appearance Managerに対応しテーマの機能にも対応している。ToolboxのList Managerの機能は基本的なことしかできないが、Blugsを使えばかなり高機能なリスト処理が可能だ。Carbonにも対応する。

関連リンク:Blugs
カテゴリ:ライブラリ


USBケーブルでファイル転送、転送ソフトはWindowsとMacの両方に対応

ヒッツ・コミュニケーションズ株式会社は、USBを利用したファイル転送ケーブルとソフトウエアのセット「Easy A/D Wire」を発売開始した。ケーブルの両端は、USBのパソコン側コネクタに接続できる形状となっている。つまり、2台のパソコンのUSB端子間を直結して、1対1でのファイル転送を行う。転送用ソフトには、Windows用とMac OS用があるため、WindowsやMac OS同士はもちろん、WindowsとMacとの間でファイルの転送もできる。最大転送レートは8Mbpsで、ケーブルの長さは1.8mだ。Windows 98/SE、Mac OS 8.6以降に対応する。オープン価格である。この商品は、2000年2月のMacworld Expo/Tokyo 2000において参考出品され好評だったものだ。

関連リンク:Easy A/D Wire
カテゴリ:周辺機器


NetBootで起動時にZipドライブを使えるようにするパッケージが新機種に含む

Tech Info Libraryに公開された文書によれば、Gigabit EthernetのPower Mac G4、Power Mac G4 Cube、iMac 2000 Summerの各モデルでは、「NetBoot Image Pieces Package」が含まれている。これは、Zipドライブが搭載されたマシンでNetBootで起動したときに、Zipを利用できるようにするためのものだ。これをインストールしないとNetBootで起動できないわけではないが、Zipの利用ができなくなってしまう。

関連リンク:About the NetBoot Image Pieces Package
カテゴリ:Knowledge Base(旧TIL), ネットワーク