2016年8月23日

openpyxl使ってみようかなぁ

openpyxlは、pythonからExcel2010のxlsx/xlsm/xltx/xltmファイルを読み書きするライブラリです。
マニュアル等を読む限りではとても便利そうなので、moeItemに採用しようかなぁ~と考えています。

moeItem(3.11.0現在)では、Excelファイルの読み書きにwin32com(Python for Windows Extensions)を使っています。Win32 APIを使っているために、Excel2007以前の古いxlsファイルも読み書き可能ですが、Excelをインストールしていないと使えないという問題がありました。
もう、Excel2007以前の古いxlsファイルが読めなくても問題無いですよね~。

MoEをインストールしているパソコンに、Excel入れてないって声はよく聞くので、openpyxl採用に向けて頑張ってみようかなぁ~と思います。
LibraOffice(無料)を使うと、xlsxファイルを読み書き出来るそうです。

2016年8月13日

配布用ファイルを作ろう

MoeItemビルド方法説明の4回目(最終回)。
今日は、WindowsのSetup.exeを作るお話です。

5. 配布用ファイルを作ろう

5.1 InnoSetupの入手

InstallShield(有償)とか使えると良いのでしょうけれど、フリーソフトの配布なので無料で使えるInnoSetupを使います。
Jrsoftware.org からQuickStart Packを選んで(innosetup-qsp-5.5.9-unicode.exe)をインストールします。

5.2 InnoSetupの起動

InnoSetup.iss をダブルクリックするとInnoSetupが起動しますので、設定を眺めてみましょう。
プログラムファイル一式を C:\Program Files\moeItem に配置し、データベースファイルを全ユーザが読み書きできる C:\ProgramData に配置するなど、設定は一目瞭然なので説明は不要でしょう。
Compileを実行すると、Downloads にインストーラが作成されます。

5.3 Microsoft Visual C++ 再頒布可能パッケージの扱い

dist\moeItemの中身をよく見ると Microsoft Visual C++ 再頒布可能パッケージに含まれる mfc90.dll 等のファイルが存在します。
これらは、Microsoftサイトから適宜ダウンロードすれば配付プログラムに含めなくても良いのですが、InnoSetupでどのように処理を書いたらいいのか分らなくて放置しています。

以上で、MoeItemビルド方法の説明は終わりです。

2016年8月12日

Windows実行ファイル(.exe)を作ろう

MoeItemビルド方法説明の3回目。
今日は、PythonスクリプトをWindows実行ファイル(.exe)に変換します。

4. Windows実行ファイル(.exe)を作ろう

4.1 PyInstallerの開発版を入手

pipやPyInstaller.orgに公開されているRelease 3.2では無く、gitレポジトリにある開発版を使います。
[スタート] [すべてのプログラム] [アクセサリ] [コマンドプロンプト]を右クリック。管理者として実行で開いて、以下のとおり実行します。
C:\> git clone https://github.com/pyinstaller/pyinstaller
Cloning into 'pyinstaller'...
展開できたら、Pythonモジュールとしてインストールします。
C:\> cd pyinstaller
C:\> C:\Python27\Python.exe setup.py install

PyInstallerのインストールが完了しましたので、moeItemのソースコードがある場所に戻って、Windows実行ファイル(.exe)を作成します。
C:\> cd moeItem
C:\> C:\Python27\Scripts\PyInstaller.exe moeItem\moeItem.pyw
簡単なPythonスクリプトなら、これだけで実行ファイル(.exe)が作成できるのですが、今回はもうひと手間必要です。

4.2 PyInstalerのオプションについて

今回使用するオプションについて簡単に説明します。
--noconsole
コンソールウィンドウを開きません。Windowsアプリケーション作成用です。
実行時エラーも表示されなくなりますので、デバッグ中は指定しない方が良いです。
--icon moeItem\media\ew14mo.ico
プログラムのアイコンファイルを指定します。
--rumtime-hook rthook_pyqt4.py
PyQt4プログラムの途中でAPIバージョンを変更することはできません。--runtime-hookでAPIバージョン変更を行います。
--hidden-import pytz
自動検出できないモジュールを明示します。
--paths moeItem
モジュールを探索する場所はPYTHONPATHだけなので、他の場所にモジュールがあるなら指定が必要です。

