buri-ja勉強会、行ってきたよ

昨日、「第一回buri-ja勉強会」に行ってきました。
3連休のど真ん中という凶悪wな日程でしたが、何とか嫁を説得して参加できることになりました。

自分のぶりの経歴

経歴っつーほどのものでもないですが、buriS2Buri時代から追っかけていて、
3年前のちょうど今頃にあった「S2Buri勉強会」も参加してました。そのときもUnitTestベースのデモを見たような。。。
あ、あとスタロジ主催の「ぶり祭り」にも運良く参加しました。そのときはともかくギョイゾーの印象が強烈で他みんな忘れちゃったw
で、これといって使うことも無く今日に至る。
でも、ぶりのことはずっと気になっていた中で、タイミングよくburi-jaが発足したので参加することに。
ぶりは初期のころにダウンロードして、テストケースを動かして満足した記憶あり。
今回の勉強会に参加するに当たって、SVNからチェックアウトして動かそうとして失敗したのは内緒w

id:imai78さん「ぶりで苦労したトコロ(一合目)」

まずは今回の主催者であるid:imai78こと今井さんによるぶり用語解説。
とりあえず80cm以上がぶりであることはわかったw
以下、メモからの抜粋。

  • パスは「パッケージ.プロセス.アクティビティ」でユニークになり、それが状態を表す
  • アクティビティは箱
  • トランジションは矢印
  • アクティビティが状態を表し、トランジションは動作を表す
    • 「承認済み」というアクティビティ(箱)に「承認する」というトランジション(矢印)が伸びるイメージ
  • 分岐と結合
    • XOR-Splitはどちらかへの分岐
    • AND-Splitは両方への分岐
    • XOR-Joinはどちらかが到着し次第次へ
    • AND-Joinは両方が到着したら次へ
  • ぶりは状態(State)しか管理していない
    • ぶりが管理しているのはアプリケーションのデータIDと状態ID、パスID
    • このイメージは自分が仕事で使っている某商用ワークフローとまったく一緒だな。。
  • デリベーションとは導出
    • Ebi
  • トランジションがあるってことはその操作が画面かどこかに入るはず
  • ぶりならではの優位性はRDBとの親和性。バリバリ業務用。
    • S2Daoの役割が大きいのかな?

途中からはぶさんも入り、会場からの質問に答えていました。
とりあえず自分が理解しているぶりの概念が間違っていないことが確認できました。ふむふむ。

id:htadaさんからお団子の差し入れが!!

スバラシス。id:htada++

はぶさんによる「ぶりの伝票箱モデル体験」

10数年ぶりにパワポを使わないプレゼンとのこと。まずはぶりの概要解説から。

  • 人間系のフローとシステムのフローは別。データの流れと業務の流れは必ずしも一致しない
  • 1Dtoに対して1つのフロー(プロセス)
  • 違うDto同士を繋げてるのは画面
    • でも、ぶりは画面はノータッチ
  • データ(Dto)は伝票、アクティビティは伝票箱のイメージで実際に紙を回すことを想像して考える
  • 人間、システム、データをそれぞれ分けて考えること

ここからチームに分かれて、ぶり脳になるためにw
イベント参加申し込みと作業依頼の2つのフローを考えることに。

でもこれが意外と難しいのです。
やっぱりどうしてもプログラムでどうしようとか、
SQLでどう書こうという発想になってしまうのですよね。
紙を回すとしたらどの箱が必要なのか、紙を処理する人の立場だとしたら何をしたいか、
を考えるとよさそうです。
自分が一番迷ったのは、手作業で行う部分とぶりなどのシステムで行う部分の境界線でしょうか。
2つ目の作業依頼のフローはみんな慣れたのか、結構いい感じにできました。
みんなで和気あいあいと作業できてとても楽しかったです!

その他、メモ。

  • 伝票箱に変なものが入らないようにチェックするのがバリデーション
  • AutoのアクティビティとManualのアクティビティ
    • XPDLのエディタはどちらも四角でわかりづらい
    • Autoはぶりが自動処理
    • Manualは伝票箱
  • AND-Joinを使う場合とは
    • 課長さんと部長さんの承認が揃ってから次にまわす、とか
    • 同じ伝票でも処理のタイミングが違い、2つの処理が揃わないと次に進めない場合、とか
    • でも。。。↓
  • AND-Splitはひとつのデータに同時に2つの状態があるものだと思うが、それってどういうときに使う?
    • たぶん必要ない
    • スタロジにはAND-Split禁止令がある
      • ホントはそんなことしなくても良い場合が多い
    • BurixStudioにはAND-Splitは無い!
    • つーことはAND-Joinも使わない??

id:makotanさんによる「UnitTestベースのデモ」

すんません、何か前の方でごにょごにょやってて良く見えなくて聞いてなかったww
分岐のところにIDみたいのをつけて、toNextStatusActionみたいなメソッドにそれを渡すと
そちらに行く、というようなことをやってました。

PCとイーモバイルを持って行ってたので「みんなで動かしてみようburi
みたいのをやってもらえたらうれしかったなー。
id:imai78さんのブログを読んでいろいろやってみよう。。。


そんなわけで勉強会は終了。
移動までの合間で、はぶさんによる「楽々ERDレッスン」本サイン会があり、サインしてもらいました!

懇親会

そして懇親会。曙橋駅近くのアヤシげな空想料理(?)飲み屋で開催。13人ほど参加しました。
嫁に早く帰るといった手前、そのまま帰るつもりでしたが、
まだ17時過ぎという時間の誘惑に負け、参加しちゃいました。
実はこういった飲み会に参加するのは実は初めて。ちょっと緊張。

席は2つに分かれ、自分はid:makotanさんとぶりコミッタのid:nobeansさん、id:EnogunoCapさんと同じ席に。
もうひとつの席ははぶさんが完全に語りモードw
そっちのお話も聞きたかったですが、また次の機会にでも。

id:EnogunoCapさんとは勉強会で同じチームだったのでいろいろお話してもらいました。
id:nobeansさんとは実はGrails繋がりということが判明。次回のg* workshopではよろしくお願いします。
そんなこんなしてるうちに、id:imai78さんがやってきて、id:makotanさんとid:nobeansさんとで
ぶりコミッタサミット開催。自分とid:EnogunoCapさんは完全に置いてけぼりwwww
とりあえず、id:imai78さんはDIコンテナ非依存、O/Rマッパー非依存のBuri3を作ってるらしいので超期待age。
自分もできることがあったら協力します!!
Springと連携してGrailsでぶりを動かすことを妄想。。。。

飲み会はまだまだ盛り上がってましたが、
家帰って子供を風呂に入れなきゃいけなかったので19時過ぎに撤収。中ジョッキ3杯か4杯ぐらい飲んだ。
嫁にろくに連絡してなかったので、帰宅後、超怒られた。。。
でも楽しかったのでまた今度参加しよー。


長くなりましたが最後に。。。
すばらしい勉強会を主催してくれたid:imai78さん、ありがとうございました&お疲れ様でした。
また、はぶさん、id:makotanさん、参加者のみなさま、ありがとうございました。
とても楽しいひと時でした。
またよろしくお願いします!!