2012-05-23

【サービス】家計簿システム作ってみた。

久しぶりに専門である「お金計算」のプログラム作ってみました。

今回は慣らしということで簡単な「家計簿」のシステムにしてみました。
開発期間は設計から賞味2日位です。
以前にも同じようなシステムを作っていたのですが、そちらはすでに古いバージョンのデータベースやPHPを使っていたので保守性も悪く、長いプログラムになっていました。
ですので、全面的にプログラムを書き直したうえでデータベースのバージョンもあげています。
あと、プライバシーとセキュリティを考えると、「名前」や「住所」は入力してもらわないほうが良いと判断して、ユーザ登録の際の入力には「メールアドレス」「パスワード」「ニックネーム」のみお願いしています

「TagajoTown Household Account Book System (TgagajoTown家計簿システム)」
紹介サイトURL  : http://kakei.tagajo.tv/
システムの使い方: http://kakei.tagajo.tv/how_to_use.php

というわけで、以下システムの目的と特徴紹介です。

■システムの目的
この家計簿システムは「現金出納」に利用するための物です(世間一般の家計簿はみな現金出納だと思いますが)。
基本的に、
1)預金からお金を引き出し
2)買い物をし
3)あまったら預金へ戻す
という流れを記録することで、現金の流れ(キャッシュフロー)を把握します。
つまり、無駄なお金を使ってないか確認するのが目的のひとつです。

あと重要なのが3)の「あまったら預金へ戻す」ことです。
これは「貯蓄を増やす」こととイコールなので「ヘソクリを増やしたい」という方にもお勧めの方法です。
このシステムでは、摘要が自由に設定できるので「預金預入」の摘要を追加して、その金額が増えるように家計を管理していけば、このシステムの目的達成、ということになります。

■特徴1.加算式家計簿
自分が家計簿(お小遣い帳でもいいですが)をつけるときに気になることがあります。
それは、家計簿をつけるとき「摘要」に合致する出納を「事前に集計して」からでないと家計簿に記載できないのがイヤだったということです。
たとえば、「食費」の摘要にはその日買った「昼食代」や「おやつ代」などを一旦「集計」するというひと手間です。

今回、それをなくすために以下のような方針で入力画面を設計しました。
1)1日の出納入力は「摘要」ごとに行う。つまりある日の出納データ数は設定した摘要の数までとなる。
2)摘要に入力した出納の数値は、すでにデータがあるときは「データに加算」、無いときは「その数値のデータを作成」とする。
3)摘要のデータは削除できないようにする(このシステムでの「出納データ削除」とは「摘要の削除」を意味するため)
4)削除できないため、出納の数値から「減算」もできるように「マイナスの数値」を受け入れるようにする。
という感じにしました。
このような設計にすると、「買った金額」ごとに入力できます
買い物の後レシートをもらったとして「その商品ごと」に金額を入力(しかも同じ摘要へ何度も)を行えるようになります。

こうしたおかげで「日毎に増えるデータ数」が限定され、ディスクの容量も節約できるようになり、集計演算もまぁまぁのスピードで行えるようになりました。

■特徴2.摘要のカテゴリ分類
摘要を「カテゴリ分け」できるようになっています。
カテゴリ分けすると、システムトップの集計一覧表に「小計」が表示されるようになります。
たとえば「収入」カテゴリに「預金引出」と「給与(手渡)」の摘要があったとして、2つの摘要の合計が「小計」欄に表示されるようになります。

また、これら「カテゴリ」「摘要」ともに「登録、変更、削除」ができるようになっています。
ただし、出納データが登録された摘要やカテゴリを削除すると同時に出納データも削除されてしまうので注意が必要です。

■特徴3.グラフ表示
システムのトップページには、「カテゴリ・摘要の集計一覧表」が表示されますが、そのほかに「摘要ごと」の折れ線グラフが表示されます。
このグラフ自体はGoogle Chart APIを使用しています。

以上です。

ZenBack

WebMoney ぷちカンパ