4.3 ビルド方法のまとめ

以下のコマンドで、配布に必要なファイル一式が dist\moeItem に用意されます。
C:\> cd moeItem
C:\> make build

(配布用ファイルを作ろう につづく)

2016年8月11日

MoeItemをソースコードから実行しよう

MoeItemビルド方法説明の2回目。
今日は、MoeItemのソースコードを入手して、実行できるようになるのが目的です。

3. MoeItemをソースコードから実行しよう

3.1 MoeItemのソースコードを入手

MoeItemの最新ソースコードはBitbucketに置いてあるので、ダウンロードの [リポジトリをダウンロードする] から.zipとして取得するか、Mercurial (hg)コマンドを使って複製します。
hg cloneする例を以下に示しますが、4MB近くあるMoeItemデータベースを含むため結構時間がかかります。最新ソースを入手するだけなら.zipを取得して展開した方が良いみたいです。
C:\> hg clone https://EloiseSeverin@bitbucket.org/EloiseSeverin/moeitem
複製先ディレクトリ: moeitem
全リビジョンを取得中
リビジョンを追加中
マニフェストを追加中
ファイルの変更を追加中
70 個のリビジョン(433 の変更を 68 ファイルに適用)を追加
ブランチ default へ更新中
ファイルの更新数 63、 マージ数 0、 削除数 0、 衝突未解消数 0

3.2 uiファイルからpyファイルを作成

PyQtのプログラミングは、(プログラム\PyQt GPL v4.11.4...にインストールされる)Designerで画面デザインを行うところから始まります。ちょっとDesignerで moeItem\ui_moeitem.ui を開いてみましょう。とても簡単に画面デザインできることが解りますね。

リポジトリには.uiファイルまでしか含んでいませんので、pyuic4 でPythonファイルに変換する必要があります。
C:\> cd moeitem\moeItem
C:\> pyuic4 ui_moeItem.ui -o ui_moeItem.py
C:\> pyuic4 ui_configDialog.ui -o ui_configDialog.py
...
いちいちpyuic4を実行するのは面倒ですね。こんなときにはmakeで一発変換です。
C:\> cd moeitem\moeItem
C:\> make
必要なファイルが全て作成されました。

3.3 moeItem.pyw を実行

必要なファイルが全て整いましたので moeItem.pyw を実行してみます。
c:\> python.exe moeItem.pyw
Pythonにパスを通してない方は、フルパスによる起動が必要かもしれません。
c:\> c:\Python27\python.exe moeItem.pyw

3.4 コマンドプロンプト無しで moeItem.pyw を実行

pythonw.exe を使って起動するとコマンドプロンプトを開かなくなります。
c:\> c:\Python27\pythonw.exe moeItem.pyw

(Windows実行ファイル(.exe)を作ろう につづく)

Python実行環境を作ろう

MoeItemビルド方法説明の1回目。
今日は、Python実行環境と開発環境を整備するのが目的です。
私のPC環境は、Windows 7(64bit)です。Windows 10で動作するかどうかは分かりません。

1. Python実行環境を作ろう

1.1 Pythonをインストール

Python.orgから(python-2.7.12.msi)をインストールします。
Python2系を使うのは、moeItemがまだPython3系に対応していないため、32bit版を使うのは、Windows 32bit版の利用者にも利用できる実行ファイル(.exe)を作成するためです。
Python-2.7をインストールすると、同時にMicrosoft Visual C++ 2008 Redistributable Packageもインストールされます。

1.2 PyQt4をインストール

Riverbankから(PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x32.exe)をインストールします。
PyQtは、PythonでGUIアプリを作成する際の選択肢の一つですが、GPLと商用ライセンスで提供されるので用途を考えて用いましょう。

1.3 PyWin32をインストール

