SlideShare a Scribd company logo
1 of 81
Download to read offline
Spring Bootで
チャットツールを作りながら
Webの仕組みを理解しよう!
Java女子部
presents
2016.5.21
#jjug_ccc #ccc_m3
本日のメンバー
#jjug_ccc #ccc_m3
■ちか
Java歴7年くらい。
金融系のSIer
■ゆう
最近Javaを始めたばかりの
初心者。
エンジニア歴は2年ちょい。
講師講師
#jjug_ccc #ccc_m3
■えりこ
WebアプリケーションSE
エンジニア8年生。
■あや
ラーメン二郎が好きな
エンジニア2年生。
チューター
#jjug_ccc #ccc_m3
■とぅん
Java暦半年ぐらいのエンジニ
ア4年生。品質管理とか
やってます。
■よこな
JJUG司会兼チューター。
エンジニア4年生。
チューター
#jjug_ccc #ccc_m3
ワークショップの概要説明
#jjug_ccc #ccc_m3
チャットツールの制作を通じて
Webの仕組みを理解する!
今回の目標本日の目標
#jjug_ccc #ccc_m3
・基礎的な概念説明
(Webの仕組み、Spring Bootについて)
・ハンズオン導入・WebSocketについて
・ハンズオン
・まとめ
全体の流れ
#jjug_ccc #ccc_m3
Webの仕組みについて
#jjug_ccc #ccc_m3
情報をやりとりする通信網のこと。
この通信網によって
世界中とやりとり
することができる。
そもそもインターネットとは?
#jjug_ccc #ccc_m3
クライアントが情報を要求すると、
サーバから情報が返ってくる。
クライアント サーバ
リクエスト
レスポンス
通信方法について
#jjug_ccc #ccc_m3
Spring Bootについて
#jjug_ccc #ccc_m3
Java Spring
Java JavaEE
Ruby Rails
Python Django
言語を扱いやすく
パッケージングしたもの = フレームワーク
Springって何?
#jjug_ccc #ccc_m3
Spring BootJava Spring
Java JavaEE
Ruby Rails
Python Django
フレームワーク(コンポーネントの集合)を
さらに使いやすくしたフレームワーク
じゃあ、Spring Bootって何?
#jjug_ccc #ccc_m3
・アノテーション
・DIコンテナ
・AOP
 
アノテーションでクラス・メソッド・変数に目印を
つけてフレームワークに解釈させる
⇒ 設定ファイルの代わりになる
class Chat
@RestController
Spring Bootの特徴
#jjug_ccc #ccc_m3
class Chat
アノテーション名 記載場所 説明
@SpringBootAppli
cation
Mainクラス パッケージ内のクラスと設定を自
動的に読み込む
@RestController クラス WebAPI用のコントローラー
@Configuration クラス 設定クラス
ソースコードでSpringの設定を実
装できる
@RequestMapping クラス
メソッド
URLに紐づけて、アクセスできるよ
うに設定する
@Autowired メソッド
フィールド
実装クラスを自動的にインジェク
ションする(DIする)
基本のアノテーション(Spring)
#jjug_ccc #ccc_m3
ハンズオン 1章
-文字列を返すWebアプリケーションを
作ってみよう!-
リポジトリ
https://github.com/java-women/ChatToolForBeginners/
プロジェクト
 chat-exercise  ハンズオン作業用
 chat-tutorial  完成形
環境構築手順 
https://git.io/vro1X
事前準備 1章
ブラウザ
アマゾンのリクエストページ
これから作るもの 1章
①リクエストを送信
③レスポンスを受信
②リクエストを受け取り
ごにょごにょ処理する
商品の詳細ページ
ブラウザ
http://localhost:8080/javajo
Hello World!
これから作るもの 1章
①リクエストを送信
③レスポンスを受信
②リクエストを受け取り
ごにょごにょ処理する
ここを
作るよ
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,
args);
}
}
javajo > App.java 1章
Spring Bootの起動クラスを確認する
HelloControllerクラスにもアノテーションを
付与します。
@RestController
public class HelloController {
  }
