OpenLaszlo のコードを眺め、編集してみる

昨日 OpenLazlo 10 Minutes を試しました。
(実は OpenLazlo 10 Minutes を試した後、なかなか時間が割けなくて、数日経っています。)
とりあえず特徴を掴みたいので、今日はコードを眺め、少し編集していきたいと思います。

目的

まず、目的をはっきりさせます。
目的は、アプリケーション開発者の立場で OpenLaszlo を評価することです。
何といっても魅力があることは必要で、その上で習熟していないメンバーが数人集まって短期間でバグの少ないアプリケーションが作成できることが必要ですね。

魅力
  • 何ができるの?得意なの? → 使いたいか?
    • マルチRIAはなかなか魅力的です。
    • コンテンツは、デモを見た感じではとてもリッチです。エンタープライズ系のアプリケーションとしてどうなの?というのは、いったん置いておきます。
開発しやすい?

ソースを眺める

ファイルの拡張子

ファイルの拡張子は、lzxです。

canvasの上にコンポーネントを置きます

lzxファイル上では、<canvas> の間にいろいろなコンポーネントを置くようです。例えば、<text> とか、<button> タグなどです。

<canvas>
ここにコンポーネントを置きます。
</canvas>
コンポーネントの位置を指定します

canvas左上からの座標を指定します。


<text> タグを複数置くと、canvas の左上に重なって表示されます。

    <text>hello</text>
    <text>good morning</text>



個別に座標を指定します。

    <text y="10">hello</text>
    <text y="30">good morning</text>


◇レイアウトマネージャもあります
<simpleLayout> など、レイアウトマネージャもあり、個々のコンポーネントに座標指定しない方法もあるようです。

    <simplelayout/>
    <text>hello</text>
    <text>good morning</text>

ほか

<view> タグや <window> タグの上に様々なコンポーネントを置くこともできるようです。


lazlo 10 分学習や、OpenLaszlo Japan(日本語)のチュートリアルに詳しく書かれてましいたね。


NetBeans 上で編集してみる

新しいlzxファイルを作成する

新しいlzxファイルを作成する際は、 /Web/OpenLaszlo/ 以下のいずれかのファイルを指定するようです。

  • LzxCanvasTemplate.lzx
  • LzxLibraryTemplate.lzx
  • LzxViewTemplate.lzx



LzxCanvasTemplate.lzx を選ぶと、こんなコードが生成されました。

<!--=======================================================================-->
<!--                                                                       -->
<!-- LZX File Comments                                                     -->
<!--                                                                       -->
<!--=======================================================================-->
<!DOCTYPE canvas PUBLIC "LZX" "http://www.openlaszlo.org/lps/tools/lzx.dtd" >
<canvas>
</canvas>
コードを編集する

<canvas> と </canvas> の間にフォーカスをあて、編集していきます。

<canvas>
</canvas>
NetBeans のコード補完機能が利用できます

< と入力すると、タグの候補がドリルダウンされます。


<inputtext と入力してスペースを入れると、属性の候補がドリルダウンされます。


APIドキュメントは表示されません。


タグの誤りなどは、NetBeansが警告します

◇存在しないタグを入力したり、開始タグと終了タグが対応していない場合などは、NetBeansのコード補完機能で文字が赤く着色され、誤りを発見できます。



◇フォーカスを外すとエラー表示は消えてしまうので、「実行」-「XMLの妥当性検証」で検証することができます。以下は、エラーがある状態の妥当性検証の出力です。「XML検査」ウィンドウに表示されます。

XML 妥当性検査を開始しました。

file:/D:/reiko/NetBeans/projects6.5/OpenLaszloApp/web/newLzxCanvasTemplate.lzx を検査中...
"http://www.openlaszlo.org/lps/tools/lzx.dtd" での参照エンティティー。
The element type "label" must be terminated by the matching end-tag "". [24]
XML 妥当性検査が終了しました。

◇「構築」しても妥当性検証は行われず、「構築成功 (合計時間: 1 分 3 秒)」してしまいました。



◇エラーがある状態で実行することもでき、該当画面を開いた際に以下のエラーが表示されます。



構築か実行前に妥当性検証が行われるといいですね。


実行する

開始ページは、index.html 固定みたいです。指定する個所はみつかりませんでした。
index.html を編集し、先ほどのファイルを実行してみます。
デモの index.html を参考に、Flash 形式と DHTML 形式の両方で動かすことにします。lzx= の後に実行形式を指定するんですね。

<ul>
  <li> newLzxCanvasTemplate
      <ul>
        <li> <a href="./newLzxCanvasTemplate.lzx?lzr=swf8">newLzxCanvasTemplate(Flash)</a> </li>
        <li> <a href="./newLzxCanvasTemplate.lzx?lzr=dhtml">newLzxCanvasTemplate(DHTML)</a> </li>
      </ul>
  </li>
</ul>
デバッグする

