Kivy

Kivy(キビー)は、PythonのNUI(Natural User Interface)でのマルチタッチアプリケーション開発のためのオープンソースライブラリである。動作環境はAndroid、iOS、Linux、Mac OS X、Windowsである。MITライセンスで配布されているフリーのオープンソースソフトウェアである。

Kivyは様々なプラットフォームで動作するように開発が進められており、Raspberry Piもサポートされた。

特徴としては以下のとおりである。
マウス、キーボード、TUIO、OS固有のマルチタッチイベントなど広範な入力への対応
OpenGL ES 2のVertext Buffer Objectとshadersを使用したグラフィックライブラリ
マルチタッチ対応のさまざまなウィジェット
カスタムウィジェットを容易にデザインするための中間言語Kv
Kivy は PyMTを発展させたものであり、新しいアプリケーションの開発には PyMT ではなく Kivy を使うことが推奨されている。

姉妹プロジェクト 
 Buildozer: AndroidとiOS用の汎用Pythonツール。
 Plyer: Pythonラッパーのプラットフォーム非依存API群。
 Pyjnius: PythonからJava / Android APIへの動的アクセスする。
 Pyobjus: PythonからObjective-C / iOS APIへの動的アクセスする。
 Python for Android: Pythonアプリケーションをビルドしてパッケージ化するためのツールチェーン。
 Kivy iOS:iOS用のKivyアプリケーションをビルドしてパッケージ化するためのツールチェーン。
 Audiostream: マイクとスピーカーに直接アクセスするためのライブラリ。
 Kivy Designer:KivyのUIデザイナー。
 KivEnt: ivyのエンティティベースのゲームエンジン。
 Garden: ユーザーが作成し管理するウィジェットとライブラリ。
 kivy-sdk-packager: Windows、OS X、LinuxでのKivy SDKの生成用スクリプト。
 kivy-remote-shell: リモートSSH + Python対話型シェルアプリケーション。

コード 
ボタン一つのHello worldアプリケーションは下記のとおり。

from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()

言語としてのKv 
Kvは言語として、ユーザーインターフェースとその作用を記述できるようになっている。QMLと同じく、容易にUI全体を作り、そこにイベントを追加できる。たとえばキャンセルとロードのボタンをのせたローディングダイアログを含むファイルブラウザを作るなら、ベースとなるウィジェットを一つPythonで作り、あとはKvでUIを構築できる。

In main.py:
class LoadDialog(FloatLayout):
    def load(self, filename): pass
    def cancel(self): pass

And in the associated Kv:
#:kivy 1.4.0
<LoadDialog>:
    BoxLayout:
        size: root.size
        pos: root.pos
        orientation: "vertical"
        FileChooserListView:
            id: filechooser

        BoxLayout:
            size_hint_y: None
            height: 30
            Button:
                text: "Cancel"
                on_release: root.cancel()

            Button:
                text: "Load"
                on_release: root.load(filechooser.path, filechooser.selection)

Google Summer of Code 

KivyはPython Software FoundationのGoogle Summer of Codeに参加しました。

 Kivy in GSoC'2014: https://www.google-melange.com/archive/gsoc/2014/orgs/python
 Kivy in GSoC'2015: https://www.google-melange.com/archive/gsoc/2015/orgs/python
 Kivy in GSoC'2016: https://wiki.python.org/moin/SummerOfCode/2016

References

外部リンク 
Kivyオフィシャル
有志による日本語の翻訳サイト

Pythonライブラリ
オープンソースソフトウェア
クロスプラットフォームのソフトウェア