SlideShare a Scribd company logo
PHP meets NodeJS
PHPに簡単にPUSH機能を組み込む
13年8月4日日曜日
まずは自己紹介
簡単に自己紹介
Name : takyam (たくやむ)
Work : WEBアプリケーションエンジニア?
Twitter : @takyam
Blog : http://new.takyam.com/
GitHub : http://github.com/takyam-git
Bitbucket : https://bitbucket.org/takyam
13年8月4日日曜日
PHPで通知機能
PHPでFacebookの通知機能のようなものを実装したい事ありますよね?
画面遷移を挟まずにユーザーへの通知が表示される機能です。
私はPUSH通知と呼んでるのですがこれをPHPで作りたいとおもいます
13年8月4日日曜日
通知機能を作るには
サーバー側からPUSHする必要がありますが、いくつかの手法があります
ポーリング(実際はPUSHでは無い)
Commet
Websocket
それぞれメリット・デメリットがあります
今回はWebsocketを使ってみたいと思います
13年8月4日日曜日
Websocketを使う
PHP単体でもWebsocketを扱えるようなライブラリはあります
とはいえWAFに組み込むのは難しいので今回はNodeJSを使います
Websocketの部分はNodeJSに全ておまかせです!
13年8月4日日曜日
NodeJS分かんねぇよ
そんな硬派なPHPerも大丈夫!
NodeJSは全部で100行くらいなので、コピペすりゃOK
一度作ればNodeJSメンテナンス不要なイケてるシステムです
13年8月4日日曜日
今回のシステムの前提
今回のPUSHを実現するための前提条件が2つあります
NodeJSがPHPと同ドメイン(ポート違いOK)で運用できる
Redisが使える
これだけ!
13年8月4日日曜日
まずはイメージをつかむ
文字で説明するのも大変なので簡単なイメージ図をご紹介
まず最終的な完成形のイメージを掴んでください
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
投稿に対してのコメントを
AjaxでPHPにPOSTリクエスト
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
コメントのDBへの保存処理などを実施
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
コメントが来たよ通知JSONを
RedisにPUBLISH
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
SUBSCRIBEしてるNodeJSが
通知JSONを受信
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
通知JSONから通知対象のユーザーを選択する
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
通知対象のユーザーのWebsocketを使って
PUSH通知(JSON)を送信!
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
受け取ったPUSH通知JSONを元に
画面の表示を更新
13年8月4日日曜日
どうですか?
そんなに複雑な構成では無いとおもいます
ポイントは以下の3つ
ユーザーからのデータ送信はAjaxので処理する
Redis経由でPHPがNodeJSに、一方通行でJSONを送る
NodeはPHPからのJSONを元にWebsocketでデータを送信する
13年8月4日日曜日
なんでAjax?
コレ以上Nodeに複雑な処理持たせたくないから
PHP側だけで処理できる事はPHPだけでやった方が楽ですよね
13年8月4日日曜日
Redisのpub/sub?
これもNode側の実装が楽だから
HTTPリクエスト処理するための何やかんや用意しなくてOK
JSONかわいいよJSON
13年8月4日日曜日
Nodeが送信?
Nodeは決まったフォーマットのJSONに従ってJSONを配信するだけ
つまり、かなり定型的な処理しか行わない
つまり、Nodeの実装が楽っ☆
13年8月4日日曜日
つまり
いかにNodeを触らなくて良いかを考えた構成になってます
Node大好きっ子ですが、メインがPHPなので複雑にしたくなかったのです
13年8月4日日曜日
PHP/Node間のJSON
target_user_ids のWebsocketに対して data を送るだけですね
{
“target_user_ids”: [1,2,10,22],
“data”: {
“type”: “notice_message”,
“message”: “コメントがありました”,
“datetime”: “2013-08-03 15:12:32”
}
}
←配信対象のユーザーIDリスト
←配信データ
}
13年8月4日日曜日
target_user_ids ???
ユーザーIDはPHP側にしか持ってません
NodeJS側は会員認証も何も持ってないのだから
ユーザーID渡されてもどのWebsocketがどのユーザーIDか分からなくね?
13年8月4日日曜日
ユーザーIDをNodeと共有
というわけで、ここが肝なのですが、ユーザーIDをNode側に知らせる必要があります
方法は簡単、ユーザーIDを返すAPIをPHP側に用意するだけ!
ではイメージ図いってみましょう
13年8月4日日曜日
ユーザーID取得処理
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
2. HTML/JSを返す
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
13年8月4日日曜日
ポイントは
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
13年8月4日日曜日
ポイントは
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
Websocketコネクション時の
Handshakeの時に
PHP側のSessionCookieが送られる
13年8月4日日曜日
ポイントは
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
SessionCookieを含めてPHPにリクエスト
つまり、PHP的にはユーザーからのリクエストと一緒
13年8月4日日曜日
Nodeがユーザーになりきれる
Node側がユーザーを偽装する事ができますね!
PHP側がリクエストユーザーの、ユーザーIDを返すAPIを用意すればOK
これで、WebsocketにPHP側のユーザーIDを紐付ける事ができます
13年8月4日日曜日
ユーザーID偽装のために
PHP側のSessionCookieをNode側に送信する必要があります
Cookieの送信ポリシー的に同じドメインである必要があります
なので、ポートは違っていいですが、NodeもPHPも同ドメインで運用してください
13年8月4日日曜日
というわけで
省エネでPHPからPUSH通知を送る事ができます
例としてPHPあげましたが、PerlでもRubyでも同じ事はできるはずです
13年8月4日日曜日
最後に
この資料作るきっかけになった投稿をくれた方々に感謝です
https://groups.google.com/forum/#!topic/nodejs_jp/gU2347-33PQ
簡単なサンプル(通知ではなくてチャットですが)も作りましたのでよろしければ
https://github.com/takyam-git/phpchat_example/
13年8月4日日曜日
ありがとうございました
ご連絡は @takyam までぜひぜひ∼
ブログも見てね∼
http://new.takyam.com/
13年8月4日日曜日