1章javajo.controller > HelloController.java 1章
・helloメソッドを作成します。
・helloメソッドにアノテーションを付与します。
String hello() {
return "Hello World!";
}
@RequestMapping(value = "/javajo")
String hello() {
return "Hello World!";
}
javajo.controller > HelloController.java 1章
アプリケーションを起動して、
http://localhost:8080/javajo/
にアクセスしてみよう!
1章javajo.controller > HelloController.java 1章
Eclipse
IntelliJApp.javaを
右クリック>run
maven>bootrun
起動方法
下記画面が表示されれば、成功!
1章Hello World動作確認 1章
ブラウザ
サーバ
@RestController
public class HelloController
{
@RequestMapping(value
= "/javajo")
String hello() {
return "Hello World!";
}
}
http://localhost:8080
/javajo
Hello World!
解説 1章
WebSocketについて
#jjug_ccc #ccc_m3
WebSocket
聞いたことある人?
サーバ・クライアント間で接続が確立された
ら、双方向通信(サーバからもクライアントから
もデータの送信)が行える技術仕様
WebSocketとは?
#jjug_ccc #ccc_m3
WebSocket(双方向通信)
Client A
#jjug_ccc #ccc_m3
WebSocket(双方向通信)
Client A
#jjug_ccc #ccc_m3
こんにちは
WebSocket(双方向通信)
Client A
#jjug_ccc #ccc_m3
こんにちは
ClientB
WebSocket(双方向通信)
Client A
#jjug_ccc #ccc_m3
こんにちは
ClientB
こんばんはこんばんは
こんばんは
WebSocket(双方向通信)
Client A
#jjug_ccc #ccc_m3
こんにちは
ClientB
こんばんはこんばんは
こんばんは
※1度接続が確立されればデータがリアルタイム
で送受信可能!
※同じサーバに接続しているユーザはデータを共
有する
ハンズオン2章
-チャットを作ってみよう!-
#jjug_ccc #ccc_m3
チャットツールの作成内容 2章
①WebSocketへの接続要求
⑥WebSocketコネクション切断
④メッセージ送信
⑤メッセージ受信
②WebSocketコネクション確立
③メッセージ受信時の挙動設定
チャットツールの作成内容 2章
Controller
@MessageMapping("/message")
@SendTo(value= "/topic/messages")
MessageBroker
/message
/app/message
ChatForm
@EnableWebSocketMessageBroker
/topic/messages
<dependencies>
・・・・・省略・・・・・
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket
</artifactId>
</dependency>
・・・・・省略・・・・・
</dependencies>
2章pom.xml の内容を確認する 2章
<dependencies>
・・・・・省略・・・・・
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket
</artifactId>
</dependency>
・・・・・省略・・・・・
</dependencies>
pom.xml の内容を確認する
pom.xml
35行目あたり
WebSocketを利用
するのに必要!!
2章
javajo.form > ChatForm.java 2章
public class ChatForm {
・・・・・省略・・・・・
}
public class ChatForm {
private String name;
private String message;
・・・・・省略・・・・・
}
javajo.form > ChatForm.java 2章
クライアントから
受け取った値を格納する
フィールドを作成
public class ChatForm {
・・・・・省略・・・・・
/**
public String getName() {
return name;
}
・・・・・省略・・・・・
public void setMessage(String message) {
this.message = message;
}
**/
}
javajo.form > ChatForm.java 2章
フィールドにアクセスする
getter/setterを作成します
public class ChatForm {
・・・・・省略・・・・・
/**
public String getName() {
return name;
}
・・・・・省略・・・・・
public void setMessage(String message) {
this.message = message;
}
**/
}
javajo.form > ChatForm.java 2章
すでに実装済みなので、
コメントアウトを外す
だけでOK
public class ChatForm {
・・・・・省略・・・・・
public String getName() {
return name;
}
・・・・・省略・・・・・
public void setMessage(String message) {
this.message = message;
}
}
javajo.form > ChatForm.java 2章
すでに実装済みなので、
コメントアウトを外す
だけでOK
チャットツールの作成内容 2章
①WebSocketへの接続要求
⑥WebSocketコネクション切断
④メッセージ送信
⑤メッセージ受信
②WebSocketコネクション確立
③メッセージ受信時の挙動設定
public class StompConfig {
}
javajo.config > StompConfig.java 2章
クライアントからの
メッセージを処理する
クラスを作成します
public class StompConfig extends
AbstractWebSocketMessageBrokerConfigurer {
}
javajo.config > StompConfig.java 2章
メッセージを処理する
抽象クラスを継承
@Configuration
public class StompConfig extends
AbstractWebSocketMessageBrokerConfigurer {
}
javajo.config > StompConfig.java 2章
設定ファイルを表す
アノテーションを付与
@Configuration
@EnableWebSocketMessageBroke
public class StompConfig extends
AbstractWebSocketMessageBrokerConfigurer {
}
javajo.config > StompConfig.java 2章
WebSocketを扱うのに
必要なアノテーションを
付与
public class StompConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints
(StompEndpointRegistry registry) {
registry.addEndpoint("endpoint");
}
}
javajo.config > StompConfig.java 2章
エンドポイントの
登録メソッドを作成
チャットツールの作成内容 2章
ChatController
@MessageMapping("/message")
@SendTo(value= "/topic/messages")
MessageBroker
/message
/app/message
@EnableWebSocketMessageBroker
/topic/messages
ここを
作るよ ChatForm
public class StompConfig extends AbstractWebSocketMessageBrokerConfigurer {
・・・・・省略(registerStompEndpointsの直後)・・・・・
@Override
public void configureMessageBroker(MessageBrokerRegistry
registry) {
registry.setApplicationDestinationPrefixes("/app");
registry.enableSimpleBroker("/topic");
}
}
javajo.config > StompConfig.java 2章
メッセージブローカーの
設定メソッドを作成
チャットツールの作成内容 2章
①WebSocketへの接続要求
⑥WebSocketコネクション切断
④メッセージ送信
⑤メッセージ受信
②WebSocketコネクション確立
③メッセージ受信時の挙動設定ここを
作るよ
チャットツールの作成内容 2章
ChatController
@MessageMapping("/message")
@SendTo(value= "/topic/messages")
MessageBroker
/message
/app/message
ChatForm
@EnableWebSocketMessageBroker
/topic/messages
ここを
作るよ
public class ChatController {
ChatForm greet(ChatForm chatForm) {
return chatForm;
}
}
javajo.controller > ChatController.java 2章
チャットのコントロー
ラークラスを作成します
@RestController
public class ChatController {
ChatForm greet(ChatForm chatForm) {
return chatForm;
}
}
javajo.controller > ChatController.java 2章
コントローラーの
アノテーションを付与
@RestController
public class ChatController {
@MessageMapping(value = "/message" )
ChatForm greet(ChatForm chatForm) {
return chatForm;
}
}
javajo.controller > ChatController.java 2章
メッセージを受け付ける
MessageMappingを付与
@RestController
public class ChatController {
@MessageMapping(value = "/message" )
@SendTo(value = "/topic/messages")
ChatForm greet(ChatForm chatForm) {
return chatForm;
}
}
javajo.controller > ChatController.java 2章
処理結果を送信する宛先
SendToを付与
チャットツールの作成内容 2章
①WebSocketへの接続要求
⑥WebSocketコネクション切断
④メッセージ送信
⑤メッセージ受信
②WebSocketコネクション確立
③メッセージ受信時の挙動設定
ここだよ
チャットツールの作成内容 2章
ここだよ
クライアント側(Stomp.js) 2章
resources/static/js/Stomp.js
提供されているライブラリを使用
詳しくは、
http://jmesnil.net/stomp-websocket/doc/
クライアント側のメッセージ制御は
JavaScriptライブラリを利用する
クライアント側(javajo.js) 2章
ChatStomp.prototype.connect = function ()
{
var socket = new WebSocket('ws://' +
location.host + '/endpoint');
・・・・・省略・・・・・
}; 23行目
public class StompConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints
(StompEndpointRegistry registry) {
registry.addEndpoint("endpoint");
}
}
javajo.config > StompConfig.java 2章
エンドポイントの
登録メソッドを作成
チャットツールの作成内容 2章
①WebSocketへの接続要求
⑥WebSocketコネクション切断
④メッセージ送信
⑤メッセージ受信
②WebSocketコネクション確立
③メッセージ受信時の挙動設定
ここだよ
チャットツールの作成内容 2章
ここだよ
クライアント側(javajo.js) 2章
ChatStomp.prototype.onConnected = function
(frame) {
console.log('Connected: ' + frame);
this.stompClient.subscribe('/topic/messages',this.
onSubscribeGreeting.bind(this));
 this.setConnected(true);
};
34行目
public class StompConfig extends AbstractWebSocketMessageBrokerConfigurer {
・・・・・省略(registerStompEndpointsの直後)・・・・・
@Override
public void configureMessageBroker(MessageBrokerRegistry
registry) {
registry.setApplicationDestinationPrefixes("/app");
registry.enableSimpleBroker("/topic");
}
}
javajo.config > StompConfig.java 2章
メッセージブローカーの
設定メソッドを作成
チャットツールの作成内容 2章
①WebSocketへの接続要求
⑥WebSocketコネクション切断
④メッセージ送信
⑤メッセージ受信
②WebSocketコネクション確立
③メッセージ受信時の挙動設定ここだよ
チャットツールの作成内容 2章
ここだよ
クライアント側(javajo.js) 2章
ChatStomp.prototype.sendName =
function () {
・・・・・省略・・・・・
this.stompClient.send("/app/message", {},
   JSON.stringify(json_message));
};
73行目
public class StompConfig extends AbstractWebSocketMessageBrokerConfigurer {
・・・・・省略(registerStompEndpointsの直後)・・・・・
@Override
public void configureMessageBroker(MessageBrokerRegistry
registry) {
registry.setApplicationDestinationPrefixes("/app");
registry.enableSimpleBroker("/topic");
}
}
javajo.config > StompConfig.java 2章
メッセージブローカーの
設定メソッドを作成
@RestController
public class ChatController {
@MessageMapping(value = "/message" )
ChatForm greet(ChatForm chatForm) {
return chatForm;
}
}
javajo.controller >ChatController.java 2章
メッセージを受け付ける
MessageMappingを付与
チャットツールの作成内容 2章
ChatController
@MessageMapping("/message")
@SendTo(value= "/topic/messages")
MessageBroker
/message
/app/message
@EnableWebSocketMessageBroker
/topic/messages
ChatForm
チャットツールの作成内容 2章
①WebSocketへの接続要求
⑥WebSocketコネクション切断
④メッセージ送信
⑤メッセージ受信
②WebSocketコネクション確立
③メッセージ受信時の挙動設定
ここだよ
チャットツールの作成内容 2章
ここだよ
クライアント側(javajo.js) 2章
ChatStomp.prototype.disconnect =
function () {
if (this.stompClient) {
this.stompClient.disconnect();
this.stompClient = null;
}
this.setConnected(false);
};
88行〜94行目
ハンズオンはここまで!
実際に動かしてみよう!
#jjug_ccc #ccc_m3
1. chat-exerciseのプロジェクトを実行!
2. http://localhost:8080/chat
にアクセス!
ローカルで動かしてみようローカルで動かしてみよう
3. ユーザ名を入力してConnectボタンクリック!
 
