Angularとは?
Wikipediaより。
AngularJS(アンギュラージェイエス)、または Angular は、Googleと個人や企業のコミュニティによって開発されている、完全にJavaScriptで書かれたオープンソースのフロントエンドWebアプリケーションフレームワークである。
(中略)
AngularJSはシングルページアプリケーション (SPA) の開発が可能なフレームワークで、一つのフレームワーク内で全ての機能が完結するフルスタックフレームワークであることが特徴として挙げられる。
何ができるの?
主にSPAを作るためのフレームワーク。
Angular Materialといって、AngularでMaterial Designを簡単に導入できるツールなどもあり、いい感じの見た目のサイトが割合簡単に作ることもできる。
ただ、かなりクセのあるフレームワークだと感じていて、なおかつフルスタックのフレームワークなので、特定のページにだけちょこっと導入したいなーという場合には不向き。そういう場合はVue.jsとかのほうがいいらしい(使ったことない)。
AngularJSとAngular
バージョン1のころはAngularJSという名前だったけど、バージョン2からはAngularと名前が変わった。
変わったのは名前だけじゃなくて、AngularJSとAngularでは正直別物と言っていいくらいに中身が変わっている。(互換性もない)
最初は"JS"ってつけて呼ぶのが面倒だからみんなAngularAngular言ってるのかと思ったら、ちゃんと違ってたという。
調べ物をするときはAngularについての記事なのか、AngularJSについての記事なのかちゃんと確認しましょう。(最初はわからなくて混乱した)
なお、今回使うことになったのはAngularの方なので、AngularJSについては以降触れません。
Angularを使う上でわかっておいた方がよいもの
Dependency Injection (DI)
依存性の注入、とよく日本語訳される。デザインパターンの一種。
「依存性」とか言われると(しかもそれを注入??)一瞬よくわからないけど、あるクラスやメソッドが、別のクラスのインスタンスを利用するような場合に、そのクラスやメソッドはそのインスタンスに依存していると表現する。
で、依存性を注入するっていうのは、その依存しているインスタンスを、クラスやメソッド自身が生成するんじゃなくて、外部から渡せるようにするって感じ。
うまく説明できないけど、調べるといい解説がたくさんあるのでググろう。
AngularではこのDIの仕組みを扱う機会が多いので、知っておかないと「意味わからん!」という場面に遭遇しそう。
余談だけど、「依存性の注入」とか、正直このあたりの日本語訳のセンスってどうにかならないものかと^^;
Reactive Extensions (Rx)
リアクティブエクステンション。
もとはC#、、、というか.NETのライブラリだったようですが、Java(RxJAVA)やSwift(RxSwift)などにも広がり、javascript(RxJS)にもやってきた。
データやイベントを「ストリーム」という概念で扱い、関数型言語のようなプログラミングスタイルで、シンプルに書くことができる。
Angularの依存ライブラリとなっていて、よく使われているところを目撃します。
自分は触り始めたばかりなのでまったく上手に扱えないのですが、練習すればいろいろ応用効くのかな、と思っています。
TypeScript
いわゆるAltJSの一種。Microsoftが開発したオープンソースの言語。
AltJSって何?って人は、これもググればすぐわかるんだけど、最終的にjsに変換して使うjsのメタ言語みたいなものと考えればいいかな。
AltJSはいろんな種類があるんだけど、TypeScriptは簡単に言うとjsで型による静的解析を行えるようにしたものです。(デコレータとか他にもたくさん機能があるんですが。。。)
AngularはTypeScriptを採用しているので、これがわからないとほとんど書けないと思います。
まとめ
ちょっと雑ですが、簡単にまとめました。
どっか間違ってたりとか、他にもいろいろ書くべきことはあったりとかすると思うんですが、
使い始めたばっかなので自分もよくわかっておらず。。。
そのうち色々まとめられればと思います。