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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Neos21
April 09, 2026
Programming
0
0
Share
Angular の紹介
Angular を初めて使う人たち向けに作ったスライド。公開用にちょっと修正。
Neos21
April 09, 2026
More Decks by Neos21
See All by Neos21
Let's Use OKE
neos21
0
0
Other Decks in Programming
See All in Programming
Codex CLI でつくる、Issue から merge までの開発フロー
amata1219
0
290
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
2
480
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
110
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
1
400
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
220
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
300
20260315 AWSなんもわからん🥲
chiilog
2
180
事業会社でのセキュリティ長期インターンについて
masachikaura
0
210
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
1.3k
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
3
2.7k
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
5.5k
ファインチューニングせずメインコンペを解く方法
pokutuna
0
250
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
700
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
320
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
480
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.4k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
170
The untapped power of vector embeddings
frankvandijk
2
1.7k
Docker and Python
trallard
47
3.8k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
200
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 界隈の歴史・入門文献まとめ
以上 ご清聴ありがとうございました