40
ASP.NET SPA 開開開 開開開開開 開開開開開開開開開開開開 1 開開開開開開開開開 開開開開開開Microsoft MVP 開開 開2016 開 12 開 17 開 開開 () Copyright© 2016 Shin-ichi Koga All Rights Reserved.

ASP.NET SPA開発をはじめよう~今と未来とステップアップ

  • Upload
    -

  • View
    566

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

1

ASP.NET SPA 開発をはじめよう~今と未来とステップアップ

アバナード株式会社 マネージャー( Microsoft MVP )古賀 慎一

2016 年 12 月 17 日(土)

Copyright© 2016 Shin-ichi Koga All Rights Reserved.

Page 2: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

2

このセッションのゴール

SPA を実現する技術の全体像の今と未来をイメージする

書籍「はじめての ASP.NET SPA 開発入門」のカバー範囲を理解する

今、どこから学習を始めるべきか?イメージする

未来に、よりステップアップするには?を事前にイメージする

自分のチームで ASP.NET SPA 開発を始められるようになる!

Single Page Application

Page 3: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

3

自己紹介古賀 慎一

Microsoft MVP for Visual Studio and Development Technologies

アバナード株式会社 マネージャー

Visual Studio を使用した開発標準の策定・ EVM による進捗管理・教育

前職ではクラウドサービス開発で TFS 導入事例

http://tech.surviveplus.net/archives/1114

「仕組み」作りで 如何に高品質・低コストで早い開発を実現できるか?

書籍執筆 日経 BP 社より発売中

Page 4: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

4

アジェンダ

SPA とは?

SPA を実現する技術の全体像

クライアント技術

サーバー技術

基礎・実践から効率化・生産性へ

まとめ

Page 5: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

5

SPA とは?シングルページアプリケーションの仕組みと実例

Page 6: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

6

SPA とは

ページ遷移なしに

Web API でサーバーとデータをやり取りして

クライアントの JavaScript で画面を更新して

動作する Web アプリケーション

例: Azure 管理ポータル , VSTS, Office 365, Facebook, Twitter ・・・

Page 7: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

7

Page 8: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

8

Page 9: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

9

Page 10: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

10

Page 11: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

11

 

ブラウザ

画面 1 を表示

Web サーバー

リクエスト 1(URL1 ・パラメータ )

レスポンス 1(HTML1 ・ CSS)

ユーザー操作(ボタンクリック)

画面 2 を表示

リクエスト 2(URL2 ・パラメータ )

レスポンス 2(HTML2 ・ CSS)

処理 1 実行

表示されるデータ 1 を作成

データ 1 を埋め込んだ HTML を作成

ユーザー操作(ページを表示)

処理 2 実行

表示されるデータ 2 を作成

データ 2 を埋め込んだ HTML を作成

ユーザー操作(ボタンクリック)

画面 3 を表示

リクエスト 3(URL3 ・パラメータ )

レスポンス 3(HTML3 ・ CSS)

処理 3 実行

表示されるデータ 3 を作成

データ 3 を埋め込んだ HTML を作成

旧来動作

Page 12: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

12

 

ブラウザ

画面 1 を表示

Web サーバー

リクエスト 1(URL ・パラメータ )

レスポンス 1(HTML ・ CSS ・ JS)

画面を変更(JavaScript により DOM を動的に変更 )

リクエスト 2(URL2 ・パラメータ )

レスポンス 2(JSON2)

処理 1 実行

HTML と JavaScript を返す

ユーザー操作(ページを表示)

処理 2 実行

表示されるデータ 2 を作成

データ 2 を JSON で返す

ユーザー操作(ボタンクリック)

リクエスト 3(URL3 ・パラメータ )

レスポンス 3(JSON3)

処理 3 実行

表示されるデータ 3 を作成

データ 3 を JSON で返す

データ 2 を表示(JavaScript により DOM を動的に変更 )

自動的に動作開始(ページ表示完了・タイマー)

画面を変更(JavaScript により DOM を動的に変更 )

データ 3 を表示(JavaScript により DOM を動的に変更 )

SPA 動作

Page 13: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

13

SPA であれば

デスクトップやスマートフォンのアプリと同様に

ユーザーの操作に応じて非常にレスポンスよく動作する

使いやすい Web アプリケーションを作れる

旧来の Web アプリケーションとは開発方法が大きく異なる

どのようにアプリを作ればいいのか?

Page 14: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

14

SPA を実現する技術の全体像(主なものを抜粋)

 

HTML CSSJavaScrip

tTypeScrip

t jQuery Knockout 3rd Party AngularJS

ASP.NET 4.6

C# LINQ Entity Framework SQL Database / SQL Server

