倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

OPS

とりあえず実装は一段落

OPS

とりあえず、OPS フレームワーク*1の実装は一段落。 成果物をこちらに。使い方を簡単にご説明。 事前に Maven2.0 をインストールしておいてください。成果物のインストール こちらから zip ファイルをダウンロードして、適当なフォルダ上に解凍する 解凍後に…

事前処理・事後処理の織り込み 其ノ弐

OPS

前回はジョインポイント SIMULATE に事前処理・事後処理を織り込みました。 今回は、同様にしてジョインポイント ITERATE, EVOLVE に事前処理・事後処理を織り込みましょう。ポイントカットの定義 以前にデータ出力処理を織り込んだ際、ITERATE, EVOLVE に対…

事前処理・事後処理の織り込み 其ノ壱

OPS

反復条件 (IterationCondition) のとき(→)に「@Prepare」「@Dispose」アノテーションが出てきました。 これらは事前処理・事後処理を指定するアノテーションでした。 今回以降数回にわたって、それらのアノテーションが付加されているメソッドの呼び出しを…

SimulationComponent#setDataManager() メソッド

OPS

前回に定義した SimulaitionComponent#getChildComponents() メソッドを用いて、IterativeSimulator に DataManager オブジェクトをセットするだけで、それが所持する SimulationComponent オブジェクトにも DataManager オブジェクトがセットされるような実…

SimulationComponent の論理構造

OPS

前回、観測量を扱うクラスが実装すべきインターフェース DataAccessor を実装するインターフェースを見ました。 それらは観測量を管理する DataManager をセットするメソッド DataAccessor#setDataManager() を実装しなければなりませんでした。しかし、通常…

データの管理関連のインターフェース -- DataManager, DataAccessor など

OPS

観測量の値は DataManager オブジェクトによって管理します。 基本的に、1つの IterativeSimulator オブジェクトが1つの DataManager オブジェクトを持っているようなイメージです。 DataManager オブジェクトは ObservableSet オブジェクトも管理していて、…

データ出力処理の織り込み

OPS

前回作成した DataOutputterContainer クラスを用いて「データ出力処理の織り込み」を行いましょう。処理の織り込み場所は 「始状態」「終状態」→ Iteration#iterate() メソッドの実行前後 「更新後の状態」→ Iteration#evolve() メソッドの呼び出し後 とな…

Iteration の DataOutputter に関連する属性

OPS

書き忘れてましたが、前回までは「状態を観測せず、出力もしないシミュレーション」を考えていました。 今回からは「データを観測して出力する」処理を“織り込み”ましょう。今回は、まず Iteration に DataOutputter に関する属性を考えます。 Iteration に…

実装 -- IterationCondition

OPS

反復条件を表すインターフェース IterationCondition には、ただ1つのメソッド evaluate() のみが定義されています。 これは boolean 値を返し、「true」の場合は反復を続け、「false」の場合は反復を終了するというメソッドです。処理の流れは while 文をイ…

実装 -- Iteration

OPS

今回は反復を実行する Iteration インターフェースです。Iteration インターフェースにはネスト構造に出来るサブクラス CompositeIteration があります。 通常の、物理系の状態を発展させる Iteration の実装クラスを LeafIteration、CompositeIteration の…

実装 -- IterativeSimulator

OPS

前回までで OPS フレームワークの API 仕様の概要ができたので、今回から実際の実装を考えてみましょう。 基本的にフレームワークは「処理の流れ」を知っていれば実装を余り気にする必要はありませんが。今回は IterativeSimulator の実装、DefaultIterative…

シミュレーション設計図とそのスキーマ

OPS

OPS フレームワークは物理系と観測量を実装したクラスを要求しますが、それに加えて、それらを構築するための「シミュレーション設計図」も必要とします。前回、OPS フレームワークに定義されているインターフェース群の論理的な包含関係を見ましたが、これ…

ops-api-1.0

OPS

OPS フレームワークの API (インターフェース群)をパッケージングした Jar ファイルを作ってみました。 ダウンロードはこちらから。 まだ、実装は作成中なので動きませんが・・・例外 SimulatorConfigurationException, SimulationException と PropertyAc…

反復シミュレーションに対する JoinPoint

