AngularJS入門
AngularJSとは?
AngularJSは動的Webアプリケーションのためのフレームワークです。 テンプレート言語としてHTMLを使用し、アプリケーションのコンポーネントを分かりやすく簡潔にするためにHTML文法を拡張します。 AngularJSを使うことで、データバインディングと依存注入を通して大部分の余計なコードを排除し、 ブラウザのJavaScriptとサーバー技術が、理想的なパートナーとなるような手助けをしてくれます。
AngularJSは、HTMLが持つ特徴を元に、それをアプリケーション用にするための設計がされています。(翻訳に自信なし) HTMLは静的ドキュメントのための非常に優れた(宣言)言語ですが、アプリケーションを構築するための方法は含まれていません。 そのため、Webアプリケーションを構築するために、一生懸命ブラウザに対してトリックを施さなければならない、 という事になりがちです。
この動的アプリケーションと静的ドキュメントとの間に存在するミスマッチを解消するために、 下記のような対応がよく取られます。
これらに対して、AngularJSは別のアプローチを取ります。 AngularJSは、HTML中心のドキュメントと、アプリケーションが必要に応じて生成する新しいHTMLとの間のミスマッチを、 極力少なくするための試みがされています。 AngularJSは、我々(AngularJS開発チーム)が「ディレクティブ(Directive)」と呼ぶ仕組みを通して、ブラウザに新しい文法を伝えます。 新しい文法には、下記のようなものがあります。
-
{{}}
によるデータバインディング。 - DOMの一部分の繰り返し/非表示のための、DOM制御構造
- フォームとフォーム入力値の検証のサポート
- DOM要素へのコードバインディングの割り当て
- 再利用可能なコンポーネントのためのHTMLのグループ化
クライアントサイドでの解決法
AngularJSは、Webアプリケーションのクライアントサイドを構築する全体のパズルの1ピースという事ではありません。 明確に定義された構造の中にAjax連携コードを書かせ、そのコードと全てのDOMを取り扱います。 そのため、AngularJSはCRUDアプリケーションの構築方法について固執的な傾向があります。 ただし、その固執的な部分を確認しようとする事が、それを自由に変更できるようになるための第一歩になります。 AngularJSを始めるのにあたり、下記のことを頭にいれておきましょう。
- 開発者は、データバインディング、(テンプレート)ディレクティブ、フォーム検証、ルーティング、ディープリンク、再利用可能なコンポーネント、依存注入、 の仕組みの中で、CRUDアプリケーションを構築する必要があります。
- テスト機能として、ユニットテスト、end-to-endテスト、モック、テストハーネスが用意されています。
- アプリエケーションを作り始めるのにあたり、出発点としてディレクトリレイアウトとテストスクリプトを用意します。
AngularJSの使い所
AngularJSは、高階層での抽象化を開発者へ提供することで、アプリケーションの開発を簡素化します。 ただし、抽象化は柔軟性を犠牲にするという一面もあるため、 必ずしも全てのアプリケーションがAngularJSに適しているわけではありません。 AngularJSはCRUDアプリケーション構築を念頭において、作られたもので、 幸いCRUDアプリケーションが、Webアプリケーションの大部分を占めています。 AngularJSがどんなアプリケーションで使うのが適切なのか、また不適切なのかを理解しておくことが大切です。
JavaScriptとHTMLによるゲームやGUIエディターは、強烈且つ複雑なDOM操作が必要なアプリケーションの例です。 こういった種類のアプリケーションは、CRUDアプリケーションとは大きく異なり、AngularJSには適さないでしょう。 このようなケースでは、jQueryのような低階層での抽象化を行うライブラリを使用する方が良いでしょう。
AngularJSの思想
AngularはUI構築とソフトウェアコンポーネントを同時に行う際には、 命令形のコードはビジネスロジックが表現するのに優れてはいるものの、 命令形のコードより宣言コードの方が優れているという信念のもとに構築されています。
- これは、アプリケーションロジックからDOM操作を切り離す非常に良いアイディアです。 また、コードのテストにおいてもメリットが多くなります。
- アプリケーションのテストはアプリケーションを書くことと同じぐらい重要であると考えることは、本当に本当に重要なことです。 テストのし易さはコードの構築方法によって、物凄く影響を受けます。
- これは、アプリケーションのクライアント側とサーバ側を切り分ける素晴らしいアイディアです。 これにより、開発作業を並行して進行することを可能にし、双方の再利用を可能にします。
- もし、フレームワークのアプリケーション構築のガイドに沿って開発者が UIのデザイン、ビジネスロジック、テスト It is very helpful indeed if the framework guides developers through the entire journey of building an app: from designing the UI, through writing the business logic, to testing. It is always good to make common tasks trivial and difficult tasks possible.
Angularは次のような事から開発者を開放してくれます。
© 2017 Google
Licensed under the Creative Commons Attribution License 3.0.
このページは、ページトップのリンク先のAngularJS公式ドキュメント内のページを翻訳した内容を基に構成されています。 下記の項目を確認し、必要に応じて公式のドキュメントをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- AngularJSの更新頻度が高いため、元のコンテンツと比べてドキュメントの情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報やより分かり易くするための追記を行っている事があります。