Suche senden
Hochladen
Spring I/O 2018 報告会
•
0 gefällt mir
•
303 views
NTT Software Innovation Center
Folgen
Documenting RESTful APIs with Spring REST Docs and RAML
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 33
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
NTT Software Innovation Center
Spring I/O 2018 報告会
Spring I/O 2018 報告会
NTT Software Innovation Center
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
NTT Software Innovation Center
統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組
NTT Software Innovation Center
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組
NTT Software Innovation Center
不揮発WALバッファ
不揮発WALバッファ
NTT Software Innovation Center
HTTP and 5G
HTTP and 5G
dynamis
SkyWay HandsOn
SkyWay HandsOn
Yusuke Naka
Empfohlen
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
NTT Software Innovation Center
Spring I/O 2018 報告会
Spring I/O 2018 報告会
NTT Software Innovation Center
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
NTT Software Innovation Center
統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組
NTT Software Innovation Center
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組
NTT Software Innovation Center
不揮発WALバッファ
不揮発WALバッファ
NTT Software Innovation Center
HTTP and 5G
HTTP and 5G
dynamis
SkyWay HandsOn
SkyWay HandsOn
Yusuke Naka
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Tomoya Hibi
Lagopus Router
Lagopus Router
Tomoya Hibi
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
Takefumi MIYOSHI
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
NTT Communications Technology Development
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
NTT Communications Technology Development
オープンソースデータベース GridDBとそのオープンコミュニティ活動
オープンソースデータベース GridDBとそのオープンコミュニティ活動
griddb
MEC (Mobile Edge Computing) + GPUコンピューティングについて
MEC (Mobile Edge Computing) + GPUコンピューティングについて
VirtualTech Japan Inc.
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224
Tomoya Hibi
YJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組み
Yahoo!デベロッパーネットワーク
WebRTC NextVersion時代のJavaScript開発
WebRTC NextVersion時代のJavaScript開発
Yusuke Naka
WebRTCハンズオン
WebRTCハンズオン
Yusuke Naka
2015-ShowNet-報告資料
2015-ShowNet-報告資料
Interop Tokyo ShowNet NOC Team
Mk vpp for-containers-vppug
Mk vpp for-containers-vppug
Miya Kohno
Argo CDについて
Argo CDについて
NTT Communications Technology Development
WebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボット
NTT Communications Technology Development
IPv6移行の現状 〜 宅内端末から見た IPv6 と IPv4〜
IPv6移行の現状 〜 宅内端末から見た IPv6 と IPv4〜
Akira Nakagawa
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
Yoshihiro Nakajima
Webrtc最新動向
Webrtc最新動向
Yusuke Naka
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
HidekiNishizawa
2015-ShowNetステージ-ファシリティ
2015-ShowNetステージ-ファシリティ
Interop Tokyo ShowNet NOC Team
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
OSS光と闇
OSS光と闇
Hirofumi Ichihara
Weitere ähnliche Inhalte
Was ist angesagt?
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Tomoya Hibi
Lagopus Router
Lagopus Router
Tomoya Hibi
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
Takefumi MIYOSHI
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
NTT Communications Technology Development
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
NTT Communications Technology Development
オープンソースデータベース GridDBとそのオープンコミュニティ活動
オープンソースデータベース GridDBとそのオープンコミュニティ活動
griddb
MEC (Mobile Edge Computing) + GPUコンピューティングについて
MEC (Mobile Edge Computing) + GPUコンピューティングについて
VirtualTech Japan Inc.
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224
Tomoya Hibi
YJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組み
Yahoo!デベロッパーネットワーク
WebRTC NextVersion時代のJavaScript開発
WebRTC NextVersion時代のJavaScript開発
Yusuke Naka
WebRTCハンズオン
WebRTCハンズオン
Yusuke Naka
2015-ShowNet-報告資料
2015-ShowNet-報告資料
Interop Tokyo ShowNet NOC Team
Mk vpp for-containers-vppug
Mk vpp for-containers-vppug
Miya Kohno
Argo CDについて
Argo CDについて
NTT Communications Technology Development
WebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボット
NTT Communications Technology Development
IPv6移行の現状 〜 宅内端末から見た IPv6 と IPv4〜
IPv6移行の現状 〜 宅内端末から見た IPv6 と IPv4〜
Akira Nakagawa
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
Yoshihiro Nakajima
Webrtc最新動向
Webrtc最新動向
Yusuke Naka
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
HidekiNishizawa
2015-ShowNetステージ-ファシリティ
2015-ShowNetステージ-ファシリティ
Interop Tokyo ShowNet NOC Team
Was ist angesagt?
(20)
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Lagopus Router
Lagopus Router
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
オープンソースデータベース GridDBとそのオープンコミュニティ活動
オープンソースデータベース GridDBとそのオープンコミュニティ活動
MEC (Mobile Edge Computing) + GPUコンピューティングについて
MEC (Mobile Edge Computing) + GPUコンピューティングについて
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224
YJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組み
WebRTC NextVersion時代のJavaScript開発
WebRTC NextVersion時代のJavaScript開発
WebRTCハンズオン
WebRTCハンズオン
2015-ShowNet-報告資料
2015-ShowNet-報告資料
Mk vpp for-containers-vppug
Mk vpp for-containers-vppug
Argo CDについて
Argo CDについて
WebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボット
IPv6移行の現状 〜 宅内端末から見た IPv6 と IPv4〜
IPv6移行の現状 〜 宅内端末から見た IPv6 と IPv4〜
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
Webrtc最新動向
Webrtc最新動向
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
2015-ShowNetステージ-ファシリティ
2015-ShowNetステージ-ファシリティ
Ähnlich wie Spring I/O 2018 報告会
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
OSS光と闇
OSS光と闇
Hirofumi Ichihara
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
Spring social の基礎
Spring social の基礎
Takuya Iwatsuka
デバイスWebAPI/Symphonyを軸としたIoTの展開について
デバイスWebAPI/Symphonyを軸としたIoTの展開について
Device WebAPI Consortium
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
Nobuyuki Matsui
Introduction to NetOpsCoding
Introduction to NetOpsCoding
Taiji Tsuchiya
WebRTCを始めよう! HTML5fun 第一回勉強会
WebRTCを始めよう! HTML5fun 第一回勉強会
Yusuke Naka
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
典子 松本
Spring tools4
Spring tools4
Takuya Iwatsuka
【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう
富士通クラウドテクノロジーズ株式会社
チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発
Satoshi Takano
SkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaS
Kensaku Komatsu
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Takuya Iwatsuka
第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU
第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU
Kengo Okitsu
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
Yahoo!デベロッパーネットワーク
情報処理学会第77回全国大会 3月17日 於 京都大学 1G-07 国際標準における参照ソフトウエアと特許の扱い
情報処理学会第77回全国大会 3月17日 於 京都大学 1G-07 国際標準における参照ソフトウエアと特許の扱い
Itaru Kaneko
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
和也 大木
Ähnlich wie Spring I/O 2018 報告会
(20)
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
OSS光と闇
OSS光と闇
Spring I/O 2015 報告
Spring I/O 2015 報告
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
Spring social の基礎
Spring social の基礎
デバイスWebAPI/Symphonyを軸としたIoTの展開について
デバイスWebAPI/Symphonyを軸としたIoTの展開について
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
Introduction to NetOpsCoding
Introduction to NetOpsCoding
WebRTCを始めよう! HTML5fun 第一回勉強会
WebRTCを始めよう! HTML5fun 第一回勉強会
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
Spring tools4
Spring tools4
【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう
チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発
SkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaS
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU
第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
情報処理学会第77回全国大会 3月17日 於 京都大学 1G-07 国際標準における参照ソフトウエアと特許の扱い
情報処理学会第77回全国大会 3月17日 於 京都大学 1G-07 国際標準における参照ソフトウエアと特許の扱い
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
Mehr von NTT Software Innovation Center
A Global Data Infrastructure for Data Sharing Between Businesses
A Global Data Infrastructure for Data Sharing Between Businesses
NTT Software Innovation Center
企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤
NTT Software Innovation Center
企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤
NTT Software Innovation Center
企業間データ流通のための国際基盤
企業間データ流通のための国際基盤
NTT Software Innovation Center
企業間データ流通のための国際基盤
企業間データ流通のための国際基盤
NTT Software Innovation Center
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...
NTT Software Innovation Center
2-in-1 Cluster Integration: Batch and Interactive GPU Computing
2-in-1 Cluster Integration: Batch and Interactive GPU Computing
NTT Software Innovation Center
Hybrid Sourcing for Overcoming “Digital Cliff 2025”
Hybrid Sourcing for Overcoming “Digital Cliff 2025”
NTT Software Innovation Center
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~
NTT Software Innovation Center
Network Implosion: Effective Model Compression for ResNets via Static Layer P...
Network Implosion: Effective Model Compression for ResNets via Static Layer P...
NTT Software Innovation Center
Why and how Edge Computing matters enterprise IT strategy
Why and how Edge Computing matters enterprise IT strategy
NTT Software Innovation Center
外部キー制約を考慮した特徴量削減手法
外部キー制約を考慮した特徴量削減手法
NTT Software Innovation Center
デジタルサービスプラットフォーム実現に向けた技術課題
デジタルサービスプラットフォーム実現に向けた技術課題
NTT Software Innovation Center
Building images efficiently and securely on Kubernetes with BuildKit
Building images efficiently and securely on Kubernetes with BuildKit
NTT Software Innovation Center
Real-time spatiotemporal data utilization for future mobility services
Real-time spatiotemporal data utilization for future mobility services
NTT Software Innovation Center
MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針
NTT Software Innovation Center
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービス
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービス
NTT Software Innovation Center
Challenges for Implementing PMEM Aware Application with PMDK
Challenges for Implementing PMEM Aware Application with PMDK
NTT Software Innovation Center
RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...
NTT Software Innovation Center
Introducing PMDK into PostgreSQL
Introducing PMDK into PostgreSQL
NTT Software Innovation Center
Mehr von NTT Software Innovation Center
(20)
A Global Data Infrastructure for Data Sharing Between Businesses
A Global Data Infrastructure for Data Sharing Between Businesses
企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤
企業間データ流通のための国際基盤
企業間データ流通のための国際基盤
企業間データ流通のための国際基盤
企業間データ流通のための国際基盤
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...
2-in-1 Cluster Integration: Batch and Interactive GPU Computing
2-in-1 Cluster Integration: Batch and Interactive GPU Computing
Hybrid Sourcing for Overcoming “Digital Cliff 2025”
Hybrid Sourcing for Overcoming “Digital Cliff 2025”
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~
Network Implosion: Effective Model Compression for ResNets via Static Layer P...
Network Implosion: Effective Model Compression for ResNets via Static Layer P...
Why and how Edge Computing matters enterprise IT strategy
Why and how Edge Computing matters enterprise IT strategy
外部キー制約を考慮した特徴量削減手法
外部キー制約を考慮した特徴量削減手法
デジタルサービスプラットフォーム実現に向けた技術課題
デジタルサービスプラットフォーム実現に向けた技術課題
Building images efficiently and securely on Kubernetes with BuildKit
Building images efficiently and securely on Kubernetes with BuildKit
Real-time spatiotemporal data utilization for future mobility services
Real-time spatiotemporal data utilization for future mobility services
MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービス
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービス
Challenges for Implementing PMEM Aware Application with PMDK
Challenges for Implementing PMEM Aware Application with PMDK
RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...
Introducing PMDK into PostgreSQL
Introducing PMDK into PostgreSQL
Spring I/O 2018 報告会
1.
Copyright©2018 NTT corp.
All Rights Reserved. Spring I/O 2018 報告会 2018年7月30日 NTTソフトウェアイノベーションセンタ 岩塚 卓弥
2.
2Copyright©2018 NTT corp.
All Rights Reserved. • 名前:岩塚 卓弥 • 所属:NTT ソフトウェアイノベーションセンタ • NTTの研究所のうちソフトウェアを専門に扱う • 自部署ではソフトウェア工学を研究 • Springベースのグループ共通フレームワークの整備を担当 • Spring I/O は今年で4回目 • レポートも書きました(共著) • https://codezine.jp/article/detail/10930 自己紹介
3.
3Copyright©2018 NTT corp.
All Rights Reserved. • Documenting RESTful APIs with Spring REST Docs and RAML • スライド: https://speakerdeck.com/mduesterhoeft/documenting- restful-apis-with-spring-rest-docs-and-raml • 動画: https://www.youtube.com/watch?v=VwKc34W96Cw&li st=PLe6FX2SlkJdRCNFdhWgpRmJybXafo-Uqk&index=20 • Consumer driven contracts in a polyglot world • スライド: https://docs.google.com/presentation/d/19BFGJiTElU3 VVIbpF3Gqac26m4uaNpPEQpVB1eIPa90/edit#slide=id. p • 動画: https://www.youtube.com/watch?v=sKlwNJeQMV4&list =PLe6FX2SlkJdRCNFdhWgpRmJybXafo-Uqk&index=25 今日のトピック
4.
4Copyright©2018 NTT corp.
All Rights Reserved. REST Docs (and RAML)のセッションのQ&Aで Spring Cloud Contract との関連を問う質問があった → セッションの内容とはコンテキストが違い,要領を得ず キーワードレベル(API, テスト)で共通しているため, うまく整理できていない人が多いのかも… きっかけ
5.
5Copyright©2018 NTT corp.
All Rights Reserved. RESTful API 開発
6.
6Copyright©2018 NTT corp.
All Rights Reserved. 用途による分類 Public API Internal API App API 3rd party App 3rd party App 3rd party App • 誰がどう使うかわからない • API変更時に利用側の合意は不要 • そもそも全員の合意は取れない • 外部の開発者に使ってもらうための 諸々を用意する必要がある • 使う人・使用方法がわかっている • API変更時に利用側の合意が必要 • 勝手に変えると他のサービスが 壊れる場合がある • 内部の開発者が使えればよい App API App App AppAPI API API
7.
7Copyright©2018 NTT corp.
All Rights Reserved. 使えない / 使いたくない API • そもそも欲しい機能がAPI化されていない • ドキュメントがない • ドキュメントが古い • ドキュメントがわかりにくい 合体技 わかりにくいドキュメントをくまなく調べた結果 欲しい機能がAPIとして提供されていないことがわかる 使ってもらうためにドキュメントは必須 特に Public API の場合は充実したドキュメントがあるとよい APIドキュメントの必要性
8.
8Copyright©2018 NTT corp.
All Rights Reserved. 多くの開発者の共通認識 • メンテナンスされたドキュメントは重要である • ドキュメントのメンテナンスは面倒である ドキュメントのメンテナンス なんらかの方法でドキュメントが勝手に実装に追従してくれると嬉しい → いくつかのアプローチがあるが,いずれにせよ何らかの妥協が必要
9.
9Copyright©2018 NTT corp.
All Rights Reserved. 機械可読の仕様から実装もドキュメントも生成 API仕様からの生成 Spec 本当に仕様から吐き出されるソースコードと付き合っていけるか? → できないと結局ドキュメントのメンテナンス面倒問題と同じ構図に 記法は様々 ・OpenAPI ・RAML ・API Blueprint ・... ツールによって用途も様々 ドキュメント ソースコード スタブ(モック)サーバ ...
10.
10Copyright©2018 NTT corp.
All Rights Reserved. 実装そのものからドキュメントを生成 一般に,ソースコードだけでは情報が足りないので補完が必要 ソースコードからの生成 e.g. Springfox • 実装方法に依存する • ソースコードが読みづらくなる • 実装内容と補完情報が乖離していないことは保証されない
11.
11Copyright©2018 NTT corp.
All Rights Reserved. APIのテストコードからドキュメントの一部を生成 • API実装側の実装方法に依存しない • テストされた確実な内容を出力 • デフォルトでは Asciidoctor のスニペットとして出力 • テストが失敗した場合は出力しない Spring REST Docs ...
12.
12Copyright©2018 NTT corp.
All Rights Reserved. Spring REST Docs ドキュメント例 生成したスニペットをincludeしてドキュメントを作成
13.
13Copyright©2018 NTT corp.
All Rights Reserved. Spring REST Docs • テストを利用した正確な出力 😊 • Asciidoctor (or Markdown) のスニペットを出力 😐 • ドキュメントが静的かつ簡素 • 用途が限定的 Spring REST Docs RAML Integration • RAML形式の出力をサポートしたサードパーティ拡張 • https://github.com/ePages-de/restdocs-raml • 実装との乖離を防ぎつつ RAML のエコシステムを活用 Spring REST Docs の拡張
14.
14Copyright©2018 NTT corp.
All Rights Reserved. restdoc-raml の入力例 Spring REST Docs を拡張
15.
15Copyright©2018 NTT corp.
All Rights Reserved. restdoc-raml の出力例 RAML JsonSchema リクエスト例
16.
16Copyright©2018 NTT corp.
All Rights Reserved. RAMLの活用(raml2html)
17.
17Copyright©2018 NTT corp.
All Rights Reserved. RAMLの活用(raml2html)
18.
18Copyright©2018 NTT corp.
All Rights Reserved. RAMLの活用 (API console)
19.
19Copyright©2018 NTT corp.
All Rights Reserved. RAMLの活用 (API console)
20.
20Copyright©2018 NTT corp.
All Rights Reserved. Documenting RESTful APIs with Spring REST Docs and RAML • Public API を使ってもらうためにドキュメントが必要 • テストから生成する Spring REST Docs のアプローチを採用 • Asciidoctor の静的なドキュメントでは物足りない → テストから RAML を生成する拡張を作った RAMLのエコシステムを活用できるようになった - 動的なドキュメント - ブラウザで動作するクライアント - スタブ(モック)サーバの作成 - … ここまでのまとめ
21.
21Copyright©2018 NTT corp.
All Rights Reserved. 【再掲】用途による分類 Public API Internal API App API 3rd party App 3rd party App 3rd party App • 誰がどう使うかわからない • API変更時に利用側の合意は不要 • そもそも全員の合意は取れない • 外部の開発者に使ってもらうための 諸々を用意する必要がある • 使う人も使われ方もわかっている • API変更時に利用側の合意が必要 • 勝手に変えると他のサービスが 壊れる場合がある • 内部の開発者が使えればよい App API App App AppAPI API API
22.
22Copyright©2018 NTT corp.
All Rights Reserved. Consumer-driven Contracts (CdC) App API App App App 提供者 (Provider) 利用者 (Consumer)Contract Contract • API提供者と利用者のリクエスト/レスポンスに関する取り決め • 各利用者はAPIのレスポンスのすべてを使いたいとは限らない • 利用者の必要な部分だけの取り決め = Consumer Contract • 提供者は各利用者との Contract に合意し,これを守る Contract を前提とすることで対向をスタブ化したテストが可能になる
23.
23Copyright©2018 NTT corp.
All Rights Reserved. Spring Cloud Contract – Contractの記述 App API App 提供者 (Provider) 利用者 (Consumer) Contract Groovy DSL または YAML で記述
24.
24Copyright©2018 NTT corp.
All Rights Reserved. Spring Cloud Contract – Providerのテスト App API App 提供者 (Provider) 利用者 (Consumer) Contract テストテストテスト テストコードの生成 リクエストに対して Contractの通りレスポンスするか
25.
25Copyright©2018 NTT corp.
All Rights Reserved. Spring Cloud Contract – テスト用スタブ App API App 提供者 (Provider) 利用者 (Consumer) Contract スタブ スタブを生成 実体は jar ファイル Contract に対応した WireMock用のjsonが 入っている
26.
26Copyright©2018 NTT corp.
All Rights Reserved. Spring Cloud Contract – Consumerのテスト App API App 提供者 (Provider) 利用者 (Consumer) Contract スタブ スタブを利用してテスト 使用するスタブを指定
27.
27Copyright©2018 NTT corp.
All Rights Reserved. Microservices ではJVM言語以外も自然に混在しえる → Java, maven に依存しないやり方が必要 Spring Cloud Contract の Polyglot 対応 • Contract の記述 → Groovy DSL 以外に YAML でも記述可能 • Provider のテストコードの生成 → Docker でテスト生成&実行 • Consumer テスト用のスタブ生成 → Docker でスタブ生成&実行 Polyglot 対応
28.
28Copyright©2018 NTT corp.
All Rights Reserved. Polyglot 対応 – Contractの記述 App API App 提供者 (Provider) 利用者 (Consumer) Contract YAML で記述
29.
29Copyright©2018 NTT corp.
All Rights Reserved. Polyglot 対応 – Providerのテスト App API App 提供者 (Provider) 利用者 (Consumer) Contract テストテストテスト 生成 起動しておく マウント spring-cloud-contract Providerにリクエストして レスポンスを検証
30.
30Copyright©2018 NTT corp.
All Rights Reserved. Polyglot 対応 – テスト用スタブ App API App 提供者 (Provider) 利用者 (Consumer) Contract スタブ 生成 Artifactoryへpublishされる
31.
31Copyright©2018 NTT corp.
All Rights Reserved. Polyglot 対応 – Consumerのテスト App API App 提供者 (Provider) 利用者 (Consumer) Contract スタブ spring-cloud-contract-stub-runner Artifactoryから 取得して起動 テストのリクエストに レスポンスを返す
32.
32Copyright©2018 NTT corp.
All Rights Reserved. REST Docs を利用すると以下が可能 • テストコードからのスタブ生成 • テストコードからのContract生成 → 既にSpring MVCのテストがあるプロジェクトで, Spring Cloud Contract を新しく導入するときに便利 Spring Cloud Contract + REST Docs
33.
33Copyright©2018 NTT corp.
All Rights Reserved. • Documenting RESTful APIs with Spring REST Docs and RAML • 実装と対応したドキュメントを作成するにはテストをソースに するとよい • Spring RESTDocs のコンセプトはそのままにRAMLのエコシ ステムを利用できる拡張を作った • Consumer driven contracts in a polyglot world • 内部APIの連携の試験にはCdCが便利 • Spring Cloud Contract は非JVM環境にも対応 • 目的に沿った技術を使う • キーワードだけで捉えると見誤る • ツールに振り回されないようにコンテキストを整理すること まとめ
Jetzt herunterladen