2021/11/27

DARUMA家計簿のさらなる進化に期待(第二弾)

_筆者がGnuCashに取り組んでいる間に、DARUMA家計簿に新機能が登場しておりました。なお、本記事の第一弾はこちらです

1.カレンダー機能

_2021/06/20 DARUMA家計簿の設計はよく練られています でご紹介した画面構成ががらりと変わりました。設定メニュー>その他設定 で基本画面をカレンダー形式に切り換えられるようになっています。事実上、こちらが標準となるでしょう。何せ、従来のDARUMA家計簿は本日がデフォルトで選択されて何も入力されていない画面から始まるので、「うわ、いつから入力をサボっていたんだ?」と過去に遡る操作をしなければならず、少々気が滅入るところがありました…

_画面下部の勘定科目別の集計表(その日付における資産・負債の残高と、収入・支出の発生額を表示する。マスターマネーのマネービュアーがまぐち君の集計表画面に相当する)を展開すると、上部のカレンダー画面が上下方向に圧縮されるというギミックが秀逸です(日付を選択するのが少々キツくなりますが)

DARUMA家計簿にカレンダー機能が追加された

2021/11/25

OsidOriの目立たないが重要な不具合の修正について

_筆者がGnuCashにかまけている間に他の家計簿アプリにもいろいろ動きがありました。まずはOsidOriから。

1.OsidOriの支払担当の認識がアプリ画面と出力データで違っている

_OsidOriは、支出額の支払い(または収入額の受取り)を わたし・家族・パートナー の誰が担当するのか、という情報が非常に重要であります。↓の例では、7月24日の3000円の買い物はパートナーが支払担当になっています。これは夫が見ている家族画面なので、パートナーとはすなわち妻のことです(OsidOriでは近年のいろいろアレな流れを受けてか、夫とか妻とかいう言葉を徹底的に避けているようですが)。ちなみにこのデータは妻が入力したので、支払元口座である"02財布"を夫側から修正することはできません。

7月24日の3000円の買い物はパートナーが支払担当になっている

2021/11/24

家計簿データをMFF形式から変換してGnuCashへインポートする(後篇)

←前回の記事:2021/11/23 家計簿データをMFF形式から変換してGnuCashへインポートする(前篇)

_今回は、前回に出力したCSVファイルをGnuCashに取り込みます。

3.GnuCashへのインポートも簡単ではない

_データインポート機能には↓のようにアクセスします。

GnuCashのインポート機能へのアクセス

2021/11/23

MFF形式の家計簿データを変換してGnuCashへインポートする(前篇)

←前回の記事:2021/11/22 ついにGnuCashに対応 MFFマクロV2.27出現

_今回は、MFFマクロ(V2.27以降)を使用して、MFF形式のデータをGnuCashにインポートする手順をご紹介します。記事にすれば割とあっさり終わりますが、この機能を実装するには大変な手間がかかりました。

_しかも、今回の記事を執筆中に、MicrosoftがOfficeソフトを更新して画面デザインを変えやがったため、画面例のキャプチャを全てやり直しする羽目になりました。ここのところ筆者の身にはロクなことが起きません…(泣)。

_なお、Excelの更新によって、クイックアクセスツールバーが標準では非表示になりました。これは非常に困るので、Excelで【ファイル】タブ>【ホーム】メニュー>【その他…】サブメニュー>【オプション】を選択し、Excelのオプションダイアログ内の【クイック アクセス ツール バー】設定画面で□クイック アクセス ツール バーを表示する のチェックBOXをONにして、MFFマクロ動作用のアイコンを表示するように設定してください。

1.MFF形式データをGnuCashにインポートできる形にする

_サンプルのMFF形式データは、実はGnuCashからのエクスポートのテストに使用したものを利用します↓。セルに色をつけているのは説明を判り易くするためで、本来のデータにはありません。各色はそれぞれ

  • 2021/10/22の緑色系のデータ:給与明細
  • 2021/10/26の黄色系のデータ:クレジットカードによる買い物
  • 2021/10/28の青色系のデータ:お土産を現金・Suica併用で買った
_という取引を示しており、いずれも「明細分離用」という仮想の口座を設定して疑似的に複合仕訳を実現しているものです(家計簿アプリを活用するうえでの典型的な手法ですね)。よって、これらは当然スプリット取引としてGnuCashにインポートさせたいところです。

