都元ダイスケ IT-PRESS このページをアンテナに追加 RSSフィード

最近は会社ブログしか書いてません。

2011-02-19

[][]デブサミ壇上リリース Jiemamy v0.3.0

昨日一昨日と、デブサミ2011だったわけですが、Jiemamyはそのキックオフセッションを担当させていただき、Jiemamyの新バージョン v0.3.0 を発表しました。壇上の回線をつかって、リリースさせて頂きましたw 昨日一昨日はぐだぐだに疲れていたのでご報告が遅れましたが。以下セッション資料。

Jiemamyも、もうすぐ4歳なんすね。この間、なかなか思うように作れず、作っては壊しで3回目です。各バージョンを一言で表せば、v0.1系は未熟な構成、v0.2はやり過ぎ黒魔術、v0.3は鉄壁の正統派、というイメージですね。

出典は今ググって知ったのですが、「ソフトウェア再利用の神話」という本には「再利用可能なソフトを開発するには,3回は作り直す必要がある」と書かれている*1そうです。…確かに。本当にそう思います。3度目でやっと、バランスの取れたものが作れたなぁ、と思っている次第です。

今後は「書いては壊し」を(やっと)やめて、プロダクトの機能拡大*2と品質向上の路線を進む所存です。

v0.2系から何が変わったの?

Jiemamy Eclipse Pluginから見ると「少々のUI変更」にしか見えません。maven-jiemamy-pluginから見ても、pomに書く設定が少々変わったな、という感じだと思います。v0.3になって変わったのは裏側の世界で、表向きはあーんまり変わってないのです。それでいいんです。

ただし、データファイルのXML形式(スキーマ)は変わり果ててしまいました。XMLの進化的設計ェ…。

あ、あとv0.2にあった「ドメイン」と「インデックス」の機能がありません。デブサミには間に合いませんでしたが、近々に整備して追加します。ドメインは我慢すれば何とかなります。インデックスは「終了スクリプト」あたりで対応できると思います。

なぜ裏側を変えたのか?

建物を建てるのにたとえて。v0.1ではプレハブ小屋ができました。しかし、作っているウチに「…欲しいのはもっとでっかい建物だな><」ってのが分かってきました。これ以上プレハブ小屋を増築できませんでした。

そして作り直してv0.2。インテリジェントビルの1Fができあがりました。高機能なのはいいんですが、高機能なりの不安定さと固さがあり、柔軟性に今ひとつ欠ける結果となりました。

ということでv0.3。無垢材を使って昔ながらの「百年住める家」が出来た感じです。やっと基礎に納得がいき、これから続くメンテナンスに耐えうる基礎だと感じられました。この上に、さらなる機能を組み立てていけます。

簡単に新バージョンへのアクセスパスを紹介

プロダクトの詳細はあらためて順次書いていきますが、以下にダイジェスト。適当ですんません。これじゃあ「分かってる人」にしか伝わらないのは分かってますw ドキュメントの整備も(id:regtanを中心にw)進めていきますね。

Jiemamy Eclipse Plugin】
更新サイト http://eclipse.jiemamy.org/release/

Jiemamyインストールガイド

まずはプラグインを触ってみましょう。インストールしたら、新規ウィザード(CTRL+N)から「Jiemamy ER Diagram」を選び、作成先を選びます。そするとエディタが開くので、エディタ右端にあるパレットを開き*3ます。

背景部分を右クリックして「プロパティ」を選ぶ*4と基本設定画面が出てくるので、ここでDBなんかを選びます。

あとは直感でいけるはずです。

maven-jiemamy-plugin】

まずはチュートリアルをチェックアウトして、様子を見てみましょう。いつも私がセッション中にデモする奴です。

http://svn.jiemamy.org/products/metis/jiemamy-tutorial/tags/jiemamy-tutorial-0.3.0/

m2eclipseが必要なので、インストールしておいてください。で、あとはREADME.txtを読めばできるはずです。

Jiemamy API

相変わらず、APIもありますよ。

