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追記:上記の通り一応解決しました。