JavaScript も HTML もかかずに Web アプリをつくる

猫も杓子も Web アプリケーションということで、0 インストールの優位性がよかったのか、営業さんの努力の結果か。 いわゆる基幹系の業務アプリも Web テクノロジーで作られるご時世ですが、ここで問題になるのが HTML と JavaScript 。 業務アプリをかくのは、ぼくみたいな業務ロジックをかくプログラマーであるわけで、HTML とか JavaScript とかよーわからん、ってところが正直なところ(笑)

おまけに、その手のアプリケーションで、ユーザインターフェースに多くの人員や工数をさけるほど余裕があるプロジェクトも少なく、かくして、「よーわからん」プログラマー達が英知を結集して、HTML と JavaScript をかきはじめ大変なことになるのはよく見る光景です。 🙂

てなわけで、立ち上がったソフトウェア業界(?)。 JavaScript も HTML もかかずに、ぜんぶ Java でかいちゃおうぜ、っていうフレームワークがいくつかあります。 まずは、彼ら自身も思っていたらしい Google さんの Google Web Toolkit。

Google Web Toolkit – Google Code

現在、ウェブ アプリの記述は退屈で、エラーが発生しやすいプロセスです。90% の時間をブラウザ固有の動作への対処に費やし、JavaScript はモジュール化できないため AJAX コンポーネントの共有、テスト、再利用を難しく、もろいものにしています。

・・・。

[tegaki]退屈でもろいっつったな!![/tegaki]

・・・その通りだ、よく言った(笑)

Web 企業の Google がいうんだから間違いありません。

もうひとつ。 日本でやっている人あんまり見つけられませんでしたが、GPL の ZK。

ZK – Direct RIA

ZK is the leading open source Ajax + Mobile framework. With 700,000 downloads, ZK empowers a variety of companies and institutions, ranging from small to large, including Barclays, Sun Micro, Swiss RE, Alcatel-Lucent, and many others… read the whole story>>

GWT のほうはよくみてませんが、どっちも Java でそれように設計された記述方法で画面をつくると、勝手に HTML と JavaScript を出力してくれます。

いろいろなコントロールが用意されていて、たとえば HTML のフォームにはないようなカレンダーとか、アイコン付きのドロップダウンリストとかサーバサイドのコードで「はりつける」と、うまいこと HTML と JavaScript がでてくれます。

AJAX の部分も隠蔽してくれるようになっているので、基本的に通信経路やエントリポイントについても考える必要が無く、ZK の場合は必要なイベントが発行された時に勝手に xmlrpc でサーバに通信して必要なデータの取得なんかしてくれるイメージです。 ネットワーク的にはなれていることすら意識しないでアプリをかく、というのが目指すところなのだと思います。

ZK も GWT も Java のフレームワークです。 今回はユーザインターフェースの部分だけですが、ZK を先日の Morph AppSpace にデプロイしてみました。

http://another.morphexchange.com/index.zul

いろいろギミックあるのでおしてみてください。

またそのうち消すので期間限定。 ちなみにたまに AppSpace が劇重になるのでアクセスできなかったらすいません)

ZK01

ぼくにはこんなのつくれねーっていう動きですが、20行くらいの XML 定義だけで出力してくれます。 IE7 でもみてみましょう。

ZK02

ちゃんと同じように動きます。 ブラウザの互換などの問題は、フレームワークが吸収してくれるので、ぼくは何の知識もなくクロスブラウザできるわけです。(ちなみに ZK は HTML をはくことだけを目的としていなく、たぶん他の RIA 部品にも対応できる仕組みを持っています)

かっこいいコントロールのデザインや、クロスブラウザ問題などを正しい知識を持った人がフレームワークとして実装し、業務ロジックはこれも正しい知識をもった(ぼくはもってないが。。)人が実装する。 実に合理的です。

Java も HTML も CSS も JavaScript もそれぞれ、本が何冊もかけるようなボリュームがあることです。 それを全部一人で覚えようというのは難しい話。 できるひとがいたとしても、そういう人を集めてプロジェクトをつくったらいくらかかるか分からないわけで、今後もこういった方向は進むのではないかと思います。 というか、ようやく元に戻ったとも言いますが・・・(笑)

あんまり ZK は日本でははやってない風ですが、遊んでいると結構面白いので Java できるひとはやってみるといいかもしれません。 ちなみに、上のサンプルは Java すら一行もかいていません。 .ZULE の xml てきとうにパクってはっただけです 😛

クラウドサーバ(?) Morph AppSpace に Pebble ブログをインストールしてみる