MVC Web API ASP.NET Core 1.0 / 1.1

Azure App Service (Web Site) Docker Nano Server

Visual Studio Visual Studio Team Services / Team Foundation Server

NuGet npm Bower Grunt gulp webpack

DOM MVVM Web Authentication

Page 15: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

15

とてつもなく広い

どこから始めればいいの?

Page 16: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

16

始め方とステップアップ(お奨め)

 

HTML CSSJavaScrip

tTypeScrip

t jQuery Knockout 3rd Party AngularJS

ASP.NET 4.6

C# LINQ Entity Framework SQL Database / SQL Server

MVC Web API ASP.NET Core 1.0 / 1.1

Azure App Service (Web Site) Docker Nano Server

Visual Studio Visual Studio Team Services / Team Foundation Server

NuGet npm Bower Grunt gulp webpack

DOM MVVM ■ 基礎(別途勉強が必要)

■ 本書のカバー範囲

■ 最低限カバー

■ ステップアップ

Web Authentication

Page 17: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

17

クライアント技術jQuery + Knockout (MVVM) から始めよう!

Page 18: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

18

まずは HTML, CSS, JavaScript

最も基本的な技術

本書の範囲外

自分でデザインするのは難しいが、理解して扱うことができるように

Page 19: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

19

JavaScript の代わりに TypeScript を使おう

TypeScript をビルドすると JavaScript が作られる(エラー時は作られない)

熟練者がコード規約に従って JavaScript を書くのと同じ効果

.ts

TypeScriptファイル

Visual Studio(コンパイル)

.js

JavaScriptファイル

.html

HTMLファイル

(参照)

ブラウザに表示・動作 エラー(型・構文の問題を表示)

成功.htm

l

Page 20: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

20

SPA では JavaScript より TypeScript の方が簡単

JavaScript の問題を沢山解決している(いわゆる「地雷」が少ない)

サーバー側で使う C# に近い・データ型も大切

最終的に JS になるので安心

JS の方が参考になるソースが沢山あるが、

参考にならない(バグ・古い・アプリ開発用じゃない)ソースもたくさんある

Page 21: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

21

クライアント側のフレームワークは

なし=「 JavaScript だけ」 は非常に難・手間

jQuery で DOM 操作(初級基礎)

Knockout で MVVM (中級基礎)

サードパーティーは図表など目的に合わせて(中級~上級・応用)

AngularJS などは高度なアプリに(上級・応用)

本書の範囲

Page 22: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

22

MVVM は他のアプリを作るときも基本的な作り方

jQuery で画面要素の構築 & 画面表示に動きを付ける ( DOM 操作)

Knockout でデータを表示 & ユーザーの入力を受け取る(データバインド)

本書ではこの方法を詳しく解説

これができればおおよそのエンタープライズ アプリは作れます

Page 23: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

23

jQuery と Knockout が使いこなせるようになってからステップアップを考えよう高度なチャートやグリッドを表示したくなったらサードパーティー製を検討

高度な画面遷移が必要になったら AngularJS などを検討

他のフレームワークと共存できないモノ、採用したら簡単には変更できないモノも

十分に特性・目的を理解してどれを採用するか?決めていく必要がある

池原 大然 さんのセッション

「 JavaScript/HTML UI ライブラリーを利用し Web アプリケーションをリッチに」

ステップアップをイメージ!

Page 24: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

24

サーバー技術ASP.NET とデータベース技術を習得から!

Page 25: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

25

サーバー側は ASP.NET

MVC で HTML ・ CSS ・ JS を返す

Web API でデータを返す&データを保存する

DB を使うなら LINQ, Entity Framework

本書の範囲

Page 26: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

26

SQL Server は別途勉強が必要です

本書では Azure SQL Database の開発方法を解説

テーブル設計については最低限しか扱わないので、別途勉強が必要

LINQ 、 Entity Framework の習得は必須

現代ではプログラムから扱いやすいテーブル設計が重要

正規化や省サイズよりも、プログラムで扱いやすく高速なことが重要

Page 27: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

27

時代は ASP.NET 4.6 から ASP.NET Core 1.1 へ

開発も実行もマルチプラットフォーム ( Visual Studio for Mac も登場!)

ASP.NET が様々な環境で動く!

だけじゃなく、新しいオープンソースの文化も取り入れた開発方法へ

Page 28: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

28

ずっと以前の ASP.NET の印象

ずっと以前は完全に Microsoft 独自路線(良くも悪くも)

Visual Studio がすべてやってくれる

代わりに「世界の流行りに乗りにくい」

でも 「これさえやれば OK 」が明確だった

エンタープライズ開発向け 生産性重視(現代では機能不足)

