最新のWEBアプリケーション開発におては、リッチのUI/UX を実装することが重要になってきており、
WEB開発においてJavascript の役割は益々重要になってきています。
しかしながら、ブラウザの違いやバージョンの違い、 Javascript 特有の問題があることも事実です。
歴史的に見ていくと、Ajax 普及前の javascript 軽視の時代ではあまり存在しなかったJavascriptライブラリーも、Ajax の普及とともに増加していきました。
Ajax普及初期には、Prototype.js が利用されるようになり、その後出現した Jquery がデファクトスタンダートとなり、現在でも多く利用されています。
小規模開発においては、Jqueryは非常に強力なツールではありますが、大規模開発には向いてなく、メンテナンス性にも乏しいため、それらを克服するフレームワーク、ライブラリーが出現しており、用途等に応じて使い分けらています。
いずれのフレームワーク、ライブラリにおいても、画面表示を担う Vew, データ層のModel, ロジックを担うContoroller
を分離することにより生産性、メンテナンス性を強化することを目指したかたちになっています。
業務システム、WEBページに利用されている Javascriptフレームワーク・ライブラリーとしては、以下の4つのフレームワークがよく使われていると考えています。
その名(Backbone:背骨)の通りJavascript を構造的に分けて記述することを発端として作成されBackbone.js、 データバインディングを強化しMVVM( Model-View-ViewModel)
フレームワークとして開発された Knockout.js、 使い勝手を更に高めた軽量MVVM の Vue,js、 googleが推進しているフルスタック型のAngular.js 。
それぞれ開発の規模、用途によって使い分けしますが、現在インフォディオでは将来性等も加味して Angular.js での開発に力を入れ、ノウハウの蓄積を行っています。
Javascript の開発において、ブラウザ間の動作の差異を吸収するため、様々なフレームワークやライブラリーが作成されています。
フレームワーク名 | 特徴 | メリット | デメリット |
---|---|---|---|
Backbone.js | 比較的古くからあるJavascript フレームワーク。Jquery での開発における問題点(大規模開発では行き詰まる) を解決し、 構造化することに対して重きを置き、他のライブラリーツールと併用することを前提としているMVC アーキテクチャーである。 | シンプルで小さい。 Model 操作が優れている。 |
DOM操作、ルータ、データバインディング、テンプレートエンジン等は他のライブラリを利用する必要があり、統一性に欠ける。 コーディングに手間がかかる。 |
Knockout.js |
MVVM アーキテクチャーである。 大規模システムよりも中小規模システム向けである。 |
学習コストが低く、導入がはやい。 双方向データバインディング IE6 -11 をサポートしている。 |
構造化に対してベストプラクティスがないため、コードの統一性に難が発生しやすい。 大規模開発に難がある。 |
Vue.js |
比較的新しいフレームワークで、Knockout.jsのいいところを取り入れた軽量で学習コストが低いフレームワーク。 MVVM アーキテクチャーである。 |
学習コストが低く、導入がはやい。 双方向データバインディング。 Knockout.js よりも更にシンプル。 小規模用途では非常に使いやすい。 |
構造化に対してベストプラクティスがないため、コードの統一性に難が発生しやすい。 大規模開発に難がある。 |
Angular.js | Googleが注力しているフルスタック フレームワーク | 多くの機能がはじめから搭載されている。 双方向データバインディングである。 XSS(Cross Site Scripting ) 脆弱性問題に対してフレームワークレベルでサポートしているため セキュリティー的に優れたシステムを構築しやすい。 Google が注力して開発している。 |
機能が多いが故に学習コストがかかる。 数千オーダーのイベントリスナーを実装すると 実装にDigest Loop 系の深い知識が必要とされる。 Jquery等の既存資産を活用できない。 |
Javascript の仕様のバージョンの違いや欠点を補うため、他のプログラミング言語からjavascript にトランスコンパイル(変換)して実行する いわゆるAltJS と呼ばれる言語がよく使われています。 AltJS は、当初 Rubyist の中で急速に普及したCoffeeScript と、現在急速に広がっている TypeScript の2つが使われいます。 インフォディオにおいても、生産性、品質向上のためにTypeSciprtを用いての開発を行っています。