【初心者必見】Angularとは?いまさら聞けない基礎を学ぼう

佐野裕史
書いた人 佐野裕史

どうも!インストクターの佐野です。

WEBアプリを開発していると

「もっと簡単に便利なWEBアプリを作成したい」

と思うことがよくあります。

その時によく使われる代表的なものに、Angularがあります。

Angularは、Reactなどと並び、最も使われているJavaScriptフレームワークの一つです。

「聞いたことはあるけどよくわからない…」
「Angularって何?」

と思っていた方も多いのではないでしょうか?

そこで今回は、「Angular」について概要を紹介し、サンプルWEBアプリを作成してみます。

この記事を切っ掛けに、一度WEBアプリ開発で使ってみていただけると嬉しいです。

Angularとは

angular_01

参照:https://angular.io/

Googleが開発しているJavaScriptフレームワーク

「Angular(アンギュラー)」は、Googleによって開発されているJavaScriptフレームワークです。

非常に人気があり、WEBアプリケーションの開発では、Reactなどと並び、最も使われているJavaScriptフレームワークの一つです。

サーバーと連携する機能もあるので、WEBアプリ開発においては何でもできるといっても過言ではないでしょう。

無償で利用できるうえ使い方もわかりやすいので、初心者から上級者まで幅広く使われています。

ここで、Angularのリリースの歴史を簡単に振り返っておきましょう。

年月内容
2012年6月「AngularJS」という名称でバージョン1.0がリリース
2016年9月バージョン1.0のリリースから4年が経ち、アーキテクチャを一新したバージョン2.0がリリースされました。
このとき、名称もJSを取り除いた「Angular」に変更されています。
また、リリース間隔を約6カ月に変更しました。
2017年4月(バージョン3.0を飛ばして)バージョン4.0がリリースされました。
2017年11月バージョン5.0がリリースされています。

2018年3月現在の最新バージョンは5.2.9です。

JavaScriptフレームワークとは

そもそも、JavaScriptフレームワークとは何でしょうか。

私も、「JavaScriptフレームワークとは何ですか?」「JavaScirptライブラリとは何か違うのですか」といった質問をよく受けます。

確かにものすごくわかりづらい用語ですよね。

ここでは、JavaScriptに限らず「フレームワーク」「ライブラリ」の違いを説明しましょう。

ライブラリ

ある特定の機能(プログラム)を部品化したファイルです。

部品化されているプログラムを利用することで、1から機能を作る必要がなくなることがメリットです。

フレームワーク

ライブラリと同じ機能に加えて、「アプリケーションの設計」も行えます。

自分で設計する必要がないため、アルゴリズムなどの内容に集中できることがメリットです。

また、定められた決まりに従っていれば、メンテナンスしやすいアプリケーションになりますので、開発効率が上がるだけでなく、アプリケーションの運用も楽になるというオマケつきです。

特徴

Angularの特徴を抜粋して紹介しましょう。

MVC(MVW)

MVC(MVW)というのはアプリケーションを設計するときの考え方の1つです。

「Model(データ)」、「View(画面)」、「Controller(コントローラー)」の頭文字を取ってMVC、「Controller(コントローラー)」の代わりに「Whatever(何か)」にしたものがMVWです。

MVC(MVW)は、これらを組み合わせることで、1つのアプリケーションを動作させる考え方です。

実のところ、MVCもMVWも大差はありませんので、あまり気にせずそういう枠組みで考えるんだということで次に進みましょう。

MVC(MVW)では、データを扱う部分(Model)、HTMLやCSSなどの画面を作る部分(View)、他の細かい制御を行う部分(ControllerまたはWhatever)など、役割が違うプログラムを、混在させない(別々のファイルで管理する)ため、アプリケーションの設計がスムーズに行えるのです。

双方向データバインディング

AngularはHTMLを拡張して、より便利な機能を提供しています。