プロジェクトの右クリックで「デバッグ」を選ぶと、以下のダイアログがでました。
IEFirefox ですね。私の PC は chrome がデフォルトですので、FireFox に変更しておきます。「ツール」-「オプション」-「一般」-「Webブラウザ」で変更できます。


プラグインをインストールするようです。FireFox 落とすの?やだな。


NetBeans FireFox Extension というプラグインがインストールされました。ふーん、こんなのがあるんですね。


NetBeans を見ると、実行したソースから生成されたファイルが開いてました。

以下は、lzxファイルを実行した結果のサンプルです。(適当に改行をいれてます。)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="SHORTCUT ICON" href="http://www.laszlosystems.com/favicon.ico">
    <link rel="stylesheet" href="/OpenLaszlo411App/lps/includes/console.css" type="text/css">
    <title>OpenLaszlo Application</title>
    <script src="/OpenLaszlo411App/lps/includes/embed-compressed.js" type="text/javascript"></script>
  </head>

  <body>
    <script type="text/javascript">
      lz.embed.swf({url: 'newLzxCanvasTemplate.lzx?lzt=swf&lzr=swf8', bgcolor: '#ffffff', width: '100%', height: '100%', id: 'lzapp', accessible: 'false'});
    </script>

    <noscript>
      &#12450;&#12503;&#12522;&#12465;&#12540;&#12471;&#12519;&#12531;&#12434;&#21033;&#29992;&#12377;&#12427;&#12395;&#12399;JavaScript&#12434;&#26377;&#21177;&#12395;&#12377;&#12427;&#24517;&#35201;&#12364;&#12354;&#12426;&#12414;&#12377;&#12290;
    </noscript>

    <div id="footer" style="position: relative">
      <div id="console">
        <iframe id="dhtml-application" src="/OpenLaszlo411App/lps/admin/dev-console.html?lzappuid=newLzxCanvasTemplate.lzx&;appinfo=%3Cdata%3E%3Crequest+lps%3D%22%2FOpenLaszlo411App%22+url%3D%22newLzxCanvasTemplate.lzx%22+relurl%3D%22newLzxCanvasTemplate.lzx%22+fullpath%3D%22%2FOpenLaszlo411App%2FnewLzxCanvasTemplate.lzx%22+opt-url%3D%22newLzxCanvasTemplate.lzo%22+unopt-url%3D%22newLzxCanvasTemplate.lzx%22+query_args%3D%22%26amp%3Blzr%3Dswf8%22+pocketpc%3D%22false%22+console-remote-debug%3D%22null%22+console-floating-window%3D%22null%22+appuid%3D%221230299332937%22+windows%3D%22true%22+opt-exists%3D%22false%22+%3E%0A%3Cparam+name%3D%22lzr%22+value%3D%22swf8%22%2F%3E%0A%3C%2Frequest%3E%3Cinfo+size%3D%22147451%22+debug%3D%22false%22+encoding%3D%22null%22+debug-exists%3D%22false%22+debug-up-to-date%3D%22false%22+nondebug-exists%3D%22true%22+nondebug-up-to-date%3D%22true%22+runtime%3D%22swf8%22+gzsize%3D%22147514%22+lfcsize%3D%22285463%22+gzlfcsize%3D%2292524%22+%2F%3E%3C%2Fdata%3E" style="width: 100%; height: 70px" width="100%" height="70">
        </iframe>
      </div>

      <div class="info">

        <b>&#12479;&#12540;&#12466;&#12483;&#12488;&#12521;&#12531;&#12479;&#12452;&#12512;: </b>
        swf8
        <br>
        <b>&#12450;&#12503;&#12522;&#12465;&#12540;&#12471;&#12519;&#12531;&#12469;&#12452;&#12474;: </b>
        144K(147,451 bytes)
        <a target="_blank" href="newLzxCanvasTemplate.lzx?lzt=info&;lzr=swf8">&#12469;&#12452;&#12474;&#24773;&#22577;</a>
        <br>

        <a href="newLzxCanvasTemplate.lzx?lzt=html&;lzr=swf8">Show application only</a>
      </div>
    </div>
  </body>
</html>

ちなみに、実行画面で「view source」してみると、記述したソースそのままが表示されました。



デバッグを終了すると、「デバッグ」ウィンドウにこんな表示がでました。もう一度デバッグセッションを終了すると消えました。見方はわかりません。

テスト

コード補完されたタグに Test で始まるものがいくつかありました。Testing Framework があるみたいですね。


とりあえず

見よう見まねですすめてみましたが、こんな感じで 10 minutes や サンプルを見ながらコンポーネントを置いていけばよいのかもしれません。
本気アプリを作成したわけではないので、細かい使い勝手はわかっていませんが、開発方法などについてはいくらか理解できたような気がします。
残念ながら、ここでいったん nbopenLazlo の作業を止めたいと思います。ICEfaces 等、優先度が高いテーマに取り組むことにします。