Dojo Toolkit

Dojo Toolkit
開発元 Dojo Foundation
最新版
1.15.0 / 2019年2月16日 (5年前) (2019-02-16)
リポジトリ
  • github.com/dojo/framework
ウィキデータを編集
プログラミング
言語
JavaScript
対応OS クロスプラットフォーム
種別 JavaScriptライブラリ
ライセンス デュアルライセンス (BSD License, Academic Free License)
公式サイト http://dojotoolkit.org
テンプレートを表示

Dojo ToolkitオープンソースJavaScriptライブラリの1つで、クロスブラウザに対応したJavaScript/Ajaxアプリケーションを迅速に開発するために設計されている。2004年にAlex Russell, Dylan Schiemann, David Schontzlerらによって作成されたものが元となっており、現在はBSDライセンスAcademic Free Licenseのデュアルライセンスで配布されている。 Dojo Toolkitを提供しているDojo Foundationは、Dojo Toolkitの企業採用を促進するために設立された非営利組織である。

機能

豊富な標準機能とUIパーツ(Dojoウィジェット)

Dojoを利用することで、ブラウザのJavaScript実装の違いを吸収する他、Ajaxアプリケーションの作成やJavaScriptのコーディングを手助けする様々な標準APIが利用可能となる。例えば、Ajaxアプリケーションではページ遷移による画面状態を失わなせないため、ブラウザの履歴に状態を保持する必要があるが、この機能はDojoではdojo.backという名称で提供されている。

また、Dojoは標準で様々なUIパーツを提供しており、ほとんどのUIパーツはプラグインなどを導入せずとも利用可能である。これらはDojoウィジェット、もしくは単にウィジェットと呼ばれる。Dojoウィジェットは、JavaScript、HTMLマークアップ、およびCSSを包括したコンポーネントであり、例えば以下のようなものがある。

  • メニュー、タブ、ツールチップ、ダイアログ
  • 並べ替え可能なテーブル
  • 動的なグラフ
  • アニメーション効果(フェードイン、フェードアウト、ワイプ、スライド)
  • ドラッグアンドドロップ可能なツリー
  • 多彩なフォーム部品と、フォームへの入力の妥当性検査
  • カレンダーによる日付入力、時刻入力

提供されるAPI、ウィジェットの詳細については、Dojo API Reference[1]を参照のこと。また、DojoのデモがDojo公式サイトで公開されているので、合わせて参照されたい[2]

テーマ

Dojoウィジェットの見た目は、テーマによって規定されており、デフォルトでは、以下の4種類のテーマを利用することが可能である。

  • tundra
  • soria
  • nihilo
  • claro (1.5から)

これらテーマは自作することも可能である。

アクセシビリティへの配慮

Dojoが提供するデフォルトのウィジェットはアクセシビリティに配慮されており、ほとんど全てのウィジェットがキーボードのみでも操作可能になっている。また、デフォルトのテーマは色覚異常の人にも見やすいカラーリングとなるように配慮されている。

国際化対応

Dojoでは、国際化対応を行うための機能、および機構が提供されている (dojo.i18n)。また、Dojoが提供するデフォルトのウィジェットは最初から国際化対応されているものがほとんどで、ブラウザーの言語設定によって、UIパーツが自動的にローカライズされた見た目に変化する。

非同期通信

Dojoは、様々なブラウザでのXMLHttpRequestの実装の差異を吸収した、ラッパークラスを提供する(dojo.xhr)。また、様々な他のトランスポート(iframeなど)やデータフォーマット(ファイルのアップロードなど)もサポートしている (dojo.io)。これらを利用することによって、ページリロードなしでの情報のやり取り、およびページの見た目を変更することが可能である。

パッケージシステム

Dojoは、モジュールの開発、利用を容易にするためのパッケージシステムを提供している。Dojoにおいて最も基本となるスクリプトであるdojo.jsを読み込むと、ルートとなる名前空間である"dojo"以下に、階層構造を持ったパッケージの名前空間がセットアップされる(io, eventなど)。この初期セットアップが完了すると、dojo.jsによって提供される関数(dojo.require)によってXMLHttpRequestが送信され、個々のDojoパッケージが読み込まれる。Dojoのパッケージからは、他のパッケージへの依存性を指定することも可能である。つまり、そのパッケージが読み込まれると、依存性が指定された他のパッケージも読み込まれる。

このパッケージの依存性解決には順序性を保障する必要があるため、同期的なHTTP通信が行われる。このため、パッケージを多く読み込むページでは、初期ロードに非常に時間がかかってしまい、またキャッシュが有効に機能しなくなってしまう(ほとんどのWebブラウザは、XMLHttpRequestを介して読み込まれたファイルをキャッシュしない)ため、Dojoでは以下で説明するカスタムビルドの機能を提供している。

カスタムビルド

