December 31, 2008

2008年を振り返って

2008年は「SaaS元年」とも言われましたが、振り返ってみると「SaaS」よりも「クラウドコンピューティング」という言葉の方が幅を利かせていた感があります。

SaaSはクラウドコンピューティングの使い道の1つ・クラウドコンピューティングの1形態ではあります。

クラウドコンピューティングの現状は、まだまだ多くのベンダーが研究開発段階・試験サービス段階だったり、多くのユーザー企業が評価段階だったりするためか、サービスよりもクラウドそのもののアーキテクチャに目を向ける人が多かったような気もしました。


でも、クラウドがどんなアーキテクチャで構成されているのかなんて、わからなくていいんです。マルチテナントとか、内部がP2P的構成になっているとか、メタデータアーキテクチャとか、仮想化レイヤーの構成とか、内輪の話であって、ユーザにとってはどうでもいいんです。


そんなことはわからなくていいのが、「クラウド」なのですから。


そういう意味では、各社のクラウドコンピューティングのインフラが整いつつあり、その上でユーザに対してどんなサービス/プラットフォームが提供されるのか?が問われ、内容と質が比較される2009年こそが、真の「SaaS/PaaS元年」になるのかもしれません。


「クラウドコンピューティングはバズワードに過ぎない」と言う人もいますが、違います。確実に、実用化・事業化・収益化している大手が存在する分野ですから。



今年もあとわずか。ありがとうございました。
来年からは私自身の立ち位置が少々変わるため、これまでのように思いつきでふらっと書くことはできないと思いますが、今後ともよろしくお願い申し上げます。


2008年12月31日

liebejudith拝


December 10, 2008

Force.com Sites を試してみました

Force.com Sites は、Salesforce.com が提供する Force.com を使って、外部公開向けサイトを構築できる機能です。
今までの Salesforce.com の提供する機能は、社内向け・組織内部向けが中心だったのですが Force.com Sites で外部公開サイトの作成も同じようにできるようになったみたいです。しかも、従来の機能とバッチリ連携・組み合わせできます。

Google App Engine でも「外部公開向けサイトを構築」という意味では同じようなことができるのですが、Force.com Sites は従来の Force.com と全く同じように、SaaS 形式で用意された開発環境上でサイトを作れること、Salesforce の機能と完全にシームレスに連携できること、それから・・・恐らく・・・料金が違います。Force.com Sites はまだ正式サービスではないので料金体系も明らかになっていないのですが。


「※Force.com SitesはDreamforce 2008で発表され、現在はDreamforce参加者にのみ開発者プレビューが提供されてます。」とあったので、そうかと思っていたのですが、1週間ぐらい前から開発者プレビューが開始されていたようです。
ここから申し込めるので、さっそく登録してみました。すでにDeveloperアカウントを持っている人はかなりカンタンに申し込みができます。
http://developer.force.com/iwantsites

登録後にログインすると、左側の「開発」メニューに「サイト」というメニューが追加されていました。



ドキュメントは英語のみですが、管理画面はすべて日本語化されています。

まず最初に、ドメインを登録します。自分が所有している完全オリジナルドメインも使えるようです。ドメインは一度設定すると後から変更ができないようです。


次に、サイトを作成します。



「フィードの有効化」にチェックを淹れるだけで、フィード配信も可能です。

通常の公開サイトで使いそうなページはデフォルトでテンプレートが用意されています。


もちろん、Visual Force を使って自由に新規作成・編集可能です。



こんな感じでサイトを作っていきます。なんだか CMS っぽい色合いも濃くなってきた感があります。SaaS 形式の CMS。

いやぁー、これから楽しくなりそうです。

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 8, 2008

Force.com for Google App Engine

Force.com for Google App Engine
http://developer.force.com/appengine

というのがリリースされたみたいです。GAEからForce.comのAPIを呼び出せるPythonライブラリだそうです。
コンシューマ向けのフロントはGAEで、顧客情報管理はセールスフォースで、のような利用が想定されているのでしょうか。
来年からサービス開始すると発表されているForce.com Sitesも外部公開サイト向けの機能ですが、まだ一部ユーザ向けプレビューのみで料金体系や利用上の制約条件が発表されていません。Force.com Sites では完全独自ドメインでの利用は難しいですし。

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 4, 2008

「ソフトウエア+サービス」を指向するMicrosoftの苦悩

パッケージとクラウド(SaaS/PaaS)の両方をやろうとする企業は辛そうですね。


「ソフトウエア+サービス」を指向するMicrosoftの苦悩
http://itpro.nikkeibp.co.jp/article/COLUMN/20081203/320635/

IBMのクラウドコンピューティングコンサルティングサービス、利害の衝突を巻き起こす?
http://www.infoq.com/jp/news/2008/12/IBM-Cloud-Conflict-of-Interests




案の定というべきか、わかっていたことではあるのですが。



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 29, 2008

セールスフォース・ドットコム岡本君が語るクラウドコンピューティング

差別化できないところにリソースを割くべきか:
クラウドサービス提供ベンダーの視点からみたクラウドの現状
http://www.itmedia.co.jp/enterprise/articles/0811/28/news043.html


この記事を読んで、日本のIT業界ではクラウドコンピューティングへの認識がいかに遅れているかを再確認しました。


岡本君ほどの男がこの内容で講演をしなければならない現実。

彼が、こういう活動に「やれやれ」と思っているのか、充実感を感じているのかは聞いてみないとわかりませんが。

