ぼうメモ帳

2005-07-26 今日は寮でバカ話

家計簿(14)

| 家計簿(14)を含むブックマーク

グラフを作りやすいようにするための,ユーティリティ関数群の作成.まあ,Mathみたいなものさね.

クラス仕様かどうか迷ったけど,とりあえず,スタティックな関数にしてみた.そのうち,クラスにするかも.

追伸

関数型言語で実装すればよかったと思う今日この頃orz

トラックバック - http://d.hatena.ne.jp/susumu/20050726

2005-07-23

JFreeChart(2)

| JFreeChart(2)を含むブックマーク

前回,簡単な円グラフの表示をテストしたので,今回は,そこに登場するクラスを,APIドキュメントを読みながら,勉強する.

ChartFrame

JFreeChartをコンストラクタで受け取れるようにするためだけのJFrameのサブクラス

コンストラクタ初期化以外には機能はなし.

JFreeChart

グラフの画面を構成する基礎となるクラス

できることは,主に以下のとおり.

PiePlot

実際に円グラフを描画するクラス.

できることは,主に以下のとおり.

以上.今日は終わり.

てか,せっかく書いたのを保存し忘れてブラウザを閉じるという失態をやらかしたので,書く気がなくなった...orz

トラックバック - http://d.hatena.ne.jp/susumu/20050723

2005-07-21

PieChartTest

家計簿(13)

| 家計簿(13)を含むブックマーク

コンテナクラスソート機能を追加し,単体テストを実施.

これから,本体のほうに本格的に組み込みながら,機能を追加していきたいかと思います.

JFreeChartの練習・円グラフ(1)

| JFreeChartの練習・円グラフ(1)を含むブックマーク

サンプルプログラム

import javax.swing.JFrame;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.DefaultKeyedValues;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

public class PieChartTest {
	public static void main( String[] args ){
		
		// 円グラフに表示させるデータの作成
		DefaultKeyedValues values = new DefaultKeyedValues();
		values.addValue( "種類1", 100 );
		values.addValue( "種類2", 50 );
		values.addValue( "種類3", 25 );
		values.addValue( "種類4", 12.5 );
		values.addValue( "種類5", 7.25 );
		
		// 円グラフ 用データモデルの作成
		PieDataset pied = new DefaultPieDataset( values );
		
		// 円グラフプロットの作成
		PiePlot piep = new PiePlot( pied );
		
		// 描画のためのインスタンスの作成
		JFreeChart chart = new JFreeChart( piep );
		
		// 表示用ウィンドウの作成と表示
		JFrame frame = new ChartFrame( "円グラフテスト", chart );
		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		frame.pack();
		frame.setVisible( true );
	}
}

