小槌へ移行

経緯

今まで使っていた家計簿ソフト「みんなの家計簿」が OS を Snow Leopard にしてからすごく重くなり、とても使用できる状態ではなくなってしまった。使っていたバージョンは PPC 版だったので Intel Mac の上では Rosetta を使うのだが、それが重くなる原因かな(憶測)?Intel版はないかなと思い、配布元のサイトを訪れてみたら、なんと、開発中止に。一年以上続けた家計簿をここで止めるのも惜しいので、他のソフトがないか探してみた。

選択

条件としては、

  • 無料であること
  • いままでのデータを取り込むことができること
  • ローカルで動作すること
  • わかりやすいこと

これぐらい。重要なのは上二つ。
これらの条件を踏まえて我が家の次世代家計簿に選んだのが 「小槌」。2006 年の Drecom Award on Rails の大賞を受賞した家計簿ソフト。ちょっと家計簿の入力がわかりづらかったけど、Rails を使っているということで採用。

セットアップ

主なソフトのバージョン。

RailsApache の連携のしかたは Redmine.JP | Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用 を参考にした。
小槌 のソースは github から入手。コミットの番号は 4968ca56ac5d316e96e5cbec42ff95f06b7359b1 。README.rdoc に書かれていること以外にも幾つか手を入れた。

  • app/controllers/application.rb

  defined? メソッドの引数を括弧で囲む。

   def set_ssl
-    if defined? KOZUCHI_SSL && KOZUCHI_SSL
+    if defined?(KOZUCHI_SSL) && KOZUCHI_SSL
       request.env["HTTPS"] = "on"
     end
   end
  • app/views/〜.erb

  Apache のログに「warning: don't put space before argument parentheses」と出力される箇所がいくつかあるので修正。

  Internal Server Error が発生するので .htaccess を削除。

  • db/migrate/20090214200718_add_date_and_daily_seq_to_account_entries.rb

  rake db:migrate 時に account_entries テーブルで Not Null 制約が付いカラムの初期値に NULL は使えない、というエラーが出るので初期値を設定。

-    add_column :account_entries, :date, :date, :null => false
-    add_column :account_entries, :daily_seq, :integer, :null => false
+    add_column :account_entries, :date, :date, :default => '0000-00-00', :null => false
+    add_column :account_entries, :daily_seq, :integer, :default => 0, :null => false

データ移行

「みんなの家計簿」のデータはCSV変換機能を使ってエクスポートする。そのデータを「小槌」へ登録する。登録するまでの手順としては大きく分けて二つ。一つはエクスポートしたCSVファイルをインポートしやすい形式、2つのTSVファイルに変換する。もう一つは変換したファイルを読み込みDBに登録する。テーブルの解析にちょっと時間が掛かったけど、移行スクリプトは思っていたよりも簡単に書けた。

総括

気安くOSをアップグレードすると、思いもよらないところで苦労するはめになるので、気をつけるべし。