Submit Search
Upload
2017spring jjug ccc_f2
•
3 likes
•
9,965 views
K
Kazuhiro Wada
Follow
2017/5/20 JJUG CCC 2017 Spring 発表資料 エンプラ開発におけるレガシーアプリケーションの巻き取りとモジュール分割の戦い
Read less
Read more
Technology
Report
Share
Report
Share
1 of 55
Download now
Download to read offline
Recommended
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Works Applications
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Hiroyuki Ohnaka
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
開発とテストが一体となったソフトウェア開発
開発とテストが一体となったソフトウェア開発
Yahoo!デベロッパーネットワーク
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Takeshi Hirosue
XP祭り2021LT資料(「俺のLT」完結編)
XP祭り2021LT資料(「俺のLT」完結編)
Fumihiro Sunada
Recommended
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Works Applications
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Hiroyuki Ohnaka
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
開発とテストが一体となったソフトウェア開発
開発とテストが一体となったソフトウェア開発
Yahoo!デベロッパーネットワーク
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Takeshi Hirosue
XP祭り2021LT資料(「俺のLT」完結編)
XP祭り2021LT資料(「俺のLT」完結編)
Fumihiro Sunada
Atlassian Summit US 2017 #augj
Atlassian Summit US 2017 #augj
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
Developers Summit
開発チームの世代交代への取り組み
開発チームの世代交代への取り組み
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた
Hiroshi Ohnuki
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020
gree_tech
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
CData Software Japan
Devsumi summer 2013_b2_share
Devsumi summer 2013_b2_share
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
リリースを支える負荷測定
リリースを支える負荷測定
gree_tech
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Tetsuo Ajima
Bambooによる継続的デリバリー
Bambooによる継続的デリバリー
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Yuichi Hasegawa
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
gree_tech
ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩
Yahoo!デベロッパーネットワーク
Confluence/Jira パフォーマンスチューニングポイント
Confluence/Jira パフォーマンスチューニングポイント
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
Bitbucket Pipelinesについて
Bitbucket Pipelinesについて
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
Future Tech Night Agile勉強会 20210709
Future Tech Night Agile勉強会 20210709
shotamiyazaki6
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
貴志 上坂
Google Cloud Platform は何がすごいのか?
Google Cloud Platform は何がすごいのか?
Kiyoshi Fukuda
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
Developers Summit
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行
gree_tech
Arachne Unweaved (JP)
Arachne Unweaved (JP)
Ikuru Kanuma
Java libraries you can't afford to miss
Java libraries you can't afford to miss
Andres Almiray
More Related Content
What's hot
Atlassian Summit US 2017 #augj
Atlassian Summit US 2017 #augj
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
Developers Summit
開発チームの世代交代への取り組み
開発チームの世代交代への取り組み
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた
Hiroshi Ohnuki
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020
gree_tech
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
CData Software Japan
Devsumi summer 2013_b2_share
Devsumi summer 2013_b2_share
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
リリースを支える負荷測定
リリースを支える負荷測定
gree_tech
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Tetsuo Ajima
Bambooによる継続的デリバリー
Bambooによる継続的デリバリー
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Yuichi Hasegawa
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
gree_tech
ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩
Yahoo!デベロッパーネットワーク
Confluence/Jira パフォーマンスチューニングポイント
Confluence/Jira パフォーマンスチューニングポイント
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
Bitbucket Pipelinesについて
Bitbucket Pipelinesについて
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
Future Tech Night Agile勉強会 20210709
Future Tech Night Agile勉強会 20210709
shotamiyazaki6
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
貴志 上坂
Google Cloud Platform は何がすごいのか?
Google Cloud Platform は何がすごいのか?
Kiyoshi Fukuda
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
Developers Summit
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行
gree_tech
What's hot
(20)
Atlassian Summit US 2017 #augj
Atlassian Summit US 2017 #augj
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
開発チームの世代交代への取り組み
開発チームの世代交代への取り組み
6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
Devsumi summer 2013_b2_share
Devsumi summer 2013_b2_share
リリースを支える負荷測定
リリースを支える負荷測定
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Bambooによる継続的デリバリー
Bambooによる継続的デリバリー
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩
Confluence/Jira パフォーマンスチューニングポイント
Confluence/Jira パフォーマンスチューニングポイント
Bitbucket Pipelinesについて
Bitbucket Pipelinesについて
Future Tech Night Agile勉強会 20210709
Future Tech Night Agile勉強会 20210709
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
Google Cloud Platform は何がすごいのか?
Google Cloud Platform は何がすごいのか?
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行
Viewers also liked
Arachne Unweaved (JP)
Arachne Unweaved (JP)
Ikuru Kanuma
Java libraries you can't afford to miss
Java libraries you can't afford to miss
Andres Almiray
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.
JustSystems Corporation
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
yy yank
Jjug ccc
Jjug ccc
Tanaka Yuichi
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
hajime funaki
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
Logico
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
Yoshio Kajikuri
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
JustSystems Corporation
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
y_taka_23
日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug
日本Javaユーザーグループ
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
Introduction of Project Jigsaw
Introduction of Project Jigsaw
Yuichi Sakuraba
グラフデータベース入門
グラフデータベース入門
Masaya Dake
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
Yahoo!デベロッパーネットワーク
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
サーバサイド Kotlin
サーバサイド Kotlin
Hiroki Ohtani
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
aha_oretama
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilation
Logico
Viewers also liked
(20)
Arachne Unweaved (JP)
Arachne Unweaved (JP)
Java libraries you can't afford to miss
Java libraries you can't afford to miss
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
Jjug ccc
Jjug ccc
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Introduction of Project Jigsaw
Introduction of Project Jigsaw
グラフデータベース入門
グラフデータベース入門
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
サーバサイド Kotlin
サーバサイド Kotlin
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilation
Similar to 2017spring jjug ccc_f2
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
満徳 関
Keywordmap for sns
Keywordmap for sns
KotaroTamai
超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0
正善 大島
最新事例にみるサービスデザインという新潮流(I・CON2014)
最新事例にみるサービスデザインという新潮流(I・CON2014)
IMJ Corporation
【de:code 2020】 25 年 1,300 社以上の実績をベースにした「リシテア/就業管理クラウドサービス」とそれを支える「デジタルソリューション...
【de:code 2020】 25 年 1,300 社以上の実績をベースにした「リシテア/就業管理クラウドサービス」とそれを支える「デジタルソリューション...
日本マイクロソフト株式会社
SIerとクラウドの付き合い方
SIerとクラウドの付き合い方
Yusuke Suzuki
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
Recruit Technologies
コンテンツマーケティング提案資料
コンテンツマーケティング提案資料
Kodai Aiba
SocialAnalyticsとCQ5がスゴイ
SocialAnalyticsとCQ5がスゴイ
Makoto Shimizu
Microsoft azure におけるアジャイル マーケティング 20171205 public
Microsoft azure におけるアジャイル マーケティング 20171205 public
Microsoft Azure Japan
リクルート式ビッグデータ活用術
リクルート式ビッグデータ活用術
Recruit Technologies
Future customer experience
Future customer experience
Katsuhiro Aizawa
Microsoft MVPとは?コミュニティ活動のすすめ
Microsoft MVPとは?コミュニティ活動のすすめ
TomomitsuKusaba
クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割
Yusuke Oi
「企業のデジタルトランスフォーメーション ビッグデータ利活用に関する活動と課題」
「企業のデジタルトランスフォーメーション ビッグデータ利活用に関する活動と課題」
scirexcenter
ドメイン駆動設計と要求開発
ドメイン駆動設計と要求開発
Kent Ishizawa
カスタマーサクセスでドッグフーディングをしてみた
カスタマーサクセスでドッグフーディングをしてみた
Yuta Maruyama
スマートデバイスSIの落とし穴と適した開発手法とは?
スマートデバイスSIの落とし穴と適した開発手法とは?
Takuya Kitamura
戦略広報における オウンドメディアコミュニケーションとは
戦略広報における オウンドメディアコミュニケーションとは
トライベック・ストラテジー株式会社 / Tribeck Strategy Inc.
20140904 One Coin College CMSを使いこなすスキル
20140904 One Coin College CMSを使いこなすスキル
tetsuo morikawa
Similar to 2017spring jjug ccc_f2
(20)
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
Keywordmap for sns
Keywordmap for sns
超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0
最新事例にみるサービスデザインという新潮流(I・CON2014)
最新事例にみるサービスデザインという新潮流(I・CON2014)
【de:code 2020】 25 年 1,300 社以上の実績をベースにした「リシテア/就業管理クラウドサービス」とそれを支える「デジタルソリューション...
【de:code 2020】 25 年 1,300 社以上の実績をベースにした「リシテア/就業管理クラウドサービス」とそれを支える「デジタルソリューション...
SIerとクラウドの付き合い方
SIerとクラウドの付き合い方
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
コンテンツマーケティング提案資料
コンテンツマーケティング提案資料
SocialAnalyticsとCQ5がスゴイ
SocialAnalyticsとCQ5がスゴイ
Microsoft azure におけるアジャイル マーケティング 20171205 public
Microsoft azure におけるアジャイル マーケティング 20171205 public
リクルート式ビッグデータ活用術
リクルート式ビッグデータ活用術
Future customer experience
Future customer experience
Microsoft MVPとは?コミュニティ活動のすすめ
Microsoft MVPとは?コミュニティ活動のすすめ
クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割
「企業のデジタルトランスフォーメーション ビッグデータ利活用に関する活動と課題」
「企業のデジタルトランスフォーメーション ビッグデータ利活用に関する活動と課題」
ドメイン駆動設計と要求開発
ドメイン駆動設計と要求開発
カスタマーサクセスでドッグフーディングをしてみた
カスタマーサクセスでドッグフーディングをしてみた
スマートデバイスSIの落とし穴と適した開発手法とは?
スマートデバイスSIの落とし穴と適した開発手法とは?
戦略広報における オウンドメディアコミュニケーションとは
戦略広報における オウンドメディアコミュニケーションとは
20140904 One Coin College CMSを使いこなすスキル
20140904 One Coin College CMSを使いこなすスキル
Recently uploaded
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
sugiuralab
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
sugiuralab
Recently uploaded
(7)
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
2017spring jjug ccc_f2
1.
#ccc_f2 エンプラ開発における レガシーアプリケーションの 巻き取りとモジュール分割の戦い 2017/5/20 和田 一洋
2.
#ccc_f2 自己紹介 和田 一洋(わだ かずひろ) •
グロースエクスパートナーズ(株)所属 • 大手SIerで6年間勤務ののち2015年に GxP入社 • http://qiita.com/khwada 1
3.
#ccc_f2 紹介するプロジェクト • 金融系のコンシューマー向けWeb会員サイト (会員数:約60万)の受託開発 • 10名強のチームで開発 •
顧客情報システム部門と開発チームを支援す る業務に従事 顧客 情報システム部門 弊社 開発チーム 10名強 要件や方式の 取りまとめ支援 設計や開発改善 の支援 2
4.
#ccc_f2 今日の話(変化のスイッチ) • 以前の自分 • 勉強会に参加したり、技術書を読んでも、日々 の開発にどう生かせるのか、どうしたら近づいてい けるのか分からなかった •
エンタープライズ開発のあるある? • つまり「変化のスイッチ」が分からなかった • 「こうあるべき」「こうなるべき」は分かっても・・・ • 「何をまず変えれば変化の歯車が回りだすのか」 「現実的にどうすれば変わるのか」が分からない ※ http://d.hatena.ne.jp/Chikirin/20090210 3
5.
#ccc_f2 今日の話 • 参画から2年間の取り組みを4つのフェーズ に分けてご紹介(だいたい半年ずつ) • 各フェーズで取り組んだことと、その「変化のス イッチ」について 参画 開発 モダン化 巻き取り 段階的な 再構築 いまココ! モジュール分割 OAuth2
Provider ふりかえり ブランチ運用 CI/CD build pipeline API化 モジュール再分割 4
6.
#ccc_f2 参画期 5 参画 開発 モダン化 巻き取り 段階的な 再構築 モジュール分割 OAuth2 Provider build pipeline API化 モジュール再分割ふりかえり ブランチ運用 CI/CD
7.
#ccc_f2 参画のきっかけ • 既存のベンダーさんが大規模案件に追われる 中、「規模は小さいがスピード感が求められ る」開発を進めるために参画。 • システムの中身はほとんど知らない状態。 •
レガシーフレームワーク(Struts1系ベースの 独自フレームワーク)上での開発、ソースの変 更履歴をコメントアウトですべて保持、そして、 ベンダーをまたがったソースコードマージ・・・ ⇒モジュール分割 6
8.
#ccc_f2 モジュール分割 war レガシー フレームワーク アプリ1 WebLogic DB Apache 7
9.
#ccc_f2 war モジュール分割 • SpringMVCベースの新規アプリを作成 • 2つのwarをearに同梱してデプロイ レガシー フレームワーク アプリ1 war Spring アプリ2 ear WebLogic DB Apache session war レガシー フレームワーク アプリ1 WebLogic DB Apache 8 /aaa
/bbb
10.
#ccc_f2 モジュール分割 • 役割分担 • アプリ1:引き続き既存ベンダーが担当 •
アプリ2:GxPが担当 • 制約 • インフラ部門との調整にかける時間がなかったた め、モジュールをear同梱することでインフラ影響 を最小化 • DBは共有、HttpSessionも共有 9
11.
#ccc_f2 モジュール分割 • 残った課題(後述) • アプリ2で「メニュー」を表示できない •
各機能の認可判定が仕様/実装ともに複雑 で、認可判定ロジック(メニュー生成ロジック) は簡単には呼び出しや移植ができなかった 10 各機能 コンシューマー 各機能 認可判定ロジック アプリ1 アプリ2
12.
#ccc_f2 モジュール分割の効果 • 提携サービスとの連携をはじめるにあたり、 OAuth2連携を導入 • Spring
Security OAuth2を利用して、ア プリ2上にOAuth2 Provider機能を開発 ⇒レストランやホテルの予約サイトなど、様々な 提携サービスに「XXXXXでログイン」がついた ⇒レガシーフレームワーク上では難しい機能を実 現し、モジュール分割の効果を示すことができた 11
13.
#ccc_f2 変化のスイッチ • レガシーフレームワーク上での開発はしたくない、 従来の開発文化を引き継いではいけない、と いう想い • やや強引に「モジュール分割する」と決めて、 顧客を説得し、ジャンプをした •
課題も出たが、次につながる結果を出せた 12
14.
#ccc_f2 開発モダン化期 13 参画 開発 モダン化 巻き取り 段階的な 再構築 モジュール分割 OAuth2 Provider build pipeline API化 モジュール再分割ふりかえり ブランチ運用 CI/CD
15.
#ccc_f2 ふりかえり • 開発が軌道に乗ったタイミングから、定期的な ふりかえりを開始 • 隔週(目標)でKPTを実施 •
若手を含めたチーム全員が、日常の作業から いったん離れて、プロジェクトについて考え、意見 を発信する場(付箋を利用した個人ワークを 挟む) • 現在では、開発チームが10名強に増えたため、 毎回2チームに分けて、それぞれテーマを決め て実施 14
16.
#ccc_f2 ふりかえり • KPT 15 Keep よかったので続けたいこと Problem Try 次にやってみること 問題点
17.
#ccc_f2 16 ふりかえり 前回までのTry進捗状況の確認 全体 10分 Keep/Problem出し
個人 5分 Keep/Problemをチーム内共有 チーム 10分 Try出し 個人 5分 Tryをチーム内共有 チーム 10分 全体共有 全体 10分 Actionの選定 全体 10分 ・挙がったTryからタスク化するものを選ぶ ・残っている過去のTryも含めて優先度が高い10個 程度のタスクに対して、ToDoラベルをつけて担当者 を割り当て
18.
#ccc_f2 補足:Atlassianツール 17 Wiki/情報共有 他の例) ・Redmine ・Qiita:Team Issue Tracking System 他の例) ・Redmine ・Backlog ・GitHub
issues Gitリポジトリ 他の例) ・GitHub ・GitLab 継続的インテグレーション(CI) 他の例) ・Jenkins ・Travis CI ・Circle CI
19.
#ccc_f2 ブランチ運用 • 課題 • masterへのマージタイミングをはっきり決めてい なかった •
社内テスト環境にリリースするとき? • 顧客の環境にリリースするとき? • 本番リリースするとき? • 並行開発時のブランチ運用ルールが曖昧で、ブ ランチがぐちゃぐちゃになりかけていた ⇒Git-flowをベースとしたブランチ運用を導入 18
20.
#ccc_f2 ブランチ運用 master develop feature/YY案件親 feature/作業1 feature/作業2 feature/保守XX hotfix PR 本番 リリース PR PR PR 本番 リリース 本番 リリース 案件親ブランチ、または、 developへのマージ時に、 PR(ソースコードレビュー) masterへは「本番」リリース時に マージ(本番リリース履歴を残す) 運用上 featureブランチに親子関 係を持たせる(案件親ブランチ⇔ 各タスクのブランチ) 19
21.
#ccc_f2 ブランチ運用 • 新たな課題 • 顧客側でのテスト期間が長く、なかなか developをmasterへマージできない •
その間、次の開発を「案件親ブランチ」で運用す るが、並行開発案件が多くなると「開発親ブラ ンチ」の数が多くなり、リリース順も分かりづらい ⇒バージョン番号を導入 20
22.
#ccc_f2 ブランチ運用 • バージョン番号 • リリース順に採番 •
バージョン番号ごとのdevelopブランチを作成 • 採番ルール • メジャーバージョン:一定規模以上の案件 • マイナーバージョン:定期保守リリースなど • リビジョン:緊急リリース • 間に案件が入った場合、マイナーバージョンで間 に挟み、一度決めたバージョンは変更しない 9.1.1 メジャー マイナー リビジョン 21
23.
#ccc_f2 ブランチ運用 master develop/v10.0.0 feature/YY案件親 feature/作業1 feature/作業2 develop/v9.1.0 feature/保守XX hotfix v9.0.0 v9.0.1 feature/保守ZZ v9.1.0 v10.0.0 22
24.
#ccc_f2 CI/CD(テスト自動化) • ふりかえりでも、テストコードを書いてテスト自 動化に取り組みたいという意見が多かった • 一方、Excelにスクリーンショットを貼る形式で のテスト結果エビデンスの納品が必要 ⇒テスト観点を整理 23
25.
#ccc_f2 CI/CD(テスト自動化) • エビデンス納品対象のテストを「結合テスト」と 定義 • 単体テストは原則JUnit化 JUnitでテストしづらいところは、手動(打鍵) でテスト •
結合テストは打鍵してExcelにスクリーンショット を貼りつけ、整形してエビデンスとする ただしSelenide(Seleniumラッパー)を利 用して、ブラウザオートメーションによる打鍵補助 を導入 24
26.
#ccc_f2 CI/CD(テスト自動化) テストフェーズ テスト観点 実施&レビュー方法 単体
validationや業務ロジックのパターン網 羅/境界値テスト API呼び出しの正常系/異常系 JUnit(DB読み書きや他シ ステムAPIはモック) テストコードレビュー 画面単体 画面レイアウト/文言 正常系/異常系メッセージの表示位置 JavaScriptの挙動 打鍵 Excelでのテストエビデンスの レビュー 結合 画面遷移 会員やデータのパターン データの登録更新パターン モジュール間を結合したシナリオ 打鍵(Selenideによる打 鍵補助) Excelでのテスト設計/テス ト結果のレビュー 25
27.
#ccc_f2 CI/CD(テスト自動化) • レビューアに優しいテストコード 例)validation •
画面入力1項目ごとにグルーピングして階層化 @RunWith(Enclosed.class) • テストメソッド名は日本語に 26
28.
#ccc_f2 CI/CD(テスト自動化) • 次のステップ • 外部仕様に対するテストコード •
実装ロジックをなぞるテストコードは、プロダクトコード を直すときは必ずテストコードを触ることになる • 改修時のデグレ防止、実装後のリファクタリングの自 由度を上げられるテストコードに • E2Eテストの自動化 • selenideの資産を活用 • 主要なシナリオに限って回帰テストを定期自動実 行 27
29.
#ccc_f2 CI/CD(テスト環境デプロイ) 成果物 成果物 ソース コード WebLogic コンソール デプロイ 成果物 push テスト環境 pull 当初、ローカルでbuild、デプロイは手 作業で実施 28
30.
#ccc_f2 CI/CD(テスト環境デプロイ) • 課題 • デプロイの手作業が煩雑 •
並行開発が増え、テスト環境が増えるとさらに 煩雑 • テスト環境にデプロイしようとしてbuildするまで、 JUnitテストをまとめて実行するタイミングがない ⇒Bambooを導入 29
31.
#ccc_f2 CI/CD(テスト環境デプロイ) 成果物 ソース コード デプロイ push v9.0.0 テスト環境1 v9.0.1 テスト環境2 v9.1.0 テスト環境3 v9.2.0 テスト環境4 Trigger pushをtriggerに buildが走り、JUnit が落ちるとメール通知 デプロイの 開始/終了 を通知 30
32.
#ccc_f2 CI/CD(テスト環境デプロイ) 31 各環境にデプロイされているブランチを画面上で一覧参照 環境を選んで、build対象の/build番号を指定し てデプロイ
33.
#ccc_f2 変化のスイッチ • ふりかえりを起点に、手の届く範囲から地道な 改善を積み重ねた • 参画期に、スピードを優先して進めた部分を見 直して足場固め •
自分たちでプロジェクトを改善できるという実感 を得た • 「自動化」という当たり前のことも、取り組んで いくと、教科書的な話だけでない次の課題や ステップが見えてくる = チームの成長 32
34.
#ccc_f2 巻き取り期 33 参画 開発 モダン化 巻き取り 段階的な 再構築 モジュール分割 OAuth2 Provider build pipeline API化 モジュール再分割ふりかえり ブランチ運用 CI/CD
35.
#ccc_f2 巻き取り • 参画から1年が経過したころ • 諸般の事情により、レガシーフレームワーク上 の「アプリ1」の保守開発も巻き取ることに 34
36.
#ccc_f2 巻き取り • 課題:「アプリ1」のビルド方法・・・ • 本番のwarを解凍し、リリース対象のclassファ イルを入れ替えて、圧縮しなおすことでwarを作 成して、リリースしていた •
テスト環境/本番環境の環境差異はコメント アウトで切替 • リリース時のミスも頻発・・・ ⇒巻き取りに際してビルド改善の工数を確保し ていただいた 35
37.
#ccc_f2 build pipeline • 「アプリ1」をgradleでビルドできるように •
環境ごとの差異は設定ファイルに追い出して、 設定値でふるまいを変えるように改修 • ソースコードとビルド成果物を1:1に • 地道に検証 • gradleでbuildしたwarの中身を逆コンパイル • 本番環境のwarの中身を逆コンパイル ⇒diffを取り、意図しない差異がないかを検証 36
38.
#ccc_f2 build pipeline アプリ1 push アプリ1trigger war アプリ2 trigger build push
trigger deploy アプリ2 ear 37
39.
#ccc_f2 API化 • 「アプリ1」を巻き取ったことで、全体最適の視 点で機能配置を考えられるように • 2つのアプリの疎結合化に着手 •
アプリ間連携をRest API化 • HttpSession経由での新たな共有はしない 38
40.
#ccc_f2 API化 • 参画期の残課題だった「認可判定ロジック」を 移植してAPI化 • 「アプリ2」でもメニューを表示できるように 各機能 コンシューマー 各機能 認可判定API 認可判定ロジック 移植 アプリ1 アプリ2 39
41.
#ccc_f2 変化のスイッチ • 開発モダン化期で自動化をしていたからこそ、 その流れに乗せることを前提にできた • 継続開発で顧客との築いてきた信頼関係が前 提 •
各活動の意義を理解していただき、各案件や 保守の中で少しずつ工数を使わせていただいた • 「アプリ1」に手を出せるようになったことにより、 部分最適から全体最適へ視点が変わった 40
42.
#ccc_f2 段階的な再構築期 41 参画 開発 モダン化 巻き取り 段階的な 再構築 モジュール分割 OAuth2 Provider build pipeline API化 モジュール再分割ふりかえり ブランチ運用 CI/CD
43.
#ccc_f2 段階的な再構築 • 顧客内でレガシーフレームワークの撤廃が求め られるように • 合わせて画面リニューアル、スマホ最適化方 式の見直しなどを進めたい •
ただし、移植中の案件凍結はなるべく避けた い ⇒各開発案件内で、改修対象機能を「アプリ 2」に移植していく方針に(段階的な再構築) 42
44.
#ccc_f2 段階的な再構築 機能1 機能2 機能3 … 機能4 機能5 機能1 機能2 機能3 … アプリ1 アプリ1 アプリ2 機能4 機能5 アプリ2 機能1 機能2 機能3 … もともと
現在 移植完了後…? 43 レガシー フレームワーク レガシー フレームワーク Spring Spring
45.
#ccc_f2 モジュール再分割 • これでは、新しく、別のモノリシックなアプリケー ションを作っているだけ・・・ • とはいえ、分割すればよい、というものでもない ⇒改めて、「このプロジェクトにおけるモジュール分 割の意味」を考えた 44
46.
#ccc_f2 モジュール再分割 • 当初は「ベンダー」切り口でのモジュール分割 • ベンダーをまたがったソースコードマージを避ける •
1社体制になった今のモジュール分割 • 複数案件並行開発時のマージを最小化 • 改修時の影響調査/リグレッションテスト範囲 を局所化 • (将来的に)モジュールごとに非機能要件を 分ける 45
47.
#ccc_f2 モジュール再分割 • 新規アプリへの切り出し • CRUD対象テーブルが比較的独立しており、同 時に改修が入るケースが多い機能群 •
方式 • 引き続きearに同梱(インフラの見直しは、 H/W保守切れのタイミングまで待つ) • メモリ上でのHttpSession共有はしない(疎 結合化) • Oracle DBへのconnection数の増大を防ぐ ために、weblogicのconnection pool管理 を利用 46
48.
#ccc_f2 モジュール再分割 アプリ1 レガシー フレームワーク アプリ2 認可判定 Spring 各機能 各機能 アプリ3 Session 管理 Spring 各機能 Session 管理 Session 管理 Session管理(DB) コンシューマー cookie 47 再分割後
49.
#ccc_f2 … サービス モジュール再分割 アプリ1 レガシー フレームワーク アプリ2 認可判定 Spring 各機能 各機能 アプリ3 Session 管理 Spring 各機能 Session管理 (DB) コンシューマー cookie 将来像(仮) 48 Spring 各機能
50.
#ccc_f2 変化のスイッチ • 「一括再構築」はリスクも高く、案件凍結が必 要になるため避けたい。 ⇒これまでの実績から「段階的に進める」とい う提案ができた ⇒再構築の効果も、早期から段階的に得ら れる • 「マイクロサービスアーキテクチャ」という世のトレ ンドを、自分たちのプロジェクトに引きつけてどう していくべきか考えた 49
51.
#ccc_f2 まとめ 50
52.
#ccc_f2 まとめ 51 参画期 強い思いでジャンプ ⇒モジュール分割 開発モダン化期 ふりかえりを起点に 地道な改善 ・デファクトに乗る ・ブランチ管理 ・自動化 ⇒次のジャンプの土台 巻き取り期 自動化を土台に して新たなジャンプ ⇒全体最適への 視点の変化 段階的な再構築期 「段階的」に進める ⇒世の中のトレンドを 自分たちのプロジェクトに ひきつけて「アプリ分割」 外発的 内発的
53.
#ccc_f2 まとめ • 内発的なスイッチ • ふりかえりを起点に、手の届く範囲から改善 •
自分たちでプロジェクトを改善できる、という実感を 得る • 取り組んでいくと、教科書的な話だけでなく、次の 課題やステップが見えてくる = チームの成長 • 外発的なスイッチ • 世の中のアーキテクチャ/技術トレンドの変化、新 しいツールの普及(「当たり前」が変わっていく) • やや(?)無茶な要件やスケジュールを真剣に考 えてみる機会が、ブレークスルーを生むことも 52
54.
#ccc_f2 まとめ • 内発的なスイッチ • 自分たちでコントロールできる •
外発的なスイッチ • 自分たちでコントロールできない • ただし、チームがちゃんと準備をしていれば、チャ ンスが訪れたときに掴むことができる • 準備 = 社内外の勉強会などを通して世の中 のトレンドを知る。知るだけでなく、触ってみて、 自分たちのプロジェクトに引きつけて考える。 53
55.
#ccc_f2 54 ありがとうございました。
Download now