_そこで、MFFマクロV2.27では、MFF形式のL列を「スプリットフラグ」というデータ列として使用します(L列は、本来はMFFマクロのACF機能用ですが、GnuCashはインポートの際に勘定科目の対応関係を設定する機能があるのでACFを使う必要はありません)。スプリットフラグとは、MFF形式の複数のデータがスプリット取引を構成していることを明示するための自然数で、ユーザーが以下のように入力します。

  • 同じ日付で、同じ口座名の複数のデータに入力する。↓の2021/10/28の例のように、振替取引が複数含まれていても構わない。
  • 支出欄・収入欄の総額がそれぞれ同じになるようにする。↓の2021/10/26の例では支出・収入とも計1133円。
  • 親取引(これは1つだけ)となるデータ行に1を、子取引となるデータ行(これは複数)に2以上の自然数を入れる。子取引全てを2と指定しても、2以上の連番としてもかまわない。また、同じ日に複数のスプリット取引が発生する場合は、100の位を異なるものにする(101を親として、子を102~199とする。200台・300台…でも同様)
  • 親取引は、対象となる複数の取引の中でそれを代表するものを指定する。例えば↓のデータ例では2021/10/22の給与明細であれば、「明細分離用」口座から「あの筋銀行」口座に300,000円が振り込まれた体になっている取引が該当する。
  • スプリット取引に含まれる振替取引に対しては、反対取引(↓の画面でグレーに塗った行)の方にはスプリットフラグは入れないこと。また、そのような反対取引はデータ変換の処理対象外となる。反対取引が無いデータであればそのままで良い。
  • スプリット取引にせず、通常の取引データとしてインポートさせる場合はスプリットフラグ欄には何も入れない。
_↓の画面例の①のようにスプリットフラグを入力し、②D1セルのプルダウンメニューでGnuCashと設定し、③セルカーソルをD1セルに合わせた状態でMFFマクロを動作させます。

_なお、マクロを動作させる時点では、オートフィルタの絞り込み機能は使用しないようにしてください(オートフィルタ機能を解除しろということではなく、絞り込みをするな、という意味です。絞り込んでいる場合はMFFマクロが強制的に解除します)。これは、MFFマクロが処理の途上でMFF形式データを(日付とスプリットフラグをキーにして)昇順ソートする段階があるのですが、その際に絞り込みをかけているとExcelが「表示中の行だけでソートする」という動作をして、スプリット取引のデータ行が不連続になる場合があるためです。

GnuCashインポートテスト用MFF形式データ

2021/11/22

ついにGnuCashに対応 MFFマクロV2.27出現

_お待たせしました。前回記事の予告のように、鬼のように大変な思いをしてMFFマクロをGnuCashとのインポート/エクスポートのデータ変換に対応させることができました。バージョンナンバーも、現行のV2.23からV2.25にする予定が、さらにV2.27にまで飛びました。その理由は、プログラムをGnuCashからのエクスポート(GnuCash2MFF)で1回、GnuCashへのインポート(MFF2GnuCash)で2回、全面的に書き直したためです。

MFFマクロV2.27概念図

_当Blogでは、MFFマクロを公開後、解説記事を執筆中に改良点や不具合を発見してさらにバージョンアップすることがよくあります。GnuCashへの対応については絶対にそうなることが判っていたので、プログラム公開を延ばしておりました。…が、当該サブルーチンだけでなく、周辺のサブルーチンまで改修しなければならなくなったのは誤算でした。

_一連のバージョンアップ作業の中で、MFFマクロの大きな問題点も見えてまいりました。今回のGnuCashへの対応の中で最も足を引っ張ったのが、振替取引のデータに対して「反対取引をでっちあげる」というMFF形式の仕様です。

_もともと、この仕様は、マイクロソフトマネーにデータをOFXでインポートする際「1口座ずつしかインポートできず、振替取引を認識させることもできない」という制約に対応し、MFF形式の家計簿データを「口座名」で絞り込んでOFXファイルを出力する、という運用を想定したものです。つまり、口座A→口座Bの振替取引に対し、口座Aからの振替支出のデータはあっても、口座Bへの振替収入のデータは無い(口座Bの出納を正しく認識できない)…という事態を回避するための仕組みです。

