Personal tools
You are here: Home ブログ 井上
« October 2010 »
Su Mo Tu We Th Fr Sa
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

JavaOne/Oracle OpenWorldレポート - JavaOne全般編 -

2010/9/19(日)から9/23(木)までJavaOne/Oracle OpenWorld2010に参加したレポートの続きです。繰り返しになりますが同じ但し書きを載せます。

客観的で公平な記事はプロのジャーナリストに任せて、このブログでは偏向した意見や個人的な感想を織り交ぜて書きます。なお、英語力と記憶力のため間違いがあるかもしれません。間違いを見つけたら指摘してください。

今日はJavaOne全般の印象をレポートします。

サンフランシスコに着いて最初のうちは気にならなかったのですが、徐々に気になりだしたのが、JavaOneが僻地に追いやられている事実でした。サンフランシスコの事情を知る人には会場の配置から自明だったようですが、事情を知らないので最初はわかりませんでした。

日本を発つ前、JavaOneはサンフランシスコのどこでやるのですかと聞かれて、Moscone Center(以下Moscone)です、と答えていたのですが、結論から言えば、Mosconeで行われていたのはOracle OpenWorldでした。JavaOneの場所は少し離れたヒルトンホテル含む3つのホテルです。この3つのホテルの会場をZoneと呼んでいました。

Mosconeはコンベンションセンターです。日本で東京ビッグサイトや幕張メッセの巨大さを見ているので特に驚く巨大さではないですが(Moscone North、South、Westと3つにわかれているのでむしろこじんまり感じるぐらいでした)、キーノートが行われたホールの巨大さは驚異の広さでした。もっとも日本のコンベンションセンターでも同じ広さの会場は作れるかもしれません。単にあの広さを一杯にするほど聴衆を集められる話し手がいないだけだと思います。

JavaOneのキーノートなどはMosconeで行われましたが、基本的にはここはOracle OpenWorldの場所で、JavaOneは離れたZoneで行われました。場所を下記の地図で説明します。

Mosconeから4th St.を北上してMarket St.にぶつかったところで西に向かうEllis St.に入ります。Ellis St.とMason St.の交差した場所のHilton Hotel、Nikko Hotel、Park55 Hotelの3ホテルがJavaOne会場のZoneです。ちなみにMarket St.とMisson St.のふたつがサンフランシスコの大通りです。Zoneの辺りは特段寂れてはいませんが、Hiltonより更に西に向かうと結構寂れています。最初思いませんでしたが、何度かMosconeとZoneを行き来するうちに、あれ、もしかしてJavaOneの会場は僻地?という気分になってきました。

Mosconeおよび近くのYerba Buena Gardensが中心地で、きらびやかなことはすべてここでありました。Mosconeの様子は以下の感じです。真っ赤です。JavaOneではなくOracle OpenWorldです。

/Members/inoue/images/javaone/moscone.jpg

今回の滞在で80%ぐらいの時間はZoneにいました。キーノートやOracle OpenWorldの展示会などのためにMosconeに行きます。MosconeとZoneの間の一般道に以下のような矢印があって、みんな踏みつけながら通り過ぎて行きます。ここを何度か行き来しました。

/Members/inoue/images/javaone/arrow.jpg

JavaOneのセッションですが、大きなキーノートとジェネラルセッションは原則4つありました。これらは大きなホールで聴衆も1000人以上です。他に聴衆が数10人から数100人オーダーの個別セッション(原則は1時間。ハンズオン的なセッションはもう少し長め)は月曜から木曜までの4日間、朝から晩までみっちりあります。同じ時間帯に10数個のセッションが平行してあります。合計がいくつかは数える気がしません。一番セッションが多い火曜日など朝8時から始まり、最後のセッション終了は夜9時45分です。どれだけ外人タフなんだと、という感じです。

夜に近いセッションほどBOF(Birds Of Feather)が増えディープになるのかもしれませんが、あまり夜遅いセッションは参加しませんでした。このせいでもしかしたらJavaOneの楽しみを逃している可能性もあります。午前中の比較的公式のジェネラルセッションにでると、流石に夜遅くの非公式系までずっと残るのは体力的に無理でした。

夜に近いセッションは聴衆の極端に少ないのもありました。火曜の18時からあった「Expression Language: Community Feedback and Future Development」の聴衆の数は20人を切っていました。内容もつまらなかったです。同時間帯で人が大勢いるセッションもあったので、スピーカーからつまらない内容であることがわかる人にはわかっていたのかもしれません。

以下、キーノートとジェネラルセッションの感想です。