あ・・・なんか誤解を招いていたかも知れません(汗;
ようやく気づきました。
岡本君ほどいろいろ知っていてアイディアも持っている人が話す内容が、聞き手の目線に合わせて会社紹介とクラウドって何?とクラウド使いましょうだけじゃもったいないですよね。岡本君ならもっと面白い話ができるのにね。でも周りがついていかないんだろうなぁ。

・・・って言いたかったのです。
叩いたワケじゃないんです。岡本君、ごめんね。
会社としては、今はこういう場でこういう話をすることは重要なんだろうね。



マルレクという、日本のエンタープライズ系IT業界の最先端に興味を持つ人々が集まるこのセミナーで、この内容で講演が行われる現実。
まだまだ認知度低いんですね。


この程度の内容なら、私にだって喋れます。


クラウドコンピューティングを「市場を形成するビジネス」として認識できていない層がまだまだ多いということなのでしょう。
国内ではまだまだ黎明期なのでしょうか。

事実、実用化・収益化できているベンダーはごくわずかです。



・・・。


このブログでも何度か言及してるので繰り返しになりますが、「どんなビジネスをやるのか?」が無いままに、ビジョンも不明確なままデータセンターだけ作って「SaaS参入」「クラウド参入」などと言い出すベンダーが多いがために、クラウドコンピューティングという言葉は「バズワード」とさえ言われるようになってしまいました。

春頃に、このブログで「SaaSありきでうまくいくはずはない」と書きましたが、この有様です。
「SaaSの収益化は難しい」
「SaaS(という言葉)はサービスの打ち上げにはいいが、利益には結びつきにくいのが現状だ」
http://www.itmedia.co.jp/enterprise/articles/0811/07/news118.html


未だにこんな発言をする大手SIerが幅を利かせていますし。
クラウドに興味を持っている顧客はいる。だが必ず「信頼性は?」と聞かれる。それは残念ながら,今のところないに等しい。「自己責任で使ってください,その代わり安いですよ」。そういうものだと理解している。
http://itpro.nikkeibp.co.jp/article/COLUMN/20081031/318289/


まだまだですね。はぁ・・・


November 15, 2008

OSS

最近、仕事では某国内ベンダー謹製のRDBMS、某国内SIer謹製の社内DAOフレームワーク、某国内ベンダー謹製のWebアプリケーションフレームワークを使っていますが、すべてプロプライエタリ・クローズドソースプロダクトです。
しかも、あまり情報がないマイナーな製品。

ドキュメントの不備・エラーメッセージの不親切・アヤシイ挙動というものは多かれ少なかれどんな製品にもあるモノですが、OSSならソースコードが公開されているのに・・・という、あまりにも大きいOSSのメリットを反面教師的にひしひしと実感中です。

ソースコードは最後の砦。ドキュメントになんと書いてあろうが、どんなメッセージを吐こうが、ネット上にどんな情報が転がっていようが、ソースコードが絶対です。プログラムは書いてあるとおりにしか動かないのですから。
ネット上の玉石混合な情報や不備の多いドキュメントに振り回され、ベンダーからの回答を待ち、どれだけの時間を消費したことか。
しかし、ソースコードさえ見られればすぐにわかることは多いのです。


こうして書いてみると、何を今更な・ごく平凡な・アタリマエのことしか言ってないのですが・・・本当に実感しているのです。


まあ、ノウハウも情報もあまり無いマイナーでクローズドなプロダクトよりはOSSってことで。

OSSを使う側でもいいけど、中の人になってしまえば公開されていないコードや情報にアクセスもできる?・・・というのも1つの手ですね(笑)

November 6, 2008

Salesforce.comが新サービスを発表

Salesforce.comが、米サンフランシスコで開催中のDreamforceで、様々な新サービスを発表しました。

  • Force.comアプリを外部公開サイトにできるForce.com Sites
  • Force.comアプリでGoogle Visualizationを利用できる
  • Force.comアプリのAmazon EC2/S3対応
  • Force.comアプリからFaceBook APIを利用できる


各機能の解説は各種ニュースサイトにお任せするとして・・・


この中で私が注目するのは「Force.com Sites」です。
http://developer.force.com/sites
単なる外部公開するWebアプリケーションPaaSプラットフォームとして強力なGoogle App Engine対抗となり得るばかりか、独自ドメインも使えるようですし、SFDCがこれまで提供してきたCRM等と連携して、アンケートやお問い合わせ・サポートなど、マーケティングツールとして幅広く使えそうですね。
Google App Engineで同じことをやろうとしたら自分で作り込まなくてはならない部分があまりにも多すぎます。
SaaSベースのCRMを提供している他ベンダー(OracleやSugarCRMなど)が同じことをやろうとしてもまた、自分で作り込まなくてはならない部分があまりにも多すぎます。
この機能はまだDreamforce参加者限定のプレビュー版ということですが、この機能を使うにはライセンス料がそれほど安くはなさそう・・・と予測しますが・・・。


それから、Amazon EC2/S3対応。
http://wiki.apexdevnet.com/index.php/Amazon_Toolkit
つい先日のエントリーで、オープン性・互換性についての懸念を書いたばかりですが、SFDCはちゃんと対応を考えていました。

まだチュートリアルをちゃんと見ていませんが・・・

Force.comで作成したアプリをAMIにしてAmazon VM上で動作させることができるのかな?

私は、ユーザがクラウドコンピューティングへの抵抗を感じるポイントとして、セキュリティ面の他に互換性の問題があると思います。
クラウドコンピューティングプロバイダのサービス廃止は、フェイルオーバー、サービス障害、プロプライエタリ技術による囲い込み以上に大きな問題です。ユーザは、SFDCのアプリを使えば使うほど、「これが無くなったらどうしよう?」と思いますから。
作成したアプリが、SFDCのクラウド上でも、Amazonのクラウド上でも動作できるならば、ユーザにとって大きなメリットになるでしょう。

ストレージとしてS3が使えるのも大歓迎です。


Facebook連携は・・・
日本国内ユーザはあまり多くないのでまぁいいでしょう(笑)

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

FireFox3.1β1

遅ればせながら使ってみました。



JavaScriptが速いという噂は本物のようです。

今のところ、私の中では Google Chrome と双璧です。

強いて言えばアドレスバーにキーワード入力して、候補も検索も瞬時に選べる使い勝手ではChromeが優位です。新しいタブを開くときに、カレントのタブのすぐ隣に開く動作も慣れると使いやすいですね。
しかし、ChromeはたまにIME(私はAtok愛用です)が効かなくなるのが痛い・・・

Chromeは複数プロセスで動作するのが面白いと思います。
多くのブラウザで採用されている同一プロセスでの動作は、元々はリソースの節約という目的もあったと思うのですが、クライアントPCのスペックがこれだけ上がれば複数プロセスでもかまわないという、割り切りというか、いままでの常識をひっくり返す発想がいかにもGoogleらしいです。

FireFoxはLinuxにも対応しているのが◎です。
Google ChromeもLinux対応しないかな・・・

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 14, 2008

iPhone 2.1

iPhone が 2.1 へアップデートされました。

IT系のニュースサイト等では、

  • バッテリーの持ちがよくなったこと
  • 日本語の連文節変換が可能になったこと
  • その他多数のバグフィックス
等が報じられています。


2日ほど使ってみた感想。

日本語の連文節変換も嬉しいのですが、変換や変換候補の表示動作そのものがかなり速くなったような気がします。アップデート以前は、特にWebブラウザ上での入力時などで「フリーズしたのか?」と思うほど遅く・重くなるケースも少なくなかったのですが・・・

それから、明らかに電波の入りが良くなっています。これはソフトウェアのアップデートではなく、私の自宅周辺の基地局が増強されただけかもしれませんが。

すべての iPhone ユーザーへ、2.1 へアップデートすることをオススメしたいと思います。

September 13, 2008

Android

Android は、Google が開発している携帯電話向け OS & プラットフォームです。
Apple iPhone のような、大画面・PC ライクなタッチパネル操作の UI の携帯端末が実現されます。

近々、台湾 HTC 製の端末が完成し、アメリカやドイツなどでサービスが開始されることが決まっていますが・・・

日本でも近々 Andoroid 携帯がサービス開始されるという噂もあります。そんなタイミングで Android のユーザグループ「日本 Android の会」が発足しました。


その発足記念式典に行ってきました。
http://android.siprop.org/index.php?FrontPage



目玉は、なんと言っても Google の Android チームのエンジニア Adrian Havill 氏による記念講演。
かなりムリをして仕事を抜けて聴きに来た価値がありました。

・・・しかし、その内容はコンフィデンシャルとのこと。

講演開始前に、報道も個人ブログもその内容を公表しないように、とアナウンスがありました。写真もNG。
(発足式典のプログラムは Android の会 Web サイト上で公開されているので、彼が記念講演を行ったという事実のみなら書いても大丈夫でしょう・・・)

  以前から感じていましたが、Google は世界中の情報をどん欲に集めますが、
  自らの情報を出すことには非常に慎重な企業ですね。。。



会長の早稲田大学客員教授・丸山先生の基調講演によれば、Android はオープンソースであること、クラウドコンピューティングが前提であることが特徴なのだとか。

Google のクラウド上のサービスを利用することが前提となっている携帯という感じです。

ビジネス上・マーケティング上の観点から見ると、オープンソースソフトウェアの SDK を使ってアプリを自由に作成し、作成したアプリを自由に配布できるという点が大きな特徴でしょう。

Apple の iPhone は、キャリア主導の壁は壊しましたが、ユーザから見るとソフトウェアの配布・販売がキャリアから Apple に移っただけとも言えます。

Google Android は、誰でもアプリケーションを自由に配布できるところが大きく異なります。

これが吉と出るか、凶と出るか・・・

Google のやり方は、誰にでも開放されるオープン性が素晴らしいのですが、どこにどんなソフトウェアがあるのか、わかりにくくなる可能性があります。
Apple のやり方なら、iTunes Store に行けばすべての iPhone アプリケーションを探すことができるというわかりやすさ・利便性があります。

加えて、Apple には独自の洗練された統一感のあるデザイン性・遊び心・ブランド力があり、一般ユーザには圧倒的に iPhone のほうが受けがいいのではないでしょうか。
私は iPhone でも Google のサービスばかり使っているぐらいなので、Android にはとても興味があるのですが・・・



会場には、端末のサンプルも展示されていました。



ちょっと、印象がダリの La persistencia de la memoria(The Persistence of Memory・記憶の持続 ※メモリの永続化ではありません(^^; )に似てませんか?
きっと、時計が宙に浮いているシュールさがそう思わせるのでしょう。


会場で、Google にいる知人に久しぶりに会いました。
最近「よくわからない肩書きランキング」で「エバンジェリスト」が第1位であることが話題になっていますが、これは IT エンジニアにはとても馴染みのある肩書きですよね。
しかしこの Google の知人の肩書きは「デベロッパーアドボケイト」でした。これはさすがに初めて見ました(笑)

日本 Android の会
Google Android

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以来のルールだそうです)等。

September 3, 2008

Chrome

Google の新しいブラウザ Chrome

さっそく使っています。

とにかく速い!!!

JavaScript の実行速度が、他のブラウザに比べて体感できるほどに、圧倒的に速い!!!
この速さについていくのに慣れるまで時間がかかるのでは?と思うほどに速い!!!

Gmail、Google Reader、Google Document をはじめとした Ajax を利用しているサイトの操作感が軽く、この上なく快適・快適。
Internet Explorer は言うに及ばず(正直、IE で Gmail なんか使えたモノではありません)、FireFox3 に比べても明らかに速いと感じます。

内部的には、Apple の Safari や Android と同じエンジンが使われているとのことです。
Safari では Thinklpad のトラックポイントでスクロールできないという問題がありましたが、Chrome では Thinkpad でも問題なくスクロールできています。

ユーザーインタフェースもシンプルで、フォントもきれい。非常に使い勝手の良いブラウザです。

まだβリリースですが、今のところ不具合も不安定さも見あたらず。このブラウザを使わない理由も見あたらず。
この、Google が巻き起こしたブラウザ革命に、ただただ驚くばかりです。


今まで FireFox3 を常用していましたが、メインのブラウザは今日から Chrome に決定です。
・・・というのにはさすがにムリがありますが(笑)、しばらく使ってみようと思います。

追記:
Gmailに添付されているファイルの名前に日本語を使っていると、日本語の部分は"-"で置き換えられてしまうという不便がありました。化けているのではなく意図的に置換している感じなので、不具合というよりは不都合・不便ですね。

Google Chrome
Google Japan Blog: Google Chrome をリリースしました

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 2, 2008

iPhone 1週間使ってみて

タッチパネル UI

素晴らしい!
「進む」「戻る」「選択する」「スクロールする」「拡大する」「縮小する」といった操作が直感的で意のままに操れます。
レスポンスも速く、Apple 製品特有の動きのなめらかさと遊び心があり、「操作が楽しい!」とさえ思わせてくれる端末です。


電話機能

全く問題なし。音も良いです。
強いて難を挙げると、電話している見た目がちょっと変なことぐらいでしょうか。


iPod 機能

素晴らしい!
タッチパネルによる操作は、従来の iPod よりも格段に使い勝手が向上しています。

音は、昨年買った iPod nano とそう変わらないだろうと思っていたら

・・・だいぶ違いました。

iPod nano はナチュラルめ・柔らかめな音に対してiPhone はシャキッとクリア・明快でエッジの効いた音です。悪く言うとちょっと硬めでギラついています。

昨年、ヘッドフォンを、SHURE の E2C から SE110 に変えました。

E2C が硬めでエッジが効いた音なのに対してSE110 はナチュラル系な音作りです。

なので、iPhone + SE110 の組み合わせはちょうど良い感じでした。
iPhone + E2C だとギラギラし過ぎて、すぐに聴き疲れしてしまいそうです。


日本語入力機能

タッチパネルからの入力作業そのものは快適です。
しかし、辞書・変換機能が全然ダメです。
日本語を入力する際は動作がとても重いです。
フリーズしたかと思うぐらいの時も。
この辺は国産の端末に一日の長があります。

ジャストシステムあたりと組んで日本製の IME を搭載して欲しかった・・・


メール機能

IMAP/POP メールを普通に使えるのがとても良いです。
標準の @i.softbank.jp のアドレスは 30 日間しか保存できませんが私は @i.softbank.jp のアドレスは使っていないので、全く問題に感じません。
絵文字は、表示は可能ですが入力できませんが、普段から絵文字を使っていないので、これもまた問題に感じません。


Webブラウジング

Mac と同じブラウザ Safari を搭載しています。
描画が速く、フォントがとにかくキレイ。
でもちょっと不安定ですね。突然強制終了することが1日に何度も。


オサイフケータイ

iPhone は対応していません。
私はモバイルスイカを使っていますが、カード型の Suica も持っているのでこれがないと困る・・・とは思いませんでした。


ワンセグ

iPhone は対応していません。
でもこれまでも私が使っていた携帯はワンセグ機能は無いし、私は基本的にテレビをあまり観ないので、これも困りませんでした。




日本の携帯電話は、ヨーロッパともアメリカとも、他のアジア諸国とも違う独自の文化を進化・発展させてきました。
この独自進化は時に「携帯電話のガラパゴス諸島」と揶揄されるほどです。

日本語連文節変換・予測変換・絵文字・デコメ・オサイフケータイ・ワンセグケータイ・・・

こういったガラパゴスケータイ特有の機能を存分に使いたい方にとっては、今の iPhone は使いにくく不満の残る端末だと思います。

しかし今の iPhone を「ガラパゴスケータイ」ではなく、モバイルインターネット端末ととらえると、非常に良くできた端末と言えます。


ここで注意していただきたいのは"今の"iPhone はという話なのです。
iPhoneは、Mac OS の上でソフトウェアが動作している、PC に近いアーキテクチャを持っています。
OS を含めた、ほぼすべてのソフトウェアが今後アップデートされる可能性があるのです。
端末を買い換えることなく、中身がごっそり入れ替わることも起こり得ます。

これが iPhone のすごいところ。

狭い日本市場を分け合っているキャリアやメーカー主導ではなく、グローバルカンパニーである Apple 主導で端末やソフトウェアが提供されます。
ソフトウェアベンダーが頑張って品質を上げてくることが期待されます。


・・・とは言え、現状、利用にあたっては多少のガマンや妥協が必要なのもまた事実です。

次世代のモバイルデバイスを先陣切って体験できる!
というところに喜びを感じられない方には、今はオススメできかねるのも正直なところです。

今は手を出さずにちゃんと成熟するのを待ってもよいのではないでしょうか。

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 27, 2008

iPhone買ってみました。





いろいろいじってみるのはこれからです。



1日使っただけですが・・・



Ajaxを使ったサイトを含めてPCのサイトを普通に見られること。

画面の拡大縮小が自由自在なこと。

IMAP対応さえしていればどのメールアカウントも普通に使えること。

iPodにもなること。



が、いいなと思いました。



携帯のメールアドレス変更になっています。

できる限り変更お知らせのメールを出しましたが、

届いていない方は連絡ください。

電話番号は変わっていないので。



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 な人も、あらゆる意味で注目です。

July 3, 2008

Tour de Force Tokyo 2008 へ行ってきました

Salesforce.com の開発者向けイベント Tour de Force Tokyo 2008 へ行ってきました。

午前に行われた基調講演は US 本社CEO兼会長であるマーク・ベニオフ氏の講演。
立ち見を含めてギッシリ満員御礼でした。

以前から Salesforce.com に興味を持ち、開発者アカウントでいろいろいじっていた私にはあまり目新しい内容ではありませんでしたが、その中で PaaS こそが Web3.0 であると言い切っていたのが印象的でした。
これには、多方面からいろいろな意見があるかとも思いますが・・・
いつもながらマーク・ベニオフ氏のメッセージはわかりやすく、しかし日本で発言するには少々刺激的にも感じます。

午後のセッションはシステム管理者、IT管理者およびビジネスアナリスト向け (アプリケーション構築初級)、開発者、プログラマ向け (Apex/Visual Force を駆使したプログラミング上級者向け)、ISV,起業家向けと分かれていました。もちろん私は開発者、プログラマ向けのセッションに参加しました。SFDC へ転職した後輩はシステム管理者、IT管理者およびビジネスアナリスト向けのセッションを担当していたらしいのですが・・・。

セッションの内容そのものは私には新しい情報ではありませんでしたが、デモコーナーで SFDC のエンジニアの方とお話しして、作成したアプリケーションのテストについての情報を得られたのが収穫でした。

Force Builder (Web上での開発環境) では、作成したアプリケーションには JUnit のようなメソッド単位のテストコードを書くことができ、75%以上のカヴァレッジが得られないと本番環境へのリリースができないようになっているそうです。
ただしテストコードは Force Builder に限られていて、ForceIDE (Eclipse プラグインでの開発環境) でのユニットテスティングフレームワークが提供されていないのが残念ですが・・・
UI 上のテストは、セレニウムなどを使うしかなさそうです。
しかし、SFDC のすべてのエンジニアがそのあたりを把握しているわけではなさそうです。初めに私が質問した方はテストについてはほとんど答えられませんでした。
後でSFDC へ転職した後輩に聞いたらすべてクリアになりましたが(笑)

エンタープライズ向けアプリケーションの開発では、手動&目視によるテストのみなどという状況はありえません。
少し規模のあるカスタムアプリケーションを作成した場合はユニットテスティングフレームワークが必要になると思われますので、開発者向けの機能に関する今後の展開に期待したいところです。
カスタムオブジェクトを扱う、DbUnit のように更新系テストのための機能を提供するテスティングフレームワークも欲しいですね。


それから、せっかくのテクニカルセッションなので、電源と無線LANを用意して、ノートPCをお持ちの方はその場で試せます!みたいになってるとよかったかも。
体験コーナーの台数も多くなかったし。


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 のアプリケーションサーバとしては、GlassfishApache 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 を使い倒してみたいと思います。

Sun の John Gage 氏が退社

少し前のニュースですが。

J・ゲージ氏、サン・マイクロシステムズを退社--クリーンテクノロジー投資家に転身
http://japan.cnet.com/news/ent/story/0,2000056022,20374980,00.htm

JavaOneで最初に総合司会的役割で登場する、あの John Gage 氏です。

映画俳優のような、渋さとダンディさとかっこよさとオーラのある方でした。

サン・マイクロシステムズ社員のブログでは、Gage 氏が来日・来訪したことは書いていますが、退社したことには一切触れられていないのが、ちょっと不思議な感じがします。惜しむ声があってもよさそうなのですが・・・なにか不文律でもあるのでしょうか。
それとも、自社社員の退社については触れないのが常識?

June 14, 2008

Google と富士ソフトの提携

率直に、素直に、単純に、驚きました。

全く正反対の企業文化を持つこの2社の提携。

「Googleで変えたい」と富士ソフトの堀田副社長 (ITmedia)
http://www.itmedia.co.jp/enterprise/articles/0806/11/news137.html

この2社に共通するのは「エンジニアは死ぬほど忙しい」という点だけかも(笑)

June 11, 2008

Google Developer Day 2008 Japan

Google Developer Day 2008 Japan
http://code.google.com/intl/ja/events/developerday/2008/home.html

行きたかったー!!!
今月いっぱいまでは1日たりとも休めない仕事なので、泣く泣く諦めました。


↓↓↓ このへんを見て、行った気分になることにします。 ↓↓↓

グーグルが日本で開発者イベント、取り組むべき「三つの課題」とは
http://itpro.nikkeibp.co.jp/article/NEWS/20080610/307447/

Androidの真価は“モバイル・マッシュアップ”---グーグルの担当者がデモ
http://itpro.nikkeibp.co.jp/article/NEWS/20080610/307445/

[Google Developer Day 2008]OpenSocialのセッション
http://builder.japan.zdnet.com/member/u332219/blog/2008/06/10/entry_27002287/

[Google Developer Day 2008]Google Gadgets
http://builder.japan.zdnet.com/member/u332219/blog/2008/06/10/entry_27002291/

[Google Developer Day 2008]Google Developer Day 2008にやって来ました。
http://builder.japan.zdnet.com/member/u332219/blog/2008/06/10/entry_27002266/

【Google Developer Day 2008】2年目の開発者会議、パシフィコ横浜にて本日開催
http://codezine.jp/a/article/aid/2634.aspx

【Google Developer Day 2008】次世代Webのキーワードは「3つのC」
http://codezine.jp/a/article/aid/2635.aspx


「Androidの真価は“モバイル・マッシュアップ”」なんて言われちゃうとiPhone 買おう!という意気込みが薄れちゃいます。
7月11日発売と聞いて買う気満々だったのですが(笑)


個人的に、 Google と提携した docomo や au にまさにそれを期待していたのですが・・・
意外とおカタイ携帯キャリアにはそういう発想は難しいのかもしれません。


でもまあ、開発者向けイベントということもあるのでしょうけど、公開されている API についてのセッションが中心で、Google の内部テクノロジーについてのセッションが無いのが残念と言えば残念。
GFS をはじめとして、Google には他に類を見ない独創的で常識を越えたテクノロジーがたくさんあるのに。

June 9, 2008

SaaSを取り巻くIT政策

看過できない言葉が並んでいます。

「システムの完成が半年遅れたら、サービスの開始も半年、1年遅れてしまう。これが原因でライバルに負けてしまうことだってあります。」
「事業者数で中堅・中小企業の8~9割を占める、10人以下の小規模な企業では、パソコンはあるんだけれども、電子メールくらいにしか使っていないという現状があります。」
「8~9割の小規模事業者は永遠にITを使わなくなるかもしれないといったくらいの危機感があります。」
「ITを活用する企業とそうでない企業の二極化は、深刻という言葉では表現しきれないところまで進んでいるといっていい。」

http://itpro.nikkeibp.co.jp/article/Interview/20080603/305821/

この、経済産業省 商務情報政策局 情報処理振興課長 八尋 俊英さんという方、ちゃんと見ているな、という印象です。

官公庁のIT戦略は現状を見ていない、使われ方も予想できないずさんなものも多いのですが、こういう方が日本のIT政策を牽引するなら、と期待します。


・・・というか、このレベルで議論される時点で日本のITを取り巻く状況ははまだまだとも言えます(笑)
当然の認識とされてしかるべきで、議論の余地など無いとも言えますが。

先日のこの記事を見て、SaaSありきでうまくいくはずはないと思いましたが、
http://www.atmarkit.co.jp/news/200806/04/unisys.html
この八尋さんという方はそれをわかっていらっしゃいますね。

まずは何をサービスとして提供するのか?が先にないと。。。

June 5, 2008

Mozilla Firefox3 RC2 リリース

β4以降、ブログでは扱っていませんでしたが、β5・RC1と使っています。

RC2 がリリースされました。
http://www.mozilla.com/en-US/firefox/all-rc.html

Mozilla Firefox3 の新機能で、あまり他所では紹介されていないモノを紹介したいと思います。

  1. タブをたくさん開いたとき、マウスカーソルをタブ上に持って行って、マウスのホイールをくるくるすると・・・
  2. F11キーを押して全画面表示すると・・・


全画面表示は、プレゼンなどでも使えそうです。


Firefoxでは、公開初日ダウンロード数の世界記録に挑戦しているそうです。

Download Day - Japanese

面白い試みですね。
私も登録しました。

May 31, 2008

SalesforceをVPNで利用可能に。

少し前の記事ですが・・・

セールスフォースのSaaS型アプリがVPNでも利用可能に--NTTグループと連携
http://japan.zdnet.com/security/story/0,3800079245,20373964,00.htm

それほど大きく取り合げられたニュースではないのですが、これは日本で普及するための大きな武器になるのではないでしょうか?

導入を検討企業にとっては、Google Apps との連携よりもこちらの方が、よっぽど大きなアピールになり得ます。

通信内容は暗号化されていようと、データセンターはどんなにセキュアだと言われようと、それでも重要な社内情報や顧客情報をインターネットに晒すことに大きな抵抗があると考える企業は多いですから。

May 25, 2008

Spring Framework 2.5.4 リリース

4月28日付けで、Spring Framework 2.5.4 がリリースされていました。
オフィシャルサイトのトップページにも、RSS 配信にも無かったので今日まで気づきませんでした・・・

http://sourceforge.net/project/showfiles.php?group_id=73357&package_id=173644&release_id=595476

2.5.3 からの主な変更点は下記の通り。

  • AspectJ が 1.6 になった(1.5.x との互換性あり)
  • JdbcTemplate で CallableStatement から null の ResultSets が返るのを検出してスキップするようになった
  • BeanPropertySqlParameterSource は MySQL との互換性のために JDBC 3.0 の Types.BOOLEAN をデフォルトで使わないようになった
  • Hibernate3.2 + ピュア Spring 管理 JTA トランザクションで、クエリ発行前にフラッシュ実行をサポート

詳細は下記を参照してください。
http://static.springframework.org/spring/docs/2.5.x/changelog.txt


あまり大きな変更点はありませんね。
ニュースにするまでもないってコトでしょうか。

May 12, 2008

SaaS 普及のカギ

今 SaaS を手がける代表的な企業といえば、Google と SalesForce.com です。

しかし、両社のサービスに私は不満です。

何がって?

SaaS Office Suite
(残念ながら?)世の中の人々(特に企業ユーザー)は、MS Office を手放せません。SaaS ドキュメントにも MS Office 完全互換を求めています。
Google Document が MS を打倒できない理由は、ズバリ MS Office 完全互換でないからです。一応 MS Office 形式でエクスポートは可能ですが、マクロは動作しないし、レイアウトが崩れたりします。
OOo の普及が進まないのも、MS Office 完全互換ではないからという理由に他ならないからでしょう・・・

MS さん!何やってるんですか?
Office ドキュメントと Web 上のドキュメントのインポート/エクスポートを完全に行える SaaS 形式の Office Suite をリリースすればみんな使うのに・・・
結局、最終的にはローカルへのインポート/ローカルからのエクスポートの需要はあるのだから、ユーザーが増えれば(減らなければ)Office は売れ続けるのに・・・
マクロも消えない、完全互換の SaaS ドキュメントは(現在のところ) MS だけが作れるものなのに・・・
「オープンである」とかはきれい事。特に企業ユーザからは MS Office 完全互換が求められているのが事実だと思います。
Web にインポート/エクスポートできる MS Office ドキュメントは厳密に言えば SaaS ではないのですが、ユーザが求める物を提供することは大事ですよね。


クラウド/ PaaS
SalesForce.com の Force.com は Apex という独自言語と独自 API がネックですね。他のプラットフォームへ移植できませんから。
Google App Engine も、同じ理由で Bigtable がネックです。

Sun さん!何やってるんですか?
完全 Pure Java なクラウド環境をリリースすればみんな使うのに・・・
Glassfish が使えて、H2 や Derby (JavaDB) が動作すれば言うことナシです。
Google App Engine なんてメじゃないのに・・・
完全 Pure Java なクラウド環境がリリースされれば Java テクノロジはますます躍進するでしょう。そして、Sun は PaaS 分野のリーダーとなれるでしょう。

・・・とここまで書いて思い出しました。たしか、Sun は非営利団体等へ仮想化サーバスペースを無償で提供するというソリューションをやっていたはず。・・・
ただし、米 Sun のサービスで日本語文字コードセットの扱いに問題があったような。
具体的な資料は探し出せず。。。残念。



Web メール
SaaS の普及がもっとも進んでいる分野が Web メールでしょう。Gmail、Hotmail (Windows Live! Mail)、Yahoo! Mail を利用している人はとても多いと思います。
しかし、メインではメーラーによる POP アクセスが主で、Web メールの利用はプライベートでは 30%、ビジネス利用では 10% 以下です。(2007年9月の記事による)

Web メールメイン利用、仕事では約9%・自宅では約30%
http://japan.internet.com/research/20070920/1.html

Web メールの利用はセカンドアドレスや「漏洩・流出してもかまわない、いざとなったら捨てられるアドレス」としての利用が大多数なのではないでしょうか。企業ユースではさらに比率が下がりますが、これは情報漏洩対策等の結果でしょう。


SaaSを使わない理由
こんな記事もありました。

SaaSを使わない理由――IT投資調査から
http://www.itmedia.co.jp/enterprise/articles/0805/14/news015.html
それなりに多いSaaS普及への課題
http://www.itmedia.co.jp/enterprise/articles/0804/25/news007.html

May 11, 2008

au one メール

au は Google と提携して、au one メールに Gmail を採用しているのですが・・・

Gmail の新バージョンになかなか対応しません。

au one メールは POP や IMAP を禁じているなど、標準の Gmail そのままではなくてかなりカスタマイズしている模様です。
おそらく、このカスタマイズゆえに Gmail 新バージョンへの対応が追いついていないのでしょう。

バージョンアップや機能追加に対応できないのなら、SaaS の意味が半減してしまいます。

変にカスタマイズしないで、デフォルトのまま Google Apps を利用すればいいのに・・・

ちなみに、livedoor mail がそのスタイルですね。

May 8, 2008

MySQL、新機能のクローズトソース化の決定を撤回

先月、「MySQL、新機能追加は有償版の「MySQL Enterprise」だけを対象に」という記事が Technobahn より出て、Sun が各方面の OSS 支持者の非難を浴びるという事件がありました。

MySQL、新機能追加は有償版の「MySQL Enterprise」だけを対象に
http://www.technobahn.com/cgi-bin/news/read2?f=200804172000


こんな苦しいフォローもありましたが・・・

「一部報道で、MySQLに対する今後の新機能追加は有償版である「MySQL Enterprise」のみに適用されるとあり、これがコミュニティーから強い不快感を招いているが、実際には、「一部」の機能やドライバがMySQL Enterpriseにのみに搭載されるという趣旨である。」
http://www.itmedia.co.jp/enterprise/articles/0804/21/news118.html


やっぱりこうなりましたね。

MySQL、新機能のクローズトソース化の決定を撤回
http://www.technobahn.com/news/2008/200805071431.html

クローズドソース化は MySQL の方針で、Sun の意向に反する(と主張している)ところが引っかかりますが・・・


ベンダーのオープンソース戦略の難しさを感じさせる一件だと思います。
オープンソースと言えば Linux カーネルや、Apache Software Foundation だった時代は、「オープンソース=有志によるボランティア活動」という色も強かったのですが、IBM の Eclipse が普及してきた頃から、ソフトウェアベンダーが自社製品をオープンソースライセンスで公開するという動きが急速に広まってきました。

しかし、中にはこの戦略がうまくいっていないベンダーがあります。

営利企業である以上、すべての事業は自社の収益に結びつけられるべきなのですが、オープンソース戦略はいかに大きい目・長い目で見て、業界全体が育っていくのを見守れるかにかかっていると思います。
一気にシェアを取りに行ったり、ライバルを意識して業界内での存在感をアピールしようとしたり、短期的な収支を考えたりという理由で焦ってもいいこと無いですね。

April 30, 2008

Google App Engine で Web アプリケーション ~ その2

Google App Engine は、Django というフレームワークがデフォルトで利用できます。この Django には強力なテンプレートエンジンが含まれています。

前回までのような方法で画面を出力するのは少々骨が折れますが、Django のテンプレートエンジンを使うと HTML ベースの画面を作りやすくなります。

Javaで言うところの、Velocity や FreeMarker のようなモノですね。


というわけで、今回はこれを利用してみました。


テンプレートとなるファイルを作成する

拡張子は .html で OK です。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ようこそ</title>
</head>
<body>
  <center>
    <br />
    <h3>ようこそ!{{username}}さん!</h3>
    <br /><br />
    <a href="/index.html">戻る</a>
  </center>
</body>
</html>


Django テンプレートでは、動的に値を埋め込みたい箇所は、{{...}} で囲み、括弧の中に変数名を記述しておきます。オブジェクトの属性にアクセスするには、user.username のように、. (ドット) で区切ってネストを指定します。


テンプレート出力処理を行うには

こんな風に書きます。

# テンプレートを取得
templatefile = os.path.join(os.path.dirname(__file__), 'テンプレートファイル名')
# パース・コンパイル・出力処理
self.response.out.write(
  template.render(templatefile, {'変数名':オブジェクト}))

template.render() メソッドの引数には、出力したいオブジェクトと、そのオブジェクトの変数名を連想配列の形式で記述します。複数指定したい場合は

template.render(templatefile, {'変数名1':オブジェクト1, '変数名2':オブジェクト2, '変数名3':オブジェクト3}))