Dojoでは、最小限のパッケージを含むカスタマイズされたビルドを生成する、カスタムビルドの機能を提供している。この仕組みは、Dojoが標準で豊富な機能を提供するため、ファイルサイズやファイル数が肥大化してしまっていることを解決するだけでなく、パッケージシステムによるdojo.requireの同期通信をなくし、さらにクロスドメインでのスクリプト読み込みへの解決策を提供する。

カスタムビルドでは、プロファイルと呼ばれるパッケージのリストをインプットとして受け取る。ビルドを行うと、依存性を持ったパッケージが全て含まれ、更にRhinoを利用して圧縮された、1つのJavaScriptファイルを生成する。一般的な利用向けに事前構築されたプロファイルは、Dojo Toolkit(完全版)と同じ場所からダウンロードすることができる。

Dojoのカスタムビルドについては、Dojo Campusの該当ページ[3]を参照のこと。

データストア

Dojoには、データストアと呼ばれる、データの読み書きを抽象化したオブジェクトを提供しており、その拡張として、サーバーサイドとのやり取りを容易にする、様々なクラスを提供している (dojo.data.*, dojox.data.*)。

  • ItemFileReadStore: 検索機能を提供する、最も基本となる読み取り専用のデータストア。
  • ItemFileWriteStore: データの追加や削除機能を持つ、読み書き可能なデータストア。
  • CsvStore: カンマ区切りの表形式のデータを読み取る、読み取り専用のデータストア。
  • OpmlStore: OPMLフォーマットの階層構造のデータを読み取る、読み取り専用のデータストア。
  • YahooStore: Yahoo! Searchの検索結果を取得する、読み取り専用のデータストア。
  • DeliciousStore: del.icio.usのブックマークを取得する、読み取り専用のデータストア。
  • RdfStore: SPARQLを利用し、RDFデータサーバ(例: Rhizome RDF application server)とやり取りを行う、読み書き可能なデータストア。

この他、S3Store, RailsStore, WikipediaStore, Google*Store, CouchDBRestStoreなど、様々なWeb上のサービスと連携するためのデータストアが提供されている。詳細はDojo API Reference[1]を参照のこと。

Adobe AIRのサポート

JavaScriptベースのAdobe AIRアプリケーションにおいて、Dojoを利用することが可能である。DojoはAIRのセキュリティ要件を満たすように変更されている。

Dojoのコンサルティング会社であるSitepenは、Dojoを利用した"Dojo Toolbox"と呼ばれるAdobe AIRアプリケーションを作成している。これは、APIビューワやDojoのビルドシステムのGUIが含まれている。通常、ビルドシステムはRhinoを通して実行されるが、このAIRアプリケーションではJavaを利用することなく、AIRからビルドシステムを実行している[4]

Dojoでの開発

Dojoでの開発は、任意の適切なエディタを使用して行うことができる。NetBeans, Eclipse, Aptana, ActiveState Comodo等の例がある。NetBeansとEclipseは、フリーソフトウェアであり、AptanaとComodoはコミュニティバージョンが存在する。Dojoのプラグインは様々なIDEで利用可能である。 Dojoを使用したWYSIWYGの開発では、オープンソースのWaveMakerを使用することができる。

Dojo Foundationとスポンサー

IBMとサン・マイクロシステムズは、Dojoのコードへの寄与を含めた、公式サポートをアナウンスしている[5][6]

Zend社はDojoとのパートナーシップと、Zend Frameworkへ組み込むことをアナウンスしている[7]

Dojo Foundationは501(c)(6)に属する非営利団体で、オープンソースプロジェクトを支援するために設立された。その主な目標は、企業による採用の支援と、コラボレーションのための、その他のプロジェクトの奨励である。

スポンサーとメンバーは以下の通り。

Dojo Foundationは以下のプロジェクトを支援しており、これらはDojo Toolkitに組み込まれている。

  • Persevere
  • OpenRecord
  • Cometd (for the Comet content-streaming paradigm)
  • DWR
  • Lucid Desktop [8]

脚注

  1. ^ a b Dojo API Reference
  2. ^ The Dojo Toolkit - Demos
  3. ^ Dojo Custom Build
  4. ^ Dojo Toolbox
  5. ^ “IBM Contributes Ajax Software Development Technology to Open Source Community”. IBM Press Release (2006年6月5日). 2007年2月3日閲覧。
  6. ^ “"Sun Joins the OpenAJAX Alliance and Dojo Foundation"”. Sun Microsystems Press Release (2006年6月16日). 2007年2月3日閲覧。
  7. ^ Dojo and Zend Framework Partnership Announcement
  8. ^ Lucid Desktop