4.メッセージを入力してSendボタン
をクリック!
#jjug_ccc #ccc_m3
まとめ
#jjug_ccc #ccc_m3
・「Hello World」を出力するアプリケーションを
Spring Bootで作りました
・チャットを作りながらWebSocketについて学
びました
まとめ
#jjug_ccc #ccc_m3
お疲れ様でした
ありがとうございました
【講師】
ゆう・ちか
【チューター】
えりこ・あや・とぅん・よこな
#jjug_ccc #ccc_m3

More Related Content

What's hot

Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Shinya Okano
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Yahoo!デベロッパーネットワーク
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Satoshi Kubo
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Yahoo!デベロッパーネットワーク
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring土岐 孝平
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Koichi Sakata
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyTakakiyo Tanaka
 
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集matsu_chara
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web ServiceアプリケーションAngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーションssuser070fa9
 
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用apkiban
 
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャJJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャKaname Motoyama
 

What's hot (20)

Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
 
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web ServiceアプリケーションAngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
 
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
 
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介  #streamctjpSpring Cloud Data Flow の紹介  #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
 
[BurpSuiteJapan]Burp Suite導入・操作
[BurpSuiteJapan]Burp Suite導入・操作[BurpSuiteJapan]Burp Suite導入・操作
[BurpSuiteJapan]Burp Suite導入・操作
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャJJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
 

