新しい PC が欲しい。

どうも最近忙しく、その日のうちに帰れればいいような生活パターンになってしまっているので、、まぁそれはいいとしてなにかと時間がたりないっす。 WordCamp もいけなかったし残念な限りであります。 趣味のひとなんだけどなー、こんなはずでは(笑)

読みたい本もたくさんあるし、つくりたいものもいっぱいあるんだけど、なかなか手が回らなくてくやしいわけです。

さて、関係ないですが新しい PC がほしくなってきました。

いまのきかいは、Athlon64 の 3000 だっけか。 ぼくは Eclipse がうごいていればいいくらいなので、別に CPU がおそいと思ったことはないのですが、さしている GeFocrce のファンが猛烈に回っているのがなんとも。。 どうも、このボード、リファレンスとファンコントロールの設計が違うらしく、nVidia のドライバで動作させると、ファンはいつもフル回転状態に。

いまさら、AGP のカードをかうのももったいないので、どーせならそろそろ買い換えたほうがよいかと・・・。 AMD Phenom のエラッタもとれたみたいなので、ここらで4コア CPU を。

shuttle01

ぼくは Shuttle の Cube と AMD の CPU を愛してやまないので、このへんになると思います。 Phenom は型番おしりに e がつくと低電圧版らしい。 2 万ちょいで 4コア CPU がかえちゃうんだからいい時代になったもんです。 このベアボーンが 3万円後半なので、あとディスクとメモリ 4G で7.5万円くらいでそろうかな?。

OS はこのまま Ubuntu。 nVidia から純正のチップセットドライバがでているので特に問題ないはず。 実はうちの PC はどれも Linux 化が視野にはいっていて、デスクトップ系は全部 nVidia のチップセットだったりします。

nVidia といえば 3D。 3D といえばメガデモ(?)。

Final Realty とか懐かしい限りですが、Linux でうごくものもいくつかあります。 なんとなくいまさしている GeForce (5800だっけか、すげーふるい) で動かしてみました。

Lightsmark_01

LIGHTSMARK – next generation lighting benchmark

multiplatform benchmark/demo with REALTIME GLOBAL ILLUMINATION and PENUMBRA SHADOWS

ええと、結果。 最大でも 14コマでした。(笑)

最近の GPU ならこれくらいどれもフルフレームでいけるのかな。 新しいのかったら試してみたいと思います。 🙂

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 よくわからん! って方は試してみるといいかもしれません。 🙂