SlideShare a Scribd company logo
© 2020 NTT DATA Corporation
今こそ知りたいSpring Web
Spring Fest 2020 2020/12/17
株式会社NTTデータ 伊藤司
© 2020 NTT DATA Corporation 2
自己紹介
@Bean
SelfIntroduction selfIntroduction() {
return SelfIntroduction.builder()
.name("伊藤", "司")
.company("株式会社NTTデータ")
.role("アーキテクト")
.work("一般企業向けのシステム開発")
.work("フレームワークの技術検証")
.work("コンテナ・k8sの技術検証")
.hobby("ガンプラ")
.build();
}
© 2020 NTT DATA Corporation 3
はじめに
• 本セッションで話すこと
• Springの2つのWebアプリケーションフレームワークの特徴・違い
• Spring MVCの基本的な処理の流れ
• Spring WebFluxの基本的な処理の流れ
• 本セッションで出てくるサンプルコードはGitHubで公開しています
• https://github.com/itoutki/introduction-to-spring-web
© 2020 NTT DATA Corporation 4
目次
1. 今こそ知りたいSpringのWebアプリケーションフレームワーク
2. 今こそ知りたいSpring MVC
3. 今こそ知りたいSpring WebFlux
4. まとめ
© 2020 NTT DATA Corporation
今こそ知りたいSpringの
Webアプリケーションフレームワーク
5
© 2020 NTT DATA Corporation 6
Webアプリケーションとフレームワーク
アプリケーションサーバ
Webアプリケーション
HTTP
リクエスト
Webアプリケーション
フレームワーク
HTML
アプリケーションサーバ
Webアプリケーション
HTTP
リクエスト
Webアプリケーション
フレームワーク
JSON
など
画面アプリケーション APIアプリケーション
© 2020 NTT DATA Corporation 7
SpringのWebアプリケーションフレームワーク
Servlet Container Netty, Servlet 3.1+ Containers
Servlet API
Spring MVC
Reactive Streams Adapters
Spring WebFlux
Servlet Stack Reactive Stack
フレームワーク
抽象レイヤ
アプリケーションサーバ
© 2020 NTT DATA Corporation 8
Spring MVCとは
• サーブレットAPIに基づくWebアプリケーションフレー
ムワーク
• Tomcatなどのサーブレットコンテナ上で動作
• Spring Frameworkの初期から存在
• 画面アプリケーション向けの機能・APIアプリケーショ
ン向けの機能ともに豊富
Servlet Container
Servlet API
Spring MVC
Servlet Stack
© 2020 NTT DATA Corporation 9
Spring WebFluxとは
• ノンブロッキングI/Oに基づくWebアプリケーションフ
レームワーク
• Nettyなどの非サーブレットのアプリケーションサーバ
やServlet 3.1以降に対応したサーブレットコンテナ
上で動作
• Spring Framework 5.0から登場
• Reactorによるリアクティブプログラミングを採用
• APIアプリケーション向けの機能を中心に開発が進
められており画面アプリケーション向けの機能は未成
熟
Netty, Servlet 3.1+ Container
Reactive Streams Adapters
Spring WebFlux
Reactive Stack
© 2020 NTT DATA Corporation 10
Spring MVCとSpring WebFluxの特徴(1)アーキテクチャ
Spring MVCのアーキテクチャ Spring WebFluxのアーキテクチャ
© 2020 NTT DATA Corporation 11
Spring MVCとSpring WebFluxの特徴(2)リクエスト処理方式
スレッド1
スレッド2
スレッド3
スレッドN
イベントループ
スレッド
Spring MVC Spring WebFlux
・・・
1リクエストを1スレッドで処理 複数リクエストを1スレッドで処理
© 2020 NTT DATA Corporation 12
Spring MVCとSpring WebFluxの特徴(2)リクエスト処理方式
Spring MVC Spring WebFlux
実装し
やすさ
処理を同期的に実装できる
ノンブロッキングI/O、リアクティブプログラミング
の理解が必要になる
機能性
スレッドローカルを前提とする機能が利用でき
る(セッション、ロギングのMDCなど)
スレッドローカルを前提とする機能が利用でき
ない(ただしセッションは同等機能が用意さ
れている)
メモリ
使用量
多くのスレッドが必要になり、スレッドごとにメモ
リの確保が必要になる
スレッドが少なくてすむ
CPU
利用
効率
ブロッキングI/Oのため、I/Oの待ち時間が発
生する
ノンブロッキングI/Oのため、I/Oの待ち時間に
別の処理を実行できる
スルー
プット
高スループットの実現には多くのスレッドが必
要になる
遅いクライアントからの接続があるとその分ス
レッドが解放されない
少ないスレッドで多くのリクエストを処理できる
遅いクライアントからの接続があっても影響が
小さい
© 2020 NTT DATA Corporation 13
Spring MVCとSpring WebFluxのユースケース例
Spring MVC
Spring WebFlux
画面アプリケーション
• 画面アプリケーション向けの機能が豊富
ブロッキング処理への依存があるアプリケーション
• ブロッキング処理を前提とするSpring MVCと組み合わせたほうがよい
既存のSpring MVCアプリケーション
• 現状に課題がなければSpring WebFluxに積極的に置き換える必要性は低い
高スループットが要求されるアプリケーション
• Spring WebFluxの特性を生かしやすい
新規のAPIアプリケーション(マイクロサービスなど)
• 省メモリでリソース効率の高いアプリケーションが実装できる
• リアクティブプログラミングへの理解が必要となることには注意が必要
© 2020 NTT DATA Corporation
今こそ知りたいSpring MVC
14
© 2020 NTT DATA Corporation 15
Spring MVCとは
• サーブレットAPIに基づくWebアプリケーションフレー
ムワーク
• Tomcatなどのサーブレットコンテナ上で動作
• Spring Frameworkの初期から存在
Servlet Container
Servlet API
Spring MVC
Servlet Stack
© 2020 NTT DATA Corporation 16
Spring MVCのアーキテクチャ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
© 2020 NTT DATA Corporation 17
Spring MVCの実装サンプル(画面アプリケーション)
@Controller
public class HelloMvcController {
@GetMapping("/hello")
public String handleHello(Model model) {
String message = "Hello, Spring MVC!";
model.addAttribute("message", message);
return "hello";
}
}
<!DOCTYPE html>
<html lang="ja" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
<p th:text="${message}"></p>
</body>
</html>
Controller
HelloMvcController
Template
hello.html
開発者が実装する部分
ControllerクラスとしてDIコンテナに登録するためのアノテーション
Thymeleafのテンプレート
© 2020 NTT DATA Corporation 18
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
リクエストを受ける
© 2020 NTT DATA Corporation 19
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
URLやGET/POSTなど
の条件からリクエストに
マッチするメソッドを見つ
ける
© 2020 NTT DATA Corporation 20
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
URLやGET/POSTなど
の条件からリクエストに
マッチするメソッドを見つ
ける
@Controller
public class HelloMvcController {
@GetMapping("/hello")
public String handleHello(Model model) {
String message = "Hello, Spring MVC!";
model.addAttribute("message", message);
return "hello";
}
}
/hello というURLへのGETリクエストの場合、
handleHelloメソッドが選択される
@PostMappingなどHTTPリクエストメソッドに対応
したアノテーションがある
Controller
© 2020 NTT DATA Corporation 21
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
リクエストの内容をメソッ
ドの引数に変換してメ
ソッドに引き渡す
© 2020 NTT DATA Corporation 22
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
@Controller
public class HelloMvcController {
@GetMapping("/hello")
public String handleHello(Model model) {
String message = "Hello, Spring MVC!";
model.addAttribute("message", message);
return "hello";
}
}
Modelオブジェクトが準備される
リクエストの内容をメソッ
ドの引数に変換してメ
ソッドに引き渡す
Controller
© 2020 NTT DATA Corporation 23
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
リクエストを処理し、Viewに
渡す値をModelに格納し、
View名を返す
© 2020 NTT DATA Corporation 24
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
@Controller
public class HelloMvcController {
@GetMapping("/hello")
public String handleHello(Model model) {
String message = "Hello, Spring MVC!";
model.addAttribute("message", message);
return "hello";
}
}
Modelに文字列を格納
リクエストを処理し、Viewに
渡す値をModelに格納し、
View名を返す
View名としてhelloを返す
Controller
© 2020 NTT DATA Corporation 25
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
View名からViewの実装と
Templateのパスを特定する
© 2020 NTT DATA Corporation 26
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
View名からViewの実装と
Templateのパスを特定する
「View名:hello」から
「template/hello.html」を
特定
© 2020 NTT DATA Corporation 27
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
TemplateとModelの値から
レスポンスを生成
© 2020 NTT DATA Corporation 28
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
TemplateとModelの値から
レスポンスを生成
<!DOCTYPE html>
<html lang="ja" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
<p th:text="${message}"></p>
</body>
</html>
Modelから「message」というキーで格納された文字
列「Hello, Spring MVC!」をテンプレートに当てはめる
Template
© 2020 NTT DATA Corporation 29
Spring MVCの処理の流れ
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
⑥
⑦
レスポンスを返す
© 2020 NTT DATA Corporation 30
Spring MVCのアーキテクチャ(APIアプリケーション)
Dispatcher
Servlet
Handler
Mapping
Handler
Adapter
View
Resolver
View
Model
Template
Controller
Spring MVCによって提供される部分 開発者が実装する部分
①
②
③ ④
⑤
© 2020 NTT DATA Corporation 31
Spring MVCの実装サンプル(APIアプリケーション)
@RestController
public class HelloMvcRestController {
@GetMapping("/hellorest")
public String handleHelloRest() {
String message = "Hello, Spring MVC!";
return message;
}
}
Controller
HelloMvcRestController
開発者が実装する部分
© 2020 NTT DATA Corporation 32
Spring MVCの実装サンプル(APIアプリケーション)
@RestController
public class HelloMvcRestController {
@GetMapping("/hellorest")
public String handleHelloRest() {
String message = "Hello, Spring MVC!";
return message;
}
}
Controller
HelloMvcRestController
開発者が実装する部分
@Controllerではなく@RestControllerを指定することで、View名を返すのではな
く、レスポンスデータを返すことを指定する
@RestController = @Controller + @ResponseBody
View名ではなくレスポンスデータとして文字列を返す
文字列以外にも任意のクラスやResponseEntityクラスを返す
ことできる
返り値は適切なHttpMessageConverterによってレスポンス
データに変換される
© 2020 NTT DATA Corporation 33
Spring MVCのまとめ
画面アプリケーションの処理の流れ APIアプリケーションの処理の流れ
@RestController
public class HelloMvcRestController {
@GetMapping("/hellorest")
public String handleHelloRest() {
String message = "Hello, Spring MVC!";
return message;
}
}
@Controller
public class HelloMvcController {
@GetMapping("/hello")
public String handleHello(Model model) {
String message = "Hello, Spring MVC!";
model.addAttribute("message", message);
return "hello";
}
}
© 2020 NTT DATA Corporation
今こそ知りたいSpring WebFlux
34
© 2020 NTT DATA Corporation 35
Spring WebFluxとは
• ノンブロッキングI/Oに基づくWebアプリケーションフ
レームワーク
• Nettyなどの非サーブレットのアプリケーションサーバ
やServlet 3.1以降に対応したサーブレットコンテナ
上で動作
• Spring Framework 5.0から登場
• Reactorによるリアクティブプログラミングを採用
Netty, Servlet 3.1+ Container
Reactive Streams Adapters
Spring WebFlux
Reactive Stack
© 2020 NTT DATA Corporation 36
Spring WebFluxのアーキテクチャ
Dispatcher
Handler
Handler
Mapping
Handler
Adapter
HandlerResult
Handler
View
Model
Template
Controller
Spring WebFluxによって提供される部分 開発者が実装する部分
View
Resolver
①
②
③ ④
⑤
⑥
⑦
© 2020 NTT DATA Corporation 37
Spring WebFluxの処理の流れ
Dispatcher
Handler
Handler
Mapping
Handler
Adapter
HandlerResult
Handler
View
Model
Template
Controller
Spring WebFluxによって提供される部分 開発者が実装する部分
View
Resolver
①
②
③ ④
⑤
⑥
⑦
リクエストを
受ける
リクエストの内容を
メソッドの引数に変
換してメソッドに引
き渡す
リクエストにマッチする
メソッドを見つける リクエストを処理し、
Viewに渡す値を
Modelに格納し、
View名を返す
View名からViewの
実装とTemplateの
パスを特定する
Templateと
Modelの値から
レスポンスを生成
レスポンスを
返す
© 2020 NTT DATA Corporation 38
Spring WebFluxのアーキテクチャ(APIアプリケーション)
Dispatcher
Handler
Handler
Mapping
Handler
Adapter
HandlerResult
Handler
View
Model
Template
Controller
Spring WebFluxによって提供される部分 開発者が実装する部分
View
Resolver
①
②
③ ④
⑤
⑥
© 2020 NTT DATA Corporation 39
Spring WebFluxの実装サンプル(APIアプリケーション)
@RestController
public class HelloWebFluxRestController {
@GetMapping("/hellorest")
public Mono<String> handleHelloRest() {
String message = "Hello, Spring WebFlux!";
return Mono.just(message);
}
}
Controller
HelloWebFluxRestController
開発者が実装する部分
© 2020 NTT DATA Corporation 40
Spring WebFluxの実装サンプル(APIアプリケーション)
@RestController
public class HelloWebFluxRestController {
@GetMapping("/hellorest")
public Mono<String> handleHelloRest() {
String message = "Hello, Spring WebFlux!";
return Mono.just(message);
}
}
Controller
HelloWebFluxRestController
開発者が実装する部分
@RestController、@GetMappingはSpring MVCと同様に
使える
© 2020 NTT DATA Corporation 41
Spring WebFluxの実装サンプル(APIアプリケーション)
@RestController
public class HelloWebFluxRestController {
@GetMapping("/hellorest")
public Mono<String> handleHelloRest() {
String message = "Hello, Spring WebFlux!";
return Mono.just(message);
}
}
Controller
HelloWebFluxRestController
開発者が実装する部分
メソッドの返り値の型がMono<String>
文字列からMonoを生成して返す
© 2020 NTT DATA Corporation 42
Reactorとは
• ノンブロッキング・非同期・イベントドリブンのプログラミングモデルであるリアクティブプログラミングの仕組みを提
供するライブラリ
• リアクティブプログラミングの標準であるReactive Streamsに準拠
• Stream APIのような形で実装
Flux<T> 0個以上(無限も可)のデータを持つList/Streamのようなもの
Mono<T> 0 or 1個のデータを持つObject/Optionalのようなもの
© 2020 NTT DATA Corporation 43
Reactorとは Stream APIとFluxの比較
List<Integer> input = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> output = input.stream()
.filter(i -> i % 2 == 0)
.map(i -> i * 2)
.collect(Collectors.toList());
System.out.println(output);
Flux<Integer> input = Flux.just(1, 2, 3, 4, 5);
Flux<Integer> output = input
.filter(i -> i % 2 == 0)
.map(i -> i * 2);
output.subscribe(i -> System.out.println(i));
Stream APIの例
Fluxの例
Stream APIと同様filter・mapなどの演算子がある
subscribeされるまで何も実行されない
=subscribeのイベントを契機に処理が実行される
整数のデータ列のうち、偶数のデータだけを抜き出して2倍する処理
© 2020 NTT DATA Corporation 44
Reactorとは もう少し複雑な例
Mono.just("Reactor Mono") // 文字列1個を発生させる
.map(str -> String.format("Hello, %s!", str)) // 文字列を変換する
.subscribe(System.out::println); // 標準出力に出力する
=> Hello, Reactor Mono!
Flux.interval(Duration.ofSeconds(1)) // 1秒ごとにデータを発生させる
.take(5) // 先頭の5個分のみを取得する
.map(l -> LocalDateTime.now()) // 現在時刻を返す
.subscribe(d -> Sytem.out.println(d)); // 現在時刻を標準出力に出力する
=> 2020-12-17T13:50:35.058993
2020-12-17T13:50:36.033929
2020-12-17T13:50:37.034292
2020-12-17T13:50:38.033898
2020-12-17T13:50:39.033848
© 2020 NTT DATA Corporation 45
Spring WebFluxの実装サンプル(APIアプリケーション)
@RestController
public class HelloWebFluxRestController {
@GetMapping("/hellorest")
public Mono<String> handleHelloRest() {
String message = "Hello, Spring WebFlux!";
return Mono.just(message);
}
}
Controller
HelloWebFluxRestController
開発者が実装する部分
メソッドの返り値の型がMono<String>
文字列からMonoを生成して返す
Monoはフレームワーク内部で
subscribeされる
© 2020 NTT DATA Corporation 46
Spring WebFluxによるServer-Sent Eventsの実装例
@GetMapping("/interval")
public Flux<Message> handleInterval() {
return Flux.interval(Duration.ofSeconds(1))
.take(5)
.map(l -> new Message(LocalDateTime.now().toString()));
}
© 2020 NTT DATA Corporation 47
Spring WebFluxによるServer-Sent Eventsの実装例
@GetMapping("/interval")
public Flux<Message> handleInterval() {
return Flux.interval(Duration.ofSeconds(1))
.take(5)
.map(l -> new Message(LocalDateTime.now().toString()));
}
メソッドの返り値の型にFluxを指定
© 2020 NTT DATA Corporation 48
Spring WebFluxによるServer-Sent Eventsの実装例
@GetMapping("/interval")
public Flux<Message> handleInterval() {
return Flux.interval(Duration.ofSeconds(1))
.take(5)
.map(l -> new Message(LocalDateTime.now().toString()));
}
curl -H 'Accept: text/event-stream;' http://localhost:8080/interval
=> data:{"message": "2020-12-17T16:35:48.413935"}
data:{"message": "2020-12-17T16:35:49.405907"}
data:{"message": "2020-12-17T16:35:50.405909"}
data:{"message": "2020-12-17T16:35:51.405992"}
data:{"message": "2020-12-17T16:35:52.405936"}
curl -H 'Accept: application/x-ndjson;' http://localhost:8080/interval
=> {"message": "2020-12-17T16:35:48.413935"}
{"message": "2020-12-17T16:35:49.405907"}
{"message": "2020-12-17T16:35:50.405909"}
{"message": "2020-12-17T16:35:51.405992"}
{"message": "2020-12-17T16:35:52.405936"}
メソッドの返り値の型にFluxを指定
リクエスト時のAcceptヘッダでServer-Sent EventsのMIMEタイプを指定
1秒ごとにレスポンスデータが送信される
© 2020 NTT DATA Corporation 49
Spring WebFlux まとめ
画面アプリケーションの処理の流れ
APIアプリケーションの処理の流れ
Flux<T>
0個以上(無限も可)のデータ
を持つList/Streamのようなもの
Mono<T>
0 or 1個のデータを持つ
Object/Optionalのようなもの
© 2020 NTT DATA Corporation
まとめ
50
© 2020 NTT DATA Corporation 51
SpringのWebアプリケーションフレームワーク
Servlet Container Netty, Servlet 3.1+ Containers
Servlet API
Spring MVC
Reactive Streams Adapters
Spring WebFlux
Servlet Stack Reactive Stack
Servletベース
ノウハウが多く開発しやすい
ノンブロッキングベース
リソース効率が良い
リアクティブプログラミングの理解が必要
© 2020 NTT DATA Corporation 52
Spring MVCをもっと詳しく知りたい
• TERASOLUNA Server Framework for Java (5.x) Development Guideline
• https://terasolunaorg.github.io/guideline/
• Spring徹底入門
• https://www.shoeisha.co.jp/book/detail/9784798142470
• 改訂新版 Spring入門
• https://gihyo.jp/book/2016/978-4-7741-8217-9
• 令和時代に「Spring入門」「Spring徹底入門」を読むとき気をつけるべきN個のこと
• https://qiita.com/suke_masa/items/392976749fce94a8ef1f
• 徹底解剖Spring MVCアーキテクチャー –DispacherServletの中身覗いてきました–
• https://www.slideshare.net/ssuser070fa9/spring-fest-2019spring-mvc
• Web on Servlet Stack(Spring MVC公式ドキュメント)
• https://docs.spring.io/spring-framework/docs/current/reference/html/web.html
© 2020 NTT DATA Corporation 53
Spring WebFluxをもっと詳しく知りたい
• Introdction to Spring WebFlux
• https://www.slideshare.net/makingx/introduction-to-spring-webflux-jsug-sfa1
• Reactive Webアプリケーション – そしてSpring 5へ
• https://www.slideshare.net/makingx/reactive-web-spring-5-jjugccc-cccef3
• Spring 5に備えるリアクティブプログラミング入門
• https://www.slideshare.net/TakuyaIwatsuka/spring-5
• 業務で使いたいSpring WebFluxによるReactiveプログラミング
• https://speakerdeck.com/shintanimoto/introduction-to-reactive-programming-using-spring-
webflux
• Functional Spring Cookbook
• https://docs.google.com/presentation/d/1-0NopTfA-CGiCNvKPDOH9ZDMHhazKuoT-_1R69Wp8qs
• Web on Reactive Stack(Spring WebFlux公式ドキュメント)
• https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html
© 2020 NTT DATA Corporation 54
宣伝
• IT Search+にてSpring WebFlux入門の連載始めました
• Spring WebFlux・リアクティブプログラミングの入門記事のほか、HTTPクライアントのWebClientやDBアク
セスのR2DBCの入門記事を掲載予定です
• https://news.mynavi.jp/itsearch/article/devsoft/5260
© 2020 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