デザイン・高度な機能は省略される傾向・重い etc...

Page 29: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

29

今まさに進化する ASP.NET !(印象です)

オープンソースの文化を取り入れ流行りに乗れる!

それでも Visual Studio がすべてやってくれる( or VS から簡単に扱える)

内部で使われる技術は独自路線ではなく世界の主流へ

今まさに完成形へ 

これからは「最新への変化」と「安定」が常に繰り返すかも

最新機能はまだ VS が全部やってくれないとか、すぐに仕様が変わるとか

現代のエンタープライズ開発もコンシューマー向け開発も OK !

Page 30: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

30

ASP.NET Core が使えるなら使おう!

いち早く取り入れている人が身近にいるチームでは採用しよう!

過渡期は情報(細かいノウハウ)があっという間に古くなる

Visual Studio 2017 / Visual Studio for Mac の情報に注目!そろそろ落ち着くはず

独学や ASP.NET 4.6 の資産が多いチームでは、ほんの少しだけ待ちかも

本書では ASP.NET 4.6 を扱う

基本は同じ(近い将来 ASP.NET Core へステップアップ!)

Page 31: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

31

さらに ASP.NET が動く環境も変わっていく!

Azure やオンプレ Windows サーバー( IIS )で動く

これからはマイクロサービス対応

細かい機能ごとに Web API群を分けてリリースするイメージ

Nano Server (超最小の Windows Server 2016) 、 Docker ( コンテナ ) でもASP.NET は動く

本書では Azure App Service (Web Site) を扱う

基本は同じ・設計は工夫が必要(近い将来 マイクロサービスへステップアップ!)

Page 32: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

32

基礎・実践から効率化・生産性へ流行りのタスクランナーと DevOps へステップアップ

Page 33: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

33

本書で作るサンプル

基礎編:

アプリの作り方・動作確認の方法・ Azure にデプロイする方法

jQuery + Knockout MVVM (データバインド・ DB 更新 などの最低限の動作)

実践編:

バリデーション・フィルタ(検索)などの実務アプリに必要な機能の実装方法

単体テストの作り方

パッケージ管理や継続的デリバリーなど作り方の効率化

SPA では特に重要、もっとステップアップできる!

Page 34: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

34

パッケージ管理

インターネット上のライブラリをどうやって自分のアプリに入れるか?

依存関係・バージョンの管理を手間なく!

本書では NuGet パッケージの使い方・作り方・チームでの共有方法を扱う

Web の世界的な主流は npm (開発環境系) と Bower (実行環境系)

使いたいパッケージ・実現したいことに応じてステップアップ!

Page 35: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

35

ビルドタスク・タスクランナー

ソースコードのビルド、 JavaScript の圧縮・結合などをどれだけ

自動化・効率化できるか?

本書では MSBuild タスクで JavaScript と CSS ファイルを min 化する方法を扱う

Web の世界的な主流は Grunt, gulp, webpack実現したいことに応じてステップアップ!

矢後 比呂加 さんセッション「 ASP.NET フロント最適化 入門」

ステップアップをイメージ!

Page 36: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

36

継続的デリバリ・ DevOps 2.0

開発・テスト・リリースのリードタイムを限りなく0へ

DevOps 2.0 では一日に何度もリリース!

TFS/VSTS Build & Release

本書では Build でソース管理~ビルド~ Azure デプロイの最低限を扱う

さらに使いこなしてステップアップ!

関 満徳 さんセッション

「 VSTS(Visual Studio Team Services) で始めるアジャイル開発 - Build & Release編」

ステップアップをイメージ!

Page 37: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

37

まとめASP.NET SPA 開発を始めよう!

Page 38: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

38

まとめ( SPA 開発の始め方)

クライアントは jQuery + Knockout (MVVM) から初めて

サードパーティー製や AngularJS などのフレームワークにステップアップ!

サーバーは ASP.NET 4.6 + Azure + LINQ + Entity Framework から

初めて

ASP.NET Core 、マイクロサービス対応( Nano Server 、 Docker )へ

効率化・生産性はパッケージ管理・タスクランナー・継続的デリバリへ

エンタープライズ開発の資産がある場合はうまく活用しながら始めよう

Page 39: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

39

あらためて CM (書籍情報)

はじめての ASP.NET SPA 開発入門

古賀 慎一(著)

日経 BP 社

ISBN978-4-8222-9881-4定価(本体 3000円+税)

http://amzn.to/2eQKaUa

Page 40: ASP.NET SPA開発をはじめよう~今と未来とステップアップ

Copyright© 2016 Shin-ichi Koga All Rights Reserved. 40

Plus Programming .net 勉強会http://www.facebook.com/PlusProgramming.net