Visual StudioでKivyの開発環境を整える

Visual StudioでKivyの開発ができる環境を整える。

Kivyのドキュメントには、Windowsではバッチファイルを経由して実行する方法とコマンドラインから実行する方法が載っているが、Visual Studioから直接実行するとエラーが発生してアプリケーションを起動できなかった。

せっかくVisual StudioでPythonの開発ができるのにF5を押して実行できないのは不便だったので、やり方をまとめておく。

# 環境
* Visual Studio Community 2013
* Kivy 1.8 (Python2.7)
* Windows7 x64

# Kivyのインストール
WindowsへのKivyのインストールは公式ドキュメントの手順に則って行えばOK。

[Installation on Windows &mdash; Kivy 1.9.0-dev documentation](http://kivy.org/docs/installation/installation-windows.html)
（ページのタイトルが1.9.0ってなってるのはなんだろう？2015/2/1時点で1.8.0が最新だ。）

手順ではzipファイルをダウンロードして任意の場所に展開するのだけど、今回はCドライブ直下に展開した。

    C:\Kivy-1.8.0-py2.7-win32

このパスを、環境変数"KIVY_ROOT"を作成して設定しておく。

ドキュメントの"Start a Kivy Application"から先はKivyアプリケーションを実行するための設定なんだけど、exampleを実行するときに便利なので設定しておくと良いと思う。

# Visual Studioの設定
Visual StudioでPythonを使う環境を整える。

## Python Tools for Visual Studioのインストール
インストール手順は省略するけど、CodePlexからインストーラーをダウンロードして実行するだけで簡単にできる。

[Python Tools for Visual Studio - Download&#58; 2.1](http://pytools.codeplex.com/releases/view/109707)

## Visual StudioのKivy向け環境設定
64ビットOSを使っていて64ビット版のPythonが既にインストールされている場合は、32ビット版を使わないと、Kivyを使ったアプリケーションを起動できない。

展開したKivyのフォルダにはPythonが含まれているので、これを使うようにVisual StudioにKivy用のPython環境の設定を行う。

1. Visual Studioのメニューから「ツール」-「オプション...」を選択する。
2. 左の「Python Tools」-「Environment Options」を選択する。
3. 右側の「Add Environment」ボタンを押す。
4. ダイアログが表示されるので、作成する環境の名前を入力する。今回は「Python 2.7 for Kivy」とした。
5. すぐ下の「Environment Settings」に次の値を入力する。
    * Path：C:\Kivy-1.8.0-py2.7-win32\Python27\python.exe
    * Windows Path：C:\Kivy-1.8.0-py2.7-win32\Python27\pythonw.exe
    * Library Path：C:\Kivy-1.8.0-py2.7-win32\Python27\Lib
    * Architecture：x86
    * Language Version：2.7
    * Path Environment Variable：PYTHONPATH
6. オプションダイアログの右下の「OK」ボタンを押す。

![visual_studio_python_env_for_kivy.png](https://qiita-image-store.s3.amazonaws.com/0/39729/fa2c6dfb-b1a0-468a-a6eb-a763e034473b.png)

# Pythonプロジェクトの作成と設定
例として「KivySample」というプロジェクトを作成する。

## プロジェクトの作成

1. Visual Studioのメニューから「ファイル」-「新規作成」-「プロジェクト...」を選択する。
2. 左のテンプレートから「Python」を選択する。
3. 真ん中で「Python Application」を選択する。
4. 下の名前に「KivySample」を入力して「OK」ボタンを押す。

## 使用するPython環境の選択

1. ソリューションエクスプローラーの「KivySample」プロジェクトの下の「Python Environments」を右クリックして、「Add/Remove Python Environments...」を選択する。
2. 「Python 2.7 for Kivy」を選択する。

## Kivyへのパスの設定

1. ソリューションエクスプローラーの「KivySample」プロジェクトの下の「Search Paths」を右クリックして、「Add Folder to Search Path...」を選択する。
2. 「C:\Kivy-1.8.0-py2.7-win32\kivy」を選択する。

## Kivyアプリケーション起動用ファイルの作成
今の状態だと、Visual StudioでKivyを使ったプログラムを書いて、Visual Studioから実行するとImportErrorが発生して実行できない。

Kivyのインストールドキュメントにある通り、WindowsでKivyアプリケーションを起動するにはバッチ経由かコマンドラインで実行する必要があるんだけど、いくつか起動のため設定を行っていて、Visual Studioから実行するとそれが行われないのでエラーが出てしまう。

Kivyの起動バッチファイルの中を見ると環境変数の設定を行っているので、Visual Studioから実行するときにも同じことをすれば起動できるようになる。

今回は起動バッチファイルと同じことをするPythonファイルを作成して、そこからアプリケーションのメイン処理が書いてある処理を呼び出す方法で解決する。

### 起動用Pythonファイルの作成
以下の内容のファイルを「run_kivy.py」としてプロジェクトに追加する。

    import os
    
    kivy_root = os.environ['KIVY_ROOT']
    
    os.environ['GST_REGISTRY'] = kivy_root + '\\gstreamer\\registry.bin'
    os.environ['GST_PLUGIN_PATH'] = kivy_root + '\\gstreamer\\lib\\gstreamer-1.0'
    os.environ['PATH'] = kivy_root + ';' \
                       + kivy_root + '\\Python27;' \
                       + kivy_root + '\\tools;' \
                       + kivy_root + '\\Python27\\Scripts;' \
                       + kivy_root + '\\gstreamer\\bin;' \
                       + kivy_root + '\\MinGW\\bin;' \
                       + os.environ['PATH']
    os.environ['PKG_CONFIG_PATH'] = kivy_root + '\\gstreamer\\lib\\pkgconfig;'
    os.environ['PYTHONPATH'] = kivy_root + '\\kivy'
    
    from KivySample import TestApp

    if __name__ == '__main__':
        TestApp().run()

"KIVY_ROOT"は"Kivyのインストール"で作成した環境変数。

最終行の"import KivySample"はプロジェクトにある"KivySample.Py"を呼び出すコードである。

最後に"run_kivy.py"を右クリックして「Set as Startup File」を選択する。これでVisual Studioから実行を開始した時に最初に"run_kivy.py"が実行される。

![visual_studio_screen_shot.png](https://qiita-image-store.s3.amazonaws.com/0/39729/6c7a3bfc-57a5-335d-6503-89f0de8d949d.png)

# 動作確認
プロジェクトの"KivySample.py"というファイルに次のコードを書く。

    import kivy
    kivy.require('1.0.7')
    
    from kivy.app import App
    
    class TestApp(App):
        pass

F5キーを押すなどしてVisual Studioからアプリケーションを実行すると、アプリケーションが起動してウィンドウが表示される。

![kivy_window.png](https://qiita-image-store.s3.amazonaws.com/0/39729/598d8f17-8f49-d01a-18ba-1e6030f02b38.png)

# 最後に
今回はVisual StudioでKivyの開発環境を整えた。

ただ自分はPythonを勉強し始めたばかりで慣例とか文化が全然分かってないので、上の起動スクリプト（run_kivy.py）のやり方が良い方法かどうかは分からない。
もしこういうやり方の方が良いよ、というのがあったらコメントで教えてもらえると嬉しい。