ext ncs 20081029

28
2008.10.29 NCS 鈴⽊ Ajax Ajax + Ext Extでゼロから始める でゼロから始める カルアプリケ ション開発 カルアプリケ ション開発 カルアプリケション開発 カルアプリケション開発

Upload: yuki-naotori

Post on 26-Jun-2015

1.621 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Ext Ncs 20081029

2008.10.29 NCS 鈴⽊

AjaxAjax ++ ExtExtでゼロから始めるでゼロから始めるロ カルアプリケ ション開発ロ カルアプリケ ション開発ローカルアプリケーション開発ローカルアプリケーション開発

Page 2: Ext Ncs 20081029

⽬次⽬次• 何が作りたかったか?(開発の背景と要求仕様)• なぜ Ext になったか?(Ajax + Extを採⽤した理由)• 何を作ったか?(GUIシステムの構成)• 誰が作ったか?(⼈員とスキル)• どうやって作ったか?(開発環境と⼿法)作• どのくらいで作ったか?(費⽤と期間、コード量)• 実際に作れたのだろうか?(Extの使⽤感)実際 作 ( 使⽤ )• 作ってよかったか?(ローカルアプリ⽤SDKとしてのExt)• デモデ

Page 3: Ext Ncs 20081029

そもそも何を作っているのかそもそも何を作っているのか??そもそも何を作っているのかそもそも何を作っているのか??PCクラスタによる分散処理環境PCクラスタによる分散処理環境◦ マルチPC環境をマルチスレッドっぽく

• LinuxOS

• 数台〜数百台ノード数• 画像演算⽤途• 物理シミュレーション

⽤途• 演算コア : C開発⾔語• 管理部 : Ruby

開発⾔語

Page 4: Ext Ncs 20081029

開発した開発したGUIGUIの⽤途の⽤途開発した開発したGUIGUIの⽤途の⽤途タスク

•リスト•追加・削除

システムの各情報をリアルタイム管理タスク

管理

•追加・削除•中断・再開

リアルタイム管理

リソースタスク

GUI管理情報

•リスト•追加・削除

•スクリプト•ログ

•関連するデータ 追加 削除•離脱・復帰

•関連するデータ•タスク⽣成ウィザード

システム

設定

データ

管理•⼊出⼒デ タ •パッケージ•⼊出⼒データ•中間データ

パッケ ジ•ユーザ•権限

Page 5: Ext Ncs 20081029

新管理新管理GUIGUI開発の動機づけ開発の動機づけ新管理新管理GUIGUI開発の動機づけ開発の動機づけ

分散環境システムを刷新し、メジャーバージョンアップアップ当然、管理GUIも更新せねばならない

既存のGUIの問題点を⼀挙に解決既存のGUIの問題点を 挙に解決さらに、どうせなら⻑期的にみて展望のありそうな技術を採⽤したいありそうな技術を採⽤したい

Page 6: Ext Ncs 20081029

既存システム管理既存システム管理GUIGUIの問題点の問題点既存システム管理既存システム管理GUIGUIの問題点の問題点ザはリモ トの れぞれ プ セ が

サーバ上の1プロセスを消費

ユーザはリモートの個⼈⽤デスクトップからアクセス

それぞれのGUIプロセスが、個別にアクセスをかける

個別にファイル情報も取得するシングルスレッド

Xprotocol

C(G k 2 0)

Linux のみで動作

C(Gtk+-2.0)で書かれており、膨⼤なコード量

Xprotocol

当然Win Cでオブジェクト指向要Xサーバ

Page 7: Ext Ncs 20081029

望ましい望ましいLinuxLinux PCPCクラスタ環境⽤クラスタ環境⽤管管管理管理GUIGUIのあり⽅のあり⽅

サーバ負荷の低減

•マルチユーザからの同時アクセスを前提とした設計•ユーザPCのリソースを活⽤すべしザ リソ スを活⽤す し

ユーザビリティの向上

•マルチスレッド化によるリアルタイム性の向上•リッチなコンテンツで、よりユーザフレンドリーに

•Cでオブジェクト指向はつらい

メンテナンス性の向上

•Linux依存からの脱却•できれば、スクリプト⾔語でさくさく書きたい•が、いまさらWin開発者になるのはつらい

Page 8: Ext Ncs 20081029

ようするに、ようするに、ブ ザブ ザ ががブラウザでブラウザでAjaxAjaxがいいのでは?がいいのでは?W bサ バ

•マルチユーザからのアクセスを前提

Webサーバ

•マルチタスク

ブ ウザ

•⾮同期かつリアルタイム

ブラウザ + Ajax

•リッチなコンテンツ•Win でも動く•スクリプト⾔語でらくらくコーディング•豊富な開発リソースやTips•豊富な開発リソ スやTips

