狠狠撸

狠狠撸Share a Scribd company logo
JSUG 2015
Spring in Summer 夏なのにSpring 菊池 陽一
菊池 陽一
Github: yo1000
hatena: Yoichi-KIKUCHI
Spring 歴: 5年
2007.04?
中堅 SIer 新卒入社
2009.12?
社内標準フレームワーク開発?
Spring Framework との出会い
2011.04
社内標準フレームワーク更新
2012.08
リクルート入社 (ニジボックス)
2013.07
リクルートライフスタイル転籍
MARQREL、HOTPEPPER で
Spring 適用を模索
みなさん
Spring どんなふうに
使っていますか?
? 社内標準
? 受託案件
? 自社プロダクト
? ベンダプロダクト
? 日曜プロダクト
? 社内標準
? 受託案件
? 自社プロダクト
? ベンダプロダクト
? 日曜プロダクト
? 社内標準
? 受託案件
? 自社プロダクト
? ベンダプロダクト
? 日曜プロダクト
? 社内標準
? 受託案件
? 自社プロダクト
? ベンダプロダクト
? 日曜プロダクト
? 社内標準
? 受託案件
? 自社プロダクト
? ベンダプロダクト
? 日曜プロダクト
? 社内標準
? 受託案件
? 自社プロダクト
? ベンダプロダクト
? 日曜プロダクト
なんにでも
適用できますよね
(とくにバックエンドシステムでは)
非常に多機能かつ
柔軟に設計されている
Spring ならでは
Java をメインに
システム構築して
いるのであれば
Spring を
選ばない手はない
むしろ
Spring に非ずんば
Java に非ず
現在 それくらい
採用の広がっている
実感があります
たとえば Atlassian
Con?uence では
ランタイムオブジェクトの管理に
Spring を使用している
たとえば JetBrains
TeamCity では
独自拡張した Spring
コンテナを使用している
たとえば JetBrains
サードパーティ製?
フルスタックフレームワークで
IntelliJ のデフォルトサポートが
あるのは Spring のみ!
現在 国外のみならず
国内でも広く認知され
採用に至っている
そんな Spring ですが
実際の業務適用に
ついてはというと...
いままさに仕掛中!とか?
これからやりたい!とか
そこで これまでの
5年すこしで感じた
Spring についての
あれこれをご紹介
株式会社リクルートライフスタイル
菊池 陽一
株式会社リクルートライフスタイル
菊池 陽一
2007.04?
中堅 SIer 新卒入社
2009.12?
社内標準フレームワーク開発?
Spring Framework との出会い
2011.04
社内標準フレームワーク更新
2012.08
リクルート入社 (ニジボックス)
2013.07
リクルートライフスタイル転籍
MARQREL、HOTPEPPER で
Spring の適用を模索
2007.11?
Spring Framework 2.5
2009.12?
Spring Framework 3.0
2011.12?
Spring Framework 3.1
2013.12
Spring Framework 4.0
略歴
2007.04?
中堅 SIer 新卒入社
2009.12?
社内標準フレームワーク開発?
Spring Framework との出会い
2011.04
社内標準フレームワーク更新
2012.08
リクルート入社 (ニジボックス)
2013.07
リクルートライフスタイル転籍
MARQREL、HOTPEPPER で
Spring の適用を模索
2007.11?
Spring Framework 2.5
2009.12?
Spring Framework 3.0
2011.12?
Spring Framework 3.1
2013.12
Spring Framework 4.0
略歴
バッドノウハウ収集期
2007.04?
中堅 SIer 新卒入社
2009.12?
社内標準フレームワーク開発?
Spring Framework との出会い
2011.04
社内標準フレームワーク更新
2012.08
リクルート入社 (ニジボックス)
2013.07
リクルートライフスタイル転籍
MARQREL、HOTPEPPER で
Spring の適用を模索
2007.11?
Spring Framework 2.5
2009.12?
Spring Framework 3.0
2011.12?
Spring Framework 3.1
2013.12
Spring Framework 4.0
略歴
ベタープラクティス実践期
バッドノウハウ収集期
当時そんなつもりは全くありませんでしたが
振り返ってみるとバッドノウハウが多かった...
社内標準フレームワーク開発
● Spring Framework 3.0 GA ベース
● MVC フレームワークには Wicket を採用
● サービスレイヤ以下を自社開発
? ビジネスプロセスをテンプレートパターン?
により実装
? bean 定義でサービス同士を相互に呼び出せるよ
うな仕組みを作りこんでいた
社内標準フレームワーク開発
● Spring Framework 3.0 GA ベース
● MVC フレームワークには Wicket を採用
● サービスレイヤ以下を自社開発
? ビジネスプロセスをテンプレートパターン?
により実装
? bean 定義でサービス同士を相互に呼び出せるよ
うな仕組みを作りこんでいた
Good!
社内標準フレームワーク開発
● Spring Framework 3.0 GA ベース
● MVC フレームワークには Wicket を採用
● サービスレイヤ以下を自社開発
? ビジネスプロセスをテンプレートパターン?
により実装
? bean 定義でサービス同士を相互に呼び出せるよ
うな仕組みを作りこんでいた
Good!
Bad!!
社内標準フレームワーク開発
● Spring Framework 3.0 GA ベース
● MVC フレームワークには Wicket を採用
● サービスレイヤ以下を自社開発
? ビジネスプロセスをテンプレートパターン?
により実装
? bean 定義でサービス同士を相互に呼び出せるよ
うな仕組みを作りこんでいた
Good!
Bad!!
Bad!!
何が良くなかったのか
一般的な
Spring Project
Controller
Service
Repository
Template
Spring Framework
Aspect J
View
Controller
Service
Repository
Template
Spring Framework
Aspect J
View
Controller
Service
Repository
Template
Spring Framework
Aspect J
View
Request
Controller
Service
Repository
Template
Spring Framework
Aspect J
View
Controller
Service
Repository
Template
Spring Framework
Aspect J
View
Controller
Service
Repository
Template
Spring Framework
Aspect J
View
Request
社内標準としていた
フレームワーク
InHouse
Service
Spring Framework
Aspect J
Wicket
Controller
View
DB Access
Business
Requirements
InHouse
Service
Spring Framework
Aspect J
Wicket
Controller
View
DB Access
Business
Requirements
MVC フレームワークを
Wicket に固定していた
Wicket
Controller
View
InHouse
Service
Spring Framework
Aspect J
Wicket
Controller
View
DB Access
Business
Requirements
MVC フレームワークを
Wicket に固定していた
Wicket
Controller
View
Bad!!
InHouse
Service
Spring Framework
Aspect J
Wicket
Controller
View
DB Access
Business
Requirements
MVC フレームワークを
Wicket に固定していた
Wicket
Controller
View
Bad!!
進化し続けるフロント技術や
これに伴う要件に応えるため
せめて View は柔軟に
変更可能であるべき
Better
事実として
View を取りまく
フレームワークは
変化し続けている
Servlet + JSP
Struts + JSP
Struts + Velocity
Struts2 + FreeMaker
Spring MVC + FreeMaker
Spring MVC + Thymeleaf
バッドノウハウ.1
? 適用する MVC Framework を制限してしまった
? 制限して、同じものを繰り返し使わせることで?
確実にナレッジは蓄積しやすくなるが、?
要件に応えられないのであれば意味は無い
? あるべき姿は柔軟に選択可能な状態
? そのうえで選択肢となりうるフレームワークの?
特徴やメリット/デメリット/ナレッジなどが?
事前に展開されているとより良い
InHouse
Service
Spring Framework
Aspect J
Wicket
Controller
View
DB Access
Business
Requirements
InHouse
Service
Spring Framework
Aspect J
Wicket
Controller
View
DB Access
Business
Requirements
Service レイヤ以降の本来の構成を無視して
テンプレートパターンを適用
InHouse
Service DB Access
Business
Requirements
InHouse
Service
Spring Framework
Aspect J
Wicket
Controller
View
DB Access
Business
Requirements
Service レイヤ以降の本来の構成を無視して
テンプレートパターンを適用
InHouse
Service DB Access
Business
Requirements
Bad!!
InHouse
Service
Spring Framework
Aspect J
Wicket
Controller
View
DB Access
Business
Requirements
Service レイヤ以降の本来の構成を無視して
テンプレートパターンを適用
InHouse
Service DB Access
Business
Requirements
Bad!!
コンポーネントごとの
DI を意識した上で
適切に責務分割を行い
疎な状態を維持する Better
适切な责务分割とは?
Spring には
都合の良いことに?
各種コンポーネント
アノテーションが
用意されている
@Controller
@Service
@Repository
@Component
@Con?guration
etc...
Controller
Service
Repository
Template
Spring Framework
Aspect J
View
@Controller
@Service
@Repository@Component
@Con?guration
これに倣うだけで
適切に責務は
分割される
本当に適切?
基準は?
テストがしやすいか
バッドノウハウ.2
? DI を無視して適切な責務分割を行っていなかった
? テンプレートパターンは有用な?
デザインパターンのひとつだが、?
どんな規模でも有効に作用するとは限らない
? 適切な責務分割を意識する
? Spring の場合、都合の良いことに、責務を?
各種コンポーネントアノテーションで?
定義しておりこれに倣うだけで適切な分割が働く
社内標準フレームワーク開発
● Spring Framework 3.1 GA ベース
● MVC フレームワークには Struts2 を採用
● サービスレイヤ以下を自社開発
? テンプレートパターンによる実装
? bean 定義でサービス同士を相互に呼び出せるよ
うな仕組みを実装
第2弾
社内標準フレームワーク開発
● Spring Framework 3.1 GA ベース
● MVC フレームワークには Struts2 を採用
● サービスレイヤ以下を自社開発
? テンプレートパターンによる実装
? bean 定義でサービス同士を相互に呼び出せるよ
うな仕組みを実装
Good!
Bad!!
Bad!!
第2弾
良くなかった
ポイントはほぼ同じ
なので 割愛
その后
転職して
新たな環境へと移り...
実はしばらくの間?
Spring を適用する
機会に恵まれなかった
そんな中
目にしてきたものは
オレオレ
フレームワーク
リクルートでの開発事情
● ニジボックス (2012-2013)
? カードエンジンと呼ばれるソシャゲ開発用の?
プロジェクトテンプレートが用意されていた
? PHP によるオレオレフレームワーク
● リクルートライフスタイル (2013-)
? R2 と呼ばれる Seasar2 + SAStruts ベースの?
オレオレフレームワーク
? 前職で作ってきたものと同じ臭いを感じた
リクルートでの開発事情
● ニジボックス (2012-2013)
? カードエンジンと呼ばれるソシャゲ開発用の?
プロジェクトテンプレートが用意されていた
? PHP によるオレオレフレームワーク
● リクルートライフスタイル (2013-)
? R2 と呼ばれる Seasar2 + SAStruts ベースの?
オレオレフレームワーク
? 前職で作ってきたものと同じ臭いを感じた
Bad!!
リクルートでの開発事情
● ニジボックス (2012-2013)
? カードエンジンと呼ばれるソシャゲ開発用の?
プロジェクトテンプレートが用意されていた
? PHP によるオレオレフレームワーク
● リクルートライフスタイル (2013-)
? R2 と呼ばれる Seasar2 + SAStruts ベースの?
オレオレフレームワーク
? 前職で作ってきたものと同じ臭いを感じた
Bad!!
Bad!!
中途入社したわたしは
非常に苦労しました
オレオレ
フレームワークに
ありがちな多くの事象が
現場で発生していた
整備不足の
ドキュメント
(ネットで引いても もちろん見つからない)
フレームワークに
縛られるインフラ
(セキュリティリスクに対するコスト増を招く)
使用可能な
技術が限定的
(新たな技術を取り入れるにはトンチが必要)
フレームワークのクセ
を把握していることが
仕事になる
(クセというか不具合というか...)
なんでこんなことすら
できないの!??
Spring なら30分で
解決するのに...!
そんなものに
あふれていた
こう 思うに至る
? オレオレ
フレームワーク?
ダメ?ゼッタイ?
やめましょう
バッドノウハウ収集期?
??????まとめ
● Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
● 作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
バッドノウハウ収集期?
??????まとめ
● Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
● 作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
過度な独自仕様の作りこみや
オレオレフレームワーク
の開発を行ってはいけない
株式会社リクルートライフスタイル
菊池 陽一
株式会社リクルートライフスタイル
菊池 陽一
2007.04?
中堅 SIer 新卒入社
2009.12?
社内標準フレームワーク開発?
Spring Framework との出会い
2011.04
社内標準フレームワーク更新
2012.08
リクルート入社 (ニジボックス)
2013.07
リクルートライフスタイル転籍
MARQREL、HOTPEPPER で
Spring の適用を模索
2007.11?
Spring Framework 2.5
2009.12?
Spring Framework 3.0
2011.12?
Spring Framework 3.1
2013.12
Spring Framework 4.0
略歴
2007.04?
中堅 SIer 新卒入社
2009.12?
社内標準フレームワーク開発?
Spring Framework との出会い
2011.04
社内標準フレームワーク更新
2012.08
リクルート入社 (ニジボックス)
2013.07
リクルートライフスタイル転籍
MARQREL、HOTPEPPER で
Spring の適用を模索
2007.11?
Spring Framework 2.5
2009.12?
Spring Framework 3.0
2011.12?
Spring Framework 3.1
2013.12
Spring Framework 4.0
略歴
ベタープラクティス実践期
ベタープラクティス実践记
ベタープラクティス実践记
ベタープラクティス実践记
?
ベタープラクティス実践记
エンドレスに改善しつづけたいので
あえて「ベスト」という言葉は使用していません
これまで集めた
バッドノウハウを
もとに より良い
使い方を考えてみる
集まったバッドノウハウたち
● Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
● 作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
集まったバッドノウハウたち
● Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
● 作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
どうするべきか
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
どうするべきか
>> Spring では、HTML や JSP などの他、?
レスポンス可能なあらゆるものを?
Controller が返却できることを意識する
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
より具体的には...
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
より具体的には...
>> Spring MVC を採用し、さまざまな View
へ対応可能にしておく。RestController
を使用してフロントを完全分離する (バック
エンドシステムの API 化を促進する)
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
@Controller?
@RequestMapping("employees")?
public class EmployeeController {?
@RequestMapping(produces = "text/html")
public String getHtml() { return "employee"; }?
?
@RequestMapping(produces = "application/json", consumes = ..)?
@ResponseBody?
public String getJson() { return new Employee("Yoichi", "RLS", 30); }
@RequestMapping(produces = "application/xml", consumes = ..)?
@ResponseBody?
public String getXml() { return new Employee("Yoichi", "RLS", 30); }
}
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
@Controller?
@RequestMapping("employees")?
public class EmployeeController {?
@RequestMapping(produces = "text/html")
public String getHtml() { return "employee"; }?
?
@RequestMapping(produces = "application/json", consumes = ..)?
@ResponseBody?
public String getJson() { return new Employee("Yoichi", "RLS", 30); }
@RequestMapping(produces = "application/xml", consumes = ..)?
@ResponseBody?
public String getXml() { return new Employee("Yoichi", "RLS", 30); }
}
扱うデータは同じ
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
@Controller?
@RequestMapping("employees")?
public class EmployeeController {?
@RequestMapping(produces = "text/html")
public String getHtml() { return "employee"; }?
?
@RequestMapping(produces = "application/json", consumes = ..)?
@ResponseBody?
public String getJson() { return new Employee("Yoichi", "RLS", 30); }
@RequestMapping(produces = "application/xml", consumes = ..)?
@ResponseBody?
public String getXml() { return new Employee("Yoichi", "RLS", 30); }
}
扱うデータは同じ
表現の方法が異なる
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
どうするべきか
>> Spring では、HTML や JSP などの他、?
レスポンス可能なあらゆるものを?
Controller が返却できることを意識する
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
どうするべきか
>> Spring では、HTML や JSP などの他、?
レスポンス可能なあらゆるものを?
Controller が返却できることを意識する
>> Spring では、RDB の他、スキーマレス
DB、ファイル、API、などあらゆる外部リ
ソースを永続化レイヤで扱うことを意識する
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
より具体的には...
>> Spring MVC を採用し、さまざまな View
へ対応可能にしておく。RestController
を使用してフロントを完全分離する (バック
エンドシステムの API 化を促進する)
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
より具体的には...
>> Spring MVC を採用し、さまざまな View
へ対応可能にしておく。RestController
を使用してフロントを完全分離する (バック
エンドシステムの API 化を促進する)
>> Repository レイヤを抽象化してどのよう
な外部リソースへも切替可能にしておく
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
public interface EmployeeRepository {?
Employee getItem();?
}?
@Repository @Primary
public class EmployeeJdbcRepository implements EmployeeRepos.. {}?
@Repository
public class EmployeeMongoRepository implements EmployeeRep.. {}
@Service
public class EmployeeService {
@Autowired
public EmployeeService(EmployeeRepository employeeRepository) {}
}
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
public interface EmployeeRepository {?
Employee getItem();?
}?
@Repository @Primary
public class EmployeeJdbcRepository implements EmployeeRepos.. {}?
@Repository
public class EmployeeMongoRepository implements EmployeeRep.. {}
@Service
public class EmployeeService {
@Autowired
public EmployeeService(EmployeeRepository employeeRepository) {}
}
Serviceが見るのは
interface
Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
public interface EmployeeRepository {?
Employee getItem();?
}?
@Repository @Primary
public class EmployeeJdbcRepository implements EmployeeRepos.. {}?
@Repository
public class EmployeeMongoRepository implements EmployeeRep.. {}
@Service
public class EmployeeService {
@Autowired
public EmployeeService(EmployeeRepository employeeRepository) {}
}
Serviceが見るのは
interface
Primary 側が DI される
@Bean + @ConditionalOn 等の利用でより柔軟に
集まったバッドノウハウたち
● Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
● 作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
どうするべきか
Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
どうするべきか
>> Spring のレイヤデザインに従い、?
適切に責務分割を行うことを意識して、?
各レイヤが疎な状態を維持できるように?
注意して設計?実装を行う?
Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
より具体的には...
Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
より具体的には...
>> @Controller
→ URL と View、Service の紐付けを表現
Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
より具体的には...
>> @Controller
→ URL と View、Service の紐付けを表現
>> @Service
→ 業務プロセスを表現
Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
より具体的には...
>> @Controller
→ URL と View、Service の紐付けを表現
>> @Service
→ 業務プロセスを表現
>> @Repository
→ 外部リソースアクセスを表現
Controller
Service
Repository
Template
Spring Framework
Aspect J
View
@Controller
@Service
@Repository@Component
@Con?guration
集まったバッドノウハウたち
● Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
● 作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
どうするべきか
作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
どうするべきか
>> Spring をなるべくそのまま使いましょう?
これに限ります
作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
より具体的には...
作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
より具体的には...
>> Spring をベースにライブラリを?
追加していく形で製品を作り上げる
作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
より具体的には...
>> Spring をベースにライブラリを?
追加していく形で製品を作り上げる
>> 独自の作りこみを行う場合は、?
コア機能に影響を与えないよう?
着脱可能な実装を意識する?
(プラグイン/アドオンのようなイメージで)
@Aspect @Component?
public class ResponseWrapperAdvice {?
@Around("execution(* com.yo1000.controller.*.*(..)) && "?
+ "@annotation(..annotation.RequestMapping)")?
public Object appendPre?x(ProceedingJoinPoint joinPoint) throws .. {
Object ret = joinPoint.proceed();
if (ret instanceof Employee) {?
Employee emp = (Employee) ret;?
emp.setName(emp.isMale() ? ("Mr. " + emp.getName())
: "Ms. " + emp.getName());
}
return ret;
}
}
作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
@Aspect @Component?
public class ResponseWrapperAdvice {?
@Around("execution(* com.yo1000.controller.*.*(..)) && "?
+ "@annotation(..annotation.RequestMapping)")?
public Object appendPre?x(ProceedingJoinPoint joinPoint) throws .. {
Object ret = joinPoint.proceed();
if (ret instanceof Employee) {?
Employee emp = (Employee) ret;?
emp.setName(emp.isMale() ? ("Mr. " + emp.getName())
: "Ms. " + emp.getName());
}
return ret;
}
}
作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
AOP を使用
@Aspect @Component?
public class ResponseWrapperAdvice {?
@Around("execution(* com.yo1000.controller.*.*(..)) && "?
+ "@annotation(..annotation.RequestMapping)")?
public Object appendPre?x(ProceedingJoinPoint joinPoint) throws .. {
Object ret = joinPoint.proceed();
if (ret instanceof Employee) {?
Employee emp = (Employee) ret;?
emp.setName(emp.isMale() ? ("Mr. " + emp.getName())
: "Ms. " + emp.getName());
}
return ret;
}
}
作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
AOP を使用
指定したメソッドパターン、?
アノテーションパターンの処理に割り込む
ベタープラクティス実践记?
??????まとめ
● Spring MVC を使用した上で Microservices のよ
うな設計を意識してシステム間依存をなるべく疎な
状態に保つ (API 化、Repository の抽象化)
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) に従った実装を意識する
● 独自の作り込みが発生する場合は、プラグイン的な
実装を心がける (Bad: 継承/Better: AOP)
ベタープラクティス実践记?
??????まとめ
● Spring MVC を使用した上で Microservices のよ
うな設計を意識してシステム間依存をなるべく疎な
状態に保つ (Repository の抽象化)
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) をに従う
● 独自の作り込みが発生する場合は、プラグイン的な
実装を心がける (Bad: 継承/Better: AOP)
SpringFramework
の理解を深めましょう
株式会社リクルートライフスタイル
菊池 陽一
おわりに
バッドノウハウ収集期?
??????まとめ
● Spring を使用する上で、?
周辺アーキテクチャに縛りを加えてはいけない
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) を无视してはいけない
● 作り方に制限が加わるような?
独自の作り込みをおこなってはいけない
過度な独自仕様の作りこみや
オレオレフレームワーク
の開発を行ってはいけない
ベタープラクティス実践记?
??????まとめ
● Spring MVC を使用した上で Microservices のよ
うな設計を意識してシステム間依存をなるべく疎な
状態に保つ (Repository の抽象化)
● Spring のレイヤデザイン (Controller/Service/
Repository/Template) をに従う
● 独自の作り込みが発生する場合は、プラグイン的な
実装を心がける (Bad: 継承/Better: AOP)
SpringFramework
の理解を深めましょう
おわりに
最終的な着地としては、わりと一般的なお話になってしまい
ました。ですが、Springは進化を続けています。今回お話し
た内容もいつ覆るかはわかりません。

