Date:  Wed, 31 Jan 2007 16:56:53 +0900
Subject:  【オブジェクト倶楽部: 2007-04号】
X-Mail-Count: 00179

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.173 2007/01/31

■ I N D E X
┃
┣【Topics】「IPA未踏ソフトウェア創造事業成果報告会」のお知らせ
┣【プログラミング】Cayenneで始めるO/Rプログラミング[8]
┣【キーワード】知ってるようで分からないビジネスワード勉強会[34]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 「IPA未踏ソフトウェア創造事業成果報告会」のお知らせ
  〇 〇━━━━━━━━━━━━━ ━━・ 

IPA未踏ソフトウェア創造事業成果報告会が開催されます。
http://event.seasar.org/chiba20070224/
興味のある方、ぜひ参加されてはいかがでしょうか。

日程:2007年2月24日(土) 13:00 - 17:50
主催:千葉 滋氏
後援:日本IBM
   株式会社アークシステム
   特定非営利活動法人Seasarファウンデーション
会場:新宿パークタワー30階会議室
    http://www.shinjukuparktower.com/
定員:100名余(事前登録制)
費用:無料(懇親会除く)
お申込み方法:http://event.seasar.org/chiba20070224/ にて事前登録。
各プロジェクト:
  「メタプラグイン機構に基づくコンテンツ管理システム」
    横田  健彦(株式会社  アークシステム  ソリューション開発部)
    本間  宏崇(株式会社  アークシステム  ソリューション開発部)

  「Ruby 言語によるオープンソースWebコマースシステムの開発」
    二宗  崇(本名:赤木  崇)(株式会社  いい庭  取締役)

  「センサデータ集約システムに応える高性能DBMSの開発」
    川島  英之(慶應義塾大学理工学部  情報工学科  助手)

  「テストケースから擬似クラスを自動生成する「KikainekoMocker」の開発」
    伊尾木  将之(株式会社  日本IBM)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【プログラミング】Cayenneで始めるO/Rプログラミング[8]

この連載の前回分(第7回)が発行された日は、ちょうどマックワールドの日で
した。おおよその予想に反して、話題はiPhone一色でした。直後からiPhoneの
カットアウトがネット上で出回ったりしていたのですが、最近は携帯の待ち受
け画面やメニューなどを、iPhone風にカスタマイズする方法で盛り上がってい
ます。なにを隠そうボクも待ち受け画面とアイコンをiPhone風に変更しました。
メニューは、勝手メニューにできない機種らしく、断念しましたが、液晶面を
表にして折りたためば気分はiPhone!ということで、日本で発売されるまでは、
これで我慢するとします。というか日本で発売になるんですかね〜??

前回は、関連先を検索条件として指定する方法について、学びました。今回は
複合検索条件について、考えましょう。さっそく例題で解説します。データは
前回使ったものを、利用します[*1]。
シナリオは「"尾部 羅武"さんが借りている"紅"を含むビデオ」とします。検
索条件を整理すると以下のようになります。
・検索対象はビデオである
・ビデオを借りている人の名前が"尾部 羅武"である
・ビデオのタイトルに"紅"が含まれている

まずこの検索条件で、二つ目までを考えましょう。ここまでは前回までに学ん
だ内容で作成できます。

public class CompoundConditionsSearch {
      DataContext context = DataContext.createDataContext();
      public static void main(String[] args) throws IOException {
          CompoundConditionsSearch search = new CompoundConditionsSearch();
          search.main();
      }
      private void main() throws IOException {
          Expression exp = ExpressionFactory.matchExp(
                  Video.LENDING_ARRAY_PROPERTY +
                      "." + Lending.TO_MEMBER_PROPERTY +
                      "." + Member.NAME_PROPERTY,
                  "尾部 羅武");
          SelectQuery query = new SelectQuery(Video.class, exp);
          List<Video> list = context.performQuery(query);
          System.out.println("[タイトル]");
          for(Video video : list) {
              System.out.format("%s\n", video.getTitle());
          }
      }
}
このコードを実行すると、以下のような結果となります。

・・・省略
INFO  QueryLogger: SELECT DISTINCT t0.title, t0.id FROM video t0, lending t1, member t2 WHERE t0.id = t1.videoId AND t1.memberId = t2.id AND (t2.name = ?) [bind: '尾部 羅武'] - prepared in 31 ms.
・・・省略
[タイトル]
クロノクルセイド
マリア様がみてる「春」ファンディスク 1 紅薔薇
犬夜叉 紅蓮の蓬莱島

