Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Angular の紹介
Search
Neos21
April 09, 2026
Programming
18
0
Share
Angular の紹介
Angular を初めて使う人たち向けに作ったスライド。公開用にちょっと修正。
Neos21
April 09, 2026
More Decks by Neos21
See All by Neos21
Let's Use OKE
neos21
0
15
Other Decks in Programming
See All in Programming
Back to the roots of date
jinroq
0
820
サークル参加から学ぶ、小さな事業の回し方
yuzneri
0
180
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
650
My daily life on Ruby
a_matsuda
3
350
書き換えて学ぶTemporal #fukts
pirosikick
2
370
空間オーディオの活用
objectiveaudio
0
150
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
410
Import assertionsが消えた日~ECMAScriptの仕様はどう決まり、なぜ覆るのか~
bicstone
2
180
Claude CodeでETLジョブ実行テストを自動化してみた
yoshikikasama
0
1.2k
Are We Really Coding 10× Faster with AI?
kohzas
0
170
Building on Bluesky's AT Protocol with Ruby
mackuba
0
120
Terraform言語の静的解析 / static analysis of Terraform language
wata727
1
140
Featured
See All Featured
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
49
Product Roadmaps are Hard
iamctodd
PRO
55
12k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
What's in a price? How to price your products and services
michaelherold
247
13k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
280
Heart Work Chapter 1 - Part 1
lfama
PRO
7
35k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
280
Into the Great Unknown - MozCon
thekraken
41
2.5k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
320
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Transcript
Angular の紹介
目次 1. このスライドの目的 2. Angular とは 3. Angular の特徴 1.
TypeScript・Angular CLI 2. データバインディングの仕組み解説 3. コーディング環境の動作デモ 4. 実行環境・関連ツール 1. Node.js・npm・Git 5. Angular を利用した開発における注意点
このスライドの目的 • Angular とは何かを知る • Angular を使った Web アプリ開発の流れがイメージ できるようになる
Angular とは • Google が開発 • SPA を実現するフレームワーク
SPA とは Single Page Application の略
JavaScript と Web アプリケーションの 関係の歴史をおさらい
1. 昔ながらの Web アプリケーション クライアント・サーバ型 • 画面遷移ごとにサーバが動的に生成した HTML を返す •
JavaScript は画面上の処理の補助程度
2. AJAX・jQuery の登場 • AJAX の登場により 非同期通信でデータを取得し 画面遷移することなく HTML を書き換えて表示
• JavaScript で HTML を書き換える DOM 操作は自力で実装 • jQuery の登場で DOM 操作はマシになったものの 大規模開発になると破綻しやすい • ブラウザごとの挙動の違いも自分たちで考慮する必要…
SPA の登場 • DOM 操作をフレームワークに任せる データバインディング (ブラウザ差異もフレームワークが吸収) • クライアントサイドは非同期通信とデータバインディングを駆 使して1つの
HTML ファイル上で複数の画面切替を実現する だから「Single Page」Application • サーバサイドはデータの返却と永続化だけ担当 クライアントアプリとは疎結合な作りにできる RESTful WebAPI サーバが主流に
Angular の特徴
Angular の特徴 • 開発言語に TypeScript を使用 • Angular CLI が開発環境・ツールを一式提供
• フォーム開発・非同期通信などを実現する 各種ライブラリも組み込み済み • フルスタック • 大規模開発に向いている • 規則・規約は多いが 平仄は揃えやすい • 新たに決めないといけないことが少ない
TypeScript • Microsoft が開発した言語 • JavaScript に型定義を持ち込み より Java っぽく使えるようにした拡張言語
• ベースは ES2015 (ECMAScript) という JavaScript の新しめの仕様に準拠 • JavaScript は「クラス」ごとに ファイルを分けて開発する時代 • これ以前の古い JS の仕様は もはや誤りなので参考にしない
Angular CLI • 開発フローやコーディング規約などを整備した Angular 公式のコマンドラインツール • プロジェクトや雛形ファイルが コマンド一発で生成できる •
ライブリロード開発 • コーディングスタイルをチェック・自動整形 • ユニットテストツール • E2E テストツール
Angular CLI で できること ほんの少しだけ紹介
Angular CLI でプロジェクト雛形を生成 • Angular CLI の「ng」コマンドを使用する $ ng new
example-app
Angular CLI でプロジェクト雛形を生成 example-app/ ├ package.json ├ angular.json ├ tsconfig.json
├ tslint.json ├ src/ │ ├ index.html │ ├ main.ts │ ├ app/ │ │ ├ app.component.ts │ │ ├ app.component.html │ │ ├ app.component.css │ │ └ app.component.spec.ts │ └ environments/ └ e2e/ … ディレクトリが生成される … 依存モジュール・スクリプト定義ファイル … プロジェクト設定ファイル … TypeScript コンパイル設定ファイル … TypeScript スタイルチェック用ファイル … ブラウザで表示する唯一の HTML ファイル … Angular アプリの起動に必要な処理 … トップ画面の「処理」 … トップ画面の「構造」 … トップ画面の「見栄」 … トップ画面のユニットテストコード … 開発環境・本番環境の切替用設定ファイル … E2E テストコード
各クラスのファイル雛形も一発生成 • 「ユーザ情報一覧」画面を構成するクラスを作ってみる : ファイル生成と同時に import の追記もしてくれる $ ng generate
component users CREATE src/app/users/users.component.scss (0 bytes) CREATE src/app/users/users.component.html (28 bytes) CREATE src/app/users/users.component.spec.ts (643 bytes) CREATE src/app/users/users.component.ts (280 bytes) UPDATE src/app/app.module.ts (406 bytes) # ←
ライブリロード開発 • 専用のコマンドで開発用の簡易サーバが起動する • ソースファイルの変更を検知して自動的に再ビルド • ブラウザも連動して自動的に F5 更新してくれる $
ng serve
豊富な同梱ツール群 • TSLint • TypeScript のスタイルチェッカ • 型定義忘れや変数名の良くない記述を指摘してくれる • インデントなどはファイル保存時に自動修正
• Jasmine・Karma • ユニットテストツール • コードカバレッジも分かる • Protractor • Selenium 的な E2E テストツール • 複数ブラウザに対応・設定次第で iPhone 上での自動テストも可
Angular の基礎 データバインディングの仕組みを知る
データバインディングの仕組み 1 • 登場人物 1 : コンポーネント TS • 1画面の「処理」を実装する
ファイル • さきほどの ng generate コマンドで自動生成 • メンバ変数 name は自分で実装したもの @Component({ selector: 'app-example', templateUrl: './example.component.html', styleUrls: ['./example.component.scss'] }) export class ExampleComponent { /** 名前データを保持する変数 */ public name = 'テスト'; }
データバインディングの仕組み 2 • 登場人物 2 : コンポーネント HTML • コンポーネント
TS に対応する「画面」を実装するファイル • HTML 中に Angular 独自の記法を混ぜ込める <p>ようこそ {{ name }} さん!</p> Angular 独自記法
データバインディングの仕組み 3 • 登場人物 1 : コンポーネント TS • 1画面の「処理」を実装する
ファイル • さきほどの ng generate コマンドで自動生成 • メンバ変数 name は自分で実装したもの @Component({ selector: 'app-example', templateUrl: './example.component.html', styleUrls: ['./example.component.scss'] }) export class ExampleComponent { /** 名前データを保持する変数 */ public name = 'テスト'; } コンポーネント HTML ココでファイルの 紐付け
データバインディングの仕組み 4 • HTML 上の {{ name }} と TS
上の name メンバ変数 が リンクしている <p>ようこそ {{ name }} さん!</p> @Component({ /* 省略 */ }) export class ExampleComponent { /** 名前データを保持する変数 */ public name = 'テスト'; } 最終的な画面表示: ようこそ テスト さん! コンポーネント TS: コンポーネント HTML:
データバインディングの仕組み 5 • TS 上の name メンバ変数を書き換えれば 連動して画面表示も変わる <p>ようこそ {{
name }} さん!</p> @Component({ /* 省略 */ }) export class ExampleComponent { /** 名前データを保持する変数 */ public name = 'なまえ'; } 最終的な画面表示: ようこそ なまえ さん! コンポーネント TS: コンポーネント HTML: 「テスト」から 変更
データバインディングの仕組み 6 • ココまでは TypeScript → HTML の 単方向データバインディング •
Web アプリケーションは ユーザの操作に基づいて 処理したいことも多々ある • 画面 (HTML) で発生したイベントを起因に データを書き換えるには • HTML から コンポーネント TS にイベント発生を知らせる • → イベントバインディング
データバインディングの仕組み 7 • コンポーネント HTML にボタンを設置する • ボタンにクリックイベントのバインディングを設定する <p>ようこそ {{
name }} さん!</p> <button (click)="setName()">名前を設定する</button> Angular 独自記法 (onclick と同等) 呼び出したい関数名を 記述する
データバインディングの仕組み 8 • コンポーネント TS に 対応する setName() メソッドを作る @Component({
/* 省略 */ }) export class ExampleComponent { /** 名前データを保持する変数 */ public name = 'テスト'; /** 名前データを設定する処理 */ public setName(): void { this.name = 'おなまえ'; } } • メンバ変数 name に 文字列「おなまえ」を 代入するメソッド • 実行されれば メンバ変数 name の値は 「テスト」から 「おなまえ」に書き換わる
データバインディングの仕組み 9 <p>ようこそ {{ name }} さん!</p> <button (click)="setName()">名前を設定する</button> クリック
@Component({ /* 省略 */ }) export class ExampleComponent { /** 名前データを保持する変数 */ public name = 'テスト'; /** 名前データを設定する処理 */ public setName(): void { this.name = 'おなまえ'; } } 関数実行 画面描画が 変わる イベント伝達
データバインディングの仕組み 10 • 双方向データバインディング は • TS → HTML の「データバインディング」と
• HTML → TS の「イベントバインディング」を • 組み合わせて • 相互にデータをやりとりする仕組み
デモ お見せします
デモアプリの仕様 と やること ログイン画面 トップ画面 ユーザ一覧 画面 設定画面 ログアウト 1.
データバインディング の実演 2. 新規画面として実装 表にデータをバインドする 3. (作成済) デザインサンプル
コーディング環境の動作デモ IDE (エディタ) に Visual Studio Code を使います • ライブリロード開発の様子
• Angular CLI による雛形ファイル生成 • コーディングスタイルチェック • ファイル保存時の自動コード整形 • データバインディングを活用した実装手順 • https://stackblitz.com/edit/angular-example-20181030
デモ おわり 実行環境・関連ツールの話に 移ります
実行環境・関連ツール • Angular アプリ開発には Node.js・npm が必要 • Git でのバージョン管理がデファクト・スタンダード
Node.js • JavaScript の実行環境 • 通常の JS の実行環境は「ブラウザ」 • 「画面」を持たず
JS を実行する • JavaScript コードをサーバサイドで実行 するために作られた • Angular アプリのビルド処理、 簡易サーバなどの実行基盤となる
npm (Node Package Manager) • Node.js 同梱の パッケージ管理ツール • Maven・RubyGems
的な • 依存ライブラリを DL・インストールしてくれる • 定義ファイルに利用ライブラリなどを書く • package.json • 同ファイルに開発用サーバ起動やテスト実行などのコ マンドも定義できる
Git • バージョン管理ツール • CVS・SVN 的な • Angular CLI でプロジェクト雛形を作ると勝手に構築される
• バージョン管理ツールのデファクト・スタンダード • Windows 向けには Bash ターミナル環境も提供 (GitBash) • 独特な概念が多いので 初学者は要学習 • 理解して使えばチーム開発がとってもやりやすくなる
実際に使って感じた Angular の特徴
TypeScript ありがたい • JavaScript の型に関する難解な仕様から逃れられる • クラス構文のおかげでオブジェクト指向で書きやすい • TSLint と
VSCode (IDE) の併用で コーディング中にエラーが分かる・自動修正してもらえる ※ 非同期処理など素の JavaScript でも出てくる概念は要学習 (ES2015 以降の仕様のキャッチアップは必要)
明示的な規約・規則が多い • 「誰が作っても同じような作り」にしやすい • 平仄がとれるので保守性は高まる • 他の有名な SPA フレームワークと比べて ファイル数・コーディング量は多くなりがち
• 初学者は覚えること・記述量が多くて大変かも • 技術スタックやコーディングルールなどを 1 から考えて周知する手間は省ける • 「先人の知恵」に従う方が結果的にはメリットが多い
Angular アプリ開発時の注意
開発者が自分で DOM 操作してはいけない • Angular に jQuery は併用できない • Angular
の「データバインディング」に任せる • (これまで JS で画面を操作してきた概念とは全く違う) • 強引に DOM 操作してしまうと Angular がその変更を検知できず アプリが壊れる Angular の思想・流儀を知り、従う
ググる時は「情報の鮮度」に注意 • Angular の最新バージョンは 7.0.0 (2018年11月時点) • v7 は10月にリリースされたばかり •
v6 系が LTS (長期サポート) 対象 • v4 系以前は既にサポート終了 • Angular は半年ごとにメジャーバージョンアップする • 「数年前の情報」は記法や API が異なり参考にならなくなる 使用するバージョンに適した情報を参照すること
これまでの Angular のバージョン • Angular1 : 正式名称「AngularJS」 • フレームワークとして別物・互換性がないので参考にならない •
Angular2 : 構文がかなり異なり参考にならない • Angular3 : 存在しない • Angular4 : 仕様は最新版に通ずるが非推奨になった機能も • Angular5 : 設定ファイルやコマンドオプションに違い • Angular6 : つい最近までは主流だったので情報も多め • Angular7 : これからはこのバージョンの情報が増えてくる
覚えることは多い • Node.js・npm・Git (多少は Bash も) • TypeScript・ES2015 • 非同期処理
: Promise・RxJS • HTML5 (文書の「構造」を示すスキルが必要) • CSS (コンポーネント指向での設計) • SASS / SCSS (CSS の拡張言語) • CSS フレームワーク (Bootstrap・Material Design) 開発しながら覚えていく・知識を更新し続ける
どこから手を付けるか (学習パス) • Angular 公式 • https://angular.jp/ • 日本語版のチュートリアルあり・Angular はまずココから
• JavaScript Promise の本 • http://azu.github.io/promises-book/ • 非同期処理の実装で必要になる Promise の知識 • TypeScript 入門以前ガイド • https://mizchi.hatenablog.com/entry/2018/10/03/195854 • JS・TS 界隈の歴史・入門文献まとめ
以上 ご清聴ありがとうございました