目次
- 目次
- はじめに
- kivyとは?
- 各プラットフォームへのインストール方法
- 各プラットフォームでHello world GUIを表示する方法
- kivyによるGUIの作り方
- 最後に
- 参考資料
- MyEnigma Supporters
はじめに
先日、
PythonのGUIライブラリPyQtの使い方を紹介しました。
PyQtは使いやすいですし、
綺麗なGUIが作れるので良いのですが、
2つ問題があります。
1. iOS,AndroidのGUIを作ることはできない。
PyQtは基本的にWindows, Mac, Linuxなどの
コンピューター上のみの対応で、
スマホや、タブレットには対応していません。
(swiftやPythonista for iOSを使えば良いという声も聞こえてきそうですが、
Pythonで無料&単一ソースコードが理想です。)
2. ライセンスが微妙
PyQtはGPL or 商用ライセンスのライセンス形態なので、
個人的に遊ぶ分には問題無いと思いますが、
もしかしたら仕事で使うかもしれないと思うと、
色々悩ましいと思います。
(PySideというLPGLの実装形態もありますが、
こちらは実装が古いようです。)
そこで、上記の問題を解決するような
PythonのマルチプラットフォームGUIライブラリを探した所、
KivyというOSS GUIライブラリを見つけました。
kivyは、
Windows, OS X, Linuxだけでなく、
iOSやAndroidにも対応しています。
またライセンスもMITで安心です。
今回の記事では、
kivyの概要とインストール方法、
そして、kivyを使ってMac, ubuntu, Windows, iOS上で
非常に簡単なGUIアプリを作成する方法について
説明したいと思います。
(Androidに関しては、
後日追記したいと思います。)
kivyとは?
Kivyはオープンソースで
クロスプラットフォームな
Python GUIフレームワークです。
マルチタッチなどのユーザインターフェイスを簡単に実装できます。
KivyはPythonとCythonで作成されており、
OpenGL ES 2をベースにしています。
これにより、GPUによるスムーズなレンダリングが可能になっています。
加えて、
Windows, OS X, Linux, Android iOS, そして、RasberryPI上で、
単一の同じコードで利用することができるのも特徴です。
また、
前述の通り、KivyのライセンスはMITなので、
商用、非商用の両方で使いやすい形になっています。
各プラットフォームへのインストール方法
各プラットフォームへのインストール方法は下記の通りです。
Macへのインストール
公式マニュアル通り、
brewとpipを使った方法でインストールできました。
$ brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
$ pip install -I Cython==0.23
$ USE_OSX_FRAMEWORKS=0 pip install kivy
Macへのインストール(for iOS)
iOS用にkivyを使う場合は、
色々準備が必要です。
基本的には、下記のREADMEにある通りに
ソフトのインストールとビルドを実施します。
初めに、下記をインストールします。
$ xcode-select --install
$ brew install autoconf automake libtool pkg-config
$ brew link libtool
$ pip install cython==0.21
cythonのバージョンが先ほどと違うような気がしますが。。。
続いて、kivy-iosのソースコードをクローンして、
kivy-iosをビルドします。
$ git clone https://github.com/kivy/kivy-ios.git
$ cd kivy-ios
$ ./toolchain.py build kivy
上記のビルドは結構時間がかかりました。
(自分の場合は15分ほど)
あとは、下記のコマンドでtoolchain.pyを起動して、
使い方の説明が表示されたら、インストールは完了です。
$ ./toolchain.py
Ubuntuへのインストール
公式のドキュメント通りでOKでした。
$ sudo add-apt-repository ppa:kivy-team/kivy
$ sudo apt-get update
$ sudo apt-get install python-kivy
Windowのインストール
公式のドキュメント通り、pipでインストールしました。
$ python -m pip install --upgrade pip wheel setuptools
$ python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
$ python -m pip install kivy.deps.gstreamer --extra-index-url https://kivy.org/downloads/packages/simple/
$ python -m pip install kivy
各プラットフォームでHello world GUIを表示する方法
続いて、
各プラットフォームにおいて、
Hello worldを表示させる
GUI Windowを作る方法について説明します。
まず初めに、下記のpythonコードを
適当な名前(今回はhelloworld.py)で保存します。
from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): return Button(text='Hello World') TestApp().run()
上記のpythonコードを
各プラットフォームで実行させる方法は下記の通りです。
MacでのHello world GUI
上記のpythonスクリプトを起動しただけで、
Hello world GUIアプリが表示されました。
$ python ./helloworld.py
UbuntuでのHello world GUI
Ubuntuも、上記のスクリプトを起動しただけで
アプリが表示されました
$ python ./helloworld.py
WindowsでのHello world GUI
Windowsも、上記のスクリプトを起動しただけで
アプリが表示されましたが、
なぜかGit for Windowsについている
git bashを使った場合、
アプリがエラーで落ちてしまいました。
標準のコマンドプロンプトから起動すると
ちゃんと実行できました。
iOSでのHello world GUI
iOSでGUIアプリを起動させるのは
アプリとしてiOS端末にソフトをインストールする必要があるため、
すこし手順が必要です。
また、いくつかハマり所があるので注意しましょう。
1. アプリのディレクトリを作成
helloworldというディレクトリを作って、
先ほどのhelloworld.pyを
main.pyという名前で、
そのディレクトリの中に保存します。
kivyの場合、
メインのpythonスクリプトは、
main.pyという名前である必要があるようです。
2. xcodeのプロジェクトを作成
下記のコマンドで
先ほどのアプリのディレクトリを元に、
xcodeのプロジェクトファイルを作成します。
$ ./toolchain.py create helloworld ../helloworld
すると、helloworld-iosというディレクトリが出来ているはずです。
3. xcodeのプロジェクトファイルを開く
下記のコマンドでxcodeのプロジェクトファイルを
ターミナルから開きます。
$ open open helloworld-ios/helloworld.xcodeproj
するど自動的にxcodeでプロジェクトが開きます。
4. xcodeでビルド
続いて、xcodeで先ほどのアプリをビルドします。
基本的には、インストールしたい端末を
Macにつなぎ、左上のデバイスの部分から端末を選び、
より左側にある三角のマークを押すと
ソフトのビルド&インストールが実行されます。
しかし、自分の環境 Xcode7.3では色々エラーが発生しました。
まず初めに、
ビルドした時に
An App ID with Identifier 'org.kivy.helloworld' is not available. Please enter a different string.
というようなエラーが出た時は、
kivy-iosが自動生成するBundle Identifierという設定がおかしいので、
下記の、xcodeのGeneralのIdentityの部分の
Bundle Identifierの部分を変更します。
今回の場合は、
helloworld201605としました。
続いて、ビルドした時に、
clang: error: linker command failed with exit code 1 (use -v to see invocation)
というエラーが出る時は、
下記の記事にある通り、
Bitcodeという設定がONになっているのが問題なので、
Build Settingの検索バーでBitcodeと検索して、
Enable BitcodeをNoにしましょう。
自分の場合、
これでビルドが成功し、
端末にアプリがインストールされました。
5. iOSの端末でアプリを実行する
無事インストールできた場合は、
kivyのアイコンのアプリがiOS端末に
インストールされているはずなので、
そのアプリをタップすれば、
アプリが起動します。
ちなみに、
インストールされたアプリをクリックしても、
開発元が信頼されていないと言われた場合は、
設定->一般->プロファイルとデバイス管理
でデベロッパAPPをクリックして
認証する必要があります。
下記のように、
iPhone 6SでもHello worldが表示されましたし、
iPad miniでもHello worldが表示されました。
より詳しいkivy for iOSの使い方は
下記の記事を参照下さい。
kivyによるGUIの作り方
こちらを参照下さい。
最後に
これでPythonでiOSアプリが作れますね(^^)。
よりPythonが好きになりそうです。
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。