IconData Component Object

AppleScriptの変数に格納することができるあらゆる形式(クラス)のデータをバイナリファイルに保存する共有ライブラリです。様々なデータを自由にファイルに読み書きすることができるようになります。
このファイルはリソースフォークを伴わないバイナリデータなので,DOSフォーマットのディスクやインターネット上のUNIXサーバに保存してもデータが失われません。データには任意の形式のパスワードをかけて保存することが可能です。また,不正コピー防止技術にも対応しています。
スクリプトオブジェクトも自由に読み書きすることができるようになるので,スクリプト共有ライブラリ規格を支える基礎技術でもあります。
このソフトウエアは開発者向けの資料を含んでいます。単純にライブラリのみをインストールする場合は,ネットワークインストーラを利用することができます。このソフトウエアは共有ライブラリであり,システム全体の動作に影響を与える可能性は低いと考えられますが,このソフトウエアを使用したことによるいかなる結果についても作者は責任を負いません。

AppleScriptからの利用法

インストーラでインストールしたライブラリはスクリプトオブジェクト共有ライブラリ規格のページ()でダウンロードすることができるloadObjルーチンを使用して,以下のようなスクリプトによりスクリプトアプリケーションのメモリに読み込んで利用することができます。
property loadObj : load script file "loadObj() Handler"
on loadObj(ObjName)
    loadObj(ObjName) of loadObj
end loadObj

display dialog (returnName() of loadObj("ASRunnerObj")) buttons {"OK"} default button 1
loadObj(ObjName) ルーチンは実行環境であるAS Runnerにも組み込まれているので,AS Runnerにおいて実行されるスクリプトはloadObj(ObjName) ルーチンを省略できます。

データの読み書き

writeDataFile(FilePath, theData)
ファイルパスと保存するデータを渡します。
readDataFile(FilePath)
データを読み込んで返します。パスワードで保護されている場合,パスワードを入力する画面が表示されます。実際の動作には(1) CyberHandlerObj ver.3.86未満に搭載される簡易モード,(2) DataCompObj ver.1.5未満および CyberHandlerObj ver.3.86以上に搭載される標準モード,(3) DataCompObj ver.1.5以上に搭載される拡張モードがあります。簡易モードではある条件下のファイルが読めなくなります。拡張モードではマックバイナリ化されたファイルも読むことができます。モードの違いは,スクリプトを記述する上ではほとんど意識する必要はありません。

パスワード保護

データをパスワードで保護します。データの記録には,ルーチン名にProtectが挿入され,パスワードの分だけパラメータの数が一つ増えた別のルーチンを使用します。読み出しの際には通常の readDataFileハンドラを用いることができ,その際にはパスワードを要求するダイアログが表示されます。ダイアログを表示せずに直接データを読み出せるルーチンも用意されています。
writeProtectDataFile(FilePath, theData, PassWord)
ファイルパスと保存するデータを渡します。パスワードにはいかなる形式のデータも用いることができます。
readProtectDataFile(FilePath, PassWord)
パスワードを与えてデータを読み込みます。ファイルを読む際にあらかじめ変数としてパスワードを与えるルーチンです。パスワードを独自のインターフェースで入力させたいときや,すでにスクリプトがパスワードを知っている場合(複数のファイルの一括読み出しなど),文字列以外の形式のパスワードを使用している場合などに利用できます。パスワードが誤っている場合はエラーが返ります。

不正コピー防止

DataCompObj ver.1.6から導入された機能です。ファイルを専用のパスワードで保護し,他のユーザー環境では開くことができないようにします。DataCompObj ver.1.96から方式が一部変更され,ファイルの保存に関するハンドラのみが新たに追加されました。読み出しは通常のreadDataFileハンドラを用いてください。
writeLocalDataFile(thePath, theData)
そのMacintosh固有のIDを返します。


tell loadObj("DataCompObj")
   writeLocalDataFile(thePath, theData)
end tell

インターネットアクセス機能

DataCompObjはインターネット上のファイルを読むためのルーチンを備えます。
downloadObj(URL)
指定したURLのDataCompObjフォーマットの書類を開き,その中のデータを返します。そのファイルをサーバにアップする際に誤ってマックバイナリが付けられてマックバイナリフォーマットとなっていても読むことができます。この機能の利用には漢字Talk7.5以上とNetscapeなどのWebブラウザが必要です。MacOS 8.6以上ではブラウザではなく URL Access Scriptingが自動的に呼び出されます。もちろん、Mac OS Xでも動作します。
downloadFile(URL, thePath)
指定したURLのファイルを指定したファイルパスにダウンロードします。DataCompObjはもちろん,ファイル形式を問いません。
downloadFile(URL, thePath)
指定したURLのファイルを指定したファイルパスにダウンロードします。DataCompObjはもちろん,ファイル形式を問いません。
getBrowser()
ユーザーが使用している標準ブラウザの名称またはパスを返します。各種のブラウザコントロールに使用します。
getBrowserInfo()
ブラウザで表示中のページの名称、URL、ブラウザの名称がリストで返されます。