OPS

OPS フレームワークでは、物理シミュレーションの中でも「反復シミュレーション」に限定しているので、事前処理・事後処理を行うタイミング*1もある程度限定することが出来ます。 そこでメソッドに「@Prepare(...)」「@Dispose(...)」というアノテーションを…

SimulationComponent インターフェース

OPS

前回、Simulator を構成するインターフェース群をリファクタリングしましたが、そこでは概ね「事前処理」「事後処理」に関連するメソッドを殆ど削除しました。 代わりに「SimulationComponent」インターフェースを定義し、その内部に定義したアノテーション…

復習 & リファクタリング

OPS

API を簡潔にするためのリファクタリングと、(ちょっとブランクが空いたので)インターフェースの復習しましょう。Simulator インターフェース とりあえずシミュレーションを実行するインターフェース。 public interface Simulator{ void simulate(); } 反…

反復

OPS

前回までは、シミュレーションに必要な部品をあれこれ見てきました。 今回はそれらのなかで、反復条件 (IterationCondition) とデータ出力 (DataOutputter) を使ってシミュレーションの実行を制御する Iteration クラスと、そのシミュレーション設計図内での…

ちょっとリファクタリング

OPS

当初必要かと思って作成したがあまり必要なかった、ってインターフェースをチョイとリファクタリング。DataTable, DataRegistry → DataManager 観測量の値を管理するインターフェースとして、DataTable, DataRegistry を作成しました。 これは、通常は値を設…

出力方法をシミュレーション設計図で指定する 其ノ弐

OPS

前回はシミュレーション設計図で出力方法を指定する方法を見ました。 今回は典型的な出力方法を考えてみましょう。まず、シミュレーション設計図のすべての <output> 要素で、プロパティの output-timing は必ず指定しなければなりません。 プロパティ名 設定内容 取</output>…

出力方法をシミュレーション設計図で指定する 其ノ壱

OPS

前々回の復習 前々回、自作の DataOutputter クラスをシミュレーション設計図から指定する方法を見ました。簡単に復習しておくと、DataOutputter インターフェースの自作の実装クラス ConsoleOutputter があったとき、シミュレーション設計図では以下のよう…

物理量 in シミュレーション設計図

OPS

今回は物理量をシミュレーション設計図で設定する方法を見ていきましょう。 これは <simulation-schema> 要素の子要素である <observable-set> 要素で設定します。先に言っておくと、物理系の設定に使用した <system> 要素と基本的に同じです。ObservableSet インターフェースをちょっと変更 インターフ</system></observable-set></simulation-schema>…

物理量 & 出力方法 in シミュレーション設計図

OPS

前回までは、「何も観測せず、何も出力しないシミュレーション」を考えていました。 次に考慮することは物理量とその値の出力方法です。シミュレーション設計図 まず、シミュレーション設計図のサンプルを示しておきましょう。 前回のサンプルに加えて、物理…

物理系 &amp; 初期化パラメータ in シミュレーション設計図

OPS

前回までで、シミュレーション設計図内で反復条件を設定する仕方を見てきました。 今回は反復条件に替わり、物理系と初期化パラメータの設定の仕方を見ていきます。 前回までと同様、何も観測せず、何も出力しないシミュレーションを考えましょう。サンプル …

反復条件あれこれ 其ノ弐

OPS

前回に引き続き、今回も具体的な反復条件を考えていきます。 特に今回は、複合的な反復条件(以下、複合反復条件)を考えます。複合反復条件とは? 複合反復条件(composite iteration condition)とは、他の反復条件の結果を加工して反復条件の評価に使う様な…

反復条件あれこれ 其ノ壱

OPS

前回は反復条件の型を指定して、いろいろな反復条件を手軽に使えるようにしようとしたんでした。 今回は反復条件の型を具体的に考えてみます。▲1つ注意(訂正)として、前回反復条件に指定できる値のことをパラメータといいましたが、以降ではプロパティと呼…

反復条件をシミュレーション設計図で指定する

OPS

今回は反復条件をシミュレーション設計図から指定することを考えましょう。 前回と同じく、何も観測せず、何も出力しないシミュレーションを考えます。ちなみに、前回は IterationCondition インターフェースを実装したクラスを作成して、シミュレーション設…