Maven repository http://maven.jiemamy.org/release/
groupId org.jiemamy
各artifactId jiemamy-core, jiemamy-sql, jiemamy-diagram,
jiemamy-diagram-mysql, jiemamy-diagram-postgresql
各version 0.3.0
【裏技】

前述の通り、API以外はv0.2.0とあんまり変わっていません。どうしても急ぐ方は、v0.2.0のドキュメントを見てしまうのも一つの手です。v0.2.0のドキュメントは意外と頑張って作ってます。v0.3.0も同じようなドキュメントを提供する予定。

http://docs.jiemamy.org/release/0.2.0/

質問・バグ報告など

何かありましたら、

あたりで。個人的には上の方の選択肢ほど嬉しいですw

*1:3回作ればいいのか、3回作り直すからトータル4回なのか…。まぁ、そんな話じゃないと思いますがw

*2:肥大じゃないすよ。目的としている機能はまだ色々あるのです。

*3:上の部分にある△をクリックすると開きます。

*4:この時、テーブル等のノードが選択状態になっていない状態にしてください。

2010-07-18

[][]とべとべ・電設部 勉強会で喋ってきた

久々にしゃべって来たよ! そういえば、半年以上セッション持ってなかったんだなぁ。いかんいかん、忙しさにかまけちゃ。というわけで、こんな自分に喋らせてくれる勉強会さんありましたら、お気軽に。

さて、聞いたセッションはこんなかんじ。

「それは一枚の不思議な仕様書でした・・・」 (野口おおすけ)

いつもの id:happy_ryo の迷言が、相変わらずひどいw 前半、いつもと同じ話だったけど、俺も人のこと言えないからなww 最後は、なんか格好良くまとまりました。We are not perfect.

SetucoCMS(@skyguild)

電設部の方々が作っているOSSのお話。もともとWebデザイン専攻でプログラミングとかよくわからない、という立場だったのが、あれよあれよとOSSの世界に転がっていく様子が面白かったですね。是非、頑張って欲しいなー、と思いました。

懇親会で、ライセンスの選択の話なども、面白かったですね。

2コマ目終了後移動→ Perlのなにか (@sugyan)

セッションが早めに終わったので、すぎゃーんの話を聞くためにPerl/PHPの部屋に。残念ながらPHPは終わってしまっていましたが、ちょうどすぎゃーんがセッションを始めるところでした。

Perl、むかーし「掲示板GCI」とかそういう時代に触れた程度ですね。書いたことありません。面白そうな言語であるのはずっと感じてるんですが、やっぱり難しそうなイメージがw PerlJiemamy作ろうとか思ったらどうなるのだろう?@@;

ワンライナーライブコーディングする為には、やはり事前に練習するんですね。懇親会でそんな裏事情を。まぁ、そりゃそうですね。Jiemamyのデモだって、何度もやってるけど、一応事前にチェックするもんなぁ。ネットワークの関係でMavenが上手く動かない、とかあるし…。

「はじめてのオラクル〜FROM dualってなに〜」 (つかだあきひろ)

JiemamyのせいでDB屋のイメージが少々ある私ですが、実はオラクルってほとんど触れてないのです。正直、ホントに「dualって聞いたことあるけど結局なに?」という状態だったので、大変勉強になりました。MySQLと比較して、Oracleではこう書く、というのが説明されていて、とてもイメージがつけやすかった。

勉強になりました。

自分の話

DB meets Jiemamy. 〜 特別付録:OSSプロジェクト運営の話 〜」 (都元ダイスケ)

というわけで、私も最後の一コマで喋らせて頂きました。

セッションの内容は、事前準備の時間があまりなかったこともあり、前半はDevLOVEの時のスライドの焼き直しになりましたが、それだけではつまらないので、後半に「OSSコミュニティ運営としてJiemamyで色々やってみていること」をご紹介。OSSを新たに立ち上げようとしている人に対して、ヒントになればな、と思って話しました。