More Related Content

What's hot

中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips
Kenjiro Kubota
 
クラウドコンピューティングと OSS
クラウドコンピューティングと OSSクラウドコンピューティングと OSS
クラウドコンピューティングと OSS
Open Source Software Association of Japan
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
Ippon
 
Angular 4 The new Http Client Module
Angular 4 The new Http Client ModuleAngular 4 The new Http Client Module
Angular 4 The new Http Client Module
arjun singh
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
 
Railway Oriented Programming
Railway Oriented ProgrammingRailway Oriented Programming
Railway Oriented Programming
Scott Wlaschin
 
Angular 10 course_content
Angular 10 course_contentAngular 10 course_content
Angular 10 course_content
NAVEENSAGGAM1
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
Ahmed Salama
 
5分で笑えるwebサービスの作り方
5分で笑えるwebサービスの作り方5分で笑えるwebサービスの作り方
5分で笑えるwebサービスの作り方
Hisatoshi Kikumoto
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
rihannakedy
 
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
Takayuki Shimizukawa
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'ts
Pekka Klärck
 
Build RESTful API Using Express JS
Build RESTful API Using Express JSBuild RESTful API Using Express JS
Build RESTful API Using Express JS
Cakra Danu Sedayu
 
Next.js Introduction
Next.js IntroductionNext.js Introduction
Next.js Introduction
Saray Chak
 
ReactJs
ReactJsReactJs
OSS製品における品質管理について
OSS製品における品質管理についてOSS製品における品質管理について
OSS製品における品質管理について
Junichi Watanuki
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada
 
はじめる! Redmine (2021年版)
はじめる! Redmine (2021年版) はじめる! Redmine (2021年版)
はじめる! Redmine (2021年版)
Go Maeda
 
Intro to vue.js
Intro to vue.jsIntro to vue.js
Intro to vue.js
TechMagic
 

What's hot (20)

中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips
 