最近はやりのクラウドコンピューティング。 そのプロバイダのひとつである Morph AppSpace に、Pebble という Java でできたブログツールのデプロイを試しにしてみました。

なんだかおこられそうな使い方ですが、Morph AppSpace はインターネットで使える Java のアプリケーションサーバとして使えます。 1cube (1アプリデプロイ/1G容量、帯域) までは無料とのことです。 🙂

クラウドコンピューティングというのは、よく理解していないのですが・・・。

クラウドコンピューティング – Wikipedia

ネットワーク(特にインターネット)という「雲 = クラウド」の向こう側に、サービスを提供するサーバなどがあるが、ユーザーからはもはやサーバの場所も台数も構成も認識できず、単にサービスを受け取っているようなイメージといえる。

ということらしい。 WikiPedia にもありますが、言葉の視点が利用者になっているのでちょっとぼくらには分かりづらい。 実態はなんなんだって話ですが、クラウドというとぼくの中では「Java とかのアプリケーションサーバのレンタルサービス」?

みもふたもないですが、現在のところは Java アプリケーションサーバとか DB とか、Python とか Ruby on Rails とか、アプリケーションを動かすインフラがそろっていて、かつ一般のレンタルサーバよりも高信頼性なサーバで、それをお金を出して借り、そこに好きなアプリケーションを入れてお客さんにサービスを提供する。 といったところなんだと思います。

いまのレンサバでもできるじゃーん、って話ですが、いわゆるレンタルサーバよりもアプリケーションのインストールや運用に特化した環境ができているのが特徴です。

[tegaki]論よりラン(久しぶり)[/tegaki]

ってことで、Morph AppSpace は 1cube 無料で使えるということなので早速アプリを入れてみましょう。

Java/GrailsのWebアプリを無料クラウド環境で動かす (1/3) – @IT

本稿では、「Morph AppSpace」というサービスを紹介します。冒頭で紹介した「Google App Engine」では、Pythonで作成したWebアプリケーションしかデプロイ(配置と公開)できません(2008年9月現在)。しかしMorph AppSpaceは、JavaGrails、そしてRuby on Railsで作成したWebアプリケーションをデプロイできます(参考:iPhoneアプリプログラマーに目を向けるMorph Labs)。

デプロイという言葉がききなれないかもしれませんが、要はインストールとかセットアップということです。 Windows のクライアントのソフトウェアは setup.exe とかでインストールしますが、アプリケーションサーバがある環境ではこのような操作をデプロイといいます。

PHP とかファイルコピーで動く環境ではあんまりデプロイっていいませんが、要は Windows で setup.exe を使ってソフトをインストールするのと同じ感覚で、Java とかの Web アプリケーションは、アプリケーションサーバと呼ばれる環境に setup (デプロイ) します。

ここでは、Morph AppSpace のアプリケーションサーバに、Pebble という Java 製のブログツール(WordPress みたいなもん) をデプロイしてみます。

Pebble – Java blog server software

Pebble is a lightweight, open source, Java EE blogging tool. It’s small, fast and feature-rich with unrivalled ease of installation and use. Blog content is stored as XML files on disk and served up dynamically, so there’s no need to install a database. All maintenance and administration can be performed through your web browser, making Pebble ideal for anybody who is constantly on the move or doesn’t have direct access to their host. You can see an example blog here.

アプリのデプロイの詳細は前述の @IT の記事から…。 イメージ的には Java のアプリケーションの玉 WAR ファイルをネットワーク越しに、Morph AppSpace にコマンドを発行してデプロイします。

Peeble の場合は以下のような感じです。

java -jar morph-deploy.jar --user [ユーザー名] --password [パスワード]
  --config [morph で提供されているプロパティファイル名] [PebbleのWAFファイル名]

# Pebble のデプロイでは、"com.sun.syndication.propono.atom.server.AtomServlet " が、Class NotFound してしまうようでしたので、WAR の WEB-INF からこれらを削除していんちき対応しています。

この操作は setup.exe を動かすみたいなもんなので少し時間がかかる。 2分くらいして URL にアクセスしてみると…。

Morph03

