XMの取引結果を毎日自動でFreeeに連携するしくみを作る! その1まず問題を分解して考える。

March 13, 2021

はじめに

私はお金によって選択を諦めるような人生にはしたくない、やりたいことはやっていきたい、の精神にしたがってFXの自動売買システムによる資産構築を試みています。(いまのところ、結果は散々なのですが…) ところで、日本にいる以上副業等で一定額の金額を稼ぎ出すと確定申告が必要になってきます。副業での収入の管理は会計Freeeという業務サポート系ツールを用いて行っていますが、請求書管理と確定申告の書類作成くらいにしか利用していませんでした。確定申告時には損失しかなくてもFXの損失報告も行っておくと、来年度の申告時に少し有利になるかもしれないとの情報を目にしたのもあって、FXの損益管理も会計Freeeで行えたらいいなぁということを考えています。

このため、FXの取引履歴をFreeeに反映する作業を手作業で行ってみましたが結構なステップ数を踏まないといけないことがわかりました。そこで、FXの取引履歴を完全自動でFreeeに反映する仕組みを考えてみました。

現状の問題点

現在、会計Freeeで上述したことを実現するにはざっと、以下のステップを踏む必要があります。

  1. FXの取引結果をCSVなどで取得する。
  2. Freeeの取引登録用のCSVをダウンロードし、XMの取引結果をその形式のCSVに変換する。
  3. 会計FreeeにCSVをアップロードして、取引登録を行う。
  1. FXの取引結果をCSVなどで取得する。

に関しては、私の場合は、VPS上で動いているFX取引システムの画面を開き、画面操作をすることでエクセル形式の取引データがダウンロードできます。ただし、エクセルだとプログラムで読み込むのが少し面倒ですし、テキストエディタで開けないのも不便なので、GoogleSpreadSheetなどで開き直し、CSV形式で出力し直します。このため、ステップ数が多くなり、毎日やるのは正直面倒です。

  1. Freeeの取引登録用のCSVをダウンロードし、XMの取引結果をその形式のCSVに変換する。

に関しては、実は既に過去1年分の取引記録をFreeeの取引登録用のCSVに変換するスクリプトを書いているので、一瞬でできます。スクリプトを実行するのは手作業なので、そこは面倒なところですが…

海外FXの取引結果をFreeeにCSVで取り込んでみた。

  1. 会計FreeeにCSVをアップロードして、取引登録を行う。

に関しては、正直会計Freeeに毎日ログインして、CSVファイルをアップロードするだけなので、まぁ正直できなくもないですが、面倒であることに変わりありません。

問題点に対する解決策を考えていく

問題点

FXの取引結果の取得がめんどくさい。

解決策

GASを利用してメールからCSVを取得する!

実は、私が利用しているFX業者のXMからは、FXの取引結果が毎朝7時頃メールで送られてきます。Gmailで受け取っているので、GASを定時実行しメールを取得し、メール本文のテーブルをCSV形式に変換してあげれば取得できそうです。

XMから送られてくる取引履歴のメール

問題点

取得したCSVを会計Freee用に加工することと、加工したCSVを毎朝会計Freeeにログインしてアップロードするのが面倒。

解決策

CSVファイルへの加工をクラウド側で行い、加工されたCSVファイルをダウンロードし、APIでアップロードする仕組みをプログラムで実装すれば解決!

GASを利用して作成したCSVファイルからFreee連携用のCSVファイルを作成する処理をGASなどで実装し、GoogleDriveに生成されたファイルを置いておきます。それを自動でダウンロードする仕組みを作成し、ダウンロードされたファイルをもとにFreeeAPIを用いて取引登録処理を行えばできそうです。

解決策の案をまとめると…

GASを利用してメールからCSVを生成し、生成されたCSVをダウンロードして、FreeeAPIで取引登録する、というところまでをすべて自動で行えるようにするということです。

クラウド側でのCSV加工は、私がJSよりはPythonが好きということ、AWSに慣れたい、Lambdaを書きたいということから、GASで作成されたCSVファイルをS3に配置し、配置されたことをトリガーにLambdaを起動し、CSVを加工したり、サマリーをLINEで通知したり、といった流れでやっていくことになりそうです。

まとめ

FXの取引履歴を会計Freeeでこまめに管理したいと考えていますが、そのためには結構な手間がかかってしまいます。毎回手作業でやるのはしんどいので、エンジニアとして業務?の自動化を考えました。

まず問題点を列挙、整理し、それぞれに解決策を考えて行きました。最終的に、取引登録に必要なCSVはクラウド側で作成し、作成されたものを自動でダウンロードし、FreeeAPIに連携する仕組み(つまりFreee連携用のアプリ)をつくればいいということになりました。 できれば、AWSに慣れることができるようにLambdaやS3といったものを使ってやっていきたい、ということになりました。 ということで、少しずつ作っていきます。(これを書いている時点で実は、ローカル環境で指定時刻にFreeeに取引を登録することができるようになっていたりしますw)


Written by Blackcat ひよっこエンジニア, いつかは自分でサービスを作りたいとずっと言ってる Twitter