Viewers also liked

Java女子部勉強会参加した感想
Java女子部勉強会参加した感想Java女子部勉強会参加した感想
Java女子部勉強会参加した感想Java女子部
 
JavaOne 2015 - Java SE Update
JavaOne 2015 - Java SE UpdateJavaOne 2015 - Java SE Update
JavaOne 2015 - Java SE UpdateYuichi Sakuraba
 
Rancher LT Talk 20170126
Rancher LT Talk 20170126Rancher LT Talk 20170126
Rancher LT Talk 20170126Tetsurou Yano
 
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015Hikari Fukasawa
 
サーバサイドエンジニアが知りたいIoTの話
サーバサイドエンジニアが知りたいIoTの話サーバサイドエンジニアが知りたいIoTの話
サーバサイドエンジニアが知りたいIoTの話Yuki Takahashi
 
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージHBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージLINE Corporation
 
Java女子部について
Java女子部についてJava女子部について
Java女子部についてJava女子部
 
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。Takakiyo Tanaka
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話Shohei Okada
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjugYuji Kubota
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求hajime funaki
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Hiroyuki Ohnaka
 
2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2Kazuhiro Wada
 
Java libraries you can't afford to miss
Java libraries you can't afford to missJava libraries you can't afford to miss
Java libraries you can't afford to missAndres Almiray
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Kosuke Kida
 
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.JustSystems Corporation
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)Ikuru Kanuma
 