シミュレーション設計図

OPS

今までは、物理シミュレーションに必要な部品、もう少し堅く言うと、物理シミュレーションを実現する Simulator オブジェクトを構築するための部品を個別に考えてきました。今回はそれらの部品を構築するための設定ファイルを考えます。 以降では、このファ…

物理量値の出力をするタイミング

OPS

前回考えた DataOutputter インターフェースに、OutputTiming という型が出てきましたが、今回はこれを考えましょう。 そもそもこれは、観測量値(観測量の測定値)を出力するタイミングを指定するために定義したものでした。一連の記事では反復シミュレーシ…

データの出力

OPS

今回はデータを出力するためのインターフェースを考えます。 インターフェース名は DataOutputter とします。DataOutputter が行うべきことは以前簡単に書きました(id:waman:20070615): 物理量値を取得する。 取得した物理量値を出力する。 これらに加えて…

物理量の観測値を使用するクラス

OPS

前回、物理量の観測値(以下、物理量値)を管理するインターフェースを定義しました。 今回はそれを使用するクラスを考えます。前回ちらっと書きましたが、物理量値を使うのは次の2つの場合です: 物理量値を出力するとき 反復条件*1の評価に物理量値を用い…

物理量の観測値を管理するオブジェクト

OPS

前回までに考えたのは、まず「何も観測せず、何も出力しないシミュレーション」、次に物理量を観測(計算)するためのインターフェースでした。次に考えるのは、物理量の観測値(以下、物理量値)を出力するためのインターフェースです。 このインターフェー…

物理量の観測

OPS

今回は物理量を観測するクラスを考えましょう。必要なのは、物理量の名前(java.lang.String)、物理量の型(java.lang.Class)、物理量を計算するメソッドです。 あと、観測対象となる物理系をフィールドとして保持するために、物理系に対するアクセッサ・メソ…

何も観測せず、何も出力しないシミュレーション

OPS

前回の最後、ドメイン分析っぽいことをしてクラス(候補)を抜き出すと書きましたが、あまり込み入ったシステムでもないので、抽象度や開発プロセスなどをあまり気にせず、ある程度実装も意識しながら仕様を考えていくことにします。また、前回「系の状態を…

反復シミュレーション

OPS

「物理シミュレーション・フレームワーク」とは言いつつ、あまり大風呂敷を広げても途中で挫折してしまいそうなので、シミュレーションのタイプをある程度限定することにします。対象とするタイプのシミュレーションは、ある物理系に対して「状態の更新」と…

Simulator インターフェース

OPS

「物理シミュレーション・フレームワーク」(以下、OPSフレームワーク*1)ってのをブラックボックス的に考えて、要求されるもの、成果物として得られる物を考えてみましょう。 要求されるものは、物理系をモデリングした結果得られるものになりますが、これ…

シミュレーションをする人が行うこと

OPS

物理シミュレーション(シミュレーション)のためのフレームワークを開発するにあたって、まず、シミュレーションをする人が何をするのかを考えましょう。分野を限定せずに書けるのは以下の程度のことでしょう: 物理系をモデリングする。 モデルをシミュレ…

物理シミュレーションを行うフレームワーク

OPS

「物理理論をオブジェクト・モデルに落とし込む」ってことについてあれこれ考えてるんですが、とりあえずその前に物理シミュレーションを行うフレームワークを作るのが良いんじゃないかと思うので、当面、そちらの方を考えていきます。まず、「フレームワー…

物理シミュレーションとオブジェクト指向

OPS

物理シミュレーションのプログラムが載っている本とかを見てると、ベタ書きのプログラムばっかなんですよね〜。 Javaのようなオブジェクト指向の言語を使ってても。学生時代に課題でいくつかやったシミュレーションでも、大抵、一からコードを書き直してまし…

物理法則とオブジェクト指向

OPS

オブジェクト指向プログラミング(Object-oriented Programming、以下OOP)の本、記事などを読んでいると、「この世のすべての物はオブジェクトだ」的な文章をちょくちょく見かけます。 物理好きなワタクシは、その度に、”この世のすべての物”を支配する物理理…