Slide 1

Slide 1 text

PythonのGUI@2019 2019/09/10 オカザキ

Slide 2

Slide 2 text

自己紹介 • オカザキ • 職業:プログラマー • http://twitter.com/dario_okazaki • PyconJP2017 トーク「Kivyによるアプリケーション開発のすす め」 • 長野Python会 with NSEG(2018/7/28)「PythonのGUI@2018」

Slide 3

Slide 3 text

今日の内容のきっかけ PythonのGUIについて初心者向けのライブラリって どれがいいの?

Slide 4

Slide 4 text

個人的にお勧めのライブラリ • 「Eel」 • https://github.com/ChrisKnott/Eel • 理由:簡単。Webの勉強にもなる • 「PySimpleGUI」 • https://pysimplegui.readthedocs.io/en/latest/ • 理由:そこそこ簡単。サンプルが多い

Slide 5

Slide 5 text

PythoのGUIについて • 決定的なライブラリがない • 日本語の情報が少ない • ソフトウェア・ライセンス • バイナリ化(配布用)のライブラリでいいのがな い

Slide 6

Slide 6 text

ここ一年の出来事 • GUIライブラリー • 「pySymplelGUI」が加わった • https://pysimplegui.readthedocs.io/en/latest/ • パッケージライブラリー • 「PyOxidizer」が加わった • https://github.com/indygreg/PyOxidizer

Slide 7

Slide 7 text

PythonのGUIライブラリ(1/2) • Tkinter • wxPython • PyQt5 ※QT • PySide2 ※QT • pySimplelGUI • PyGTK • PyFLTK • Kivy • Eel • flexx • REMI • Electron + Python※2 • React Native + Transcrypt(altJS)※2 • Pygame • Toga ※2はライブラリではなくて手法です

Slide 8

Slide 8 text

PythonのGUIライブラリ(2/2) • cefpython • PyGObject • Pyglet • PyGUI • libavg • Pyforms etc・・・

Slide 9

Slide 9 text

その他 • その他(Android端末で動くもの) • QPython ※Andoridで動くIDE • Pydroid3 ※Andoridで動くIDE • LINE MessageAPI※Lineアプリ上で動くもの

Slide 10

Slide 10 text

QT系 • PythonのGUIでは一番メジャー • PyQT5 • https://www.riverbankcomputing.com/software/py qt/intro • 商用ライセンス有 • 開発元:Riverbank Computing社 • PySide2 • https://www.qt.io/jp/qt-for-python-2 • 開発元:The Qt Company • 2つの違いはWebで検索してみてください

Slide 11

Slide 11 text

Web系 • Eel • flexx • REMI • Electron + Python • https://github.com/fyears/electron-python- example • React Native(AltJS) + Transcrypt • Node.js + vue or react+TypeScriptでよくない?

Slide 12

Slide 12 text

Eel • Eel • https://github.com/ChrisKnott/Eel • PythonのElectronみたいなもの • Bottle+JavaScript+HTML+CSS • Chromeで動く • 詳しくはStapyの@attakeiが作成された資料を参考の事 • https://speakerdeck.com/attakei/eeldezuo-tutemiru- whoisapurito-suraido

Slide 13

Slide 13 text

PySympleGUI • PySympleGUI • https://pysimplegui.readthedocs.io/en/latest/ • 2018年からプロジェクトが開始 • https://www.reddit.com/r/Python/comments/d2ghve/a_case_for _a_pythonic_python_gui/ • tkinter, Qt(一部), Remi, WxPythonのラッパー pip install pysimplegui or pip3 install pysimplegui

Slide 14

Slide 14 text

配布用(exe化)のライブラリ • Pyinstaller • 一番メジャー、ファイル容量と起動速度に難あり • Nuitka • Pythonnoのコンパイラ。ファイル容量が軽く、速度も早いが3rd ライブラリを入れたりするとうまく行かない場合あり • PyOxidizer • Py2exe • Windowsのみ • cx_Freeze • py2app ※MacOSのみ

Slide 15

Slide 15 text

PyOxidizer • https://github.com/indygreg/PyOxidizer • 2019年から開始 • Rustで作られている • Rustのインストールが必要 • windowsの場合はVisualStudio Build Toolsのインストールが必 要 • メモリからモジュールを直接ロードするのでPyInstallerより起動が 速いらしい • https://pyoxidizer.readthedocs.io/en/latest/comparisons.html • ここに他のライブラリとの比較がある • できるバイナリは軽量で高速とあるが比較が難しい • 環境作成の手間を考えると今は様子みしたほうがいいかも

Slide 16

Slide 16 text

その他:android/iOSアプリの開発について • Line Message API(bot)で開発がいいかも • 2019年4月にサービスが変わってフリープランで も月1000通まではPush通信ができるようになっ た • 開発時にはngrok(https://ngrok.com/ )を使用すれ ばLocalhostの内容を一時的に外にできるように なる

Slide 17

Slide 17 text

Kivy • https://github.com/kivy/kivy • Kevyはキウイを食べる鳥の事 • Starの数は9811 • 最新は1.11.1 • Raspberry Pi ,android , iosを含めたクロスプ ラットフォームのPython製GUIライブラリ

Slide 18

Slide 18 text

Kivy(Python3対応について) • 今年になってPython3に全て対応されました • Kivy • Python for android • Python2の実行サポートは終了 • kivy-ios

Slide 19

Slide 19 text

Kivy(日本語入力について) • IME(変換候補)は1.10.1からOSによっては出るようになった • Webや書籍に書いてある日本語が出ない不具合はある程度解消された • IMEの部分はSDLに依存しているので、OSによってでない状況は不明 OS IMEの対応状況 詳細 windows ○ パッチ当てる必要があったりするけどみんなの努力で変 換候補まで出るようになった MacOS 〇 IMEは開く、変換候補も複数開く Linux △ 他の人の情報だとUbunutuでは開かないそうです。Ibus には対応しているとSDL2は言っている Android 〇 Nexus5、複数の機種で試したところ本語入力は問題なく できます※最新のSDL2だとバグっているかも iOS × IMEは開かないそうです。ただSDL2.0.9:のリリースノー ト見ると「iOS: Fixed Asian IME input」あるので、そのう ちできるようになる?

Slide 20

Slide 20 text

Kivy(海外の話) • ここ1年ぐらいはKivyと機械学習を使ったものが多いみたい • 書籍 • Building Android Apps in Python Using Kivy with Android Studio: With Pyjnius, Plyer, and Buildozer • Practical Computer Vision Applications Using Deep Learning with CNNs: With Detailed Examples in Python Using TensorFlow and Kivy • カンファレンス • Pycon APAC 2019 – Jairus Jimenez – Setting up Computer Vision with Kivy using Tensorfl