ここから分かること

  • グラフを表示したければ,JFreeChartを生成する.そのときの引数にPlotを渡すこと.
  • Plotが具体的なグラフの種類をあらわす?(PiePlotで円グラフ
  • 表示するデータは,Datasetを利用する.(PieDatasetで円グラフ用データ)
トラックバック - http://d.hatena.ne.jp/susumu/20050721

2005-07-19

家計簿(12)

| 家計簿(12)を含むブックマーク

早速,昨日作りこんだ機能を最低限の変更で組み込んでみる.

外見はまったく変わらないけど,一応動作していることを確認.

これから,少しずつ変えていくよ〜

補足

一応,あとこのぐらいの機能を予定しています.これらの機能の実装が完了し次第,公開していきたいと思います.

eclipseeclipse 2005/07/19 23:06 私の場合家計簿はExcelでずらずら情報だけ溜め込んでる感じです。
分析したくなった時のためにデータだけ残してるという…
ソフトは公開されるのでしょうか。

susumususumu 2005/07/19 23:17 一応,公開する予定で作りこんでいます.
どの段階で公開するかはまだ分かりませんが,現在予定している機能を全部追加し,試験運用した後でのことになると思います.
けど,公開するといって公開していない前科が...orz

eclipseeclipse 2005/07/20 23:33 おおっ、すばらしい。ぜひ公開してくださいw

トラックバック - http://d.hatena.ne.jp/susumu/20050719

2005-07-18

やべ〜,花火してたら火の玉見ちゃったよw

家計簿(11)

| 家計簿(11)を含むブックマーク

機能追加はなし.

今後の機能拡張に備えて,いくつかのクラスの作りこみを開始.

今日は,家計の内容やら何やらを保存しておくコンテナクラスおよび永続性クラス(?)の作成.単体テストの開発が終わらない...orz

どんなコンテナクラスかというと,リストみたいなものに,プロキシ機能を付け加えた感じ.で,大元のコンテナが変更されると,即座にプロキシ以下すべてのサブコンテナにその変更が通知され反映される.また,サブコンテナが変更されると,大元のコンテナまでその変更が反映されるというもの.

行数的にはわずかに250行(コメントなし)ぐらい.

で,一日中単体テストをしてたわけだけど,疲れた.単体テストテスト項目数でいうと,いまんとこ50ぐらい.あともう50はテストしないと,ちょっと使うには不安かなぁ.もっとも,50ぐらいテストした割には,発見されたバグは3つだけで,コードの出来が良いのかテストの出来が悪いのかがちと判断できん.

あと,単体テストをして思ったのは,仕様として固まってない部分が以外に多すぎた.特に境界条件あたりや例外条件あたりの仕様を,単体テスト実施中に慌ててドキュメント化する始末.なんか,勘が鈍ってるなあ.

トラックバック - http://d.hatena.ne.jp/susumu/20050718

2005-07-17

Generics

| Genericsを含むブックマーク

昨日の夜は,ずっとGenericsと格闘してました.

クラスAとクラスBが互いに依存関係があるときに,どうしてもGenericsでうまく表現できなくって,なんかいい方法がないかなあと考えてたわけです.やりたいことは,こんな感じです.

class A{
    B get(){ ... }
}
class B{
    A get(){ ... }
}
class A1 extends A{
    B1 get(){ ... }
}
class B1 extends B{
    A1 get(){ ... }
}
class A2 extends A{
    B2 get(){ ... }
}
class B2 extends B{
    A1 get(){ ... }
}

いままでだと,get()が,戻り値の型しか違わないからコンパイルエラーになってしまう.で,うまくgenericsで表現してコンパイルエラーを防ぎたいと.で,こんなことを思いつく.

class A<BT extends B>{
    BT get(){ ... }
}
class B<AT extends A>{
    AT get(){ ... }
}
class A1 extends A<B1>{}
class B1 extends B<A1>{}
class A2 extends A<B2>{}
class B2 extends B<A2>{}

これだと何がダメかというと,たしかにA1,A2,B1,B2についてはうまく表現することができてるんだけど,AとBについてはうまく表現できてない.たとえば,真面目にgenericsでAとBの関係を表現しようとすると,

A<B<A<B<A<.....>>>> a = new A<B<A<B<A<....>>>>();

になってしまう.途中で止めてもいいんだけど,

A<B<A>> a = new A<B<A>>();
B b = a.get();
A a1 = b.get();

これだと,ここまでで型チェックが終わってしまう.これ以降は,型安全性のワーニングが出てしまう.

AとBをabstractにするか,interfaceにするかでこの問題は解決するんだけど,genericsのためだけにクラス設計を変えるのはスマートじゃない気がするしなあ.

なんか良い解決方法はないかな.

追記

Genericsのチュートリアルを読んでたら,なんか,最初の例でもコンパイルできるみたい.昨日一晩の苦労はなんだったんだorz

トラックバック - http://d.hatena.ne.jp/susumu/20050717

2005-07-16

家計簿(10)

| 家計簿(10)を含むブックマーク

コピーペーストを真面目に実装しようとしたら(ほかのアプリケーション間と,データの交換を『そこそこ』できるようにするため),現在の実装じゃあとてもじゃないけど難しいということで,リファクタリングを決行.リファクタリングというよりも,ほとんど大幅な見直しだけど.

てか,Javaでのコピペ世界が,あんなに凝ったものだなんて知らなかった...orz 初めて聞いたよ,DataFlavorとかTransferableとか.それに,swingデフォルトコピペって,HTMLサポートなんだね.ためしにテーブルの内容をWordペーストしたら,ちゃんとテーブルが表示されたのがびっくりした.

みんなのプロフィールみんなのプロフィール 2005/07/16 23:53 ブログ開設おめでとうございます!

アクセス数を上げるために当コミュニティサイトに登録しませんか?
http://profile.zmapple.com/cgi-bin/profile.cgi
より多くのひとに貴方のブログを見てもらえます。

参加するにはこちらからが便利です
http://profile.zmapple.com/cgi-bin/profile.cgi?mode=edit&title=%82%DA%82%A4%83%81%83%82%92%A0&address=http%3A%2F%2Fd%2Ehatena%2Ene%2Ejp%2Fsusumu%2F


お問い合わせはコチラから
http://profile.zmapple.com/cgi-bin/fmail/cmfmail.cgi

トラックバック - http://d.hatena.ne.jp/susumu/20050716

2005-07-12

susumu2005-07-12

家計簿(9)

| 家計簿(9)を含むブックマーク

  • いくつかのタブを追加
  • 見た目の変更

てか,レイアウトマネージャ使えねえ.ボタンを上から縦に,しかも横幅をそろえて,かつ縦には伸びないっていうのが,なんで簡単にできねえんだよorz

トラックバック - http://d.hatena.ne.jp/susumu/20050712

2005-07-11

susumu2005-07-11

家計簿(8)

| 家計簿(8)を含むブックマーク

今日もちょっとだけ開発.

今日開発したのは,こんな感じ.

  • deleteキーによる,費目の削除
  • 費目ソートバグフィックス
  • 振り替えなど収支の発生しない項目のためのチェックボックスを用意
  • 分類の編集機能(画面だけ)

チョコチョコと作ってきたけど,少しずつ形になるのはやっぱり楽しいと実感する今日この頃でした.

トラックバック - http://d.hatena.ne.jp/susumu/20050711

2005-07-09

susumu2005-07-09

家計簿(7)

| 家計簿(7)を含むブックマーク

少しだけ開発.

  • 項目テーブルと,銀行テーブルの位置を変更.
  • JFreeChartの実験として,項目別支出グラフを表示する機能を追加.

ゲームばっかりやってて,ぜんぜん先に進まないorz

トラックバック - http://d.hatena.ne.jp/susumu/20050709

2005-07-04

家計簿画面

家計簿(6)

| 家計簿(6)を含むブックマーク

とりあえず,今のところの実装はこんな感じ.

・費目の入力

・費目リストの表示(日にち,一部期間指定可能)

・費目リストソートコメント以外の各項目ごとにソートが可能)