"尾部 羅武"さんが、3本のビデオを借りているのがわかると思います。
では三つ目の条件を追加してみましょう。SQL文を使ったことがある人なら、
AND条件をWHERE区に追加すれば良いという事がわかるでしょう。Cayenneを使っ
た場合もイメージは同じです。先ほどのソースを少し変更してみます。

      SelectQuery query = new SelectQuery(Video.class, exp);
      query.andQualifier(ExpressionFactory.likeExp(Video.TITLE_PROPERTY, "%紅%")); // ここ追加
      List<Video> list = context.performQuery(query);

では実行してみましょう。

・・・省略
INFO  QueryLogger: SELECT DISTINCT t0.title, t0.id FROM video t0, lending t1, member t2 WHERE t0.id = t1.videoId AND t1.memberId = t2.id AND ((t2.name = ?) AND (t0.title LIKE ?)) [bind: '尾部 羅武', '%紅%'] - prepared in 16 ms.
・・・省略
[タイトル]
マリア様がみてる「春」ファンディスク 1 紅薔薇
犬夜叉 紅蓮の蓬莱島

どうですか、紅を含むタイトルだけになりましたね。SelectQueryで作ったクエ
リに対して、andQualifierで条件を追加することができるのです。もちろんAND
条件以外にもOR条件を"いくつでも"追加することもできます。このようにCayenne
では、new SelectQuery()でクエリを初期化した後で、performQueryする前まで
に、クエリに対して様々な操作を書くことができます。代表的な例は以下のと
おりです。
・検索条件の追加(AND,OR)
・ソート順の追加、変更、削除
・重複結果をまとめる(DISTINCT)
・ページサイズ、フェッチサイズの指定

これらの機能は、JDBCでプログラミングをしていた人にも十分なもので、また
CayenneでJDBCやSQLを意識せずに作る人にとって役立つものです。
さらにCayenneでは、一風変わった特徴的な機能も持っています。ここまで紹介
したものはデータベースにアクセスする検索条件でしたが、検索結果のリスト
に対して、追加の検索条件を適用できるのです。先ほど追加したquery.andQualifier
を使わずに、同じ結果を得ることができます。さっそく見てみましょう。

     SelectQuery query = new SelectQuery(Video.class, exp);
//  query.andQualifier(ExpressionFactory.likeExp(Video.TITLE_PROPERTY, "%紅%"));   // コメント化
     List queryResults = context.performQuery(query);
     Expression titleExp = ExpressionFactory.likeExp(Video.TITLE_PROPERTY, "%紅%"); // ここと
     List<Video> list = titleExp.filterObjects(queryResults);                       // ここ
     System.out.println("[タイトル]");

まず最初の例のように、"尾部 羅武"さんが借りているビデオを検索します。
その結果から"紅"を含むものを抽出(filterObjects)します。
すると結果は、query.andQualifierの場合と同じようになります。

・・・省略
INFO  QueryLogger: SELECT DISTINCT t0.title, t0.id FROM video t0, lending t1, member t2 WHERE t0.id = t1.videoId AND t1.memberId = t2.id AND (t2.name = ?) [bind: '尾部 羅武'] - prepared in 31 ms.
INFO  QueryLogger: === returned 3 rows. - took 94 ms.
INFO  QueryLogger: +++ transaction committed.
[タイトル]
マリア様がみてる「春」ファンディスク 1 紅薔薇
犬夜叉 紅蓮の蓬莱島

SQL文では3行の結果が戻されていますが、フィルタリングされた結果、紅を含
む2行だけになります。つまりDBに対する検索も、検索結果をメモリ上で抽出す
るのも同じように条件を指定することができるのです。これって結構便利です
よね。
さぁ今回までの内容で、一般的なデータベース操作はほとんどできるでしょう。
しかし実際の業務で使用していると、どうしてもSQL文を書かなければならない
状況や、カスタムクエリを作りたくなったりします。次回は、このあたりを解
説したいと思っています。(きしだ)

[*1]:前回の内容を見ていない方は、以下のURLから「Cayenneで始めるO/Rプロ
     グラミング(7)」を参照ください。
     http://www.ObjectClub.jp/ml-arch/magazine/176.html
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E010-7&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E010-7&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E010-7&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【キーワード】知ってるようで分からないビジネスワード勉強会[34]
                - 無線LANコミュニティ

こんにちは、hiroshiです。最近は、1月にも関わらず暖かい日が続いています
が、皆さんいかがお過ごしでしょうか。正月に実家に帰った時には、全く雪が
無い不思議な光景を目にしました。去年、屋根の雪を落とした時には、家が埋
まってしまう位だったのにと、暖冬の影響を肌で感じてきました。前置きはこ
れくらいにして、本題に入りたいと思います。

