Share
Embed
Transcript
50 slides
-
自己紹介 • オカザキ • 職業:プログラマー • http://twitter.com/dario_okazaki • Kivyの公式マニュアルの翻訳を有志でしてました (https://pyky.github.io/kivy-doc-ja/)
• PyconJP2017 トーク「Kivyによるアプリケーション開発のすすめ」 -
今日のアジェンダ • なぜGUIは初心向けでないといわれるか? • 個人的に今後PythonのGUIで注目しているもの • 実演 • tkinter •
wxPython • Eel • Kivy • Pythonが使えるゲームエンジンについて • exe化について • まとめ -
GUIは今時必要か? • Webアプリでよくないか? • Webアプリだと困るもの • ネット環境が悪いところ • ネットが使えない場所 •
wav等の音声データを遅延なく動かしたい -
PythonのGUIのシェアについて • https://www.jetbrains.com/research/devecosystem- 2018/python/ • JetBrainsの2018の資料 • Pythonで何のフレームワークを使用していますかの質 問の答え •
GUIは以下 • PyQT/PyGTK/wxPython:11% • TkInter : 7% • Kivy :2% • 参考:NumPy / matplotlib / SciPy / Pandas and similar : 47% Django:39%、Flask:39% -
Pythonの主要なGUI • tkiner • wxPython • pySide2 • Kivy •
flexx • cefpython • Eel • Toga • FLTK • PyGObject • pyQt • Pyglet • PyGUi • libavg • Pyforms etc・・・ -
なぜGUIは初心向けでないといわれるか?(1/2) • ローカルのPC環境に依存している • インストールが難しい • windowsだと同じOSなのにインストールで きてたりできなかったり • webは仮想化が進みインストールが簡単に
なった • デフォルトだと見た目がいまいちなものが多い • カスタマイズすると画像が必要とか面倒 -
なぜGUIは初心向けでないといわれるか?(2/2) • Pythonの場合以下の問題もある • どれが一番いい(簡単、将来性がある)のかよくわからない • 定番がない:例:WebフレームワークならDjango • GUIの実装方法が色々でてきた •
昔ながらのOSのAPIを操作 • Web系 • 配布が難しい • PyInstllerでexe化が可能だが問題多し -
個人的にPythonのGUIで注目しているもの • tkinter • wxPython • Eel • Kivy •
PySide2 • UnrealEngine(ゲームエンジン) • godot engine(ゲームエンジン) -
説明するコードについて • 定期的にセンサーから取得した値をラベルで表示する • USBで始めるハードウェアモジュール • 温度/湿度/気圧を計測する 室内環境計測モジュール • @nonNoise
さんが作ったキット、Pythonでセンサーからの値を取得できる • 技術書典4で購入 • PCにUSBで接続すると使用可能(ドライバーの手動インストール不要!) -
tkinter • 読み方:ティーキンター, ティーケーインター • Pythonに標準で付属している • インストールが簡単 • 配布も簡単
• 見た目がいまいち • Python3.4以降から改善 • 機能面がいまいち • キャンバスの使い方などで学習コストが意外に高い -
tkinter(学習の参考になるもの) • 12歳からはじめる ゼロからの Pythonゲームプロ グラミング教室 • 書籍のタイトルにTkinterと記載がないがTinkerの canvasを使用したサンプルコードが載っている •
TkDocs(https://tkdocs.com/index.html) • 英語のサイトだが情報量多し -
wxPython • wxWidgets のPythonバインディング • 元はC++ • 公式サイト: https://www.wxpython.org/ •
Phoenixバージョンという3系対応のプロジェクトあり • 3系対応時に仕様の変更が結構あったらしい • PyPlに対応したのでpipでインストールできるようになった • 使用実績は一時期多かった • Dropbox、Google Drive、BitTorrent など • wxGlade/ WxFormBuilderという、GUIツールキットがある • WindowsOSだと見た目が・・ -
Eel • https://github.com/ChrisKnott/Eel/tree/mast er • Eelはナマズの意味 • 2017年11月ごろにGitHubに登録 • Starの数は2106
• Electron をシンプルにしたもの。 • 一時期はやった、Python(flask) + Electronより も簡単 -
Eel(仕組み) • サーバー: Bottle(Python) • フロントエンド:html+js (Chrom/Chromium上で動作) • webhockで連携 •
PORT:8080で連携 PC内 サーバーサイド フロントエンド -
Eel(使い方) • 今回使用するアプリの構造 │ eel_label.py │ │─PyMCP2221A ※センサーを動かすためのドライバー │ │
─web eel_test.html favicon.ico -
Eel(メリット) • UI をhtml Javascript で作れる • Javascript系の豊富なライブラリが使用できる • グラフなどが簡単に作れる
• 業務でWeb系の仕事を作る人なら開発のハードルが低い • JSは自分で書く必要がある • 余談 JSを書きたくない人のためのライブラリ (Pythonからjsに変換する) • flexx (GUI) • Brython • pyinstller でexe化が可能 -
Kivy • https://github.com/kivy/kivy • Kevyはキウイを食べる鳥の事 • Starの数は7863 • 最新は1.10.1(2018年7月リリース) •
Raspberry Pi ,android , iosを含めたクロスプ ラットフォーム -
Kivy(学習の参考になるもの) • 日本語の本は3冊出版されている • 最近出た本 Kivyプログラミング ―Pythonで作る マルチタッチアプリ― (実践Pythonライブラリー •
https://www.amazon.co.jp/dp/4254128967/ • 国内で出たKivy関係の本では最もよい • 公式ドキュメントの翻訳(https://github.com/pyKy/kivy- doc-ja) • 最新に追従していないので参考にする際は英語の公式ドキュ メントと読み比べてください • Python Kivyの使い方① ~Kv Languageの基本~ (https://qiita.com/dario_okazaki/items/7892b24fcfa787faface) -
Kivy(実績) • 仕事で使っている案件が数例あり • キュウリの仕分け3号機 • TensorFlowでキュウリの仕分けを自動化する • 学習の際のUIにKivyとRaspberryPyを使用 •
https://news.mynavi.jp/article/20180606-642208/ • http://workpiles.com/2017/05/ccb9-proto3-introduction/ • https://www.youtube.com/watch?v=XOjwWlSpLME -
Kivy(KV言語) • KV Languageともいう • UI用のメタ言語 • Widget(UI)を簡単に記述できる • CSSとBootstrap(グリッド)の概念にちかい
• ※KVを使用しなくてもUIは作れるが使用したほうがコードが簡潔に かける -
Kivy • どうしてメジャーになれないか? • インストールについて • 動作速度について • 日本語の入力について •
Kv Languageについて • マルチプラットフォームについて -
Kivy(インストールについて) • OSによってインストール方法が違う • 依存関係をユーザーが手動でインストールす る必要がある • pip install kivyだけだと上手く動かない・・・
• 公式ドキュメントのインストールー (https://kivy.org/docs/installation/installation .html) を読んでください。 -
Kivy(日本語入力について) • 日本語表記についてはフォントの指定が必要 • IME(変換候補)は1.10.1からOSによっては出るようになった • Webや書籍に書いてある日本語が出ない不具合はある程度解消された • IMEの部分はSDLに依存しているので、OSによってでない状況は不明 OS
IMEの対応状況 詳細 windows △ IMEは開く MacOS 〇 IMEは開く、変換候補も複数開く Linux × 他の人の情報だとUbunutuでは開かないそ うです Android 〇 Nexus5、複数の機種で試したところ日本語 入力は問題なくできます iOS × IMEは開かないそうです。 -
Kivy(マルチプラットフォームについて) • iOSは開発に力が入っていないので最新の状況 にあまり追随できていないように感じる。 • まだ公式だと2系しかサポートしていない • AndoridはPython3系対応が不完全 • Kivy
Lancher は3系対応中 (https://github.com/kivy/kivy-launcher) • apkを作成するのは環境設定などが大変 • Numpyなど3dライブラリを入れる場合はBootstrapという 手法があるが変換が大変 -
PySide2 • Qt for Pythonともいう • ライセンスフリーなQT系のライブラリ • 開発は盛んにおこなわれている •
https://wiki.qt.io/Qt_for_Python • http://blog.qt.io/blog/2018/05/04/hello-qt-for-python/ • https://www.qoosky.io/techs/3eccbf937d • https://dftalk.jp/?p=20768 -
UnrealEngine4 • Epic Gamesより開発されたゲームエンジン • 「ドラゴンクエストXI 」(ゲーム)や「ローグ・ワン/スター・ ウォーズ・ストーリー」(映画)に使用 • ゲーム会社がPythonで動かせるものを開発
• https://github.com/20tab/UnrealEnginePython • EuroPython 2017 でもトークがある • AAA Games with Unreal Engine 4 and Python (https://www.youtube.com/watch?v=_38csFR5Hrw) • 公式でもPythonで動かせるように開発が進んでいる Setting up Collisions with Static Meshes in Blueprints and Python -
Godot Engine • MITライセンスなOSSのゲームエンジン Pythonで動かそうと開発している人がいる • https://github.com/touilleMan/godot-python • EuroPython 2017
でもトークがある • Bringing Python to Godot game engine(https://www.youtube.com/watch?v=SK 0BtxHROdg) -
pyinstller • https://github.com/pyinstaller/pyinstaller • 使い方の参考 • https://pythonhosted.org/PyInstaller/usage.html • https://www.pyinstaller.org/https://www.lisz •
works.com/entry/pyinstall • オプション • --onefile :1ファイルにまとめる場合 • -noconsole :起動時にログ出力などのコンソール画面を出さないようする場合 • specファイル • ライブラリの依存関係などを記述してexeにする際に取り込む -
Nuitka • https://github.com/kayhayen/Nuitka • http://nuitka.net/ • 参考 • https://githubja.com/kayhayen/nuitka •
https://qiita.com/junichi2/items/e7f2d899d1014167f8bc • Cコンパイラでバイナリ化しているらしい • 起動速度が早い • exe化した場合の容量が小さい • 情報がまだまだ少ない • ライブラリを多く含むもののexe化が難しい