・口座残高の計算

csvファイルへの保存

す,少ねえ.orz

トラックバック - http://d.hatena.ne.jp/susumu/20050704

2005-07-03

家計簿(5)

| 家計簿(5)を含むブックマーク

だめだったorz

とりあえず,最低限のモノは動き出したけど,まだまだテストなどが甘い.

テストと,必要な機能を盛り込んだら,公開したいなあと考え中.

もっとも,少し頭の悪い実装をしているので,データ量が多くなったら...

一応,この家計簿の売りを決めた.その機能を重点的に攻める予定.

自分が家計簿には,自分の行動履歴をしっかりと検証できることを求めている.だから,グラフ機能や過去経歴参照機能は必要.例えば,いままでトマトをどこでいくらで買ったか.最安値はいくらか.最高値はいくらか.どこが一番安く買えるか.どこが一番高く売ってるか.いつ一番安いか.いつ一番高いか.そういう機能が欲しい.もっとも,トマトに限って言えば,自炊できないから意味がないかもしれないけど.

あと,入力が楽チンなのが良い.せっかくバーコードリーダを持っているんだから,使わないわけにはいかない.バーコードで読み取れば,項目が自動入力されるぐらいが良い.まあ,どこまで出来るかはわからないけど.

そんなわけで,今しばらく公開までには時間がかかりそう.

トラックバック - http://d.hatena.ne.jp/susumu/20050703
268127