Viewers also liked (20)

Java女子部勉強会参加した感想
Java女子部勉強会参加した感想Java女子部勉強会参加した感想
Java女子部勉強会参加した感想
 
JavaOne 2015 - Java SE Update
JavaOne 2015 - Java SE UpdateJavaOne 2015 - Java SE Update
JavaOne 2015 - Java SE Update
 
Rancher LT Talk 20170126
Rancher LT Talk 20170126Rancher LT Talk 20170126
Rancher LT Talk 20170126
 
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
 
サーバサイドエンジニアが知りたいIoTの話
サーバサイドエンジニアが知りたいIoTの話サーバサイドエンジニアが知りたいIoTの話
サーバサイドエンジニアが知りたいIoTの話
 
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージHBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
 
Java女子部について
Java女子部についてJava女子部について
Java女子部について
 
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話
 
とにかく楽してVue.jsでTypeScriptを使いたい
とにかく楽してVue.jsでTypeScriptを使いたいとにかく楽してVue.jsでTypeScriptを使いたい
とにかく楽してVue.jsでTypeScriptを使いたい
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
 
2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2
 
Java libraries you can't afford to miss
Java libraries you can't afford to missJava libraries you can't afford to miss
Java libraries you can't afford to miss
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
 
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
 
Jjug ccc
Jjug cccJjug ccc
Jjug ccc
 

Similar to Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!

JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているKoichi Sakata
 
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行Yoshitaka Kawashima
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1Y Watanabe
 
REST with Spring Boot #jqfk
REST with Spring Boot #jqfkREST with Spring Boot #jqfk
REST with Spring Boot #jqfkToshiaki Maki
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotationEIICHI KIMURA
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷JavaToshiaki Maki
 
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
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレットTakashi Makino
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!yoshikawa_t
 
20140712 knockoutjs-hands-on-in-osaka
20140712 knockoutjs-hands-on-in-osaka20140712 knockoutjs-hands-on-in-osaka
20140712 knockoutjs-hands-on-in-osakaSeiji Noro
 
Maven2 プラグイン入門
Maven2 プラグイン入門Maven2 プラグイン入門
Maven2 プラグイン入門guestd4898b
 
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21Takakiyo Tanaka
 
20111204 WebBroser Control Tips for Windows Phone
20111204 WebBroser Control Tips for Windows Phone20111204 WebBroser Control Tips for Windows Phone
20111204 WebBroser Control Tips for Windows PhoneKenji Wada
 
Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Kentaro Iizuka
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)Yoshiharu Hashimoto
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~normalian
 
20140517 knockoutjs hands-on
20140517 knockoutjs hands-on20140517 knockoutjs hands-on
20140517 knockoutjs hands-onSeiji Noro
 
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)JPCERT Coordination Center
 

Similar to Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう! (20)

JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
 
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
 
REST with Spring Boot #jqfk
REST with Spring Boot #jqfkREST with Spring Boot #jqfk
REST with Spring Boot #jqfk
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
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)
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレット
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!
 
20140712 knockoutjs-hands-on-in-osaka
20140712 knockoutjs-hands-on-in-osaka20140712 knockoutjs-hands-on-in-osaka
20140712 knockoutjs-hands-on-in-osaka
 
Maven2 プラグイン入門
Maven2 プラグイン入門Maven2 プラグイン入門
Maven2 プラグイン入門
 
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
 
20111204 WebBroser Control Tips for Windows Phone
20111204 WebBroser Control Tips for Windows Phone20111204 WebBroser Control Tips for Windows Phone
20111204 WebBroser Control Tips for Windows Phone
 
Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
20140517 knockoutjs hands-on
20140517 knockoutjs hands-on20140517 knockoutjs hands-on
20140517 knockoutjs hands-on
 
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
 

Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!