GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Jon Rose , 翻訳者 金森 諭 投稿日 2009年6月14日
今週(2009年6月1日)AdobeはFlex 4の正式な初ベータ版をリリースしました。Flex 4はGumbo(オクラ)というコードネームで開発されています。今回のリリースには大きな変更が多数含まれています。このRIAフレームワークの最新バージョンにおいて変更された事柄についての概要を以下のリストで見ていきましょう。
Flex 4の開発において一番の重点となっているのはAdobe Catalystのサポートと連携です。Catalystはコードを書かずにRIAの部品を作るための新しいデザイナツールです。Catalystは、アプリケーションディベロッパとデザイナが別々に作業しながらも協働できるようにしようとしています。また、両者がそれぞれ得意とすることに集中できるよう、それぞれが慣れ親しんだ従来の方法で作業できるようにもされています。このリストにある事柄の多くはFlexとCatalystとの連携を高めるためのものになっています。
Adobe Catalystについての詳細はこちらを参照してください。
Flexにはアプリケーションを作る上で必要となる一般的なコンポーネントを多く備えたライブラリがあり、データグリッド、ボタン、レイアウトコンテナなどが含まれています。Flex 4はSparkと呼ばれるコンポーネントアーキテクチャ(Flex 3ではHaloと呼ばれていました)を基盤にしています。Catalystのサポートという取り組みの大部分は、コンポーネントモデルを改良して、より高いレベルで関心事の分離を実現することによって実現されます。
新しいSparkコンポーネントモデルでは、コアロジック、スキン、レイアウトが分離され、それぞれを独立して扱えるようになりました。SparkコンポーネントモデルはHaloコンポーネントモデルをベースにしています。これが意味するのは、基本的にSparkがHaloのコアな基本クラスであるUIComponentを拡張しているということです。それによってFlex 3からFlex 4へなだらかに移行でき、Flex 3コンポーネントをFlex 4アプリケーションで使うこともできます。
Flex 4ではエフェクトもアップデートされ、任意のオブジェクトや型にエフェクトがかけられるようになりました。それによって利用法が格段に広がりました。Flex 4のエフェクトは新しいパッケージ「spark.effects」に納められています。新しいコンポーネントライブラリ同様に、このエフェクトライブラリも一から実装がおこなわれ、Flex 3への後方互換性はありません。Gumbo版エフェクトの詳細については、Chet Haase氏のFlex 4エフェクトに関する記事、あるいは彼のブログを参照してください。
Sparkアーキテクチャの詳細はこのホワイトペーパーをご覧ください。
MXMLはXMLベースのアブストラクション(抽象)で、Flash Playerのプログラミング言語であるActionScript 3を基礎にしています。MXMLはユーザインターフェースの可視コンポーネントをレイアウトするのに用いられ、IDEのようなツールをサポートするためのものです。そして今回はCatalystもサポートされるようになりました。MXML 2009は(コア、スキン、レイアウトの)異なる振る舞いを分離するようにアップデートされました。また、Flex 3のコンポーネントとは独立したパッケージ(spark.components)に納められたFlex 4のコンポーネントライブラリも、MXML 2009に新しい名前空間が加えられてサポートされています。
下のアプリケーション宣言部分の例では、SparkとHaloの両方のコンポーネントの名前空間を利用しています。
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo">
こうすると、Flex 4のボタンを次のように使用することができます。
<s:Button label="My Flex 4 Button" />
Flex 3のボタンを使うときは次のようになります。
<mx:Button label="My Flex 3 Button" />
変更になった他の点もMXML 2009仕様で確認してみてください。
Flex 2からFlexフレームワークにステート(状態)の概念が加わり、シンプルな状態変化によって可視コンポーネントを管理することができるようになりました。Flex 4では構文を簡素化してビューステートがより簡単に使えるように改良がされました。簡素化した構文には、新しい言語属性であるincludeInやexcludeFromがあります。これらはコンポーネントに付与するもので、それによりある状態変化に対してそのコンポーネントがどのように振る舞うかを指定できます(以下の例)。
<!-- Given the states A,B,C -->
<m:states>
<m:State name="A"/>
<m:State name="B"/>
<m:State name="C"/>
</m:states>
<!-- This button will appear in only states A and B -->
<Button label="Click Me" includeIn="A, B"/>
<!-- This button will appear in states A and B -->
<Button label="Button C" excludeFrom="C"/>
ビューステートの変更点についての詳細はこちらをご覧ください。
Flash Playerは本質的に描画エンジンです。AdobeはFlash Player 10でFXGを導入することでその描画エンジンを強化しましたが、今度はFlexにも導入されることになりました。FXGは宣言型のグラフィックフォーマットで、ツール間でデータがそのまま使えるようになっています。そのことで、デザイナがCatalystやCS4 Illustratorで画像を作成し、Flexアプリケーションのディベロッパがそれをインポートして変更なしで利用する、といったことが可能です。
詳細はFXG仕様をご確認ください。
Sparkコンポーネントモデルになって一番変わったのはスキンです。総点検を受けた新しいスキン機構は、コンポーネントの全てのビジュアル要素をコントロールし、それに関するロジックをコンポーネントのコア部分から外に出すことができます。それによってコアロジックとは独立してコンポーネントのビジュアル要素を変更することが可能です。
例として、PanelコンテナのデフォルトスキンであるPanelSkin.mxmlを見てみましょう。
<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" alpha.disabled="0.5">
<fx:Metadata>
<![CDATA[
/**
* @copy spark.skins.default.ApplicationSkin#hostComponent
*/
[HostComponent("spark.components.Panel")]
]]>
</fx:Metadata>
<fx:Script>
/* Define the skin elements that should not be colorized.
For panel, border and title backround are skinned, but the content area and title text are not. */
static private const exclusions:Array = ["background", "titleField", "contentGroup"];
/**
* @copy spark.skins.SparkSkin#colorizeExclusions
*/
override public function get colorizeExclusions():Array {return exclusions;}
/* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
static private const contentFill:Array = ["bgFill"];
/**
* @inheritDoc
*/
override public function get contentItems():Array {return contentFill};
</fx:Script>
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
</s:states>
. . . . .
<s:Rect left="1" right="1" top="31" height="1">
<s:fill>
<s:SolidColor color="0xC0C0C0" />
</s:fill>
</s:Rect>
<!-- layer 5: text -->
<!-- Defines the appearance of the PanelSkin class's title bar. -->
<s:SimpleText id="titleField" lineBreak="explicit"
left="10" right="4" top="2" height="30"
verticalAlign="middle" fontWeight="bold">
</s:SimpleText>
<s:Group id="contentGroup" left="1" right="1" top="32" bottom="1">
</s:Group>
</s:SparkSkin>
このスキンの役目はPanelコンテナの見た目をコントロールすることなので、コンポーネントのソースコードを編集したりコンポーネント内部の振る舞いを理解しなくても、デザイナはコンポーネントの見た目を変更することができます。さらに重要なのは、デザイナがCatalystで自分にあった方法で作業できることです。
Gumboコンポーネントのスキンの詳細はこちらをご覧ください。
Flex開発に慣れている人たちは、Flex 3で使われていた主要コンテナがGumboのコンポーネントライブラリに含まれていないことにお気付きになると思います。これは、レイアウトが分離されてデリゲーション(委譲)によって扱われることになったからです。Flex 3のほとんどのコンテナは、単に異なるレイアウトの型のために存在していましたが(たとえばHBoxは水平レイアウトに、VBoxは垂直レイアウトに、というように)、これらはもはや必要なくなったのです。
Flexディベロッパがレイアウトを定義する方法の1つをお見せしましょう。ここでは複数のボタンを管理するのに、新しいSparkのコンテンツ管理クラスであるGroupクラスを使っています。これを実行すると、Flex 3のHBoxを使ったときと同じように、2つのボタンが画面の両側に表示されます。
<s:Group width="400" height="400">
<s:layout>
<s:HorizontalLayout paddingLeft="5" paddingTop="5" />
</s:layout>
<s:Button label="Button 1" />
<s:Button label="Button 2" />
</s:Group>
新しいレイアウト機構については、AdobeのRyan Stewart氏が司会役となって話をするビデオが公開されています。http://blog.digitalbackcountry.com/2009/05/flex-4-layouts-on-tech-talk-with-ryan-stewart/
以前はFlex Builderという名前だったFlash Builderはアプリケーションディベロッパ向けのEclipseベースのIDEです。最新版のFlash Builder 4では、条件付きブレークポイント、リファクタリング機能の強化、FlexUnit 4のサポートが加わりました。そしてこれまでと同様に、MXMLエディタ、ActionScript 3エディタ、CSSエディタ、ビジュアルデザイナ、パフォーマンスおよびメモリのプロファイラを備えています(プロファイラはProfessional版のみです)。
さらに、Flash Builder 4では進化したデータ管理機能も加わり、データ中心(data-centric)アプリケーションの開発を容易になります。この機能にはクライアントサイドでのデータ管理機能も含まれ、大きなデータに対してCRUD操作をおこなったりスクロールしながら次々データを取得・表示したりすることができます。
このIDEについての詳細はこちらからご覧ください。
Flexアプリケーションディベロッパのほとんど全員にとってコンパイラの遅さは大きな苦痛でした。そのため、Flex 4でコンパイラのパフォーマンスを向上させることがGumboの公の目標のひとつにしました。この点については、公式のベンチマークは公表されていません。しかし、AdobeのPeter Donovan氏は作業の初期段階で、大幅な再構築をおこなわなくても25%は向上するに違いないと述べています。また3、4倍の改善をするには再設計が必要だとも述べています。この問題が2009年末にリリースされるFlex 4で解決されていることを、エンタープライズFlexアプリケーションの全ディベロッパが望んでいるのは間違いありません。
Peter Donovan氏の発言の詳細についてはこちらをご覧ください
Flashベースのアプリケーション(FlexベースでもFlexベースでなくても)に対する主な酷評のひとつが、テキストを効果的に扱えないことでした。AdobeはFlash Player 10で、新しいテキストエンジンを導入し、リッチインターネットアプリケーションに必要とされるもの(マルチ言語、印刷、キーボードショートカット、など)のサポートをおこないました。Gumboでもいくつかの新しいテキストクラス(RichText、SimpleTextなど)が加わり、Flexフレームワークでよりしっかりとしたテキストがサポートされるようになります。さらにAdobeは、すべてのActionScript 3ディベロッパがFlash Playerのテキストエンジンのパワーを活かせるように、新しいText Layoutフレームワークに取り組んでいるところです。Text Layoutフレームワークについてはこちらをご覧ください。http://labs.adobe.com/technologies/textlayout/
これらの広範囲にわたる変更点を見てお分かりのように、Flex 4は一般的なRIAプラットフォームへ向けてさらなる一歩を踏もうとしています。Flex 4 SDKでの変更点についての情報は、Matt Chotin氏のWhat's new in Flex 4 SDK betaをご覧ください。
Jon Rose氏はエンタープライズソフトウェアのコンサルタントで、コロラドのボールダーにあるGorilla Logic社のFlex Practice Directorです。またエンタープライズソフトウェアのコミュニティのひとつであるInfoQの編者・寄稿者であり、酒とソフトウェアが大好きな人々に向けて動画を配信するDrunkOnSoftware.comの共催者でもあります。これまで民間および政府機関の大小のクライアントと仕事をしてきており、問題解決への情熱によって質の高いソフトウェアを作り出しています。氏のブログはこちらです。http://ectropic.com
どちらかといえばこちらです
en.wikipedia.org/wiki/Gumbo
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式
本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。
前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。
Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。
スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。
1 comment
スレッド表示 返信