June 10, 2009

Google Developer Day 2009へ行ってきました。

Google Developer Day 2009へ行ってきました。

R0014405

午前中はミーティングが入っていたため、午後からの参加でした。

残念ながら基調講演は聴けず。
HTML5やGoogle Waveの話があったようです。

R0014401


聴いたセッションは・・・


Google App Engine
- Life of Google App Engine Request -

スピーカーはGoogleのフレッド・ソオー氏。

主にGAEのDatasotre周りの実装テクニックの話でした。
Entityに関連Entityのキーとなる値であるStringのList Propertyを持たせる話とか
Merge Joinのテクニックとか。

私はハッキリ知らないのですが、恐らくLazy Loadingができないため
このようなテクニックが存在するのでは?と思いました。

Joinの話は、Salesforce.comのForce.comも同様なのでよく理解できます。

既にGAEをバリバリ触っているような上級者向けのセッションでした。


Java で動かす Google App Engine

スピーカーはGoogleの夷藤 勇人氏、鵜飼 文敏氏。

こちらはGAE/Jの紹介セッションといった内容。

GAEが何を提供するのか?
認証・Datasotre・キャッシュ・Email・URLフェッチ等でどんなAPIを提供し、どんな実装をしているのか?
Sandbox制限(Force.comのガバナ制限のようなもの)、
今後実装予定の機能、
スケールを考えたデータ構造の設計・実装テクニック(これは直前に聞いたセッションと多少被る内容も。)
などのお話しがありました。

表面上のAPI仕様と実装とが分かれているため、API Proxyというアーキテクチャが実現でき、これによりAOP/インターセプターっぽいことができるという話があり、ちょっとうらやましかったです。
Force.comにもAOP的な機能が欲しいです。

RDBではないので、データの非正規化を恐れずに!という話はよくわかります。あまり細々と正規化してクエリが複雑になるよりは、クラウドにおいてはシンプルなクエリ一発で必要なデータを取れるようにデータ設計するべきですね。

GAEのDatastoreは、「ソフトスキーマ」というアーキテクチャを採用しているそうです。これは、スキーマを固定せずにJPAやJDOのアノテーションのみでスキーマを定義するというものだそうで。
推測するに、Force.comのメタデータに近い概念なのではないでしょうか?
わかりやすく言えば、Force.comではDB物理層に直接テーブル定義を生成しているわけではなく、"メタデータ"と呼ばれる「データ構造の定義」をDBに格納し、実データは多数のカラムを持つ単一テーブルに格納するというアーキテクチャです。
GAEのDatastoreは実装にBigtableが使われているので、やはり物理層にテーブルを作成しているわけではありません。アノテーション定義によってアプリケーション側からはテーブルがあるように見えていながら、その裏側で動いている実装では個々のテーブルを作成せずにデータはすべてBigtableという多数のカラムを持つ単一のテーブルに格納している・・・というアーキテクチャなのでしょう。たぶん。

GAEには非同期処理・テキスト全文検索・インバウンドメール・データのインポート/エクスポート等の機能はまだ実装されておらず、今後実装予定とのことです。
まだエンタープライズ用途では使えないかな。


クラウドコンピューティングがもたらす5つのメリットとは

スピーカーはGoogleの泉 篤彦氏。
エンタープライズ分野のプリセールスエンジニアをされている方だそうです。
このセッションでハッキリ聞くことができました。
Googleがエンタープライズ向けに扱っているサービスには、GAEは含まれていません。

このセッションは、Google AppsのPremier/Education Editionの紹介セッションという色が濃いモノでした。

クラウドコンピューティングがもたらすメリット、というお題ですが、内容はクラウドのメリット、SaaSのメリット、Googleであることのメリット、Google Apps固有のメリットが混在していました。

まあ、キレイに切り分けるのは難しいのですが、気をつけないと「クラウドコンピューティングってよくワカラナイ」という人がますます増えそうです。

他のクラウドサービスとの連携が容易である、というくだりではSalesforceが紹介されていました。

イメージ 1


Google エンタープライズ エコシステムとは –Google Enterprise Partner–

こちらも引き続き泉氏のセッション。

エンタープライズ向けサービスのパートナー制度の紹介でした。


Google テクノロジー ライトニングトーク

サイオステクノロジー松尾さんによる、自作のGAE向けフレームワーク"Kay"の紹介。
デバッガを使えるのがいいですね。Force.comもブレークポイントを置いて、ステップ実行して、変数の値を確認して・・・とできたらいいのに。

Seessaaの安藤さんによる、Rails on GAE/Jの話。
当初はエライ大変な手順を踏まないとGAE/J上でRailsを動作させることはできなかったのを、とてもとてもカンタンにした、というお話し。

日本Androidの会の近藤さんによる、Androidが組み込み業界へ与えるインパクトのお話し。将来はPCと携帯の垣根が無くなるという展望をお話しされていました。

スパイスボックスラボラトリの神部さんによる、Open Social Hackathonのお話し。Hackathonに参加しよう!というメッセージを熱く語っていました。

