Angularとは
目次
Angularとは、Googleが開発を進めている、WEBアプリケーション開発のためのJavaScriptフレームワークの一つです。
SPA(Single Page Application)作成のためのフルスタックフレームワークなので、このフレームワークひとつでWEBアプリケーションの作成に必要な機能が簡易に実装できる仕組みが整います。
一方で、フルスタックのフレームワークであるがゆえに、一部のページのみに導入するには不向きです。
Reactと並んで人気のあるフレームワークなので、WEBアプリケーション開発に携わっているエンジニアなら名前は聞いたことがある!という方も多いのではないでしょうか?
AngularJSとAngularの違い
2012年のバージョン1.0リリース時には「AngularJS」という名称でしたが、2016年のバージョン2.0リリース時から「Angular」という名称に変更されています。
名称が変わっただけではなく、AngularJSとAngularには互換性がなく、仕様もかなり変わっているため、調べ物をする際には、AngularJSについての記事なのか、Angularについての記事なのかを確認する必要があります。
Angularの特徴
Angularには、最新のJavaScriptの技術や新しい概念が多く使われており、ゆえにReactと比べて学習コストがかかる、導入ハードルが高いと言われたりもします。
しかし、裏を返せば、Angularを使うことは、新しい技術や概念の習得にもなるということですね。
Angulaには以下のような特徴があります。
- MVC
- コンポーネント
- TypeScript
- RxJS(Reactive Extensions for JavaScript)
- 依存性の注入(Dependency Injection)
一つずつ、詳しく説明していきます。
MVC
AngularではMVCモデルを採用しています。
データの処理や操作をおこなう「Model」、データの入出力をおこなう「View」、ModelとViewをつなぐ「Controller」の3つにプログラムを分けてアプリケーションの設計をしていく考え方です。
これにより、効率よく、拡張性の高いアプリケーション設計が可能になります。
コンポーネント
Angularではリストやフォームといったページの要素のひとまとまりを部品化して、組み立てていく「コンポーネント指向」を前提としています。
コンポーネント指向を用いることで、同じような機能はコンポーネントを再利用し簡易に実装できる、機能単位で実装を分離しやすくなる、コードの見通しが良くなるなどのメリットが期待できます。
TypeScript
Angularでは、TypeScriptの使用が推奨されています。
TypeScriptはMicrosoftが開発した、オープンソースのJavaScript拡張言語です。
JavaScriptにJavaやC#のような「型」や「クラス」の概念を取り入れたプログラミング言語になっていて、コンパイル時にエラーを発見しやすかったり、クラスを用いることで、プログラムの再利用がしやすいなどのメリットがあります。
RxJS(Reactive Extensions for JavaScript)
RxJSは、JavaScriptで非同期処理やイベントを柔軟に扱うためのライブラリです。
RxJSはWebSocketなど、継続的に、多数データやイベントを扱うようなアプリケーションを開発する場合に、とても便利な仕組みです。
関数型言語のようなプログラミングスタイルでシンプルに書くことができるようになっています。
この他にもAngularには、モジュールを動的にロードするためのSystemJSや非同期処理のコンテキストを管理・操作するZone.jsなど、今どきのモダンなJavaScriptの技術が利用されています。
依存性の注入(Dependency Injection)
1つのクラスに固定の定数や変数、インスタンスが入っていているなどの依存性を排除して、引数を使って、クラスや変数を外から受け取れるようにするといったようなデザインパターンの一種です。
このデザインパターンを導入することで、それぞれのクラスが独立して動くようになるので、単体テストがしやすく、見通しが良く、拡張性の高いコードが書けるようになります。
Angularのメリット
Angularには、効率的に拡張性の高いWEBアプリケーションを設計するための仕組みやライブラリ、デザインパターンがあらかじめ実装されています。
Angular独特の仕様や、新しい技術を積極的に取り入れているフレームワークなので、導入時の学習コストが結構重めですが、うまく扱えるようになれば圧倒的に開発スピードは上がります。
システム管理画面系のアプリケーションのような、あらかじめ仕様が決まっているシステム開発に導入すると、Angularの思想に沿った開発を行いやすいのでオススメです。
また、ページ数が少なく、HTMLやCSSをJavaScriptで操作することが多いアプリーケーションの場合も、Angularの双方向データバインディングといったような便利な機能を使えるので、簡単に効率よく開発が行えます。
企業の情報やエンジニアとしてのキャリアアップの方法、現在の待遇(給料・報酬)、未経験からのステップアップ方法などのご相談を受け付けています。
お気軽にお問合せください。