Submit Search
Upload
Spring tools4
•
Download as PPTX, PDF
•
6 likes
•
10,740 views
Takuya Iwatsuka
Follow
2018/10/31 Spring Fest 2018@KFC Hall & Rooms の発表に使用した資料です.
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 60
Download now
Recommended
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Rakuten Group, Inc.
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
Recommended
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Rakuten Group, Inc.
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
心 谷本
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as Code
Takahisa Iwamoto
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
土岐 孝平
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
Kouhei Sutou
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
apkiban
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察
cch-robo
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション
土岐 孝平
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
Shingo Fukui
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Takuya Iwatsuka
More Related Content
What's hot
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
心 谷本
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as Code
Takahisa Iwamoto
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
土岐 孝平
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
Kouhei Sutou
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
apkiban
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察
cch-robo
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション
土岐 孝平
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
Shingo Fukui
What's hot
(20)
SpringBootTest入門
SpringBootTest入門
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as Code
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
Similar to Spring tools4
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Takuya Iwatsuka
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
Takuya Iwatsuka
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
apkiban
Python languageupdate (2004)
Python languageupdate (2004)
泰 増田
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
NTT Software Innovation Center
ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながら
soishino
Spring I/O 2018 報告会
Spring I/O 2018 報告会
NTT Software Innovation Center
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Takuya Iwatsuka
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
David Buck
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
Tetsutaro Watanabe
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
Atsuhiro Kubo
OSS光と闇
OSS光と闇
Hirofumi Ichihara
OSSで作るOpenStack監視システム
OSSで作るOpenStack監視システム
satsuki fukazu
ひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむ
soishino
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
Similar to Spring tools4
(20)
Spring I/O 2015 報告
Spring I/O 2015 報告
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
Python languageupdate (2004)
Python languageupdate (2004)
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながら
Spring I/O 2018 報告会
Spring I/O 2018 報告会
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
OSS光と闇
OSS光と闇
OSSで作るOpenStack監視システム
OSSで作るOpenStack監視システム
ひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむ
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
More from Takuya Iwatsuka
SpringとGrarlVM Native Image -2019/12-
SpringとGrarlVM Native Image -2019/12-
Takuya Iwatsuka
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Takuya Iwatsuka
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
Takuya Iwatsuka
Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報
Takuya Iwatsuka
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Takuya Iwatsuka
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
Spring social の基礎
Spring social の基礎
Takuya Iwatsuka
Password validation with Passay
Password validation with Passay
Takuya Iwatsuka
More from Takuya Iwatsuka
(8)
SpringとGrarlVM Native Image -2019/12-
SpringとGrarlVM Native Image -2019/12-
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Spring social の基礎
Spring social の基礎
Password validation with Passay
Password validation with Passay
Spring tools4
1.
Copyright©2018 NTT corp.
All Rights Reserved. Spring Tools 4 の機能とその実装 2018年10月31日 岩塚 卓弥,堅田 淳也 NTTソフトウェアイノベーションセンタ
2.
2Copyright©2018 NTT corp.
All Rights Reserved. • 名前:岩塚 卓弥 • 所属:NTT ソフトウェアイノベーションセンタ • NTTの研究所のうちソフトウェアを専門に扱う • 自部署ではソフトウェア工学を研究 • Springベースのグループ共通フレームワークの整備を担当 • Spring関連: • Spring I/O, SpringOne それぞれ2015年から参加 • 改訂新版 Spring入門,Spring徹底入門 レビュアー • JSUG幹事 自己紹介 • 名前:岩塚 卓弥 • 所属:NTT ソフトウェアイノベーションセンタ • NTTの研究所のうちソフトウェアを専門に扱う • 自部署ではソフトウェア工学を研究 • Springベースのグループ共通フレームワークの整備を担当 • Spring関連: • Spring I/O, SpringOne それぞれ2015年から参加 • 改訂新版 Spring入門,Spring徹底入門 レビュアー • JSUG幹事
3.
3Copyright©2018 NTT corp.
All Rights Reserved. • 名前:堅田 淳也 • 所属:NTT ソフトウェアイノベーションセンタ • NTTの研究所のうちソフトウェアを専門に扱う • 自部署ではソフトウェア工学を研究 • Springベースのグループ共通フレームワークの整備を担当 • Spring経験 • 元SIerで、プロジェクトへのSpring適用支援などを担当 • SpringOne(2017, 2018)、Spring I/O(2018)に参加 自己紹介
4.
4Copyright©2018 NTT corp.
All Rights Reserved. 1. 概要編 • Spring Tools 4 の概要、新機能、削除された機能等の紹介 2. 実装編 • Spring Tools 4 の内部実装と動作についての紹介 今日話すこと
5.
5Copyright©2018 NTT corp.
All Rights Reserved. 概要編 Spring Tools 4 の機能とその実装
6.
6Copyright©2018 NTT corp.
All Rights Reserved. • EclipseベースのSpring向け統合開発環境 • 長い歴史 • STSのコア要素である Spring IDE プラグインは 2005年に初版リリース • Spring 1.x の時代 • 今日までSpringやEclipseのバージョンアップに追随 Spring Tool Suite (STS)
7.
7Copyright©2018 NTT corp.
All Rights Reserved. • IDE/エディタの多様化 • 一昔前まではみんなEclipse • 有料でも良いツールが選択されるようになってきた • 軽量なソースコードエディタが増えてきた • Springアプリ開発の変化 • Spring Bootが当たり前のように使われるようになってきた • 動的コンフィギュレーションが多用されるため、ソースコードの静 的解析のみでは限界 STS を取り巻く環境の変化 時代の変化に対応した新しいツールが必要
8.
8Copyright©2018 NTT corp.
All Rights Reserved. • 2018/9/25 リリース Spring Tools 4 GA released
9.
9Copyright©2018 NTT corp.
All Rights Reserved. • ほぼスクラッチから再実装 • Spring Boot + アノテーション設定による 開発スタイルのサポートにフォーカス • 素のSpring開発ではほとんど恩恵を受けれない • IDE非依存なアーキテクチャの採用 • 多様なIDE/エディタに対応可能 Spring Tools 4 (aka STS4)
10.
10Copyright©2018 NTT corp.
All Rights Reserved. • 3つのIDE/エディタに対応 Spring Tools 4 (aka STS4) Spring Tools 4 for Eclipse Spring Tools 4 for Visual Studio Code Spring Tools 4 for Atom IDE • 追加パッケージとして インストール • Extension Packと してインストール • オールインワン形式をダ ウンロードして利用 or • プラグインとして既存 Eclipseにインストール
11.
11Copyright©2018 NTT corp.
All Rights Reserved. • Navigation • Springに特化した新しいシンボル検索 • Live Application Information • 実行中のSpring Bootアプリの情報を表示 新機能 注意: 新機能が使えるのはSpring Bootアプリのみ 素のSpringアプリでは機能しません !
12.
12Copyright©2018 NTT corp.
All Rights Reserved. • Springに関連する要素をワークスペース or ソースフ ァイル内から手軽に検索 新機能 - Navigation Eclipseの場合 Ctrl(Cmd) + 6
13.
13Copyright©2018 NTT corp.
All Rights Reserved. • 検索する要素ごとに専用のプレフィクスがある • e.g. Beanを検索するときは “@+xxxx” (xxxxはBean ID) • 検索できるもの 1. Spring関連のアノテーション 2. Bean IDによるBean検索 (@+) 3. RequestMappingのパス情報 (@/) 4. 実行中のSpring Bootアプリのエンドポイント (//) • spring-boot-actuatorが必要 5. Spring Cloud FunctionのFunction (@>) • まだプロトタイプ実装の扱い 新機能 - Navigation
14.
14Copyright©2018 NTT corp.
All Rights Reserved. 1. Springのアノテーション検索 • “@xxxx” と入力 (xxxxはアノテーション名) 新機能 - Navigation
15.
15Copyright©2018 NTT corp.
All Rights Reserved. 2. Bean検索 • “@+xxxx” と入力 (xxxxはBean ID) 新機能 - Navigation Spring Data で生成されるRepository でも検索可能
16.
16Copyright©2018 NTT corp.
All Rights Reserved. 3. RequestMapping検索 • “@/xxxx” と入力 (xxxxはパス) 新機能 - Navigation
17.
17Copyright©2018 NTT corp.
All Rights Reserved. 4. 実行中のSpring Bootアプリケーションのエンドポ イント • “//” と入力すると全エンドポイントが表示 • spring-boot-actuator が必須 新機能 - Navigation
18.
18Copyright©2018 NTT corp.
All Rights Reserved. • 実行中のSpring Bootアプリの情報を表示 • ローカルで実行中のSpring Bootアプリを自動的に検出し、各 情報をソースコード上のマウスオーバーなどで表示する • spring-boot-actuator が必須 • 確認できる内容 1. Live Request Mappings 2. Live Bean Information 3. Conditional Beans Information 4. Live Active Profiles Information • 表示方法 • マウスオーバー • コードレンズ • Atomは非対応 新機能 - Live Application Information
19.
19Copyright©2018 NTT corp.
All Rights Reserved. 新機能 - Live Application Information Live Request Mappingsの表示(マウスオーバー) 動作中のアプリの実際のURLリンクが 表示
20.
20Copyright©2018 NTT corp.
All Rights Reserved. 新機能 - Live Application Information → OwnerController このBeanをインジェクションし ているBeanが表示される ← OwnerRepository このBeanがインジェクションし ているBeanが表示される Live Bean Informationの表示 (マウスオーバー)
21.
21Copyright©2018 NTT corp.
All Rights Reserved. 新機能 - Live Application Information 条件付きBean定義の各条件が合 致したかどうか分かる Conditional Beans Informationの表示 (マウスオーバー)
22.
22Copyright©2018 NTT corp.
All Rights Reserved. 新機能 - Live Application Information Live Active Profiles Informationの表示 (マウスオーバー) 有効になっているプロファイルが ハイライトされる 有効になっているプロファイルが表示
23.
23Copyright©2018 NTT corp.
All Rights Reserved. • コードレンズ • ソースコード上に情報の1行サマリを表示する • マウスオーバーと違い、ソースコード上に常に表示 • Live Request Mappings と Live Bean Information のみ対応 • デフォルトでは無効になっている(Eclipseの場合) • Atomは未対応 新機能 - Live Application Information Live Request Mappings の サマリ情報を常に表示 Live Request Mappings の表示 (コードレンズ)
24.
24Copyright©2018 NTT corp.
All Rights Reserved. 新機能 - Live Application Information Live Bean Informationの サマリ情報を常に表示 Live Bean Information の表示(コードレンズ)
25.
25Copyright©2018 NTT corp.
All Rights Reserved. • Boot Dashboard • Spring Bootアプリの起動/停止 • Spring Starter Wizard • Spring Initializr からSpring Boot アプリの雛形を生成 • application.properties(.yml) の編集サポート • プロパティ名の補完 • バリデーション • プロパティ情報のマウスオーバー表示 • application.propertiesをyml形式へ変換 • RequestMappingのコードスニペット補完 • Import Getting Started Content Wizard • Spring公式のチュートリアルガイドのサンプルをワークス ペースにインポート • Quick Search • ワークスペースからテキストを素早く検索するダイアログ • Ctrl(cmd) + Shift + L STS3から継続して使える機能
26.
26Copyright©2018 NTT corp.
All Rights Reserved. • Request Mapping View • @RequestMappingのパス情報のリストを表示するビュー • 新機能 ”Navigation” で代替可能 • Live Beans Graph View • 実行中のアプリのBean依存関係をグラフ表示するビュー • STS4ではグラフ表示はできないが、”Live Application Information”でBeanの依存関係は確認可能 • Spring XML config support • Bean IDの自動補完、Beanのクラス名の補完、など • STS4では代替機能なし • Spring XML config validations • 参照先に指定されたBeanが存在しない場合に警告を出す、など • STS4では代替機能なし STS4で削除された機能
27.
27Copyright©2018 NTT corp.
All Rights Reserved. STS3 Features in STS4 • どうしてもSTS3のコンポーネントを使いたい場合… • リポジトリの奥底に眠る古いXMLベースのアプリをメンテしな ければならない • 謎の圧力によってSpring Bootの利用が禁止されている • 選択肢 1. STS3を使い続ける 2. STS3のコンポーネントをSTS4にインストールする • 強くは推奨しないがサポートはされている (by 公式wiki) • Eclipse MarketplaceからSpring Tools 3 Add-onをインストー ル STS 3.9.x は2019年の中頃までメンテナンス予定 → それ以降は新しいEclipseへの対応は実施されない
28.
28Copyright©2018 NTT corp.
All Rights Reserved. • Spring Tools 4 • Eclipse / VS Code / Atom に対応 • Spring Boot のアプリにフォーカス • 新機能 • Navigation • Live Application Information • マウスオーバー / コードレンズ • Spring Bootではなく、素のSpringを使う場合は… • STS3を使い続ける or STS3をSTS4にインストール • STS3は2019年の中頃までメンテナンス予定 ここまでのまとめ
29.
29Copyright©2018 NTT corp.
All Rights Reserved. 実装編 Spring Tools 4 の機能とその実装
30.
30Copyright©2018 NTT corp.
All Rights Reserved. STS4はLanguage Serverとして機能を提供することで 複数のIDE・エディタに対応している 複数のIDE・エディタへの対応 Visual Studio Code Language Server として 別プロセスで動作 IDE/エディタの拡張機能を利用 Language Server Protocol
31.
31Copyright©2018 NTT corp.
All Rights Reserved. STS4 のリポジトリ Language Server 本体のコード等
32.
32Copyright©2018 NTT corp.
All Rights Reserved. STS4 のリポジトリ Atomクライアント用のコード等 eclipseクライアント用のコード等 VSCodeクライアント用のコード等
33.
33Copyright©2018 NTT corp.
All Rights Reserved. STS4 のリポジトリ 未対応 未対応
34.
34Copyright©2018 NTT corp.
All Rights Reserved. ? ? そんなものはない
35.
35Copyright©2018 NTT corp.
All Rights Reserved. • Eclipse LSP4J Java による Language Server / Client 実装のためのライブラリ • Eclipse LSP4E Eclipse用の Language Client を実装するためのライブラリ • Eclipse JDT Language Server Java / Maven / Gradle プロジェクトをサポートする Language Server • Language support for Java for Visual Studio Code Eclipse JDT Language Server の VSCode用の Language Client • VSCode Language Server - Client Module VSCode用の Language Client を実装するためのライブラリ • Atom Language Server Protocol Client Atom用の Language Client を実装するためのライブラリ STS4 を支える技術 https://github.com/eclipse/lsp4j https://projects.eclipse.org/projects/technology.lsp4e https://github.com/redhat-developer/vscode-java https://github.com/atom/atom-languageclient https://github.com/eclipse/eclipse.jdt.ls https://github.com/Microsoft/vscode-languageserver-node/tree/master/client for for for
36.
36Copyright©2018 NTT corp.
All Rights Reserved. STS4はLanguage Serverとして機能を提供することで 複数のIDE・エディタに対応している 【再掲】複数のIDE・エディタへの対応 Visual Studio Code Language Server として 別プロセスで動作 IDE/エディタの拡張機能を利用 Language Server Protocol
37.
37Copyright©2018 NTT corp.
All Rights Reserved. Microsoftが策定した,プログラム解析器 (Language Server) とそれを利用するツール間で会話するためのプ ロトコル - https://langserver.org LSPを利用するメリット 1. 一つの Language Server だけで複数のクライアント に対応できる 2. クライアントの実装言語とは独立して Language Server を実装できる 3. Language Server が不安定な挙動をしてもクライア ントが引きずられずに済む Language Server Protocol (LSP) 概要
38.
38Copyright©2018 NTT corp.
All Rights Reserved. JSON-RPC を利用したメッセージを送り合うシンプルなプロトコル • Request Message:クライアント/サーバ間のリクエスト • Response Message:Request Messageへのレスポンス • Notification Message:レスポンス不要のメッセージ LSP の仕様 Content-Length: 74 { “jsonrpc”:”2.0”, ”id”:4, ”method”:”workspace/symbol”, ”params”:{“query”:””} } Request Message の例: Header Part Content Part JSON-RPC Object 詳細は https://microsoft.github.io/language-server-protocol/specification 参照のこと
39.
39Copyright©2018 NTT corp.
All Rights Reserved. 設定で Language Server とのやり取りを出力できるVSCode拡張も あるが,STS4は非対応 LSP のメッセージを覗いてみる Java Extension の場合: 拡張の設定 トレースログ
40.
40Copyright©2018 NTT corp.
All Rights Reserved. LSP のメッセージを覗いてみる DEMO
41.
41Copyright©2018 NTT corp.
All Rights Reserved. • VSCode では STS4 とのメッセージはTCPで送受信される • localhost内のTCPパケットをキャプチャすることでメッセージを 取得できる TCPパケットのキャプチャによるメッセージの取得 WireSharkによるパケットのキャプチャ: Loopback クライアントが45556ポート LSP のメッセージ
42.
42Copyright©2018 NTT corp.
All Rights Reserved. TCPパケットのキャプチャによるメッセージの取得 DEMO
43.
43Copyright©2018 NTT corp.
All Rights Reserved. 標準入出力のキャプチャによるメッセージの取得 • Eclipse では STS4 とのメッセージは標準入出力を介して送受信される • プロセスの標準入出力をキャプチャすることでメッセージを取得できる Language Server プロセスの標準入出力のキャプチャ: 標準入力(Client → Server) 標準出力(Server → Client)
44.
44Copyright©2018 NTT corp.
All Rights Reserved. 標準入出力のキャプチャによるメッセージの取得 DEMO
45.
45Copyright©2018 NTT corp.
All Rights Reserved. Navigation機能使用時のメッセージ Client Client “method”:”workspace/symbol” “param”:{“query”:”xxx”} Array of SymbolInformation “method”:”textDocument/documentSymbol” “param”:{“textDocument”:{”uri”:”file://...”}} Array of SymbolInformation プロジェクト内 ファイル内
46.
46Copyright©2018 NTT corp.
All Rights Reserved. SymbolInformationの作成 010 010 010 ① ② 1. プロジェクトから javaファイルを探索 2. javaファイルとclasspath上のファイルからAST(抽象構文 木)を作成 3. ASTをたどりながらSymbolを探索 • 種別ごとに定義されたSymbolProviderにより SymbolInformationを取得 • @Bean / @RequestMapping / @Component … • 取得したSymbolから以下を作成 • プロジェクト全体のSymbolInformationのリスト • ファイル名からSymbolInformationのリストへのMap J ③ プロジェクトのオープン時に一覧を作成しており,即時提要可能 J
47.
47Copyright©2018 NTT corp.
All Rights Reserved. 【特例】“query”:“//” Client “method”:”workspace/symbol” “params”:{“query”:”//”} Array of SymbolInformation running Spring Boot Apps JMX 要 Actuator取得したホスト,ポート番号, RequestMappingのパスからURLを組み立てる //から始まるqueryの場合,実行中のSpring Boot アプリケーションか ら JMXを用いてRequestMapping情報を取得 初回リクエスト時に多少のオーバヘッドが発生
48.
48Copyright©2018 NTT corp.
All Rights Reserved. Live Application Informationの表示 Client “method” : “sts/highlight” “params” : {“doc”:…, “codeLenses”:[…]} running Spring Boot Apps JMX 要 Actuator 定期的に取得した情報を Language Server から通知 実行中のSpring Boot アプリケーションからJMXを用いて情報を取得 バックグラウンドでポーリングを続けるので,継続的に一定のリソースを消費する 開いているファイルについてのハイライトとCodeLensの情報を通知 リクエストはしない ポーリング
49.
49Copyright©2018 NTT corp.
All Rights Reserved. • Serverという名がつくものはとりあえず繋いでみたく なるはず → やってみた • 手順 1. Language Server をデバッグ用のスタンドアローンモード で起動 • TCP の 5007 ポートで待受 2. TCPで初期化リクエストのメッセージを送る • 予めキャプチャしておいた正規のリクエストを利用 3. Language Server からのリクエストにレスポンスする • 一部動的な要素あり 4. Symbol取得のリクエストを送る おまけ1:Language Server に接いでみる
50.
50Copyright©2018 NTT corp.
All Rights Reserved. おまけ1:Language Server に接いでみる DEMO
51.
51Copyright©2018 NTT corp.
All Rights Reserved. TCPで初期化リクエストのメッセージを送る … LSPの仕様で定められた初期化リクエスト クライアントの機能の対応状況を送る Initialize Request(Client → Server) Response (Server → Client) … Initialized Notification(Client → Server)
52.
52Copyright©2018 NTT corp.
All Rights Reserved. Language Server からのリクエストにレスポン スする addClasspathListener Request (Server → Client) STS4独自のリクエスト ランダム値 Response (Client → Server) … Callback Command (Client → Server) Serverから送られてきた値 Classpathのエントリを送る
53.
53Copyright©2018 NTT corp.
All Rights Reserved. Symbol取得のリクエストを送る symbol Request(Client → Server) Response (Server → Client) … 正しく接続できていればリクエストに応じた結果が返ってくる
54.
54Copyright©2018 NTT corp.
All Rights Reserved. Serverという名がつくものにはとりあえずクライアント を作ってみたくなるはず → 作ってみた Spring Shell と Eclipse LSP4J を利用したCLIのクライアント • 対応機能 • Symbolの取得 • プロジェクト内 • ファイル内 • 実行中のSpring Boot ApplicationのRequestMapping • Live Application Information によるハイライト おまけ2:クライアントを実装してみた
55.
55Copyright©2018 NTT corp.
All Rights Reserved. おまけ2:クライアントを実装してみた DEMO
56.
56Copyright©2018 NTT corp.
All Rights Reserved. Symbolの取得 プロジェクト内のSymbol取得 ファイル内のSymbol取得
57.
57Copyright©2018 NTT corp.
All Rights Reserved. Symbolの取得 生データを出力して確認
58.
58Copyright©2018 NTT corp.
All Rights Reserved. Symbolの取得 実行中のSpring Boot ApplicationのRequestMapping取得
59.
59Copyright©2018 NTT corp.
All Rights Reserved. ハイライト Live Application Information によるハイライト CodeLens
60.
60Copyright©2018 NTT corp.
All Rights Reserved. • Language Server Protocol • 一つの実装で複数のIDE/エディタに機能を提供 • 今後さらに対応が広がる可能性も • Navigation の実装・動作 • プロジェクトを開いた時点でNavigation先を解析 • 実行中のSpring BootアプリのエンドポイントはJMXで収集 • Live Application Information の実装・動作 • JMXで定期的に情報を収集 • Language Server から一方的に通知 実装編まとめ
Download now