FOLLOWING ECLIPSE GMF

気になっていた Eclipse GMF をちょっと追いかけてみようかな?という思いつき。(いつまで続くことやら… ^^;)
とりあえず、本家サイトを見てお勉強をはじめてみる。説明は跳訳です。mOm;

  • GMFチュートリアル
  • GMFの概要
    • EMFとGEFを使ったプラグインの開発は一般的になっています。以下ではこれらのフレームワークを一緒に利用する方法について述べます。GMFの話に入る前に、EMFとGEFを使ったより先進的な方法について、GMFのアプローチを少し見てみましょう。GMFの実行環境についてはこの記事を参照して下さい。
    • GMFプロジェクトでは、GMFを利用したプラグインの開発者を示すために『ツール職人』('toolsmith')ということばを使っています。これに対し、プラグインの利用者(開発者かも知れませんが)を一般に『ユーザ』('user')と呼びます。GMFを利用する立場からすると、GMFで内部的に利用される『モデル』('models')の数や型はできるだで隠すべきなのですが、ほとんどのツール職人は、裏でどう動いているかということに興味があると思うので、このチュートリアルではそれぞれのモデルについて説明しています。

…つづく予定

THE 21TH JAVA EE STUDY MEETING

JavaEE勉強会に行ってきました。
今回は名札(朝まで生テレビみないな感じ)があったので 名前⇔顔 mapping が強化されて良い感じでした。

  • ポジション・ペーパーより … お題「【こんな】method【あります】」(ちなみに自分の提案だったりして…^^;;;)
    • Javaだけではなく、JavaScript、Groovyなど他の言語だったり、広い意味での“メソッド”(でもこれGOODです!!)があったり、いろいろバラエティに富んでいて(?)、個人的には面白かったです。
    • 自分は最近Seasar2のコードを読んでいて知った、プライベートメンバーへのアクセスを可能にするリフレクション系のメソッドを紹介。ソースコードの字が小さかったなぁ〜と反省…orz
    • 以下、メモの転写
    • Java
      • Class#getResource, Logger.globalInfo, ClassLoader#getResource(s)
      • Class#cast
      • concurrent / Executors, CountDownLatch
      • String.scanner, StringBuffer, instanceOf
      • Collections, Arrays
      • javax.imageio.spi.ServiceProvider.lookupProvider
      • commons: discovery
      • String.intern() , ==
      • generics library: JGL (STLJava版)
    • Groovy
      • Method#invocation
      • Groovyオブジェクト (root object in Groovy)
    • JavaScript
    • .NET / C#
    • "メソッド"
      • DEWA-METHOD (いいかも…)
  • How to start up open source project by ひがさん
    • NepalのIT事情
      • VBでC/Sが多い、Delphiも少し。Open Source 活動としてはLinuxのLocalizationなど。
    • Open Source 1.0 と 2.0
      • 話を聞いていて、ソフトウェア業界がもっと健全な体質になるための触媒としてオープンソースはより重要な役割を果たしていくのかなぁと思いました。情報化がさらに進むこれからは、社会全体に対しても重要になりますね、なんて妄想してみたり…
  • Pro EJB 3 / Java Persistance API 読書会
    1. Introduction
      • CLI … Call Level Interface
      • JDBC
      • EJB … "Over Engineered"
      • JDO … Java Data Object (inspired by OODB)
    2. Getting Started
      • JPQL … 式書けない。(集計関数だけ)
      • PersistanceContext
      • @Entity(name="AliasNameOfTableInJPQL")
      • EntityManaged
        • new
        • managed
        • removed
        • detached
      • Persistance(in JPA) ≒ DataSource(in JDBC)
      • TopLink
        • Essencial (Glass Fish)
        • 商用 (JDeveloperにライセンスが付いてくる)
        • auto
        • never
        • commit
      • PK = Object (Single column PK is better. [must?])

う〜まとまっていない。「個人メモです」という言い訳落ち ^^;;;

SCOPE A LA CARTE

