top  Index  Search  Changes  RSS  Login

howm wiki - howmoney.0 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

[[howmoney|http://languagegame.org:8080/propella/uploads/82/howmoney.3.png]]
! 何をする物か?
[[yen.el|http://howm.sourceforge.jp/a/yen.el]] を少しだけ参考に作ったお小遣帳/家計簿。
入力の簡単さを主眼としています。おまけとして、何かをした時間の集計も出来ます。
! 何をする物では無いのか?
グラフが出たり、入金を記録する事は出来ません。結果を excel 等に貼り付けるのは簡単なので、
他のソフトを使うと簡単だと思います。
! 何のために作ったか?
お金や時間の使い方は人それぞれですが、単に勢いで節約したり頑張ったりしても
しんどいだけです。記録をつけるようになると、自然に無駄な買い物や漫画喫茶が減る(はず)です。
しかし、既存の家計簿ソフトには色々問題があります。
* つけるのが面倒くさい
* つけた記録を見ても思い出せない。
家計簿ごときにわざわざソフトを立ち上げるのは面倒くさく、折角つけた記録を見ても、
お金を使った背景を思い出せずに反省できないという事になってしまいます。特に面倒
臭いというのは致命的です。

そこで howm。howm のメモに使ったお金を混ぜ込んで書いて、後で抽出するという発想が
生まれてきます。つまり、機械にあわせて人間が記録を残すのではなく、人間様の残した
記録を機械に集めさせるという方向です(といっても機械に分かるように書かないと結局駄目ですが)。
適当にあちこち書き散らしたお金や時間の記録が、一発で集計されるというのは割りと気持ちの
良い物ではあります。
! 使い方
!! インストール
ダウンロードして howmoney.el と名前を変え、ロードパスの通っている所に保存してから
(load "howmoney")
のように .emacs に書きます。実は自分でもロードの仕組みは良く知らないのですが、上手く
行かなければフルパスで書けば良いみたいです。

!! 使い方
お小遣をつけるにはその日のメモに
$食費$ 麻婆丼 500
のように書きます。つまり、$ でくくったタグ、何を買ったか、金額の順に一行に書きます。
金額は行末に書いた方が良いです。
ここで、 M-x howmoney-daily を入力すると、タグに関わらず全部の金額が日付ごとに
集計されて表示されます。
もしも、食費だけを表示したい場合は、>>> $食費$ と何処かに書いてエンター押したり、
C-c , g で$食費$を検索した後で M-x howmoney-daily すれば、食費だけ集計されます。

同じように時間の記録を取りたいときは、
03:09-10:10 @睡眠@ 電話で夜更かし
のようにします。この場合は先頭に時間、タグ、コメントの順です。
時間の記録はどこにいても C-c , C-t によって簡単に入力可能です。

この辺が気に食わない人は、変数 howmoney-tag-regexp  howmoney-money-regexp あたりをカスタマイズ
すれば良いです。

* M-x howmoney-daily 一日ごとに使った金額を集計
* M-x howmoney-weekly 一週間ごとに使った金額を集計
* M-x howmoney-monthly 一ヶ月ごとに使った金額を集計
* M-x howminutes-daily 一日ごとに使った時間を集計
* M-x howminutes-weekly 一週間ごとに使った時間を集計
* M-x howminutes-monthly 一ヶ月ごとに使った時間を集計

* 集計画面で @ 詳しく表示
* p で集計期間をトグル

! ダウンロード
* http://www.languagegame.org:8080/propella/uploads/82/howmoney-25.el - [[2ch3:645-646n]]の対策案パッチ済
* (上記からダウンロードできない場合 → [[howmoney-24.elのコピー|http://howm.sourceforge.jp/a/howmoney-24.el]])

! 応用
他のソフトと連携してグラフを作る方法については http://languagegame.org:8080/propella/84 も
参照して下さい。

[[表|http://languagegame.org:8080/propella/uploads/84/excelp3.png]]

! 豆知識
金額は最後の数字しか参照しないので、例えば
$食費$ イチゴ フレーク 米 牛乳 ビーフパテ ツナ (* 29.89 118)
のように最後に S 式でドルの金額とレートを書いて、M-x eval-print-last-sexp で掛け算。
$食費$ イチゴ フレーク 米 牛乳 ビーフパテ ツナ (* 29.89 118) 3527
を保存すると、現地通貨と円の両方を記録する事が出来ます。

M-x howmoney-list-dependent-symbol で依存している howm のシンボルを表示します(作者さん用?)

----
*2004-02-25 (水) 18:23:11 ''[[名無しさん]]'' : 週毎に集計する機能を追加しました。
*2004-02-25 (水) 18:24:12 ''[[名無しさん]]'' : enter を押したらその日のこづかいが全部表示されるようにしたいけど、どうするのかな?
*2004-02-25 (水) 19:27:52 ''[[名無しさん]]'' : いつどこで enter?
*2004-02-25 (水) 20:41:27 ''[[名無しさん]]'' : 例えば今週の小遣の金額を出した後で、今週の行でenter使った額が詳しく出るとか
*2004-02-26 (木) 02:21:21 ''[[名無しさん]]'' : define-key?
*2004-02-27 (金) 22:22:35 ''[[名無しさん]]'' : あ、enter は撤回。イメージとしては、howmS と howmC の関係のように、集計画面でカーソルを上下に動かすともう一つの画面で明細がちょろちょろ見られる。と思って howm のソースを勉強したけど、全然分からなかった。どうやって next-line の時に howmC を書き換えているのでしょーか??? hook が関係あるのかな?
*2004-02-27 (金) 22:32:46 ''[[名無しさん]]'' : post-command-hook
*2004-03-02 (火) 11:04:15 ''[[名無しさん]]'' : 教えてもらった define-key と post-command-hook を使ってみました。随分長くなった。。。
*2004-03-03 (水) 18:14:10 ''[[名無しさん]]'' : 変更点: howmoney-daily-buffer を廃止、*howmS* バッファで howmoney-daily すると勝手にそのバッファを集計する。q を押したときに、*howmoney* バッファのみ削除。内容を後から確認したり、daily と weekly を切り替えるのに便利。継続期間の表記を ISO 8601 式に http://www.kanzaki.com/docs/html/dtf.html#period
*2004-03-04 (木) 23:59:43 ''[[名無しさん]]'' : 変更点: 金額の無い一番下の行をポイントすると全部の元データを表示。q 押した時元データに移動。時間集計を軽く実装してみた。
*2004-03-08 (月) 19:27:36 ''[[名無しさん]]'' : C-c , C-t でタイムスタンプ。M-x howmoney-monthly
*2004-03-12 (金) 03:19:32 ''[[名無しさん]]'' : *howmoney* バッファは出るのですが,その中が空です。ここのFAQを参考に1日1ファイル形式にしているんですが,それがまずいんでしょうか。それとも他の原因?
*2004-03-12 (金) 15:52:41 ''[[名無しさん]]'' : 一日一ファイルでもだいたい動くようにしました。あと、C-c , C-t の時にタイムスタンプを押す日付けを、深夜5時まで前日にしました。テストしきれてないので、動かなかったらいって下さい。
*2004-03-12 (金) 21:34:28 ''[[名無しさん]]'' : う〜ん。やっぱり上手くいかないです。確認すべき点を教えていただけますか。ちなみに,Meadow2を使っています。howmのバージョンは1.1.1.1rc1です。
*2004-03-12 (金) 23:09:23 ''[[名無しさん]]'' : M-x howmoney-search で $なんとか$ が反応しますか? これは日付関係なしなんですけど
*2004-03-15 (月) 12:28:27 ''[[名無しさん]]'' : すいません。タイトルとして(= を先頭につけて)記述をしたらきちんと集計されました。こういう書き方で良いのでしょうか?
*2004-03-15 (月) 15:24:41 ''[[名無しさん]]'' : いや、僕のところでは = が無くても動いているので関係無いような気がしますが、なんでかなー
*2004-03-15 (月) 17:22:39 ''[[名無しさん]]'' : 「一覧でタイトルを表示するか」みたいな howm のカスタマイズに依存してる可能性は?
*2004-03-16 (火) 00:18:30 ''[[名無しさん]]'' : あぁ,それみたいです。howm-list-title(all, recentも)をnilにしたら,=が無くてもきちんと集計されました。ありがとうございました。
*2004-03-17 (水) 17:03:51 ''[[名無しさん]]'' : 集計画面で @ を押すと詳しく表示される機能追加。23:53 と、さらに p で集計期間をトグルを追加。
*2004-05-20 (木) 00:24:49 ''[[名無しさん]]'' : テスト版にしたら動かなくなってしまいました。エラーを見て、howm-view-get-bufferとhowm-view-summary-buffer関数を古いhowm-view.elからコピーして解決。パッチが作れない自分が情けない、、、、
*2004-05-20 (木) 00:44:32 ''[[名無しさん]]'' : 解決してなかった。バージョンを戻すか
*2004-05-20 (木) 02:13:41 ''[[名無しさん]]'' : ありゃーごめんなさい. (defalias 'howm-view-get-buffer #'riffle-get-buffer) (defalias 'howm-view-summary-buffer #'riffle-summary-buffer) とか?
*2004-05-20 (木) 21:15:14 ''[[名無しさん]]'' : あと, howmoney-search-general あたり(?)は (let ((howm-list-title nil)) …) にしとくといいかも>上の「カスタマイズ依存」
*2004-05-20 (木) 22:11:01 ''[[名無しさん]]'' : スマソ。機能に満足して手元でバージョンアップしてませんでした。今から直します。
*2004-05-20 (木) 23:00:09 ''[[名無しさん]]'' : 誰が誰だか…いや、わかるけど(w
*2004-05-21 (金) 21:49:44 ''[[名無しさん]]'' : howm 側を修正して, howmoney.el で使ってる関数については defalias しときました. howmoney 側は, (defun howm-view-set-item-list (item-list) (mapc (lambda (var) (when (boundp var) (set var item-list))) '(riffle-item-list howm-view-item-list))) とかした上で, (setq howm-view-item-list item-list) を (howm-view-set-item-list item-list) とかに変えてもらえませんか?
*2004-05-21 (金) 23:54:13 ''[[名無しさん]]'' : スミマセン。簡単に直ると思ったのですが、プログラムの内容を忘れていたので土日で何とか直してみます。作者さん(?)の変更だけで、金額は見れることは見れると思います。あと折角 riffle で綺麗になったのに、これだけのために defalias が増えるのも恐縮なので、最新版に追従したいと思っています。
*2004-05-22 (土) 00:53:21 ''[[名無しさん]]'' : テスト版 howm もうひと修正しました. 「集計画面で @」も効くようになったかな. riffle.el はリリース版にはまだ入ってないですし, できるだけ互換性保ちながらだらだら移行っていうのが性にあうみたいです.
*2004-05-23 (日) 12:20:40 ''[[名無しさん]]'' : 貨幣単位別に集計されるとウマーなのですが。
*2004-05-24 (月) 00:36:22 ''[[名無しさん]]'' : なんとか 1.1.1.1 と、 howm-test040522 版の両方で動くようにしておきました。post-command-hook の中で引っかかってたので発見に手間取りました。ついでに howm-view-summary-show も defalias して頂けると有難いな。。。とはいえ、依存している関数が大量にあるので、少なくした方が良いのかなと悩み中。通貨については、豆知識に書いたやり方で誤魔化しています。日本円に直さないと実感湧かないので。貨幣単位別に集計は難しくないと思うけど、良い表記法が思い浮かばなかったです。
*2004-10-02 (土) 14:34:11 ''[[名無しさん]]'' : 小遣いと同じファイルの中に,snap.elで取り込んだWanderlustのメールへのリンクも書いてあるのですが,そのリンクに$が2つ入っているとそれもタグとして認識してしまいます。そして,それ以下の数字を金額として計算するようです。これって,
*2004-10-02 (土) 14:35:56 ''[[名無しさん]]'' : すいません,途中で送ってしまいました。これって,何か簡単に回避する方法はありますかね?1日1ファイルの形式で,1つのファイルの中にいろいろ混ぜて書いているのですが。
*2004-10-02 (土) 18:16:32 ''[[名無しさん]]'' : うーん。金額の書式は正規表現を色々工夫すると良いかもしれません。
*2004-10-21 (木) 17:12:13 ''[[taku]]'' : これって、やっぱり一日一ファイルで金銭メモをつけないと、howmoney-dailyとかで集計出来ないんですよね?
*2004-10-22 (金) 00:05:11 ''[[名無しさん]]'' : grep 検索して足してるだけなので、複数ファイルでも大丈夫ですよ
*2004-10-22 (金) 16:42:50 ''[[taku]]'' : [2004-10-22] $食費$ 缶コーヒー 250 のようなラインで日付を記録してhowmoney-dailyに反映させるには、どうの変数をいじればいいでしょうか?
*2004-10-22 (金) 18:59:54 ''[[名無しさん]]'' : えー!それはもしかして一つのファイルに複数の日付を入れるという意味でしょうか? 今はファイル名が日付だと想定してしまっているので、プログラムを変えないといけないです。たとえば howmoney-daily-prod でファイル名から日付をあらわすキーを返すようにしているのですが、ここをファイル名じゃなくてマッチした行にしないといけないです。で、さらに関数は直接呼ばれず、period-prod に入っていて howmoney-item-lines から呼ばれます(日ごと、週ごと、月ごとの関数があるので)。ややこしくてすみません。ちなみに次は体重を記録するやつを作ろうと思っています。
*2004-10-22 (金) 21:16:03 ''[[taku]]'' : あぅ、そうですか。自分はhowmの1ファイルに「お財布メモ」とかで書こうと思っていたので。。
*2004-11-29 (月) 12:15:33 ''[[taku]]'' : 1ファイルに複数の日付を付けられるようになる計画はありますでしょうか?
*2004-11-29 (月) 15:34:18 ''[[名無しさん]]'' : うーん。あまりに沢山の人が欲しがったり、簡単に実装するワザが思い浮かんだらするかも知れませんが、今のところ難しいです。
* [[2ch3:233-237n]] 週ごとの集計が一週ずれる → こんな感じに直せばよい?
(defun howmoney-numweek-to-date (year numweek)
   "Answer start time-value of week number starting on Monday of year.
\(First week is 0)"
   (let* ((dow (nth 6 (decode-time (encode-time 0 0 0 1 1 year))))
          (delta (mod (- howmoney-week-start-day dow) 7))) ;; >= 0
     ;; day = 1 + (numweek - 1) * 7 + delta
     (encode-time 0 0 0 (+ -6 (* numweek 7) delta) 1 year)))
*2007-03-25 (日) 00:19:00 ''[[名無しさん]]'' : ずっとほったらかしですみません。上のコードをマージしました。ありがとうございます。 http://www.languagegame.org:8080/propella/uploads/82/howmoney-24.el
----
* [[2ch3:645-646n]]の対策案
<<<
--- howmoney-24.el      2008-12-29 00:00:00.000000000 +0900
+++ howmoney-my.el      2008-12-30 00:00:00.000000000 +0900
@@ -175,11 +175,11 @@
   "Kill howmoney buffers."
   (interactive)
   (kill-buffer (howmoney-summary-buffer))
-  (switch-to-buffer (howm-view-summary-buffer)))
+  (switch-to-buffer howmoney-howm-summary-buffer))

(defun howmoney-summary-open ()
   (interactive)
-  (switch-to-buffer (howm-view-summary-buffer)))
+  (switch-to-buffer howmoney-howm-summary-buffer))

(defun howmoney-toggle-show-detail ()
   (interactive)
@@ -290,7 +290,7 @@
          (setq item-list
                        (howmoney-correct-original-items howmoney-items)))
        (when item-list
-         (with-current-buffer (howm-view-summary-buffer)
+         (with-current-buffer howmoney-howm-summary-buffer
                (howm-view-set-item-list item-list)
                (howm-view-summary-show item-list)))))

@@ -318,6 +318,7 @@
         (lambda (item)
           (funcall match-prod (funcall 'howm-view-item-summary item))))
        (howm-view-sort-by-date)
+       (setq howmoney-howm-summary-buffer (current-buffer))
        (howm-view-item-list)))

(defun howmoney-general (tag-regexp period-prod match-prod)
@@ -457,7 +458,7 @@
(defun howmoney-setup-window-configuration ()
   (delete-other-windows)
   (let ((s (howmoney-summary-buffer))
-        (c (howm-view-summary-buffer)))
+        (c howmoney-howm-summary-buffer))
     (switch-to-buffer c)
        (howm-view-summary-mode)
     (if howm-view-split-horizontally
@@ -469,6 +470,9 @@
(defun howmoney-summary-buffer (&optional new)
   (howm-view-get-buffer howmoney-summary-name nil new))

+(defvar howmoney-howm-summary-buffer nil
+  "For internal use.")
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; classfying
>>>
----
*2009-02-09 (Mon) 15:44:27 dareka : 2ch3:645-646nの対策案をマージして howmoney-25.el としてアップしました。
{{comment}}
----