月曜の午前: JDK7 and Java SE 7 (Hilton)
Mark Reinhold氏がJavaコア言語について技術的な話をしました。Javaコア言語の話は別レポートにします。
月曜の午後: JavaOne Keynote (Moscone)
オラクルのVPがJavaの利用の広がりなど一般的な話をしました。オラクルがこれからもJavaにコミットしていくことをビジネスライクに語りました。ゲストとしてApolo Anton Ohno氏が登場しましたが、知らないので何の感慨もありません。残念。
火曜の午後: JavaOne Technical General Session (Hilton)
Javaコア言語についてMark Reinhold氏が再び登場しました。基本的には月曜午前の話と同じでした。Java EEについてRoberto Chinnici氏が話しました。Java EE6の話とJava EE7に向けての話を少ししました。Java EEについては別のレポートにします。Java MEについてGreg Bollella氏が話しました。Java MEはあまり興味がなくてきちんと聞いていません。
木曜の午前: JavaOne Keynote: The Java Frontier (Moscone)
数人がスピーカーを引き継ぐアメリカン(?)なスタイルのキーノートでした。最初にRay Kurzweilがスピーカーとして登場しました。いわゆる大物登場の枠のようです。どう見てもプレゼン資料は使いまわしです。技術の進歩の話をしていましたが、資料はJavaとまったく無関係です。時折、強引にJavaと結びつけて話していました。実は話についていけませんでしたが、たぶんありがたい話だったのだと思います。月曜のKeynoteよりJavaFXやJava ME系の話が多い印象です。JavaMEの組み込み系があるとショーとして華やかになります。火曜にも登場したGreg Bollella氏登場で、スマートペンやスマートカーの紹介がありました。スマートペンのLiveScribe、会場のみなさんにプレゼントします、というアナウンスを待っていたのですが、JavaOneで買うと15%オフ、だけでがっくりです。JavaFXは...どうでもいいですね。盛り上がっていたと言えるのか、よくわからない雰囲気でしたが、JavaFXの割には頑張っている、という印象以外はありません。

JavaFXに関しては別レポートを書く気はないのでここに書きます。JavaFXは端末の画面周りの座を取りたいのだと思いますが、今の流れを見ていると、ここの本命技術はHTML5でしょう。HTML5(プラス暗黙にJavaScript)がGUI記述言語として王座にしばらく君臨する気がします。HTML5がGUI記述言語として優れているのか微妙ですが、HTML5の優位は動かない気がします。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/javaone2010-java/tbping

JavaOne/Oracle OpenWorldレポート - Javaコア言語編 -

2010/9/19(日)から9/23(木)までJavaOne/Oracle OpenWorld2010に参加したレポートの続きです。繰り返しになりますが同じ但し書きを載せます。

客観的で公平な記事はプロのジャーナリストに任せて、このブログでは偏向した意見や個人的な感想を織り交ぜて書きます。なお、英語力と記憶力のため間違いがあるかもしれません。間違いを見つけたら指摘してください。

今日はJavaOneコア言語をレポートします。

主にMark Reinhold氏の講演とProject Coinのセッションが元ネタです。

最初にみんな気になるJava7の話です。Java7は来年(2011年の中期)リリースされるようです。今まで狼少年状態だったので懐疑的な見方もあるかもしれませんが、たぶん今回は出そうです。ソフトウェア開発に何があるかわからないので2011年末ぐらいまで延びる可能性はありますが流石にJava7が2012年まで延びることはないと思います。こう思える理由は、Java7は大きな言語仕様の変更をしないリリースにして、大きな言語機能の変更をJava8にまわすからです。Mark Reinhold氏の言葉を借りれば、過去のJavaのリリースは大きく変わったrevolutionと小さな変更のevolutionリリースがあり、Java7はevolutionリリース、Java8はrevolutionリリース、という位置づけです。この方針なので、Java7は難しい機能を先送りしてリリース時期を守る、というリリース管理ができます。一方、Java8は2012年末リリース予定とのことですが、こちらが守られる保証はありません。

Java8にまわされる大きな機能はProject LambdaとProject Jigsawです。Project LambdaはいわゆるJavaにクロージャ導入と散々言われてきたあれです。後者はパッケージより大きな単位のモジュールと呼ばれる機能のことです。

Project Lambdaの背景は、C#にdelegationがあるから、という日和った理由ではなく、マルチコア時代での並列処理を効率化するため、と説明していました。Java8では実際の構文が変わる可能性もあるので雰囲気だけ書きます。