E-flowの久野氏による、Dalvik VM実装のお話し。Google謹製のDalvik VMがケータイJavaの2~5倍も遅かったので、自分で実装してケータイJavaと同等まで持って行ったお話し。非常に素晴らしい成果だと思います。一方で、Dalvik VMとは何か?に一切触れなかったので、会場には「そもそもDalvik VMってなに?」な人が多かったのでは?と心配になりました。

最後に、松尾氏がTokyo GTUG(Tokyo Google Technology Users Group)を立ち上げました、と紹介されていました。

Tokyo GTUG
http://groups.google.com/group/tokyo-gtug


個人的に(職業柄?)Googleのエンタープライズ向けサービス戦略の情報を得たかったのですが、今のところGoogleのエンタープライズ向けサービスはGoogle Appsと検索アプライアンス、企業向けGoogle Map APIという内容のようです。
GAEはデータ管理やユーザの権限コントロールが不十分だったり、ワークフローなどが実装されてなかったりと、エンタープライズ用途にはまだまだですね。



なんと、事前登録者全員に携帯電話がプレゼントされました。

R0014524R0014521

Google製OS「Android」搭載のHTC製端末です。

R0014523R0014509

先日、サンフランシスコで行われたGoogle I/Oでも入場者に配られたそうですが
まさか、日本でもやるとは!

R0014470R0014492

Googleさん、太っ腹です。

これはdocomoから発売されるHT-03Aとほぼ同等のものです。
http://www.nttdocomo.co.jp/product/foma/pro/ht03a/index.html

docomo発売前なので、この日この端末を手にした人は
恐らく日本で最も早く日本語入力可能なAndroid端末を入手したことに
なるのではないでしょうか。

あともらったのは、タオルとかステッカーとか。

R0014497

事前登録の時にTシャツのサイズを聞かれたので
てっきりTシャツをもらえるのかと思っていましたが・・・
急遽タオルに変更になったのでしょうか。

April 20, 2009

沈みゆく太陽

今日はいったい、世界中でどれだけの人がこんなタイトルで
ブログエントリを書いているのでしょうか?


かねてより売却先を探していたSun Microsystemsは
先日報道のあったIBMではなく、Oracleに買収されることが決定したそうです。

オラクル、74億ドルでサンの買収に合意、ハードウェア市場へ進出( Computerworld.jp)
http://www.computerworld.jp/topics/ma/143009.html

オラクル、サンの買収で最終合意(CNET Japan)
http://japan.cnet.com/news/biz/story/0,2000056020,20391986,00.htm

[速報]オラクルが74億ドルでサンを買収(ITpro総合)
http://itpro.nikkeibp.co.jp/article/NEWS/20090420/328819/

[oracle] Oracle、Sunを買収!!!!!(S/N Ratio (by SATO Naoki) by satonaoki)
http://d.hatena.ne.jp/satonaoki/20090420/p2

ラウンドアップ:オラクル、サン買収に至るまでを振り返る
http://japan.cnet.com/news/biz/story/0,2000056020,20391994,00.htm

米オラクル、サンマイクロを74億ドルで買収へ(Reuters: テクノロジー)
http://jp.reuters.com/article/technologyNews/idJPJAPAN-37591820090420

【速報】オラクルが74億ドルでサンを買収(@IT)
http://www.atmarkit.co.jp/news/200904/20/oracle.html


非常に驚きましたが、ニューヨーカーなビジネスマン集団のIBMよりは
シリコンバレー企業のOracleのほうがずっとしっくりくる組み合わせとも言えます。
プロダクトの品揃えでも、被りよりも補完の要素が多いですし。


特にOracle が欲しいのは、Javaテクノロジのリーダーという地位と
サーバおよびストレージでしょう。

MySQLは微妙な立場ですね。
Oracle DBのシェアを下げた強敵でしたから。

Oracleはオープンソースからは一歩引いた立場と見えるので、
Sunの持っているOSSプロダクトがどうなるか、この先に注目です。

Oracleがこの買収を最大限に活かせれば、向かうところ敵なしですね。
ライバルと呼べるのはIBMぐらいでしょうか。

ハードウェア、データベース、アプリケーションサーバ、
Javaテクノロジ、サーバ仮想化、ビジネスアプリケーション、
クラウドプラットフォーム、OS、SOA・・・
エンタープライズ分野でのソリューションをほぼ全方位カバーすることになります。


しかし・・・

私自身、Sunには多くの知り合いがいる・・・と思っていたら
気がつけば既に退職されている方の方が圧倒的に多いという状況でした。

奇しくも今日もまた、大変お世話になった方がSunを退職されると
ブログに書かれた日でもありました。
(ご本人からは1週間ほど前に聞いていたのですが・・・)


ここ数年は株価(=企業価値とも言い換えられますが・・・)が
下がる一方だったSunですが、数々の業界のカリスマを輩出し、
Javaという一大プラットフォームを築いたSunは
いちエンジニアとして憧れの企業でした。
そのSunが無くなってしまうのは本当に寂しい限りです。


January 4, 2009

Google App EngineのJava版「Stax」を触ってみました

