はじめに
私は会社の同僚によく飲みに連行されます。
田舎ですので飲み屋が毎回同じで、頼むメニューも飽きてしまいます。
そこでメニューをランダムに選択してくれるようなアプリがあれば良いのにねという話しがあり、作ってみようかなと思いました。
せっかくですので、メニューの属性値などをもとに、おすすめのメニューをAI使って判定できるようにしたら面白そうです。
そこでpythonでiphoneのアプリが作れないかと探してみました。
今回の記事ではkivyというフレームワークを使って、iphone用のアプリをpythonで作成する記事です。
目次
導入編
Kivyのインストール
kivyのホームページにインストールのやり方が書いてありましたので、そちらを参考にさせていただきました。
インストールコマンドが丁寧に一つずつ書いてあるので、それを実行していくだけでインストールすることができました。
まずはpythonとpipコマンドを以下のコマンドで最新版に致します。
python -m pip install --upgrade pip setuptools virtualenv
次にpythonのバーチャル環境を作成します。これは他のpythonバージョンによる影響を防ぐためで、公式様から強く推奨されているそうです。
# kivy_venvという仮想環境を作成します
python -m venv kivy_venv
# 作成した仮想環境を起動します。こちらのコマンドはターミナルを起動するたびに実行が必要となります。
source kivy_venv/bin/activate
以上の前準備が完了しましたら、kivyをインストールします。
python -m pip install "kivy[base]" kivy_examples
これでインストール完了です。
サンプルプログラムも提供されておりますので、試しにそちらを起動いたします。
python kivy_venv/share/kivy-examples/demo/showcase/main.py
無事にアプリが表示されればインストール完了です。
Kivy-iosのインストール
kivyがインストールできましたら、今度はiphoneでkivyを使ったアプリを利用できるようにkivy-iosをインストールいたします。
導入は公式サイト様に記載がありましたので、こちらを参考にさせていただきました。
公式サイト様曰く、kivy-iosはpipコマンドで取得することが可能です。
pip3 install kivy-ios
続いてシステムの依存性を解決するために、以下のコマンドを実行する必要がございます。
xcode-select --install
pythonの拡張ライブラリはコンパイルする必要があります。
必要な依存性は、レシピとして確認することができます。
そしてそのレシピを元に、以下のコマンドでコンパイルすることができます。
toolchain build python3 kivy
xcodeとの接続
最後にxcodeと接続し、kivyで作成したプロジェクトをiphoneでリリースできるように致します。
toolchainを使ってxcodeのプロジェクトを作成します。
この時、app_directoryの中には、main.pyというファイルが必要です。
titleはアプリの名前になります。
toolchain create <title> <app_directory>
ですが一行目を実行しましたところ、以下のエラーが出てしまいました。
[ERROR ] No python recipe compiled!
[ERROR ] You must have compiled at least python3
[ERROR ] recipe to be able to create a project.
コンパイルが完了していなかったようです。
Stackoverflowに対策が書いてありましたので、こちらを実行致しました。
toolchain build python3 kivy
再度実行しますと成功しました。
あとは以下のコマンドでxcodeのプロジェクトを開けば完了です。
open
-ios/.xcodeprojだったのですけれども、xcodeでシミュレータを起動しますと、以下のエラーが発生いたしました。
Showing Recent Issues
rsync warning: some files vanished before they could be transferred (code 24) at /AppleInternal/Library/BuildRoots/ce725a5f-c761-11ee-a4ec-b6ef2fd8d87b/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
こちらはgithubにあったissueがとても役に立ちました。
ビルドした場所がソースコードーどのあるディレクトリと同じ、またはそのサブディレクトリの中にある場合、この事象が発生するようです。
toolchainのビルドで作成したディレクトリ情報が、プロジェクトの中で作成される情報と混在し、rsyncが混乱するとのことでした。
ですのでビルドコマンドを実行する場所と、で設定したディレクトリを別の場所にいたしました。
これで晴れてシミュレータを無事に起動することができました。
開発編
続いて開発に入って参ります。