SlideShare une entreprise Scribd logo
1  sur  118
Télécharger pour lire hors ligne
R1-7 [BOF]
Spring Frameworkの今
(2013年版)
JJUG CCC Fall 2013
2013/11/09
槙 俊明 (@making)
自己紹介
•

@making

•

大手SIerでR&D

•

JJUG幹事

•

金魚本(http://amzn.to/JavaEE6)を一部翻訳

•

http://blog.ik.am

•

公私ともにSpringユーザー
[宣伝] はじめてのBootstrap
•

なぜか畑違いのBootstrap3入門の本書きました

•

11月末 工学社より出版(1900円)
Java EEも好きです!

http://www.slideshare.net/makingx
今日のコンテンツ
•

Spring Frameworkとは

•

最近のSpring Ecosystemを紹介

•

Spring 4の紹介

•

Spring FrameworkによるWebアプリ
のアーキテクチャ

•

Spring Framework or Java EE ?
今日のコンテンツ
前半:最新動向の話

•

Spring Frameworkとは

•

最近のSpring Ecosystemを紹介

•

Spring 4の紹介

•

Spring FrameworkによるWebアプリ

後半:エンタープライズ寄りな話?

のアーキテクチャ
•

Spring Framework or Java EE ?
Spring Frameworkとは
Spring Frameworkとは
•

Javaでエンタープライズ開発するためのオープン
ソースのフルスタックフレームワーク

•

2013年 開発元VMWare → Pivotalにスピンアウト

•

2013年 Springの象徴であるRob Jonsonが退社
→TypeSafeへ

•

安定バージョンは現在3.2.5
Spring Frameworkとは
•

DI x AOPで注目され、重厚なJ2EEのアンチテー
ゼとして2004年に登場
!

!

•

Web(MVC), DataAccess, Security, Batch,
Integration, Mobile, …

•

サブプロジェクトが増え、Java EEより肥大化?
Spring Frameworkとは

•

(基本的な)後方互換性

•

一貫性、対称性のある設計ポリシー
これ重要!
そしてVersion 4へ
•

現在Spring4開発中
•

4.0.0.RC1公開

•

Java8, Java EE 7サポート
(WebSocket等)
Springは今も進化中
Pivotalとは

•

割愛
http://spring.io

公式サイトが
リニューアル!
http://spring.io/guides

サンプルアプリ
学習コンテンツ
多数 (40件)!
STSから簡単にサンプルを試せる
基本的な内容は書籍で

http://bit.ly/Spring3Book
Spring Ecosystemの紹介
Spring Ecosystem
IDE
Spring Tool Suite (STS)
RAD

Starter

Spring Roo
Web

Spring XD

Spring WebFlow

Spring
Security

OAuth

Spring MVC

Spring
Security

Social

Big Data

Security

Spring Data Rest
Spring Mobile

Spring Boot

DataAccess

Spring Hadoop
Batch

Spring Data

MongoDB
Spring Data
JPA

Spring Batch

Enterprise
Integration

Spring
Integration

Core
Spring DI

Spring AOP

Spring TX

Spring Social

Github
Spring Social

Facebook
Spring Social

Twitter
Spring Ecosystem
今日のスコープ

IDE
Spring Tool Suite (STS)

RAD

Starter
Spring Boot

Spring Roo
Web

Spring XD

Spring Data
Rest

Spring WebFlow

Spring
Security
OAuth

Spring MVC

Spring
Security

Spring Mobile

Social

Big Data

Security
DataAccess

Spring Hadoop
Batch

Spring Data

MongoDB
Spring Data
JPA

Spring Batch

Enterprise
Integration

Spring
Integration

Core
Spring DI

Spring AOP

Spring TX

Spring Social

Github
Spring Social

Facebook
Spring Social

Twitter
[参考] 公式のスタック図
http://spring.io/docs
Spring DI x AOP
•

成熟度:★★★ version: 3.2.5.RELEASE

•

Spring Ecosystemのコア

•

JavaConfigサポート(@Configuration, @Bean)
•

•

No XML hell!

JSR-330サポート(@Inject, @Named)
JSR-330によるDI コード例
package sample;	
import javax.inject.Named;	

!
@Named	
public class GreetingService {	
	 public String hello(String message) {	
	 	 return "Hello " + message + "!";	
	 }	
}
package sample;	
import javax.inject.Inject;	

!
public class MyApplication {	
	 @Inject	
	 GreetingService service;	
	 public void run(String message) {	
	 	 System.out.println(service.hello(message));	
	 }	
}
JSR-330によるDI コード例
@Configuration	
@ComponentScan(basePackages = "sample")	
public class AppConfig {	
	 @Bean	
	 MyApplication myApplication() {	
	 	 return new MyApplication();	
	 }	
}

デフォルトでscope=singleton
になるので注意
Google Guiceよりも簡単!

public class EntryPoint {	
	 public static void main(String[] args) {	
	 	 try (GenericApplicationContext context = new
AnnotationConfigApplicationContext(	
	 	 	 	 AppConfig.class);) {	
	 	 	 MyApplication app = context.getBean(MyApplication.class);	
	 	 	 app.run("World!");	
	 	 }	
	 }	
}
Spring MVC
• 成熟度:★★★

version: 3.2.4.RELEASE

• アクションベースな簡易なMVC

Webフレームワーク

• Strutsからの移行も容易
• アノテーションで簡単リクエストマッピング(JAX-RSとほとんど同

じ)
• ControllerとViewが奇麗に分離されるので、色々な出力形式に対応
• RESTもサポート(@RequestBody,

@ResponseBody)

• JavaConfigサポート(web.xmlもなくせる)
コード例
@Controller	
@RequestMapping("users")	
public class UserController {	
	
@Inject	
	
UserService userService;	

!

	
	
	
	
	
	
}

Spring MVCの
Controller

@RequestMapping(value = "list", method = RequestMethod.GET)	
public String list(Model model) {	
	
List<User> users = userService.findAll();	
	
model.addAttribute("users", users);	
	
return "users/list";	
}	

@Service @Transactional	
public class UserServiceImpl implements UserService {	
	
@Inject	
	
UserRepository userRepository;	

!

	
	
	
	

@Override	
public List<User> findAll() {	
	
return userRepository.findAll();	
}	

	
	
	
	
}

@Override	
public void save(User user) {	
	
userRepository.save(user);	
}	

!
コード例
<bean id="viewResolver"	
class="org.springframework.web.servlet.view.InternalResourceViewResolver">	
<property name="prefix" value="/WEB-INF/views/" />	
<property name="suffix" value=".jsp" />	
</bean>

XMLの例を出したが、

<table>	
<tr>	
<th>Name</th><th>Email</th>	
</tr>	
<c:forEach items="${users}" var="user">	
<tr>	
<td><c:out value="${user.name}"></c:out></td>	
<td><c:out value="${user.email}"></c:out></td>	
</tr>	
</c:forEach>	
</table>

JavaConfigでも書ける
コード例(REST版)
@Controller 	
@RequestMapping("users")	
public class UserRestController {	
	 @Inject UserService userService;	

!
	
	
	
	
	

@RequestMapping(method = RequestMethod.GET)	
@ResponseBody	
public List<User> getUsers() {	
	 return userService.findAll();	
}	

!
	
	
	
	
	
	

@RequestMapping(method = RequestMethod.POST)	
@ResponseBody	
public ResponseEntity<User> postUsers(@RequestBody User user) {	
	 userService.save(user);	
	 return new ResponseEntity<User>(user, HttpStatus.CREATED);	
}	

!
	
	
	
	
	
}

@RequestMapping(value = "/{id}", method = RequestMethod.GET)	
@ResponseBody	
public User getUser(@PathVariable("id") Integer id) {	
	 return userService.findOne(id);	
}
実行結果
いろいろなViewに対応
•

Tiles, FreeMarker, Velocityなどの老舗テンプレートエン
ジンから最近人気のものまで各種取り

•

ThymeLeaf (ThymeLeafViewResolver)

•

Mustache (MustacheViewResolver)

•

Handlebars (HandlebarsViewResolver)

•

Scalate (ScalateViewResolver)

えております。
http://www.thymeleaf.org/

ThymeLeaf
<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">	
<property name="templateEngine" ref="templateEngine" />	
</bean>	

!
<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">	
<property name="templateResolver" ref="templateResolver" />	
</bean>	

!
<bean id="templateResolver"	
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">	
<property name="prefix" value="/WEB-INF/templates/" />	
<property name="suffix" value=".html" />	
<property name="templateMode" value="HTML5" />	
</bean>
<table>	
<tr>	
<th>Name</th>	
<th>Email</th>	
</tr>	
<tr th:each="user : ${users}">	
<td th:text="${user.name}">John</td>	
<td th:text="${user.email}">hoge@example.com</td>	
</tr>	
</table>
http://mustache.github.io/

Mustache
<bean	
class="org.springframework.web.servlet.view.mustache.MustacheViewResolver">	
<property name="prefix" value="/WEB-INF/templates/" />	
<property name="suffix" value=".html" />	
<property name="templateLoader">	
<bean	
class="org.springframework.web.servlet.view.mustache.MustacheTemplateLoader" />	
</property>	
</bean>
<table>	
<tr>	
<th>Name</th>	
<th>Email</th>	
</tr>	
{{#users}}	
<tr>	
<td>{{name}}</td>	
<td>{{email}}</td>	
</tr>	
{{/users}}	
</table>
http://handlebarsjs.com/

Handlebars
<bean	
class="com.github.jknack.handlebars.springmvc.HandlebarsViewResolver">	
<property name="prefix" value="/WEB-INF/templates/" />	
<property name="suffix" value=".hbs" />	
</bean>

<table>	
<tr>	
<th>Name</th>	
<th>Email</th>	
</tr>	
{{#users}}	
<tr>	
<td>{{name}}</td>	
<td>{{email}}</td>	
</tr>	
{{/users}}	
</table>
Spring Security
• 成熟度:★★★

version: 3.1.4.RELEASE

• 設定ファイルベースの認証・認可フレームワーク
• カスタマイズ性も高い
• Form認証、Basic認証、JAAS認証、OpenID認証、LDAP認証、CAS認証・・・
• ユーザー情報は、DB、メモリ、設定ファイル・・・から
• URL認可、アノテーションでメソッド認可、JSPタグ認可
• パスワードエンコード
• SHA-2+ソルト+ストレッチのような汎用アルゴリズムだけでなくBCryptのよ

うなパスワード用アルゴリズムもサポート(BCrypt推奨)
• 3.2からJavaConfigサポート
コード例

•

割愛・・
Spring Security OAuth
• 成熟度:★☆☆

version: 1.0.5.RELEASE

• Spring

SecurityにOAuth1, 2による認証・認可機能を追加

• OAuth

Provider

• grant_type=authorization_code,implicit,refresh_token,

client_credentials, passwordの認証サーバーを設定
ファイルのみで実現
• OAuth

Client

• REST

Clientの拡張
コード例

•

時間がないので略・・

ドキュメント http://projects.spring.io/spring-security-oauth/docs/oauth2.html
サンプルアプリhttps://github.com/spring-projects/spring-security-oauth/tree/
master/samples/oauth2
Spring Data
• 成熟度:★★☆
• データアクセスの抽象化ライブラリ
• オブジェクトマッピング、Repository、Templateを提供
• いろいろなデータストアをサポートするサブプロジェクトからなる
• Spring

Data Commons

• Spring

Data JPA

• Spring

Data MongoDB, Redis, Neo4j, REST, Hadoop, HBase,

Solr, ...
• 各データストアにRepositoryやTemplateを提供してBoilerplateをな

くす
従来のJPAプログラミング
@Entity	
public class Customer {	
	 @Id	
	 @GeneratedValue	
	 private Long id;	
	 private String firstname;	
	 private String lastname;	
// omitted…	
}

毎回同じような
コード・・・→

@Repository	
public class CustomerRepository {	
	
@PersistenceContext EntityManager em;	
	
public Customer findOne(Long id) {	
	
	
return em.find(Customer.class, id);	
	
}	
	
public List<Customer> findAll(int page, int size) {	
	
	
TypedQuery<Customer> query = em	
	
	
	
	
.createQuery("SELECT x FROM Customer x", Customer.class)	
	
	
	
	
.setFirstResult(page * size).setMaxResults(size);	
	
	
return query.getResultList();	
	
}	
	
@Transactional	
	
public Customer save(Customer customer) {	
	
	
if (customer.getId() == null) {	
	
	
	
em.persist(customer);	
	
	
	
return customer;	
	
	
} else {	
	
	
	
return em.merge(customer);	
	
	
}	
	
}	
	
public List<Customer> findByLastname(String lastname) {	
	
	
TypedQuery<Customer> query = em.createQuery(	
	
	
	
	
"SELECT x FROM Customer x WHERE x.lastname = :lastname",	
	
	
	
	
Customer.class).setParameter("lastname", lastname);	
	
	
return query.getResultList();	
	
}	
}
Spring Data JPAを使うと・・
import org.springframework.data.jpa.repository.JpaRepository;	
import org.springframework.data.jpa.repository.Query;	
import org.springframework.data.repository.query.Param;	

!
public interface CustomerRepository extends JpaRepository<Customer, Long> {	
	 @Query("SELECT x FROM Customer x WHERE x.lastname = :lastname")	
	 public List<Customer> findByLastname(@Param("lastname") String lastname);	
}

•

たったこれだけ!

•

CRUD系のメソッド、ページング・ソート処理は自動で
実装される

•

JPAプログラミングの簡素化!
Spring Data REST
•

成熟度:★☆☆ version: 1.1.0.M1

•

Spring DataのRepositoryをREST APIにエクス
ポート(@RestResource)
•

現在はSpringMVCのみサポートしていrが、将
来的にはServlet非依存を目指している

•

HypermediaLinkの作成
コード例
Repositoryにアノテーションをつけるだけで
REST APIとしてExportされる
実行結果

Entityの情報だけでなく
HypermediaLinkも出力される
Spring Boot
•成熟度:☆☆☆

version: 0.5.0-M5

•Springアプリケーションを高速に開発して起動するためのプロ

ジェクト?
•スタンドアローンでアプリケーションを起動できる(java

-jar)

•サーバー組み込み。Traditionalなwar作成も可能
•Groovyも対応
•オススメ設定のautoconfigure群
•色々なpreconfiguredなJavaConfigが用意されており、特定の

条件を満たすと読み込まれる
コード例
import org.springframework.boot.SpringApplication;	
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration;	
import org.springframework.stereotype.Controller;	
import org.springframework.web.bind.annotation.RequestMapping;	
import org.springframework.web.bind.annotation.ResponseBody;	

!
@Controller	
@EnableAutoConfiguration	
public class Application {	

!
	
	
	
	
	

@RequestMapping("/")	
@ResponseBody	
String home() {	
	 return "HelloWorld!";	
}	

!
	
	
	
}

public static void main(String[] args) {	
	 SpringApplication.run(Application.class, args);	
}
速習 Spring Boot
$ brew tap pivotal/tap
$ brew install springboot
$ which spring
/usr/local/bin/spring
$ spring run app.groovy
// app.groovy	
@Controller	
class Application {	
	 @RequestMapping("/")	
	 @ResponseBody	
	 def String hoge() {	
	 	 "HelloWorld!"	
	 }	
}

初回のみ
for Macユーザー

ソースコード全文。import文不要
25分経過?

Spring 4
4.0.0.RC1の新機能
•

Java 8サポート

•

WebSocketサポート

•

さらなるRESTサポート
Java 8サポート
•

Lamada式サポート

•

JSR-310サポート(@DateTimeFormat)
Lambdaサポート
@Inject	
JdbcTemplate jdbcTemplate;	

!

Before

public void foo() {	
	 User user = jdbcTemplate.queryForObject(	
	 	 	 "SELECT userId, userName from User", 	
new RowMapper<User>() {	
	 	 	 	 public User mapRow(java.sql.ResultSet rs, int rowNum)	
	 	 	 	 	 	 throws java.sql.SQLException {	
	 	 	 	 	 return new User(rs.getLong(1), rs.getString(2));	
	 	 	 	 }	
	 	 	 }	
);	 	
}
Lambdaサポート
@Inject	
JdbcTemplate jdbcTemplate;	

!

Before

public void foo() {	
	 User user = jdbcTemplate.queryForObject(	
	 	 	 "SELECT userId, userName from User", 	
new RowMapper<User>() {	
	 	 	 	 public User mapRow(java.sql.ResultSet rs, int rowNum)	
	 	 	 	 	 	 throws java.sql.SQLException {	
	 	 	 	 	 return new User(rs.getLong(1), rs.getString(2));	
	 	 	 	 }	
	 	 	 }	
);	 	
}

After
Lambdaサポート
@Inject	
JdbcTemplate jdbcTemplate;	

!

Before

public void foo() {	
	 User user = jdbcTemplate.queryForObject(	
	 	 	 "SELECT userId, userName from User", 	
new RowMapper<User>() {	
	 	 	 	 public User mapRow(java.sql.ResultSet rs, int rowNum)	
	 	 	 	 	 	 throws java.sql.SQLException {	
	 	 	 	 	 return new User(rs.getLong(1), rs.getString(2));	
	 	 	 	 }	
	 	 	 }	
);	 	
}

After
Lambdaサポート
@Inject	
JdbcTemplate jdbcTemplate;	

!

Before

public void foo() {	
	 User user = jdbcTemplate.queryForObject(	
	 	 	 "SELECT userId, userName from User", 	
new RowMapper<User>() {	
	 	 	 	 public User mapRow(java.sql.ResultSet rs, int rowNum)	
	 	 	 	 	 	 throws java.sql.SQLException {	
	 	 	 	 	 return new User(rs.getLong(1), rs.getString(2));	
	 	 	 	 }	
	 	 	 }	
);	 	
}

SpringにはTemplateパターン+

コールバックな機能が多いので
ラムダ式の恩恵が大きい!

After
JSR-310サポート
WebSocketサポート
• JSR-356
• Java

EE 7に取り込まれる!

• 先日Tomcat7も対応しました(7.0.47)
• 今日ハンズオンもありましたね
JSR-356
import javax.websocket.OnMessage;	
import javax.websocket.server.ServerEndpoint;	

!
@ServerEndpoint("/echo")	
public class EchoEndpoint {	

!
	
	
	
	
}

@OnMessage	
public String echoText(String name) {	
	 return name;	
}
JSR-356
import javax.websocket.OnMessage;	
import javax.websocket.server.ServerEndpoint;	

!
@ServerEndpoint("/echo")	
public class EchoEndpoint {	

!
	
	
	
	
}

@OnMessage	
public String echoText(String name) {	
	 return name;	
}	

一見簡単そう
だがしかし
•

Rossen Stoyanchev氏(Spring MVCのメイン開発者)曰く
•

http://rstoyanchev.github.io/s2gx2013-introwebsocket-spring-framework-4/

•

http://rstoyanchev.github.io/s2gx2013-websocketbrowser-apps-with-spring
http://rstoyanchev.github.io/s2gx2013intro-websocket-spring-framework-4/#29
http://rstoyanchev.github.io/s2gx2013intro-websocket-spring-framework-4/#30
SpringによるWebSocket対応
•

JSR-356だけじゃなく、Tomcat、Jetty独自実装にも対応

•

WebSocketだけでなくレガシーブラウザでもfallbackでき
るようにSockJSに対応

•

ハイレベルなメッセージング仕様のSTOMPに対応
Simple Text Oriented Message Protocol
http://stomp.github.io/
Simpleな例(JSR-356版)
import javax.inject.Inject;	
import javax.websocket.OnMessage;	
import javax.websocket.server.ServerEndpoint;	

!
import org.springframework.web.socket.server.endpoint.SpringConfigurator;	

!
@ServerEndpoint(value = "/echo", configurator = SpringConfigurator.class)	
public class EchoEndpoint {	
	 @Inject	
	 EchoService echoService;	

!
	
	
	
	
}

@OnMessage	
public String echoText(String name) {	
	 return echoService.getMessage(name);	
}
Simpleな例(JSR-356版)
import javax.inject.Inject;	
import javax.websocket.OnMessage;	
import javax.websocket.server.ServerEndpoint;	

!
import org.springframework.web.socket.server.endpoint.SpringConfigurator;	

!
@ServerEndpoint(value = "/echo", configurator = SpringConfigurator.class)	
public class EchoEndpoint {	
	 @Inject	
	 EchoService echoService;	

JSR-356の拡張ポイント

!
	
	
	
	
}

@OnMessage	
public String echoText(String name) {	
	 return echoService.getMessage(name);	
}	

(Tomcatでも動く!)
Simpleな例(JSR-356非依存版)
import org.springframework.web.socket.TextMessage;	
import org.springframework.web.socket.WebSocketSession;	
import org.springframework.web.socket.adapter.TextWebSocketHandlerAdapter;	

!
public class EchoWebSocketHandler extends TextWebSocketHandlerAdapter {	

!
	
	

@Inject	
private EchoService echoService;	

!
	
	
	
	
	
	
}	

@Override	
public void handleTextMessage(WebSocketSession session, TextMessage message)	
	 	 throws Exception {	
	 String echoMessage = echoService.getMessage(message.getPayload());	
	 session.sendMessage(new TextMessage(echoMessage));	
}
Simpleな例(JSR-356非依存版)の
設定ファイル
@Configuration	
@EnableWebMvc	
@EnableWebSocket	
public class WebConfig extends WebMvcConfigurerAdapter implements	
	 	 WebSocketConfigurer {	
	 @Override	
	 public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {	
	 	 registry.addHandler(echoWebSocketHandler(), "/echo");	
	 	 // ...	
	 }	
	 @Bean	
	 public WebSocketHandler echoWebSocketHandler() {	
	 	 return new EchoWebSocketHandler();	
	 }	
	 // ...	
}
Simpleな例(JSR-356非依存版)の
設定ファイル
@Configuration	
@EnableWebMvc	
@EnableWebSocket	
public class WebConfig extends WebMvcConfigurerAdapter implements	
	 	 WebSocketConfigurer {	
	 @Override	
	 public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {	
	 	 registry.addHandler(echoWebSocketHandler(), "/echo");	
	 	 // ...	
	 }	
	 @Bean	
	 public WebSocketHandler echoWebSocketHandler() {	
	 	 return new PerConnectionWebSocketHandler(EchoWebSocketHandler.class);	
	 }	
	 // ...	
}

Decorationパターンを使える
SockJSサポート
@Configuration	
@EnableWebMvc	
@EnableWebSocket	
public class WebConfig extends WebMvcConfigurerAdapter implements	
	 	 WebSocketConfigurer {	
	 @Override	
	 public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {	
	 	 registry.addHandler(echoWebSocketHandler(), "/echo").withSockJS();	
	 	 // ...	
	 }	
	 @Bean	
	 public WebSocketHandler echoWebSocketHandler() {	
	 	 return new EchoWebSocketHandler();	
	 }	
	 // ...	
}

ちょい足し
SockJSクライアント
var ws = new SockJS("ws://localhost:8080/echo");	
!

ws.onopen = function (event) {	
// ...	
};	
!

ws.onmessage = function (event) {	
// ...	
};	
!

ws.onclose = function (event) {	
// ...	
};
STOMP
•

WebSocket上のメッセージングプロトコル
Command
Destination

Body
STOMP対応
import org.springframework.messaging.handler.annotation.MessageMapping;	
import org.springframework.messaging.handler.annotation.SendTo;	
import org.springframework.stereotype.Controller;	

!
@Controller	
public class GreetingController {	

!
	
	
	
	
	
}

@MessageMapping("/greeting")	
@SendTo("/topic/greetings")	
public String greet(String greeting) {	
	 return "[" + new Date().getTime() + "]: " + greeting;	
}
普通のHTTPからのpushできる
import javax.inject.Inject;	

!
import
import
import
import

org.springframework.messaging.simp.SimpMessagingTemplate;	
org.springframework.stereotype.Controller;	
org.springframework.web.bind.annotation.RequestMapping;	
org.springframework.web.bind.annotation.RequestMethod;	

!
@Controller	
public class GreetingController {	
	 @Inject	
	 SimpMessagingTemplate template;	

!
	
	
	
	
	
}

@RequestMapping(value = "/greeting", method = RequestMethod.POST)	
public void greet(String greeting) {	
	 String text = "[" + new Date().getTime() + "]: " + greeting;	
	 template.convertAndSend("/topic/greeting", text);	
}
HTTP用処理とSTOMP用処理の共存
import
import
import
import

org.springframework.messaging.handler.annotation.MessageMapping;	
org.springframework.stereotype.Controller;	
org.springframework.web.bind.annotation.RequestMapping;	
org.springframework.web.bind.annotation.RequestMethod;	

!
@Controller	
public class GreetingController {	

!
	
	
	

@RequestMapping(value = "/greeting", method = RequestMethod.POST)	
public void httpGreet(String text) {	
	 // HTTP用の処理	

	

}	

!
	
	
	

@MessageMapping(value = "/greeting")	
public void stompGreet(String text) {	
	 // STOMP用の処理	

	
}

}
HTTP用処理とSTOMP用処理の共存
import
import
import
import

org.springframework.messaging.handler.annotation.MessageMapping;	
WebSocketにもSpring MVCが使える
org.springframework.stereotype.Controller;	
org.springframework.web.bind.annotation.RequestMapping;	
org.springframework.web.bind.annotation.RequestMethod;	

!
@Controller	
public class GreetingController {	

!
	
	
	

@RequestMapping(value = "/greeting", method = RequestMethod.POST)	
public void httpGreet(String text) {	
	 // HTTP用の処理	

	

}	

!
	
	
	

@MessageMapping(value = "/greeting")	
public void stompGreet(String text) {	
	 // STOMP用の処理	

	
}

}	

@RequestMappingから想起しやすい
Springの良いところ
•

WebSocketにもSpring MVCが使える
•

•

→ 一貫性のある設計

@RequestMappingから想起しやすい
•

→ 対称性のある設計
続きはWebで!

http://rstoyanchev.github.io/s2gx2013-websocketbrowser-apps-with-spring
サンプル
•

https://github.com/rstoyanchev/spring-websocketportfolio

http://assets.spring.io/wp/WebSocketBlogPost.html
さらなるRESTサポート

•

@RestController

•

AsyncRestTemplate

•

Hypermedia Link
今後は
•

JMS 2.0

•

JTA 1.2

•

JPA 2.1

•

Bean Validation 1.1

•

JSR-236 Concurrency Utilities

•

JSR-107 JCache

•

をサポートする予定!
35分経過?

Spring Frameworkによる
Webアプリのアーキテクチャ
Springによる伝統的なWebアプリ
UI & Presentation
Layer

Service Layer

Persistence Layer

Spring DI x AOP

Spring MVC
Bean Validation

Spring
(Tx)

Spring Data JPA
JPA

Spring Security
DB
Browser/Client
最近のWebアプリ
Spring DI x AOP

Spring MVC
Bean Validation

Spring

Spring Data JPA
JPA
最近のWebアプリ
Spring DI x AOP

Spring MVC
Bean Validation

Router

Spring

REST API
Model/
Collection

View
Template

JavaScript Framework
(Backbone.js, Angular.js, Knockout.js, …)

Spring Data JPA
JPA
最近のWebアプリ
Spring DI x AOP

Spring MVC
Bean Validation

Spring

REST API

Spring Data JPA
JPA
Thin化するサーバーサイド

Router

Model/
Collection

View
Template

JavaScript Framework
(Backbone.js, Angular.js, Knockout.js, …)

Rich化するクライアントサイド
Webアプリの雛形を使ってQuick
Start
•

http://bit.ly/SpringTemplate

•

STSのproject template機能でアプリの雛形生成

•

Spring MVC + Spring Data JPA + Spring Security +
Bootstrap3を使用したCRUDアプリが1分でできます

(※ダウンロード時間除く)
STS 3.3.0まででしか動かなかった・・

•

最新のSTS 3.4.0ではTemplateを作れません

•

うちに帰ってMaven Archetype作ります・・・
40分経過?

Spring Framework or Java EE
Springによる伝統的なWebアプリ
UI & Presentation
Layer

Service Layer

Persistence Layer

Spring DI x AOP

Spring MVC
Bean Validation

Spring
(Tx)

Spring Data JPA
JPA

Spring Security
DB
Browser/Client
Java EEによる伝統的なWebアプリ
UI & Presentation
Layer

Service Layer

Persistence Layer

CDI and DI (JSR 299, 330)

JAX-RS
JSF

EJB

JPA

Bean Validation

Apache Shiro?
DB
Browser/Client
Springによる最近のWebアプリ
Spring DI x AOP

Spring MVC
Bean Validation

Router

Spring

REST API
Model/
Collection

View
Template

JavaScript Framework
(Backbone.js, Angular.js, Knockout.js, …)

Spring Data JPA
JPA
ちなみに・・・
•

http://blog.ik.am ぼくのブログもこのアーキテクチャ
REST API
GET /entries/xxx
BackBone.js

Spring MVC

Browser

{“entry_id”:”xxx”,”content”:”Hello”}

http://blog.ik.am/#/entries/193 参照
Java EEによる最近のWebアプリ
CDI and DI (JSR 299, 330)

JAX-RS
Bean Validation

Router

EJB

REST API
Model/
Collection

View
Template

JavaScript Framework
(Backbone.js, Angular.js, Knockout.js, …)

JPA
Java EEによる最近のWebアプリ
CDI and DI (JSR 299, 330)

JAX-RS
Bean Validation

Router

EJB

JPA

REST API
Model/
Collection

View
Template

JavaScript Framework
(Backbone.js, Angular.js, Knockout.js, …)

Java EEでもできるんです
アーキテクチャの違い
•

Spring FrameworkでもJava EEでもアー
キテクチャに大きな違いはない

•

アーキテクチャ的にはどちらを選んでも
よい
アーキテクチャの違い
•

Spring FrameworkでもJava EEでもアー
キテクチャに大きな違いはない

•

アーキテクチャ的にはどちらを選んでも
よい → Java標準に従った方が良い?
既存Springユーザーはどうするか?

• いつJava

EEに移行するの?
いつやるの?
いつやるの?

•今でじゃない
新規Javaユーザーは?

•

正直、Java EE 7で開発すれば良いかな、と思う。
新規Javaユーザーは?

•

正直、Java EE 7で開発すれば良いかな、と思う。

OracleによるGlassFish4の商用サポートは
なくなったのでご注意ください!
だれがこれからSpringを使う?
•

すでにSpring(古いバージョン)を利用しているユーザー

•

Springに関するノウハウがあれば、技術の連続性を考え
て、まだSpringを使い続けると良いと思う。

ただし、Springは新しいバージョン(3.2.x)で
正しい使い方をしましょう
単なるjarのupdateだけならNG
Springの不安
•

Pivotalが将来Springに対する投資を縮小したと
したら、Springを支えるエンジニアが離れ、開発
が停滞するかもしれない。

こういう心配のあるかたはJava EEをオススメします!
Spring FrameworkからJava EEへ
•

今後のWebアプリケーションはThin
Server化し、サーバーサイドはREST API
ベースになっていく?

•

Spring MVCでREST APIを開発するスタ
イルからJAX-RSで開発するスタイルへ移
行していけばよい?
Spring FrameworkからJava EEへ
•

もしくはJAX-RSの拡張仕様としてアクションベースの
フレームワークがSpring MVCベースで策定されれば統
一されるだろう・・(Springも徐々にJSR対応している)
•

Bean Validation (JSR 303)

•

DI (JSR 330)

•

JBatch (JSR 352)

•

WebSocket (JSR 356) など・・・
Java EEの課題
•

1つ1つの仕様(JSF, JAX-RS, EJB, JPA, …)が独立・完結
しているため、組み合わせる際に重複する機能が多い

•

新機能が発表されてから商用利用できるまでに時間がか
かる

•

組み合わせのベストプラクティスがわかりにくい

→ Spring Frameworkはベストプラクティス化が進んで
いる(書籍や意味のあるサンプルなど)
Spring Framework or Java EE個人的まとめ
Javaを

YES

Spring以外のJavaフレーム
ワークにもあてはまるフロー

使っている

だと思う

今

NO

Springを使って
いる
Spring
の将来に不安な
し

新しい機能
を使いたい

Java EE

Spring
アーキテクチャ選定のアンチパターン
•

中途半端なフレームワーク組み合わせ (Spring + JAX-RS(Jersey)など)
•

•

•

コア(DI)にSpring Frameworkを採用するなら、Springで統一
Java EEを選択するなら標準仕様で組み合わせるべき

Bridge(連携ライブラリ)が存在すると、いくつかの問題が起こる
•

機能が制限される

•

バージョンアップしづらくなる

•

学習コストが高い
まさかのSpring特需?

•

本発表で興味をもっていただけば幸いです
Springを触ってみたいけど・・

•

どこから始めれば良いかわからない・・・

•

日本語情報が少ない・・・

•

業務でつかえるの・・・?
そんなあなたに耳寄りな情報!
宣伝
•

近日中(あと2人月くらい・・)に
Spring Frameworkのベストプラク
ティスガイドライン(日本語、英語)
をGithubで公開予定
宣伝
• 業務でSpring

Frameworkを使うためのノウハウを公開しちゃいます

• アプリケーションのレイヤー化と各レイヤーの実装方法
• DBアクセス
• 入力チェック
• 例外ハンドリング
• ロギング
• メッセージ管理
• ファイルアップロード
• ・・・・

多分公開する
まとめ

•

Springはまだまだ進化中

•

Bootstrap3本がでたら買ってください!

Contenu connexe

Tendances

Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスJsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスYoichi KIKUCHI
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会Yuki Okada
 
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerおれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerToshiaki Maki
 
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分松田 千尋
 
laravel x モバイルアプリ
laravel x モバイルアプリlaravel x モバイルアプリ
laravel x モバイルアプリMasaki Oshikawa
 
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot StarterSpring starterによるSpring Boot Starter
Spring starterによるSpring Boot StarterRyosuke Uchitate
 
Java web application testing
Java web application testingJava web application testing
Java web application testingTokuhiro Matsuno
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
【B-1】kintoneでお手軽コールセンター!
【B-1】kintoneでお手軽コールセンター!【B-1】kintoneでお手軽コールセンター!
【B-1】kintoneでお手軽コールセンター!Sakae Saito
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Yusuke Wada
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能kimulla
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクションTakahiro Okumura
 
楽天トラベルとSpring(Spring Day 2016)
楽天トラベルとSpring(Spring Day 2016)楽天トラベルとSpring(Spring Day 2016)
楽天トラベルとSpring(Spring Day 2016)Rakuten Group, Inc.
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと心 谷本
 
AzureでLaravel動かしてみた
AzureでLaravel動かしてみたAzureでLaravel動かしてみた
AzureでLaravel動かしてみたKeiji Kamebuchi
 
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpSeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpYahoo!デベロッパーネットワーク
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情Kazuhiro Serizawa
 

Tendances (20)

Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスJsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
 
Jsug 20160422 slides
Jsug 20160422 slidesJsug 20160422 slides
Jsug 20160422 slides
 
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerおれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
 
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分
 
laravel x モバイルアプリ
laravel x モバイルアプリlaravel x モバイルアプリ
laravel x モバイルアプリ
 
OpenShift のある生活
OpenShift のある生活OpenShift のある生活
OpenShift のある生活
 
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot StarterSpring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
 
Java web application testing
Java web application testingJava web application testing
Java web application testing
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
【B-1】kintoneでお手軽コールセンター!
【B-1】kintoneでお手軽コールセンター!【B-1】kintoneでお手軽コールセンター!
【B-1】kintoneでお手軽コールセンター!
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
 
楽天トラベルとSpring(Spring Day 2016)
楽天トラベルとSpring(Spring Day 2016)楽天トラベルとSpring(Spring Day 2016)
楽天トラベルとSpring(Spring Day 2016)
 
ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
 ぼく(たち)のかんがえた最新のJS開発環境 #scripty04 ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
 
AzureでLaravel動かしてみた
AzureでLaravel動かしてみたAzureでLaravel動かしてみた
AzureでLaravel動かしてみた
 
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpSeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
 

En vedette

Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53Toshiaki Maki
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント土岐 孝平
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発terahide
 
Cloud Foundy Java Client V 2.0 #cf_tokyo
Cloud Foundy Java Client V 2.0 #cf_tokyoCloud Foundy Java Client V 2.0 #cf_tokyo
Cloud Foundy Java Client V 2.0 #cf_tokyoToshiaki Maki
 
Concourse CI Meetup Demo
Concourse CI Meetup DemoConcourse CI Meetup Demo
Concourse CI Meetup DemoToshiaki Maki
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷JavaToshiaki Maki
 
Spring Boot 1.3 News #渋谷Java
Spring Boot 1.3 News #渋谷JavaSpring Boot 1.3 News #渋谷Java
Spring Boot 1.3 News #渋谷JavaToshiaki Maki
 
Introduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷JavaIntroduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷JavaToshiaki Maki
 
Install Concourse CI with BOSH
Install Concourse CI with BOSHInstall Concourse CI with BOSH
Install Concourse CI with BOSHToshiaki Maki
 
今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_kToshiaki Maki
 
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsugSpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsugToshiaki Maki
 
Short Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoShort Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoToshiaki Maki
 
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoImplement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoToshiaki Maki
 
From Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjugFrom Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjugToshiaki Maki
 
Team Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyoTeam Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyoToshiaki Maki
 
REST with Spring Boot #jqfk
REST with Spring Boot #jqfkREST with Spring Boot #jqfk
REST with Spring Boot #jqfkToshiaki Maki
 
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編なべ
 
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoToshiaki Maki
 

En vedette (20)

Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発
 
Spring.io
Spring.ioSpring.io
Spring.io
 
Cloud Foundy Java Client V 2.0 #cf_tokyo
Cloud Foundy Java Client V 2.0 #cf_tokyoCloud Foundy Java Client V 2.0 #cf_tokyo
Cloud Foundy Java Client V 2.0 #cf_tokyo
 
Concourse CI Meetup Demo
Concourse CI Meetup DemoConcourse CI Meetup Demo
Concourse CI Meetup Demo
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
Spring Boot 1.3 News #渋谷Java
Spring Boot 1.3 News #渋谷JavaSpring Boot 1.3 News #渋谷Java
Spring Boot 1.3 News #渋谷Java
 
Introduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷JavaIntroduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷Java
 
Install Concourse CI with BOSH
Install Concourse CI with BOSHInstall Concourse CI with BOSH
Install Concourse CI with BOSH
 
今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k
 
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsugSpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
 
Short Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoShort Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyo
 
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoImplement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyo
 
From Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjugFrom Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjug
 
Team Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyoTeam Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyo
 
REST with Spring Boot #jqfk
REST with Spring Boot #jqfkREST with Spring Boot #jqfk
REST with Spring Boot #jqfk
 
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
 
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyo
 

Similaire à Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework

Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Kentaro Iizuka
 
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.jsHiroki Toyokawa
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_GebNobuhiro Sue
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法Nagao Hiroaki
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tipsyoshikawa_t
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Yuji Kubota
 
Casual convergence
Casual convergenceCasual convergence
Casual convergenceazukiwasher
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotationEIICHI KIMURA
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)Yoshiharu Hashimoto
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りましたTomoharu ASAMI
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成Tomoki Oyamatsu
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressAkinari Tsugo
 

Similaire à Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework (20)

Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
Ext.direct
Ext.directExt.direct
Ext.direct
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.js
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
Casual convergence
Casual convergenceCasual convergence
Casual convergence
 
Rx java x retrofit
Rx java x retrofitRx java x retrofit
Rx java x retrofit
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りました
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + Express
 

Plus de Toshiaki Maki

From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugFrom Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugToshiaki Maki
 
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoToshiaki Maki
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tServerless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tToshiaki Maki
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1Toshiaki Maki
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Toshiaki Maki
 
Spring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & MicrometerSpring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & MicrometerToshiaki Maki
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpOpen Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpToshiaki Maki
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugToshiaki Maki
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Toshiaki Maki
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoToshiaki Maki
 
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootWhy PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootToshiaki Maki
 
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jpZipkin Components #zipkin_jp
Zipkin Components #zipkin_jpToshiaki Maki
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07Toshiaki Maki
 
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoSpring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoToshiaki Maki
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsugToshiaki Maki
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugToshiaki Maki
 
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Toshiaki Maki
 
Managing your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIManaging your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIToshiaki Maki
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...Toshiaki Maki
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techToshiaki Maki
 

Plus de Toshiaki Maki (20)

From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugFrom Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
 
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tServerless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
 
Spring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & MicrometerSpring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & Micrometer
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpOpen Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjp
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyo
 
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootWhy PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring Boot
 
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jpZipkin Components #zipkin_jp
Zipkin Components #zipkin_jp
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
 
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoSpring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
 
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
 
Managing your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIManaging your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CI
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
 

Dernier

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Dernier (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework