GnuCashでFinance::Quoteを日本語環境で動作させる手順(Windows編)
GnuCashで株価の自動取得を行うために利用される Finance::Quote モジュールですが、日本語環境(特にWindows)ではロケール設定の影響で正常に動作しませんでした。
日本語のWindows環境でのエラー回避方法と設定手順をまとめました。
1. システム環境変数の一時設定
まず、ロケール設定を一時的に英語(Cロケール)に変更します。
もしエラーが解消しない場合は、以下のように システム環境変数 として設定してからインストールを試します。
手順
| 変数名 | 値 |
|---|---|
| LC_ALL | C |
| LANG | C |
2. Finance::Quoteのインストール
GnuCashで日本株の株価を取得するためには、Yahoo!ファイナンス日本版対応のモジュールを導入します。
リポジトリ
https://github.com/LiosK/Finance--Quote--YahooJapan
上記リポジトリから YahooJapan.pm をダウンロードし、以下のディレクトリに配置します。
C:\strawberry\perl\site\lib\Finance\Quote\YahooJapan.pm
3. Quote.pmの修正
YahooJapan モジュールを認識させるために Quote.pm を修正します。
-
ファイルの読み取り専用属性を外す。
-
以下のように
YahooJapanを追加。
修正箇所(例):
@MODULES = qw/
AEX
XETRA
YahooJSON
YahooWeb
YahooJapan # ← 追加
ZA
/;
4. Perl実行ファイルのラッパーを作成
GnuCashは内部的に perl.exe を呼び出しますが、その際にロケールを自動設定するため、ラッパーのバッチファイルを作成します。
手順
-
C:\Strawberry\perl\bin\を開く。 -
元の実行ファイル名を変更:
perl.exe → perl_orig.exe
-
同フォルダ内に新規テキストファイルを作成し、以下を記述。
@echo off
REM Finance::Quote実行時にのみロケールを「C」に設定
set LC_ALL=C
set LANG=C
REM 実際のPerl実行ファイルを実行(引数を引き渡す)
perl_orig.exe %*
-
ファイル名を perl.bat に変更(拡張子
.txtが残っていないことを確認)。
5. システム環境変数を元に戻す
GnuCashの日本語UIを維持したい場合は、最初に追加した環境変数を削除します。
| 削除対象の環境変数 | 値 |
|---|---|
| LC_ALL | C |
| LANG | C |
これで、GnuCashは通常どおり日本語で起動しつつ、Finance::Quoteは正しく動作するようになりました。