おーうごいたうごいた。 (http://another.morphexchange.com/ そのうち消すかもですので期間限定)

ついでに Pebble も紹介。 特別な管理画面をもたず、ログインすると通常画面にメニューが増えるのが特徴の Java でかかれたブログツールです。

Morph02

さすがに WordPress に慣れていると機能が少ないなーと思ったりしてしまいますが、生の Servlet/JSP  でかかれているので Java の勉強にはいいと思います。

PHP だとアプリケーションサーバの考え方が mod_php ではないので、ちょっと考えにくいかもしれないですが、これらの環境で動作する Web アプリケーションはその生存期限が違います。

Morph AppSpace のアプリ管理画面。

Morph01

ここでデプロイしたアプリを管理できます。

PHP はファイルをコピーすれば、Apache が mod_php を呼んで動作させてくれますが、これは http アクセス契機で、アプリが開始終了します。

一方アプリケーションサーバで動作するアプリは、生存し"続け"られます。 アプリケーションサーバ上で明示的に指定するまで終わらないのですが、これを管理するのが上の管理画面です。

この2つ方式、いったい何が違うのかというと、一番分かりやすい例はメモリが使えるということです。

PHP とかはアクセス終了後すぐ終わっちゃうので、何かをメモリに保持しても無駄で初期設定とかいちいち DB とかファイルとかから読み直さねばなりません。 かたや、アプリケーションサーバがある環境ではメモリがつかえるので、初期設定や DB 接続を "維持" できます。

WordPress でも起動後、言語ファイルを読みに行ったりデータベースの接続をしたり、こういった初期設定を1アクセスごとにやっていますが、もしアプリケーションサーバ上で動くソフトであれば、これはアプリ起動時いっぱつだけですみます。 生き続けるのでデータ状態を保持できるのです。 また、コストのかかるデータベース接続も基本的に一度で済みます。

てなわけで、こういった処理が大量にあるエンタープライズアプリでは Java とかのアプリケーションサーバが使える環境でつくられるのが一般的(もちろん他にもたくさん理由はありますが)ですが、コンパイルやデプロイの時間なんかの作業効率が悪い部分もあって、どーしよーと考えられたのが、JRuby や JPython などの Java 上で動くスクリプト言語です。

スクリプト言語でぱきぱき run and debug しつつ、Java のアプリケーションサーバ環境も使えてしまうというおそるべきハイブリット。 Morph AppSpace でも groovy という Java 上で動くスクリプト言語が使えるようです。

とりあえず、Java アプリケーションを自由にデプロイできるレンタルサーバというのはなかなかないので、そういう意味でも Morph AppSpace は結構遊べます。 いまや、プログラマといえば Java 技術者みたいなところもあるくらいなので、PHP よくわからん! って方は試してみるといいかもしれません。 🙂

おれが小さいときはなんでも自分で作ったもんだ

「おれが小さいときはなんでも自分で作ったもんだ」 そう父親に小さい頃よくいわれた気がします。 スキー(竹スキー?)とか、竹馬とか遊び道具系のことだと思うんですが、いろいろつくって遊んでいたそうです。 たしかになんでも器用につくり、そして直す世代の気もします。

ものは壊れない限り使い続けるというのを信条としているようで、うちの実家のインターネットは ISDN です。。 なんと ISDN 専用電話という世にも珍しいものを購入しているためこれが壊れるまでは ISDN でいくことになりでしょう。。 orz

そんなこんなで、ここまで頑固ではないにせよ、たしかにぼくも壊れているものをみたら直そうとしてみたりする気持ちは人よりはあるかもしれません。 また、無いものはつくる、ということはできるかぎりします。

「おれが小さいときはなんでも自分で作ったもんだ」

小学生だったぼくも、ジャンルは違えど遊ぶゲームがなければ自分でつくったし、ツールがなければ自分でかきました。 今の子たちみると、父親がぼくをみて言ったように「ものがあふれているな」と思ってしまったりします。

資源がない国で、ものをつくる興味を失ったらおしまいだとおもうんですよね。 もちろん、形のあるもの、ないものいろいろあると思うのですが、何かを生み出す力というのは小さい頃からの積み重ねで培われる気もします。

さてぼくはちょっと前にかきました。

画像ぴこっとおしたら、その URL にとんでくとか、こういう Vista とか Google ガジェット芸能人とかの公式ブログで配布したらおもしろいのかな~と思いついてつくりました。 まぁこれは勝手に作っているもので(おまけに UNIX 用だ)、配布なんかできませんが、しょこたんみたいな更新が多いブログではなかなかいいかもです。 :-)

ないものはつくる。 そして完成したしょこたんブログガジェット。

syokotan02

その数日後の出来事でした。

syokotan01

[tegaki]ひ~~[/tegaki]

エキサイト、しょこたんといつも一緒!「しょこたんAIR」の配布開始 | パソコン | マイコミジャーナル

エキサイトは、タレント中川翔子のブログ「しょこたんブログ」と連動したAdobe AIRガジェット「しょこたんAIR」の無償配布を開始した。ガジェットは、コミュニティサイト「しょこらんど」からダウンロード可能。

・・・オフィシャルにはかないません。 ごめんなさい。。 orz (←おち