students.filter(#{ s -> s.gradYear == 2010 })
        .map(#{ s -> s.score })
        .max();

匿名クラスのコード例からここまでコードが簡易になる流れをプレゼンで紹介していました。結局、これが最終形態なのか確信がないせいか、会場も大盛り上がり、という感じはありませんでした。

むしろProject Jigsawの方が盛り上がったぐらいです。classpath地獄になっている状況をモジュールで解決します。-classpathがスクリーンに表示され×印で-classpath否定の画面になると会場から拍手が起きました(火曜のMark Reinhold氏の講演)。

Project Jigsawは原則としてMavenがやっていることをコア言語に取り込むスタンスに見えます。実際、Mavenの.pomファイルからJigsawのモジュールに変換する方法も提供されるようです。Maven側の人から見てProject Jigsawがどういう存在なのかは不明です。自分たちの存在意義と対立する憎むべきものなのか、あるいは自分たちの正しさが認められた誇るべき成果なのか、あるいはJigsawはMavenのカバー範囲のほんの小さな一部分に過ぎず些細な存在かもしれません。知っている人がいたら教えてください。

月曜のMark Reinhold氏の講演ではプロパティ機能も紹介がありました。キーワードpropertyでgetter、setter地獄がなくなるくだりでも会場から拍手が起きました。この機能がJava7なのかJava8なのか聞き逃しました。たぶんJava8だと思います。

Mark Reinhold氏の講演では、JRockit(BEA由来のJVM)とHotSpot JVM(ご存知Sun由来のJVM)の統合の話もありました。微妙に言っていることがよくわからなかったので、後でオラクルのブースでJVM統合の件を聞いてみました。ブースに担当者がふたりいたのですが、ひとりは力強く統合すると言い切り、2年ぐらいかかるんじゃない、とのことでした。もうひとりは懐疑的な見方を示し、かつJRockitの一部機能は有償で提供するかも、と言っていました。異なるコードベースの統合が生易しいものでないことは現場に近ければ近いほど実感できるはずです。結局、ふたつのJVMの統合に関しては、公式見解は統合ですが、現場は困惑気味という辺りが実状な気がします。ふたつのJVMを統合して両者の良いところ取りをすれば最高のJVMができる、なんて神話を信じる人はいないですよね。

Java7の漸進的な進化はProject Coinと呼ばれる成果がベースです。以下のサイトがそうです。

Project Coinの紹介、つまりJava7に入りそうな機能の紹介をします。

Improved Type Inference for Generic Instance Creation

型推論でジェネリック型の型引数を省略できる機能です。具体例を見ると一目瞭然です。

Java6以前で

List<String> list = new ArrayList<String>();

と書いていたのが

List<String> list = new ArrayList<>();

と書けます。<>からdiamondと呼ばれています。

上の例だと少し嬉しい程度にしか見えませんが(Stringの記述をひとつ省略できるだけ)、次ぐらいになるとだいぶ嬉しい感じです。

Map<String, List<String>> map = new HashMap<String, List<String>>();
が
Map<String, List<String>> map = new HashMap<>();
と書けます

型推論に関連してProject Coinの個別セッションで少し面白い話がありました。

Java6で次のように書けます。

List<? extends Number> list = new ArrayList<Integer>();

次のようにも書けます。

List<? extends Number> list = new ArrayList<Number>();

diamond表記にすると次になります。

List<? extends Number> list = new ArrayList<>();

この時、ArrayList<Number>とArrayList<Integer>のどっちに推論すべきか、という問いです。

代入式の左辺だけ見て判断するsimple推論と実引数も合わせて見るcomplex推論のふたつを挙げて、前者だとArrayList<Number>、後者だとArrayList<Integer>になる、と例を挙げていました。具体的にどんなスライドの内容だったか忘れました。スライド見ている時はなるほどと思う内容でしたが、思い出せません。

スライドと違っている可能性はありますが、強引に思いつけるコード例は以下のような感じです。simple推論で代入先の変数型だけ見るとNumber、コンストラクタの実引数も見るcomplex推論だとInteger、となります。

List<? extends Number> list = new ArrayList<>(Arrays.asList(1,2));

どちらの型推論が正解というわけでもなく、既存のコードで両方の戦略で型推論させてどちらが良いか比較したという話です。結局、どちらも90%ぐらいOKで甲乙つけがたいという感じでした。

ここから先が自分の英語力の無さが非常に情けないのですが、たぶん最終的にcomplex推論にした、と言ったと思うのですがいまいち聞き取りに自信がありません。

Automatic Resource Management

例外が発生した時に確実にリソース解放処理を走らせるため、finally節にリソース解放処理を書くイディオムがあります。Javaの中では悪くないイディオムだと思っていましたが、解放処理自体で発生する例外まで考えると、実は意外な落とし穴があります。

try-finallyの入れ子がどうなるかは次を見てください。

上記ページから引用ですが、Project Coinで(つまり問題なければJava7で)次のように書けるようになります。

try (InputStream in = new FileInputStream(src);
     OutputStream out = new FileOutputStream(dest)) {
  省略
}

try文を抜けるとInputStreamとOutputStreamのリソース解放処理(close処理)が走ります。

これがうまく働くにはストリームクラスがAutoClosableインターフェースを実装している必要があります。

素晴らしい、Java7で一番うれしい機能だと、と聞いていた時は興奮しました。

が、日本に戻って冷静になってみると、興奮するほど素晴らしいのか微妙になってきました。何が気になるかと言うと、過去の遺産を考えると、AutoClosableインターフェースを実装しているクラスばかりではない事実があるからです。そうすると、上記構文(なんと呼べばいいのかわからないのでAutoClosable構文と呼びます)と従来のfinallyイディオムを使いわける必要がでてきそうです。AutoClosableがあるかどうかで書き方を変えるのは、考えることが増える気がします。

こんなことを気にして書き方を変えるぐらいなら、一貫して書けるC++のRAIIイディオムの方がマシに見えてきます。

まだよくわかっていない部分もあるので何かを見逃している可能性もあります。

Strings in switch

switch-case文のcaseの定数式に文字列を書ける説明がありました。地味に嬉しいと言うか、できてみるとなぜ今までできなかったのかという気にすらなります。今まではCの呪縛でしょうか。

具体例は http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000001.html を見てください。

Improved Exception Handling for Java

try {
  省略
} catch (FooException ex) {
  省略
} catch (BarException ex) {
  省略
}

try {
  省略
} catch (FooException | BarException ex) {
  省略
}

と書ける例外のmulti-catchの説明もありました。

more precise rethrowというお題目での説明もあったのですが、聞き取れず...

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/javaone2010-javacore/tbping

JavaOne/Oracle OpenWorldレポート - 戦利品と展示会編 -

2010/9/19(日)から9/23(木)までJavaOne/Oracle OpenWorld2010に参加しました。軽い周辺事情のレポートです。

戦利品の写真です。

/Members/inoue/images/javaone/shirts.jpg

Tシャツ6枚、リュック、バッグ、水筒、ぬいぐるみ2体、ボール、USBメモリです。もらえるモノはなんでももらおうと思っていたら、帰りの荷物が重くなりすぎて困りました。

写真の真ん中の輪ゴムで止めてあるTシャツはJavaOne恒例のTシャツ投げを見事キャッチしたものです。飛んでくるTシャツをダイレクトキャッチしていれば格好良かったのですが、実際は誰かの手に当たって下に落ちたTシャツを素早く拾ったものです。パワーと高さに勝る外国人に対して、器用さとすばしっこさで勝負したイチローばりです(ウソ)。

展示会場(Exhibition)の広さは意外に小さい気がしました。オラクル1社開催と考えれば大きいのかもしれませんが、日本の幕張メッセや東京ビッグサイトなどの大規模イベントを見慣れているとそれほどとも感じませんでした。

Oracle Worldの展示会場はまだマシです。Moscone SouthとMoscone Westのふたつの会場で、素早く見て回るなら双方1時間ずつぐらい、ゆっくり見て回ればそれぞれ2時間ずつぐらいの規模感です。悲しいのがJavaOneの展示会場です。Hilton Hotelの1室で、10分ですべて見て回れるぐらいの規模です。別の記事で書きましたが、Oracle Worldの世界の中心感とJavaOneの僻地感は至る所に感じられました。JavaOneにあるGame Zoneのピンボールマシンが、JavaOneらしい遊び心あふれるモノのはずが、逆に物悲しい雰囲気すら感じました。

そんなわけでもっぱら展示会場はOracle Worldの話になります。

外国人に負けてはいけないと思い

/Members/inoue/images/javaone/golf.jpg

/Members/inoue/images/javaone/golf2.jpg

に挑戦したのですが、ことごとくダメでした。英語で話しかけられるかもしれないプレッシャーが手元を狂わせました。世界の壁を感じた一瞬です(ウソ)。

戦利品の写真の上に写っている白いかわいくないぬいぐるみはTreasure Islandで手にいれました。水曜の夜7:30から夜12:00までTreasure Islandでイベントがありました。Treasure Islandはサンフランシスコとオークランドの間にある島です。そこの遊園地を貸し切り、コンサートがありました。遊園地の様子は次のような感じです。

/Members/inoue/images/javaone/park.jpg

ハンマーを打ち下ろして重りがどれだけ高く上がったかを競ういかにもアメリカンなゲームなどがありました(ゲームの名前は知りません)。アメフト河村選手を肩車でもしそうな大男たちが力いっぱいハンマーを打ち下ろしています。当然ながら、そんなゲームに無謀な勝負は挑みません。勝てそうなゲームを選んで挑戦します。ボールを投げて標的を倒すという実に他愛のないゲームでゲットしたのが白いかわいくないぬいぐるみです。

モグラ叩きも勝てると思い挑戦しました。すべてのモグラに反応して、ひとつ当たり3、4回は叩いたので、これは間違いなく勝った(10人同時プレイして一番の人が景品をもらう)と思いましたが、トップではありませんでした。世界の壁を感じた一瞬です(ウソ)。

同会場でライブコンサートがありました。出演アーティストは以下のとおりです。

  • The Black Eyed Peas
  • Don Henley
  • Berlin
  • Steve Miller Band
  • The English Beat
  • Montgomery Gentry

後で小松さんに聞いたらThe Black Eyed Peasは今大人気で、Oracleは金持っているな、という感想でしたが、肝心のぼくはまったく価値がわからず、価値のわかる人にチケットを売ってあげたかったぐらいです。ちなみに以下の写真はThe Black Eyed Peasではありません。

/Members/inoue/images/javaone/live.jpg

日本に戻って社内でThe Black Eyed Peasを知っている人を探したら4人いました。サンプリングから推測してアリエル社内では10%ぐらいの知名度だと思います。

JavaOne/Oracle Worldの5日の期間中、Treasure Islnadのイベントを含め4日は夜にパーティがありました。日曜夜のWelcome Reception、月曜夜のOTN Night、水曜夜のOracle Appreciation Event(Treasure Islnad)、最終木曜のIt's a Wrap!の4回です。ただ食事の内容は日本のパーティを思い浮かべるとがっかりします。ビールとワインは飲み放題なのでアルコールが好きな人には良いかもしれません。

まだJavaOneについて書きたいことは色々ありますが、急速に失われていく記憶との戦いが続きます。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/javaone2010-misc/tbping

Re:JavaOne/Oracle OpenWorldレポート - 戦利品と展示会編 -

Posted by inoue at 2010-10-19 01:50
JJUGで知った驚きの事実。Treasure Islandの観覧車や絶叫マシンは普段からあるものと思っていましたが普段はないようです。この日のために、Oracleが運び込んだとのことです。

Cloudforce 2010レポート

JavaOne/Oracle OpenWorldレポートが書き途中ですが、Cloudforce 2010に行ってきたので割り込みでCloudforceのレポートを書きます。

マーク・ベニオフがまた日本に来ました。今回、マーク・ベニオフの芸達者ぶりが目立ちました。芸達者と言ってもモノマネをしたりするわけではありません。日本人に好印象を与える技術です。

今まで、マーク・ベニオフは今回ほどスピーチの中に日本語をまぜていなかったと思います。今回ほど深々とお辞儀をしていなかった気がします。日本語を一所懸命に話したり年配の日本人に深々とお辞儀をする外国人が日本人に受けることを知った上での計算高さを感じました。サンフランシスコで王様ラリー・エリソンを見てきたので余計そう思うのもしれません。師匠を反面教師にして、尊大キャラは良くないと判断したのでしょう。もっとも、今までのマーク・ベニオフは尊大キャラでもなかったですが。

いよいよと言うか遂にと言うか、Lotus Notesからの移行の話が徐々にsalesforce.com側から出始めました。chatterの登場で予想どおりの展開ではありますが、ビジネスに関わる微妙な話題なので多くは書きません。

展示会のブースに某SIerがいたので少し話を聞きました。最近のsalesforce.comの導入で、Lotus Notesやサイボウズからの移行案件があると聞きました。しかし実際にグループウェアの機能を期待するとギャップがあるようです。社名は出せませんが率直な感想を聞けて良かったです。

グループウェアの観点で見ると、salesforce.comもまたアメリカと日本の文化ギャップを持っています。これはLotus NotesもマイクロソフトSharePointもGoogle Appsも全部同じです。何が文化ギャップかと言うのは半分飯のタネなので書きませんが、IBM(Lotus)やマイクロソフトの日本法人がNotesやSharePointに日本向けに出している拡張機能を見ると何かはわかります。一例を挙げると会議室予約があります。社員が個室を持ち、ちょっとしたミーティングなら誰かの部屋で議論でき、大勢で集まる必要がある偉い上層部には専用会議室があり、そこを誰かと取り合うこともない環境で働いていれば、数少ない会議室を早い者勝ちで取り合う機能がグループウェアの大事な機能だとは想像もできません。まあ、文化ギャップとはそういうものです。

ただ、もしかしたら対Lotus Notesを真剣に取り組んでいるのは日本だけかもしれません。サンフランシスコのJavaOne/Oracle OpenWorldで、NoSQLのセッションを聞いたのですが、スピーカからこんな発言がありました。

「NoSQLはbuzz wordで、最近はなんでもNoSQLです。Lotus NotesがNoSQLと言われるぐらいです」

スピーカは笑いをとるために言っています。会場からも笑いが起きていました。Lotus NotesはNoSQLです、がアメリカでも受けるギャグなんだ、という思いと同時に、既にLotus Notesがまじめに向き合う対象でなくなっている雰囲気を感じました。日本ではLotus Notes移行はまじめな話題ですが、近いうちに、まだそんなこと言っているの?、というような話題になりそうです。

話を変えます。

salesforce.comのデータベース周りを語る技術セッションがありました。データの持ち方のアーキテクチャの話などがありました。基本は下記の内容の話題でした(もう少し軽めの説明)。

前々からsalesforce.comがアクセス制御のデータをどう持っているかに疑問がありました。セッションの中では軽く流されたので後で個別に聞いてみました。

以下のようにアクセス制御のデータを管理しているようです。

  • ホワイトリスト的に、ユーザとそのユーザが読めるドキュメントの対応表を持つ(簡略化するとユーザIDのカラムとドキュメントIDのカラムのテーブル)
  • public(全員が読めるドキュメントの意味?)なドキュメントは上記の対応表に持たない
  • private(限定したユーザだけ読めるドキュメントの意味?)なドキュメントは上記の対応表に持たない

原則はユーザをキーにした、読めるドキュメントのホワイトリスト管理です。全員が読めるドキュメントはホワイトリストに入れるとムダなので別管理のようです(これは普通に納得)。privateドキュメントの部分は実装寄りの工夫かもしれません。ドキュメントに紐づくユーザ数が少なければ情報をドキュメント側に持たせる最適化のイメージでしょうか。

ホワイトリスト管理の疑問は、対応表のレコード数が膨大になりそうな点です。実際、膨大だというのが回答でした。more than billion records?に対する回答はyesでしたが、よく考えるとこんなくだらない質問ではなく、how many records?と聞けばよかったです。

ホワイトリスト管理のもうひとつの疑問はアクセス範囲の変更時に、対応表のinsert/deleteが大量に発生しそうなことです。これに対する回答はバッチ的に非同期で処理する、というものでした。つまりアクセス範囲の変更の反映には遅延があります。どのぐらいの遅延があるのか聞きましたが、モノによっては数時間とのことです。数分ならともかく数時間は予想以上の長さの遅延です。

対応表はOracleのテーブルだと思いこんで質問していましたが、別のタイプのストレージの可能性もあることに後で思い至りました。プレゼンの中で以下の4つのタイプのストレージを使い分けている、と話していたので、3番目の可能性もあります。

  • 永続化に信頼度が必要なデータはOracle RAC
  • 添付ファイル用ストレージ
  • 永続化にそれほど信頼性が必要のないデータ用ストレージ(cursor storageと呼んでいました)
  • コールドデータ(ほとんど使われなくなったデータ)用ストレージ

アクセス制御データをホワイトリスト的に持つ手法は考えなくてもないのですが、スケールしないかと思っていました。ありなのかもしれません。実用を考えると、コールドデータの管理とあわせて色々と工夫は必要そうです。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/cloudforce2010/tbping

Re:Cloudforce 2010レポート

Posted by inoue at 2010-10-07 21:26
元ネタに近いプレゼン資料です。

http://www.salesforce.com/dreamforce/DF09/pdfs/BKSP003_Weissman.pdf

クラウド時代に必要なスケーラビリティには、今までにない魔法のような技術が必要だと思っている人は一度目を通すことを勧めます。魔法ではなく地道な改善の積み重ねが重要であることがうかがえます。

不在でも存在感を示すfacebook

昨日のCloudforceでマーク・ベニオフがfacebookの使いやすさをビジネスソフトの世界に持ち込むと意気込みました。

facebookへの言及はChatter発表以後、何度も口にしています。今回、更に勢いが強まった印象です。マーク・ベニオフ曰く、salesforce.comの初期はamazon.comの使いやすさをビジネスソフトに持ち込む目標で始めたと言います(これは著書でも書いています)。時代は変わり、amazon.comの使い勝手はもう古く、今はfacebookだと言います。

マーク・ベニオフだけであれば、Chatterがfacebook及びtwitterのパクリだと言う批判に対する先制攻撃と流してもいいのですが、ラリー・エリソンもfacebookに言及するとなると少し雲行きが変わります。

サンフランシスコのOracle OpenWorld2010でラリー・エリソンがスピーチに時間を多く割いたのは、Exalogic(http://dev.ariel-networks.com/Members/inoue/javaone2010-ellison/view)とFusionでした。

Fusion周辺と言うかERP周辺の動向に過去、個人的にあまり関心を払っていませんでした。Webを探すと次のような、5年前にFusion開発をぶち上げた時のニュース記事が見つかります。

ラリー・エリソンがスピーチの中で「(Fusionのリリースまで)長かった、開発に5年もかかった」と語っていました。ソフトウェア開発手法の観点で良いか悪いかは別として、5年間リリースの無い開発期間は確かに長いです。おそらく現場では逃げた人も大勢いる気もします。それでも力づくでモノにしてしまうのは、ある種のエンジニアリングの手法が確立しているのでしょう。もっとも、そもそもOracle E-Business Suite(EBS)、PeopleSoft、Siebel、JD Edwardsと4つも同種のERP製品を社内に抱え込んでいるのがおかしいじゃないか、という見方もありますが。

Fusionを紹介する中で、facebookのようなソーシャル機能、facebookのようなUI、という言葉がラリー・エリソンの口からでました。そんなにfacebookが気になるのか、というのが率直な感想です。

もうひとつOracle OpenWorld2010でfacebookの影響を感じたのがマイケル・デルのスピーチの時でした。スピーチの中でゲストとして壇上に上がったのが、ZyngaのCEOでした。マイケル・デルと言えば、この業界で知らない人はいない有名人です。一方のZyngaはfacebook上のゲームを作っている会社です。普通に考えれば、格がまったく違います。しかし、Zyngaの若いCEOと並んで立つと、(マイケル・デルも経営者としては充分に若いですが)世代交代すら感じました。

高塚さんが言うように UIの直感は慣れの要素が大きい のだとすれば、Webの使いやすいUIはfacebookのようなUIに向かうのかもしれません。

時々facebookにログインして画面をチェックしています。一時、画面がごてごてした時期がありましたが、最近はすっきりと言うか、単にスカスカな画面デザインになっています。これは単に自分に友達が少ないからスカスカな画面なだけでしょうか。

そんなわけでfacebookは実態がよくわからないまま存在感だけが日に日に大きくなっている印象です。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/rising-facebook/tbping

JJUGのJavaOne報告会とサーバサイドJavaのアーキテクチャの形

「JJUGクロスコミュニティカンファレンス 2010 Fall」でJavaOne報告会のスピーカのひとりとして参加してきました。

プレゼン資料(ppt or pdf)を公開します。

性懲りもなくJava EEの話です。参考までに以前Java EE 6について話した時の資料のリンクも張っておきます。

まるで自分はJava EEが好きな人みたいです。不思議です。

以前、Yahoo!の浜辺さんとの共同開発の過程でWebアプリのアーキテクチャが自然にある形に収束しました。

従来のようにWebサーバが(テンプレート言語などで)HTMLを構築するのではなく、サーバは基本的にJSONで返して、HTML画面のDOMの組み立てをクライアントサイドが行うアーキテクチャです。最初のリクエストでサーバはHTMLの骨格とJavaScriptを返します。このHTMLの骨格は動的データの表示領域を持ちますが動的データは含んでいません。その代わり、クライアントのJavaScriptがデータを取得するXHR(XMLHttpRequest)リクエストを投げます。このリクエストに対してサーバは動的データをJSONで返します。JSONを受け取ったクライアントサイドのJavaScriptは骨格のHTMLの中に動的データを埋めていきます。これは従来のサーバサイドのテンプレート言語で行っていた処理に相当します。いわゆるMVCアーキテクチャのうちのVの部分、ビュー的な処理(プレゼンテーション層)をそっくりクライアントサイドに移動するイメージです。

図示すると以下のようになります。いわゆるサーブレットMVC2と比較すると、JSPのビュー処理にフォワードする時のコンテキスト(JSPから参照するBean)相当をJSONで返す形になります。以下の図のBeanとJSONが同じデータの別表現です。

従来(MVC2)
クライアント         サーバ
            request
            ----->
                    servlet
                       | 内部処理
                       |  forward
                       |   with Bean
                       V        ^^^^
                     JSP
            <-----
            response
            (HTML)

HTML+AJAX
クライアント         サーバ
            request
            ----->
            <-----
            response(骨格HTML+AJAX用JS)

            XHR
            ----->
                    内部処理
            <-----
            response(JSON)
                     ^^^^

JJUGで同じ結論に達している人が結構いたので、ますますこのアーキテクチャの正しさの確信が高まりました。

JSPなどのテンプレート言語の時代は終わりました。

JavaScriptが動かないWebブラウザはどうするのだという話はありますが、知りません。

ちなみにJJUGの発表はこういう堅い話はしていません。

上図のHTML+AJAXは、2回リクエストを飛ばすのがムダに見えます。しかし、クライアントがAndroidのネイティブアプリなら最初のリクエストは不要です。単に欲しいデータをJSONで受け取りクライアント側のコードで加工します。

しかし、この形はWeb以前のC/S(クライアントサーバ)そのものです。PC+Windowsの組み合わせがスマートフォン+Androidに置き換わっただけです。みんな、クライアント側にネイティブアプリをたくさん入れると色々と面倒なので、多少不便でもWebブラウザでいいや、という選択をしたはずです。また一周戻るのでしょうか。

ところで、JJUGは全体的に年齢層が高くないですか?と関係者に言ったら、JavaはそうだけどAndroid関係はそうでもないよ、と回答をもらいました。今度、Androidコミュニティに参加してWebブラウザをいらないと思うか聞いてみようと思います。Webブラウザをいらないと思う感覚は新しい可能性なのかもしれません。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/jjug-javaone/tbping

(笑)はS式なのか - 第5回ありえるえりあ勉強会のお知らせ -

JJUG懇親会から戻ってテレビ東京のWBSを見ていたらLISPがフィーチャーされていました。

ついにテレビでも取り上げられるほどのLISPブームのようです。既に告知されていますが、第5回ありえるえりあ勉強会 〜「Lisp脳」勉強会 〜です。

ぼくが嫌いなLisp脳は文章の中に(笑)を書くLisp脳です。この表記を見るたびに、カッコの先頭に書けば何でも思い通りに動くと思っているわけ?、絶対笑わないよ、と気分が悪くなります。せめて礼儀として、クォートをつけて、評価させる目的ではない意思表示をすべきです。

今回、説明のために(笑)を使いましたが、ぼくは今まで一度も使ったことはありません。今後も使う気はありません。

同じように(笑)が嫌いな人の参加をお待ちします。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/lisp-seminar/tbping

レイ・オジー退職記念でMSネタふたつ

レイ・オジーがMSを辞めたのでSharePoint 2010について書きます。

の記事から引用。

MOSSとWSSは名称が似ており役割の違いがわかりにくかったが、2010版では無料版が「Foundation(基礎)」となることで、位置づけが明確となった。

明確...なんでしょうか。MOSSとWSSの分かりづらさよりはマシですが、SharePoint周辺の名前の分かりづらさは異常です。

同時期の似た記事です。

製品マップを示す画像を見てすぐに関係を理解できる人はいるのでしょうか。嫌がらせでわざと難しくしているとしか思えません。

なぜレイ・オジーからSharePointかというと...

から引用。

前述の通り、これまで単独のOfficeアプリケーションであったGrooveが、SharePoint WorkspaceとしてSharePointファミリーの一員となる。サーバが不要で、クライアント同士で情報を共有するP2PアプリケーションであったGrooveだが、Exchange ServerのクライアントがOutlookであるように、SharePoint ServerのクライアントがSharePoint Workspaceとなる。

Grooveは、とりあえず名前はそこそこ恰好良かったわけですが、SharePoint Workspaceの名前のダサさと言ったら。レイ・オジーも辞めたくなります。

悪口ばかりではあれなので最後にSharePointを褒めておきます。

AccessのデータベースをSharePointアプリ化できるのはひそかにすごい気がします。流石MS。

次、ふたつ目のネタです。

JavaOne2010でSpringSourceの勢いを感じました。そんな話をJJUGでしていたら、VMWareに買収される直前のSpringSourceは終わりかけに見えてたのに、という反応を聞きました。そんな時代もありました。

Rod Johnsonという技術のカリスマあってのSpringSourceだと思っていましたが、冷静に考えると、凄いのはVMWareなのかもしれません。最近、VMWareは業界の重要なプレイヤー、という印象を強く植え付けられている気がします。それだけ最近のVMWareの戦略とマーケティングがうまくやっているのでしょう。

そんな話の中で、VMWare社長ポール・マリッツの名前を聞きました。元MSの人です。「闘うプログラマ」にも登場しているようですが、どこでどんな人物として登場していたのか記憶がありません。

ちなみにポール・マリッツがMSを辞めた時の記事が以下にあります。

2000年です。MSの幹部の離脱のニュースをよく耳にしたのはこの頃だったでしょうか。昔すぎて思い出せませんが。

そう言えば、一時、Googleから幹部が次々と離脱、というニュースも聞きました。日本であれば、人材流出即その会社終わり、という印象ですが、シリコンバレーはそもそも人が動くものなのでしょう。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/sharepoint2010/tbping

Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.