のように書きます。



というわけで、前回のアプリケーションを、Django テンプレートを使ったものに書き換えてみると、こうなります。


[index.html]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ようこそ!</title>
</head>
<body>
  <form action="welcome" method="post">
    <center>
      <br />
      <h3>お名前は?</h3>
      <input type="text" name="username" size="30" />
      <br /><br />
      <input type="submit" value="送信" />
    </center>
  </form>
</body>
</html>


前回と同一です。


[WelcomeRequestHandler.py]

# coding: UTF-8

import os
import wsgiref.handlers

from google.appengine.ext import webapp
from google.appengine.ext.webapp import template

# webappのインポート
from google.appengine.ext import webapp

class WelcomeRequestHandler(webapp.RequestHandler):

  # HTTP post リクエスト処理
  def post(self):
      # リクエストパラメータ "username" の取得
      userName = self.request.get("username")

      # テンプレートファイルを取得
      templatefile = os.path.join(os.path.dirname(__file__), 'welcome.html')
      # パース・コンパイル・出力処理
      self.response.out.write(
        template.render(templatefile, {'username':userName.encode('UTF-8')}))

def main():
  # リクエスト URL パターンと、実行するクラスの関連づけ
  application = webapp.WSGIApplication([('/welcome', WelcomeRequestHandler)],
           debug=True)
  wsgiref.handlers.CGIHandler().run(application)

