なぜ日本ではトランザクションスクリプトなのか?
正月に『数学史入門』を読みながら、ふと思ったことを書いてみる。
この本の中で、古代中国と古代ギリシャの数学について思想の観点からまとめています。中国数学の思想的特性としては具体的・実践的、西欧数学の思想的特性としては抽象的・演繹的と表現し違いをまとめていました。
私は知らなかったのですが、聞いたところでは、このような見方は一般的にされているようですね。本には東洋医学、西洋医学にも見られるとありました。
そう考えると、欧米ではドメインモデルが熱く、日本ではトランザクションスクリプトがもてはやされているというのには、腑に落ちた感じがしました。
ドメインモデルによる開発≒抽象的・演繹的を価値観においている?
トランザクションスクリプトによる開発≒具体的・実践的を価値観においている?
多分、これってシステム開発のいろいろなところに現れているのかもね。
欧米、日本の状況は下記にまとめられています。
プロトタイプ
正月休みもとうとう終わりです。
ということで、Spritesのソースを上げてみました。テストコード?なにそれ?
http://code.google.com/p/sprites-framework/
プロトタイプで自分で動かしてみたレベルなのでご容赦ください。
サンプルもあげたので、どう使うかはそちらを使えばわかると思います。ただ、自分で作ってみて、都合が悪いところがあるので、使い方は少し変わるかもしれません。
Javaのmainで記述するのもいいんだけど、Jythonなんかでやれるとうれしいかもと思うので、今後はそちらも少し試して、Spritesの利用者への使い勝手を上げられればと思ってます。
ちなみに、Java6からの対応を想定しています。
うん、まだまだ道は遠いですね。
とりあえず・・・。
今日は、今年の出社最終日。
ま、いろいろあったけど、それなりに良い出会いもあり、会社のあれにいろいろいえたし、それなりに面白かった1年だったんじゃないかな。
で、今日の納会?で今作ってるやつの話をしたので、ちゃんとしなきゃと思った。多分、当分はプロトタイプレベルなんだけど、バッチフレームワークってそんなにないから穴かなとは思うので、いいなーって思ってくれる方がいたら真剣に取り組もう(^-^;
ま、反応ないとモチベーションあがらないしね。
ところで、今のSpritesは今までの考えとちょっと違う感じになってきました。というか公開してないので、そうなのって感じですが・・・。
JobManagerってのはやめました。今はJobですね。だって、自分自身しか管理してないから。それに伴いJobManagerは、Jobのファクトリとそのライフサイクルなんかを管理してもらおうって思ってます。そのほうが名前と一致するし。
それと一応、Google Codeでプロジェクト名は抑えてあります。
http://code.google.com/p/sprites-framework/
実はもう一つ抑えててそこで管理してたけど、もう少しすっきりした名前にしました。残念ながら、こちらにはまだソースはおいてません。ただ、もう少ししたらおきます。当然プロトタイプレベルでテストケースなんかはないけどね。
shutdown
完全に私の備忘録となってます・・・。
ずっとshutdownについて悩んでました。
stage->queue->stage->queue-stage
とあって、stageがスレッドです。最初のStageが終了したら、毒薬を流して次々に停止します。ただ、停止の要求をどのようにするか、うまい方法が思い浮かびませんでした。interruptはもちろん組み込む予定なのですが、shutdown要求に対しては、行いたくないんですよ。
例えば、最初のStageがファイルを監視しているものだった場合、終了することはありません。この場合は、interruptで停止させるのはどうかなと考えてたわけです。となると毒薬しかないかなと思ってたのですが、最初のStageは受信用キューを持っていない設計になっていたので、うーん・・・と考えてたわけです。
そこで、下記のようなことを試してみたいと思います。
queue->stage->queue->stage->queue->stage
最初のステージはデフォルトのキューを持つ必要があるように。
こうすると最初のキューに毒薬を入れることはそんなに違和感ありません。たぶん・・・。
ま、とりあえず試してみます。
Stageのライフサイクル
Stageのライフサイクルというよりスレッドの管理。
一度プロトタイプで作っては見たが、捨てることにした。
とりあえず、このバッチの考えがうまく動作するかを確認する程度だったからね。
そんなこんなで、今ちゃんと考えてるところ。
ライフサイクルを考える場合は、プログラムだけじゃなく図を使わないといけないなーと・・・、この部分はコンセプトに近い部分だから。簡単なら問題ないけど、スレッドも絡むし。
今の悩みは、Stageの一時停止用にSuspendableというインターフェースを用意するか否か。Stageインターフェースに持っててもいい気もする。複雑にインターフェースが分かれてしまうと面倒だし。抽象クラスでデフォルト実装しておいてもいいかな。
volatileって
enumなフィールドにvolatileってOKなのかな?
不可変なオブジェクトならOKだと思うんだけど。
わからないからTODOに残して、安全なほうに倒しておくか。