Java EE勉強会 第21回(at 新宿某所)

ポジションペーパー 【こんな】Method【あります】

  • かっくん Class#getResource、Logger.global#info
  • ひがさん ClassLoader#getResource
  • manholeさん Class#cast…Tiger 1行の文字数減らせる
  • まこたんさん
  • でわさん
  • koichikさん
  • t-wadaさん Object#use(Class)…Groovy
  • 塚田さん(happieさん)
  • 鈴木さん getDeclearedMethod
  • 米澤さん StringBuilder、IF NOT…VB
  • 的場さん(matbatさん) String#split、org.apache.jakarta.commons.lang.StringUtils.join
  • shotさん hoge.getClass().cast(obj)←かぶった、StringBuilder…Tiger
  • taediumさん Arrays.equals
  • 星野さん
  • 上田さん javax.imageio.spi.ServiceRegistry
  • mopemopeさん function.toString()…JS
  • 大橋さん
  • ぬまがきさん(marrowのアニヲタな日記) proxyクラス
  • くすもとさん
  • とみおかさん くすもとさんの元同僚
  • せとあずささん 公認審判員 Throuable#Throuable(Throuable)、Boolean#valueOf(boolean)、javax.swing.table.TableColumn#setMinWidth(int)、java.lang.reflect.Array#newInstance(Class, int)
  • 吉田さん(EY-Office) ServletのdoPut、doDelete
  • hirataraさん stringコンストラクタ、string,intern()
  • もなじろうさん GRailsいじってる。MethodInvocation(メソッド名, パラメータ)
  • 大田さん(FFC) Arrays、Collectionsのメソッド
    • jgl 商用ライブラリ。STLのcollectionのjava版みたいな。foeachとか(by 獄長)
  • むろきさん(FFC

How to start up opem source project(ひがさん)

  • ネパールの国際ITカンファレンスでの発表
  • ネパール
    • 標高1000mくらい。超暑い。湿度98%。盆地。突然スコールが降る
    • 大きな都市は二つ。首都カトマンズ(300万〜100万人、登録されている人の数?)、ポカラ
    • 発展途上国、道が舗装されてない、信号がない、交差点では引いた人が負け
    • 排ガス規制ない。空気汚い。世界で一番空気を汚している。現地の人マスクしている
    • ポカラ、トレッキングのスタート地点。軽井沢に近い。観光客向け
    • 主要なビジネスは観光。次の産業の核を作ろうとしている。一番期待しているのがIT
    • ITのレベルは日本の10年前くらい。Webアプリの考え方があまりない。ほとんどクラサバ。VBが多い。一部DelphiJavaを知らない人が結構多い(半分くらい)。オープンソースは1/3くらいしか知らない
    • ようやくLAMPという言葉が入ってきた。でもどうしたらいいか、という段階
    • 今はオープンソースといえばLinux。まずはローカライズネパール語化が主な活動
    • DBはMySQLは一部では使っている。Oracleとかライセンスの考えがいい加減
  • シーサーはスフィンクスの親戚
  • S2ができた経緯
    • 2003年1月 S1 アプリケーション・サーバー
    • 2003年12月終わり頃に事件、S1の開発やめよう。全く違うアーキテクチャのプロダクトにしよう→DIコンテナ(その辺の事情はまこたんが知ってる)
    • 2004年3月25日 S2の最初のバージョン、Spring 1.0に合わせた
  • DL数
  • オープンソースとしての規模はアジアでは一番。世界でも有数。Springのコミッタは30人くらい(昨年、Rod来日時の情報)
  • ソースコードを書いている開発者自身が一番メリットを受けている
    • 見られるものはきれいに書きたいというモチベーション。ソースがわかりやすくきれいになる。コーディング能力が向上する
  • 他のOSSのコミッタにもメリット
    • そのまま使う。ソースを読んで参考に。健全な競争
  • 誰でも自由にソースコード取得できる
    • コストがかからない。気軽に試せる。ユーザー数が増える。数多くのフィードバックを受けられる(使われていてもフィードバック少ないと成長しているわけでない)
  • コミッタになることのメリット
    • 技術的なスキルが上がる。ソースコードを読んで書く
      • JavaDocプロジェクト、メリットある?→せとあずささん「ある」
    • コミュニケーション能力
      • オープンソースの開発者はとんがったイメージあるが、同じプロジェクト/ほかのプロジェクトの人と議論して仕様考えたり。コミュニケーション重要
    • リレーションシップ、知り合い、充実した人間関係
      • ひがさん自身知り合った人とお仕事すること多い
    • パブリシティ、知名度
      • 今の企業はエンジニアを評価する体制が整っていない。上司が評価。技術的なところを知らないラインのマネージャ。作ったものを見て、すごいのかたいしたことないのか判断できない。どうしようもないものでも、同じ時間働いてると同じ評価
        →よくない。といって急に上司は評価できるようにはならない
        →外から変える。勉強会に参加。OSS開発に参加。パブリックな場に出ていく。きっちりアピール。外の知名度上がっていけば、自然に会社の中の知名度も上がる。営業が他の会社に行ったときに、お客さんから「あなたの会社の誰々さんが…」ということで広まる
      • 会社の中だけでがんばって評価があがるというのは正直、難しい。Googleとか例外はあるが。いつか評価されるという甘いことはない。会社の中で評価されないとその人自体腐っていく。社会に貢献しつつ知名度を上げるのはいいこと
  • ファウンダであることのメリット
    • マネジメントのスキル
      • 重要なのはコミッタのモチベーションの管理。コミッタによりいいコードを書いてもらうために、いいモチベーションを持ってもらう。管理というと変だけど。「インテル経営の秘密」には中間層が部下のコントロールするのが生産性で重要、と書いてある
    • マーケティングのスキル
      • 古典的なモデル。よいコードを書いていれば評価される…オープンソース1.0。これからはユーザーが望むものを開発するのが重要。マーケットの分析が重要。ファウンダとしてだけではなく、プロダクトのリーダーにも必要
      • デブサミでの話。はてなキーワードを毎日チェック。意見を調べる。定期的にGoogleで検索。プロダクトについて書いている人の意見を拾う
    • 戦略を立てるスキル
      • どういう戦略を立てるかを常に考える
      • Seasarでいうと、5月EJB仕様リリース、同時にJPAも。それにどう対応するかという戦略。SeasarEJBオルタナティブと思われていた(Rodはwithout EJB 3とか言っている)
      • 二つの選択肢が考えられる。(1)EJB 3はダメ。DIのほうがOSSで鍛えられている。(2)標準にできる限り従いますよ
      • 未来が左右される重要な選択。Seasarが選んだのは後者。Seasar 2.4。DIコンテナとしての顔。EJB 3のアノテーションを解釈して動くこともできる。EJB 3モードみたいな感じ。
      • JSFEJB 3、JPAは仕様。実装は誰がやってもいい。ただし、誰がつくっても同じになる。同じ仕様に基づく限り。内部は違っても使う側からすれば同じようなものになる。
      • 差別化。そうでなければ、最初の人が勝つか、大きな会社が勝つか
      • ほっとくとJBossが勝つというのが妥当な見方
      • どうすればいいか。仕様はあるけど完璧じゃない。JSRはフィードバックそんなに受けられるわけではない。ある程度は使いやすいがある程度は使いづらい
        →より使いやすくしましょう。TeedaだったらレイアウトをHTMLでできる。あと、コンテナのホットデプロイ。リブート不要。LLが備えた特徴をJavaで生かす
      • というようなことを短期間で調査して決断しなければならない。ファウンダは結構たいへん
  • 立ち上げるときに考えるべきこと
    • コンセプト
      • ユーザーが最初に見るのはコンセプト
      • このコンセプトなら使おうか。人の気を引くものでなければそっぽを向かれる。S2では現場の人の作業をできるだけらくにしてあげたい
    • 名前
      • 適度に短いほうがいい。覚えやすい
      • リリース前にまずGoogleで検索。ヒット数が少ないほうがいい。ユーザーはわかんないことがあったらGoogleで検索する。汎用的な名前だと目的の結果にたどりつけない。あんまり言われていないことだけど重要
    • キャラクタ、マスコット
      • Seasarはデザイナさんに描いてもらった。TeedaKuinaはsuga画伯
    • リリースプラン
      • できる限り短いほうがいい。ユーザーのフィードバック早く反映できるとより早く次のリリースできる。加速できる。報告して次の日に修正。ユーザーにとっては短ければ短いほどいい。リリースはあとにしがちだけど、頻繁なほうがユーザーにメリット
    • ユーザーをテスタ扱いするな
      • ユーザーをテスタと勘違いしている開発者いる。テスト十分じゃないけどリリースするからテストしてね、とか。テストは開発者が書くのが堅い。お客さんはテスタじゃなくて有意義なフィードバックをくれるひと
    • ブログ
      • MLがメジャーだけど、敷居が高いというイメージ。参加することの敷居とか、メール出したときにぼろくそに誰かに叩かれないかとか(MLで勝手なこと言っていいという意味ではない)。
    • イベント
      • オープンソースは口コミのマーケティング。ブログなどを通じて徐々に。そのきっかけとしてイベント重要。からさわぎは東京、沖縄、福岡、大阪の4カ所でやった
    • コミッタ
      • プロダクトの競争力高めるにはいいコミッタ必要。いかに確保するか
  • Open Source 1.0
    • 開発者は作りたいものを作る
    • ML。クローズドな意見の吸い上げ
    • コミッタが参加してくれるのを待ってる
  • Open Source 2.0
    • ユーザーがほしいものを作る
      • ある商品をあるメーカーが作るとする。自分たちが作りたいから作るというメーカーいない。ユーザーが何を求めているかを市場調査して企画を練っている。売るために必要。今のオープンソースはそうした努力をしていない。今後はメーカーと同じような努力が必要
    • ブログ。不特定多数の意見。フィードバックが多くなる。より多くの人の意見を採り入れる
    • コミッタを募集する。待ってちゃダメ。優秀な人たちを積極的にリクルーティング
      • 金は重要(by 獄長)

Pro EJB 3読書会 第1回(by shotさん)

  • JavaのPersistence戦略の歴史
    • JDBCの話からいきなり獄長がコアな話を。ODBCとか
    • WASでEJBを使(ry
    • 複雑なEJB→シンプルなEJB 3
    • JDO。ベンダーがOODBを使ってもらうために作った。優れているらしいがよくわからない
  • なぜまた別の標準?
    • プロダクト(TopLinkとかHibernateとか)のバージョンが上がると互換性なくなるかもしれんしー
  • 理想のO/Rマッパー(5ページ)
    • テーブルじゃなくてオブジェクト
    • 一見さんお断り?。理解してない人のためのものじゃなくて、理解している人が便利に使うもの
    • ドメインモデルを侵害しちゃダメ。意識して使わなきゃいけないけど、ドメインモデルにスーパークラスを押しつけるようなこともしない
    • 既存DBへの対応。DBありきに対応する
    • やりすぎいくない。軽量にしてやるべきことだけをやる
      • ひがさん「リンダが来日してたときにこのあたりの話をしてた。全ての仕様をマージしようとすると大変。JDO取り込んでなくて、最初はTopLinkHibernateのサブセット→フィードバック受ける戦略」獄長「ちょっとサブセット過ぎ」
    • Remoteとかいらない
  • インピーダンスミスマッチの話(説明略)
  • メリット1
  • メリット2
    • モバイル
    • 設定簡単。Configuration by Exception
    • テストが容易。コンテナ外でも可。トランザクションからはずれたところでもオブジェクトして存在できる
      • JPAは軽いんで、テストケースの中でJPAちょっと使ってもいいかも(by 獄長)
  • 以下2章
  • Entity
    • オブジェクトがエンティティとして扱われるには?永続性、一意、トランザクショナル、適切な粒度(Stringとかじゃない)
      • 一意。パーシステンスコンテキストの中で一意を保証
    • メタデータ(いずれにせよConfiguration by Exception)
    • Entityの作成。アノテーション
      • @Entity。クラス名がエンティティ名に。エンティティ名がテーブル名に。nameでエンティティ名を指定(JPQLでfromに書くもの)。テーブル名を変えるのが@Table
      • @id
  • Entity Manager
    • Persistence unit。永続化の個別の設定
      • クラスを自動で読み込んでくれるのは仕様じゃなくてコンテナが勝手にやってるだけらしい
      • TopLink JPAのソースはGlassfishの中に
    • 永続コンテキスト
      • DELETEしたあとSELECTできる?(獄長&taediumさん)
    • Entityに対する操作
      • merge(説明は141ページ)は使うな、というのが最近の流れ。トランザクションの外での更新。idでfindしてsetするのが堅い(獄長&ひがさん)
    • JPQL
  • まとめ
    • POJOを使って簡単に永続化
      • @Entity
      • Configuration by Exception
      • Entity Managerが各Entityの永続化の仲介役
    • 永続コンテキストごとに設定を保持できる
      • どのEntityが対象なのか
      • 接続先のDB
  • mergeでSELECT走る?O/Rマッパーは毎回SELECTするのが基本。バルクアップデートの話、JPQLは貧弱
  • 次回は3章は飛ばして4章から。担当はひがさん
  • JPAの勉強におすすめ処理系はJBossのEmbeddable EJB 3かS2Hibernate JPA。このメンバーならおすすめは後者(質問:星野さん、回答:ひがさん)

その他

  • セレブ、ディスプレイアダプタ、ゲットならず
  • 某氏が某社をやめたと聞いてびっくり
  • パワポをめくるときに緊張して矢印キーをダブルクリックしてしまうクセは直したい
  • 次回は8月26日(土) 追記 LL Ringの日でした。orz

飲み会

  • t-wadaさんの自動運転について
  • 獄長「芸能界引退」「普通の男の子に戻ります」。昔の話。どういう文脈で出たのか思い出せない
  • モー娘。のメンバーってわかんないよねって話のときに「ハロモニ見てればわかるよ」とひがさんが発言して一堂驚愕
  • 元ポエムの人は職場であんまりしゃべってばっかりで怒られたらしい
  • ガリ勉とかメガネザルとか(T_T)
  • mopemopeさんとvestigeさんのめがね
  • パダワンの秘密。ファンを悲しませないために