kivyとは
PythonのNUI(Natural User Interface)でのマルチタッチアプリケーション開発のためのオープンソースライブラリ。 一つのソースコードからAndroid、iOS、Linux、MacOSX、Windowsへと出力できるうえ、ライセンスフリーで使用できる。
今回はそんなkivyの本体と、OSX及びiOSへのパッケージング環境の導入に挑戦したが、情報が少なく結構苦労したので、メモしておく。
自分の環境
- MacOSX 10.11 Yosemite
- Xcode 7.1
- homebrew, pip導入済み
kivyのインストール
この辺を参考にしてインストールした。
まず、kivyの導入に必要なcythonとpygameをインストールする。
*11月3日23:25追記:下記のkivy-iosと最新のcythonの相性が悪いため、バージョン0.21をインストールする必要があることがわかった。
pip install cython==0.21
pip install pygame
その後本体をインストールするのだが、最も好ましいと思われるpipを用いた方法はうまくいかず。 仕方ないので、brew caskを用いてインストール。
brew cask install kivy
もしくはgitから直接
git clone http://github.com/kivy/kivy
make
でも良い。 上手くインストールされたか確かめるため、Hello Worldしてみよう。 適当なエディタでmain.pyを作成し
import kivy
kivy.require('1.8.0') ## replace with your current kivy version !
from kivy.app import App
from kivy.uix.label import Label
class MyApp(App):
def build(self):
return Label(text='Hello world')
if __name__ == '__main__':
MyApp().run()
と記述。 その後作業ディレクトリで
kivy main.py
すればウィンドウが立ち上がる。
kivy-sdk-packagerのインストール
作成したアプリをOSXの.appファイルとしてパッケージングする。 詳細はここを参照。
まず、適当なディレクトリにkivy-sdk-packager/osxをインストールする。
git clone https://github.com/kivy/kivy-sdk-packager
cd kivy-sdk-packager/osx
cp -a /Applications/Kivy.app ./Kivy.App
最後の行でKivy.appをコピーしているのだが、brew caskからkivyをインストールした場合、これを
cp -a /opt/homebrew-cask/Caskroom/kivy/1.9.0-rev3/Kivy.app ./Kivy.app
と変える。 つぎに、インストールしたパッケージャを使って、.appファイルを生成する。
./package-app.sh path/to/your/app
これで、うまく行けばパッケージング完了。立ち上げて遊べる。 また、
./create-osx-dmg.sh YourApp.app
でdmgファイルを作成することもできる。
kivy-iosのインストール
作成したアプリをiOSのシミュレータで動かすまでが目標(結論から言うと未達成)。 詳細はここ参照。
まずは必要環境である
xcode-select --install
を入力。次に本体をインストールする。公式には、
git clone git://github.com/kivy/kivy-ios
すれば良いと書かれていたが、うまくいかず。 どうやらXcode7が原因っぽいので、調べたところ、ここにまさに今進行中のスレッドがあり、解決策が書かれていた。 2015年11月3日現在pull request中であるファイルを使う。
git clone https://github.com/jadeblaquiere/kivy-ios
そのうちmergeされると思うので、この問題は一時的なものだと思われる。
あとは公式に書かれている通り
./toolchain.py build kivy
し、作業を眺めること20分後、何やら怪しげなディレクトリ群が出現する (この時の注意として、sdl2をbrewからインストールしている環境ではうまくいかない) 。 その後
./toolchain.py create Touchtracer ~/code/kivy/examples/demo/touchtracer
すれば、.xcodeprojファイルへとコンパイルされる。
問題点
作成されたファイルをxcodeで開けば、エラーなしでビルドできるのだが、シミュレータで動かしてみても、アプリの起動後すぐにホーム画面に戻ってしまう。 また、ビルド時に幾つかの警告が出るが、この辺りとの関連性が謎。 いかんせんXcode使い慣れてないのと、日本語の情報が少ないのとで、解決には時間がかかりそう。
*11月3日23:25追記:上記の通り一応解決しました。