その1つが双方向データバインディングと呼ばれる機能です。

いかなるアプリケーションでも、ユーザーが画面(View)で操作した内容をデータ(Model)に反映したり、データ(Model)の内容が変わったときに画面(View)に反映したりする必要があります。

WEBアプリケーションで、画面(View)を操作する場合は、データ(Model)に反映するために、以下のような動作をするようにプログラムを書く必要があります。

「画面からHTML要素を取得」→「要素をデータとして処理」→「処理したデータを画面に反映」

しかし、Angularの双方向データバインディングを使うと、以下のように、HTMLの要素が処理を行うプログラムと連動し、自動的に処理されるのです。

「画面からHTML要素を取得してデータを処理」⇄「画面に反映」

ここまでは、画面の要素を操作したらデータに自動的に反映されることを説明しましたが、逆に、データを変更すると自動的に画面に反映されるようにもなります。

このように、本来プログラムを書く必要がある処理をAngularが対応してくれるため、より少ないコードで機能を実装できるようになっています。

コンポーネント

コンポーネントは、リストやフォームなど、複雑なHTMLを部品化して再利用できる機能です。

コンポーネントには2つのメリットがあります。

  • 同じような要素を多くのページで使い回すことができる
  • 各ページのHTMLが読み書きしやすくなる

コンポーネント内の要素を変更する場合は、コンポーネントの部分を変更するだけで済み、各ページを修正する必要はありません。

Anglarのメリット

angular_02

動作端末が多いWEBアプリケーションを開発可能

WEBアプリケーションは、ブラウザが動作する端末があれば使用できます。

AngularでWEBアプリケーションを開発すれば、Android用とか、iOS用といった動作環境を深く考える必要はありません。

圧倒的な生産性

Angularはすでに設計が組み込まれているので、それに沿って開発を行うことで圧倒的な生産性が期待できます。

多少クセがあり、融通が利かない部分もありますが、Angularの思想どおりに開発すれば、他のフレームワークでも実現できないほど開発スピードが速くなるでしょう。

Angularについてよく聞かれる質問トップ5

どんなアプリケーションに向いているの?

Angularは、システムの管理画面系アプリケーションページ数の少ないWEBアプリケーションに向いています。

仕様が決まっているシステムでは、Angularの思想に沿って開発を行えるので、存分に威力を発揮できます。

また、ページ数が少ないWEBアプリケーションの場合は、HTMLやCSSをJavaScriptで操作することが多くなる傾向があります。

そのため、双方向データバインディングをもつAngularを使うことで開発が簡単になります。

バージョン4の新機能は?互換性は?

2017年4月にはバージョン4.0がリリースされました。

バージョン4.0ではコンパイルエラーの改善や処理の高速化などが改善されました。

ちなみに、バージョン2.0からは、フレームワークの仕様も大幅に変更され、バージョン1.xとは互換性がなくなっています。

バージョン5の特徴は?互換性は?

2017年11月にバージョン5.0がリリースされました。

バージョン5.0のテーマは、単純化スピード&サイズスムーズなアップデートでした。

もっとも話題になった変更点は、インクリメンタルコンパイルのサポートによる、ビルド時間の短縮でしょう。

40秒かかっていたビルドが、2秒に短縮されたという発表もありました。

バージョン2.0以降は、大幅な変更はなく互換性も保たれています。

jQueryとどう違うの?

jQueryとAnuglarは同じJavaScriptで作られたものです。

jQueryは、「フレームワーク」と呼べるほど機能が多く独特の思想で作られていますが、ホントの所は「ライブラリ」です。

jQueryとAngularは同じJavaScriptなので、同時に使いたくなりますが、考え方が違う部分があり、残念ながら干渉するケースがあります。

したがって、WEBアプリケーションごとに、どちらを使うか検討する必要があるでしょう。

Reactとどちらを使うべき?

Facebookが開発を進めている、ReactというJavaScriptライブラリを聞いたことはありますか。

