AGESって何?
「みなさん、日々の細かな出費の管理、どうしてますか?」
- レシートを全部取っておくのも、家計簿ソフトに一件一件入力するのも面倒…
- 結局、スマホのメモ帳に『〇〇スーパー 1500円』とか『大根、豚肉』みたいに雑にメモしてるだけ、という人も多いのでは?
- 作業内容や生活状況がわかってしまうのでクラウドツールに渡すのはちょっとリスクを感じる。
様々な”ちょっと面倒“があると思います。
そこで、日記みたいなメモ
“11月17日 ~スーパーで豚肉 245円、白菜半玉 200円、ボールペン100円” みたいな文章から
自動で、項目別に仕訳(消耗品や食費など分類)してくれる
“AJES (Autonomous (自動) journal (日記・仕訳) Edge(ローカル処理) System (システム))”
を開発することにしました。
(“A“には、今後の機械学習拡張の”自律”の意味も含めてみました。)
AJESを使うことで日々の作業を1分以下にできます。

AJESで一日もしくは記録時にする作業は「コピペして、自動仕分けしてくれたものをチェックするだけ! 」(にしたい。)
3つのキーワード
開発にあたり、以下の3つのキーワード(開発理念)を守ることにします。
- シンプルであること
- 書けば、すぐ整うこと
- ちょっと賢く動作すること
シンプルはそのまま、初めて見ても2分くらいで扱えるようになること。
書けばすぐ整うこととは、日々のちょっとしたメモを貼り付けたらすぐ分析して、日々の作業時間としては、1分以下に収めること。
ちょっと賢くは「過剰に自動化しないけれど、“ちょっとかゆいところに手が届く”」ような動作であること。
「意見をください!」
このブログでは、このソフトが完成するまでの過程や、使った技術について(失敗談も含めて)共有していきます。
そして、ぜひ皆さんからの『こういう機能が欲しい!』という意見をいただきながら、より良いツールにしていきたいと思っています。
(ただ3つのキーワード (シンプル)は守りたいので、全部の意見に対応するのは厳しいですが、できるだけ意見を取り入れて使いやすく改善していきたいと思います。)
現状の機能は? (ver-0.4-β)
- メモをコピペ: 「今日買ったものリスト」などの日誌をそのまま入力欄に貼り付けもしくは書き込みます。
- 自動仕分け: ソフトが句(アイテム)ごとに分割し、あらかじめ設定した設定に基づき「食費」「日用品」「交通費」などの勘定項目を自動で判別します。
- プレビュー&修正: 日付別のツリービューで「どのメモが、どう仕分けられたか」を一覧表示します。ここで「あ、これは食費じゃなくて雑費だな」と手動で修正できます。
- (DB保存)&CSV出力: 修正した内容をボタン一つで、CSVで出力することも可能です。
操作画面
(画像は開発中のため今後変更される可能性が高いです)

画像 起動画面 ver-04-demo
日誌やメモなど値段と項目がわかるテキストをコピペ

文章形式と箇条書き両方対応です。(箇条書きの方が精度は高い。)
分析実行ボタンで自動仕訳