Page 9: Ext Ncs 20081029

だがしかし、だがしかし、普 プ 作普 プ 作AjaxAjaxで普通のアプリは作れるのか?で普通のアプリは作れるのか?

また、作ってかまわないものなのだろうか?また、作ってかまわないものなのだろうか?

基盤技術としての信頼性基盤技術としての信頼性• 普通のアプリケーションを実装するのに必要な機能がそろっているのか?• それなりの規模のアプリケーションは構築可能なのだろうか?• 実⽤的な性能が出るだろうか?• 古いブラウザを使っているユーザにも使⽤可能なものにできるだろうか?

スキルと時間と設計の問題間 設 問題• 初⼼者でも、現実的な開発期間での開発が可能だろうか?ロ カルアプリの開発者がわざわざAjaxを習得する意義はあるのか?• ローカルアプリの開発者がわざわざAjaxを習得する意義はあるのか?

Page 10: Ext Ncs 20081029

隣の席の同期が隣の席の同期が「「「「ExtExtなんかいいんじゃない?」と⾔うなんかいいんじゃない?」と⾔う

ブラウザ上で、なんか普通のアプリっぽい光景が展開されている。

◦ 表(グリッド)ツリ◦ ツリー◦ ツールバー◦ コンテキストメニューコンテキストメニュ◦ ドラッグアンドドロップ◦ フレンドリーなフォーム◦ リアルタイムな応答◦ Webデスクトップ

Page 11: Ext Ncs 20081029

Ajaxどころかhtmlもど素⼈だが、

どうもどうもExtExtならならいけそうである。いけそうである。

Page 12: Ext Ncs 20081029

GUIGUIシステム構成システム構成GUIGUIシステム構成システム構成ユーザPC上で動作 GUIユーザはみんなユーザPC上で動作 GUIユーザはみんな

ひとつのサーブレットにアクセス

NDE http サーブレット(http:<IP>:<port>)( p p )

HTTP サーブレットのモニタリング• カレントタスクの状態• リソースの状態• システムの状態 (OS・ネットワーク)• ファイル(スクリプト・データ等)

Ajaxフリーズしない

軽くて軽快な動作Fi f フリ ズしないFirefoxIE6 IE7

Page 13: Ext Ncs 20081029

採⽤したライブラリ採⽤したライブラリ採⽤したライブラリ採⽤したライブラリ

AjaxGraphics jp• Ext theme (blue)• fugue (CC)• McDo Cats2 (?)

(Ext + jQuery)

Ruby(WEBrick + ERuby)

Page 14: Ext Ncs 20081029

開発⼈員開発⼈員開発⼈員開発⼈員総員3名(普段はCをこせこせ書いている⼈々)総員3名(普段はCをこせこせ書いている⼈々)

•初 Ext Ajax JavaScript DHtml年 初 j p•C 7年 (Gtk+-2.0でのGUI開発経験あり)•Ruby 1年

7年⽬•初 GUI Ext Ajax JavaScript DHtml Ruby•C 4年5年⽬ C4年•Java 2年

5年⽬•初 GUI Ext Ajax JavaScript DHtml Ruby•C 2年2年⽬

Page 15: Ext Ncs 20081029

開発環境・⼿法開発環境・⼿法開発環境 ⼿法開発環境 ⼿法結局、慣れ親しんだ、特定⽤途のツールを組み合結局、慣れ親しんだ、特定⽤途のツ ルを組み合わせる⼿法に

vim

エディタ

デバッガコード圧縮firebugYUI Compressor

ビルドツール国際化GNU kGNU makeJavaScript Lintgettext

Page 16: Ext Ncs 20081029

採⽤を⾒送った⼿法たち採⽤を⾒送った⼿法たち採⽤を⾒送った⼿法たち採⽤を⾒送った⼿法たち素⼈なりに調べた結果 ちょっとアグ素⼈なりに調べた結果、ちょっとアグレッシヴすぎるので、今回は⾒送りRuby on Rails•「新しいことばかりで、ただでさえ覚えることが多いのに・・・」「新しいことばかりで、ただでさえ覚えることが多いのに 」•「思うにサーバ側で頑張りすぎ?」

Aptana(Eclipse)Aptana(Eclipse)•「vi ⼈間たちにはメリットが少ないです。」•「ていうか けっこう重くない?」•「ていうか、けっこう重くない?」

Ext GWT•「サーバがRubyなのに、クライアントサイドだけJavaだなんて・・・」

Page 17: Ext Ncs 20081029

開発期間開発期間開発期間開発期間•Ext って何? JavaScript って何? DOMって何? ていうか、http って何?

ʼ08/05

導⼊期

て何 p て何 て何 て うか、 p て何•コードが読めない書けない。•アプリケーションの組み⽅がわからない。

•Ext の低レベルライブラリのソースを読み込む。ʼ08/08

模索期•⼩さなサンプルアプリケーションを作ってみる。•ブラウザ互換性の⾯倒くささを実体験する。

•Extのクラスが定義できるようになる。プラグインも使えるようになる。

ʼ08/10

加速期•JavaScriptのスコープと Ext での扱い⽅も理解する。•⼀週間くらいでひとつのコンポーネントを仕上げられるようになる。

ʼ08/1108/11

約半年 ⼯数 : 実質12⼈⽉くらい

Page 18: Ext Ncs 20081029

開発規模開発規模開発規模開発規模ʼ08/10/28時点でのソースコード⾏数08/10/28時点でのソ スコ ド⾏数(含むコピペ+ ⾃動⽣成)

cssアイコンのcssを⾃動⽣成

含む•かき集めたuxたち初期に書いたコ ドの8545⾏ •初期に書いたコードの

残骸たち•jsdoc⽤のコメント群

Ruby4637⾏

JavaScript11523⾏いつの間にか

ぶくぶくと…ぶくぶくと…

Page 19: Ext Ncs 20081029

デモデモ(まだ微妙に開発中)(まだ微妙に開発中)ホストOSWin XP

ubuntuゲストOS

(coLinux)

firefox IE7(今⽇はなし)ブラウザ

Page 20: Ext Ncs 20081029

ログイン画⾯

• プリファレンス・使⽤権限モード・⾔語を選択することが可能

Page 21: Ext Ncs 20081029

ダッシュボード

• Powered by Mac OS Style Dockマルチブラウザウィンドウ(タブ)制を採⽤• マルチブラウザウィンドウ(タブ)制を採⽤

• 必要のない時は隠しておける

Page 22: Ext Ncs 20081029

セッション管理

• グリッドのネストを利⽤して、階層化された情報に効率よくアクセス

Page 23: Ext Ncs 20081029

リソース管理

•シンプルな2グリッドで、CPUとDISKという⼆つのリソ スタイプを同時に管理リソースタイプを同時に管理•メッセージは適宜ポップアップ通知

Page 24: Ext Ncs 20081029

ログブラウザ

• メニュー + タブで複数のログファイルをすばやく閲覧可能閲覧可能• ダッシュボードはメニューバーとドックで選択可能

Page 25: Ext Ncs 20081029

管理者画⾯

• 管理者のみログイン可能システム設定 パッケ ジ管理 ユ ザ管理 ライ• システム設定、パッケージ管理、ユーザ管理、ライセンス管理、バグ管理をひとつの画⾯で

Page 26: Ext Ncs 20081029

ExtExtを採⽤してみて(+)を採⽤してみて(+)ExtExtを採⽤してみて(+)を採⽤してみて(+)GUI SDKとしての完成度は⼗分

• GUIの基本機能を網羅

GUI SDKとしての完成度は⼗分

• 個々のコンポーネントの完成度が⾼い• かゆいところに⼿が届きすぎるユーティリティ群かゆ ろ ⼿が届きすぎる ティリティ群• ⼀貫した設計と実装かなりま とうなオブジ クト指向(私⾒)• かなりまっとうなオブジェクト指向(私⾒)

• ⾼いブラウザ互換性(IE6でもきちんと表⽰)• 外部ライブラリとの親和性(jQuery等と併存可能)• すばやく開発することができる(C Gtk+-2.0と⽐較)すばやく開発することができる(C Gtk+ 2.0と⽐較)

Page 27: Ext Ncs 20081029

ExtExtを採⽤してみて(-)を採⽤してみて(-)ExtExtを採⽤してみて( )を採⽤してみて( )慣れるまで少々修⾏が必要

• ソースコードの読み込みはほぼ必須• 独⾃の継承スタイルを理解しないと⼤量のコードを書くのは難しい

Extから抜け出すのに苦労する

• Extで作ると、何はともあれExtにしかならない• JavaScript ネイティヴのDOMにほとんど触らない• ⾃前cssの適⽤が⽐較的難しい

とはいいつつ、やはりIEは厳しいか

• IE7上では、使えば使うほど挙動不審(おもにIE7が)• IE6は表⽰するのがやっと?

とはいいつつ、やはりIEは厳しいか

• IE6は表⽰するのがやっと?

Page 28: Ext Ncs 20081029

というわけで、ちょっと予定より遅れそうなんですが、

なんとかなんとかリリースにはこぎつけられリリースにはこぎつけられリリースにはこぎつけられリリースにはこぎつけられそうです。そうです。