忍者ブログ
natsuの秘密基地です
はまり
はまり一件ごとのお話の流れです
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール
HN:
natsu
性別:
男性
趣味:
酒など
自己紹介:
ここに書かれていることはフィクションです。
ブログ内検索
アクセス解析
[5] [6] [7] [8] [9] [10] [11] [12] [13
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

 
 
引き続き、はまっていくことにする。
 
 
PyObjCが動いてるかどうか見る。
pythonをうごかして、
>>>import objc
 
エラーが出るのでどうも調子が悪い。
 
sudoせずに
 
easy_install -UZ pyobjc
easy_install -UZ pyobjc-framework-DictionaryServices
 
 
なんか
>>>import objc
は動くようになったけど、
環境がだいぶ汚れているような気がする。
Xcodeでプロジェクトにフレームワークを追加しようとしたら、
pythonのフレームワークが二つ出るし。
 
 
これはPythonの2.6.5をいれたからか。
PyObjCを入れたりしたからか。
なんかしたような気がするが思い出せない。
いろいろしすぎた。
 
 
 
でも、きっと、たぶんPyObjC。
とりあえず、もとあったのをリネームしておく。
/System/Library/Frameworks/Python.framework
のやつ。
 
しかし、PyObjC。
私、英語読めないくせに、サイトのニュースをよく見ると。
・PyObjC 2.2 でたよ
・easy_install pyobjc==2.2で入れてね
・py2appは手動でいれてね
・ただし2.2を入れるのはおすすめしないよ
・開発用だし
みたいな。
 
 
ベータは外れたけど、
ベータなんですね。
 
 
リネームを元に戻し、
新しく入ったっぽいのをリネームする。
/Library/Frameworksのやつ。
 
 
自分は超絶にいいかげんだと言わざるを得ない。
よくわかんないものをいいかげんに使ってる。
なんかもう。O型炸裂。
ちなみに部屋はのだめ。
 
 
どっかでなんか、いろいろとまとめておく必要があると感じた。
ただし、感じるだけで終わるとも感じた。
 
 
続く。
 
PR
 結局バンドルって何なのか。

 
まあ、はまったら、ちまちま進むしか無いんです。いつもそうしてきたんです。
ということなんで辛抱しながら先に進むんです。辛いですが。
 
ちなみに、辛そうで辛くない少し辛いラー油は、
つらそうでつらくない、すこしつらいらーゆ、
って読むらしい。2chのまとめでみた。

 
勉強になる。


 
 
 
っていうかバンドルって何?って思うわけで。
いろいろ調べる。
すると、
 
バンドルはディレクトリです。
 
だって。
 
 
 
それではみもふたもないと思った。
 
確かに、アプリケーションディレクトリの中に入ってls -alするとみんなdがついてる。
ためしにディレクトリを一つつくって、.appの拡張子をつけると実行できるっぽくなった。
Windowsでもファイルに.exeつければ実行できるっぽくなるけど。
 
実行しちゃうといいさ。
 
 
 
結局、実行可能ファイルやそこで利用するリソースのたぐいをひとまとめに放り込んだもの。
っていう定義らしい。設定や目録(info.plist)も入ってなきゃいけない。
で、規格化された階層構造でこいつらを保持している。

たとえば、リソースのたぐい、イメージ、サウンド、nib(xib?)ファイルは
Resourcesディレクトリにおかれる。
アプリの中で使われる文言を国際化したい場合は、
Resourcesディレクトリの下に*言語*.lprojのついた名前でディレクトリを作る。
 
 
iPhoneやMacOsのアプリやらフレームワークやらプラグインやらはみんなバンドル。
ある種の例外を除いて。
 
 
それぞれのアプリケーションはメインバンドルを持っている。
というか、そのディレクトリ自体がメインバンドルというか。
で、メインバンドルはアプリケーションのコードをもっていないといけない。
 
メインバンドルはNSBundleのmainBundle関数で取得できる。
そこから、リソースなどのパスなど取得できる。
 
 
バンドルはバンドルを保持でき、一定の手続きで実行時ロードできる。
これらはprincipal classをもっている。
これはバンドルのエントリーポイントとなる。
NSBundleを使いprincipal classを取得して、
取得したprincipal classからクラスを手に入れたり
オブジェクトを作ったりして使えばいいのだと思う。
 
Finderはディレクトリ名の拡張子を見ており、
.app、.bundle、.framework、.plugin、.kext
などの拡張子をもつものをバンドルやパッケージと見なす。
 
 
 
ということらしいっす。
 
 
続く。
 
 py2appを利用すればPythonで書かれたコードをバンドル化することが出来る。
 
 
python setup.py py2app
 
 
あら不思議。バンドルが出来上がる。
動くかどうかは別にして。
 
 
setup.pyは自分で書くことも出来るけど、
自動で生成することも出来る。
 
 
py2applet --make-setup Natsu.py
 
 
あら不思議。setup.pyが出来上がる。
動くかどうかは別にして。
 
 
 
 
ちょっと昔に書いたPythonの関数を、Objective Cから呼び出したい。
なんてことは、いつだってあることだと思う。
おもいついちゃう。お風呂に入ってるときとか。
 
そういうとき、Pythonのコードをプラグイン的なバンドルにしておいておけば、
Objective Cで作ったアプリケーションバンドルに放りこめば使えちゃうじゃん。
DLLぽっく。とか考えるのであった。
 
自分、Mac初心者なもんで、
普通の人から見たら、もしかしたら変態的な考えなのかもしれないけど。
 
py2appはPythonのスクリプトからアプリケーションバンドルやプラグインを作れる。
って書いてあったので、これを使えばいいじゃん。と思う。
 
 
 
 
私ははまり癖があるんだけど、案の定はまった。
ちょっとやそっとじゃ動いてくれない。
 
普通にアプリケーションバンドルの中にPythonのソースを突っ込んで使った方がいいと思った。
 
 
続く。
 


Copyright (C) 2010 NEST,
All right Resieved.*Powered by ニンジャブログ *Designed by にこるん  / 忍者ブログ / [PR]