Submit Search
WebSocketでリアルタイム処理をする
Jul 12, 2013
20 likes
23,304 views
龍一 田中
WebSocketを使って位置情報のトラッキングをリアルタイム処理するシステムを紹介。Heroku+Node Ninjaを使用。
Read more
1 of 36
Download now
Downloaded 53 times
Recommended
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
Yahoo!デベロッパーネットワーク
Apache Kafka Meetup Japan #1 http://connpass.com/event/32293/ 発表資料
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
RESTful APIであることにこだわらなければ皆(主に開発者)がハッピーになれるかもしれません。
各種データベースの特徴とパフォーマンス比較
各種データベースの特徴とパフォーマンス比較
株式会社オプト 仙台ラボラトリ
ビッグデータとデータマート【タガヤス その2】登壇資料
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Kouhei Sutou
ビッグデータは現実的な時間で処理できてこそ活きます。処理時間はデータ処理アルゴリズムの計算量だけで決まり…ません!適切なノードにデータを配置しないとそもそもデータ処理できませんが、大量ノードが協調するビッグデータ処理ではデータ移動コストを無視できません。Apache Arrow Flightを使えばネットワーク帯域限界まで高速にデータ転送できます。 このセッションではApache Arrow Flightの仕組みを説明します。また、分散計算プラットフォームApache Arrow BallistaがApache Arrow Flightをどのように利用しているかも紹介します。
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
NTT Tech Conference #2 にて話した資料 時間が足りなかったので全部は話せなかった。
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
2017/05/26のDB比較セミナーで使用した資料です。 NoSQLであるRedisについて説明しています。
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316
Nozomi Kurihara
https://kafka-apache-jp.connpass.com/event/77889/
アジャイル開発の基礎知識 抜粋版
アジャイル開発の基礎知識 抜粋版
ESM SEC
2016年7月13日の「Agile Japan 2016 サテライト in 宮崎」で使用した資料です。 1日研修で使用している資料の抜粋版となっています。
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Daichi Koike
kamakura.go #5 の発表資料です
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
Proof Summit 2015 <http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
NTT DATA Technology & Innovation
IAM Roles Anywhereのない世界とある世界 (2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料) 2022年11月24日(木) NTTデータ 奥村 康晃
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
SNSのアカウントを見つけてくれるツール「Blackbird」のレビュースライドです。
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
The First Elasticsearch Cluster 2018-07-25 JJUG ナイトセミナー「Elasticsearch特集」
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Container Runtime Meetup #3 発表資料 (2021/1/28) https://runtime.connpass.com/event/198071/
インフラCICDの勘所
インフラCICDの勘所
Toru Makabe
Cloud Native Days Tokyo 2018
Guide To AGPL
Guide To AGPL
Mikiya Okuno
SugarCRM勉強会#009にて発表したスライドです。
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
Kentaro Yoshida
Prestoの導入メリットのほか、HiveQLからPrestoへの書き換えTipsを紹介します
Snowflake Architecture and Performance
Snowflake Architecture and Performance
Mineaki Motohashi
BigData-JAWS 勉強会#11 発表資料 https://jawsug-bigdata.connpass.com/event/77463/ ■概要 AWS re:Invent2017でSnowflake Computingがプラチナスポンサーをしていましたが、その会社が提供しているクラウドネイティブDWHであるSnowflakeを紹介します。GartnerやForresterの2017年のレポートで何度もみたので実際に検証してみました。 ■コンテンツ ・Snowflakeがどのようなサービスか ・設計/管理/運用を行う上で必要となるアーキテクチャ ・ベンダがUnlimited Concurrencyと謳っているクエリの同時実行性能を確保するための仕組みや DataSharingというユニークなデータ共有機能 ・実際に使っていく中で見えてきた製品の設計思想 ・Snowflake/Redshift/BigQueryの性能を出すためのポイント
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
2021/04/15に行われたAmazon Game Tech Conference 2021のセッション資料です。ゲームのお客様向けにAuroraとDynamoDBを題材としたアーキテクチャパターンをご紹介しています。
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
2014年9月9日開催の『サーバ/インフラエンジニア養成読本 ログ収集〜可視化編』 出版記念!執筆者が語る大講演会! での発表スライドです。
Keycloakの動向
Keycloakの動向
Yuichi Nakamura
2018/7/13 OSSセキュリティ技術の会勉強会の資料
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
NTT Tech Conference 2022 での「Dockerからcontainerdへの移行」の発表資料です https://ntt-techconf.connpass.com/event/241061/ 訂正: P2. . 誤: ``` Ship docker run -it --rm alpine Run docker push ghcr.io/ktock/myalpine:latest ``` 正: ``` Ship docker push ghcr.io/ktock/myalpine:latest Run docker run -it --rm alpine ```
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
WebSocket及びWebRTCの技術紹介資料です。 WebSocket : 概要、標準化状況、HTTPとの通信量比較、PUSH方式の比較、ブラウザの対応状況 WebRTC : 概要、標準化状況、通信(PeerConnection)確立までの流れ、利用事例、ブラウザの対応状況 (NTTアドバンステクノロジ(NTT-AT))
AWS Black Belt Online Seminar 2018 AWS上の位置情報
AWS Black Belt Online Seminar 2018 AWS上の位置情報
Amazon Web Services Japan
2018/2/6 実施分 AWS Black Belt Online Seminar 2018 AWS上の位置情報
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Apache Kafka Meetup Japan #3 https://kafka-apache-jp.connpass.com/event/58619/ 発表資料
技術者として抑えておきたい Power BI アーキテクチャ
技術者として抑えておきたい Power BI アーキテクチャ
Yugo Shimizu
2018年9月8日 Power BI 勉強会 第9回 Dev Track で清水が話したセッションのスライドです。
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
Toshiaki Maki
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 Spring Fest 2018
react-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのか
暁 三宅
+ create-react-appが利用しているreact-scriptは、webpackで何をしているのか + `eject` コマンドで挿入される設定ファイル群はreact-scriptのものなので、設定を変更するときの参考に
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
Kotaro Ogino
ソフトウェア品質シンポジウム2014での経験発表のスライドです。 http://www.juse.jp/sqip/symposium/detail/day1/#session_A1-3 10/09追記:ブログ記事書きました http://kokotatata.hatenablog.com/entry/2014/10/08/111353 (色の表示がslideshare上で少し変になってますので、ダウンロードした方がよいかもしれません。) JaSSTではシステムテストを自動化するとバグ修正日数が改善するというメリットについてお話ししました。 http://www.slideshare.net/kotaroogino/jasst14-tokyo SQiPではメトリクスを分析する事で、テストの自動化にはどういった課題があるか問題提起を行ったり、我々が行っている改善の施策を客観的にお話ししました。
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
Rakuten Group, Inc.
安全で安心なWebサービスの継続的な改善をするために、開発、テスト、運用のサイクルを早いフローで実現する、DevOpsや継続的デリバリー、Infrastructure as Code などの開発手法がコミュニティで提案されています。その一方、企業文化や組織体系のためにうまく導入が進まないケースも多いです。 本セッションでは、楽天のDevとOpsのアラサーエンジニアが、開発・テスト・運用の三位一体の自動化でDevOpsを社内に導入したFearless Changeについてのストーリーをお話しします。 Developers Summit 2016 で発表資料です。 http://event.shoeisha.jp/devsumi/20160218/session/1041/
More Related Content
What's hot
(20)
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Daichi Koike
kamakura.go #5 の発表資料です
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
Proof Summit 2015 <http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
NTT DATA Technology & Innovation
IAM Roles Anywhereのない世界とある世界 (2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料) 2022年11月24日(木) NTTデータ 奥村 康晃
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
SNSのアカウントを見つけてくれるツール「Blackbird」のレビュースライドです。
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
The First Elasticsearch Cluster 2018-07-25 JJUG ナイトセミナー「Elasticsearch特集」
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Container Runtime Meetup #3 発表資料 (2021/1/28) https://runtime.connpass.com/event/198071/
インフラCICDの勘所
インフラCICDの勘所
Toru Makabe
Cloud Native Days Tokyo 2018
Guide To AGPL
Guide To AGPL
Mikiya Okuno
SugarCRM勉強会#009にて発表したスライドです。
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
Kentaro Yoshida
Prestoの導入メリットのほか、HiveQLからPrestoへの書き換えTipsを紹介します
Snowflake Architecture and Performance
Snowflake Architecture and Performance
Mineaki Motohashi
BigData-JAWS 勉強会#11 発表資料 https://jawsug-bigdata.connpass.com/event/77463/ ■概要 AWS re:Invent2017でSnowflake Computingがプラチナスポンサーをしていましたが、その会社が提供しているクラウドネイティブDWHであるSnowflakeを紹介します。GartnerやForresterの2017年のレポートで何度もみたので実際に検証してみました。 ■コンテンツ ・Snowflakeがどのようなサービスか ・設計/管理/運用を行う上で必要となるアーキテクチャ ・ベンダがUnlimited Concurrencyと謳っているクエリの同時実行性能を確保するための仕組みや DataSharingというユニークなデータ共有機能 ・実際に使っていく中で見えてきた製品の設計思想 ・Snowflake/Redshift/BigQueryの性能を出すためのポイント
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
2021/04/15に行われたAmazon Game Tech Conference 2021のセッション資料です。ゲームのお客様向けにAuroraとDynamoDBを題材としたアーキテクチャパターンをご紹介しています。
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
2014年9月9日開催の『サーバ/インフラエンジニア養成読本 ログ収集〜可視化編』 出版記念!執筆者が語る大講演会! での発表スライドです。
Keycloakの動向
Keycloakの動向
Yuichi Nakamura
2018/7/13 OSSセキュリティ技術の会勉強会の資料
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
NTT Tech Conference 2022 での「Dockerからcontainerdへの移行」の発表資料です https://ntt-techconf.connpass.com/event/241061/ 訂正: P2. . 誤: ``` Ship docker run -it --rm alpine Run docker push ghcr.io/ktock/myalpine:latest ``` 正: ``` Ship docker push ghcr.io/ktock/myalpine:latest Run docker run -it --rm alpine ```
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
WebSocket及びWebRTCの技術紹介資料です。 WebSocket : 概要、標準化状況、HTTPとの通信量比較、PUSH方式の比較、ブラウザの対応状況 WebRTC : 概要、標準化状況、通信(PeerConnection)確立までの流れ、利用事例、ブラウザの対応状況 (NTTアドバンステクノロジ(NTT-AT))
AWS Black Belt Online Seminar 2018 AWS上の位置情報
AWS Black Belt Online Seminar 2018 AWS上の位置情報
Amazon Web Services Japan
2018/2/6 実施分 AWS Black Belt Online Seminar 2018 AWS上の位置情報
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Apache Kafka Meetup Japan #3 https://kafka-apache-jp.connpass.com/event/58619/ 発表資料
技術者として抑えておきたい Power BI アーキテクチャ
技術者として抑えておきたい Power BI アーキテクチャ
Yugo Shimizu
2018年9月8日 Power BI 勉強会 第9回 Dev Track で清水が話したセッションのスライドです。
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
Toshiaki Maki
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 Spring Fest 2018
react-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのか
暁 三宅
+ create-react-appが利用しているreact-scriptは、webpackで何をしているのか + `eject` コマンドで挿入される設定ファイル群はreact-scriptのものなので、設定を変更するときの参考に
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Daichi Koike
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
NTT DATA Technology & Innovation
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
インフラCICDの勘所
インフラCICDの勘所
Toru Makabe
Guide To AGPL
Guide To AGPL
Mikiya Okuno
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
Kentaro Yoshida
Snowflake Architecture and Performance
Snowflake Architecture and Performance
Mineaki Motohashi
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
Keycloakの動向
Keycloakの動向
Yuichi Nakamura
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
AWS Black Belt Online Seminar 2018 AWS上の位置情報
AWS Black Belt Online Seminar 2018 AWS上の位置情報
Amazon Web Services Japan
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
技術者として抑えておきたい Power BI アーキテクチャ
技術者として抑えておきたい Power BI アーキテクチャ
Yugo Shimizu
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
Toshiaki Maki
react-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのか
暁 三宅
Viewers also liked
(11)
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
Kotaro Ogino
ソフトウェア品質シンポジウム2014での経験発表のスライドです。 http://www.juse.jp/sqip/symposium/detail/day1/#session_A1-3 10/09追記:ブログ記事書きました http://kokotatata.hatenablog.com/entry/2014/10/08/111353 (色の表示がslideshare上で少し変になってますので、ダウンロードした方がよいかもしれません。) JaSSTではシステムテストを自動化するとバグ修正日数が改善するというメリットについてお話ししました。 http://www.slideshare.net/kotaroogino/jasst14-tokyo SQiPではメトリクスを分析する事で、テストの自動化にはどういった課題があるか問題提起を行ったり、我々が行っている改善の施策を客観的にお話ししました。
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
Rakuten Group, Inc.
安全で安心なWebサービスの継続的な改善をするために、開発、テスト、運用のサイクルを早いフローで実現する、DevOpsや継続的デリバリー、Infrastructure as Code などの開発手法がコミュニティで提案されています。その一方、企業文化や組織体系のためにうまく導入が進まないケースも多いです。 本セッションでは、楽天のDevとOpsのアラサーエンジニアが、開発・テスト・運用の三位一体の自動化でDevOpsを社内に導入したFearless Changeについてのストーリーをお話しします。 Developers Summit 2016 で発表資料です。 http://event.shoeisha.jp/devsumi/20160218/session/1041/
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
Kotaro Ogino
JaSST'14 Tokyo での"システムテストの自動化による大規模分散検索プラットフォームの開発行程改善"という題目の事例発表です。 スライドに入りきらなかったコンセプトについてhttp://kokotatata.hatenablog.com/entry/2014/03/11/104240 に書いています。そちらもご参照ください。 --- 2014/03/08 08:00 文字のレイアウトのずれや配色の問題を修正
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
パーサ勉強会の資料です。
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
Toru Nayuki
2015年6月19日のUniRx勉強会のミニセッションのスライドです。
Interactive UI with UniRx
Interactive UI with UniRx
Yuto Iwashita
https://unirx.doorkeeper.jp/events/25218 UniRx勉強会発表スライド 触って楽しい、見て面白いUIを、UniRxを使って作る方法を紹介。 先日リリースした弊社タイトルの事例を交えながらお話します。
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
Hirohito Morinaga
UniRx勉強会 「若輩エンジニアから見たUniRxを利用したゲーム開発」 UniRx勉強会 #UniRx https://unirx.doorkeeper.jp/events/25218
はじめてのUniRx
はじめてのUniRx
torisoup
2015/06/19 UniRx勉強会での発表資料です
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
UniRx Meetup #1 at 2015/06/19
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
Metro.cs #1 Background of PhotonWire - Typed Asynchronous RPC Layer for Photon Server + Unity
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
Kotaro Ogino
システムテスト自動化カンファレンス2015での発表資料です
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
Kotaro Ogino
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
Rakuten Group, Inc.
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
Kotaro Ogino
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
Toru Nayuki
Interactive UI with UniRx
Interactive UI with UniRx
Yuto Iwashita
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
Hirohito Morinaga
はじめてのUniRx
はじめてのUniRx
torisoup
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
Kotaro Ogino
More from 龍一 田中
(20)
Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門
龍一 田中
Google Cloud Messagingの紹介とサンプルの作成について。
Web技術勉強会 20120728
Web技術勉強会 20120728
龍一 田中
ライフログ入門。Evernote連携をアプリの機能以外にIFTTTと自作Herokuアプリで送信する手法を紹介。
Web技術勉強会 20120609
Web技術勉強会 20120609
龍一 田中
Web技術勉強会 20120609 Heroku+Rubyで作ったアプリの紹介
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
龍一 田中
JenkinsでJava/PHP/Ruby/JavaScriptプロジェクトをビルド。Javaは省略してます。
Web技術勉強会 20111112
Web技術勉強会 20111112
龍一 田中
Web技術勉強会 20110723
Web技術勉強会 20110723
龍一 田中
Web技術勉強会 20110611
Web技術勉強会 20110611
龍一 田中
Web技術勉強会 20110611
Web技術勉強会 20110528
Web技術勉強会 20110528
龍一 田中
プロトタイプベースOOPライブラリの紹介
Web技術勉強会 20110514
Web技術勉強会 20110514
龍一 田中
プロトタイプベースオブジェクト指向プログラミング(親子関係を維持した継承)
Web技術勉強会 20100925
Web技術勉強会 20100925
龍一 田中
Web技術勉強会 20100424
Web技術勉強会 20100424
龍一 田中
Web技術勉強会 20100424
Web技術勉強会 第38回
Web技術勉強会 第38回
龍一 田中
Web技術勉強会 第38回
Web技術勉強会 第37回
Web技術勉強会 第37回
龍一 田中
Web技術勉強会 第37回
Web技術勉強会 第34回
Web技術勉強会 第34回
龍一 田中
Web技術勉強会 第34回
Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
Web技術勉強会 第33回
Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
Web技術勉強会 第31回
Web技術勉強会 第30回
Web技術勉強会 第30回
龍一 田中
Web技術勉強会 第30回
Web技術勉強会 第29回
Web技術勉強会 第29回
龍一 田中
Web技術勉強会 第29回 FriendFeedを使ってTwitter、Blogを管理
Web技術勉強会 第28回
Web技術勉強会 第28回
龍一 田中
Web技術勉強会 第28回
Web技術勉強会 第26回
Web技術勉強会 第26回
龍一 田中
Web技術勉強会 第26回
Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門
龍一 田中
Web技術勉強会 20120728
Web技術勉強会 20120728
龍一 田中
Web技術勉強会 20120609
Web技術勉強会 20120609
龍一 田中
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
龍一 田中
Web技術勉強会 20111112
Web技術勉強会 20111112
龍一 田中
Web技術勉強会 20110723
Web技術勉強会 20110723
龍一 田中
Web技術勉強会 20110611
Web技術勉強会 20110611
龍一 田中
Web技術勉強会 20110528
Web技術勉強会 20110528
龍一 田中
Web技術勉強会 20110514
Web技術勉強会 20110514
龍一 田中
Web技術勉強会 20100925
Web技術勉強会 20100925
龍一 田中
Web技術勉強会 20100424
Web技術勉強会 20100424
龍一 田中
Web技術勉強会 第38回
Web技術勉強会 第38回
龍一 田中
Web技術勉強会 第37回
Web技術勉強会 第37回
龍一 田中
Web技術勉強会 第34回
Web技術勉強会 第34回
龍一 田中
Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
Web技術勉強会 第30回
Web技術勉強会 第30回
龍一 田中
Web技術勉強会 第29回
Web技術勉強会 第29回
龍一 田中
Web技術勉強会 第28回
Web技術勉強会 第28回
龍一 田中
Web技術勉強会 第26回
Web技術勉強会 第26回
龍一 田中
WebSocketでリアルタイム処理をする
1.
WebSocketで リアルタイム処理をする @mapserver2007 / Ryuichi
TANAKA
2.
WebSocketといえば リアルタイムなチャットがすぐ思いつく が、ありふれてる上にチャットなんて別にブラウザで使わ ない LINE もっと実用的なアプリを作る WebSocket+位置情報でリアルタイムトラッキングWebSocket+位置情報でリアルタイムトラッキング 自転車、自動車、人間、なんでも監視できる 地図を使えばブラウザ開いているだけでリアルタイム監視
3.
今やっていること Aphrael(アフラエル)というシステムを開発中 その過程でWebSocketの勉強をしているので報告
4.
Aphrael 自転車盗難防止システム 自転車に端末を設置(Android)し、監視するシステム Android端末では、侵入検知(Bluetooth)、盗難検知(加速 度センサー)、移動検知(GPS)を行い、情報をサーバへ送信 する。 サーバはデータを保存、ソーシャルアプリ(Twiter、SMSサーバはデータを保存、ソーシャルアプリ(Twiter、SMS 等)、ブラウザ(Chrome)へ送信し監視者へ通知する。
5.
システム概要 Android端末を自転車のサドルバッグに設置し、GPS、セ ンサを利用して自転車を監視する 自転車の不正な動き(自転車を動かしたり)を検知したら サーバへ送信し、管理者へ通知 自転車の盗難を検知したらトラッキング開始 自転車の盗難状況はChromeでリアルタイム監視自転車の盗難状況はChromeでリアルタイム監視
6.
開発体制 共同開発になった。 https://github.com/yuanying Android、Rails、インフラ担当 Android4.x Rails4/Ruby2.0 https://github.com/mapserver2007 Chrome、node.js担当 Chrome27(2013年7月最新版)でのExtension node.js v0.11.3(2013年7月でのnpm利用の最新版) 本当はv0.12.xでyield使いたいのでアップデートするかも Androidもやる予定 ソースコード https://github.com/aphrael 子プロジェクトが4つ(Rails/Android/Chrome/node.js)
7.
システム構成
8.
システム構成(俺担当) ここを作ってる
9.
急遽変更した点 Chromeとリアルタイム通信する箇所は当初は GCM(Google Cloud Messaging
for Chrome)を使って いたが、node.jsに完全移行した。 変更した理由は、リクエスト回数制限(10000req/day)と APIの機能不足 複数ユーザで連続通信した場合越える可能性が高い 機能が少ない。例えばGCMは接続する全てのクライアントに同機能が少ない。例えばGCMは接続する全てのクライアントに同 じデータを送りつけるためユーザ単位の制御ができない。クライ アントの特定はChromeExtensionのChannelIdだが、インス トールしたクライアントですべて同じIDになってしまうため個別 の制御ができない 外部サービスに頼るのは基本的によくない(仕様変更、勉強の観点 から) Google Cloud Messaging for Chromeの基本について はhttp://www.slideshare.net/mapserver2007/web- 20130525を参照してください。
10.
Chrome+node.jsでやりたいこと ChromeExtensionから画面に表示されている内容をDOM で書き換えられるか。 Webページに設置した地図の位置をExtensionから変更できるか WebSocketで受け取ったデータ(経緯度)の位置を表示する。 これにより、サーバが送信した位置情報をリアルタイムに 画面で描画することができるか。画面で描画することができるか。 Webページの地図をずっと開いておくだけ。リロードの必要も ポーリングも必要ない。常にリアルタイムの位置情報をフリーハ ンドで確認できる。
11.
片付けるべき課題 WebSocket接続中に緯度経度情報を受け取って、表示中 の地図を更新できるか(正常系) クライアント側で接続が切断された場合、すぐに再接続が できるか(タイムアウトの検知=デフォルト不可) サーバ側で接続が切断された場合またはサーバが再起動し た場合、クライアントと再接続できるかた場合、クライアントと再接続できるか 基本的に利便性を優先するため、地図表示中に接続が切れ てもすぐに再接続+更新処理の続行を可能にする(利用者に は切断・再接続を意識させない作りにする) コネクションがゾンビになったりしないような作りにする (きちんと切断して開放する)
12.
node.js選択の理由 実装が圧倒的に楽 WebSocketサーバを10行程度で書ける HTTPサーバとWebSocketサーバを一つのソースで書け る WebSocketのサーバ、HTTP(REST API)サーバを同時に動かせ るる ライブラリが豊富 WebSocket絡みなら大抵ある。便利なものから基本的な Socket.ioなど。 インストールが楽 npmとnvmで管理すればバージョンごとの動作も簡単
13.
WebSocketとは 永続的な通信を行えることで、HTTPでは難しかったサー バクライアントの双方向通信が簡単に実現できる HTTPでは不可能ではないが、オーバヘッドが大きい HTTPの様にクライアント→サーバの一方向ではなく、 サーバ→クライアントの通信が可能 接続はクライアントから行うが、確立してしまえば双方向通信が接続はクライアントから行うが、確立してしまえば双方向通信が 可能 GCMはChannelIdで特定するのか、サーバ→クライアントの接 続が可能 プロトコルは「ws://, wss://」 大抵のモダンブラウザ(Chrome14~、Firefox6~、Safari5~、 IE10~)なら対応している
14.
WebSocketを使う意味 HTTPでポーリング、ロングポールを使ったら負けだと思 う ポーリングは論外(無駄通信が多すぎる。コストが高すぎ) ポーリングが許されるのは小学生まで ロングポール(Comet)はオーバヘッドが多すぎる(大量の人数が同 時にコネクションを長時間保持することになる)。しかたなく使っ ていた技術という感がある。時代遅れ。ていた技術という感がある。時代遅れ。 ロングポールが許されるのはLingrだけ 現代人ならWebSocket使いましょうよ つまりWebSocketも使えないようなブラウザは捨てろ
15.
ChromeExtensionの構成(manifest.json) { "manifest_version": 2, "name": "Aphrael", "description":
"Aphrael for chrome", "version": "0.0.1", "permissions": [ "pushMessaging", "notifications", "tabs" ],], "background": { "scripts": ["notify.js"] }, "content_scripts": [ { "matches": [ "http://*/*" ], "js": ["content_script.js", "jquery.min.js"], "run_at": "document_end" } ] }
16.
ChromeExtensionの構成(manifest.json) { "manifest_version": 2, "name": "Aphrael", "description":
"Aphrael for chrome", "version": "0.0.1", "permissions": [ "pushMessaging", "notifications", "tabs" ], 初期状態から使用可能な JavaScript ], "background": { "scripts": ["notify.js"] }, "content_scripts": [ { "matches": [ "http://*/*" ], "js": ["content_script.js", "jquery.min.js"], "run_at": "document_end" } ] } JavaScript 読み込ませて使用する JavaScript
17.
background D D backgroundに指定したスクリプトは「ビューを調査」で開くウインドウ でデバッグ可能。ChromeExtension内のサンドボックスで実行される スクリプトなので、表示してるページのJavaScriptと干渉することはない (干渉できない)
18.
content_script backgroundスクリプトから呼び出す chrome.tabs.executeScript( tabId, {file: "content_script.js"}, function(response) { //
callback executeScriptで呼び出す Chromeのサンドボックスを超えて表示しているページで DOMアクセス可能 ただし表示しているページ内のJavaScriptへのアクセスは できない(関数実行は不可) // callback } );
19.
ExtensionからWebSocketを使う // WebSocket通信開始 var webSocket
= new WebSocket(“ws://localhost:9222”); // サーバからのメッセージを受信 webSocket.onmessage = function() { // content_scriptを呼び出して画面を書き換える }; // クローズ処理 webScoket.onclose = function() {…};webScoket.onclose = function() {…}; // エラー処理 webSocket.onerror = function() {…}; // クライアントからサーバへのメッセージ送信 webScoket.send(“message”); // クローズ webSocket.close();
20.
ExtensionからWebSocketを使う newした段階で接続される 接続状況はwebSocket.readyStateで確認できる oncloseメソッドでサーバからの切断処理に対応 サーバからの切断を検知してオブジェクトのクリア処理などを書 // WebSocket通信開始 var webSocket
= new WebSocket(“ws://localhost:9222”); サーバからの切断を検知してオブジェクトのクリア処理などを書 く
21.
ExtensionからWebSocketを使う // WebSocket通信開始 var webSocket
= new WebSocket(“ws://localhost:9222”); // サーバからのメッセージを受信 webSocket.onmessage = function() { // content_scriptを呼び出して画面を書き換える } // クローズ処理 webScoket.onclose = function() {…}webScoket.onclose = function() {…}
22.
Aphraelでの実装(接続関係) WebSocketオブジェクトを一つ保持して使いまわす WebSocketオブジェクトを定期監視し、サーバとの接続 が切れたら再接続するようにする AphraelのWebページをアクティブにしたときのみ監視。 タイムアウトを検知できないので、setIntervalで監視。 readyStateプロパティを確認して3(=切断済み)ならオブジェクreadyStateプロパティを確認して3(=切断済み)ならオブジェク トをクリアし、再接続処理を実行する。 サーバから切断(サーバが落ちた場合)された場合、クライ アントのWebSocketオブジェクトをクリアする(ゾンビに ならないように) onerrorメソッドで検知する。
23.
Aphraelでの実装(タブ・ウィンドウ関係) ChromeExtensionからはchrome.*を使ってAPIへアクセ ス可能。タブ、ウィンドウ制御が可能 タブがアクティブになったとき タブが削除されたとき タブが更新されたとき ウィンドウが作成されたときウィンドウが作成されたとき ウィンドウが削除されたとき ウィンドウを合体させたとき など これらのイベントを検知し、Extensionを実行するタブを 取得し、Aphraelのページでのみ実行する。 複数のタブから同時にアクセス可能なので、開いているタ ブ全てにWebSocket処理を実行する。
24.
WebSocketサーバの実装 var WebSocketServer =
require('ws').Server, httpServer = require('http').createServer(); var server = new WebSocketServer({ server: httpServer }); var connection = null; server.on('connection', function(ws) {server.on('connection', function(ws) { connection = ws; ws.on('close', function(code) { console.log(code); }); }); httpServer.listen("9222");
25.
WebSocketサーバの実装 10行程度で実装 wsモジュールを使用することでさらに簡単に実装 WebSocket関係のモジュールによってはChrome最新版との接 続がうまくいかない場合がある(例:websocket-serverモジュー ル)。現時点ではwsモジュールで接続可能。
26.
HTTPサーバの実装 var express =
require('express'); var app = express(); app.get('/rest/position', function(req, res) { var data = { lat: req.query.lat, lng: req.query.lng }; try {try { connection.send(JSON.stringify(data)); res.send(200); } catch (e) { logger.error(e.message); throw e; } }); app.listen("9223");
27.
HTTPサーバの実装 HTTPでGETリクエストを受けてリクエストを WebSocketプロトコルで送信する。 HTTPレスポンスはBodyなしで返すだけ expressモジュールを使うと簡単にURLルーティングが可 能
28.
WebSocket、HTTPサーバ両方動かす 一つのソース(server.js)にWebSocket、HTTPサーバを記 述し、同時に起動できるのが嬉しい HTTPで受け取ったリクエストを簡単にWebSocketに渡せる これにより簡単にHTTPで受け取ったリクエストを即座にブラウ ザに反映可能
29.
Chrome、node.jsのWebSocketでリアルタイ ムに地図を書き換える HTTPで緯度経度を受け取る 緯度経度をWebSocketでChromeに渡す Chromeはonmessageメソッドで緯度経度を受け取り DOMで地図を書き換える 地図を書き換えるには…?
30.
Chrome、node.jsのWebSocketでリアルタイ ムに地図を書き換える トリッキーではあるが…以下のように実装 表示してるページのJavaScript関数は使えないが、DOMアクセ スは可能なので、HTMLを埋め込み、イベントを発火させる innerHTMLで画面上に緯度経度を書き込む 予めWebページに隠し要素を埋め込んでおき、DOMでボタンの クリックイベントを実行 緯度経度を読み込み、GoogleMapを更新する
31.
Demo
32.
クラウドで動かす Aphraelをクラウドで動かしてみた 本番は自鯖 Heroku+Node Ninja
33.
Herokuでnode.jsを動かすときの注意点 HerokuではWebSocketが使えない(2013年7月現在) 同様のことはできる Socket.ioでxhr-pollingを使えば見た目上変わらないが WebSocketとは別の処理を書かなければならない。 そもそもポーリングである。 Heroku(無料枠)で1プロジェクトあたり複数のプロセスはHeroku(無料枠)で1プロジェクトあたり複数のプロセスは 動かせない 今回はWebSocketサーバとRESTサーバを動かす必要がある プロジェクトを2つに分けなければならない 結論:Herokuでnode.js(WebSocketサーバ)を使うのは 断念。
34.
Node Ninja http://node-ninja.com/ 無料(30日)。30日以降はメールで継続願を出す。
35.
Node Ninjaの特長 WebSocket使用可能 複数のプロセス起動可能 WebSocket、RESTサーバを同時に動かせる 仮想マシンにSSH接続可能 Webサイトから起動・停止可能 Webサイトからログ確認可能Webサイトからログ確認可能 Githubコミット即時反映可能
36.
今後の予定 地図移動の軌跡を書くようにする 実機との連携を試す Android機を購入(Xperia mini) DTIの3G(月額490円) 複数のユーザが利用できるように改良 認証認証 共有機能(許可したユーザのみ) サーバサイドJSの勉強を進める WebScoket WebWorker
Download