| New MacLab. | MacLab. News Blog | English |
Data Component Object
AppleScriptの変数に格納することができるあらゆる形式(クラス)のデータをバイナリファイルに保存する共有ライブラリです。様々なデータを自由にファイルに読み書きすることができるようになります。
このファイルはリソースフォークを伴わないバイナリデータなので,DOSフォーマットのディスクやインターネット上のUNIXサーバに保存してもデータが失われません。データには任意の形式のパスワードをかけて保存することが可能です。また,不正コピー防止技術にも対応しています。
スクリプトオブジェクトも自由に読み書きすることができるようになるので,
スクリプト共有ライブラリ規格を支える基礎技術でもあります。
このソフトウエアは開発者向けの資料を含んでいます。単純にライブラリのみをインストールする場合は,ネットワークインストーラを利用することができます。このソフトウエアは共有ライブラリであり,システム全体の動作に影響を与える可能性は低いと考えられますが,このソフトウエアを使用したことによるいかなる結果についても作者は責任を負いません。
| Data Component Object をダウンロード |
| ネットワークインストーラ |
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 Runner | AppleScript | DBin | ASRN | .DBN | application/x-AppleScript |
CyberHandler | 汎用データ | DBin | CBHD | .DBN | application/data-component-object |
DecorChanger | ImageBin | DBin | DecC | .DEC | application/x-DecorChanger |
共有ライブラリ | AppleScript | shlb | CBHD | - | - |
互換性
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.2 | ver.1.3〜1.4 | ver.1.5〜1.8 | ver.1.9 | CoreObj |
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が呼ばれるので,最終的には読むことができます。
変更履歴
- ver.1.95
- FileVault環境でファイルタイプが変更できなかった問題を解決。
- ver.1.94
- Tigerの環境判定に失敗していた問題を解決。
- ver.1.93
- Tigerの環境判定に失敗していた問題を解決。
- ver.1.92
- TigerでURL Access Scriptinngが動作しない問題に対応し、Panther以降ではcurlを使用するようにした。
- ver.1.91
- Panther以降の環境でFileVaultが有効になっているとスクリプトのダウンロードが行えない問題を解決。loadObjハンドラ3.5。
- ver.1.902
- 1.901でガイド機能が無効になっていた問題を解決。
- ver.1.901
- ファイル読み書きライブラリDataCompObj ver.1.901リリース。Mac OS X においてブラウザ起動AppleEventが動作せずアプリケーションをクラッシュさせる問題に対応(Mac OS 10.1.xでは問題なかったように思いますが、念のためすべてのバージョンのMac OS Xで使用停止にしました)。Safariのタブブラウザ化によって動作しなくなっていた一部の機能を修正しました。
- ver.1.9
- Mac OS Xにおいてコピープロテクト処理をしたファイルが不正なダイアログを表示する問題を解決。ファイルのパッシブ読み出しに対応。
- ver.1.89
- MacBinary形式のリソース付きファイルをダウンロードするdownloadMacBinハンドラを追加。フォルダ名とファイル名の処理をMac OS Xの仕様に合わせて修正。
- ver.1.88
- ブラウザで開いているページのURLとタイトルを取得するgetBrowserInfo()ハンドラを追加。
- ver.1.87
- Mac OS Xにおいて相対パスの読み書きができない問題を解決。Mac OS 8以降においてブラウザのパスを正しく取得できるように修正。
- ver.1.86
- インターネットのURLを開く命令が特定の場合にエラーの原因となる問題を修正。
- ver.1.85
- Mac OS Xにおいてファイルパスの取り扱いをUnicode化。
- ver.1.84
- Mac OS Xにおいて不正コピー防止プロテクトをサポートしました。ただし、Mac OS 9以前において保存された不正コピー防止プロテクトとは互換性がありません。また、Mac OS 9以前における不正コピー防止機能もセキュリティを強化しました。。
- ver.1.83
- Mac OS Xにおけるファイル読み書きの修正。
- ver.1.82
- OpenURLルーチンの修正。
- ver.1.81
- ファイル読み書きおよび他のライブラリへのアクセスをMac OS Xにあわせて修正。
- ver.1.8
- Mac OS Xにおける相対パスの取り扱いが Mac OS 9と同じになるようにしました。
- ver.1.79
- Mac OS X上でファイルタイプの変更ができない問題を解決。ファイル読み書きの際のファイルパスの取り扱いを改善。ブラウザ選択ルーチンを改良。
- ver.1.77, 1.78
- ライブラリの検索時にMac OS Xのルートディレクトリに空のファイルができてしまう問題を解決。
- ver.1.76
- 新規ファイルの書き出しが正しく行えなくなっていた問題を解決。
- ver.1.75
- ファイル書き出し時にエラーが起きた場合,その後に内部の初期化を忘れている問題を解決。AppleScript 1.8(Mac OS X 10.1.2)でファイルの上書き後にファイルが削除されてしまう問題を解決。ファイル読み書きのファイルパスの内部処理をユニコードに統一。
- ver.1.74
- AppleScript 1.8(Mac OS X 10.1.2)でファイルの上書きができなくなった問題に対応。
- ver.1.73
- Mac OS Xおいてコピー防止機能が動作しないため,同機能のルーチンが明確なエラーを返すようにした。Mac OS Xではブラウザの検索が行えない問題に対する対応を追加。
- ver.1.72
- Mac OS 9.1において,テンポラリフォルダの取り扱いが修正されたことに対する修正,ファイル読み書きが変更されたことに対する修正。
- ver.1.71
- Mac OS 9において,稼動中のアプリケーションの取り扱いが変更されたことに対する修正,Apple Browser Launcherがバンドルされなくなったことに関する修正。Mac OS Xにおいて機能拡張フォルダへのアクセスが制限されたことに伴い,新たに:Lib:フォルダを使用するように修正。標準ブラウザをIEに変更。
- ver.1.7
- 将来の新しいデータ読み出し形式に備えた仕様の拡張を実装。保護なしのデータファイルのサイズを軽減。一部の特定のデータはパスワードとして利用できなかった問題を解消。
- ver.1.62
- 複数のブラウザが同時に使用中だった場合の処理を改良。他の共有ライブラリへのアクセスを提供するloadObjハンドラを実装。
- ver.1.61
- MacOS 8.5以前の環境でネットワークアクセスの処理が向上した。
- ver.1.6
- 不正コピー防止用ファイルが通常の読み込み動作で読み込み可能になった。
- ver.1.55
- 不正コピー防止用のgetIDルーチンを追加。非公開。
- ver.1.54
- downloadObjルーチンが URL Access Scriptingに対応。
- ver.1.53
- 最新のdownloadObjルーチンを実装し,インターネット上の書類もローカルと同様に読めるようになった。
- ver.1.52
- データ書き込み中にエラーが生じた場合に内部データをきちんと初期化してメモリリークが発生しないようになった。ファイル書き出し後にファイル参照IDが返るようになった。テンポラリファイルが初期化されないことがある問題を解消。
- ver.1.51
- readProtectDataFileのバグの修正。ファイルタイプの変更方法の修正。
- ver.1.5
- Macbinary化された書類も読むことが出きるようになった。メモリ消費量の削減。
- ver.1.471
- 日本語環境下におけるパスワード画面を日本語化。
- ver.1.47
- パスワード画面のアイコンを変更。
- ver.1.46
- ファイル情報取得方法の拡張と過去との互換性の向上。
- ver.1.45
- 記録されるデータの拡張。バイナリデータのセキュリティ向上。
- ver.1.43
- バグの修正。処理の高速化。
- ver.1.42
- セキュリティの強化。
- ver.1.41
- ファイルタイプの設定に関する機能を強化。
- ver.1.4
- セキュリティを強化。1.2以前のバージョンのライブラリでは読めないフォーマットになった。
- ver.1.3
- パスワード保護を採用。データ読み出しの方式を変更。
- ver.1.2
- Deamonを分離してファイルを軽量化。スクリプト構造体の情報トラックを利用。
- ver.1.1
- DecorChanger 1.1のみに使用。
- ver.1.0
- はじめてのリリース。リスト構造体の情報トラックを利用。
| Index |
Copyright(C) SUZUKI Kazufumi, All rights reserved.