クラウドコンピューティングと OSS
クラウドコンピューティングと OSSクラウドコンピューティングと OSS
クラウドコンピューティングと OSS
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Angular 4 The new Http Client Module
Angular 4 The new Http Client ModuleAngular 4 The new Http Client Module
Angular 4 The new Http Client Module
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
Railway Oriented Programming
Railway Oriented ProgrammingRailway Oriented Programming
Railway Oriented Programming
 
Angular 10 course_content
Angular 10 course_contentAngular 10 course_content
Angular 10 course_content
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 
5分で笑えるwebサービスの作り方
5分で笑えるwebサービスの作り方5分で笑えるwebサービスの作り方
5分で笑えるwebサービスの作り方
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
 
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'ts
 
Build RESTful API Using Express JS
Build RESTful API Using Express JSBuild RESTful API Using Express JS
Build RESTful API Using Express JS
 
Next.js Introduction
Next.js IntroductionNext.js Introduction
Next.js Introduction
 
ReactJs
ReactJsReactJs
ReactJs
 
OSS製品における品質管理について
OSS製品における品質管理についてOSS製品における品質管理について
OSS製品における品質管理について
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
はじめる! Redmine (2021年版)
はじめる! Redmine (2021年版) はじめる! Redmine (2021年版)
はじめる! Redmine (2021年版)
 
Intro to vue.js
Intro to vue.jsIntro to vue.js
Intro to vue.js
 

Viewers also liked

PHP + Node.js
PHP + Node.jsPHP + Node.js
PHP + Node.js
Patrick Kaminski
 
Integrating Node.js with PHP
Integrating Node.js with PHPIntegrating Node.js with PHP
Integrating Node.js with PHPLee Boynton
 
PHP and node.js Together
PHP and node.js TogetherPHP and node.js Together
PHP and node.js Together
Chris Tankersley
 
Scaling and securing node.js apps
Scaling and securing node.js appsScaling and securing node.js apps
Scaling and securing node.js apps
Maciej Lasyk
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
Yuji Otani
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
Andrew Rota
 
Nodejs
NodejsNodejs
Unit testing in PHP
Unit testing in PHPUnit testing in PHP
Unit testing in PHP
Lee Boynton
 
Nodejs and mongodb
Nodejs and mongodbNodejs and mongodb
Nodejs and mongodb
Ayako Hatori
 
WiFi によるモダン・ネットストーキング
WiFi によるモダン・ネットストーキングWiFi によるモダン・ネットストーキング
WiFi によるモダン・ネットストーキング
Akira Kumagai
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)VOYAGE GROUP
 
Laravelの認証について
Laravelの認証についてLaravelの認証について
Laravelの認証について
Takeo Noda
 
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
Naohiro Yoshida
 
3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
Kazuaki KURIU
 
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
kazuhcurry
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
 
OpenStack マルチノード環境構築
OpenStack マルチノード環境構築OpenStack マルチノード環境構築
OpenStack マルチノード環境構築
HommasSlide
 
LaravelアプリケーションをSeleniumでテストしてみた
LaravelアプリケーションをSeleniumでテストしてみたLaravelアプリケーションをSeleniumでテストしてみた
LaravelアプリケーションをSeleniumでテストしてみた
Yuta Ohashi
 
魔法少女 Laravel 2014
魔法少女 Laravel 2014魔法少女 Laravel 2014
魔法少女 Laravel 2014
Kenichi Mukai
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
Masaru Matsuo
 

Viewers also liked (20)

PHP + Node.js
PHP + Node.jsPHP + Node.js
PHP + Node.js
 
Integrating Node.js with PHP
Integrating Node.js with PHPIntegrating Node.js with PHP
Integrating Node.js with PHP
 
PHP and node.js Together
PHP and node.js TogetherPHP and node.js Together
PHP and node.js Together
 
Scaling and securing node.js apps
Scaling and securing node.js appsScaling and securing node.js apps
Scaling and securing node.js apps
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
 
Nodejs
NodejsNodejs
Nodejs
 
Unit testing in PHP
Unit testing in PHPUnit testing in PHP
Unit testing in PHP
 
Nodejs and mongodb
Nodejs and mongodbNodejs and mongodb
Nodejs and mongodb
 
