WEB+DB Press vol.55 特集1

@DBFlute, Java, ReplaceSchema, WEB+DB Press
"WEB+DB Press vol.55" の見本誌が届き、いつものように
読ませて頂いているのですが...なんといっても "特集1"。
うぉっ、"DBFluteのReplaceSchema" が紹介されてる!?
"設計と実装に活かす技術" ということで、およそDBFlute
は出る幕も無いなぁと思いきや、素晴らしい展開で紹介して
頂いています。(筆者の方、ありがとうございます!)

で、一番真っ先に思ったのが:
"あっ、サイトにReplaceSchemaのドキュメントがない!"

ドキュメントリニューアルのマイルストーン
http://d.hatena.ne.jp/jflute/20100219/1266545175

にて、書かせて頂きましたが、リニューアル後は
完全なReplaceSchemaのドキュメントが公開される予定です。
でも、WEB+DB Press vol.55発売までには間に合わないぞ!
ということで、ReplaceSchemaに関する情報を取り急ぎ
ここでまとめてみました。
"現場ソリューション2 DBFlute (PDF)"

"DDL&データ" というカテゴリでReplaceSchemaに関する
記事があります。紹介記事ではありますが、今、存在する中で
一番良いと思われるドキュメントです。
データ登録時のデフォルト値設定やシート名30文字問題の設定など
のファイル名が "xxx.txt" 形式から "xxxMap.dataprop"
に変わっていることだけ注意です。(でも古い形式でも動きます)

ex) デフォルト値設定
default-value.txt ==> defaultValueMap.dataprop
"DBFluteのタスク全体図"

タスク全体図と言いつつ、ReplaceSchemaに関する
補足説明がごついです。
あと、Blogでの紹介記事。
特殊な機能とかは、ここでしか書いてないこともあります。

"DBFlute: ReplaceSchemaの思想"
"ReplaceSchemaの紹介・おさらい"
"ReplaceSchemaの最後にシーケンス調整"
"シーケンス調整のシーケンス増分値の想定"
"ReplaceSchemaでDBユーザも作る"
"ReplaceSchemaのチェック機能"
"take-finallyのAssertを環境毎に切り替え"
"take-finallyでのAssertで「存在すること」も"
"ReplaceSchemaでBatchUpdateしないモード"
"OracleのSequenceを自動Drop"
"空文字データを登録できるように"
"DBFlute: データエクセルのテンプレート"
"DBFlute: ReplaceSchemaで埋め込み変数"
"HibernateプロジェクトでもDBFlute"
"ReplaceSchemaがWindows Azureで"

"ReplaceSchemaでDBユーザも作る" は、最近の機能ですが、
とても便利ですね(自分で実感)。ユーザ作成・権限設定周りが
本当にバッチでできちゃうので設定さえできちゃば本当に楽です。
dbflute-oracle-example、dbflute-mysql-example
にて実際に利用しています。
実は、新ドキュメントのReplaceSchemaの記事は
おおよそは書き終わっています。サイト全体ができて
ないので、まだ公開できていないだけなのです。

"新ドキュメント(推敲中)のReplaceSchema"

まだデザインも仮のもの、レビューも終わってませんが、
がっつり理解するのであれば、こちらを見てもらっても
良いかと思います。
dfwww-factoryプロジェクトを(SVN)チェックアウトして、
ローカルファイルとしてブラウザで見れば仮のデザインが
適用されて、直接上記のリンクで見るよりは見やすいです。
ちなみに、このWEB+DB Pressの特集1の記事、
とても共感の持てる勉強になる良い記事でした。
たくさんあるのですが、その中で幾つかの言葉を
ピックアップして、jfluteの感想を:

<1>
"ユーザは実物を見て初めて次の要求が出せる"

全くその通りで、ユーザに限らず人間そうですよね。
想像力にも限界があって(個人差もあるし)、
普段別のこと(業務)をやってる最中で、システムの
要件を出し切るのはそもそも難しい、それを踏まえた
上でそれをフォローする仕組みを作っていかないと。

ちなみに今やってるDBFluteのドキュメントリニューアル
でまさに実感です。どのようなデザインにするか?
最初から全部の細かい要件はなかなか出て来ないものです。
段階的にWEBデザイナに伝えて、一旦ある程度できたもの
を見て、そこからまた思いついたものを伝えて、を繰り返し、
というやり方でスムーズに進んでいます。

<2>
"(可能であれば)設計者が実装車に説明した仕様をもとに、
実装者自身に詳細化を行ってもらい、それを設計者が
レビューするという方法"

詳細設計の話ですが、自分は幾つかのプロジェクトで
これを実践したのを経験しました。
(自分が主導したプロジェクトでも導入)
詳細設計の全てというわけではありませんが、
少なくとも実装者には "処理概要フロー" に相当する
"コミュニケーション図" を書いてもらいました。
これは必ず実装前に書いてもらいます(これ大事)。
それを設計者とレビューし、意識の乖離がある場合は、
その場で修正します。クラス図やシーケンス図は、
そういう役割としてはあまり向いていないと考えています。
ある一方の視点からの "非常に正確な" 構造もしくは動き
を表現できるのですが、それを書くのはそれこそ時間がかかり
ますし、設計者はそれを見てもあまりピンと来ません。
それよりも、構造(依存関係とか)と動きの両方を "漠然と"
表現できる "コミュニケーション図" の方が向いていると。
まさに設計者と実装者のコミュニケーションをつなぐもの。

また、設計者だけとなく隣接する機能を実装する他の
実装者(+1人、2人)もレビューに加わります。
それは、最後のコラムで書かれている "共に仕様を把握
している実装メンバーで助け合う..." につながります。

実際にやったプロジェクトでは、本当に複雑な画面において
のみ、クラス図やシーケンス図を作成し、それ以外は全て
コミュニケーション図だけで開発を進めて行きました。
(もちろん、画面定義書は別にちゃんとありますよ)
結果、レビューはとてもスムーズにでき、意識のズレと
いうのはほとんどなく、リリース後のメンテナンスでも
そのコミュニケーション図が新加入のメンバーの
現状把握の一番の良い入り口となりました。
メインの図をコミュニケーション図に絞ることで、
図のメンテも皆嫌がること無くしっかり同期されました。

などなど、
他にもとても興味深い内容が記事に書かれています。
ぜひ興味ある人は読んでみて下さい。

京豆富 不二乃 京都伊勢丹店

京豆富 不二乃 京都伊勢丹店
最近豆腐の話題ばっかりですが、はい、また豆腐です。
京都駅の駅ビル(!?)の伊勢丹の11階にあります。
エレベータがめちゃくちゃ混んでて、なかなか来ない、
なかなか上らないので、元気な人は長ーい階段上るといいです。
(まあ、普通にエスカレータがありますね)

もともとは、六本木ミッドタウンの中にある、
"京乃とうふや藤野" をよく利用していて、
それで京都に行くということでせっかくなので、
本場に行ってみようと思って行きました。
(まあ本当の本場はさらに北野天満宮近くにあるのですが、
それは別記事で紹介しますね)
六本木もこちらも完全禁煙で安心して食事できました。

さて、料理ですが...いやぁ、湯葉のさしみがー。
って、何度も出て来ていますが、ここでもまたおいしい
湯葉を食べることができました。また、ここは豆腐自体が
とてもおいしい。おぼろ豆腐がとてもおいしいのです。
ちょうど寒い中だったので暖かいおぼろ豆腐がとても
体に優しかったです。

#
# 禁煙スタイルでも紹介されています。
# http://www.kinen-style.com/gourmet/5017.html
#