分析実行ボタンを押すと自動で分析されて、右側の仕訳サジェスト結果に結果が表示されます。
上の実行画像の仕訳サジェスト結果を見れば、自動で仕訳されて値段と日付が出せているのが確認できると思います。
※仕分け項目は自由に設定可能です(画像は税務報告用設定の例です)。
展望と予定
現状はデータベース的な分析をしているだけなのですが、今後の機能として、機械学習を実装して修正があった項目などを自動的に学習し次出てきたらユーザの過去の設定記録をもとに学習していくようにしたいと思っています。
(あと、UIをもう少しきれいにしたい。)
リリース予定は?
もう少し改良ができたら、ソフトウェアギャラリーにβ版を公開予定です。
今回の進捗と、こだわったポイント(開発録)
第1回目なので、コア機能の実装について触れます。
「今回は、主にソフトの心臓部である『メモの解析v1』と『ツリービューでのプレビュー&修正』機能を実装しました。」
要件定義の仕方
機能作成については、次のことを考えて設計しました。
「慣れれば便利だが、機能が多く、どれを使えばいいかわからない!」というソフトよりは、基本的なことは全部できるソフトを作ること。応用的な作業は他のもっと適したツールでやればよいと考えています。
例えば、家計簿のグラフ作成などは、このツールで実装するよりはエクセルとか、もっとその目的に適した便利なソフトがあるはずですし、書類作成は別途いい感じの会計ソフトがあると思います。
このような機能を実装できないわけではないですが、これを追加したことでメニューが増え、サクッと使えるというコンセプトを崩してしまうのは良くないですよね。
そこで、ソフトの機能は、大きく3つに絞りました。
- メモの解析と自動仕訳
- データベースへの保存(Pro版に実装)
- 自由にCSV出力できる。→他のソフトで使いやすくする
ソフトの要件定義は、この3つを念頭に置き設計しました。この3つの要件から上の方で紹介した3つのキーワードが決まりました。
メモの解析と自動仕訳
今回は、このうちのメイン機能である“メモの解析と自動仕訳”についてもう少しお話しできたらと思います。
メモの解析については、モデルを換装できるように設計しており、アプリバージョン0.4で実装している、解析モデルv1は、正規表現を用いた、アルゴリズム処理をしています。
この正規表現については、そのうち記事にするかもです。
簡単な例を挙げると、 “100円” や “200円”などの文字列は、正規表現を用いれば、” [0-9]+円”で検出できます。
(この正規表現は 0から9までの数字([0-9])が1回以上繰り返された(+)後に”円”がある文字列を表しています。)
こんな感じの正規表現をいい感じに組んで、メモから自動で該当する項目を見つけ出し、それがどの勘定項目に該当するのか分別しています。
今はアルゴリズムで処理していますが、記事の上の方でも少し触れましたが、機械学習モデルを使った解析モデルv~ を作って、ユーザの入力や修正に合わせて自動的に学習していくようにしていきたいと考えています。実装とテストは、調整が大変そうなので、モデルの改善用データ(書き換えが多い項目は、あまりよくないなどdemo版でのマスクされた安全な記録の提出(任意))が集まり次第になるとおもいます。
解析の概要と仕組みは上記の通りですが、この調整は”ちょっと賢く”という目安で行いました。
”ちょっと賢く”というなら、”ちょっと“と”賢く”ってなんぞや?と思うかもしれません。
ここでいう賢くは、すべてのタスクにほぼ完ぺきに対応できるという賢さです。AIの学習などではよく知られている、あまりよくないこととして”overfitting”(オーバーフィッティング、過学習)というものがあります。これは、学習時に学習データに過度に調整されたせいで、そのデータに対しては精度がとても高いが汎用的にはあまり精度がよくないことを言います。
今回の解析ツールを作るにあたり、ちょっとという接頭辞をつけたのは、初め(配布時)はちょっと賢いくらいの調整にとどめておき、日々の記入でユーザの記入データや癖を学習してその人にあった、仕訳ができるようにする。エッジ(ローカル)での自律学習をツールの心臓部に据えた設計にしました。(デモ版はその前段階なので、データ収集もかねています)
見やすいわかりやすいUIにするために
心臓部はできても、UIがわかりづらかったら、使いやすいツールとは言えません。
今回のUI実装で、特にこだわったのは『プレビュー&修正』機能です。
「なぜなら、”ちょっと賢い” 正規表現による自動判別は絶対に100%にはならないからです。AIを使ったとしても間違うことはあります。」
だからこそ、保存する前にユーザーがストレスなく『確認』と『修正』ができるUIが必須だと考え、ツリービューを採用しました。日付がないなど致命的なものについては、赤色で強調表示するなど、ぱっと見で分かるようにしています。

致命的なエラー 日付がない
最後に
コメント欄を開放しました。開発の進捗は今後もこのブログで報告します。気軽にコメントや応援メッセージをいただけると励みになります!「こんな機能があったらうれしい!」みたいなコメントもぜひ!よろしくお願いします。
では、次の記事か開発録で。 lumenHero
Comments