プログラミング

netbeans

いま、netbeansでプログラムを書いているんだけど、2kぐらい書いた感想だけど、ソースコード編集機能は断然eclipseの方が上だ。PCの性能の問題もあるのかもしれないが、まず第一に、コード補完で選択していないようなものが勝手に補完されて、コード保管にな…

GUIアプリケーションの開発スタイルに関して思いついたこと

GUIアプリのデザインパターンとして、MVCパターンが存在する*1。GUI自動生成について色々考えたときに、思いついたことを適当にメモしてみた。 Modelから設計するか、Viewから設計するか MVCパターンの観点からGUIアプリの設計を見てみると、大きくViewから…

目覚まし時計 開発記(1)

とりあえず、昨日、今日、がんばって作った設計書(作成中:2006年11月26日版)をアップ。 まだ作成中だし、詳細はPDFを勝手に読めってことで、内容としては、こんな感じ。 機能設計書 データ定義書 メッセージ定義書 他のはまだ空っぽのテーブル。 以上、業…

目覚まし時計 開発記(0)

最近暇ができたので、リハビリを兼ねて目覚まし時計を開発することにします。 基本的に、開発の流れ、作成したドキュメントなどは全て公開する予定です。 公開する場所は、以下のとおり。 http://myanya.ifdef.jp/jalarm.html 公開する資料としては、こんな…

みるくに関して再考する日々

いま、とある案件で多忙な日々を過ごしている。私はもともと案件の当事者ではなかったが、実援*1という形で、7月下旬から8月初旬にかけて、次第に当事者になり始めていた。それも、10月中旬で終わる。私が担当している箇所の最後の山場である試験*2が1…

単体試験(2)

続き。 前回、メソッドにおける単体試験について書いたけど、クラスにおける単体試験について書くのを忘れたので、クラスにおける単体試験を書く。 クラスにおける単体試験は、メソッドにおける単体試験に近いが、確認項目が若干異なる。メソッドにおける単…

単体試験(1)

少しずつ書いていく。 最近、特に単体試験のための自分なりのデザインパターンに対する考えをまとめている。私にとって、メソッド単位の試験と、クラス単位の試験が単体試験になる。メソッド単位の試験とは、ある入力に対するメソッドの出力が、想定していた…

メモ

以下、なんとなく最近感じているメモ。そのうち真面目にまとめます。 試験を効率的に自動化するためなら、美しい設計なぞ端からあきらめる。 UTは100%の自動化を目指す。そのための設計を行う。 UTはメソッド単位で試験を行い、自動化する。 メソッドの種類…

メッセージ指向ミドルウェア(1)

わけありで、なぜかActiveMQと戯れる日々。 ActiveMQのようなメッセージ指向ミドルウェアというやつは、実は最近(と言っても1年前ほどだが)まで知らなかった概念だ。しかし、触ってみると結構面白く、直に手に馴染むツールとなった。 大学の頃、PCAと呼ば…

ListViewer with SwingLib

前に、Swingアプリの開発を楽にするライブラリ、MetaInfo関連の話を書いたんだけど、その続き。 現在の方針は、MetaInfo関連のアプリを複数個作って、その共通部分を抜き出して、ちょっとづつSwing用フレームワークに育てていこうと思ってる。その中の一つが…

MetaInfoクラスの単体試験

小さいプログラムを書くとき、データを保持するオブジェクトの永続化やビジュアライゼーションが面倒くさい。Serializableは使いたくないし、使ったとしても、ビジュアライゼーションはコードを書かないといけなくなるし。。。 と、毎回同じようなコードを書…

みるく

春闘→残拒否→プログラミングを堪能しています。 かえれ〜と管理職が言いまわる春闘残拒否ってのもどうかと思いながら、早く帰れることがちとうれしい。問題は、日本酒が減る減る。久保田なんか買わなきゃ良かった。好きなだけに飲みすぎちゃう。 で、みるく…

みるく

GUIから一旦離れて(飽きたとも言う)、コア部分を考える。 タスク間通信には、今まではFIFOのキューを用いたけど、今回はキューにこだわらない事にする。 たとえば、writeしたあとにreadするとする。今までだと、キューに蓄えられていた先頭データが…

みるく

本日の進捗。 画面描画を少しだけ追加した。 グリッドの描画 背景色の変更(灰色→白) 灰色ぽちの追加(入出力ポート) マウスクリックによる、選択・解除 グリッド導入のため、正確な選択・解除が実現できないことに、いまさら気づくorz コントロール+マウ…