# アプリケーション起動時に main() 関数が実行されるようにする
if __name__ == "__main__":
  main()


前回は、HTML タグなどを直接出力していましたが、今回はテンプレートを利用してレスポンス出力を行っています。


[welcome.html]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ようこそ</title>
</head>
<body>
  <center>
    <br />
    <h3>ようこそ!{{username}}さん!</h3>
    <br /><br />
    <a href="/index.html">戻る</a>
  </center>
</body>
</html>


「ようこそ!{{username}}さん!」の箇所に注目です。WelcomeRequestHandler.py で、リクエストパラメータから取得した値を "username" という名前でテンプレートオブジェクトとして指定しました。この welcome.html では、その "username" という名前の変数の値を出力しています。


[app.yaml]

application: liebejudith-helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /welcome
  script: WelcomeRequestHandler.py
- url: /index\.html
  static_files: index.html
  upload: index.html
- url: /
  static_files: index.html
  upload: index.html


前回と同一です。


実行結果




実行結果も前回と同一です。


HTML センシティブな文字・記号のエスケープについて

Webアプリケーションでは、正しい表示やクロスサイトスクリプティング対策のために、< や、> など、HTML や JavaScript コードとして認識されてしまう文字をエスケープする必要があります。
現在のバージョンの Django では、デフォルトでエスケープが有効になっています。もし何らかの理由でエスケープ処理を無効にしたい場合は、