conversation scopeというのがコンテキストの生存期間としてあると便利かな? と思った昨日ですが、これを、より長い期間の方へ延長するとどうなるだろうと考えた場合、workflow scopeみたいなのもありかなと…*1
つまり長期間→短期間の順でいくと…

  • Environment Scope (依存する外部システムなどの存続期間*2 )
  • Enterprise Scope (会社が存続する期間/データベースが存在する期間)
  • Workflow Scope (数時間〜数ヶ月程度以上のGOALを持つ業務タスクの遂行期間)
  • Application Scope (サービス提供期間/アプリケーションが稼動している期間)
  • Session Scope (利用者の作業期間/ログイン〜ログアウトの期間)
  • Conversation Scope (数分〜数十分程度のGOALを持つ短い業務タスクの遂行期間)
  • Request Scope (利用者の指示を遂行する期間*3 )
  • Action Scope (指示を細分化した粒度の細かい処理/ActionChain*4の1Action?)

ApplicatoinとSessionは、微妙に毛色が違うような気のせいもしますが…
…それで? と言われるとそれまでです…^^;;;

最近*5、自分の中でContextという言葉が1つのキーワードになっています。Context-Drivenあるいは、Context-Centricな開発やフレームワークってできないかなぁと*6
Contextという言葉は、まさに文脈によっていろいろなイメージがあると思いますが*7、自分としては Chain of Responsibility パターンにおける主体となるもの*8という捉え方が1つ。これをActive-Contextと呼ぶとします。一方、
先ほど出た7つのScopeに対応するContextがもう1つの捉え方です。これをPassive-Contextと呼ぶとします。
そうすると、Active-Contextがシステム利用者とシステムの間、あるいはシステム間をぐるぐる回りながら、Active-ContextとPassive−Contextの間でデータをやり取りするというイメージが湧いてきたわけです。
これを踏まえ(?) … もう少し具体的に、現在のWebシステムに当てはめて考えると、

  • Active-Contextが、ユーザの入力データを受け取ります。(これもResponsibility Chainで)
  • Responsibility Chain のトンネルの中に放り込みます。
  • 各Chainは以下のような処理を行います
    • Passive-Contextに特定スコープのPassive-Contextのデータをコピーしたり
    • Active-Contextのデータを処理してActive-Contextに書き戻したり
    • Active-Contextから、特定スコープのPassive Contextにデータを書き戻したり
    • …などなど
  • Active-Contextからユーザ用のビューを作ります。
  • 繰り返し

配管作業の要領でビジュアル・コンポーネント指向でアプリケーションが作れたらいいなぁ〜なんて…
DOAのフレーバーが若干…? 現在のWEBシステムをContextで言い換えただけ…? でも、名前重要! イメージ重要! (個人的な)しっくり感重要! なので… なんとなく書いてしまいました…
こんなの100年前からあるよ! とか、このパターンはこんな問題を含みます、みたいな情報があれば、"優しく"コメントしてください ^^;;;

っていうか、文章まとまってなさ杉… 頭の中も整理されていなさ杉…orz

*1:S2Buriのワークステートまわりのドキュメント、というか羽生さんブログを見ていて思ったり…

*2:短い場合もあるかも…

*3:アプリケーションへの1つの指示、画面のボタンを押して結果が返るまでの期間

*4:内部処理を Chain of Responsibility パターンで役割分担/分割統治している場合

*5:といっても去年あたりからですが

*6:特にクッキリとしたイメージがあるわけではないのですが…

*7:うまい! 座布団2枚! ⇒ 自分 … はぁ… 一瞬、虚しさを感じたような…

*8:あるいは、現在関心のあるデータを集めたカプセルのようなイメージ

MR. RYUTARO HASHIMOTO

元首相の橋本龍太郎氏がお亡くなりになられたそうです。
氏には、内閣総理大臣に就任する直前に、政治とは無関係な仕事の関係で、お会いした*1ことがあります。当時まだ若かった私*2は、穏やかな振る舞いの中にある貫禄のようなものに圧倒されたことと、手元にあった赤い箱のタバコがとても印象に残っています。
謹んでご冥福をお祈り致します。

*1:といっても、下っ端の私のことは、100%覚えていなかったと思いますが…もう10年くらいたつのですね…

*2:気持ちは今でも若いつもりですが…

CONVERSATION SCOPE