_ところが、GnuCashは複式簿記を強く意識した造りになっているため、「口座A→口座B」の取引データと「口座B←口座A」の取引データの両方があると…データ変換処理の中で「口座Bを借方、口座Aを貸方とするX円の資金移動」と「口座Aを借方、口座Bを貸方とするマイナスX円の資金移動」という二つの表現が両立してしまい、特にスプリット取引のように「主軸とする口座名をデータから特定する」という処理を記述する際に大混乱を起こすのです。GnuCashが負の金額を取り扱える仕様になっているのが事態をさらに厄介にする…。このあたりの頭の整理のためにサブルーチンを全面的に書き直しする羽目になった、というわけです。

_幸いであったのは、直前に、複式簿記を基本設計としたDARUMA家計簿への対応を経験していたことでした(例えば2021/07/19 DARUMA家計簿からのデータエクスポートの方法も新しくなりました。これが無かったら労苦はさらにキツいものになったでしょう。

_また、MFF形式のもう一つの難点が「取引先欄」が収入・支出取引と振替取引でデータの意味が異なる、という仕様です。これも、毎度毎度の処理において、取引データがどちらの取引を意味しているのかを判断しなければならず、プログラムが非常に冗長になる原因になっています。

_このように、MFFマクロも次の大幅改良をそろそろ考えなければならないようです。いつになるかは判りませんが…

次回はいよいよGnuCashにデータをインポートします→

2021/11/19

GnuCashからエクスポートしたデータをMFF形式に変換する(後篇)

 ←前回の記事:GnuCashからエクスポートしたデータをMFF形式に変換する(前篇)

_今回は前回の続きで、GnuCashからエクスポートしたデータをExcelに読み込ませるところから始まります。

【2029/03/29追記】:この記事はGnuCashV4シリーズに対応しており、GnuCashV5シリーズでは、取引データをエクスポートした際のCSVファイルの形式が変更されています。詳しくは2024/03/29 GnuCashV5シリーズからエクスポートした取引データに対応したMFFマクロV2.54登場 を参照して下さい。

2.CSVファイルをExcelへ読み込む

_Excelを起動し、空のワークシート上でMFFマクロを動作させ、出現したダイアログで「GnuCashからエクスポートされたCSVファイル」を指定して、ワークシートに読み込ませます(ファイル名にGnuまたはGNUが含まれていることでGnuCash由来のファイルであると判定します)。このCSVファイルはUTF-8でエンコードされている(BOM無し、改行コードはCR+LF)ので、普通にExcelで開くと文字化けします。

MFFマクロでGnuCashからエクスポートしたcsvファイルを読み込む

2021/11/17

GnuCashからエクスポートしたデータをMFF形式に変換する(前篇)

 ←前回の記事:2021/11/10  GnuCashにデータを入力する方法(スプリット取引篇)

_GnuCash関連の連載もいよいよ本題に入ります(え、今までは本題じゃなかったの?という突っ込みはさておき)。GnuCashからエクスポートしたデータを、MFFマクロMFF形式に変換する方法を解説します。

1.GnuCashからのエクスポート

_の2回の記事で、GnuCashに取引データを入力した結果、各勘定科目の残高は↓のようになっているはずです。

これまでの例題を入力した結果

_ ここから、取引データをCSVファイルとしてエクスポートします。コマンドへのアクセスは↓のとおり。

取引をCSVにエクスポート_を選択する

2021/11/10

GnuCashにデータを入力する方法(スプリット取引篇)

 ←前回の記事:2021/11/09 GnuCashにデータを入力する方法(通常取引篇)

_前回は、借方・貸方が1対1で対応する「通常取引」の入力方法を解説しました。しかし、GnuCashを使いこなすなら、1つの取引で複数の借方と複数の貸方が対応する「複合仕訳」を実現する「スプリット取引」機能をマスターすることが欠かせません。今回はその入力方法を解説します。

1.家計簿アプリの複合仕訳機能の状況について

_複合仕訳の入力ができる家計簿アプリは、筆者の知る限りではDr.WalletMoneyProZaimマイクロソフトマネーの4つがありますが、それぞれ、できること、できないことがあります。そこでそれらをまとめたのが↓の表になります。

_【2022/01/10追記】:マイクロソフトマネーのエクスポート機能についての認識に誤りがありましたので修正しました。

複合仕訳が可能な家計簿アプリの性能一覧

_このように、複合仕訳機能に関して、4つのアプリはいずれも完璧とはいきません。最も優れているのはZaimですが、それとて支出でしか複数の費目を扱えませんので、給与明細を複合仕訳で入力するのは(ダミー口座を活用しなければ)不可能です。

_これに対し、GnuCashは支出・収入に跨がった取引を記帳可能で、しかもインポートの際にそのようにデータを認識させることができ、さらにエクスポートの際にもデータの欠落が発生しません(このあたりはいずれ解説します)。この「スプリット取引」の機能こそGnuCashの神髄と言えます。

2021/11/09

GnuCashにデータを入力する方法(通常取引篇)

←前回の記事:2021/11/07 GnuCashの動作設定

_GnuCashに最初に触れるユーザーは、まず「どうやってデータを入力すればいいんだろう」と途方に暮れるところでしょう。他の家計簿アプリと異なり、GnuCashは普段の操作においても、常に複式簿記を強烈に意識しなければならないからです。今回は、GnuCashのデータ入力UIのうち、借方・貸方が1対1で対応する「通常取引」(これは筆者の勝手な造語ですが)について解説します。2021/10/31の記事で触れた「スプリット取引」については次回の予定です。

1.まず収入取引を入力してみる

_GnuCashの操作は、↓の【勘定科目タブ】から、操作対象とする勘定科目をダブルクリックして入力画面に移行する、というのが基本になります。すなわち、取引に使用した口座をベースに入力するか、取引の結果として生じた費目をベースに入力するか、どちらの方法でも同じ結果になります。ここでは、親しみやすい前者の手順で入力してみましょう。まず、「23あの筋銀行」の、赤枠で囲った部分をダブルクリックします↓。

23あの筋銀行の名称または残高欄をダブルクリックする

2021/11/07

GnuCashの動作設定

←前回の記事:2021/11/05 GnuCashの勘定科目を設定する


_今回は急遽予定を変更して、GnuCashの動作設定について解説します。我が国のユーザーが家計簿として活用するには項目の大半が無用ですが…中には重要なものもあるので飛ばさずにご覧下さい。なお、↓の画面例の【編集】メニューの中で、【設定】の下に【スタイルシート】という項目があり、色遣いやフォント等をカスタマイズできますが、GnuCashとのデータ変換には関係ないので解説は割愛します。

GnuCashの設定画面

2021/11/05

GnuCashの勘定科目を設定する

←前回の記事:2021/11/04 GnuCashをセットアップする

_今回は、GnuCashを活用するうえでの最重要事項である「勘定科目」について解説します。

1.勘定科目と勘定科目タイプ

_GnuCashには資産・負債・純資産・収益・費用の5種類の勘定科目があり、その下に12種類の「勘定科目タイプ」があります↓。勘定科目タイプとは…例えば、"資産”の部に「その筋株式会社売掛金」という勘定科目を作って、それに「売掛金」と勘定科目タイプを設定すると、GnuCashの「売掛金」に関する機能の動作対象としてこの勘定科目が選択されるようになる、という一種のフラグのようなものと考えてください。ですから、この「勘定科目タイプ」の設定を間違えるとGnuCashはユーザーの意図どおりの動作ができません。

 また、これらとは別に「複数の通貨・商品を含む取引のために」ということで"通貨取引"という特殊な勘定科目タイプが用意されています。普通に家計簿として使う分には気にしなくて良いでしょう。

2021/11/04

GnuCashをセットアップする

_GnuCashの連載に突入するにあたり、まずすべきことはインストールとセットアップです。当BlogではPC(Windows)版を取り扱います。なお、公式サイトはこちらです(日本語)。インストーラのダウンロードもここから行ってください。2021年10月25日現在の最新バージョンは4.8です。

_なお、インストール手順には特筆すべき事柄は無いので、今回はGnuCashの初回起動から解説します。

1.インストール後の初回起動

_インストール後の初回起動では↓のようなダイアログが出現します。 ここでは【勘定科目セットを新規作成する】を選びます。何せGnuCashはこれをやらなければ何も出来ませんから。

GnuCash初起動後のチュートリアル

注目の記事

家計簿アプリとデータをやりとりする際のファイル形式のまとめ

_今回の主題は…家計簿アプリとデータをやりとりするときに使用するファイルの形式について、です。筆者がこれまで MFFマクロ に対応させてきた家計簿アプリは27種類(Money通帳とあっと家計簿は別カウント)。まず、家計簿アプリからエクスポートする方向では↓のようになります。...

最近の人気トップ3