こんにちは {{ username|safe }} さん


のように、safeフィルタを利用します。
あるいは、


{% autoescape off %}
    こんにちは {{ username }} さん
{% endautoescape %}


のように、autoescape タグを使って、off オプションを指定します。Django テンプレートでは、タグの表記に {% ... %} を使います。


ループ処理を行うには

for タグを使います。Velocity や FreeMarker を使ったことのある方なら直感的におわかりでしょう。


{% for 要素 in リスト %}
    ・・・・
{% endfor %}


ループの中では、次の変数を利用できます。

forloop.counterループカウンタ(1から開始)
forloop.counter0ループカウンタ(0から開始)
forloop.revcounterループの終わりからのインデックス(1から開始)
forloop.revcounter0ループの終わりからのインデックス(0から開始)
forloop.firstループの最初の繰り返しの場合、True になる
forloop.lastループの最後の繰り返しの場合、True になる



条件分岐を行うには

if タグあるいは ifequal/ifnotequal タグを使います。

if タグを使った評価

指定した変数が存在するか・空ではないか(リストの場合)・Trueかを評価します。


{% if name_list %}
    ・・・・
{% else %}
    ・・・・
{% endif %}


or not and を使って複合的な評価も可能です。


{% if name_list or order_list %}
    ・・・・
{% endif %}



