• Showing Page History #107255

ver4開発

UNIX版第1回開発会議(和倉温泉,2017-2-10~12)

開発言語

  • 要件
    • C++に比べて、開発の敷居が低いこと
    • 質量分析やプロテオミクスに関するライブラリが充実していること
  • Pythonを用いる
    • JavaとPythonが要件を満たす。初期の学習・導入コストの低いPythonを選定
    • 方針として、「python3.4以降(3.5以降?) + Windowsへの導入が容易なライブラリ」を用いて開発する
      • つまり正確には、「UNIX版」ではなく「マルチOS版」の開発
      • 開発者の環境がWindowsという話は秘密だ

GUIライブラリ

  • 以下のライブラリを調査し、 Kivy を当面の試作用GUIに採用した。
    • とりあえず、WindowsとMacで'Hello World'窓の表示を確認した。
ライブラリ採用・不採用備考
PyQT不採用ライセンスがGPL
PySide不採用LGPL。Winへの導入に挫折(nmake, cmake, qmakeについてエラーを吐き続け、Shibokenまでたどり着いて死んだ)(Macへの導入は容易)
※脂肪肝を乗り越えると逝けそう
WxPython不採用LGPLライクな独自ライセンス。WinはVisual C++ 2010 が要る(Macは容易に導入可能で、すぐにHello, world!が出た)
※VS2010でビルドされているWindows版Python3.4で動かそうとしたため。2.xは、Microsoft Visual C++ Compiler for Python 2.7を入れればインストールできる、はず。また、 python3.5 からはVS2015でビルドされているので問題は生じない、はず。(Windowsでのpython3系のバイオなりパッケージの利用には 3.5 以降に対応しているかどうかが分岐点になりそう。同じ理由でpython2.7系もWindowsでは避けたほうが良いという印象。参考)
PyGTK不採用GTK2用のバインディング。2011年4月で更新が止まっているので、チェックすらせず
PyGObject不採用LGPL。Winではpython3.4環境で、 source forge のバイナリ・パッケージを利用可能(このパッケージは、wxPython同様にCランタイムのバージョンの関係で、python3.5 以降では動作しないので注意。Anaconda の次バージョンから3.4がサポートされなくなる。また現行版のAnacondaも3.6がデフォルトで有効なので、 conda コマンドで 3.6から3.4に切り替える必要あり。)
Kivy採用MITライセンス。Windowsへのインストールはあっさりできた。(逆にMacでは、Mac port のpy35-kivyが依存ライブラリとは指定していない pygameを別途インストールする必要があった。)
  • Cライブラリとの整合性
    • pure な python で書かれていないGUIライブラリ、特に、pythonのC拡張を利用して作られたライブラリは、python本体とGUIライブラリとで参照するCランタイムに不整合が生じると動作しない。Mass++開発者はver3開発のためにVS2015に完全移行しているので、VS2015でビルドされているpython3.5以降に対応したバイナリ・パッケージが提供されているかどうかという点を重視。
    • Kivy はCython環境がCコンパイラ依存となるが、Windows版のビルドに、3.5より前では mingwを用いて、3.5以降にVS2015を採用し、2.7, 3.4, 3.5, 3.6用のバイナリを配布している。このあたりの対応の早さ、充実具合からも、今はKivyが旬であるという印象を受ける。
  • その他
    • Kivyは、デスクトップ(タブレットPC含む)アプリとしてのアーキテクチャとデザインについてよく話し合う必要あり。
    • QT用のライブラリについては、AnacondaがQT4からQT5に移行したこともあり、QT5対応を前提としたい。ライセンス的に許容可能なpySideは、QT5対応版のpySide2がリリースされておらず、時期尚早。(QT CompanyがQT5のパッケージに加えるつもりでpySide2開発をサポートしている点、および、PyQtGraph(MITライセンス)という魅力的なチャート描画ライブラリがある点を考慮すると、Kivyベースの開発が軌道に乗るまでは、pySide2の開発動向をウォッチしても良いかも知れない。)
    • pyGObjectは、Windows用バイナリ・パッケージがpython3.5に対応するまでは、手を出さないほうが良い印象。できれば、AnacondaのWindows版に同梱されるのが望ましい。
    • wxPythonはPhoenixがリリースされるまで手を出さないほうが良い印象。