プライバシー重視の家計簿アプリ「Actual」の魅力
ソフトウェアエンジニアの皆さん、家計簿つけてますか? 「めんどくさい」「レシートが溜まっていく一方」「銀行口座やクレジットカード、あっちこっちに散らばっていて把握しきれない」…そんなお悩みを抱えている方も少なくないのではないでしょうか。
本日ご紹介するのは、そんな悩みをまるっと解決してくれるかもしれない、すごい家計簿アプリ「Actual」です!
Actualは、一言でいうと「ローカルファーストの個人向け家計簿アプリ」です。
「ローカルファースト」って聞き慣れない言葉ですよね?これは、データがまず手元のPCやスマホといった端末に保存され、その次にクラウドと同期される、という考え方です。
多くの家計簿アプリが、ユーザーのデータをクラウドで管理しているのに対し、Actualは、あなたのデータはあなたが管理する、という思想で作られています。
では、我々ソフトウェアエンジニアにとって、Actualのどこが「おいしい」のでしょうか?
まず一番の魅力は、自分のデータは自分で管理できるという点です。
「銀行口座のデータとか、クラウドに預けるの、ちょっと怖いな…」と感じたことはありませんか?Actualなら、すべてのデータがあなたのローカルPCに保存されるので、外部に漏れる心配がありません。
Actualは、完全にオープンソースで開発されています。
「こんな機能があったらいいのに…」と思ったら、自分でコードを書いて機能を追加したり、他の開発者が作ったプラグインを使ったりすることもできます。
「自分の家計簿アプリを自分で育てていく」そんな感覚で使うことができます。
Actualは、ReactやElectronといったモダンな技術で作られています。
これらの技術に触れる良い機会になりますし、「こんなふうに作られているのか!」と、アプリの裏側を覗いてみるのも面白いですよ。
「よし、試してみよう!」と思った方のために、導入方法をざっくりとご紹介します。
一番簡単な方法は、Dockerを使う方法です。
Dockerをインストール まだDockerをインストールしていない方は、まずDockerをインストールしてください。
docker-compose.ymlを作成
以下の内容でdocker-compose.ymlというファイルを作成します。
version: '3.8'
services:
actual-server:
image: actualbudget/actual-server:latest
container_name: actual-server
restart: always
ports:
- "5006:5006"
volumes:
- actual-data:/data
volumes:
actual-data:
コンテナを起動
ターミナルでdocker-compose.ymlのあるディレクトリに移動して、以下のコマンドを実行します。
docker-compose up -d
ブラウザでアクセス
http://localhost:5006にアクセスすると、Actualの画面が表示されます。
これで、あなただけのプライベート家計簿サーバーが立ち上がりました!
ActualはAPIも提供されているので、独自のスクリプトを書くことで、自動化することも可能です。
例えば、以下のようなPythonスクリプトで、家計簿に取引を追加することができます。
(これはあくまで概念的なサンプルです。実際のAPIの呼び出し方については、公式ドキュメントを参照してください。)
import requests
import json
# ActualサーバーのURL
ACTUAL_SERVER_URL = "http://localhost:5006"
# APIキーなどの認証情報
# (実際の利用時には、APIキーなどを設定する必要があります)
HEADERS = {
"Content-Type": "application/json"
}
def add_transaction(amount, description, account_id):
"""
Actualに取引を追加する関数
"""
url = f"{ACTUAL_SERVER_URL}/api/transactions"
data = {
"transactions": [
{
"date": "2023-08-05", # 今日の日付
"amount": amount,
"description": description,
"account_id": account_id
}
]
}
response = requests.post(url, headers=HEADERS, data=json.dumps(data))
if response.status_code == 200:
print("取引が正常に追加されました。")
else:
print(f"エラーが発生しました: {response.text}")
# 実行例:500円のコーヒー代を追加
# add_transaction(-500, "コーヒー", "your_account_id")
このように、APIを利用することで、「毎月のサブスクリプション料金を自動で追加する」「特定の口座の入出金を自動で取得して家計簿につける」といった、より高度な使い方も夢ではありません。
Actualは、単なる家計簿アプリにとどまらず、我々ソフトウェアエンジニアの好奇心をくすぐる、魅力的なオープンソースプロジェクトです。
プライバシーを重視する方、自分でアプリをカスタマイズしてみたい方、そしてモダンな技術に触れてみたい方、ぜひ一度、触ってみてはいかがでしょうか?