WiFi によるモダン・ネットストーキング
WiFi によるモダン・ネットストーキングWiFi によるモダン・ネットストーキング
WiFi によるモダン・ネットストーキング
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)
 
Laravelの認証について
Laravelの認証についてLaravelの認証について
Laravelの認証について
 
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
 
3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
 
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
 
OpenStack マルチノード環境構築
OpenStack マルチノード環境構築OpenStack マルチノード環境構築
OpenStack マルチノード環境構築
 
LaravelアプリケーションをSeleniumでテストしてみた
LaravelアプリケーションをSeleniumでテストしてみたLaravelアプリケーションをSeleniumでテストしてみた
LaravelアプリケーションをSeleniumでテストしてみた
 
魔法少女 Laravel 2014
魔法少女 Laravel 2014魔法少女 Laravel 2014
魔法少女 Laravel 2014
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
 

Similar to PHP meets NodeJS

PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探るPHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探るYoshio Hanawa
 
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御する
Kenichi Ahagon
 
NDS31 はじめてChrome App
NDS31 はじめてChrome AppNDS31 はじめてChrome App
NDS31 はじめてChrome App
civic Sasaki
 
20200129 cogbot lt
20200129 cogbot lt20200129 cogbot lt
20200129 cogbot lt
yohoshino
 
Opauthライブラリによるtwitter,facebook認証について
Opauthライブラリによるtwitter,facebook認証についてOpauthライブラリによるtwitter,facebook認証について
Opauthライブラリによるtwitter,facebook認証について松本 雄貴
 
一六社ブログ-プラグイン作成入門
一六社ブログ-プラグイン作成入門一六社ブログ-プラグイン作成入門
一六社ブログ-プラグイン作成入門
柴田 篤志
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
dcubeio
 
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装について
Fumiya Sakai
 
PHP AV BINDING
PHP AV BINDINGPHP AV BINDING
PHP AV BINDING
Yo Ya
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Hideaki Miyake
 
Php kansai-2013 lt-slide
Php kansai-2013 lt-slidePhp kansai-2013 lt-slide
Php kansai-2013 lt-slide
Hattori Hideo
 
あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)
Hiroyuki Ishiyama
 
Web Driverでブラウザを操作する
Web Driverでブラウザを操作するWeb Driverでブラウザを操作する
Web Driverでブラウザを操作する
Masuo Ohara
 
はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会
Takahiro Nakahata
 
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LTまだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT77web
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
Takami Sato
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景
Ryunosuke SATO
 
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみましたYoshiyuki MIYAGI
 
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersTakeshi Arabiki
 

Similar to PHP meets NodeJS (20)

PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探るPHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
 
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御する
 
NDS31 はじめてChrome App
NDS31 はじめてChrome AppNDS31 はじめてChrome App
NDS31 はじめてChrome App
 
20200129 cogbot lt
20200129 cogbot lt20200129 cogbot lt
20200129 cogbot lt
 
Opauthライブラリによるtwitter,facebook認証について
Opauthライブラリによるtwitter,facebook認証についてOpauthライブラリによるtwitter,facebook認証について
Opauthライブラリによるtwitter,facebook認証について
 
一六社ブログ-プラグイン作成入門
一六社ブログ-プラグイン作成入門一六社ブログ-プラグイン作成入門
一六社ブログ-プラグイン作成入門
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
 
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装について
 
PHP AV BINDING
PHP AV BINDINGPHP AV BINDING
PHP AV BINDING
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
 
Php kansai-2013 lt-slide
Php kansai-2013 lt-slidePhp kansai-2013 lt-slide
Php kansai-2013 lt-slide
 
OAuth with OpenPNE3
OAuth with OpenPNE3OAuth with OpenPNE3
OAuth with OpenPNE3
 
あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)
 
Web Driverでブラウザを操作する
Web Driverでブラウザを操作するWeb Driverでブラウザを操作する
Web Driverでブラウザを操作する
 
はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会
 
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LTまだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景
 
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみました
 
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
 

Recently uploaded

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 

Recently uploaded (16)

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 

PHP meets NodeJS