Mac OS XはGUIアプリケーションが洗練されていることのみならず、shell script、PythonそれにPerlがそのまま使える事が一部のユーザーにとっては意義のあることになっています。
ターミナル上で簡単に実行出来るスクリプトも便利なものです。常用するスクリプトはパスを通したりaliasで簡単に起動させることで実用になります。しかしながら、場合によってはGUIは無くても良いけどアイコンをクリックして起動させたいと思うこともあります。
スクリプトの.app化については既に多くの情報が出回っていますが、アイコンの作成まで含めると複数の情報を組みあせなければなりませんでした。また、私の目的であるperlスクリプトの実行後に画面を残して置くためには一工夫が必要でした。というわけで、自分への覚え書きにするとともに新たな.app化サンブルの提供を行うことにしました。
細かい説明は省いて、ガシガシとサンプルの作成を行なって行きます。
[ アプリケーション・バンドルの作成 ]
参考webページ: 技術/MacOSX/シェルスクリプトを”.app”(“Bundle”)化する
ターミナルを開いて適当な作業場所に移動します。
mkdir WhatDate.app
cd WhatDate.app
mkdir Contents
cd Contents
mkdir MacOS
mkdir Resources
WhatDate.app/Contents/MacOS/WhatDate.pl を以下の内容で作成。またchmod +xで実行属性も付けておく。
#!/usr/bin/perl
system("date");
print "EPOCH: ", time, "¥n";
@localtime = localtime;
print "JULIAN: $localtime[7]¥n";
コマンドラインから実行してみて動作を確認。
WhatDate.app/Contents/MacOS/WhatDate.bash を以下の内容で作成。これも同様にchmod +xで実行属性を付ける。
#!/bin/bash
BASEDIR=$(dirname $0)
open -a Terminal "${BASEDIR}/WhatDate.pl"
コマンドラインから実行してみる。今度は別のウインドウが開いて先のPerlスクリプトが実行されます。
WhatDate.app/Contents/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>WhatDate.bash</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
</dict>
</plist>
もうこれでアプリケーション・バンドルとしては成立しています。アイコンをクリックして起動できるかどうか確認してみましょう。
[ アイコンの作成 ]
インターネットで調べるとIcon Composerを使うべしという情報が沢山見つかりますが、今時は iconutil というコマンドライン・ツールを使用します。
参考リンク: MacアプリのRetina対応アイコン(*.icns)を作成する方法
まずはアイコン画像をでっち上げますが、解像度に応じて沢山作らないといけません。ガイドによると全て作らなくても良いと書いてありますが、どれを作っておけば良いかは書いてないので今回は全部用意することにします。
まずは適当な場所にフォルダー作ります。
mkdir WhatDate.iconset
その下に以下の画像ファイルを作成します。
icon_16x16.png
icon_16x16@2x.png
icon_32x32.png
icon_32x32@2x.png
icon_128x128.png
icon_128x128@2x.png
icon_256x256.png
icon_256x256@2x.png
icon_512x512.png
icon_512x512@2x.png
ファイル名の512×512は想像通り画素数です。後ろに@2xが付いている場合は倍の画素数になります。すなわちicon_512x512@2x.pngは1024×1024の画像ファイルを作成します。icon_16x16@2x.pngとicon_32x32.pngは同じ画素数ですが、あくまでもicon_16x16.pngの高解像度版です。場合によっては解像度によって違うデザインを使うこともあります。その場合、icon_16x16@2x.pngはicon_16x16.pngと同じデザインを使用するということです。
以下のコマンドを実行するとWhatDate.icnsが出来上がります。
iconutil -c icns WhatDate.iconset
出来上がった WhatDate.iconset を WhatDate.app/Contents/Resources/ 下にコピーする。
WhatDate.app/Contents/Info.plistに以下の2行を適当な場所に追加する。
<key>CFBundleIconFile</key>
<string>WhatDate.icns</string>
改めてWhatDate.app/Contents/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>WhatDate.bash</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleIconFile</key>
<string>WhatDate.icns</string>
<key>CFBundleSignature</key>
<string>????</string>
</dict>
</plist>
これで完成です。実際のアイコンは直ぐには表示されないかも知れません。
[ 配布 ]
これを配布する場合はディスクイメージにするのが簡単です。
まず適当なところにフォルダを作ります。フォルダ名は分かりやすくアプリケーション名と同じにしたりします。その中に、作成したアプリケーション・バンドルをコピー。必要に応じてReadme.txtみたいな説明も入れておきます。
ディスクユーティリティを起動。
「ファイル/新規/フォルダからのディスクイメージ」を選択します。
ファイル・ダイアログが表示されるので先に作ったフォルダを指定すれば配布用のディスクイメージが出来上がります。
配布先ではWhatDate.dmgをダブルクリックして開いた中にWhatDataアプリケーションが見えますので、適当なところにコピーして使用します。
参考までに、 作成したWhatData.dmgをサンブルとして置いておきます。
RT @nkozawa: Mac OS XでPerlスクリプトをアプリケーション化する: http://t.co/0UdraNVcHR
Kazuhiro Yoshikawa liked this on Facebook.
Kazunori Gotoh liked this on Facebook.
Mac OS XでPerlスクリプトをアプリケーション化する: Mac OS XはGUIアプリケーションが洗練されていることのみならず、shell script、PythonそれにPerlがそのまま使える事が一部のユーザ… http://t.co/s1A1MsItFA
Nakano Takashi liked this on Facebook.
Ryutaro Okuno liked this on Facebook.
Kenichi Kawamura liked this on Facebook.
この通りやってみましたが、うまくいきませんでした。
tetuさま、どのあたりで問題が出ているか教えていただければ手順について再確認してみます。