お時間を割いて聞きに来てくれた方々、勉強会モデレータの@kwappaさん@ece_mさん、貴重な機会を頂きまして、どうもありがとうございました。

http://www.slideshare.net/daisuke_m/20100717-db-meets-jiemamy

その他

実は、オラクルさんに伺ったのって初めてだったんです。なんと綺麗な会場なんだ…、と圧倒されておりました。連休にもかかわらず出社して会場を利用させてくれたオラクルの方々にも大変感謝です。今後もお世話になることもあると思いますが、よろしくお願いいたします。

2009-11-28

[][]Jiemamy MTG 11月資料

ミーティングやった。資料置き場として。随時更新。

Cacooを使って書いた図

ホワイトボード写真

http://picasaweb.google.com/Iwama.Ryo.0731/20091128ByEyeFi#

2009-11-20

[][]DevLOVE DB勉強会DBも、進化せよ。」

で、話してきた。楽しかったーーー。

めちゃめちゃ疲れているけど、脳内麻薬が出ているぽいので、ブログくらいは書けそうだ。ブログを書くまでが勉強会ですよ、と言った手前、書かないわけにはいかないぜっ。

まぁ、セッションに関しては自分が話したので反省点のみ。緊張しすぎ俺w もっと緊張せず、自然体で話せるようになりたいもんであります。

セッション時間の方は見積もりバッチリ。ほぼジャストの時間で終了しました。俺++

今回は、事前に id:papanda と飲んだ時にDevLOVEの一つのポイント「明日から実践できること」というテーマをもらっていた。みんな色々な現場に属していると思うが、明日からいきなり「Jiemamy導入しましょう!」ったって難しいですよね。理解もまだまだ得られていないと思う。(理解をいただく為に、コツコツと巡業しますw)

そこで、Jiemamyのベースとなっている考え方を基に、いくつか「明日からできること」という項をもうけて見ました。意外と評判よかったので嬉しかった。

詳しいことは、以下の講演資料にて。

ダイアログ・タイム

セッションが終わったあと、4〜5人ずつの班に分かれて、話を聞く前にDBについて思っていること・今日聞いた話で思ったことについてディスカッションする、という時間を設けてありました。

個人的にはこれが一番楽しみだった。自分に対するインプットの時間ですからね( ̄ー+ ̄)

自分は班に所属せず、あちこちのテーブルを回って1テーマずつ話を聞いてまわっていたのですが、全員の話聞きたかったなぁ〜w みんな、興味深い話をしていました。

  • チューニングはアプリよりもSQLに対しての方が劇的に変わるので刺激的
  • セッション中にあった「動的にテーブル作る」ってどんな使い道が?

などが印象的でした。

「動的にテーブル作る」に関しては、意外とみんな食いつきがよくてびっくりしましたw 自分はただ漠然と、今は「スキーマは固定、その上で色々やる」というパラダイムを「ランタイムにスキーマが変化していく」という状況にひっくり返せるよね、やろうと思えばw というだけのつもりだったんですが、皆さん想像力旺盛w 色々なアイデアが聞けて面白かったです。

特に、懇親会の時に聞いた「トランザクションの多いイベントテーブル」を、時期毎に新しいテーブルにバッチ等差し替えて、集計しやすくする、パフォーマンスの劣化を防ぐ、というアイデア。キャンペーンの応募など、レコード数が多いテーブルは例えば毎日、INSERTされるテーブルを差し替えていっちゃう。(そのテーブルのデータの利用方法に依存しますが。) そすると、日ごとの集計とか楽になるよね、レコード数多すぎてパフォーマンスが劣化するのも防げるよね、という考え方。これは、なるほど、と思いました。場合によっては使えます。

その他、本日初めて、地豆名刺が火を吹きました。懇親会では全テーブルを回りきれませんでした>< ご挨拶できなかった方々、申し訳ないス。

総評として、行って喋ってよかったな!と思える勉強会でした。わざわざお集まり頂いた方々、そして DevLOVE運営スタッフの方々、どうもありがとうございました。