最近、「アクセスポイント持ち寄り型コミュニティ」とか、「無線LANコミュニ
ティ」とかを目にすることがあります。内容を調べてみると、非常に心がくす
ぐられたので、ご紹介できればと考えてます。皆さんは、ご存知でしたでしょ
うか。

まずは、「アクセスポイント持ち寄り型コミュニティ」とは何なのでしょうか。
言葉の通り、アクセスポイントを持ち寄って、みんなで公開しあうことで、コ
ミュニティを形成して、将来的にはどこでも、誰でもネットに繋げるようにし
ちゃおうということです。調べていくと、このようなムーブメントは、2000年
くらいからいろいろな団体、企業がやっていたらしいのですが、今ひとつ流れ
に乗れなかったようです。ですが今はその頃とは違って、ブロードバンドと無
線LAN対応端末が広く浸透してきているため、普及の追い風となりそうです。

それでは、どんな仕組みなのでしょうか。今回、僕が興味を持った「FON」とい
うサービスをご紹介します。元々は、アルゼンチン出身の実業家がスペインで
起こした事業で、現在全世界で140カ国、6万箇所のアクセスポイントが存在し
ていて、日本では昨年の12月からサービスが開始されています。サービスに参
加したい人は、HPから会員登録をして専用のルータ(\1,980)を購入・設定す
れば、それで世界中のアクセスポイントを利用することができるようです。実
際に、アクセスポイントを公開するか、しないかは会員任せのようですが、ルー
タが格安なこと(一時期は無料配布をしていたらしい)は注目です。また、HP
からはFONMAPというものがあり、現在のアクセスポイントの状況が見れます。
東京を見たところ、非公開にしているアクセスポイントはあるにしろ、「12月
から始まったにしては、結構あるんだな」という印象です。ユーザーの種類に
も、いろいろあるみたいですが、詳細は割愛させて頂きます。

結構軽いノリで始められて、ユーザーのメリットが高いので、非常に好印象で
す。さっそく始めてみようかなと思っています。皆さんで、無線LANコミュニティ
を広めてみませんか。(hiroshi)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=D001-33&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=D001-33&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=D001-33&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━3 r d ■━
■
┗【アンケート】気になるシステム業界 ホントのところ

今週は「理想の上司、リーダー像は?」のホントのところ。この業界に関わら
ず、上司やリーダーに対する問題や悩みはつきものですね。また、自分がいざ
その立場になってみると思い描いていたようにはうまくいかなかったり。みな
さん、自分にとっての理想の上司、リーダーってどれが一番近いですか?

  ビシビシ叱って鍛えるタイプ。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=0
  たくさん褒めて伸ばすタイプ。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=1
  一見放置、でもいざというとき頼りになるタイプ。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=2
  すべて仕切ってグイグイ引っ張るタイプ。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=3
  コミュニケーション上手で、現場を盛り上げるタイプ。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=4
  ひたすら飲みニケーションタイプ。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=5
  一見頼りない、でもみんなのやる気を引き出すタイプ。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=6
  冷静沈着、とにかく頼れるタイプ。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=7
  新鮮なアイデアや気づき、刺激を投げかけるタイプ。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=8
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=139&choice=9
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「この業界で働くひとに求められる資質って?」の結果は公開中。
ぜひご覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol138/PlonePopoll_results2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。今週だけ上田さんに代わって、ひさびさに編集やっ
てます。先日、Developers Summit2007(http://www.seshop.com/event/dev/2007/)
の参加登録をしました。見たいセッションを選択していてふと気がついたので
すが、1年前参加したときに選択したセッションの内容と、明らかに興味の傾向
が変わっていました。この1年、自分がそんなに変化・成長した気があまり持て
ていなかっただけに、意外なところで変化の証を見つけることができて、ちょっ
とだけうれしいような、情けないような…。

さて、今年も恒例のオブラブカレンダーの公開を始めます。
今回は1月分と2月分をまとめて公開しちゃいます。ぜひ利用してくださいね。
http://www.ObjectClub.jp/special/index_html#calendar

今週の強引な一言
*** 百聞は一見にしかず(ことわざ)***
顧客にシステムのイメージをつかんでもらうのに、分厚い提案書を持参して、
相手が眠くなるような説明をひたすら行うよりも、何か動くものを少し見せて
触ってもらえれば、それで話は済んでしまったりしませんか。
(まにわ)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒http://www.ObjectClub.jp/community/object_ml/help/
〇 免責事項、過去の記事は   ⇒http://www.ObjectClub.jp/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://www.ObjectClub.jp/
■ 編集代表:平鍋  健児
Copyright (c)2003-2007 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.