Amazon EC2上で提供されるJava版PaaSサービス「Stax」をちょっと触ってみました。今のところはβサービスで、まだ実装されていない機能もあったりしますが無料で試すことができます。
「Google App EngineのJava版」としてニュース記事等でも紹介されています。

Java対応のGoogle App Engineとも言うべき「Stax Networks」ローンチ
http://jp.techcrunch.com/archives/20081216stax-networks-launches-google-app-engine-for-java/


用意されている環境

  • Apache Tomcat/6.0.16
  • MySQL/5.0.51

要するにServlet2.5/JSP2.1環境を使えるってことですね。JVMはJavaSE5相当のようです。
GoogleもSalesforce.comも、Servletコンテナにはより軽いResineを採用していますが、ここはTomcatですね。


サポートするフレームワーク
  • Apache Struts(ただし、1.xではなく2.0.11)
  • Apache Wicket
  • Adobe Flex/BlazeDS
  • Google Web Tool Kit
  • Adobe ColdFusion 8
  • JRuby on Rails
とかドキュメントには書いてありますが、アプリケーションの初期作成時のテンプレートとして、デフォルトで必要なライブラリを入れてくれて、最低限の設定済みのxmlファイル類を入れてくれるってだけです。
逆に、WEB-INF/libにライブラリをつっこんで、web.xmlを編集して、WEB-INFに必要な設定ファイルを追加すれば他のフレームワークも使えます。DI/AOPコンテナもORマッピングフレームワークも使えます。
Struts1.3.8/Spring2.5.6/iBATIS2.3.4とか、JSF1.2RI/Spring2.5.6/Hibernate3.3.1とか、試してみたら動きました。この分ならSeasar2を使ったアプリも問題なく動作するでしょう。


アカウントの作成
StaxのWebサイト http://www.stax.net/ へ行きます。



「Apply for the Beta」をクリックしてサインアップ画面へ行き、メールアドレスを入力して送信すると認証メールが送られてくるので、そこに書いてあるURLにアクセスするとサインアップ終了です。簡単です。



改めてStaxのWebサイトからログインするとアプリケーション管理画面に入れます。



管理画面では、TomcatのログやApacheのアクセスログ等の参照、アプリケーションの作成・DBの作成・設定・パフォーマンスやアクセス監視モニタの参照等を利用できます。




アプリケーションの作成
管理画面左側メニューの「Create App」をクリックすると、アプリケーションを作成できます。ユニークな名前を付けましょう。Application Core Runtimeからフレームワークを選べますが、前述の通り、Servlet2.5/JSP2.1環境で動作するものなら好きなモノを使えます。用意されているもの以外のフレームワークを使うのなら「Basic Servlet and JSP」を選択してもかまいません。



Stax SDK http://stax-downloads.s3.amazonaws.com/sdk/stax-sdk-0.2.12-dist.zip をダウンロードして解凍しておきます。
http://www.stax.net/appconsole/createapp から、任意の名前のアプリケーションを作成します。
解凍したディレクトリ中の「Stax Console」ショートカットを起動します。
コマンドラインコンソールが起動するので、そこから
stax getapp -a [ユーザ名]/[アプリ名] -u [ユーザ名] -p [パスワード]
を実行すると、アプリケーションのひな形がダウンロードされます。このひな形はEclipseプロジェクトになっているので、そのままEclipseへインポート可能です。でもこのプロジェクトはWTP互換じゃないのが残念です。


アプリケーションの構造
  • webapp: JavaEE Webアプリケーションディレクトリ
  • src: Java ソースファイルディレクトリ
  • conf/stax-application.xml: Stax デプロイメントディスクリプタ
webappディレクトリの中は通常のServletアプリと同じなので、WEB-INF/libに好きなライブラリを入れたり、WEB-INF/web.xmlを編集したり、設定ファイルやTLDを追加したり、自由にできます。


DBの作成
管理画面左側メニューの「Create DB」をクリックすると、アプリケーションを作成できます。任意のDB名、ユーザー名、パスワードを設定します。



