月別アーカイブ: 2011年3月

Plan Language を実践中

計画言語を計画中でちょっと止まっておりますが(裏側で xUnit で頭を使っていたからというのもあり)、別件のサイトを作成中です。 いつものパターンならば、Excel で ToDo リストを出していくところなのですが、どうせならばと計画言語を使ってタスクを抽出してみました。 言語っぽいところは、 ・「<<」で、前の WBS をブレークダウン ・インデント(ひとつの空白)でツリーを表現) しているだけです。コンパイル可能にするためには Task[“…”] なりをつけないと駄目なんですが、これだとメモ帳などでコーディングが可能です…と言いますか、これ、iPad のメモで書きました。 通勤中にぽちぽちと計画が立てられるので便利です。 そこで思い出したのが、その昔 IBM の workpad で擬似プログラミングをしていたんですよね。やっ … 続きを読む

カテゴリー: プロジェクト管理, Plan Language | 1件のコメント

コードを短く書く努力をするよ(VC++編)

さて、C# や VB でコードを短くするには限界があります。 という具体例を出しましょう。 まずは、先ほどの VB のコードを再掲します。 これでも十分短いですよね。しかも Dictonary を使っているから効率が良さそうです。 ですが、Dictonary を使っているために、イベントがワンクッション遅くなっています。大抵のイベントはこれでいいのですが、高速化が問題になるときは、この【ワンクッション】が致命的になります。 じゃあ、ってんで VB や C# の場合は冗長パターンに書き直す(あるいは、スクリプトを使ってコードを自動生成する)ことになるんですが、C++ を使うとこの両方の条件を満たすことができます。 既にマジックなコードになっていますが、見かけ上は分かりやすいですよね。 保守という点では、SETEVENT と SETSTATUS でマクロが2つに分かれていますが、先の VB の … 続きを読む

カテゴリー: 開発, 設計, C++ | 6件のコメント

コードを短く書く努力をするよ(2)

コードを短く書く努力をすると、テストが省ける | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2135/ の続きです。上記では refactoring 前を書いていないので、メリットが良く分からない。ということで、冗長な書き方をさらしておきます。 ■ステータスバーを設定(冗長パターン) ボタンなどのコントロールの、MouseEnter と MouseLeave にちまちま書きます。 長い…長すぎますッ!!! Visual Studio を使うとヘッダのコメントは自動生成してくれるのですが、これで 3 つしかボタンに割り当てていません。 コード的には、MouseEnter と MouseLeave のワンセットで 20 行かかります。 なので、10 個のボタンがあれば、200 行掛かるわけですね。 ■ … 続きを読む

カテゴリー: 開発, 設計 | 1件のコメント

コードを短く書く努力をすると、テストが省ける

まぁ、がしがしとタイピングするのも楽しいけど、私は作業量を考えて短くするのが好きです。 行数にするとアウトプットの量が減るんですけどねw、気にせず。 こんな風な画面で、マウスをポイントしたとき(MouseEnter と MouseLeaveイベント)の時にステータスバーにメッセージを表示します。 あと、チェックボックスを切り替えた時に、各ボタンの有効/無効が変えられます。 ざっと、ソースコード。何故か VB で(笑) 眠たいので、詳しい解説は後ほどやる…かもしれず。 メモ的に書いておくと、モードの設定のフォーマットがミソです。 bool 値を「o」と「x」に割り当てているのは、こんな風に表形式で設定したいからです。かつて、VC++ の時に作ったノウハウです。その時には、define を使ったり外部ファイルを include したりしたのですが、vb ではできません。ture, … 続きを読む

カテゴリー: 設計, 雑談, xUnit | 3件のコメント

Gantt Chart を IDEF0 風に記述する

大雑把ですが、ガントチャートを IDEF0 風に分解すると、こんな図になります。 ・インプット方向のタスク(前工程のタスク)がある。 ・アウトプット方向のタスク(後工程のタスク)がある。 ・タスクは、一定の作業量を持つ。 ・タスクは、一定の作業を行うと終了する(開始と終了がある)。 ・作業は、配員(人)が行う。 ・配員は、一定の作業能力(属人性、能力差)を持つ。 ・配員は、リソースとしての制約がある(同時に2つの場所で働けないなど)。 ・タスクは、時間制約がある(無限に長い期間でやってはいけない)。 ・タスクは、期間制約がある(無限に期限を延ばしてはいけない)。 ・1日の時間は、24時間である(週単位の勤務時間は40時間である、など)。 ここで、前者の項目は「前提条件」であり、ある条件をクリアすると「完了」になります。RPG ゲームみたいなものです。 後者の制限は、制約条件で「ルール」にな … 続きを読む