ReactとAngularは、人気を二分すると言っても過言ではないほどの、人気ライブラリです。

開発者は、まずReactとAngularのどちらを使うか検討するところから始めるとも言われています。

ReactとAngularはそれぞれ特徴があり、この記事ではとても語り尽くせないので、以下の記事を紹介します。

Reactにすべきか、Angularにすべきか、以下の記事をよく読んで検討するとよいでしょう。

参考:https://www.webprofessional.jp/react-vs-angular/

Angular CLIでサンプルアプリを作ってみよう!

ここからは、Angularの実力の一端を垣間見るために、Ubuntu 16.04サンプルアプリを作って動作させてみましょう。

そもそもAngular CLIをインストールするときに、Node.js 6.9.0以上が必要になりますので、そこからインストールします。

(1)Node.js、Angular CLIをインストールします。

端末で、以下のコマンドを入力します。

ここでエラーが発生した場合は、以下のページの対策を行ってみてください。

私は、対策2で解決しました。

参考:https://qiita.com/okoysm/items/ced3c3de30af1035242d

(2)新しいプロジェクトを作成します。

端末で、以下のコマンドを入力します。

(3)サーバーを起動します。

端末で、以下のコマンドを入力します。

バックグラウンドでAngularのサンプルアプリが起動します。

(4)ブラウザで「http://localhost:4200/」にアクセスします。

以下の画面が表示されます。

angular_03

これが、Angularで作成したサンプルアプリです!

Angularの求人

Angularの気になる求人ですが、どのような案件で募集されているのでしょうか?

以下にAngular(AngularJS)の求人内容を紹介します。

paiza転職

js_image3
https://paiza.jp/career/job_offers/dev_frameworks/AngularJS

リスティング広告運用支援ツールの開発のフロントエンドエンジニアの開発業務で給与は400万 ~ 600万円となっています!

レバテック

js_image4
https://freelance.levtech.jp/project/fw-43/

JavaScriptを用いたアプリケーションのリプレイスで単価は~63万円/月となっています!

まとめ

ここでは、Angularの特徴やメリット、Angular CLIを使ったサンプルアプリの作成、そして最後に求人情報について紹介しました。

Angularは、企業がもっとも多く採用するJavaScriptフレームワークの一つです。

学習することで、より機能性が高いWEBアプリを簡単につくることが可能になります。

ぜひAngularを学習して、WEBアプリ開発に役立ててください!

JavaScriptカリキュラム無料公開中!

この記事はJavaScript入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、JavaScriptの基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

JavaScript学習に必要な情報を一つにまとめていますので効率よくJavaScriptを学ぶことが出来ます。この機会に是非活用していただければと思います。

無料体験レッスン実施中

今あなたはこんな悩みをお持ちではないでしょうか?

「つまづいてばかりで学習が進まない…」
「どこまで勉強すればいいのか、終わりが見えない…」
「習得できたとしてもどうやって仕事につなげればいいのかわからない…」

プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像をから詳しいサービス内容をご確認ください。

cta_js2

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

佐野裕史

佐野裕史

侍エンジニア塾インストラクター。
主に技術担当をしています。

【経歴】
力仕事、接客業、営業職など様々な業界を経てIT業界に参入。
IT未経験からスタートし、1ヶ月で仕事獲得に奇跡的に成功。
1年半後にフリーランスに転身。

Web開発を主に行っており、得意とするのはRails、Ruby。
【技術スキル】
Rails、Ruby、Swift、Java(Android)、JavaScript

【趣味、趣向】
麻雀
MTG(マジックザギャザリング)
ダーツ、卓球、野球、ボウリングなどの球技

【Facebookページ】
https://www.facebook.com/hiroshi.sano.7
【Twitter】
プログラミング講師@佐野裕史
自分でプログラミングができない人のために情報を発信しています。
お気軽にフォローください。