What's hot

これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetupこれで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
Masatoshi Tada
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
 
ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用
nagise
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
 
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~Ryota Watabe
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
Masatoshi Tada
 
Spring fest2020 spring-security
Spring fest2020 spring-securitySpring fest2020 spring-security
Spring fest2020 spring-security
土岐 孝平
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
 
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
 

What's hot (20)

これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetupこれで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
 
Spring fest2020 spring-security
Spring fest2020 spring-securitySpring fest2020 spring-security
Spring fest2020 spring-security
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
 
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
 

Similar to 今こそ知りたいSpring Web(Spring Fest 2020講演資料)

ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
 
システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方
Chihiro Ito
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
Vue入門
Vue入門Vue入門
Vue入門
Takeo Noda
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
MorioImai
 
App Modernization for .NET
App Modernization for .NETApp Modernization for .NET
App Modernization for .NET
Yuta Matsumura
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
DevTakas
 
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう
Kimihiko Kitase
 
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
Akira Inoue
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
Shinichiro Takezaki
 
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~Akira Inoue
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
 
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
Tomoyuki Obi
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
bitbank, Inc. Tokyo, Japan
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
 

Similar to 今こそ知りたいSpring Web(Spring Fest 2020講演資料) (20)

ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
 
システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
Vue入門
Vue入門Vue入門
Vue入門
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
 
