GnuCashでFinance::Quoteを日本語環境で動作させる手順(Windows編)

GnuCashで株価の自動取得を行うために利用される Finance::Quote モジュールですが、日本語環境(特にWindows)ではロケール設定の影響で正常に動作しませんでした。
日本語のWindows環境でのエラー回避方法と設定手順をまとめました。


1. システム環境変数の一時設定

まず、ロケール設定を一時的に英語(Cロケール)に変更します。

もしエラーが解消しない場合は、以下のように システム環境変数 として設定してからインストールを試します。

手順

  1. Windowsの検索ボックスで「システム環境変数の編集」を検索し、開く。

  2. 環境変数」ボタンをクリック。

  3. 「システム環境変数」欄で「新規」をクリックし、以下の変数を追加。

変数名
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 を修正します。

  1. ファイルの読み取り専用属性を外す。

  2. 以下のように YahooJapan を追加。

修正箇所(例):

@MODULES = qw/
    AEX
    XETRA
    YahooJSON
    YahooWeb
    YahooJapan    # ← 追加
    ZA
/;

4. Perl実行ファイルのラッパーを作成

GnuCashは内部的に perl.exe を呼び出しますが、その際にロケールを自動設定するため、ラッパーのバッチファイルを作成します。

手順

  1. C:\Strawberry\perl\bin\ を開く。

  2. 元の実行ファイル名を変更:

perl.exe → perl_orig.exe
  1. 同フォルダ内に新規テキストファイルを作成し、以下を記述。

@echo off
REM Finance::Quote実行時にのみロケールを「C」に設定
set LC_ALL=C
set LANG=C
REM 実際のPerl実行ファイルを実行(引数を引き渡す)
perl_orig.exe %*
  1. ファイル名を perl.bat に変更(拡張子 .txt が残っていないことを確認)。


5. システム環境変数を元に戻す

GnuCashの日本語UIを維持したい場合は、最初に追加した環境変数を削除します。

削除対象の環境変数
LC_ALL C
LANG C

これで、GnuCashは通常どおり日本語で起動しつつ、Finance::Quoteは正しく動作するようになりました。