= ver4開発
== UNIX版第1回開発会議(和倉温泉,2017-2-10~12)以降の開発・検討事項
=== 開発言語
* 要件
* C++に比べて、開発の敷居が低いこと
* 質量分析やプロテオミクスに関するライブラリが充実していること
* Pythonを用いる
* JavaとPythonが要件を満たす。初期の学習・導入コストの低いPythonを選定
* 方針として、「python3.4([http://www.matrixscience.com/parser_support.html Mascot Parser]対応バージョン) + Windowsへの導入が容易なライブラリ」を用いて開発する
* つまり正確には、「UNIX版」ではなく「マルチOS版」の開発
* 開発者の環境がWindowsという話は秘密だ
=== GUIライブラリ
* 以下のライブラリを調査し、 Kivy を当面の試作用GUIに採用した。
* とりあえず、WindowsとMacで'Hello World'窓の表示を確認した。
||'''ライブラリ'''||'''採用・不採用'''||'''備考'''||
||[https://riverbankcomputing.com/software/pyqt/intro PyQT]||不採用||ライセンスがGPL||
||[https://wiki.qt.io/PySide PySide]||不採用||LGPL。Winへの導入に挫折(nmake, cmake, qmakeについてエラーを吐き続け、[https://pypi.python.org/pypi/Shiboken Shiboken]までたどり着いて死んだ)(Macへの導入は容易)||
|| || ||※脂肪肝を乗り越えると逝けそう||
||[https://wxpython.org/ WxPython]||不採用||LGPLライクな独自ライセンス。WinはVisual C++ 2010 が要る(Macは容易に導入可能で、すぐにHello, world!が出た)||
|| || ||※VS2010でビルドされているWindows版Python3.4で動かそうとしたため。2.xは、[https://www.microsoft.com/en-us/download/details.aspx?id=44266: Microsoft Visual C++ Compiler for Python 2.7]を入れればインストールできる、はず。また、 python3.5 からはVS2015でビルドされているので問題は生じない、はず。(Windowsでのpython3系のバイオなりパッケージの利用には 3.5 以降に対応しているかどうかが分岐点になりそう。同じ理由でpython2.7系もWindowsでは避けたほうが良いという印象。[https://wiki.python.org/moin/WindowsCompilers: 参考])||
||[http://www.pygtk.org/ PyGTK]||不採用||GTK2用のバインディング。2011年4月で更新が止まっているので、チェックすらせず||
||[https://wiki.gnome.org/action/show/Projects/PyGObject?action=show&redirect=PyGObject PyGObject]||不採用||LGPL。Winではpython3.4環境で、 [https://sourceforge.net/projects/pygobjectwin32/: source forge のバイナリ・パッケージ]を利用可能(このパッケージは、wxPython同様にCランタイムのバージョンの関係で、python3.5 以降では動作しないので注意。Anaconda の次バージョンから3.4がサポートされなくなる。また現行版のAnacondaも3.6がデフォルトで有効なので、 conda コマンドで 3.6から3.4に切り替える必要あり。)Macでも動作(Quartz, X11ともに正常動作を確認)。||
||[https://kivy.org/#home Kivy]||採用||MITライセンス。Windowsへのインストールはあっさりできた。(Macでは、Mac ports のpy35-kivyにて依存ライブラリと指定されていない pygameを別途インストールする必要あり。)||
* Cライブラリとの整合性
* pure な python で書かれていないライブラリ、特に、pythonのC拡張を利用して作られたライブラリは、python本体とライブラリ(バイナリ配布)とで参照するCランタイムに不整合が生じると動作しない。
* Mass++開発者はver3開発のためにVS2015に完全移行しているので、VS2015でビルドされているpython3.5以降に対応したバイナリ・パッケージが提供されているかどうかという点も重要。
* Mascot Parser は昨年末リリースされたばかりだが、3.4依存。次のアップデートは当分先と予想されるので、MascotParser に依存しない開発も検討した方が良い。
* Kivy は、CythonでビルドされているモジュールがCコンパイラ依存となるがCライブラリを動的にリンクしているかどうか不明。(とりあえず、Windows版のビルドに ver 3.5より前では mingwを、3.5以降ではVS2015を採用し、2.7, 3.4, 3.5, 3.6用のバイナリを提供している。)
* その他
* 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がリリースされるまで手を出さないほうが良い印象。