参考文献

  • Orchard, Leslie M. (November 24, 2008). Concise Guide to Dojo (1st ed.). Wrox Press. pp. 264. ISBN 978-0470452028. http://www.wrox.com/WileyCDA/WroxTitle/Concise-Guide-to-Dojo.productCd-0470452021.html 
  • Russell, Matthew A. (June 24, 2008). Dojo: The Definitive Guide (1st ed.). O'Reilly Media. pp. 500. ISBN 978-0596516482. http://oreilly.com/catalog/9780596516482/ 
  • Riecke, Craig; Gill, Rawld; Russell, Alex (June 18, 2008). Mastering Dojo: JavaScript and Ajax Tools for Great Web Experiences (1st ed.). Pragmatic Bookshelf. pp. 568. ISBN 978-1934356111. http://www.pragprog.com/titles/rgdojo 
  • Holzner, Steven (December 14, 2008). The Dojo Toolkit: Visual QuickStart Guide (1st ed.). Peachpit Press. pp. 208. ISBN 978-0321605122. http://www.peachpit.com/store/product.aspx?isbn=0321605128 
  • Zammetti, Frank (September 19, 2008). Practical Dojo Projects (1st ed.). Apress. pp. 500. ISBN 978-1430210665. http://www.apress.com/book/view/1430210664 
  • Hayes, Kyle (November 17, 2009). Getting StartED with Dojo JavaScript Toolkit (1st ed.). Friends of Ed. pp. 350. ISBN 978-1430225218. http://www.friendsofed.com/book.html?isbn=9781430225218 
  • Svensson, Peter (November 24, 2008). Learning Dojo (1st ed.). Packt Publishing. pp. 264. ISBN 978-1847192684. http://www.packtpub.com/tutorial-for-building-interactive-interfaces-with-dojo/book 
  • Harmon, James E. (June 21, 2008). Dojo: Using the Dojo JavaScript Library to Build Ajax Applications (1st ed.). Addison-Wesley Professional. pp. 336. ISBN 978-0132358040. http://www.informit.com/store/product.aspx?isbn=0132358042 
  • Orchard, Leslie M.; Pehlivanian, Ara; Koon, Scott; Jones, Harley (August 31, 2009). Professional JavaScript Frameworks: Prototype,YUI, ExtJS, Dojo and MooTools (1st ed.). Wrox Press. pp. 888. ISBN 978-0470384596. http://www.wrox.com/WileyCDA/WroxTitle/Professional-JavaScript-Frameworks-Prototype-YUI-ExtJS-Dojo-and-MooTools.productCd-047038459X.html 

関連項目

  • JavaScriptフレームワークの比較(Comparison of JavaScript frameworks)
  • Druid OSE

外部リンク

ポータル FLOSS
ポータル FLOSS
  • dojotoolkit.org, Dojo公式サイト、デモなど
  • Dojo Foundation
  • Infoworld review of Ajax toolkits, 31 July 2006
  • Dojo Overview
方言
エンジン(英語版)
フレームワーク
ライブラリ
クライアントサイド
サーバーサイド
ライブラリ
人物
その他
低レベル
高レベル
AmigaOS対応
  • BOOPSI(英語版)
  • Magic User Interface(英語版)
  • ReAction GUI(英語版)
  • Zune(英語版)
Mac OS/macOS対応
  • Cocoa (API)
  • MacApp(英語版)
  • MacZoop(英語版)
  • PowerPlant(英語版)
Windows対応
X11下のUnix対応
  • Athena/Xaw(英語版)
  • InterViews(英語版)
  • LessTif
  • Motif
言語別
クロスプラットフォーム
CLI
  • Gtk#
  • Moonlight(英語版)
  • Tao(英語版)
C/C++
  • CEGUI(英語版)
  • Component Library for Cross Platform
  • FLTK
  • FOX toolkit(英語版)
  • OpenGL User Interface Library(英語版)
  • GTK
  • Juce(英語版)
  • Qt
  • Wt(英語版)
  • Tk
  • TnFOX(英語版)
  • Ultimate++(英語版)
  • Visual Component Framework(英語版)
  • wxWidgets
  • YAAF(英語版)
  • XForms
  • XVT(英語版)
Objective-C
Flash
Java
デスクトップ
ウェブ
JavaScript
  • Dojo Toolkit
  • Echo(英語版)
  • Ext JS
  • Google Closure Tools
  • jQuery
  • jQuery UI
  • MooTools
  • Qooxdoo(英語版)
  • script.aculo.us(英語版)
  • YUI(英語版)
Common Lisp
Object Pascal
Perl
  • WxPerl(英語版)
  • Perl/Tk
PHP
  • PHP-GTK(英語版)
  • PHP-Qt(英語版)
  • WxPHP(英語版)
Python
Ruby
  • Shoes
  • QtRuby(英語版)
XML
  • Ample SDK(英語版)
  • CougarXML(英語版)
  • GladeXML
  • Lively Kernel(英語版)
  • Pyjamas(英語版)
  • Rialto Toolkit(英語版)
  • XAML
  • XML User Interface(英語版)
  • XUL
  • Wt(英語版)
  • 一覧記事一覧(英語版)
  • カテゴリカテゴリ
典拠管理データベース ウィキデータを編集
全般
  • VIAF
国立図書館
  • ドイツ
  • アメリカ