みるく 進捗

画面描画系を開発。 みるくのGUIエディタは、グリッド単位でしかオブジェクトの移動や描画を行えないように制限する。メリットは、開発効率。デメリットは、細やかな処理が出来ない。 で、とりあえず、描画に成功したので、スクリーンショットを載せてお…

みるく

手抜きgraphパッケージを作成。めちゃくちゃ手を抜いたので、あとでかなり手を入れないといけないけど、基本的なことはできるはず。graphパッケージは、一番修正が多いので、ここは後半に作りこんだほうが有利なはず。 現在、GUIのためのradパッケージ開発中…

みるく

開発が停止していた『みるく』について、ちょっと考える。とりあえず、シンプルなモデルで次の3つの検討を行うことにした。 処理モデル 記述方式 実装範囲 処理モデルの検討は、具体的に内部でどのように処理が行われるかを検討する。これは、スケジューラ…

トランザクション管理の実現方法

トランザクション管理をもっともシンプルに実現するためには、コマンドパターンを適用することです。すなわち、コミット時の動作とロールバック時の動作をそれぞれコマンドとして登録しておき、コミットもしくはロールバックが実行されたら、登録された該当…

お手軽GUI構築ツールキットに向けて

swingでGUIを書いていると、似たようなコードを大量生成しなければならないのが苦痛になってくる。そこで、お手軽にGUIを構築するためのツールキットを準備中。 機能的には、次な感じ。 GUI構築の自動化 永続化の自動化 言ってしまうと、処理するデータをデ…

家計簿(16)

追記 家計簿用オブジェクトは、データオブジェクトになる可能性が高く、種類や変更が頻繁に行われる可能性が高いということで、専用のコードジェネレータを作りました。 このコードジェネレータを通すと、Containerクラスが扱いやすいクラス構成になるため、…

家計簿(15)

何気に開発は続いています。先週ぐらいからorz 前回は、関数型言語よろしくな高階関数なユーティリティクラスを作ったのですが、それがMVCモデルにしっくりこないということで、Containerクラスに高階関数用メソッドを追加し、非破壊にContainerの内容を…

ミルク

グラフシミュレータの名前を改めて,「ミルク」というよく分からない名前で,プログラム名称で開発を行ってしまった...まあ,名前に深い意味はない.ただ,なんとなくだ. 最新版のグラフシミュレータは,軽量データフロー処理コンテナ(なんだそりゃ)に…

人工無能

ちと昔話を(だいぶおっさんの領域に近づいてきたな,もう). 私が出会った最初の人工無能は,HyperCardで実装された人工無能スタックHARUKAです*1.一番初期のバージョンから,最終バージョン(だと思われるもの)まで追っかけてました.仕組みを知りたい…

恋するプログラム

ISBN4-8399-1729-9 先々週あたりに買った本.著者が亡くなられているということで,まずはご冥福をお祈りいたします. この本は,Rubyを使って人工無能ソフトを開発するということをコンセプトに書かれています.残念ながら,人工無能ソフトの開発を通してRu…

家計簿(14)

グラフを作りやすいようにするための,ユーティリティ関数群の作成.まあ,Mathみたいなものさね. クラスに仕様かどうか迷ったけど,とりあえず,スタティックな関数にしてみた.そのうち,クラスにするかも. 追伸 関数型言語で実装すればよかったと思う今…

家計簿(13)

コンテナクラスにソート機能を追加し,単体テストを実施. これから,本体のほうに本格的に組み込みながら,機能を追加していきたいかと思います.

家計簿(12)

早速,昨日作りこんだ機能を最低限の変更で組み込んでみる. 外見はまったく変わらないけど,一応動作していることを確認. これから,少しずつ変えていくよ〜 補足 一応,あとこのぐらいの機能を予定しています.これらの機能の実装が完了し次第,公開して…

家計簿(11)

機能追加はなし. 今後の機能拡張に備えて,いくつかのクラスの作りこみを開始. 今日は,家計の内容やら何やらを保存しておくコンテナクラスおよび永続性クラス(?)の作成.単体テストの開発が終わらない...orz どんなコンテナクラスかというと,リス…

Generics

昨日の夜は,ずっとGenericsと格闘してました. クラスAとクラスBが互いに依存関係があるときに,どうしてもGenericsでうまく表現できなくって,なんかいい方法がないかなあと考えてたわけです.やりたいことは,こんな感じです. class A{ B get(){ ... }…

家計簿(10)

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