App Modernization for .NET
App Modernization for .NETApp Modernization for .NET
App Modernization for .NET
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
 
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう
 
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
 
ASP.NET MVC 1.0
ASP.NET MVC 1.0ASP.NET MVC 1.0
ASP.NET MVC 1.0
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 

More from NTT DATA Technology & Innovation

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 

Recently uploaded

論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (14)

論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

今こそ知りたいSpring Web(Spring Fest 2020講演資料)

  • 1. © 2020 NTT DATA Corporation 今こそ知りたいSpring Web Spring Fest 2020 2020/12/17 株式会社NTTデータ 伊藤司
  • 2. © 2020 NTT DATA Corporation 2 自己紹介 @Bean SelfIntroduction selfIntroduction() { return SelfIntroduction.builder() .name("伊藤", "司") .company("株式会社NTTデータ") .role("アーキテクト") .work("一般企業向けのシステム開発") .work("フレームワークの技術検証") .work("コンテナ・k8sの技術検証") .hobby("ガンプラ") .build(); }
  • 3. © 2020 NTT DATA Corporation 3 はじめに • 本セッションで話すこと • Springの2つのWebアプリケーションフレームワークの特徴・違い • Spring MVCの基本的な処理の流れ • Spring WebFluxの基本的な処理の流れ • 本セッションで出てくるサンプルコードはGitHubで公開しています • https://github.com/itoutki/introduction-to-spring-web
  • 4. © 2020 NTT DATA Corporation 4 目次 1. 今こそ知りたいSpringのWebアプリケーションフレームワーク 2. 今こそ知りたいSpring MVC 3. 今こそ知りたいSpring WebFlux 4. まとめ
  • 5. © 2020 NTT DATA Corporation 今こそ知りたいSpringの Webアプリケーションフレームワーク 5
  • 6. © 2020 NTT DATA Corporation 6 Webアプリケーションとフレームワーク アプリケーションサーバ Webアプリケーション HTTP リクエスト Webアプリケーション フレームワーク HTML アプリケーションサーバ Webアプリケーション HTTP リクエスト Webアプリケーション フレームワーク JSON など 画面アプリケーション APIアプリケーション
  • 7. © 2020 NTT DATA Corporation 7 SpringのWebアプリケーションフレームワーク Servlet Container Netty, Servlet 3.1+ Containers Servlet API Spring MVC Reactive Streams Adapters Spring WebFlux Servlet Stack Reactive Stack フレームワーク 抽象レイヤ アプリケーションサーバ
  • 8. © 2020 NTT DATA Corporation 8 Spring MVCとは • サーブレットAPIに基づくWebアプリケーションフレー ムワーク • Tomcatなどのサーブレットコンテナ上で動作 • Spring Frameworkの初期から存在 • 画面アプリケーション向けの機能・APIアプリケーショ ン向けの機能ともに豊富 Servlet Container Servlet API Spring MVC Servlet Stack
  • 9. © 2020 NTT DATA Corporation 9 Spring WebFluxとは • ノンブロッキングI/Oに基づくWebアプリケーションフ レームワーク • Nettyなどの非サーブレットのアプリケーションサーバ やServlet 3.1以降に対応したサーブレットコンテナ 上で動作 • Spring Framework 5.0から登場 • Reactorによるリアクティブプログラミングを採用 • APIアプリケーション向けの機能を中心に開発が進 められており画面アプリケーション向けの機能は未成 熟 Netty, Servlet 3.1+ Container Reactive Streams Adapters Spring WebFlux Reactive Stack
  • 10. © 2020 NTT DATA Corporation 10 Spring MVCとSpring WebFluxの特徴(1)アーキテクチャ Spring MVCのアーキテクチャ Spring WebFluxのアーキテクチャ
  • 11. © 2020 NTT DATA Corporation 11 Spring MVCとSpring WebFluxの特徴(2)リクエスト処理方式 スレッド1 スレッド2 スレッド3 スレッドN イベントループ スレッド Spring MVC Spring WebFlux ・・・ 1リクエストを1スレッドで処理 複数リクエストを1スレッドで処理
  • 12. © 2020 NTT DATA Corporation 12 Spring MVCとSpring WebFluxの特徴(2)リクエスト処理方式 Spring MVC Spring WebFlux 実装し やすさ 処理を同期的に実装できる ノンブロッキングI/O、リアクティブプログラミング の理解が必要になる 機能性 スレッドローカルを前提とする機能が利用でき る(セッション、ロギングのMDCなど) スレッドローカルを前提とする機能が利用でき ない(ただしセッションは同等機能が用意さ れている) メモリ 使用量 多くのスレッドが必要になり、スレッドごとにメモ リの確保が必要になる スレッドが少なくてすむ CPU 利用 効率 ブロッキングI/Oのため、I/Oの待ち時間が発 生する ノンブロッキングI/Oのため、I/Oの待ち時間に 別の処理を実行できる スルー プット 高スループットの実現には多くのスレッドが必 要になる 遅いクライアントからの接続があるとその分ス レッドが解放されない 少ないスレッドで多くのリクエストを処理できる 遅いクライアントからの接続があっても影響が 小さい
  • 13. © 2020 NTT DATA Corporation 13 Spring MVCとSpring WebFluxのユースケース例 Spring MVC Spring WebFlux 画面アプリケーション • 画面アプリケーション向けの機能が豊富 ブロッキング処理への依存があるアプリケーション • ブロッキング処理を前提とするSpring MVCと組み合わせたほうがよい 既存のSpring MVCアプリケーション • 現状に課題がなければSpring WebFluxに積極的に置き換える必要性は低い 高スループットが要求されるアプリケーション • Spring WebFluxの特性を生かしやすい 新規のAPIアプリケーション(マイクロサービスなど) • 省メモリでリソース効率の高いアプリケーションが実装できる • リアクティブプログラミングへの理解が必要となることには注意が必要
  • 14. © 2020 NTT DATA Corporation 今こそ知りたいSpring MVC 14
  • 15. © 2020 NTT DATA Corporation 15 Spring MVCとは • サーブレットAPIに基づくWebアプリケーションフレー ムワーク • Tomcatなどのサーブレットコンテナ上で動作 • Spring Frameworkの初期から存在 Servlet Container Servlet API Spring MVC Servlet Stack
  • 16. © 2020 NTT DATA Corporation 16 Spring MVCのアーキテクチャ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦
  • 17. © 2020 NTT DATA Corporation 17 Spring MVCの実装サンプル(画面アプリケーション) @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } } <!DOCTYPE html> <html lang="ja" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> <p th:text="${message}"></p> </body> </html> Controller HelloMvcController Template hello.html 開発者が実装する部分 ControllerクラスとしてDIコンテナに登録するためのアノテーション Thymeleafのテンプレート
  • 18. © 2020 NTT DATA Corporation 18 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ リクエストを受ける
  • 19. © 2020 NTT DATA Corporation 19 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ URLやGET/POSTなど の条件からリクエストに マッチするメソッドを見つ ける
  • 20. © 2020 NTT DATA Corporation 20 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ URLやGET/POSTなど の条件からリクエストに マッチするメソッドを見つ ける @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } } /hello というURLへのGETリクエストの場合、 handleHelloメソッドが選択される @PostMappingなどHTTPリクエストメソッドに対応 したアノテーションがある Controller
  • 21. © 2020 NTT DATA Corporation 21 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ リクエストの内容をメソッ ドの引数に変換してメ ソッドに引き渡す
  • 22. © 2020 NTT DATA Corporation 22 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } } Modelオブジェクトが準備される リクエストの内容をメソッ ドの引数に変換してメ ソッドに引き渡す Controller
  • 23. © 2020 NTT DATA Corporation 23 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ リクエストを処理し、Viewに 渡す値をModelに格納し、 View名を返す
  • 24. © 2020 NTT DATA Corporation 24 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } } Modelに文字列を格納 リクエストを処理し、Viewに 渡す値をModelに格納し、 View名を返す View名としてhelloを返す Controller
  • 25. © 2020 NTT DATA Corporation 25 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ View名からViewの実装と Templateのパスを特定する
  • 26. © 2020 NTT DATA Corporation 26 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ View名からViewの実装と Templateのパスを特定する 「View名:hello」から 「template/hello.html」を 特定
  • 27. © 2020 NTT DATA Corporation 27 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ TemplateとModelの値から レスポンスを生成
  • 28. © 2020 NTT DATA Corporation 28 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ TemplateとModelの値から レスポンスを生成 <!DOCTYPE html> <html lang="ja" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> <p th:text="${message}"></p> </body> </html> Modelから「message」というキーで格納された文字 列「Hello, Spring MVC!」をテンプレートに当てはめる Template
  • 29. © 2020 NTT DATA Corporation 29 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ レスポンスを返す
  • 30. © 2020 NTT DATA Corporation 30 Spring MVCのアーキテクチャ(APIアプリケーション) Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤
  • 31. © 2020 NTT DATA Corporation 31 Spring MVCの実装サンプル(APIアプリケーション) @RestController public class HelloMvcRestController { @GetMapping("/hellorest") public String handleHelloRest() { String message = "Hello, Spring MVC!"; return message; } } Controller HelloMvcRestController 開発者が実装する部分
  • 32. © 2020 NTT DATA Corporation 32 Spring MVCの実装サンプル(APIアプリケーション) @RestController public class HelloMvcRestController { @GetMapping("/hellorest") public String handleHelloRest() { String message = "Hello, Spring MVC!"; return message; } } Controller HelloMvcRestController 開発者が実装する部分 @Controllerではなく@RestControllerを指定することで、View名を返すのではな く、レスポンスデータを返すことを指定する @RestController = @Controller + @ResponseBody View名ではなくレスポンスデータとして文字列を返す 文字列以外にも任意のクラスやResponseEntityクラスを返す ことできる 返り値は適切なHttpMessageConverterによってレスポンス データに変換される
  • 33. © 2020 NTT DATA Corporation 33 Spring MVCのまとめ 画面アプリケーションの処理の流れ APIアプリケーションの処理の流れ @RestController public class HelloMvcRestController { @GetMapping("/hellorest") public String handleHelloRest() { String message = "Hello, Spring MVC!"; return message; } } @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } }
  • 34. © 2020 NTT DATA Corporation 今こそ知りたいSpring WebFlux 34
  • 35. © 2020 NTT DATA Corporation 35 Spring WebFluxとは • ノンブロッキングI/Oに基づくWebアプリケーションフ レームワーク • Nettyなどの非サーブレットのアプリケーションサーバ やServlet 3.1以降に対応したサーブレットコンテナ 上で動作 • Spring Framework 5.0から登場 • Reactorによるリアクティブプログラミングを採用 Netty, Servlet 3.1+ Container Reactive Streams Adapters Spring WebFlux Reactive Stack
  • 36. © 2020 NTT DATA Corporation 36 Spring WebFluxのアーキテクチャ Dispatcher Handler Handler Mapping Handler Adapter HandlerResult Handler View Model Template Controller Spring WebFluxによって提供される部分 開発者が実装する部分 View Resolver ① ② ③ ④ ⑤ ⑥ ⑦
  • 37. © 2020 NTT DATA Corporation 37 Spring WebFluxの処理の流れ Dispatcher Handler Handler Mapping Handler Adapter HandlerResult Handler View Model Template Controller Spring WebFluxによって提供される部分 開発者が実装する部分 View Resolver ① ② ③ ④ ⑤ ⑥ ⑦ リクエストを 受ける リクエストの内容を メソッドの引数に変 換してメソッドに引 き渡す リクエストにマッチする メソッドを見つける リクエストを処理し、 Viewに渡す値を Modelに格納し、 View名を返す View名からViewの 実装とTemplateの パスを特定する Templateと Modelの値から レスポンスを生成 レスポンスを 返す
  • 38. © 2020 NTT DATA Corporation 38 Spring WebFluxのアーキテクチャ(APIアプリケーション) Dispatcher Handler Handler Mapping Handler Adapter HandlerResult Handler View Model Template Controller Spring WebFluxによって提供される部分 開発者が実装する部分 View Resolver ① ② ③ ④ ⑤ ⑥
  • 39. © 2020 NTT DATA Corporation 39 Spring WebFluxの実装サンプル(APIアプリケーション) @RestController public class HelloWebFluxRestController { @GetMapping("/hellorest") public Mono<String> handleHelloRest() { String message = "Hello, Spring WebFlux!"; return Mono.just(message); } } Controller HelloWebFluxRestController 開発者が実装する部分
  • 40. © 2020 NTT DATA Corporation 40 Spring WebFluxの実装サンプル(APIアプリケーション) @RestController public class HelloWebFluxRestController { @GetMapping("/hellorest") public Mono<String> handleHelloRest() { String message = "Hello, Spring WebFlux!"; return Mono.just(message); } } Controller HelloWebFluxRestController 開発者が実装する部分 @RestController、@GetMappingはSpring MVCと同様に 使える
  • 41. © 2020 NTT DATA Corporation 41 Spring WebFluxの実装サンプル(APIアプリケーション) @RestController public class HelloWebFluxRestController { @GetMapping("/hellorest") public Mono<String> handleHelloRest() { String message = "Hello, Spring WebFlux!"; return Mono.just(message); } } Controller HelloWebFluxRestController 開発者が実装する部分 メソッドの返り値の型がMono<String> 文字列からMonoを生成して返す
  • 42. © 2020 NTT DATA Corporation 42 Reactorとは • ノンブロッキング・非同期・イベントドリブンのプログラミングモデルであるリアクティブプログラミングの仕組みを提 供するライブラリ • リアクティブプログラミングの標準であるReactive Streamsに準拠 • Stream APIのような形で実装 Flux<T> 0個以上(無限も可)のデータを持つList/Streamのようなもの Mono<T> 0 or 1個のデータを持つObject/Optionalのようなもの
  • 43. © 2020 NTT DATA Corporation 43 Reactorとは Stream APIとFluxの比較 List<Integer> input = Arrays.asList(1, 2, 3, 4, 5); List<Integer> output = input.stream() .filter(i -> i % 2 == 0) .map(i -> i * 2) .collect(Collectors.toList()); System.out.println(output); Flux<Integer> input = Flux.just(1, 2, 3, 4, 5); Flux<Integer> output = input .filter(i -> i % 2 == 0) .map(i -> i * 2); output.subscribe(i -> System.out.println(i)); Stream APIの例 Fluxの例 Stream APIと同様filter・mapなどの演算子がある subscribeされるまで何も実行されない =subscribeのイベントを契機に処理が実行される 整数のデータ列のうち、偶数のデータだけを抜き出して2倍する処理
  • 44. © 2020 NTT DATA Corporation 44 Reactorとは もう少し複雑な例 Mono.just("Reactor Mono") // 文字列1個を発生させる .map(str -> String.format("Hello, %s!", str)) // 文字列を変換する .subscribe(System.out::println); // 標準出力に出力する => Hello, Reactor Mono! Flux.interval(Duration.ofSeconds(1)) // 1秒ごとにデータを発生させる .take(5) // 先頭の5個分のみを取得する .map(l -> LocalDateTime.now()) // 現在時刻を返す .subscribe(d -> Sytem.out.println(d)); // 現在時刻を標準出力に出力する => 2020-12-17T13:50:35.058993 2020-12-17T13:50:36.033929 2020-12-17T13:50:37.034292 2020-12-17T13:50:38.033898 2020-12-17T13:50:39.033848
  • 45. © 2020 NTT DATA Corporation 45 Spring WebFluxの実装サンプル(APIアプリケーション) @RestController public class HelloWebFluxRestController { @GetMapping("/hellorest") public Mono<String> handleHelloRest() { String message = "Hello, Spring WebFlux!"; return Mono.just(message); } } Controller HelloWebFluxRestController 開発者が実装する部分 メソッドの返り値の型がMono<String> 文字列からMonoを生成して返す Monoはフレームワーク内部で subscribeされる
  • 46. © 2020 NTT DATA Corporation 46 Spring WebFluxによるServer-Sent Eventsの実装例 @GetMapping("/interval") public Flux<Message> handleInterval() { return Flux.interval(Duration.ofSeconds(1)) .take(5) .map(l -> new Message(LocalDateTime.now().toString())); }
  • 47. © 2020 NTT DATA Corporation 47 Spring WebFluxによるServer-Sent Eventsの実装例 @GetMapping("/interval") public Flux<Message> handleInterval() { return Flux.interval(Duration.ofSeconds(1)) .take(5) .map(l -> new Message(LocalDateTime.now().toString())); } メソッドの返り値の型にFluxを指定
  • 48. © 2020 NTT DATA Corporation 48 Spring WebFluxによるServer-Sent Eventsの実装例 @GetMapping("/interval") public Flux<Message> handleInterval() { return Flux.interval(Duration.ofSeconds(1)) .take(5) .map(l -> new Message(LocalDateTime.now().toString())); } curl -H 'Accept: text/event-stream;' http://localhost:8080/interval => data:{"message": "2020-12-17T16:35:48.413935"} data:{"message": "2020-12-17T16:35:49.405907"} data:{"message": "2020-12-17T16:35:50.405909"} data:{"message": "2020-12-17T16:35:51.405992"} data:{"message": "2020-12-17T16:35:52.405936"} curl -H 'Accept: application/x-ndjson;' http://localhost:8080/interval => {"message": "2020-12-17T16:35:48.413935"} {"message": "2020-12-17T16:35:49.405907"} {"message": "2020-12-17T16:35:50.405909"} {"message": "2020-12-17T16:35:51.405992"} {"message": "2020-12-17T16:35:52.405936"} メソッドの返り値の型にFluxを指定 リクエスト時のAcceptヘッダでServer-Sent EventsのMIMEタイプを指定 1秒ごとにレスポンスデータが送信される
  • 49. © 2020 NTT DATA Corporation 49 Spring WebFlux まとめ 画面アプリケーションの処理の流れ APIアプリケーションの処理の流れ Flux<T> 0個以上(無限も可)のデータ を持つList/Streamのようなもの Mono<T> 0 or 1個のデータを持つ Object/Optionalのようなもの
  • 50. © 2020 NTT DATA Corporation まとめ 50
  • 51. © 2020 NTT DATA Corporation 51 SpringのWebアプリケーションフレームワーク Servlet Container Netty, Servlet 3.1+ Containers Servlet API Spring MVC Reactive Streams Adapters Spring WebFlux Servlet Stack Reactive Stack Servletベース ノウハウが多く開発しやすい ノンブロッキングベース リソース効率が良い リアクティブプログラミングの理解が必要
  • 52. © 2020 NTT DATA Corporation 52 Spring MVCをもっと詳しく知りたい • TERASOLUNA Server Framework for Java (5.x) Development Guideline • https://terasolunaorg.github.io/guideline/ • Spring徹底入門 • https://www.shoeisha.co.jp/book/detail/9784798142470 • 改訂新版 Spring入門 • https://gihyo.jp/book/2016/978-4-7741-8217-9 • 令和時代に「Spring入門」「Spring徹底入門」を読むとき気をつけるべきN個のこと • https://qiita.com/suke_masa/items/392976749fce94a8ef1f • 徹底解剖Spring MVCアーキテクチャー –DispacherServletの中身覗いてきました– • https://www.slideshare.net/ssuser070fa9/spring-fest-2019spring-mvc • Web on Servlet Stack(Spring MVC公式ドキュメント) • https://docs.spring.io/spring-framework/docs/current/reference/html/web.html
  • 53. © 2020 NTT DATA Corporation 53 Spring WebFluxをもっと詳しく知りたい • Introdction to Spring WebFlux • https://www.slideshare.net/makingx/introduction-to-spring-webflux-jsug-sfa1 • Reactive Webアプリケーション – そしてSpring 5へ • https://www.slideshare.net/makingx/reactive-web-spring-5-jjugccc-cccef3 • Spring 5に備えるリアクティブプログラミング入門 • https://www.slideshare.net/TakuyaIwatsuka/spring-5 • 業務で使いたいSpring WebFluxによるReactiveプログラミング • https://speakerdeck.com/shintanimoto/introduction-to-reactive-programming-using-spring- webflux • Functional Spring Cookbook • https://docs.google.com/presentation/d/1-0NopTfA-CGiCNvKPDOH9ZDMHhazKuoT-_1R69Wp8qs • Web on Reactive Stack(Spring WebFlux公式ドキュメント) • https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html
  • 54. © 2020 NTT DATA Corporation 54 宣伝 • IT Search+にてSpring WebFlux入門の連載始めました • Spring WebFlux・リアクティブプログラミングの入門記事のほか、HTTPクライアントのWebClientやDBアク セスのR2DBCの入門記事を掲載予定です • https://news.mynavi.jp/itsearch/article/devsoft/5260
  • 55. © 2020 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。