Python Win32 ExtensionをSourceforgeから(pywin32-220.win32-py2.7.exe)をインストールします。
Pywin32は、PythonからExcelファイル等を読み書きするのに使用しています。
(Excelは別途必要です。Excelがインストールされていないと、機能を呼び出した際にエラーが発生します。)

1.3 その他のPythonライブラリをpipでインストール

その他多くのPythonのライブラリは、pipで簡単にインストールできます。
(PyQtとPyWin32はWindowsバイナリが必要なので、pipでインストールできないのです。)
[スタート] [すべてのプログラム] [アクセサリ] [コマンドプロンプト]を開いて、以下のとおり実行します。
C:\> pip --version
pip 8.1.2 from c:\Python27\lib\site-packages (python 2.7)  # 一応Pythonのバージョンを確認しておこう
C:\> pip install pep8  # Pythonの文法チェックのためにいちおう入れておこう
C:\> pip install SQLAlchemy
C:\> pip install pytz

2. 開発に必要な環境を整備しよう

2.1 GNU make

Gnuwin32.sourceforge.net から(make-3.81.exe)をインストールします。
開発では、コンパイル -> 実行 -> 修正 を繰り返すので、ビルド手順をMakefileに纏めておくのです。

2.2 PyScripter

Sourceforge.netから、(PyScripter-v2.6.0.exe)をインストールします。
私の愛用しているPython開発環境です。開発環境は、なにか自分のお気に入りのものを1つ入れておけばよいでしょう。必須ではありません。最近はPyCharmの人気が高いようです。
PyScripterは、Python-2.7.11で動かなくなったのですが、Python-2.7.12でまた動くようになりました。

2.3 Mercurial (hg)

Mercurial-scm.orgから、(Mercurial-3.9-x64.exeまたはMercurial-3.9.exe)をインストールします。
MoeItemのソースコード管理に使用しています。ソースコードは、zipでもダウンロードできるので、必須ではありません。

2.4 Git for windows

Git for windowsから、(Git-2.9.2-64-bit.exeまたはGit-2.9.2-32-bit.exe)をインストールします。
PyInstallerの最新版を入手する際に使用します。

(MoeItemのソースコードを入手しよう に続く)

MoeItemビルド方法 (概要説明)

MoeItemを自分でビルドしてみたいって方から嬉しいコメントがあったので、MoeItemのビルド方法を連載してみます。
今日は、全体的な手順を説明する概要編です。

1. Python実行環境を作ろう

Python は有益なライブラリが豊富に無償提供されているので、開発がとっても簡単です。
C++ で開発しない一番の理由は、開発環境の重さと無償提供ライブラリの質の悪さですよねぇ。

2. 開発に必要な環境を整備しよう

GNU makeやMercurial、gitといった開発に必要なコマンドを用意します。

3. MoeItemをソースコードから実行しよう

moeItemのソースコードを入手して、moeitem.pywを実行します。

4. Windows実行ファイル(.exe)を作ろう

PyInstallerを用意して、Windows実行ファイル(moeItem.exe)に変換します。
この章は、結構難解かもしれません。

5. 配布用ファイルを作ろう

誰もが簡単にインストールできるように、配布用ファイルを作成します。

MoEに限らず、Pythonでソフト開発する仲間が増えるのはとっても嬉しいことなので、説明不足の部分があったら遠慮せずにコメントしてくださいね。

2016年8月10日

MoeItemに簡易計算機を追加しました。

MoeItemに、簡易計算機機能を追加しました。(ver.3.11.0)

ゲーム内でアイテムを沢山貰っちゃった時に、これって総額いくらになるの?って時に、電卓より簡単に集計できます。
アイテム分配の時にも、役に立ちます。

合計価格列には私(レラン)的な評価価格が、NPC売値列にはNPC売却価格が算出されますので、売却先の参考にしてください。

最近ちょっと私のMoEログイン率が落ちちゃってる関係で、価格評価はちょっと甘いかもしれません。
全て自己責任で使ってね~。