で作る Cocoa アプリ(5)
今回は Xcode のプロジェクトファイルを作る(だんだんアプリを作る気分が盛り上がる).
Xcode を立ち上げ,New Project... を選択する.
PyObjC が正しくインストールできていれば,Cocoa-Python Application および,Cocoa-Python Document-based Application が新に選択できるようになる.
今回作るアプリは Document-based ではないので,Cocoa-Python Application を選択する.Next ボタンを押して Project 名をつけるとプロジェクトファイルの出来上がり.
次は,Interface Builder で画面を作る(って,今日は大晦日なのね...).
で作る Cocoa アプリ(4)
(3)を実現するために必要な機能は次の通り:
それぞれのソフトの入手先は次の通り:
PyObjC: http://pyobjc.sourceforge.net/
mysql-python: http://sourceforge.net/projects/mysql-python
インストール:PyObjC
- Download のリンクから,「PyObjC 1.2 installer package for Apple's Python (MacOS X 10.3)」をクリックし,必要なソフトをダウンロード,と思ったら,リンクをクリックしてもダウンロードされない.なんで? 気を取り直して「Files section of our SourceForge project.」をクリックし,「pyobjc-1.2-python2.3-macosx10.3.dmg」をダウンロードする
- pyobjc-1.2.mpkg をダブルクリックするとインストーラが起動するので,指示に従う
以上で,PyObjC のインストールは完了.
インストール:mysql-python
- MySQL-python-1.0.0.tar.gz をダウンロードする
- ファイルを解凍し Console で次の通り:python ./setup.py build
- error が出まくり,build 失敗.error が発生する原因は,MySQL 用のヘッダーファイルが無いため.もし,既に MySQL がインストールされている環境であれば,一発で build できるはず.無い物は用意すればよい,ということで,やや遠回りながら,MySQL のソースをダウンロードし,必要なファイルを揃えることにする
- setup.py を実行時に出力される error を見ると,
_mysql.c:41:19: mysql.h: No such file or directory
_mysql.c:42:26: mysqld_error.h: No such file or directory
_mysql.c:43:20: errmsg.h: No such file or directory
...
とあるので,とりあえず,これらのファイルを用意する.
- MySQL は次からダウンロードできる:http://dev.mysql.com/downloads/
- 現時点の最新版 ver. 4.1.8 Standard (Without installer),MacOS X 用 tar.gz をダウンロードする
- ver. 4.1.8 Standard (Without installer) のファイルから.ファイルを解凍すると,include の中に,必要なファイルが揃っている.列挙すると,
- setup.py を確認してみると,75 行目付近に OS ごとに path が指定されている部分がある.ここを,先ほどダウンロードした MySQL のソース中の lib ディレクトリに変更すればよい.具体的には,
#include_dirs.append('/sw/include/mysql')
#library_dirs.append('/sw/lib/mysql')
include_dirs.append('/Users/who/Desktop/mysql-standard-4.1.8-apple-darwin7.6.0-powerpc/lib')
library_dirs.append('/Users/who/Desktop/mysql-standard-4.1.8-apple-darwin7.6.0-powerpc/lib')
のような感じ
以上で必要なソフトが揃った.
接続テスト:Python to MySQL
Python から MySQL へ接続できるか,簡単なテストを実施してみる.この実験で,mysql-python が正しくインストールされているか確認できる.
まだ Cocoa は使わない.
次のような Python script ファイルを作成:
file --test_connect.py--
python test_connect.py とし,Console に,
#!/usr/bin/python
import MySQLdb, _mysql, time, datetimevhost = "192.168.1.1" # MySQL のホストを指定
vuser = "who" # 接続ユーザ名
vpass = "pass" # パスワード
vdatabase = "testdb" # MySQL に作ったデータベース名def connectMySQL():
host_name = vhost
user_name = vuser
password = vpass
database_name = vdatabase
mesg = "Your input information as below:?n"
mesg = mesg + "?t Host = %s?n" % (host_name)
mesg = mesg + "?t User = %s?n" % (user_name)
mesg = mesg + "?t Pass = %s?n" % (password)
mesg = mesg + "?t database = %s?n" % (database_name)try:
db = MySQLdb.connect(host = host_name,
user = user_name,
passwd = password,
db = database_name,
connect_timeout = 1440 * 60)mesg = mesg + "OK, I can connect MySQL Server"
print mesg
return db
except:
mesg = "I can't connect"
print mesg
return Noneif __name__ == '__main__':
test = connectMySQL()
OK, I can connect MySQL Server
と表示されれば接続成功
で作る Cocoa アプリ(3)
機能を実現するための画面を作成してみる(画像参照).
この画面は次のようなストーリーで展開する.
- Start ボタンを押すと,MySQL サーバに接続し,show full processlist を実行
- show full processlist の結果を,Table に表示する
- show full processlist は,自分自身も表示するので,Table には最低でも 1 行表示される
- show full processlist は,5 秒に一度程度実行し,Table の情報も更新される
- show full processlist 実行中は,Start ボタンを変化させ,サーバに接続中であることを視覚化する
- Table に表示された任意の行を選択し Kill ボタンを押すと,選択したしたプロセスを終了できる
- Log フィールドには,サーバとの接続情報など,付加的な情報を画面に表示する
- Menu から Quit を選ぶとアプリケーションは終了する
以上の通り.
で作る Cocoa アプリ(2)
今回作るアプリの機能は次の通り:
- MySQL のサーバにアクセスし,show full processlist を実行し,結果を表示する
- 5 秒おきに実行結果を更新する
- 任意のプロセスを kill できる
で作る Cocoa アプリ(1)
書くぞ,書くぞと思い書いていなかったが,やっと書くことにする.
PyObJC を使うと,Python で Cocoa アプリが作れる.と聞くと,「イイじゃん」と思いがちだが,実際にはそんなに楽ではありません.Objective-C というか,AppKit や Foundation の関数を熟知しないとダメです.でも,フル Objective-C ベースで書くのに比べると,楽にはなります.
今回作るアプリは Python で Console で動く簡単なのを作っていて,ふと Cocoa の GUI をつけたらどうなるか? と思いつくって見たのがきっかけです.
PyObjC で Cocoa ベースのアプリを作れることは分かっていても,実際の作り方を解説しているページは少ないので,備忘を兼ねて書くことにする.