DB作成後、テーブルやら何やらを作成するには、なんとTCP:3306が開いているのでMySQL Query Browser や mysql コマンドが使えます(^^;(←いいのか?)
アプリケーションのconfディレクトリにあるstax-application.xmlに、下記の設定を追記します。

<resource name="jdbc/db01" auth="Container" type="javax.sql.DataSource">
<param name="username" value="[ユーザ名]" />
<param name="password" value="[パスワード]" />
<param name="url" value="jdbc:stax://[DB名]" />
</resource>

Javaアプリケーションからは、JNDI参照名「java:comp/env/jdbc/[DB名]」でLookupできます。


アプリケーションのデプロイと動作確認
コマンドラインから
stax deploy -a [ユーザ名]/[アプリ名] -u [ユーザ名] -p [パスワード]
とすると、作成したアプリケーションをアップロードできます。
Antを使ってWARファイルからのデプロイも可能です。WARファイルをそのままアップロードできるUIがあればいいのに。。。

次のURLからアプリケーションの動作を確認できます。
http://[アプリ名].[ユーザ名].staxapps.net/

何度アップロード/デプロイし直しても反映されるので、クラスローダはカスタマイズしていじっているっぽいですね。Tomcatのデフォルトのリロード機能ではヒープメモリがすぐに破綻しますから。

[追記]
サーバのログを見るとTomcatまんま再起動しているっぽいです。


一度デプロイしたアプリケーションは削除できません(^^;削除機能はまだ未実装のようです。


ちょっと触った所感
Tomcat/MySQL/Eclipse環境に慣れた人ならすぐに開発できるのが良いですね。フレームワークもお仕着せのものだけでなく好きなものを選べますし、使い慣れたRDBがそのまま使えます。Python/Django/webappsにどうしてもなじめず、Google App Engineを放り出してしまった私には嬉しいポイントです。
懸念としては、サーバの信頼性・可用性・セキュリティと正式サービス開始後の料金体系です。まあ、これはすべてのクラウドサービスに言われていることですが。Amazon E2Cを利用しているのでこのレベルではある程度の信頼性はありますが、その上で動作しているアプリケーションサーバレベルではStaxの技術力・資金力・信頼性が問われるところでしょう。

Amazon EC2上に構築されたってのが、次世代のビジネスモデルを予感させます。自前のデータセンターを持たずにSaaS/PaaS事業を展開するという例はこれからも増える可能性がありますね。

December 9, 2008

Spring Framework 3.0 M1 のEL式

Spring Framework 3.0 M1 のEL式


    <bean id="beanA" class="com.developpez.hikage.spring3.BeanA" >
        <property name="valueTwo" value="test"/>
    </bean>

    <bean id="beanB" class="com.developpez.hikage.spring3.BeanB" >
        <property name="valueOne" value="#{beanA.valueTwo}">
        </property>
    </bean>


とか書ける実行時評価式のようです。

December 7, 2008

Spring Framework 3.0M1 リリース

Spring Frameworkの次期バージョン3.0の最初のマイルストーンがリリースされましたね。
http://blog.springsource.com/2008/12/05/spring-framework-30-m1-released/

ドキュメントはまだJavadocしかありません。

BeanFactory#getBean()がGenerics対応してます。
・・・WebアプリではWebApplicationContextを使うからあまり関係ありませんが(笑)

@Configurationや@Beanは入っていませんね・・・
3.0で入ると言われていたSpring Java Config は、今のところは標準でバンドルされていないようです。

Changelogをざっと見たところ、主要なポイントはこんな感じです。

  • JavaSE5サポート(Genericsや可変長引数など)
  • JUnit 4.5 および JRuby 1.1 のサポート
  • WebLogic 8.1 および WebSphere 5.1 のサポートを削除
  • ネイティブ TopLink API のサポートを削除(JPA使いましょう)
  • Commons Attributes のサポートの削除(Java5のアノテーションを使いましょう)
  • Jakarta JSTL for JSP1.2 のサポートを削除(JSP2.0を使いましょう)
  • Struts 1.x Action delegation をサポート(DelegatingRequestProcessorを使いましょうってことかな?)
  • ContextLoaderServlet および Log4jConfigServlet を削除(もう要らないよね?ってことかな?)
  • JUnit 3.8は非推奨に
  • Bean定義で#{...}式をサポート
  • Atom/RSS Feed View を追加
  • "spring:url" および "spring:param" JSP タグを追加
Atom/RSS Feed View というのはAtom/RSSフィードの生成・パブリッシング機能で、Project ROMEの機能を利用しています。

あとは、Spring ELというのが導入され、Bean定義で#{…}が使えるとのことですが・・・Javadocだけで、マニュアルもサンプルアプリケーションも無い状況ではいまいちピンと来ません・・・

明記されている箇所を見つけられなかったのですが、J2SE1
4.2以前のサポートは削除され、JavaSE5以降が前提となっている可能性も高そうです。

※追記:思いっきり「Note that Spring Framework 3.0 requires Java 5 or above and J2EE 1.4 or above. We are building on Java 6 and Java EE 5 as the primary platform levels - but rest assured, we will retain compatibility with Java 5 enabled J2EE 1.4 servers such as WebLogic 9 and WebSphere 6.1.」とありました・・・(汗;

世界初のJava-PaaSはMSが実現?

この週末、Windows AzureのPDC2008と公式ページでの発表資料を見てました。

AzureがJavaをサポート?

AzureのWebサイトの至る所に「Windows Azure welcomes third party tools and languages such as Eclipse, Ruby, PHP, and Python.」
とあるので、.NET以外のアプリケーションもサポートしそうですね。
How Does It Work?というタイトルのページのComming Soon のところにある図には、Eclipse/Python/Ruby/PHPのロゴが掲載されています。
http://www.microsoft.com/azure/howdoesitwork.mspx

個人的に注目したいのは「Eclipse」です。Javaもサポートされるのでしょうか?
この、PDC2008発表資料の5ページ目には、Javaのロゴが出てきます。
http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/BB01.pptx
確かに、現在Windows Server上で動作するモノは基本的にAzureでもサポートすると言ってますし。
でも「Eclipse」ではなく明確に「Java」と記載されている記述は、他には見つけられませんでした。

Google App Engine がサポートを予定している Python 以外の言語に Java が含まれるという噂もありますが、世界初のJava-PaaSを提供するのがMicrosoftということになったら面白いですね。

まあ、Application Serverは開発者側で用意しなければならないと思うので、ミドルウェアやアプリケーションフレームワークまで用意されている Google App Engine や Force.com よりは一段低いレイヤーになるとは思いますが。
とは言え、独自のアプリケーションサーバやフレームワークよりも、使い慣れたモノが使える方が嬉しい人も多そうではあります。


AzureはWindows?

それにしても・・・

まだスクリーンショット等が公開されていないので詳細は不明ですが、ネット上で稼働するということは、クライアントPCからは専用クライアントツール・ブラウザ・開発環境のエクステンション等から接続し、利用するのでしょうか?

もしそうなら、初のGUIの無いWindowsということに。

Windowsの登場以降、「ウィンドウ」という概念によるGUI操作こそが「Windows」という名前の由来だと思っていたのですが。




スケーラビリティの俳句

余談ですが。

これは、PDC2008での講演資料資料にあったものです。

The Haikus Of Scalability(スケーラビリティの俳句)
http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/BB54.pptx

You are born nameless You cannot afford the truth You are one of many
初雪や
水仙の葉の
たわむ迄

Your words echo loss
You fail fast, safely return You try again, again
谷水や
石も歌詠む
山櫻

芭蕉・鬼貫ですね。

スケーラビリティを絡めて何を言いたいのか、全然わかりません(^^;


December 5, 2008

なんも考えずに"リテラル".equals(s)と書け

なんも考えずに"リテラル".equals(s)と書け
http://d.hatena.ne.jp/nowokay/20081204#1228409639


私は逆の意見です。


"リテラル".equals(s)

は私にとって既にトリッキーで、一瞬ではありますが「ん?」と考えなければならないコードです。


たとえば、「"OK"が処理結果なら」と「処理結果が"OK"なら」はどちらが自然でわかりやすいでしょう?


「こちらのほうが美しい」という理由よりも、「こちらのほうが安全」という理由で書き方を選んだほうがいい。


より多くの人が違和感なく自然に理解できるコードこそが安全だと私は考えます。




・・・まぁ、気持ちはわからなくはないのですが。


December 3, 2008

public static final

・・・って、うっかりメソッドの宣言部に書いたら普通にコンパイルできました。

オーバーライド禁止を表す"final"を、オーバーライドという概念のないクラスメソッドに付けてもコンパイラに怒られないんですね。

付ける意味も全くないし、動作もまったく変わらないのですが(笑)

Java言語仕様 8.4.3.2 static Methods、8.4.3.3 final Methodsのどちらにも、クラスメソッドにfinalを付けるとどうなる、という規定はありませんね。
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.3.2

長いことJavaに関わっていますが、今さら気づきました。

November 6, 2008

SpringFramework 2.5.6 リリース

されました。

主な変更点は

  • AspectJ 1.6.2 対応(1.5.x、1.6.x との互換背は保持)
  • EHCache 1.5.0 対応(1.2 以上との互換背は保持)
  • TestNG 5.8 対応(5.5 以上との互換背は保持)
  • OpenJPA 1.1.0 対応(1.2.0 と同様、1.0 との互換性は保持)
  • EclipseLink 1.0.1 対応
など。

changelogはこちら。


来週木曜日に、次期バージョン Spring3.0 について何か発表があるようですね。

October 19, 2008

Force.comのApex

約1年前に発表されたSalesforce.comが提供するアプリケーション開発環境・動作環境「Force.com」。
Salesforce.comは「SDKを配布するからインストールしてアプリ開発してね」ではなく、アプリケーションの統合開発環境・テスト環境までもWeb上に乗っけてきました。統合開発環境のSaaS化です。アカウントを取得すればブラウザを起動するだけでSalesforce.comのクラウド上でアプリ開発可能です。
しかも既に実用化・収益化できています。Salesforce.comの強みであり、他社がなかなか追いつけない要素の1つでしょう。
はじめて知ったときは、何てスゴイモノを作ったんだ!と驚愕しました。

しかし・・・

プログラミング言語が「Apex」という独自言語なのが惜しいところ。

中身を開けてみればJavaに似ているし、シンプルで覚えやすいのですが・・・
開発者の視点から見るとどんなにカンタンでも「新しい言語を覚えなくてはいけない」というだけで壁が1枚できるものです。

「マルチテナント」と「安全性」を両立するためには、Salesforceのプラットフォームのコア部分が動いているモノ(ここはJavaです)を共有させるわけにはいかず、もう1層上にVM(のようなモノ)を乗っける必要があることは理解できます。

でも、そこがJavaであってもいいはず。

やはり、過去のSunと他社との経緯を無視できなかったのでしょう。

Sunは、Java標準仕様に独自の拡張や独自の制約を設けることに関しては煩いですから。

MicrosoftはJavaに独自の拡張をしたためにSunに訴えられ、長い法廷闘争の末にJava2以降の実装を許されなくなりました。

最近では、GoogleのAndroidも独自のアーキテクチャゆえ、SunとGoogleの間で少し揉めました。


そんなわけで、Sunが進めているProject Carolineには注目しています。SunはProject Carolineで、JavaによるPaaSを実現しようとしています。

Sunの中の人に聞いた限りでは、Project CarolineがSunのクラウドコンピューティング戦略のメインストリームというわけでもなく、SunのPaaSはProject Carolineで行くと決まっているわけでもなく、ただの研究開発プロジェクトの1つでしかない、ということですが・・・

将来的には、EclipseもSaaS/PaaS化したいという噂もちらほら。

Amazon/Oracleあたりで、Xenベースのオープンなアーキテクチャなクラウドコンピューティングという流れもあります。


これらが実用化されたらForce.com/Apexやばいかも。

今はSalesforce.comが先行しています。他社が追いつくまでに時間がかかるので、その間にデファクトを握ってしまおうという方針でしょうか。
それとも、オープンなアーキテクチャへの大幅な方針転換の可能性も視野に入れているのでしょうか。

個人的には、Force.comのプログラミング言語がJavaになってくれたら言うことナシです。

October 5, 2008

最近のクラウド・SaaS・PaaS

Cloud Computing
最近、データセンターを作っただけで「クラウド参入」とか言ってる企業、多くないですか?
「データセンター」を「クラウド」と言い換えているだけのような。
「クラウド・コンピューティング」は「仮想化」以来の“乱用語大賞”
「過大な情報がIT業界に混乱を招く」とガートナーが警鐘
  ※「MSとIBMが使い出した時点でバズワード化する」とはS社のO氏の発言。(^^;


SaaS
実態はただのWebアプリやASPなのに「SaaS参入」とか言ってる企業、多くないですか?
SaaSと言いながらクラウド環境・マルチテナント環境ではないため、いったいどれだけスケールするのか不安で仕方ない「SaaSもどき」が増えてきました。


PaaS
これを実用化・収益化できている企業はごくわずか。さすがに猫も杓子も「PaaS」と言い出すまでには至っていませんね。




各社の動向
最近の各社の動きはどうなっているのでしょうか?
大きく分けると、

  1. クラウドインフラのみ提供
  2. アプリケーションを提供(SaaS)
  3. アプリケーション動作環境を提供(PaaS)
といった分類になるでしょうか。


Yahoo/HP/Intel連合
まだ研究開発段階。クラウドインフラと、もしかしたらPaaSも?
HP、インテル、ヤフーの3社、クラウド・コンピューティングの共同研究プロジェクトを発表


ユニシス
「SaaSはじめます」と言ったが、その後進んでいるのだろうか?「乗り遅れたくない」感で言ってみただけ?
日本における早急なPaaS、CaaSの確立を目指す~ユニシス


富士通
「SaaSはじめました」と言ったが、その後進んでいるのだろうか?「乗り遅れたくない」感で言ってみただけ?
富士通が SaaS 3 サービスを開始


IBM
データセンターをばんばん作っている。その上で何をやるのだろう・・・。クラウドインフラと、もしかしたらPaaSも?
IBM、「Blue Cloud」コンピューティング計画を発表
IBM、世界4カ所にクラウド・コンピューティング・センターを開設


Sun
Project Carolineは大注目。Salesforce.comが成し得ていない、標準言語(Java)によるPaaSを実現しようとしている。でもまだ研究開発段階。
サン、PaaSモデルの研究プロジェクト「Project Caroline」を披露


Google
Google App Engineはアプリケーション実行環境の提供という形式でPaaSをやっているけど、アプリケーションの開発作業はローカルマシン上で行ってそれをアップロードするしかない。
ここ1年ぐらい、エンタープライズ分野では最近目立った動きがないが、Mobile側(Android)からクラウドの使い道を広げようとしている。うまくいけばこっちの切り口からエンタープライズ分野へ食い込んでいけるのかも。
「独創的な」という言葉がぴったりなこの企業の動きには常に要注目。


Amazon.com
インフラの提供はしっかりやっているけど、その上で何をするのか?は利用者任せ。今のところ、Amazon.com自身はECサイト以上のサービスをしていない。Amazon WSは、実質はレンタルサーバっぽい使われ方がほとんどなのでは?


Microsoft
クラウド上にWindows Serverが乗っかって、何が嬉しいのだろうか・・・
MSのクラウドへの取り組みは、Office Suiteにしろ、OSにしろ、結局クライアントパッケージをインストールしないと使えない「非SaaS」なものになるでしょう。
MSのバルマーCEO、「Windows Cloud」の詳細に言及


Oracle
Siebel on Demandなど一部SaaSを提供しているけど、いったいどのぐらい儲かっているのだろうか。MS同様、パッケージライセンスの売上によって過去最高利益を更新し続けているこの企業が、本気でSaaS/PaaSに取り組むとは考えにくい。
Amazon WS上にOracle Databaseを乗っけるパッケージの提供も始めるらしいけど、自社パッケージをクラウドに乗せますという点ではWindows Cloudと同じ。自分でアップロードして展開して設定してね、という点ではもっとひどいかも。すぐに使えるDaaS(Database as a Service)を用意していたらちょっとは「ほう」と思ったかも。
オラクルのクラウドへの第一歩


RedHat
Amazon WS上でJBossが動くようになるらしい。
Red Hatが見据える次世代のアーキテクチャ


Salesforce.com
結局、「クラウドだけどSaaS/PaaSではない」サービスは、ユーザーにとってはハードウェア準備・運用の手間は省けるけど、サーバソフトウェアの構築・管理、アプリケーション開発をしなければならないことは変わらず。MSのアプローチはまた独特だけど。
また、クラウドはそれだけではその存在に意味は無く、クラウド上で提供されるサービスがビジネスとして確立しないと成り立たない。エンタープライズ分野でインフラ・ミドルウェア・アプリケーション・開発環境まで(クラウドからSaaS/PaaSまで)トータルに提供し、実用化・収益化できているのは、事実上SFDCのみか・・・


今のところ、Salesforce.comが独走態勢で、他企業が技術・サービス両面で追いつくのはもう少し先になると思う。

SFDCを脅かすのは、オープン化の波かもしれない。
Amazon WSがXenベースであるため、JBossやOracleは対応できた。
アメリカではAmazon WS互換の他社サービスも始まっているらしい。Amazon WSのバックアップやフェイルオーバー用途に使えるとのこと。
数年後にはプロプライエタリなテクノロジによる囲い込みをオープンソースが切り崩すという波がクラウドコンピューティングの世界にも来るかもしれない。

September 10, 2008

Tomcat 5.5.27 リリース

http://mail-archives.apache.org/mod_mbox/www-announce/200809.mbox/<48C56449.4050408@apache.org>

変更点は下記を参照。
http://tomcat.apache.org/tomcat-5.5-doc/changelog.html

Jasperのクォーテーションに対する挙動の変更は 6.0.18 と同様。システムプロパティ org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING で以前のバージョンと同じ動作にするかどうかを設定できる点も 6.0.18 と同様ですね。

あとは、CATALINA_HOME に設定したパスにスペースが含まれている場合に対応したことや、Session.getAttribute(null) および Session.removeAttribute(null) で NullPointerException が発生しないようにしたこと(これは仕様では明確になっていないが、Tomcat5.0以来のルールだそうです)等。

August 8, 2008

Tomcat 6.0.18 重大な変更

2008年7月31日にリリースされた Apache Tomcat の最新バージョン 6.0.18 ですが、JSP の処理系である Jasper にこんな変更が。

Changelog
にこのような記載があります。

45015: You can't use an unescaped quote if you quote the value with that character.

これにより、カスタムタグの属性値に Runtime Expression を埋め込んだ際に、式の中に "" を記述する場合はエスケープが必要になりました。

つまり、従来は

<t:tag value="<%= request.getAttribute("name")%>" />

とか書けたのに、

<t:tag value="<%= request.getAttribute(\"name\")%>" />

と書かなくてはならない状況になってしまったのです。

今まで動作していたのに、Tomcat のバージョンを上げたら動かなくなるアプリケーションも少なくないでしょう。


Tomcat 開発プロジェクトは、たまーに、こういうことをしますね。
現実論・実用性よりも、下位互換性を崩してでも理想論・あくまで仕様としての正しさを追い求めるというか。

setCharacterEncoding() の時もそうでした。

商用のアプリケーションサーバ製品ではこのようなことはしないでしょう。


内部的に Tomcat や Tomcat と同じ実装を使う JBoss や Glassfish も、次回以降のバージョンは要注意ですね。


追記:
動いていた方がオカシイという声もいただきますが、それは正論ふりかざしているだけです。今まで動いていたものが動かなくなるのは、現場をあまりに無視した行為です。setCharacterEncoding()の時もそれで大ブーイングだったわけで。

さらに追記:
システムプロパティ org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING で挙動を元に戻す設定ができるようになっているとのことです。(takayoshiさんよりコメント欄にて情報をいただきました。ありがとうございます)
setCharacterEncoding()の時もそうでしたが、Reference Implementationにも使われる実装ということで仕様に忠実でなければという立場と、現場でも利用されることを意識しなければならない立場の板挟み感が伝わってきます(笑)

August 1, 2008

Tomcat6.0.18リリース

6.0.16からの変更点はほとんどバグフィックスのみと言っていいでしょう。

Changelog
http://tomcat.apache.org/tomcat-6.0-doc/changelog.html

Download
http://tomcat.apache.org/download-60.cgi

July 23, 2008

BEA 買収後の Oracle のミドルウェア戦略

少し前に某 ML で得た情報ですが・・・

今月初めに、BEA 買収後の Oracle のミドルウェアの統合方針が発表されています。

http://www.oracle.com/products/middleware/docs/oracle-middleware-strategy-briefing-072008.pdf

JavaEE アプリケーションサーバは、OC4J を捨てて WebLogic Server へ統合される模様です。
しかし(というか、もちろん)ORM フレームワークは Toplink です。

WebLogic Server は、Pitchfork という Spring Framework ベースの DI/AOP コンテナを内包しており、事実上 Oracle のアプリケーションサーバは Oracle ADF + Spring + Toplink という構成になりそうです。

商用 JavaEE アプリケーションサーバ製品は、IBM と Oracle の2強時代になりそうですね。

統合開発環境は、従来通り Eclipse Pack と JDeveloper の2本立て。BEA Workshop の機能は Eclipse Pack の一部として取り込まれていくようです。

Beehive は消えゆく運命に・・・


Eclipse 3.4 Ganymede の日本語化

Eclipse の最新バージョン3.4 Ganymede リリースと同時に、Babel Project により国際化対応可となりましたが・・・

Babel が提供する Language Pack を入れると、入らなくなるプラグインが多数存在する模様です。

今のところ、プロパティファイルエディタや Spring IDE が入らず困っています。

正確には、これらのプラグインは Babel Language Pack のインストール前やアンインストール後ならインストールでき、インストール後はもう一度 Babel Language Pack を入れても問題なさそうなのですが、不便ですね・・・

Spring Framework 2.5.5 リリース

一ヶ月も前に出ていました。
2.5.4の時も、今回もアナウンスがないのでダウンロードページを直接見ないとアップデートがわかりません。

主な変更点

  • Hibernate 3.3.0対応
  • iBATIS SQL Maps 2.3.2対応
  • IBM JDK1.6対応
  • DriverManagerDataSourceが削除され、代わりにSimpleDriverDataSourceが追加。クラスローディングとシンクロナイぜーションの都合らしい。
  • MS SQL Server用のエラーコード対応
  • HibernateTransactionManagerに"hibernateManagedSession"フラグが追加
  • Hibernate/OpenJpa/TopLink/EclipseLink利用時にDerbyとH2をサポート
  • Hibernate/TopLink/JDO/JPAのプロキシクラスはORMプロバイダのクラスローダが生成するように変更(OSGi対応)
  • iBATIS SqlMapで複数のSqlMapConfigファイルに対応

その他詳細はChangeLogを参照。
http://static.springframework.org/spring/docs/2.5.x/changelog.txt

July 4, 2008

今度のSpringユーザー会勉強会はSlim3!

http://springframework.jp/index.php?%CA%D9%B6%AF%B2%F1#swy35rsc

なんと、Seasar のひがさんがSpringユーザー会の勉強会にて Slim3 を紹介してくださいます!!!

Spring な人も、Seasar な人も、あらゆる意味で注目です。

June 29, 2008

JBoss 5.0 CR1 は今週リリース

だそうです。

JBoss の CR 版は、一般的に言うところの RC 版です。

http://www.jboss.org/feeds/post/jboss_as_5_0_status

そして、6-7週後にCR2のリリース、そしてGAと続くのだそうです。

しかし。

ここ2年ぐらい、JBoss Application Server のロードマップは全くアテになりませんね。当初のロードマップでは、JBoss 5.0 はたしか昨年春には出ていたはずなのに。RedHat/JBoss は Seam & WebBeans の開発にかかりっきりなのでしょうか。
JBoss 4.2は JSR-250 Common Annotations がちゃんと実装されていないので、Web コンテナ上で JNDI リソースや EJB オブジェクトのアノテーションによるインジェクションが動作しません。
JBoss 4.2は、まだ JavaEE5 に完全対応できていないのです。

JBoss 5.0 Beta4 は、JMS がうまく動作しなかったり、アプリケーションの自動再デプロイがうまく動作しなかったりセキュリティロールによるアクセス制御がうまく動作しなかったりと、まだまだ安定しません。

JavaEE5 完全対応の OSS のアプリケーションサーバとしては、Glassfish や Apache Geronimo がありますが、個人的には JBoss が好きです。Eclipse が標準で対応していて、zip を展開するだけで使えるという手軽さがいいですね。NetBeans を使う人なら Glassfish がいいのでしょうけど。。。

Eclipse の最新バージョン 3.4 Ganymede がリリースされました

これも数日前のことですが・・・

Eclipse の最新バージョン 3.4 Ganymede がリリースされました。
毎年6月末にリリースというサイクルがすっかり定着しているようです。

http://www.eclipse.org/downloads/

昨年の 3.3 Europa リリース時に IBM は LanguagePack を Donate しないという方針を打ち出したため、しばらく公式の Language Packが 無いという状況が続いていました。(これが日本国内での Eclipse シェア伸び悩み&公式日本語版リリースのある NetBeans 活況化の要因の一つかも?と思っています。)

Eclipse.org では多国語翻訳プロジェクト「Babel」が立ち上がったもののいっこうに動かず、日本では有志による翻訳プラグイン Pleiades が非公式ではあるものの、それなりに普及するという状況でしたが・・・
その Pleiades が Eclipse.org の Babel プロジェクトに翻訳成果を Donate し、晴れて Eclipse.org 公式の Language Pack がリリースされています。

しかも、3.3 Europa、3.4 Ganymede 両対応で、さらにアップデートサイト対応です。
アップデートマネージャに下記のURLを登録して利用できます。

(Europa)
http://download.eclipse.org/technology/babel/update-site/europa
(Ganymede)
http://download.eclipse.org/technology/babel/update-site/ganymede

Pleiades プロジェクトの皆さん、ありがとう!

WTP3.0 を中心に Ganymede を使い倒してみたいと思います。