S2のソースコードを読んでいます。S2には外部コンテキスト(ExternalContext)という、サーブレットコンテナ上のコンテキスト(Application、Session、Request、Responseを含む)を抽象化したものがあります。いまのところほぼ100%サーブレットコンテナが対象だと思いますが、いろいろ応用も考えられるし、Mockを使ったテストとかには便利そう。
ところで“Spring WebFlow”というWEB画面の遷移を制御/管理するフレームワーク(今度こそ1.0が出そう…^^;;)があります。これを解説した“Expret Spring MVC and Web Flow”*1という書籍のなかで『Conversation Scope*2という言葉が出てきました。なるほど、言い得て妙だなぁと思ったのですが、どういうものかというと「生存期間がRequestより長く、Sessionより短いスコープ」という意味です。具体的に言えば、ウィザード的な閉じた画面遷移系とか、ドリルダウンした状態で使える閉じた画面遷移系のスコープのようです。
S2のExternalContextに、Conversation Scope があったらどうなるだろう? と漠然と考えてみました。

  • Conversation Scope Context

Application > Session > Conversation > Request/Response

    • Sessionに固有のキー名で、ConversationMapみたいなのを持つのかなぁ
    • 親の遷移系から子の遷移系に移った場合、戻った時の為に、親の遷移系の情報は保持する必要があるなぁ…スタックか?…Continuationか?
    • そうするとSessionスコープもルートConversationスコープみたいに考えれば、汎用的にConversatoinスコープで扱えるかなぁ…Spring WebFlowはどうやってるのだろう…をコードを覗いてみようかなぁ…
    • でも、ポートレットみたいに、画面上に複数の独立したパネルがあって、各パネルがそれぞれ独立したコンテキストを持っている場合や、さらに同時並行にAjaxしちゃうような場合にも使いたいなぁ…これでは、スタックだけじゃだめだなぁ…
    • Session
      • ∋ ConversationStackMap(concurrent conversation)
        • ∋ ConversationStack(drill down conversation)
          • ∋ ConversaionMap(conversation scope context)
    • こんな感じ?…ややこしいそうだなぁ…
    • うぅん…

と、いうわけです(?)。漠然としたまま思索終了です…orz

*1:WebFlow自体の解説は少ないのですが…

*2:または Conversational Scope

DIVE INTO S2 .CHART : IMAGE