わたしも5年前にSpringに触れ始めた頃には、現在の
SpringBootのような非常に簡単かつパワフルな機能が出てく
るとは思ってもいませんでした。そういう意味でも、わたし
自身もSpringの進化を引き続き追いかけて行きたいと思いま
す!
Appendix
vis
? KPI VISualizer
? システムに、時間と値の二軸表現可能な結果を返す
SQL を登録することで、これを動的にグラフ化し
て表示してくれるもの。
? Spring Boot を使用したプロジェクト。
? https://github.com/yo1000/vis
Jsug2015 summer spring適用におけるハ?ット?ノウハウとヘ?ターフ?ラクティス
bluefairy
? Docker Web Client
? Docker Remote API をプロパティに設定して起動
すると、Docker イメージの閲覧や、コンテナの起
動が行える Web Client。
? Spring Boot を使用したプロジェクト。
? https://github.com/yo1000/bluefairy
Jsug2015 summer spring適用におけるハ?ット?ノウハウとヘ?ターフ?ラクティス
dbspock
? spock ライクに DBUnit を使用できるようにした
ライブラリ
? Groovy を使用したプロジェクト。
? https://github.com/yo1000/dbspock
<dependencies>
<dependency>
<groupId>com.yo1000</groupId>
<artifactId>dbspock</artifactId>
<version>0.1.2.RELEASE</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>com.yo1000</id>
<name>yo1000 maven repository</name>
<url>http://yo1000.github.io/maven/</url>
</repository>
</repositories>
dbspock
class	
 RepositorySpec	
 extends	
 Specification	
 {	
 
	
 	
 	
 	
 def	
 "DBSpockTest"()	
 {	
 
	
 	
 	
 	
 	
 	
 	
 	
 setup:	
 
	
 	
 	
 	
 	
 	
 	
 	
 def	
 tester	
 =	
 new	
 DataSourceDatabaseTester(dataSource)	
 
	
 	
 	
 	
 	
 	
 	
 	
 def	
 data	
 =	
 {	
 
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 _cols_	
 'SHOP_ID'	
 |	
 'SHOP_NAME'	
 	
 	
 	
 	
 |	
 'SHOP_CREATED'	
 
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 shop	
 	
 	
 'SP-1'	
 	
 	
 	
 |	
 'BURGER	
 KING'	
 	
 	
 |	
 '2015-04-01'	
 
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 shop	
 	
 	
 'SP-2'	
 	
 	
 	
 |	
 'RANDYS	
 DONUTS'	
 |	
 '2015-04-01'	
 
	
 	
 	
 	
 	
 	
 	
 	
 }	
 
	
 	
 	
 	
 	
 	
 	
 	
 def	
 flatxml	
 =	
 {	
 
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 data.call()	
 
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 data.build()	
 
	
 	
 	
 	
 	
 	
 	
 	
 }	
 
	
 	
 	
 	
 	
 	
 	
 	
 data.delegate	
 =	
 new	
 SpockLikeFlatXmlBuilder()	
 
	
 	
 	
 	
 	
 	
 	
 	
 tester.dataSet	
 =	
 new	
 FlatXmlDataSet(new	
 StringReader(flatxml.call()))	
 
	
 	
 	
 	
 	
 	
 	
 	
 tester.onSetup()	
 
	
 	
 	
 	
 	
 	
 	
 	
 expect:	
 
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 ...
dbspock

More Related Content

What's hot (20)

Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
Tokuhiro Matsuno
?
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
Yuuki Fukuda
?
厂别补蝉补谤2で作った俺たちのサービスの今
厂别补蝉补谤2で作った俺たちのサービスの今厂别补蝉补谤2で作った俺たちのサービスの今
厂别补蝉补谤2で作った俺たちのサービスの今
Koichi Sakata
?
これから始める厂辫谤颈苍驳の飞别产アプリケーション
これから始める厂辫谤颈苍驳の飞别产アプリケーションこれから始める厂辫谤颈苍驳の飞别产アプリケーション
これから始める厂辫谤颈苍驳の飞别产アプリケーション
土岐 孝平
?
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_bootGrails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Toshiaki Maki
?
こんなに使える!今どきの础笔滨ドキュメンテーションツール
こんなに使える!今どきの础笔滨ドキュメンテーションツールこんなに使える!今どきの础笔滨ドキュメンテーションツール
こんなに使える!今どきの础笔滨ドキュメンテーションツール
dcubeio
?
Spring I/O 2017での拡張のお話
Spring I/O 2017での拡張のお話Spring I/O 2017での拡張のお話
Spring I/O 2017での拡張のお話
Alisa Sasaki
?
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
sogdice
?
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
Toshiaki Maki
?
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerおれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Toshiaki Maki
?
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Toshiaki Maki
?
Spring oneを経験してよりよいwebサーヒ?スを作るために僕らか?取り組むこと(document編)(SpringRESTDocs)
Spring oneを経験してよりよいwebサーヒ?スを作るために僕らか?取り組むこと(document編)(SpringRESTDocs)Spring oneを経験してよりよいwebサーヒ?スを作るために僕らか?取り組むこと(document編)(SpringRESTDocs)
Spring oneを経験してよりよいwebサーヒ?スを作るために僕らか?取り組むこと(document編)(SpringRESTDocs)
Takahiro Fujii
?
Jsug 20160422 slides
Jsug 20160422 slidesJsug 20160422 slides
Jsug 20160422 slides
Yuichi Hasegawa
?
プログラム组んだら负け!実は贬罢惭尝/颁厂厂だけでできること2015夏
プログラム组んだら负け!実は贬罢惭尝/颁厂厂だけでできること2015夏プログラム组んだら负け!実は贬罢惭尝/颁厂厂だけでできること2015夏
プログラム组んだら负け!実は贬罢惭尝/颁厂厂だけでできること2015夏
Yusuke Hirao
?
13_B_5 Who is a architect?
13_B_5 Who is a architect?13_B_5 Who is a architect?
13_B_5 Who is a architect?
Atsushi Fukui
?
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsugSpring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Toshiaki Maki
?
20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public
Yoshiharu Hashimoto
?
【Camphor ×サイホ?ウス?】selenium勉強会
【Camphor ×サイホ?ウス?】selenium勉強会【Camphor ×サイホ?ウス?】selenium勉強会
【Camphor ×サイホ?ウス?】selenium勉強会
Yuki Okada
?
クラウド时代だから厂辫谤颈苍驳-搁别迟谤测フレームワーク
クラウド时代だから厂辫谤颈苍驳-搁别迟谤测フレームワーククラウド时代だから厂辫谤颈苍驳-搁别迟谤测フレームワーク
クラウド时代だから厂辫谤颈苍驳-搁别迟谤测フレームワーク
Y Watanabe
?
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
?
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
Tokuhiro Matsuno
?
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
Yuuki Fukuda
?
厂别补蝉补谤2で作った俺たちのサービスの今
厂别补蝉补谤2で作った俺たちのサービスの今厂别补蝉补谤2で作った俺たちのサービスの今
厂别补蝉补谤2で作った俺たちのサービスの今
Koichi Sakata
?
これから始める厂辫谤颈苍驳の飞别产アプリケーション
これから始める厂辫谤颈苍驳の飞别产アプリケーションこれから始める厂辫谤颈苍驳の飞别产アプリケーション
これから始める厂辫谤颈苍驳の飞别产アプリケーション
土岐 孝平
?
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_bootGrails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Toshiaki Maki
?
こんなに使える!今どきの础笔滨ドキュメンテーションツール
こんなに使える!今どきの础笔滨ドキュメンテーションツールこんなに使える!今どきの础笔滨ドキュメンテーションツール
こんなに使える!今どきの础笔滨ドキュメンテーションツール
dcubeio
?
Spring I/O 2017での拡張のお話
Spring I/O 2017での拡張のお話Spring I/O 2017での拡張のお話
Spring I/O 2017での拡張のお話
Alisa Sasaki
?
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
sogdice
?
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
Toshiaki Maki
?
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerおれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Toshiaki Maki
?
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Toshiaki Maki
?
Spring oneを経験してよりよいwebサーヒ?スを作るために僕らか?取り組むこと(document編)(SpringRESTDocs)
Spring oneを経験してよりよいwebサーヒ?スを作るために僕らか?取り組むこと(document編)(SpringRESTDocs)Spring oneを経験してよりよいwebサーヒ?スを作るために僕らか?取り組むこと(document編)(SpringRESTDocs)
Spring oneを経験してよりよいwebサーヒ?スを作るために僕らか?取り組むこと(document編)(SpringRESTDocs)
Takahiro Fujii
?
プログラム组んだら负け!実は贬罢惭尝/颁厂厂だけでできること2015夏
プログラム组んだら负け!実は贬罢惭尝/颁厂厂だけでできること2015夏プログラム组んだら负け!実は贬罢惭尝/颁厂厂だけでできること2015夏
プログラム组んだら负け!実は贬罢惭尝/颁厂厂だけでできること2015夏
Yusuke Hirao
?
13_B_5 Who is a architect?
13_B_5 Who is a architect?13_B_5 Who is a architect?
13_B_5 Who is a architect?
Atsushi Fukui
?
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsugSpring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Toshiaki Maki
?
20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public
Yoshiharu Hashimoto
?
【Camphor ×サイホ?ウス?】selenium勉強会
【Camphor ×サイホ?ウス?】selenium勉強会【Camphor ×サイホ?ウス?】selenium勉強会
【Camphor ×サイホ?ウス?】selenium勉強会
Yuki Okada
?
クラウド时代だから厂辫谤颈苍驳-搁别迟谤测フレームワーク
クラウド时代だから厂辫谤颈苍驳-搁别迟谤测フレームワーククラウド时代だから厂辫谤颈苍驳-搁别迟谤测フレームワーク
クラウド时代だから厂辫谤颈苍驳-搁别迟谤测フレームワーク
Y Watanabe
?
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
?

Similar to Jsug2015 summer spring適用におけるハ?ット?ノウハウとヘ?ターフ?ラクティス (20)

いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0
?
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis
小川 昌吾
?
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
apkiban
?
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
Takuya Iwatsuka
?
アジャイル开発&罢贵厂导入
アジャイル开発&罢贵厂导入アジャイル开発&罢贵厂导入
アジャイル开発&罢贵厂导入
You&I
?
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理
You&I
?
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
Yusuke Suzuki
?
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール?環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール?環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール?環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール?環境篇>」
Yusuke Suzuki
?
業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules
Hiroki Kondo
?
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
Kenichi Tatsuhama
?
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
InnovationSprint2011
?
Lightning componentとlightning design system
Lightning componentとlightning design systemLightning componentとlightning design system
Lightning componentとlightning design system
Noriko Iwai
?
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
?
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsサイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOps
Shuhei Eda
?
Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!
Hasegawa Yusuke
?
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
Tomoharu ASAMI
?
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
?
アジャイルソフトウェア开発の道具箱
アジャイルソフトウェア开発の道具箱アジャイルソフトウェア开発の道具箱
アジャイルソフトウェア开発の道具箱
Koichi ITO
?
実戦厂肠补濒补
実戦厂肠补濒补実戦厂肠补濒补
実戦厂肠补濒补
Yuto Suzuki
?
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
mirer
?
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0
?
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis
小川 昌吾
?
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
apkiban
?
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
Takuya Iwatsuka
?
アジャイル开発&罢贵厂导入
アジャイル开発&罢贵厂导入アジャイル开発&罢贵厂导入
アジャイル开発&罢贵厂导入
You&I
?
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理
You&I
?
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
Yusuke Suzuki
?
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール?環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール?環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール?環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール?環境篇>」
Yusuke Suzuki
?
業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules
Hiroki Kondo
?
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
Kenichi Tatsuhama
?
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
InnovationSprint2011
?
Lightning componentとlightning design system
Lightning componentとlightning design systemLightning componentとlightning design system
Lightning componentとlightning design system
Noriko Iwai
?
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
?
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsサイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOps
Shuhei Eda
?
Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!
Hasegawa Yusuke
?
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
Tomoharu ASAMI
?
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
?
アジャイルソフトウェア开発の道具箱
アジャイルソフトウェア开発の道具箱アジャイルソフトウェア开発の道具箱
アジャイルソフトウェア开発の道具箱
Koichi ITO
?
実戦厂肠补濒补
実戦厂肠补濒补実戦厂肠补濒补
実戦厂肠补濒补
Yuto Suzuki
?
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
mirer
?

Recently uploaded (11)

LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?

Jsug2015 summer spring適用におけるハ?ット?ノウハウとヘ?ターフ?ラクティス