Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

初心者に向けてAngularを詳細に徹底解説


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20220131102203p:plain

おはようございます。Shotaです。

皆さんは、Angularを知っていますか?

🤨「Angularって何?」

😥「聞いたことはあるけどよくわからない...」

このように感じている人も少なくないと思います。

そこで、今回の記事ではAngularについて徹底解説します。


Angularとは

f:id:ShotaNukumizu_1000:20220131102439p:plain

AngularはGoogleが開発したTypeScriptフレームワークです。ReactやVueと並んで非常に人気が高く、Webアプリを開発する際によく使われています。

Angularはもともと、AngularJSというJavaScriptフレームワークでした。しかし、現在はAngularJSのサポートが終了しているのでTypeScriptだけに対応しています。

フルスタックフレームワーク」を理念に掲げており、単体でフロントエンド全体を構築できるように一通りの機能を揃えています。

Angularの特徴

f:id:ShotaNukumizu_1000:20210924094721p:plain

Angularの特徴は大きく、以下の3つに分けられます。

それぞれ順番に解説していきます。

MVC(Model-View-Controller)モデル

MVCモデルはアプリケーションを設計する際の考え方の一つです。MVCは「Model」、「View」、「Controller」の頭文字から構成されており、これらを組み合わせることでより効率的に一つのアプリを動作させるという考え方です。

  • Model―アプリケーションの処理計算などの主な処理やデータの格納などを行う
  • View―ユーザに対して画面を表示する
  • Controller―ユーザからの要求を受け取り、処理の実行をモデルに依頼してその結果の表示をViewに依頼する

Angularはこの考え方をベースに開発を行うので効率よく、また不具合に対する修正も簡単にできます。

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

AngularはHTMLを拡張して、より便利な機能を提供しています。その一つが双方向データバインディングです。

どのアプリでも、ユーザが画面(View)で操作した内容(Model)をデータに反映したり、データ(Model)の内容が変わった時に画面(View)に反映したりする必要があります。

Webアプリケーションで、画面(View)を操作する際にはデータ(Model)に反映するために次のような動作をしてプログラムを書かなければなりません。

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

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

画面からHTML要素を取得し、データとして処理
🔽 🔼
画面に反映

Angularでは、データを変更すると自動的に画面に反映されるようになります。

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

コンポーネント指向

コンポーネントは、リストやフォームなどの複雑なHTMLを部品化して再利用できる機能です。主に以下のようなメリットがあります。


  • 類似した要素を使い回せる
  • 各ページのHTMLの読み書きが簡単


Angularのメリット・デメリット

メリット

f:id:ShotaNukumizu_1000:20210921075852p:plain

コーディングの簡略化

Webアプリを開発する際には、一つの挙動に対して何百行も書かなければなりません。そこで、Angularを使うことで同じ挙動でも少量のコードで実装できます。そのため、開発のスピードも上がりますし、コードの読みやすさも上がってデバッグがより簡単になります。

また、既存の技術を応用するので開発をより安全にかつ簡単に行うことができます。

動作端末が多い

本来であればWebアプリを作る際にiOS用、Android用など動作端末を考慮して開発する必要があります。

ところが、Angularを使って開発する際にはブラウザが動作する端末であれば利用できます。そのため、動作端末を考える必要がありません。

圧倒的な生産性

Angularはすでに設計が組み込まれているので、それに従って開発することで端末を考慮する必要性がなくなります。

デメリット

f:id:ShotaNukumizu_1000:20210924065330p:plain

学習コストが高い

Angularは非常に高機能で、Web開発を大きく効率化してくれるのが最大の特徴です。しかし、Angularには独特な設計思想や用語が多いので、従来のWebアプリ開発のノウハウでは上手に使えないこともあります。

Angular独特の用語や設計思想に慣れ、その特性を十分に生かして開発に応用していくためには多くの学習量と経験を要します。そのため、ゼロから始める初心者にとっては難しい一面があります。

アップデートが高速

Angularはアップデートが速いメリットがありますが、これがデメリットにつながることもあります。

アップデートで従来の機能で利用されていたものが廃止されたり、上手に動作しなくなったりする可能性が他のフレームワークに比べて高いです。

そのため、Angularはバージョンに留意して開発を進めていく必要があります。

柔軟性が低い

Angularは「フルスタックフレームワーク」なので、Djangoと同様にWeb開発に必要な機能を一式揃えているのが特徴です。

しかし、AngularはWeb開発をする上で不要になった機能をアンイストールできない等、他のフレームワークに比べて柔軟性が低いです。

Angularの将来性

今後、Webアプリの開発需要が右肩上がりになっていくと予想されます。AngularはWeb開発に必要な機能を一式揃えているので、アプリの需要に応じて右肩上がりになると予想されます。

サンプルコード

f:id:ShotaNukumizu_1000:20210924113541p:plain

ここで簡単にAngularのサンプルコードを示しておきます。

import { Component } from '@angular/core';

@Component({
  selector: 'hello-world',
  template: `
    <h2>Hello World</h2>
    <p>This is my first component!</p>
  `
})
export class HelloWorldComponent {
  // The code in this class drives the component's behavior.
}

こちらのコンポーネントを使うには、テンプレートに以下のように記述します。

<hello-world></hello-world>

Angularがこのコンポーネントレンダリング(HTML上に表示させる)と、結果は以下のようになります。

<h2>Hello World</h2>
<p>This is my first component!</p>

このように、Angularではコンポーネント単位でプログラムを書いていくので読みやすいプログラムを仕上げられます。

まとめ:AngularはTypeScriptの練習で使ってみたいフレームワーク

f:id:ShotaNukumizu_1000:20210924083334p:plain

今回の記事では、世界で有名なTypeScriptフレームワーク「Angular」について詳細に解説しました。

AngularはWeb開発に必要な機能を一式揃えているので、効率的にフロントエンドを開発する上では非常に便利なフレームワークです。私は普段のフロントエンドでNuxtやVueを使っていますが。これを機にAngularで効率的にフロントエンドを開発してみたいと思っています。(TypeScriptの練習にもなるし)

今回の記事を参考に、Angularについて理解を深めていただければ幸いです。

今回の記事はこれで終了です。

参考サイト

www.sejuku.net

it-kyujin.jp

www.webprofessional.jp

media-architect.co.jp

angular.jp

参考動画

www.youtube.com

おすすめの記事

shotanukumizu-1000.hatenablog.com

shotanukumizu-1000.hatenablog.com

shotanukumizu-1000.hatenablog.com

shotanukumizu-1000.hatenablog.com