Link: Sveinbjorn Thordarson's Website - Platypus.
Platypus is a development tool for the Mac OS X operating system. It can be used to create native, flawlessly integrated Mac OS X applications from interpreted scripts, such as shell scripts or Perl and Python programs. This is done by wrapping the script in an application bundle directory structure along with an executable binary that runs the script.
現在進めているプロジェクトでは、ネットワーク経由でクライアントとデータをやり取りするサーバがあるのですが、JavaではなくRubyで行けるところまで行こうと思っています。Rubyの場合、通常だとTerminalから起動することになりますが、この方法だとTerminalに慣れない人には敷居が高くなってしまいます。また、複数のファイルに分かれている場合、煩雑に見えてしまいますし、操作ミスでファイルを移動してしまったりするといきなり起動しなくなったりクラッシュしたりという事態につながります。
こうしたことが起きないようにするには、通常のOS Xのアプリのように見せればいいわけです。Windowsの場合には、Exerbというツールがポピュラーですが、OS Xでもないかなぁと表探していたらこのPlatypusにたどり着きました。
早速試してみたところ、設定作業はとても簡単でした。最初の段階として試した、単独のスクリプトで、かつライブラリがしかるべき場所にインストール済みの場合には問題なく動作しました。しかし、ローカルのファイルをrequireしている場合には「そんなファイルは見つからない」と言われてしまいます。これは、Platypusでスクリプトを実行した場合、カレントディレクトリが「/」になってしまうためです。
これに対する解決法として、シェルスクリプトについては「Getting Current Working Directory」に説明がありました。そこで、次のようなスクリプトを書いて、そこから本来起動したいRubyスクリプトを起動することにしました。
cd "$1/Contents/Resources"
ruby ./funnel_server.rb
こうすることで、めでたくカレントディレクトリの問題も解決し、Terminalから起動した場合と同様に起動できるようになりました。もしかしたらもっとスマートな解決方法があるのかもしれないと思いつつ、とりあえずはスタンドアロンのアプリケーションのような感じで使えるようになりました。
実際に起動してみて気がつきましたが、Javaの場合には初回起動時はVMが起動するまでに結構な時間が必要です。これに対して、Rubyの場合には初回から瞬時に起動します。OS Xでは最新の安定板である1.8.6と比べると随分古い1.8.2しかインストールされていないという問題はありますが、それを除けばいい感じで使えそうです。引き続き、いろいろと試してみようと思います。


コメント