今回は「Python」について。一般ユーザにはなじみの薄い存在だが、なかなかどうして、かなり"使える"スクリプト言語だ。そのPythonにGUIを追加できる「wxPython」の導入手順など、OS Xで利用するための環境構築法を紹介しよう。

OS XでPythonを使う理由

OS Xはスクリプト言語が充実したOS、と言っていいだろう。UNIX系OSゆえにシェルのサポートは当たり前、shやbashなどBシェル系はもちろん、tcshなどCシェル系のシェルスクリプトまで動作する。PerlやTcl/Tk、PHPのサポートもUNIX系OSならば珍しくはない。一方、OSの基盤はBSDに変わったがMac OSの名を冠するOSだけに、伝統のAppleScriptにも対応する。

開発者目線で気になるのは、「Ruby」と「Python」がサポートされていることかもしれない。どちらもオブジェクト指向で言語仕様が整然としており、平易な記述が可能なため保守性向上を期待できる。JavaやObjective-Cなどメジャーな言語をプラットフォームとしても利用可能だ。動作速度もインタープリタ型としてはそれなりで、プロトタイプをこれら言語で作成するという開発者は多い。

特にRubyは日本発ということもあってか、ここ日本では厚いユーザ層に支えられている。書籍のほか有志が運営するWebサイトなど、参考文献も事欠かない。その生い立ちからか、シフトJISやEUCといった日本語用文字コードの扱いも得意だ。

一方のPythonは、Googleの公式言語に選ばれるなど海外での認知度が高い。日本語の情報が多いRubyに比べれば入り込みにくいが、情報量そのものはかなり潤沢で、ライブラリやサンプルの類も豊富。Mountain Lionに収録されるバージョン2.7.2はUnicodeをサポート、日本語テキストも扱える。ちなみに、xattrコマンド(/usr/bin/xattr)など、一部のコマンドはPythonスクリプトで記述されているほど。Pythonでも十分イケる環境が整っているのだ。

xattrなど、OS Xに収録のコマンドうちいくつかはPythonで記述されている

wxPythonのインストール

Pythonには「wxPython」というフレームワークがあり、これを利用すればかんたんにPythonスクリプトへGUIを持たせることができる。作成したコードはプラットフォームに依存せず、実行環境に応じたLook&Feelとなるため、OS Xで実行すればCocoaライクな外観となる。

wxPythonは標準装備されていないため、手動でインストールしなければならない。Pythonには「easy_install」という拡張モジュールの管理用コマンド(Rubyの「gem」に相当)が用意されているが、今回はバイナリパッケージを導入する方法を選択した。こちらのWebサイトから「wxPython2.8-osx-unicode-py2.7」というディスクイメージをダウンロード、手動でインストールしよう。

ただし、Mountain Lionでは「Gatekeeper」の働きにより、パッケージのインストール時にエラーが発生することがある。その場合には、システム環境設定「セキュリティとプライバシー」パネルを開き、「一般」タブで「すべてのアプリケーションを許可」を選択しておくこと(要管理者権限)。インストール完了後には、厳しめの設定に戻しておこう。

Gatekeeperをもっとも緩い設定にしないと、wxPythonのインストールに失敗する

Gatekeeperの設定は、システム環境設定「セキュリティとプライバシー」パネルで行う

それでもwxPythonが使えない……?

これでwxPythonを使える……かと思いきや、そうはいかない。WxPythonは32bitアーキテクチャ下でなければ動作しないようビルドされているため、64bitモードで動作するMountain Lionに収録のpythonコマンドでは利用できないのだ。

この問題を解決する1つの方法が、Mountain Lionのpythonコマンドを32bitモードで動作させること。用例1のとおりTerminalでdefaultsコマンドを実行すれば、デフォルトが32bitモードとなるため、エラーによりwxPythonを使用するスクリプトが起動しない、ということはなくなる。元に戻したい場合は、用例2のコマンドラインを実行しよう。

用例1:Pythonのデフォルト起動モードを32bitに

defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

用例2:Pythonのデフォルト起動モードを64bitに戻す

defaults delete com.apple.versioner.python Prefer-32-Bit

数行のコードでテキストエディタが完成

これで、Mountain LionでwxPythonを使うための準備は完了。試しに、以下のソースコードをプレインテキスト(文字コードはUTF-8)として保存し、「python ファイル名」として実行してみよう。実質10行足らずのコードだが、日本語入力も可能なテキストエディタとして動作することを確認できるはずだ。wxPythonでは、メニューバーの定義などGUIの実装をかんたんに行えるため、素っ気ないスクリプトも格段に使いやすくなることだろう。

import os
import wx

class MyFrame(wx.Frame):
     def __init__(self, parent, title):
         wx.Frame.__init__(self, parent, title=title, size=(300,200))
         self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
         self.CreateStatusBar()
         self.Show(True)

app = wx.App(False)
frame = MyFrame(None, "Text Editor")
app.MainLoop()

このように、OS XライクなLook&Feelを持つテキストエディタが10行足らずのコードで記述できた