【自作家計簿システム】Workato×iPhoneショートカット



新生活の開始に伴い、きちんと支出管理しようと思い家計簿をつけ始めました。最初は色々なアプリを試してみましたが、自分のニーズにぴったり合うものは見当たりませんでした。その辺の家計簿アプリはAPIの提供が限られているor無いため、自分で欲しい機能を追加することも難しく、こだわりの家計簿にするために自作の道を選びました。

面倒くさくならない家計簿記録

家計簿はめんどくさくなると絶対つけなくなるので、できるだけ一回一回の記録が面倒くさくないような仕組みを作ろうと思っていました。私も妻も究極のめんどくさがりなので、なんなら家計簿アプリ開くということ自体面倒くさくなって多分やらなくなります。ですのでアプリを起動すらしなくてもいいのが理想だと思ってました。
基本的な記録情報は、いつ、いくら、何にお金を使ったかです。これらの情報を効率的に入力するためのシンプルなUIを検討しました。

iPhoneのショートカット

私も妻もiPhoneを使っているということもあり、試しにiPhoneのショートカットをUIにしてみることにしました。結果として、そのままiPhoneのショートカットが私の家計簿の仕組みを支えることとなりました。iPhoneのショートカットは柔軟なUIを作成でき、スムーズに起動できるが特長です。最初のリリースから半年以上が経ちましたが、家計簿の記録が途切れることなく続いているのは、この仕組みがうまく回ってることを物語っています。

実際の連携

  1. レシートの撮影

  2. 金額の入力

  3. カテゴリの指定

これらの情報はショートカットを通じてWorkatoへ送られます。Workatoのレシピがレシート画像をAWSのS3にアップロードし、金額とカテゴリ情報、S3のリンクをGoogleスプレッドシートに記録します。Workato側ではAPI Platform機能を活用し、ショートカットから送信されたレシートの画像ファイルや入力データを受け取り、処理しています。

WorkatoのAPIエンドポイントレシピ
WorkatoのAPIエンドポイントレシピ
APIエンドポイントのレシピから呼び出されるレシピファンクション

カテゴリを指定した後はiPhoneをスリープしてしまってもアップロードをバックグラウンドでやってもらえるところが地味に嬉しいです。アップロードに数秒かかりますが、それすらも待つの嫌なので…

ストレージと柔軟性

初めはGoogle Driveにレシート画像を保存していましたが、無料プランだと15GBの容量制限があるので、保存先はS3に切り替えました。S3は容量の重量課金があり、オブジェクトのライフサイクル管理機能を使って古いレシート画像の自動削除設定も可能です。この価格面、機能面が柔軟なことからS3を採用しました。

アップロード先のS3バケット

効率的なスプレッドシート管理

Googleスプレッドシートは毎年別のスプレッドシートを作成し、月ごとにシートを新たに追加しています。これらの自動作成も、Workatoのレシピを活用しています。

家計簿のスプレッドシート
スプレッドシート/シート自動作成レシピ

実装で一番大変だったこと

ショートカット作成アプリ自体にあまりにもバグなどが多すぎること。分かりづらいアクションや難解な変数指定、設定項目の突然の消失など、実装に手こずる部分もありました。

ショートカットの中身

進化し続ける仕組み

この家計簿の仕組みは、初版から何度も改良されました。入力内容の削減、カテゴリ選択時の一言入力機能追加、ショートカットの最適化などが行われ、アジャイルなスタイルで機能が拡張・改善されています。

未来への展望

今後はOCRを用いてレシートの内容を読み取り、ChatGPTを用いてデータを構造化することを検討しています。これにより、レシートを撮影するだけで家計簿登録がされる仕組みができるかもしれません。(正確性が懸念点ですが)
実際、Workatoの日本チームの方が請求書画像をGoogle Visionで読み取り、それをChatGPTで構造化データに整えるという検証をしていて、そこから着想を得ました。

この自作家計簿システムは、Workatoを核とした連携とショートカットを駆使して、効率的で継続可能な管理方法を提供しています。このアプローチが、他の方々のアイデアのヒントになれば幸いです。

レシピやショートカットの共有リンク

  1. APIエンドポイントレシピ

  2. レシピアップロード・家計簿登録レシピ

  3. スプレッドシート/シート自動作成レシピ

上記をまとめたRecipe Lifecycle Managementからインポート可能なzipファイル

iPhoneショートカット

おまけ

WorkatoのAPI Platformのダッシュボード画面(一部)

画像アップロードが伴うAPIエンドポイントなので平均レスポンスタイムが長いのは仕方ないかなと思っています。特に、4Gに繋がっているときと5Gに繋がっているときでアップロードにかかる時間はやはり全然違います。
おそらく緑の折れ線のうち、レスポンスタイムが50Kms(5秒)のラインに存在する線は5Gに繋がっていた時のもので、3秒以内にレスポンスを返しています。
赤の折れ線はエラーになってしまったリクエストですが、アップロード中にWifi→モバイル通信に切り替わってしまうとエラーが起こってしまうので、それが原因のエラーがほとんどだと思います。

WorkatoのAPI Platformのログ画面(一部)

参考までにAPIのログ画面です。各エンドポイントごとのログはレシピのジョブとして別に存在します。
この画面ではWorkatoで作成したAPIエンドポイントのログを包括的に確認することができます。

この記事が気に入ったらサポートをしてみませんか?