S2Container内部のイメージを現在の理解レベルで、自分なりに表現してみるテスト。
ちなみに、VISIOのワークフロー用ステンシルのみで作成してみました。
このイメージはフィクションであり、登場する団体・名称などは実際とあまり関係がありませんが…なにか? (^^;;;;;

*1

*1:良く見えない方は、目を静かに閉じ、心眼でご覧下さい…オイオイ…^^;;;

OBJECT CLUB SUMMER EVENT 2006

オブジェクト倶楽部の夏イベントに参加してきました。
が、体調不良の為、遅刻…基調講演聴けず…
…聴いた人の話を聞くと、とても面白かったらしい…非常に残念…
というわけで、前半セッションから…

なお、聞き漏らしたところは抜けてたり、ところどころ自分の心像の言葉になっていたりしてますので、講演者の皆さん本人の言葉である保障はありません…
個人用メモということで…

  • セッション前半
    • 和田卓人さん(t-wadaさん)
    • デベロッパー・テスト
    • テストの分類の複雑化
    • xUnitの登場
      • テスト方法の共有(テスティング・リテラシー?)
      • 通化
        • 記述方法の共通化
        • 実行方法の共通化誰でも実行可能!
      • タスクの自動化/自
        • 時間の有効利用
    • デベロッパー・テスティングの作用
      • 開発者の心の健康
        • リアルタイムなフィードバック
        • ソフトウェアに対する自信
        • 次のソフトウェアに対する自信
          • テスト済みのソフトウェア部品を使用して開発する場合など
      • ソフトウェアの健康
        • …いわずもがな…
      • さまざまな信頼の獲得
        • ソフトウェアの信頼
        • 開発メンバーへの信頼
        • お客様からの信頼
    • Developer Testing
      • Stub/Mock
        • Network、File System、Database
      • Debugging Test
        1. BUG検出
        2. 再現テスト … ガマンして書く …時にはできない時もあるけど…
        3. RED
        4. GREEN
      • Learning Test
        • 未知の(使ったことのない)ライブラリのテストなど
        • ライブラリの理解
        • (未知の)ライブラリを使用してコードを書く
        • テストが学習結果として残る → 他の学習者の参考になる
      • Assumption Test
        • 外部ライブラリのテスト
      • Test as Documentation
        • ソース → HOW
        • テスト → WHAT
        • …忘却…
      • Good Practices
      • TDDの流れ … テスト・ファースト
        • 道はひとつではない
          • 美しいくてまだ動かないコード → 美しく動くコード
          • 汚いけど動くコード → 美しく動くコード
          • ※ 「汚い→美しい 軸」と「まだ動かない→動く 軸」の2次元グラフは分かりやすかったです
      • リファクタリング
        • GOAL指向
        • What do you want to do ?
        • What makes you fun ?
        • Fear
        • Next action
        • GTD〜similar〜TDD
        • "HEART"
        • × Open loop (開ループが生産性に与えるダメージは大きい)
      • EOT (Ease Of Testing)
        • 責務 → …
        • コラボレーターを減らす
      • etc...
        • 他の人が分かるテストコードを書くことが重要 → 多少冗長でも…DRYにはこだわらない
        • 稼動時の Debugging Test は、外から攻めることが多い → そしてBINGO !
      • Developer Testing is SKILL !
        • So, Everyone can do it! Sure! You can do it!
  • セッション後半
  • 全体講演
    • 能登原さん、三河さん、羽生さん、牛尾さん、平鍋さん
    • 技術
      • D.R.Y
      • 要求
        • "自然言語"
        • 要求で"AOP"? … Jacobson said ?
        • 非数学的部分への技法
      • Engineering ≠ Art
        • Process … 手順
      • Agile vs Engineering ? 〜 balance 〜 Innovation
        • Processional
          • モチベーションだのみは ×
    • 現実的なお話?
      • お仕事をたのむ場合
        • 一人一人
          • 個人スキル
        • 会社
          • プロセス重要
          • 実績重要
      • トラブルの場合
        • SWAT TEAM
          • 5 Hi-Skill Members
            • できてあたりまえ?
        • 集まった人々でいかにプロジェクトを成功に導くか? が(みんなの?)課題?
          • 個人的にはOJTの効率的・合目的的なプロセスの確立の必要性を感じるこのごろ…
          • …てゆうか、OJTを組み込んだ開発プロセスの必要性を感じる今日このごろ…これって日本のソフトウェア業界の全体的なレベルアップにも繋がるし…どおっすか? (ペアプロデファクトになるとみんなHAPPYになれるかもかも…)
    • たいせつなもの
      • 牛尾さん
        • 基本
      • 羽生さん
        • 語り
          • やるべきこと
      • 三河さん
        • ちゃんと動かすこと
      • 能登原さん
        • 本質
        • 現場で使える技術
        • プロジェクトを成功させる
          • 感動を与える
          • メンバーと仲良くなる
      • 個人的に … 思い→行動(GTD?)
  • 懇親会
    • 去年の暮れのオブジェクト倶楽部イベントで会った方、勉強会で会う方、イベントでは必ず会う方(^^)とか、初めて会う方とか、いろいろな人にお会いしました。
    • おまけにゲームで「入門xyzzy」という本を手に入れたりとか…残りもの(失礼しましたmOm)で、xyzzyが何かも知らなかったのですが、Emacsクローン? … これを期に Emacs使い → Lisp使い → Haskell使い という道をたどってしまうかも知れません…(^^;;;
  • 場外編
    • あと、JUDE/Think! or JUDE/Professional も欲しくなりました。(JUDE開発者の皆様、お話させて頂いてありがとうございました)

講演者の皆様、後援者の皆様、運営の皆様、ボランティア皆様、参加者の皆様、お疲れ様でした。個人的にとても楽しめました! ぜひ冬のイベントにも参加したいと思います。

ではでは…以上、オブジェクト倶楽部 2006年 夏 イベント レポートでした。

※ 読み返すと書き方 酷杉 → 自分 orz