カテゴリー: プロジェクト管理, Plan Language | コメントする

verifiable plan language の目指すところを考察してみる

検証可能な計画言語ってことで、おおまかな目標のメモです。Javaのカラー本を真似してして色分けしてみました。「色」自体に意味があるのですが、これは後ほど。 ざっと見て分かるとおり、PDCA(Plan/Do/Check/Action)を元に情報の流れをチェックしています。データの流れも PDCA に順じているので、このフローを使うことになるのかなと。 ■計画(Plan) いきなり、Gantt Chart を作り始めるのは無謀なので、WBS なり、ストーリーカードなりで項目の抽出を行います。 作業項目の抽出は、主に 3 つの方法があります。 ・PMBOK/WBS のようにトップダウンで ・XP/SCRUM のようにボトムアップで ・CCPM のようにエンドから いずれにしても、「タスク抽出」という工程になりますね。このあたりは、plan なところで、抽出したタスクには、属性があります。 ・作業 … 続きを読む

カテゴリー: プロジェクト管理, Plan Language | コメントする

F#でER図を書こうと思ったけど止めておくの巻

F# ではオペレータの再定義が自由なので、色々な演算子が作れる…ってことは、ER図の鳥足みたいのもできるのでは?と思ったのがこれ。 演算子としては異様、と言いますか単純に外部結合をするだけのために使う、のかな。 のような感じで、Products テーブルと Categories テーブルが「多対1」のように示すわけですが、思いついてはみたけれど何のために使うのかわかりません。O/R マッピングを XML ファイルで定義するよりも使い手があれば、それでもいいんですが。 そういえば、xml 形式の定義で思い出したのですが、設定ファイルというのは何も xml 形式やバイナリ形式にする必要もないのです。設定ファイルというと、昔は ini ファイル形式だったり、適当なバイナリ形式だったり、テキスト形式だったりして、最近は xml 形式が流行りな訳ですが、コード自身をファイルに保存しておく … 続きを読む

カテゴリー: 雑談 | コメントする

久し振りにアナリシスパターンを紐解いて計画パターンを見直す

Verifiable Plan Language(検証可能な計画言語の思索) http://plan-language.com/ ってことで、【ネタ的に】ドメインを取って、ひとまず wordpress を立てました。 言語ってことになっていますが、UML のように記号化のところに重きを置くのではなくて、【検証可能な】というのが主題です。なので、プログラム言語自体は、F# でも C# でも何でもいいのです(ってのが目標)。当面は、私の知っている言語が対象になるので、C#, F#, Java, PHP ですねぇ。スクリプト系の言語として、Python か Ruby なんですが。多分、Python になると思います。 さて、Verifable Plan Language 略して VPL は、計画段階からプロジェクト/プロダクトのプロセスの実行までを言語化します…って、こういうと自分で … 続きを読む

カテゴリー: UIDD, プロジェクト管理, Plan Language | コメントする

Planning Lanugage 事始め

CakePHP の発想から、EXDoc, DBUnit のひな型を作ってきたのですが、そうか、UIDD に則ればガントチャートのような UI は冗長なのですね。もっと MVC 的に Logic 部分(Controller部分) を分離させても良いわけです。 ガントチャート – Wikipedia http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%B3%E3%83%88%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88 ブレークダウンした WBS からスケジュールに落とす時は、ガントチャートを使うことが多いのですが、本来は PERT を考慮しないと駄目です…と言いますか、最近のガントチャートツールは、このあたりを押さえている(と思う)ので問題ははないんのですが、MS Project をはじめとして、この手の … 続きを読む

カテゴリー: 設計, UIDD, プロジェクト管理 | コメントする

DBUnit の .NET 版を作成する(準備)

実は java 版の DBUnit は xml からデータを読みに行くし、DBUnit.net は動作的に同じなので、自前の DBUnit を作ります。 名前がダブっているけど、これは後から。 UIDD に則って、最初はテストケースをざっくりと作ります。 こんな風に使えると、マニュアルなしでも使えるかもね、という雰囲気で。 微妙にコードが冗長なのは、.NET v2.0 を対象にしているからです。手元のプロジェクトが v2.0 なのでそれに合わせて作らないと意味がないので、というのが第一の理由。LINQ to SQL とタプルなんかを使えるともう少しマシなコードになると思うのですが、そこは v2.0 がターゲットということで。 TestSetUp のほうでは、既存の DataTable/DataRow を使ってみたパターンです。カラムを作るところがやや面倒なのですが、これだとデフォルト値を入 … 続きを読む

カテゴリー: C#, xUnit | コメントする