2009-10-28

[]DevLOVEで話をします

11月20日 DevLOVE DB勉強会 「DBも、進化せよ。」(東京都)

演者として呼んでいただきました。基本的に、いつもしている話になってしまうとは思いますが、セッション後に聞いてくれた方々とのディスカッションタイムが設けられているのが、個人的に楽しみですw

よろしくお願いします。

2009-08-30

[]RE:地豆モ-DeclarationとReferenceというか、テーブルをどう表現しているかっていう話になっている気がする

id:tonocchoに話した地豆のモデルについて、話した内容を本人がまとめてくれた。

はてなダイアリー

ちょっくら補足したい所があったので、まとめてみる。ちなみに、ブクマには「嘘が混ざっている」としてしまったが、エントリは全体的に間違ってはいないことを確認した。早とちりだw

以下はあくまで補足です。引用部分の表記は俺による取り消し部分俺による追記部分とします。

地豆の中ではDataTypeMoldとDataTypeというのがある。前者は、そのDataTypeが何であるか、という定義で、後者は実際にその定義に対する参照実例

(中略)

さて、DataTypeMoldはdeclaration定義で、DataTypeはreferenceそのinstanceだ。

はてなダイアリー

「宣言と参照」という話をしたのだが「鋳型と事例」の話よりも強くなってしまっている鋳型と実例、というのは、クラスとインスタンスの関係。"" と "".getClass() の関係だ。

まぁ、突き詰めれば結局間違いではないのだが、それ以前に「鋳型と実例である」ことを強調した方がいいかな、と思った。

col1にとって、VARCHAR(32)は、declarationだけど、VARCHAR(32)は、RDBMS内に実装されたVARCHARの定義(Mold)に対するreferenceだ。

col1 VARCHAR(32) という記述は、新しくcol1というカラムを定義する部分であって、このcol1の位置にあるトークン(単語)によってカラム名が決定する。従って、col1という識別子をdeclaration(宣言)と呼ぶ。次の例で現れる FOREIGN KEY col1 という記述の中のcol1は、新しく定義するのではなく、別の所で定義されたカラムを参照する部分である。これをreference(参照)と呼ぶ。

はてなダイアリー

XXにとってYYはdeclaration/referenceである、という表現がちとおかしい。XXにとって、という概念はない。ただ単に、とある識別子がdeclarationなのかreferenceなのか。ただそれだけのことである。

感覚は分かるだろうか?ここまで把握した時点で、さらに知識を補足する。

VARCHARというトークンは「VARCHARという型の特性を定義*1」している訳ではないので、言うなればreferenceである。このreferenceに対する宣言はどこにあるのかというと、RDBMS内で定義されている、と考えてよい。

ただ、JiemamyがRDBMSの内部を参照して型の特性を取得するのは大変*2なので、DialectというSQL方言を実装したクラス内にデータを持っておいている。

このデータがDataTypeMold、つまり「鋳型」である。本来のdeclarationはRDBMS内にあるのだが、Jiemamyでは便宜的に、そのdeclarationの(いわば)コピーを保持している、という状態だ。だから(コピーではあるけど)DataTypeMoldはある意味declarationである、というのは間違いない。

補足はこんなところかなー。

*1:可変長の文字列である、という定義

*2:実行時にRDBMSの実体が必要になってしまう

2009-08-20

[]アクティビティ可視化計画

http://twitter.com/jiemamy/

今まで、結構謎につつまれていたかもしれない。ということで、MLに投稿があったりコミットがあったりした時に、twitterでつぶやくbotの運用を始めました。

MLを購読するほどではなく、ゆる〜くJiemamyの活動をヲチしたい、という方にお勧めです。

botをチョイチョイと作ってくれたのは、我らがshin1ogawaさん。どうやらGAE/Jで動いているっぽい。さすがだ。コードも公開されているので、興味ある方は是非。

http://fisheye.jiemamy.org/browse/sandbox/jiemamy-feeds