Sandbox とファイルアクセス
- Apple
- ソフトウェア
- 開発
Mac App Store にある、“もももー”氏による Pixelmator のレビュー:
ファイル操作もまともに出来ないゴミ ★☆☆☆☆
V2.0以降全く治っていません、どこがMountain Lion対応かと。
ホームのピクチャフォルダへ外部ストレージにあるフォルダのSymbolic Linkを作成しても、フォトブラウザでは「アクセス権が無いので開けません」と表示されてアクセス出来ません。
PhotoShopでは普通に開けるので本アプリのバグと思われますが、基本的なファイル操作もまともに動作しないのであれば使い物になりません。
都合の悪いレビューは封殺したり、異常な数の不参考とは。。。
Appleはソニーと同じ悪行に陥ったのか。。。
これは Sandbox による制限なので Pixelmator Team はどうしようもないのだ。Photoshop で問題なく動くのは Sandbox 化されていないため。
Sandbox 内からアクセスできるファイル
2012 年 6 月以降、Mac App Store では Sandbox が必須になった。
Sandbox の目的は、必要なもの以外はアプリケーションに見せない/操作させないことであり、セキュリティの向上に大きな効果がある。
Sandbox を有効にすると、アプリケーションがアクセスできるファイルが次のものに制限される:
- アプリケーションをビルドするときに開発者が指定した絶対パス
- ユーザがアプリケーション内の“開く”ダイアログで選択したファイル
- ユーザがアプリケーション内にドラッグしたファイル
1 は開発者が指定できるが、必要以上に浅いパスにすると(“/” など)Mac App Store の審査に通してもらえない。
「写真を扱うアプリケーションなら“ピクチャ”フォルダ、音楽を扱うなら“ミュージック”フォルダを指定」ということだろうけど、ユーザが必ずホームフォルダ内の所定のフォルダにファイルを保管しているとは限らないのであまり役に立たない。
2 と 3、ユーザの操作は尊重するということだろう。
でもよく使うファイルやフォルダが決まっているなら問題がある。アプリケーションを起動するたびにユーザが“開く”ダイアログで選択しなければいけないのだ。
そこで OS X 10.7.3 では新しい API が追加され、2 と 3 でアプリケーションが得たアクセス権を環境設定やファイルの中に保持しておくことが可能になった。
ただしエイリアスやシンボリックリンクは除く
これもセキュリティ向上のためだろうけど、アプリケーションがあるフォルダに対してアクセス権を持っていても、その中のエイリアスやシンボリックリンクに対するアクセス権はないのだ。
例えば iTunes ライブラリにアクセスするアプリケーションがあるとする。“ミュージック”フォルダのアクセス権を持っていても、その中の“iTunes”フォルダがエイリアスで、実体が外付けハードディスクにあったりしたらアクセスすることができない。
前述のレビューの件もそれである。“ピクチャ”フォルダのアクセス権だけではその中のシンボリックリンクにアクセスできないのだ。
Pixelmator での対処法
では Pixelmator のフォトブラウザから外部ストレージのフォルダにアクセスするにはどうすればいいのか。ユーザが選択すればいいのだ。
Pixelmator のフォトブラウザにはデフォルトで“ピクチャ”フォルダが登録されているが、そこから中のシンボリックリンクを開けようとせず、外部ストレージにあるというフォルダを自分の手でフォトブラウザにドラッグして登録すればいい。
Share
リンクも共有もお気軽に。記事を書くモチベーションの向上に役立てます。