{% if not name_list %}
    ・・・・
{% else %}
    ・・・・
{% endif %}



{% if name_list and order_list %}
    ・・・・
{% endif %}



{% if name_list and not order_list %}
    ・・・・
{% endif %}



ifequal/ifnotequal タグを使った評価

2つの値が同一かどうかを比較します。
ifnotequal は同一でないかどうかを比較します。
2つの値はスペース区切りで指定します。


{% ifequal user.id comment.user_id %}
    ...
{% endifequal %}



{% ifnotequal user.username "liebejudith" %}
    ...
{% endifequal %}




画面部品をインクルードするには

include タグを使います。
ファイル名は、文字列リテラルで直接指定することもできますし、変数を使っての動的指定も可能です。


{% include "foo/bar.html" %}



{% include template_name %}




コメントを記述するには

{# ... #} で囲みます。


{# comment #}




テンプレートの継承

Django では、テンプレートを継承することができます。この機能は、同一レイアウト、同一部品を使った似たデザインの画面が多数存在する場合に非常に便利です。
子テンプレートでオーバーライドする部分は、{% block ブロック名 %} ~ {% endblock %} で囲んで記述しておきます。ブロック名はユニークな任意の名前です。


<html>
<head>
    <title>{% block title %}タイトル{% endblock %}</title>
</head>

<body>
    <div id="content">
        {% block content %}{% endblock %}
    </div>
</body>
</html>


あるテンプレートを継承したテンプレートを作成するには、{% extends "親テンプレート名" %} を記述します。そして、親で定義された {% block ブロック名 %} ~ {% endblock %} を任意にオーバーライドできます。


{% extends "base.html" %}

{% block title %}子ページ{% endblock %}

{% block content %}
content 部分のオーバーライド
{% endblock %}




変数値の出力、条件分岐、ループ処理、インクルード、テンプレートの継承と見てきました。これでたいていの画面は作成できるのではないでしょうか?


Django の翻訳ドキュメントも見つけました。Yasushi Masuda さん、Takanao Endoh さんという方が翻訳されています。

Django
http://ymasuda.jp/python/django/index.html

Django オンラインドキュメント和訳
http://michilu.com/django/doc-ja/index/

Django は、テンプレートエンジンだけでなくアプリケーション全体をカバーするフルスタックのフレームワークです。今回取り上げたテンプレートのリファレンスはこちらです。

テンプレート作者のための Django テンプレート言語ガイド
http://michilu.com/django/doc-ja/templates/

Django のユーザコミュニティも存在するようですが、残念ながら現在はサーバが止まっているようです・・・
http://djangoproject.jp/


私は Python 初心者のため、定石もお作法も知りません。バリバリの Python 使いの方から見たらとんでもないコードを書いているかもしれませんがご容赦下さい。間違いや「こうするもんだ」を指摘していただけるととても嬉しいです。

環境: Python 2.5

April 26, 2008

Ubuntu祭り

Ubuntu 8.04 LTS がリリースされましたね。
2年に1度のLTSとあって、この日を待っていた人は世界中にいるのではないでしょうか。

そんなわけで、今日の午前中に同僚がダウンロードを始めたのですが・・・

やはりというか、激重でした。

どこからダウンロードしているのか聴いたら、台湾のミラーだそうで。

通常、ミラーサイトはできるだけ近い場所を選ぶのが基本なのですが・・・

私はイタリアからダウンロードしてみました。

時差の関係でヨーロッパはまだ深夜です。
几帳面なドイツ人などは、深夜でも待ちかまえてダウンロードしそうですが、
イタリア人ならそこまでする人も少なそうだ・・・(イタリアの方、ゴメンナサイ)
と推測してみました。

思った通り!

台湾よりイタリアのサーバの方が軽いという結果でした(笑)


G.W.にいろいろいじりながらゆっくりインストールしてみるとします。

April 22, 2008

Google App Engine で Web アプリケーション ~ その1

Google App Engine には webapp という、Webアプリケーションのためのシンプルなフレームワークが用意されています。
前回はとりあえず Hello World まで行ったので、次はこの webapp フレームワークを使ってリクエストパラメータを受け取り、それを表示するアプリケーションを作ってみました。





私は Python 初心者のため、定石もお作法も知りません。バリバリの Python 使いの方から見たらとんでもないコードを書いているかもしれませんがご容赦下さい。間違いや「こうするもんだ」を指摘していただけるととても嬉しいです。

環境: Python 2.5


ソースコードを UTF-8 で書くには

ソースコードの1行目または2行目に


# coding: UTF-8


と書きます。

こうしないと、文字列リテラルの前には u'こんにちは' のように、毎回 u をつけないといけなくなってしまいます。それはあまりに面倒です。


HTTP post リクエストを受けるには

webapp.RequestHandler を継承したクラスを定義し、post() メソッドを定義します。

(例)


class WelcomeRequestHandler(webapp.RequestHandler):
  def post(self):


HTTP get リクエストを受けるには、post() ではなく get() メソッドを使えば OK です。使い方は post() と全く同一です。他にも、Restful なアプリケーション構築のために put() delete() head() trace() options() が用意されています。

 ※ Python って、メソッド?関数?どう呼ぶんでしょう?


リクエストパラメータ値を取得するには

RequestHandler オブジェクトに用意されている属性 request の get() メソッドを利用します。引数にはリクエストパラメータ名を指定します。

(例)


userName = self.request.get('username')


これは、"username" という名前のリクエストパラメータ値を取り出し、変数 "userName" に入れておく、という処理になります。


リクエストパラメータが来なかった場合のデフォルト値を同時に指定することができます。

(例)


userName = self.request.get('username', default_value="anonymous")


上記の場合、リクエストパラメータ"username"が来なかった場合は変数"userName"の値が"anonymous"になります。

同名のリクエストパラメータが複数来る場合は

(例)


userNames = self.request.get('username', default_allow_multiple=True)


この場合、変数 userNames は配列になります。


レスポンスを出力するには

こう書きます(^^;



self.response.out.write('出力したい文字列')




変数の値を出力するには

こう書きます。



self.response.out.write(変数名.encode('文字エンコーディング名'))


これ、ハマりました。self.response.out.write(変数名) とするだけでは、実行時に UnicodeDecodeError とエラーになります。Python を使い慣れている方なら何でもないことなのでしょうけど・・・


リクエスト URL パターンと、実行するクラスを関連づけるには

こう書きます。



def main():
  application = webapp.WSGIApplication([('URLパターン', クラス名)],
           debug=True)
  wsgiref.handlers.CGIHandler().run(application)




アプリケーションが起動したら main() 関数が呼ばれるようにするには

こう書きます。



if __name__ == "__main__":
  main()




ある URL にリダイレクトするには

redirect() メソッドを使います。


self.redirect('http://www.google.co.jp/', False)

2番目の引数に True を指定すると、HTTP Status 301 での Redirect になります。False を指定した場合は HTTP Status 302 での Redirect を行います。

 ※Python の True/False って、大文字からはじめるんですね・・・


例外発生時の処理を記述するには

RequestHandler クラスの handle_exception() メソッドを使うらしいのですが、使い方がよくわかりません・・・



以下、全ソースコード。

[index.html]


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ようこそ!</title>
</head>
<body>
  <form action="welcome" method="post">
    <center>
      <br />
      <h3>お名前は?</h3>
      <input type="text" name="username" size="30" />
      <br /><br />
      <input type="submit" value="送信" />
    </center>
  </form>
</body>
</html>


テキストボックスとsubmitボタンが一つずつあるだけのシンプルなフォームを実装した単純な HTML です。


[WelcomeRequestHandler.py]


# coding: UTF-8

import wsgiref.handlers

# webappのインポート
from google.appengine.ext import webapp

class WelcomeRequestHandler(webapp.RequestHandler):

  # HTTP post リクエスト処理
  def post(self):
      # リクエストパラメータ "username" の取得
      userName = self.request.get("username")

      # レスポンス出力
      self.response.out.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">')
      self.response.out.write('<html>')
      self.response.out.write('<head>')
      self.response.out.write('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">')
      self.response.out.write('<title>ようこそ</title>')
      self.response.out.write('</head>')
      self.response.out.write('<body>')
      self.response.out.write('  <center>')
      self.response.out.write('    <br />')
      self.response.out.write('    <h3>ようこそ!')
      # 変数値を出力する際には encode() 関数で処理する必要がある
      self.response.out.write(userName.encode('UTF-8'))
      self.response.out.write('さん!</h3>')
      self.response.out.write('    <br /><br />')
      self.response.out.write('    <a href="index.html">戻る</a>')
      self.response.out.write('  </center>')
      self.response.out.write('</body>')
      self.response.out.write('</html>')

def main():
  # リクエスト URL パターンと、実行するクラスの関連づけ
  application = webapp.WSGIApplication([('/welcome', WelcomeRequestHandler)],
           debug=True)
  wsgiref.handlers.CGIHandler().run(application)

# アプリケーション起動時に main() 関数が実行されるようにする
if __name__ == "__main__":
  main()


リクエストパラメータを受け取り、その値を使って「ようこそ!○○さん!」と出力するスクリプト。


[app.yaml]


application: liebejudith-helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /welcome
  script: WelcomeRequestHandler.py
- url: /index\.html
  static_files: index.html
  upload: index.html
- url: /
  static_files: index.html
  upload: index.html


/ あるいは /index.html が要求された場合は index.html を返し、/welcome が要求された場合は WelcomeRequestHandler.py が実行されるように設定しています。
app.yaml では、リクエスト URL パターンの関連づけを行いますが、.py スクリプトとの関連づけは、前回の Hello World で出てきました。
URL パターンと静的ファイルを関連づける場合は、static_files: エントリでファイル名を指定し、同時にサーバへアップロードするファイルを相対パスまたは絶対パスで指定します。


前回、「次回は掲示板でも・・・」なんて書きましたが、いきなり掲示板なんてとんでもなかったです。文字エンコーディングごときで大ハマリするぐらいですから。もっと少しずつ進めていきたいと思います。

April 18, 2008

MySQL、新機能追加は有償版の「MySQL Enterprise」だけを対象に

MySQL、新機能追加は有償版の「MySQL Enterprise」だけを対象に
http://www.technobahn.com/news/2008/200804172000.html
「MySQLは16日、米カリフォルニア州サンタクララで開催中のMySQLコンファレンスの席上で今後の新機能追加は有償版の「MySQL Enterprise」だけを対象としていく方針を明らかにした。」
「無償版の「MySQL Community Server」の提供は今後も継続されるが、無償版と有償版の開発は完全に切り離されることとなり、無償版と有償版の2つのMySQLはまったく別々の進化を遂げることとなる見通しだ。」

 ※technobahn のサイトが落ちているようなので、Google のキャッシュをご利用下さい。


Sun Microsystems の恐るべき愚行と言えます。
このニュースは、いったいどれだけの OSS 支持者を失望させ、どれだけの OSS 支持者の反感を買うのでしょうか?

今日六本木ミッドタウンで行われていた Sun Business .Next 2008 や G.W.明けの S.F.で行われる JavaOne 2008 で、オープンソース団体による抗議デモが行われても不思議ではないぐらいです。

今回発表されたこの方針に変更が無い限り、MySQL を離れるユーザは増加の一途をたどることでしょう。


こうだったはずなのに・・・

http://japan.cnet.com/news/ent/story/0,2000056022,20371630,00.htm
「Sunは、次バージョンMySQLの「ファイナルに近い」ビルドを公開するとともに、1月に10億ドルで買収した同オープンソースデータベース企業の文化を変更しないことを約束した。」

http://japan.cnet.com/news/ent/story/0,2000056022,20371536,00.htm
「Sun MicrosystemsがMySQLを10億ドルで買収した際に浮上した最大の問題は、両社の明白な文化的衝突だろう。長年、クローズドソース企業としてやってきたSunがオープンソース企業のMySQLを買収したことで、オープンソースコミュニティーの一部から、今後の成り行きを懸念する声が上がった。しかし、Sunは米国時間4月15日、買収をめぐるあらゆる疑問を払拭すべく、1月に買収が完了して以来、初となる大規模なMySQL開発者向けの集会MySQL Conference & Expoで、両社の相思相愛ぶりを演出した。」

GoogleAppsとSalesForcecomの提携

日本国内でも発表されましたね。

Salesforce for Google Apps
http://www.salesforce.com/jp/googleapps/?d=70130000000Dsim

プレスリリース
http://www.salesforce.com/jp/company/news-press/press-releases/2008/04/080417.jsp


SalesForce.com は来週に国内イベントを控えていることもあり、米国から幹部が来日して日本でも記者会見が行われました。

「Salesforce+Google Apps」の統合、日本で初のデモ (@IT)
http://www.atmarkit.co.jp/news/200804/17/sf.html

グーグルとセールスフォースが提携--その狙いと勝算 (CNET Japan)
http://japan.cnet.com/column/pers/story/0,2000055923,20371533,00.htm

「グーグルと“ソフトの終焉”に寄与」(ITpro)
http://itpro.nikkeibp.co.jp/article/NEWS/20080417/299412/

「グーグルと我々は同じビジョンを共有している。それはソフトウエアの終焉をもたらしたいということだ」は、
正直に「グーグルと我々は同じビジョンを共有している。それはMSの終焉をもたらしたいということだ」と言えばいいのに(笑)


大本営発表では「『ソフトウェアの終焉』が始まった」「ユーザーのSAP、オラクル、マイクロソフトへの依存が終わる」等、なかなか刺激的な言葉が並んでいますが・・・

今回の提携が Google Apps のシェアを一気に伸ばしたり、SaaS というサービス形態が一気に認知され普及するほどのインパクトを持つとは考えにくいです。
現実には既存の SalesForce ユーザの一部が恩恵を受けるのと、SaaS CRM 製品の導入を検討している新規のユーザにとって、SalesForce.com と競合する他社の Saas CRM 製品に対して多少のアドバンテージができる程度のものでしょう。今回の提携によって実現する機能は SalesForce を利用しないユーザにとって全く関係ありませんし、SalesForce を利用するユーザでもメールやオフィス等を Google Apps へ移行しないとメリットがありませんから。

とはいえ今回の提携は、SaaS アプリケーションのマッシュアップという、1つの事例を作ったと言えるでしょう。


「GoogleとSalesforceの提携は長続きしない」ZohoのCEOがコメント (INTERNET WATCH)
http://internet.watch.impress.co.jp/cda/news/2008/04/15/19219.html

まあ、これはライバル企業の発言なのでそれを勘案しておく必要がありますが・・・(^^;
Zoho としては何かコメントをしないで指をくわえているだけというワケにはいかない・・・という理由だけで出てきたコメントでしょう。


刺激的な言葉で満たされた大本営発表に、対抗しなければならないという理由だけで出てくるライバル企業のポーズ的な発言。
こういったやり方はとてもアメリカ的で、日本文化とは異質なモノを感じざるを得ません。日本の市場にしっかり根を下ろしたいのなら、それなりのマーケティング/プロモーションをしないと外資系ベンダの日本でのシェア拡大は難しいかもしれませんね。

April 14, 2008

iGoogle Art Cafe へ行ってきました



六本木ヒルズにて昨日から、4/24まで13日間限定オープンの iGoogle Art Cafe

iGoogle Art Cafe が期間限定で六本木ヒルズにオープン!
http://googlejapan.blogspot.com/2008/04/igoogle-art-cafe_12.html

早速行ってみました。

最近、Google のパーソナライズドホームページである iGoogle が、Airside、リリー・フランキー、日比野 克彦、隈 研吾、手塚プロダクション等国内のグラフィックデザイナーとのコラボレーションで各種テーマをリリースしていました。

アーティスト iGoogle
http://www.google.co.jp/intl/ja/help/ig/artist2008/nigo.html

このカフェはその iGoogle のコンセプトカフェです。

店内はゆったりとしたスペース。



各アーティストの作品やゆかりの品を展示するコーナーが壁面にあります。



PC 設置の席が半分、そうでない席でも無料で PC を貸し出してくれます。
ネットカフェ代わりにも使えそうですね。

店内の PC で自分の Google アカウントにログインし、iGoogle をコラボレーションアーティストのテーマに設定してそれを店内スタッフに見せるともれなく Google グッズがもらえます。



これら、T シャツ、ブックカバー、ミラー等のいずれかがもらえます。

私は、以前に某展示会でブックカバーはもらっているのでT シャツが欲しかったのですが、残念ながら当たったのはオリジナルミラーでした。






「シェフおまかせランチ」を頼んでみました。

ファミレスでも出てきそうな、ごく普通のグラタンです (^^;





デザートのワッフルとコーヒーが付いて¥1,100 なのでまぁまぁでしょうか。

こちらは Google 特製ランチ「Couleur de Google (クルール・ドゥ・グーグル)」。



一緒に行った方が注文しました。
お皿に、ココアパウダーで「iGoogle Art Cafe」と書いてあります。
ピラフは、いかにも冷凍ピラフをレンジでチンしたものだったそうで・・・(^^;

フード類は特に良くも悪くもないという感じです。
Google オフィシャルブログで紹介されている変な色のデザートやドリンクを頼んだ方が話のタネにはなりそうですね(笑)


iGoogle Art Cafe が期間限定で六本木ヒルズにオープン!
http://googlejapan.blogspot.com/2008/04/igoogle-art-cafe_12.html

April 12, 2008

「技術者の自己満足ではいけない」と「SE は技術オタクである必要はない」を混同してはいけない

「ウチは SE を育てますから、技術オタクにするつもりはありません」

春から秋にかけては新人研修の講師をすることも多い私ですが。

いまだに、こんなトンデモナイ勘違い発言をする SIer の人事・研修担当の方がたくさんいます。


技術者の自己満足ではいけない
これは正しいです。

お客様にとっては、どんなシステムができるのか?が重要でどんな技術を使っているのか?は重要ではない
表面的・直接的には正しいですが、あまり正確ではありません。
どんな技術が使われるのかは重要です。信頼できる技術・ノウハウが蓄積された技術・生産性の高い技術・保守性の高い技術が使われることは開発時や後のメンテナンス時のコストに影響しますから。

SE は技術オタクである必要はない
大間違いです。SE はシステムの専門家としてお金を稼いでいる以上、技術オタクであるべきです。お客様も周囲もそれを期待して専門家ならではの視点や考え方を求めます。自分が売っているものに対する製品知識は必要です。大事なのは技術オタクをそのままお客様に押しつけてはいけないということです。
建築に例えるなら、最新の設計手法・工法に興味が無く、最新技術に精通していない建築士を信頼できますか?常に最新の情報収集・最新技術の研究に努め、使える技術を採り入れる建築士とどちらを信頼できますか?
答えは自ずと見えてくるでしょう。


根本的に、技術者に向いている人・IT業界に向いている人は新しもの好きです。常に最新の情報にアンテナを張っている人です。そして、エンジニアとしてワクワクさせてくれるような技術を使ってみたい!と思っています。
実際の開発でも、ある技術を採用する理由として「エンジニアとして楽しそうだから・面白そうだから・使ってみたいから」という理由は、私はアリだと思っています。(※ もちろん、その技術がシステムに対する要件を満たしていることは大前提ですが。)
根本的に新しもの好きであるエンジニアがワクワクしながらやる気満々で取り組んだ仕事と、技術オタクな視点を完全に無視され、ルーティンと化した手法しか使わないで取り組んだ仕事。どちらが高い品質を期待できるでしょうか?

私は、ひがさんがよくおっしゃる「開発を楽しく」に非常に共感できます。

April 10, 2008

SpringSource Application Suite Enterprise Edition

L.A.にお住まいの方から日本Springユーザ会のMLに情報提供の投稿がありました。
SpringSource主催のトレーニングコースに参加した際に得た情報だそうです。

http://groups.google.co.jp/group/jsug/browse_thread/thread/98e78742e3bffdb6?hl=ja

この中で私の興味を引いたのは、SpringSource Application Suite Enterprise Edition に関する情報です。

  • 今月末頃に Tomcat + Spring をベースにしたアプリケーションサーバをリリース。クローズドなコードが含まれている。
  • 商用と GPL のデュアルライセンス
  • 商用ライセンスはサブクリプションベースのサポート付き
・・・クローズドなコードを含んだものって GPL で公開できましたっけ?

SpringSource社がCovalent社を買収したときに、こういう展開になるのではないかという声はありました。

Hibernate.org のブログエントリを読むと、JBoss 対 Spring という構図がより明確になっています。
http://blog.hibernate.org/Bloggers/SpringSourcesStrategy
ここでは Tomcat + Spring には機能が足りないことに言及していますが、Rod Johnson は、そういう観点で勝負する気は無いでしょう。

このMLの投稿でも「JBossの対抗馬」とされていますが、真っ向対立したいのであればJavaEE完全準拠のアプリケーションサーバを作ると思います。

Tomcat + Spring は今でも十分に支持されています。Rod Johnsonが考えているのは、今までの Tomcat + Spring というアプローチの延長線上のアーキテクチャでしょう。今の SpringSource社は VC から資金調達しているので利益を出さなければならないという事情があるようですが、この Tomcat + Spring スタイルでオフィシャルにサポート提供するのなら顧客は獲得できるのではないでしょうか。

今まで、Glassfish でもなく JBoss でもなく、Tomcat + Spring を選択してきたユーザには大歓迎ですね。

Javaの難しさ

Javaの難しさと一口に言ってもいろいろな側面がありますが、今日は製品選定の難しさに焦点を当てたいと思います。

Javaで開発を行う場合、開発環境、実行環境(アプリケーションサーバ)、ライブラリ、フレームワーク等々、各ベンダやOSSコミュニティが似たような機能を持った製品をリリースしていて、どれを使ったらよいのか開発者はいつも頭を悩ませています。
さらに、各ベンダやOSSコミュニティからは絶え間なく新製品や新バージョンがリリースされ続けているため、開発者は常に情報収集・調査・評価・検証を行い、そこに莫大なコストをかけています。・・・まぁ、だからこそ私のような仕事も成り立つのですが・・・
各製品個別の評価検証だけではなく、異なるベンダやOSSコミュニティからソフトウェアを入手した製品を組み合わせて動作確認するのも開発者の仕事です。その際に間接的に利用するライブラリ(依存ライブラリ)のバージョン違いによる競合が起こることも珍しくありません。

選択肢は多い方が良い、という理屈もあります。ベンダ間・OSSコミュニティ間の競争・競合が各製品の質を高める効果を生み出しているのもまた事実です。
しかし、今のJavaプラットフォームでの開発では、その選択肢の多さによるコスト増が勝っているような気がします。
そういう意味で、Javaプラットフォームでの開発よりも.NETプラットフォームでの開発のほうが余計なことに煩わされずに済んでいるのが現状なのではないでしょうか?

重要なのは、どんな技術を使ったか?や、どんなソフトウェアを使ったか?ではなくて、どんなシステム(アプリケーション)を作った(作る)のか?ですから。
率直なところ、開発の現場では「与えられたものを使っていればOK」な人が大半なような気もしますし・・・