« 2010年8月 | メイン | 2010年10月 »

●MacOSXでPython等のスクリプトを通常アプリのように

2010年9月16日    

今 Pythonで絵描きさん用ツールを作成しているのですが
それを配布するにあたりスクリプトの状態のままではマズいので

(主に使い勝手の面で)

通常のアプリケーションのように扱えるようにする方法を調べたのでメモ

ほぼ ここのサイトにある通りなのだけれど
http://d.hatena.ne.jp/y-echo/20100103/1262539509

参照しているサイトがMacOSX移行期のものなのでいつなくなるか不安なので

基礎的な情報として
MacOSXの一般的なアプリケーションは『ソフト名』に.appの拡張子のついたフォルダの中に

決まった形式で ソフトに必要な実行ファイルや画像ファイルを収めた形になっています
(アプリケーションバンドルと呼ばれます)

適当なフォルダに手動で.appの拡張子をつけると Finder上は一つのアプリケーションファイルのようになります

ただし 当たり前ですがそのままでは何も機能しません

アプリとして機能させるのに最小限必要なファイル構成は

[アプリ名.app]           ...親フォルダ
     └Contents
           ├Info.plist  ...アプリケーションの設定を記したXMLファイル
           └MacOS       ...実行するスクリプトやバイナリを収めるフォルダ
		       └(実行バイナリ等)
となっており Contentsフォルダ内にアプリケーションに必要なデータを収める形になっています
Finder上でアプリ名のフォルダ Contentsフォルダ MacOSフォルダを作ってもいいし
参考にしたサイトのように ターミナルでディレクトリを作ってもいいでしょう

ここではFinder操作でフォルダを作ります 親フォルダの.appの拡張子はまだつけないでおいてください

次にMacOSディレクトリに実行ファイルをいれます
通常のアプリではコンパイルされたファイルがここに入っていますが
シェルスクリプト等の実行可能なスクリプトファイルも利用できます
ここでは仮にPythonのスクリプトファイル test.py があるとします

最後に適当なテキストエディッタで文字コードUTF-8でInfo.plistを作成します

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>CFBundleExecutable</key>
    <string>test.py</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
  </dict>
</plist>

これでアプリ名のフォルダに.appと拡張子を付加すれば
アプリケーションとして機能するようになります

アイコンを付加したい場合は
Contentsの下にResourcesフォルダを作ってその中に.icons拡張子のアイコンデータを収めて
Info.plist のの間の部分に

	<key>CFBundleIconFile</key>
	<string>(アイコンファイル名)</string>
の2行を追加します

(アイコンデータの作り方は検索で比較的多く出るので省略)

概要はこんなところですが
試している間で失敗したことをいくつか

アプリ化したものを一度起動するとInfo.plist等のデータがメモリ上にキャッシュされてるのか
変更が反映されないようです 設定をかえた場合はアプリ名を一度かえてみてください

Python等のスクリプトファイルの改行コードはLFで
(普段のスクリプトファイルをCRで書いていたので動かなくて往生してしまいました)

次はWindows用のexe化だ

●Shadeの線形状をコミスタの定規に

2010年9月11日    

ComicStudioの3Dレイヤに続き定規レイヤーのデータの解析をしてみました
フォトショップのパスやShadeの線形状と同じベジェも使えるようなので

過去の自作スクリプトを活用してカメラウィンドウの表示のまま
Shadeの線形状をコミスタのレイヤーファイルとして書き出すスクリプトを
書いてみました。
146514837.jpg
本当はもう少し使いやすいものに仕上げたかったのですが
しばらくいじっていられそうにないので 暫定版の書捨てスクリプトのまま公開
line_to_cru100911.lzh
Shadeのブラウザ上で選択している線形状が書き出し対象になります
スクリプトを実行して生成された拡張子.cruのファイルを
ComicStudioでファイル>読み込み>レイヤーファイルで読み込みます
定規のレイヤーフォルダを選択した状態だと定規レイヤーとして
画像レイヤーを選択した状態だと そのレイヤーのサブ定規として読み込まれるようです