JSP_Blog

IMジェイエスピー社員が綴る日替わりブログ

Flex4.6を語る

2012-01-19 23:55:33 | 日記
 昨年11月29日に、FlexSDKのバージョンが4.6にアップデートされました。

 http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4.6

 FlexSDKが4.xになって以降、はっきりいって使い物になりませんでしたね。
 バグだらけで。
 Flex3.5とか3.6のほうが、全然マシでした。
 よくもまァAdobeはこんなバグだらけの状態で、FlashBuilder4!とか意気揚々と出したものだと思いましたよ。
 ドロップダウンリストの値をActionScript側でまともに取得できなかったり、テキストボックスやテキストエリアにmaxCharsプロパティ(最大入力字数)を設定すると、また同じくActionScriptで全角文字を取得できなかったり…。
 そーいえば、DataGridもなんかイマイチでした。
 そんな状態でお客様にアプリを作って納品できるわけがない!
 折角懸命にmxmlやActionScriptを学んでAdobe信奉者になってきたのに、おいこのやろォ!と思ってきましたが………。

 ようやく、4.6になってようやく落ち着いてきたかな、と思います。


 いやしかし、これからFlexを学ぶヒトはいるのでしょうか。
 んー、デスクトップアプリをAirで作るのはアリかもですが、携帯の方面はAdobeはこれ以上バージョンアップしない!と宣言しちゃいましたしね。
 WEBでリッチアプリケーションを作る代表格であったFlex、今や仕様が固まりつつあるHTML5+JQueryに押されてます、iPhoneがFlashに対応しないがためが最大の理由でしょう。
 次期WindowsであるWindows8 の MetroUI版IE10 では、バッテリーやセキュリティ確保のためとかいって、Flashは動かないようですし。
 実際Flashはエネルギーを浪費するのでしょうね。
 作ったアプリは、結構メモリも使ってるみたいです。


 がしかし!!!
 しかしですよッツ!!!

 特にWEBでリッチインターネットアプリケーションを開発する際、動きのあるWEBアプリを作るとき、今後ずっとJavaScriptベースで進んでいいのでしょうか!?
 これは、プログラマー視点・開発者視点・あるいは保守視点からして、断じてNo!といいたい。

 HTML5、これはすばらしい技術だと思います。
 デザインを体系的に形作るCSSも、旧来の技術ですが問題ないと思います。
 しかしJavaScriptは、大規模アプリケーションを開発するには不向きだと思うのです。

 オブジェクト指向ではないからです。

 大規模な開発では、もはやオブジェクト指向でないと、メンテナンスが容易ではありません。
 小規模な、ちょっとした動きをJavaScriptやJQueryで実装するのはいいと思いますが、たとえば100画面のWEBアプリケーションを体系的・構造的に作ろうとした場合、JavaScriptではいろいろな書き方ができてしまったり、オブジェクト指向的に書こうとすると長文になったりするので、後で理解しづらいモノになってしまうのです。
 JQueryの場合、駆使すればメンテナンスしやすいものになるかもしれませんが、結構独特な書き方なので、後でこれらが何をやっているかが理解しにくいのではないかと思っています。
 やりたいことをネットで検索してコピペしてイチから作っていくのにはいいですが、それでも長い構文になったとき、果たして理解できるものになるのか…。

 そしてここで言いたい。

 だから、企業システムなどエンタープライズ分野にリッチインターネットアプリケーションを投入しづらい状況になっているのではないか、と。

 ようやくここで推したい、エンタープライズ分野にFlashを!


 Flash画面をFlexで作るには、画面の構造をmxmlというxmlのタグ形式で記述し、動きをActionScriptで記述して、コンパイルします。
 mxmlのタグの種類はhtmlと異なり、かなり種類が多く、プロパティも豊富です。
 タブやツリー、ダイアログ画面など、htmlにはないコンポーネントがたくさん標準で用意されています。
 htmlでもできますが、なんかCSSや画像を駆使して、それっぽく見せるのに自前でがんばって工夫しなければなりません。
 mxmlの場合は部品として扱えるので、ソースを見たとき、あ、これはタブだな、これはツリーだな、と一瞬で判断つきます。
 メンテナンス上、htmlと比較したこのアドバンテージは強力なはず!

 そして、きちんとオブジェクト指向になっているActionScript。
 やりたいことを抽象化やカプセル化を意識してできるようになっています。
 勿論継承もできます。

 継承がすごいと思ったのは、画面のコンポーネントの機能を継承して、別に自前のコンポーネントを作れるところです。
 なんとmxmlのタグだけで、継承を利用して自前のコンポーネントが作れます。
 たとえば、あるボタンをクリックしたら小画面が開くようなコンポーネントを、1セットの部品として作り、ほかの画面でもその部品を流用したい場合は、ボタンクラスを継承したクラスを作って、その中で小画面を開く処理を入れるような構造にします。
 小画面の縦横の大きさや、あるいは小画面の表示内容自体をプロパティにしておけば、汎用性は広がります。
 こうやって書くと実現が面倒に感じるかもしれませんが、mxmlやActionScriptは最初から継承を意識されてるので、出来上がったタグやコードは、実に理解しやすいものです。
 HTML5にはあまり精通してませんが、JQueryなどと合わせても、ここまでできるのかどうか…。



 mxmlとActionScriptを軸にしたFlexは、大規模なリッチインターネットアプリケーションを開発する上で、開発者・保守者にとって、言語の特性からして、最も有効な選択肢だと思っています。

 だから、私はもっともっとAdobeにがんばってほしい!
 もっとFlashを最適化して、性能を上げ、セキュリティに突っ込みどころがないように仕上げ、他を寄せ付けない存在にまで昇華してほしい!
 「え?なにこの軽さ。こんな軽いのにこんな使いかっていいの!?」って驚かせてほしい!

 言語としての土台はすばらしいのに。
 方向は間違ってないよAdobe!
 HTML5が出てきたから、AppleがiPhoneに対応しないからといって、あきらめなさんな。
 FlexSDKの開発要員を強化して。
 携帯、やればいいじゃん!捨てるなんてもったいない!
 Flexでw3c標準に採用されるんだくらいな勢いで行け!Adobe!!





monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業
コメント (3)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

電王戦

2012-01-19 08:48:07 | 日記
機械と人間の戦いというと、まず最初にイメージするのは「ターミネーター」という映画だ。
たしか、近未来に人間の道具として作られた機械(AI)が自我に目覚め、人類に牙を向ける・・・。
抵抗軍(人間側)の指導者が戦果を上げ、脅威を感じた機械軍側が過去の世界に殺人ヒューマノイド「ターミネーター」を刺客として送り込み、指導者の子孫を抹殺しようとする・・・という話の流れだったと思う。

人の作りしものが人を越えることがあるのかというテーマで語られるSFは数多くある。
そんなことを思い出しながら土曜の朝「ニコニコ生放送」で電王戦を観戦した。
電王戦とは日本将棋連盟、ドワンゴ、中央公論の三者が主催する、コンピュータとプロ棋士が将棋で対戦するという催し物である。
コンピュータ将棋はそこそこの歴史があり、コンピュータ将棋選手権は1990年から開催されており、
年々登場するプログラムは優秀になっているという。過去にもアマチュアやプロを打ち負かした実績もあり、
2005年から公の場でプロが許可なくコンピュータと将棋を指すのは禁止となった。

また似たようなボードゲームで世界的にシェアのあるチェスは2000年を迎える前にコンピュータが世界チャンピオンを破っている。
チェスは駒の数が16対、盤面も8×8の64マスで、取られた駒はゲーム中には復活しないので、どんどん駒の数が減っていく。
将棋と比べて発散型のゲームである。よって駒の動くパターンが将棋に比べて圧倒的に少ないので、1ターンの1駒のみ動かせるというシンプルなルールは
コンピュータが人間を凌駕するまでそれほどの時間を要しなかった。
今では1ゲームごとにコンピュータ側にハンデキャップをつけていくマッチで人間とCPUがようやく互角に戦えるレベルらしい。
チェスに関してはコンピュータの方が人間よりも強いと言える。

それに比べて
・将棋は相手の駒を倒すと自分の駒として次のターンから使用できる。
・駒の数が20駒かつ、相手の陣地まで攻めこむと「成る」という要素があり、深く攻め込めば一番弱い「歩兵」でも強力な駒となる。
・盤面が9×9の81マス
チェスと比較すると戦局のバリエーションが凄まじく多い。


第一回電王戦として開催された今回のマッチは、
コンピュータ将棋選手権(コンピュータ同士が戦う)2011年優勝プログラムの「ボンクラーズ」と
永世棋聖の「米長邦雄」氏のマッチだった。

「ボンクラーズ」とは、数年前からフリーソフトウェアとして公開されている将棋対戦ソフト「Bonanza」を主軸に他3つのソフトが676コアを持つクラスタマシンに搭載されたコンピュータである。
4つソフトが最善の手を算出し、合議制で指し手を決める。秒間1800万手を読むことが出来るらしい。
また数々の定石やプロ棋士同士の対戦情報などを盛り込んだデータベースも搭載している。
局面が複雑であればあるほど、先の手を読む必要があるので、後半の陣形が入り乱れた選択肢が多い戦いでは人間よりも多くの手数を読めるコンピュータの方が有利らしい。
また"詰み"までのルートを発見した場合、ノータイムで駒を進めてくる様は、感情を持たない無慈悲なコンピュータの恐ろしさを感じさせる。

「米長邦雄永世棋聖」は現役は退いているものの、現役時代ではかなりの強さだったという。現将棋連盟会長である。
コンピュータ将棋対策として、自ら攻めない守りの将棋で挑む。(コンピュータは有利と判断するまで自分で仕掛けることは無い為、前半戦の場を有利に作ることで攻めさせず圧殺する。)
米長氏はこの日の為にコンピュータ将棋を研究し尽くしたという。


先手「ボンクラーズ」の初手「7六歩」から戦いの火蓋は切って落とされた。
対する「米長邦雄永世棋聖」の二手目は「6二玉」。
人同士の指し方ではまずありえない、"損"とされる手だ。

戦いの行く末は・・・。(KS)


monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする