SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
2008.10.29 NCS 鈴⽊

Ajax + Extでゼロから始める
       Extでゼロから始める
ローカルアプリケーション開発
ロ カルアプリケ ション開発
⽬次
•   何が作りたかったか?(開発の背景と要求仕様)
•   なぜ Ext になったか?(Ajax + Extを採⽤した理由)
•   何を作ったか?(GUIシステムの構成)
•   誰が作ったか?(⼈員とスキル)
•   どうやって作ったか?(開発環境と⼿法)
            作
•   どのくらいで作ったか?(費⽤と期間、コード量)
•   実際に作れたのだろうか?(Extの使⽤感)
    実際 作             (     使⽤ )
•   作ってよかったか?(ローカルアプリ⽤SDKとしてのExt)
•   デモ
    デ
そもそも何を作っているのか?
そもそも何を作っているのか?
PCクラスタによる分散処理環境
◦ マルチPC環境をマルチスレッドっぽく

 OS    • Linux

ノード数   • 数台〜数百台

       • 画像演算
 ⽤途
       • 物理シミュレーション
       • 演算コア : C
開発⾔語
       • 管理部 : Ruby
開発したGUIの⽤途
       開発したGUIの⽤途
                 •リスト                システムの各情報を
                 •追加・削除      タスク     リアルタイム管理
                 •中断・再開
                             管理



                 タスク                     リソース

                 情報                       管理

                             GUI
       •スクリプト
           •ログ                                 •リスト
    •関連するデータ                                    追加 削除
                                               •追加・削除
•タスク⽣成ウィザード                                    •離脱・復帰


                       データ         システム

                       管理           設定     パッケ ジ
        •⼊出⼒デ タ
        •⼊出⼒データ                           •パッケージ
          •中間データ                          •ユーザ
                                          •権限
新管理GUI開発の動機づけ
新管理GUI開発の動機づけ

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




既存のGUIの問題点を 挙に解決
既存のGUIの問題点を⼀挙に解決
さらに、どうせなら⻑期的にみて展望の
ありそうな技術を採⽤したい
既存システム管理GUIの問題点
    既存システム管理GUIの問題点
ユーザはリモートの
  ザはリモ トの                 それぞれのGUIプロセスが、
                           れぞれ    プ セ が
個⼈⽤デスクトップ      サーバ上の      個別にアクセスをかける
からアクセス         1プロセスを消費


            シングルスレッド           個別にファイル
                               情報も取得する
              X
                              Linux のみで動作
              protocol
                               C(Gtk+-2.0)で
                               C(G k 2 0)
                               書かれており、
                               膨⼤なコード量
              X
              protocol


当然Win                         Cでオブジェクト指向
            要Xサーバ
望ましいLinux PCクラスタ環境⽤
望ましいLinux PCクラスタ環境⽤
管理GUIのあり⽅
管理GUIのあり⽅
サーバ負荷の低減

•マルチユーザからの同時アクセスを前提とした設計

•ユーザPCのリソースを活⽤すべし
   ザ   リソ スを活⽤す し


ユーザビリティの向上

•マルチスレッド化によるリアルタイム性の向上

•リッチなコンテンツで、よりユーザフレンドリーに


メンテナンス性の向上

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

•Linux依存からの脱却

•できれば、スクリプト⾔語でさくさく書きたい

•が、いまさらWin開発者になるのはつらい
ようするに、
ブラウザでAjaxが
ブラウザでAjaxがいいのでは?
ブ  ザ     がいいのでは?
Webサーバ
W bサ バ

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

• マルチタスク


ブラウザ
ブ ウザ + Ajax

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

• リッチなコンテンツ

• Win でも動く

• スクリプト⾔語でらくらくコーディング

• 豊富な開発リソースやTips
  豊富な開発リソ スやTips
だがしかし、
Ajaxで普通のアプリは作れるのか?
Ajaxで普通のアプリは作れるのか?
     普   プ  作
 また、作ってかまわないものなのだろうか?


基盤技術としての信頼性

• 普通のアプリケーションを実装するのに必要な機能がそろっているのか?

• それなりの規模のアプリケーションは構築可能なのだろうか?

• 実⽤的な性能が出るだろうか?

• 古いブラウザを使っているユーザにも使⽤可能なものにできるだろうか?

スキルと時間と設計の問題
     間 設  問題

• 初⼼者でも、現実的な開発期間での開発が可能だろうか?

• ロ カルアプリの開発者がわざわざAjaxを習得する意義はあるのか?
  ローカルアプリの開発者がわざわざAjaxを習得する意義はあるのか?
隣の席の同期が
「Extなんかいいんじゃない?」と⾔う
 Extなんかいいんじゃない?」と⾔う

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

 ◦   表(グリッド)
 ◦   ツリ
     ツリー
 ◦   ツールバー
 ◦   コンテキストメニュ
     コンテキストメニュー
 ◦   ドラッグアンドドロップ
 ◦   フレンドリーなフォーム
 ◦   リアルタイムな応答
 ◦   Webデスクトップ
Ajaxどころかhtmlもど素⼈だが、

どうもExtならいけそうである。
どうもExtならいけそうである。
GUIシステム構成
          GUIシステム構成
ユーザPC上で動作     GUIユーザはみんな
              ひとつのサーブ
              レットにアクセス



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


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

               Ajax            軽くて軽快な動作
             フリ ズしない
             フリーズしない
Firefox
Fi f
IE6 IE7
採⽤したライブラリ



      Graphics
         p                Ajax
                           j
  • Ext theme (blue)
  • fugue (CC)          (Ext + jQuery)
  • McDo Cats2 (?)




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

       • 初 Ext Ajax JavaScript DHtml
                j           p

 7年⽬
  年    • C 7年 (Gtk+-2.0でのGUI開発経験あり)

       • Ruby 1年


       • 初 GUI Ext Ajax JavaScript DHtml Ruby

 5年⽬   • C 4年

       • Java 2年




 2年⽬
       • 初 GUI Ext Ajax JavaScript DHtml Ruby

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

                           エディタ


YUI Compressor
                                                firebug
                 コード圧縮                デバッガ




                     国際化          ビルドツール
                                           GNU makek
         gettext
                                           JavaScript Lint
採⽤を⾒送った⼿法たち
素⼈なりに調べた結果、ちょっとアグ
素⼈なりに調べた結果 ちょっとアグ
レッシヴすぎるので、今回は⾒送り
 Ruby on Rails

 • 「新しいことばかりで、ただでさえ覚えることが多いのに・・・」
   「新しいことばかりで、ただでさえ覚えることが多いのに   」

 • 「思うにサーバ側で頑張りすぎ?」

 Aptana(Eclipse)

 • 「vi ⼈間たちにはメリットが少ないです。」

 • 「ていうか けっこう重くない?」
   「ていうか、けっこう重くない?」

 Ext GWT

 • 「サーバがRubyなのに、クライアントサイドだけJavaだなんて・・・」
開発期間
ʼ08/05
                • Ext って何? JavaScript って何? DOMって何? ていうか、http って何?
                       て何          p   て何      て何 て うか、 p て何

                • コードが読めない書けない。
          導⼊期   • アプリケーションの組み⽅がわからない。


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

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

ʼ08/10

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

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

    約半年                                      ⼯数 : 実質12⼈⽉くらい
開発規模
 ʼ08/10/28時点でのソースコード⾏数
  08/10/28時点でのソ スコ ド⾏数
 (含むコピペ+ ⾃動⽣成)

アイコンのcssを                               含む
⾃動⽣成                 css                •かき集めたuxたち
                                         初期に書いたコ ドの
                                        •初期に書いたコードの
                    8545⾏                       残骸たち
                                        •jsdoc⽤のコメント群

            Ruby
            4637⾏

                           JavaScript
                           11523⾏
いつの間にか
ぶくぶくと…
デモ(まだ微妙に開発中)
                   ホストOS

                   Win XP


 ゲストOS
      ubuntu
     (coLinux)



         firefox            IE7(今⽇はなし)
                   ブラウザ
ログイン画⾯




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




•   Powered by Mac OS Style Dock
•   マルチブラウザウィンドウ(タブ)制を採⽤
•   必要のない時は隠しておける
セッション管理




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




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




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




•管理者のみログイン可能
•システム設定 パッケ ジ管理 ユ ザ管理 ライ
 システム設定、パッケージ管理、ユーザ管理、ライ
センス管理、バグ管理をひとつの画⾯で
Extを採⽤してみて(+)
Extを採⽤してみて(+)
GUI SDKとしての完成度は⼗分

• GUIの基本機能を網羅

• 個々のコンポーネントの完成度が⾼い

• かゆいところに⼿が届きすぎるユーティリティ群
  かゆ   ろ ⼿が届きすぎる  ティリティ群

• ⼀貫した設計と実装

• かなりま とうなオブジ クト指向(私⾒)
  かなりまっとうなオブジェクト指向(私⾒)

• ⾼いブラウザ互換性(IE6でもきちんと表⽰)

• 外部ライブラリとの親和性(jQuery等と併存可能)

• すばやく開発することができる(C Gtk+-2.0と⽐較)
                   Gtk+ 2.0と⽐較)
Extを採⽤してみて(-)
Extを採⽤してみて( )
Extを採⽤してみて(
   を採⽤してみて(-)
慣れるまで少々修⾏が必要

• ソースコードの読み込みはほぼ必須

• 独⾃の継承スタイルを理解しないと⼤量のコードを書くのは難しい


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

• Extで作ると、何はともあれExtにしかならない

• JavaScript ネイティヴのDOMにほとんど触らない

• ⾃前cssの適⽤が⽐較的難しい


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

• IE7上では、使えば使うほど挙動不審(おもにIE7が)

• IE6は表⽰するのがやっと?
というわけで、ちょっと予定より遅れそうなんですが、

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

Mais conteúdo relacionado

Mais procurados

インフラエンジニアになろう!
インフラエンジニアになろう!インフラエンジニアになろう!
インフラエンジニアになろう!Toshiaki Baba
 
Php5.3ってなんなんだー
Php5.3ってなんなんだーPhp5.3ってなんなんだー
Php5.3ってなんなんだーKousuke Ebihara
 
Internet Ued Process
Internet Ued ProcessInternet Ued Process
Internet Ued Processrex song
 
gfw工作原理及突破技术
gfw工作原理及突破技术gfw工作原理及突破技术
gfw工作原理及突破技术Daniel Cheung
 
ウェブ開発の次なる主戦場、Open Social
ウェブ開発の次なる主戦場、Open Socialウェブ開発の次なる主戦場、Open Social
ウェブ開発の次なる主戦場、Open SocialFITEA
 
Authoring Tools Comparision in Detail
Authoring Tools Comparision in DetailAuthoring Tools Comparision in Detail
Authoring Tools Comparision in DetailTim Lu
 
25000社以上採用計測ソリューション
25000社以上採用計測ソリューション25000社以上採用計測ソリューション
25000社以上採用計測ソリューションnishimizu
 
PXI, LabVIEW事例集2
PXI, LabVIEW事例集2PXI, LabVIEW事例集2
PXI, LabVIEW事例集2nishimizu
 
090525-homology search(ensembl, local)
090525-homology search(ensembl, local)090525-homology search(ensembl, local)
090525-homology search(ensembl, local)ocha_kaneko
 
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)Kohei Otsuka
 
中小企業E化最新趨勢與效益分析
中小企業E化最新趨勢與效益分析中小企業E化最新趨勢與效益分析
中小企業E化最新趨勢與效益分析Alex Lee
 
仕事で使うRuby
仕事で使うRuby仕事で使うRuby
仕事で使うRubyKentaro Goto
 
Mylynとおともだち
MylynとおともだちMylynとおともだち
MylynとおともだちHiroki Kondo
 
VPN专网资源
VPN专网资源VPN专网资源
VPN专网资源paulqi
 
1242982622API2 upload
1242982622API2 upload1242982622API2 upload
1242982622API2 upload51 lecture
 
Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수JIAQI NIE
 
もっと仕事で使うRuby
もっと仕事で使うRubyもっと仕事で使うRuby
もっと仕事で使うRubyKentaro Goto
 

Mais procurados (20)

インフラエンジニアになろう!
インフラエンジニアになろう!インフラエンジニアになろう!
インフラエンジニアになろう!
 
Php5.3ってなんなんだー
Php5.3ってなんなんだーPhp5.3ってなんなんだー
Php5.3ってなんなんだー
 
20世紀Ruby
20世紀Ruby20世紀Ruby
20世紀Ruby
 
Internet Ued Process
Internet Ued ProcessInternet Ued Process
Internet Ued Process
 
gfw工作原理及突破技术
gfw工作原理及突破技术gfw工作原理及突破技术
gfw工作原理及突破技术
 
ウェブ開発の次なる主戦場、Open Social
ウェブ開発の次なる主戦場、Open Socialウェブ開発の次なる主戦場、Open Social
ウェブ開発の次なる主戦場、Open Social
 
Authoring Tools Comparision in Detail
Authoring Tools Comparision in DetailAuthoring Tools Comparision in Detail
Authoring Tools Comparision in Detail
 
25000社以上採用計測ソリューション
25000社以上採用計測ソリューション25000社以上採用計測ソリューション
25000社以上採用計測ソリューション
 
090601-dotplot
090601-dotplot090601-dotplot
090601-dotplot
 
PXI, LabVIEW事例集2
PXI, LabVIEW事例集2PXI, LabVIEW事例集2
PXI, LabVIEW事例集2
 
EclipSky200712
EclipSky200712EclipSky200712
EclipSky200712
 
090525-homology search(ensembl, local)
090525-homology search(ensembl, local)090525-homology search(ensembl, local)
090525-homology search(ensembl, local)
 
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
 
中小企業E化最新趨勢與效益分析
中小企業E化最新趨勢與效益分析中小企業E化最新趨勢與效益分析
中小企業E化最新趨勢與效益分析
 
仕事で使うRuby
仕事で使うRuby仕事で使うRuby
仕事で使うRuby
 
Mylynとおともだち
MylynとおともだちMylynとおともだち
Mylynとおともだち
 
VPN专网资源
VPN专网资源VPN专网资源
VPN专网资源
 
1242982622API2 upload
1242982622API2 upload1242982622API2 upload
1242982622API2 upload
 
Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수
 
もっと仕事で使うRuby
もっと仕事で使うRubyもっと仕事で使うRuby
もっと仕事で使うRuby
 

Destaque

Stacking the Deck in Your Students' Favor
Stacking the Deck in Your Students' FavorStacking the Deck in Your Students' Favor
Stacking the Deck in Your Students' Favoregccbc
 
Final draft script a long day by nick mc cabe
Final draft script a long day by nick mc cabeFinal draft script a long day by nick mc cabe
Final draft script a long day by nick mc cabesophiemca1
 
Emprendimientos (dia del internet 2012)
Emprendimientos (dia del internet 2012)Emprendimientos (dia del internet 2012)
Emprendimientos (dia del internet 2012)Eddy D. Sánchez
 
Data and education 16 may 2014 haggard london
Data and education 16 may 2014 haggard londonData and education 16 may 2014 haggard london
Data and education 16 may 2014 haggard londonStephen Haggard
 
Review packet questions
Review packet questionsReview packet questions
Review packet questionscalcisfun
 

Destaque (7)

Stacking the Deck in Your Students' Favor
Stacking the Deck in Your Students' FavorStacking the Deck in Your Students' Favor
Stacking the Deck in Your Students' Favor
 
Final draft script a long day by nick mc cabe
Final draft script a long day by nick mc cabeFinal draft script a long day by nick mc cabe
Final draft script a long day by nick mc cabe
 
Emprendimientos (dia del internet 2012)
Emprendimientos (dia del internet 2012)Emprendimientos (dia del internet 2012)
Emprendimientos (dia del internet 2012)
 
Inmigrantes y nativos digitales
Inmigrantes y nativos digitalesInmigrantes y nativos digitales
Inmigrantes y nativos digitales
 
StarAutoGlass
StarAutoGlassStarAutoGlass
StarAutoGlass
 
Data and education 16 may 2014 haggard london
Data and education 16 may 2014 haggard londonData and education 16 may 2014 haggard london
Data and education 16 may 2014 haggard london
 
Review packet questions
Review packet questionsReview packet questions
Review packet questions
 

Mais de Yuki Naotori

120611 html5とか勉強会 st2
120611 html5とか勉強会 st2120611 html5とか勉強会 st2
120611 html5とか勉強会 st2Yuki Naotori
 
101125 sencha con2010報告
101125 sencha con2010報告101125 sencha con2010報告
101125 sencha con2010報告Yuki Naotori
 
HTML5ビデオ導入編
HTML5ビデオ導入編HTML5ビデオ導入編
HTML5ビデオ導入編Yuki Naotori
 
100915 HTML5とか勉強会発表資料
100915 HTML5とか勉強会発表資料100915 HTML5とか勉強会発表資料
100915 HTML5とか勉強会発表資料Yuki Naotori
 
SpreadOfficeとSencha Touch
SpreadOfficeとSencha TouchSpreadOfficeとSencha Touch
SpreadOfficeとSencha TouchYuki Naotori
 
Sencha touchのはじめかた
Sencha touchのはじめかたSencha touchのはじめかた
Sencha touchのはじめかたYuki Naotori
 
Sencha touch とyubizo engineで作るネイティブアプリ
Sencha touch とyubizo engineで作るネイティブアプリSencha touch とyubizo engineで作るネイティブアプリ
Sencha touch とyubizo engineで作るネイティブアプリYuki Naotori
 
Ext Designerについて
Ext DesignerについてExt Designerについて
Ext DesignerについてYuki Naotori
 
Ext Direct 入門 II
Ext Direct 入門 IIExt Direct 入門 II
Ext Direct 入門 IIYuki Naotori
 
Ext.util.Observableについて
Ext.util.ObservableについてExt.util.Observableについて
Ext.util.ObservableについてYuki Naotori
 
Ext.Directについて
Ext.DirectについてExt.Directについて
Ext.DirectについてYuki Naotori
 
Ext Jsで柔軟に開発仕事をこなす
Ext Jsで柔軟に開発仕事をこなすExt Jsで柔軟に開発仕事をこなす
Ext Jsで柔軟に開発仕事をこなすYuki Naotori
 
ExtJS 事例  2ちゃんビューアー「Cromartie49」
ExtJS 事例  2ちゃんビューアー「Cromartie49」ExtJS 事例  2ちゃんビューアー「Cromartie49」
ExtJS 事例  2ちゃんビューアー「Cromartie49」Yuki Naotori
 
090422 第10回勉強会(公開用)
090422 第10回勉強会(公開用)090422 第10回勉強会(公開用)
090422 第10回勉強会(公開用)Yuki Naotori
 
Prototyping tool "Degino"
Prototyping tool "Degino"Prototyping tool "Degino"
Prototyping tool "Degino"Yuki Naotori
 
第9回勉強会 開発の基本
第9回勉強会 開発の基本第9回勉強会 開発の基本
第9回勉強会 開発の基本Yuki Naotori
 

Mais de Yuki Naotori (20)

120611 html5とか勉強会 st2
120611 html5とか勉強会 st2120611 html5とか勉強会 st2
120611 html5とか勉強会 st2
 
101125 sencha con2010報告
101125 sencha con2010報告101125 sencha con2010報告
101125 sencha con2010報告
 
End of native?
End of native?End of native?
End of native?
 
HTML5ビデオ導入編
HTML5ビデオ導入編HTML5ビデオ導入編
HTML5ビデオ導入編
 
100915 HTML5とか勉強会発表資料
100915 HTML5とか勉強会発表資料100915 HTML5とか勉強会発表資料
100915 HTML5とか勉強会発表資料
 
SpreadOfficeとSencha Touch
SpreadOfficeとSencha TouchSpreadOfficeとSencha Touch
SpreadOfficeとSencha Touch
 
Sencha touchのはじめかた
Sencha touchのはじめかたSencha touchのはじめかた
Sencha touchのはじめかた
 
Sencha touch とyubizo engineで作るネイティブアプリ
Sencha touch とyubizo engineで作るネイティブアプリSencha touch とyubizo engineで作るネイティブアプリ
Sencha touch とyubizo engineで作るネイティブアプリ
 
Ext JS→Sencha
Ext JS→SenchaExt JS→Sencha
Ext JS→Sencha
 
Ext Designerについて
Ext DesignerについてExt Designerについて
Ext Designerについて
 
Ext Direct 入門 II
Ext Direct 入門 IIExt Direct 入門 II
Ext Direct 入門 II
 
Ext JS & HTML5
Ext JS & HTML5Ext JS & HTML5
Ext JS & HTML5
 
Ext.util.Observableについて
Ext.util.ObservableについてExt.util.Observableについて
Ext.util.Observableについて
 
Ext.Directについて
Ext.DirectについてExt.Directについて
Ext.Directについて
 
Ext Jsで柔軟に開発仕事をこなす
Ext Jsで柔軟に開発仕事をこなすExt Jsで柔軟に開発仕事をこなす
Ext Jsで柔軟に開発仕事をこなす
 
ExtJS 事例  2ちゃんビューアー「Cromartie49」
ExtJS 事例  2ちゃんビューアー「Cromartie49」ExtJS 事例  2ちゃんビューアー「Cromartie49」
ExtJS 事例  2ちゃんビューアー「Cromartie49」
 
090422 第10回勉強会(公開用)
090422 第10回勉強会(公開用)090422 第10回勉強会(公開用)
090422 第10回勉強会(公開用)
 
Ext.ux.google
Ext.ux.googleExt.ux.google
Ext.ux.google
 
Prototyping tool "Degino"
Prototyping tool "Degino"Prototyping tool "Degino"
Prototyping tool "Degino"
 
第9回勉強会 開発の基本
第9回勉強会 開発の基本第9回勉強会 開発の基本
第9回勉強会 開発の基本
 

Ext Ncs 20081029