![windows-typescript-0003-04](https://www.popoblog.tech/wp-content/uploads/2023/09/windows-typescript-0003-04.jpg)
こんにちは!Popoです。
この記事を読むと「Angularて何?」という疑問が解決できます。
前回の記事で簡単なTypeScriptの処理で画面に文字列を表示させてみました。
![](https://www.popoblog.tech/wp-content/uploads/2023/08/windows-typescript-0002-01.jpg)
「Web画面にUIを表示させてみたい」と思われる方が多いと思います。
![](https://www.popoblog.tech/wp-content/uploads/2023/05/business_man_question.png)
でも、どうすればいいの?
前回の記事では、コマンドプロプト画面やターミナル画面に文字列を表示をしていました。
![](https://www.popoblog.tech/wp-content/uploads/2023/05/business_man_question.png)
![](https://www.popoblog.tech/wp-content/uploads/2023/05/business_man_question.png)
![](https://www.popoblog.tech/wp-content/uploads/2023/05/business_man_question.png)
ブラウザ画面に表示させるにはどうすればいいの?
こういった疑問が出てくる思います。
そこで今回は、Html、CSSとTypeScript間でインターフェースを構築できるAngularについて勉強してみたいと思います。
![](https://www.popoblog.tech/wp-content/uploads/2023/05/cropped-79073d2d475c1194e5648b33dfb42d39.png)
![](https://www.popoblog.tech/wp-content/uploads/2023/05/cropped-79073d2d475c1194e5648b33dfb42d39.png)
![](https://www.popoblog.tech/wp-content/uploads/2023/05/cropped-79073d2d475c1194e5648b33dfb42d39.png)
Angularて?何だ?
そう思われる方は是非この記事を読んでいただきたいと思います。
お恥ずかしい話ですが、私も今までAngularてどういうものを全然理解していない状態でした。😓
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUU0JUJCJThBJUU2JTk3JUE1JUUzJTgxJThCJUUzJTgyJTg5JUUzJTgxJUFGJUUzJTgxJTk4JUUzJTgyJTgxJUUzJTgyJThCQW5ndWxhciZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9MjE3MTgzMjczMGJhN2I4ZjM4NDZiYjdjNDIwZmE1MDI&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBhcWx3YWgmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTg2YTliNDVkY2EwZDlhYzc5OTg2NTBhNzdhMjZjMGVl&blend-x=142&blend-y=486&blend-mode=normal&s=1c8ff023b18422dc8f424290d63357f6)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUU0JUJCJThBJUU2JTk3JUE1JUUzJTgxJThCJUUzJTgyJTg5JUUzJTgxJUFGJUUzJTgxJTk4JUUzJTgyJTgxJUUzJTgyJThCQW5ndWxhciZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9MjE3MTgzMjczMGJhN2I4ZjM4NDZiYjdjNDIwZmE1MDI&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBhcWx3YWgmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTg2YTliNDVkY2EwZDlhYzc5OTg2NTBhNzdhMjZjMGVl&blend-x=142&blend-y=486&blend-mode=normal&s=1c8ff023b18422dc8f424290d63357f6)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9QW5ndWxhciVFMyU4MyU5NyVFMyU4MyVBRCVFMyU4MiVCOCVFMyU4MiVBNyVFMyU4MiVBRiVFMyU4MyU4OCVFMyU4MSVBRSVFNCVCRCU5QyVFNiU4OCU5MCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9ZTllNTk1YTNkZDNlOThmNTkxODk3MGQ3M2Q5MjcwZGY&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBLYW9ydUl0bzc2JnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1jNWFjNDdiYjgyYjJjYzYzOWE4ZTMwYTk4Yzc1MzdmYw&blend-x=142&blend-y=436&blend-mode=normal&txt64=aW4g5qCq5byP5Lya56S-44ON44Kv44K544OI44OT44O844OI&txt-width=770&txt-clip=end%2Cellipsis&txt-color=%231E2121&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=156&txt-y=536&s=aec46069bbfd220202f36f6571557544)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9QW5ndWxhciVFMyU4MyU5NyVFMyU4MyVBRCVFMyU4MiVCOCVFMyU4MiVBNyVFMyU4MiVBRiVFMyU4MyU4OCVFMyU4MSVBRSVFNCVCRCU5QyVFNiU4OCU5MCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9ZTllNTk1YTNkZDNlOThmNTkxODk3MGQ3M2Q5MjcwZGY&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBLYW9ydUl0bzc2JnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1jNWFjNDdiYjgyYjJjYzYzOWE4ZTMwYTk4Yzc1MzdmYw&blend-x=142&blend-y=436&blend-mode=normal&txt64=aW4g5qCq5byP5Lya56S-44ON44Kv44K544OI44OT44O844OI&txt-width=770&txt-clip=end%2Cellipsis&txt-color=%231E2121&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=156&txt-y=536&s=aec46069bbfd220202f36f6571557544)
Angularの動作環境
![Angularの動作環境](https://www.popoblog.tech/wp-content/uploads/2023/09/4f9ad48613c506e3c3f986b66e29434b.png)
![Angularの動作環境](https://www.popoblog.tech/wp-content/uploads/2023/09/4f9ad48613c506e3c3f986b66e29434b.png)
Angularでwebアプリーションを開発するために必要な環境ソフトのバージョンになります。
項目 | バージョン |
Node | v18.17.0 |
TypeScript | Version 5.1.6 |
OS | Windows 11 |
VSCode | version1.81.0 |
Angular CLI | 16.2.0 |
Angularてどういう物なの?
![Angularとはどういう物なのか?](https://www.popoblog.tech/wp-content/uploads/2023/09/b0ecdfda877f03fc871a3d80cb5947ba.png)
![Angularとはどういう物なのか?](https://www.popoblog.tech/wp-content/uploads/2023/09/b0ecdfda877f03fc871a3d80cb5947ba.png)
Angularとは、Google社が開発したJavaScriptのフレームワークです。
Angular CLI(Command Line Interface)を使って、プロジェクトの生成からビルド、デプロイまで実行することができます。
Angularを使う場合は、あらかじめNode.jsをインストールしておく必要があります。
![](https://www.popoblog.tech/wp-content/uploads/2023/08/windows-typescript-0001-01.jpg)
![](https://www.popoblog.tech/wp-content/uploads/2023/08/windows-typescript-0001-01.jpg)
メリット、デメリット
![メリット、デメリット](https://www.popoblog.tech/wp-content/uploads/2023/09/a16020cebe9334e5f4910709e5480515.png)
![メリット、デメリット](https://www.popoblog.tech/wp-content/uploads/2023/09/a16020cebe9334e5f4910709e5480515.png)
メリット、デメリットをまとめてみました。
メリット | デメリット |
---|---|
フルスタックのフレームワークなので単体でのアプリ開発が可能 MVCを採用しているためスムーズにアプリケーションを設計できる 双方向データバインディングによりソースコードの記述を減らせる | バージョンアップが頻繁にある |
メリット
フルスタックのフレームワークなので単体でのアプリ開発が可能
webアプリケーションのフロントエンド部分を、単体で開発可能になっています。
MVCを採用しているためスムーズにアプリケーションを設計できる
「Model(モデル)」、「View(画面)」、「Controller(コントローラー)」にわけて開発する「MVC」という考え方を採用しています。それぞれを独立したかたちで分割して開発することから、スムーズにアプリケーションの設計をすすめることが可能になっています。
双方向データバインディングによりソースコードの記述を減らせる
画面操作の内容が自動でデータに反映され、変更後のデータ内容が画面にも反映されます。
双方向データバインディング機能が両者のデータを監視し、必要に応じて更新・同期を行ってくれます。
デメリット
バージョンアップが頻繁にある
Swiftも同じようなものですね😓
Angularをインストールしてみよう!
![Angularをインストールしてみよう!](https://www.popoblog.tech/wp-content/uploads/2023/09/42c4119e82b97f3a53929e9082ef4ae0-1.jpg)
![Angularをインストールしてみよう!](https://www.popoblog.tech/wp-content/uploads/2023/09/42c4119e82b97f3a53929e9082ef4ae0-1.jpg)
Angularをインストールしてみましょう!npmコマンドでインストールなんですね!
npm install -g @angular/cli
コマンドプロンプトを表示して、サクッと実行できます。
![Angularをインストールしてみよう!1](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-07.jpg)
![Angularをインストールしてみよう!1](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-07.jpg)
Angularのバージョンを確認してみましょう。
コマンドは下記になります。
ng version
![Angularバージョン確認](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-08.jpg)
![Angularバージョン確認](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-08.jpg)
正常にインストールできています。
Angularのプロジェクトを作成してみよう!
![Angularのプロジェクトを作成してみよう!](https://www.popoblog.tech/wp-content/uploads/2023/09/ca0e939beff917277a57e1f5bf145159.png)
![Angularのプロジェクトを作成してみよう!](https://www.popoblog.tech/wp-content/uploads/2023/09/ca0e939beff917277a57e1f5bf145159.png)
Angularでwebアプリケーションを開発するために、プロジェクトを作成してみましょう!
ng new <プロジェクト名>
gitはインストールしていないので、エラーになっています。
![](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-09-1.jpg)
![](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-09-1.jpg)
生成されたプロジェクトフォルダには、Angularプロジェクトであることを示す angular.json に加え、Typescript プロジェクトであることを示す tsconfig.json などが含まれますね。
![プロジェクト作成2](https://www.popoblog.tech/wp-content/uploads/2023/08/image-9.png)
![プロジェクト作成2](https://www.popoblog.tech/wp-content/uploads/2023/08/image-9.png)
![](https://www.popoblog.tech/wp-content/uploads/2023/05/cropped-79073d2d475c1194e5648b33dfb42d39.png)
![](https://www.popoblog.tech/wp-content/uploads/2023/05/cropped-79073d2d475c1194e5648b33dfb42d39.png)
![](https://www.popoblog.tech/wp-content/uploads/2023/05/cropped-79073d2d475c1194e5648b33dfb42d39.png)
コマンド1行で準備ができるので便利ですね!
Angular のコンポーネントとは?
![Angular のコンポーネントとは?](https://www.popoblog.tech/wp-content/uploads/2023/09/19dc7b9fc75139b9c8d0e0b26fde9824-1-800x420.png)
![Angular のコンポーネントとは?](https://www.popoblog.tech/wp-content/uploads/2023/09/19dc7b9fc75139b9c8d0e0b26fde9824-1-800x420.png)
「コンポーネント」を調べてみると、下記が記載されています。
コンポーネントとは、部品、成分、構成要素などの意味を持つ英単語。ITの分野では機器やソフトウェア、システムの構成する部品や要素などのことを意味する。
ソフトウェア開発の分野では、特定の機能を持ち単体で完結しているが、単体では使用せず(できず)、他のプログラムから呼び出されたり連結されたりして使用されるプログラム部品のことをソフトウェアコンポーネントという。
IT用語辞典 e-Words
言葉だけでは、わかったようなわからないような。。。。。。
例えば、画面を作る場合にヘッダコンポーネントとナビゲーションコンポーネントとメインコンテンツコンポーネントを組み合わせて画面を作成するといったイメージになります。
「プロジェクト作成」で作成したプロジェクト内にソースコードも生成されています。
![コンポーネント1](https://www.popoblog.tech/wp-content/uploads/2023/08/image-10-800x377.png)
![コンポーネント1](https://www.popoblog.tech/wp-content/uploads/2023/08/image-10-800x377.png)
ファイル名 | 機能 |
src/app/app.component.html | index.html から読み込まれるルートコンポーネント。 |
src/app/app.component.css | ルートコンポーネントのスタイルシート。 |
src/app/app.component.ts | ルートコンポーネントのスクリプト。 |
src/app/app.component.spec.ts | ルートコンポーネントのユニットテストスクリプト。 |
Angular は、Model-View-ViewModel からなるMVVMパターンを踏襲したフレームワークという事で、下記のような役割を持っています。
- Model
アプリケーションのコアとなるドメインロジック(ユーザからは見えない)
※.ts ファイル - View
ブラウザ上でユーザと対話するロジック(ユーザから見える)
※.html ファイルおよび.css ファイル - ViewModel
Model と View の橋渡しを行うロジック
「@Component」は下記箇所になります。
![コンポーネント2](https://www.popoblog.tech/wp-content/uploads/2023/08/image-11.png)
![コンポーネント2](https://www.popoblog.tech/wp-content/uploads/2023/08/image-11.png)
「@Component」中にコンポーネントのメタ情報(コンポーネント自身の情報)を記述します。
項目 | 説明 |
selector | ‘app-root’ コンポーネントセレクタ(Angular の View 上でそのコンポーネントを示す名前) |
templateUrl | ‘./app.component.html’ コンポーネントの View 構造を記述したファイル(HTML) |
styleUrls | ‘./app.component.css’ コンポーネントの View スタイルを記述したファイル(CSS) |
理解しやすい構図になっていますね。😊
webアプリケーションの画面を表示してみよう!
![webアプリケーションの画面を表示してみよう!](https://www.popoblog.tech/wp-content/uploads/2023/09/89ff19b70d3eb0a6e546a763b61e01b6-1.png)
![webアプリケーションの画面を表示してみよう!](https://www.popoblog.tech/wp-content/uploads/2023/09/89ff19b70d3eb0a6e546a763b61e01b6-1.png)
Angularプロジェクトを作成して、サンプルの画面も生成されているのでサーバを起動して画面を表示してみましょう!
サーバを起動するコマンドは下記になります。
ng serve --host 0.0.0.0 --port 8080
ブラウザからhttp://{サーバアドレス}:8080/ にアクセスしすると、 Angularの画面が表示されるはずです。
![](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-10.jpg)
![](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-10.jpg)
これは、VSCodeでプロジェクト名を右クリックし、「統合ターミナルで開く」オプションをクリックして、再度コマンドを実行すればサーバは起動します。
![「統合ターミナルで開く」オプションをクリック](https://www.popoblog.tech/wp-content/uploads/2023/08/image-13.png)
![「統合ターミナルで開く」オプションをクリック](https://www.popoblog.tech/wp-content/uploads/2023/08/image-13.png)
「Compiled successfully.」が表示されればOKです。
![](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-11.jpg)
![](https://www.popoblog.tech/wp-content/uploads/2023/09/20230909-11.jpg)
画面が表示できました。😊
![画面表示](https://www.popoblog.tech/wp-content/uploads/2023/08/image-14.png)
![画面表示](https://www.popoblog.tech/wp-content/uploads/2023/08/image-14.png)
Angularのその他機能について
![Angularのその他機能について](https://www.popoblog.tech/wp-content/uploads/2023/09/752a15667971c25ab3a3b553fc5a8e0c.png)
![Angularのその他機能について](https://www.popoblog.tech/wp-content/uploads/2023/09/752a15667971c25ab3a3b553fc5a8e0c.png)
Angularには様々な機能があります。
機能 | 説明 |
バインディング | ViewとViewModelの間で情報をやりとりする仕組みを、バインディングといいます。 |
ディレクティブ | Angularが解釈できる独自のキーワードをHTMLに記述することで、Viewの出力結果を変化させる仕組みをディレクティブといいます。 |
パイプ | Viewにおいて表示内容を整形するための単純な関数(入力 → 整形 → 出力)の仕組みをパイプといいます。 |
ルータ | Angular ではコンポーネントを組み合わせて画面を構成しますが、何らかのアクションに合わせて表示するコンポーネントを入れ替えることで、画面遷移を表現できます。この機能をルーティングといいます。 |
ガード | ルーティングを制御するための機能をガードといいます。遷移先が利用可能かどうか判定するための関数といえます。 |
HTTP クライアント | Angular では、サーバと非同期通信を行うための HTTP クライアントが提供されています。 |
RxJS | リアクティブプログラミングを行うJavaScriptライブラリです。 |
今後順番に検証していきたいと思っています。
まとめ
![まとめ](https://www.popoblog.tech/wp-content/uploads/2023/09/5c5b5d01868e55add427f914e27c705d.png)
![まとめ](https://www.popoblog.tech/wp-content/uploads/2023/09/5c5b5d01868e55add427f914e27c705d.png)
Angularについてザックリと勉強してみました。
理解しやすい構造で「ホッ」としています。😓
色々な機能がある事もわかり、今回の案件で採用している理由も納得できます。
最後に、私がプログラミング言語を学習する上で実感している事があります。
書籍、記事を読むだけではなく、その内容に従って実際にプログラム等作成してみる事!
書籍やブログ記事等を読んだだけでは、直ぐに忘れてしまいまいます。
実際に作業した内容は、脳に浸透していきます。
これをするかしないかで学習理解が格段に違ってくると思います。
試していただきたいですね!
![](https://www.popoblog.tech/wp-content/uploads/2023/05/cropped-79073d2d475c1194e5648b33dfb42d39.png)
![](https://www.popoblog.tech/wp-content/uploads/2023/05/cropped-79073d2d475c1194e5648b33dfb42d39.png)
![](https://www.popoblog.tech/wp-content/uploads/2023/05/cropped-79073d2d475c1194e5648b33dfb42d39.png)
それではまた!