その他のルーチン

run
この共有ライブラリの使用方法を記述した画面を見ることができます。利用できるルーチン名をクリップボードにコピーすることもできます。
readDataInfo(FilePath)
対象となるファイルを保存したスクリプトに関する情報を読み出します。保存されているファイルにはバージョンにより様々な方式で情報が記録されており,その違いをすべて吸収するようにできています。スクリプトオブジェクト共有ライブラリ規格に定められた必須ルーチンを備えたスクリプトから保存した場合,そのスクリプトに関する情報もファイルに書き込まれます。この情報は保存する本来のデータに影響を与えることはありません。CyberHandlerにDataCompObj形式のファイルをドラッグ&ドロップすることこの命令を利用してファイルの情報を表示します。
setFTCT(FilePath, FileType, CreatorType)
指定したファイルのファイルタイプとクリエータタイプを変更します。この機能の利用には漢字Talk7.5以上が必要です。

画像・音声への対応

DataCompObjは,AppleScriptで取り扱うことができるすべてのデータをファイルに保存することができます。リスト,レコード,文字列,整数,実数などの一般的な値はもちろん,JPEG圧縮されたQuickDraw画像や音声データ,Finder用のファイルアイコンなどにも幅広く対応しています。
たとえば,クリップボード経由で取り込んだPICT画像を保存しておいて Dialog Directorで表示したり,サウンドデータを Jon's Commandsで演奏するスクリプトを作成することができます。AppleScriptアプリケーションに対する音楽や映像のネット配信も可能です。

ファイルタイプについて

DataCompObjはファイルタイプ,クリエータなどに依存することなく,データの内容だけを見てファイルを読み書きすることができますが,一般的なMacOS用アプリケーションを作成する際には特定のファイルタイプなどを与えた方が便利です。以下に,DataCompObjを使用する代表的なソフトウエアの書類とそのファイルタイプなどの設定を紹介します。
内容ファイルタイプクリエータ拡張子MIMEタイプ
AS RunnerAppleScriptDBinASRN.DBNapplication/x-AppleScript
CyberHandler汎用データDBinCBHD.DBNapplication/data-component-object
DecorChangerImageBinDBinDecC.DECapplication/x-DecorChanger
共有ライブラリAppleScriptshlbCBHD--


互換性

ver.1.3以降のバージョンにおいてパスワード保護付きで保存したファイルは,ver.1.2以前ではそのデータを読み出すことができません。
ver.1.4以降のファイルは構造が変更されたため,ver.1.2以前で読み出しができません。
ver.1.5以上は,MacBinary化された書類も読むことができます。
CyberHandlerObj ver.3.86以上およびそれを利用した AS Runner ver.1.46以上は,DataCompObj ver.1.3に準じた読み込みルーチンを持ちパスワード保護やコピー保護された書類を読むことはできますが,マックバイナリ形式の書類は読むことができません。読めないファイルがあった場合,自動的にDataCompObj共有ライブラリが呼び出されます。
Mac OS 9以前と Mac OS Xでは不正コピー防止の方式が異なるため、お互いに互換性はありません。片方の環境で不正防止コピーをかけると、もう一つの環境でそれを開くことは困難です。

書類形式ver.1.0〜1.2ver.1.3〜1.4ver.1.5〜1.8ver.1.9CoreObj
ver.1.0〜1.3形式
ver.1.4〜1.9形式×
ver.1.0〜1.9形式
MacBinary形式
××△*3
ver.1.3〜1.9形式
パスワード保護形式
×○ *1○ *1◯*1◯*1
ver.1.6〜1.9形式
コピー防止形式(Classic Mac OS)
×
ver.1.8形式
コピー防止形式(Mac OS X)
×××*2△*3
ver.1.9形式
コピー防止形式(Mac OS X)
××

*1:パスワードが必要です。
*2:ver.1.8 Mac OS X形式にはバグがあり、ver.1.9以降を用いないと読むことが出来ません。
*3:自動的に外部のDataCompObjが呼ばれるので,最終的には読むことができます。

変更履歴


関連ページ
   スクリプトオブジェクト共有ライブラリ規格
   エラー番号一覧
   Data Component Object
   AppleScript Runner Server CGI
   ライセンスについて


Copyright(C) SUZUKI Kazufumi, All rights reserved.