質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

3回答

7463閲覧

サーバーからリアルタイムにデータをPushする方法

nikkori

総合スコア20

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2019/02/18 01:20

編集2019/02/18 05:35

元サーバーサイドのエンジニアです。

新サービスの設計にあたって、サーバー側でデータ変更があったことを
リアルタイムに顧客側に通知する仕組みが必要になります。
(BtoBの自社サービス開発・企画段階)

顧客側の環境はいろいろでスマホアプリ、Webブラウザ、サーバーなどを想定しているため
WebAPIのような形で提供できる方法がないか探しています。

まだイメージも固まってないのですが、顧客側のブラウザ→サーバーになんらかのステータスをもったデータを登録し、サーバー側でステータスが変わるイベントが発生したらそれを通知します。片方向です。
顧客側(クライアント側)ではその通知を受けたら画面に通知マークを付けるなどの実装をしてもらうことになると思います。

ポーリングしてサーバーからデータを取得する…時代の知識しかなく
WebSocketや最近のPush通知など、ネットでいろいろ調べています。
が、イマイチよく理解できない部分を質問させてください。

  1. リアルタイム性が高くイメージに合っているのはPush通知かと思うのですが

顧客側に複雑な設定(実装?)が必要そうです。
APIのようにサーバーで作ったものをクライアント側で組み込んで叩くだけ…のようなことはできないのでしょうか?

  1. WebSocketというやり方も調べています。

こちらも顧客側の実装ハードルが高そうなのですが、クライアント側からすると
難しいorダサい等ないでしょうか?
クライアント側の知識がほぼないので感覚的なところを伺いたく…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/02/18 01:49

「顧客側」と仰っていますが、これはどういう位置づけのプロジェクトなのでしょうか。(内容如何ではQAサイトの範疇におさまらないので、ちょっと微妙です)
nikkori

2019/02/18 01:57

BtoBのサービスなので不特定多数ではないです。 ただ、サービスの利用方法が顧客企業によってアプリだったりブラウザだったり、顧客のソフトに組み込んで使ったりというパターンがあり得る…という形です。 答えになっているでしょうか?
m.ts10806

2019/02/18 01:59

えっと、受注案件で金額発生している・・・かどうかです。 だとしたら「技術的に不透明なところが多いのになぜ受注したのか」という疑問はあります。(責めたいわけではないです)
nikkori

2019/02/18 03:07

あ、受注案件ではなく、自社サービスの開発です。 まだ本当に初期段階で、こういうニーズがありそうだけどサービスとしてどう実現できるか検討しはじめたところです。
guest

回答3

0

ベストアンサー

・Push通知
Firebase の「Firebase Notifications」「Firebase Cloud Messaging」や AWS の「Amazon Simple Notification Service」などのサービスを利用すると比較的簡単に実装できると思います。

独自実装する場合は、ちょっと大変かもしれません。

・WebSocket
WebSocket はチャットや対戦ゲームのような高速な双方向通信が必要な場合に使われます。
自由度は高いのですが、実装するのが大変です。

・ポーリング
要件を満たせるのであれば、別に悪くない選択肢だと思います。

どれが正解なのか回答するのは難しいですが、クライアント側の要件に合わせて選択することになるかと思います。

投稿2019/02/18 05:50

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikkori

2019/02/18 06:07

わかりやすい説明ありがとうございます! 独自実装にはこだわらないので、教えていただいたサービスについて調べてみようと思います! FireBase使ってみたいです…! 他の方の回答を見ても、今回の要件でWebSocketは合わない気がします。 ポーリングもまだアリな選択肢というのも教えていただいてよかったです。 しばらく触らないでいると、進歩の速さに呆然としてしまいました・・・
nikkori

2019/02/18 06:38

Push通知とWebSocketそれぞれの特性がわかってきたので、あとは自分で詳しく勉強していきます。 ぼんやりとした質問に答えてくれた皆さんに感謝したいですが、シンプルな回答でわかりやすかったので ベストアンサーにさせていただきました
guest

0

WebSocket

まぁ別にダサくも難しくもないですが、
生TCP/IP通信をラッピングしたようなものですので、
WebサーバアプリであるApacheのモジュールとして動かすのが第一想定であるPHPとは相性が悪い代物です。

Node.jsやElixirなどのWebSocketに強い言語を利用することになるでしょう。

ただまぁ、サーバーとクライアントが両方立ち上がった状態で「さぁいつでも通信を送ってこい!瞬時に受け取って処理してやるぜ!」みたいな代物なので
スマホアプリ、WebブラウザではWebSocketが合致するとはちょっと考えにくいです。
これらのデバイスはスリープ状態でポケットやカバンにしまって持ち運ぶ事が多いでしょうからね。

Push通知かと思うのですが顧客側に複雑な設定(実装?)が必要そうです。

スマホアプリは管轄外なのでちょっと調べました。
意外と知らない!?iOSとAndroidプッシュ通知の仕組みの違い

まぁどのアプリも勝手にPush通知を飛ばすと非常にうざいので、
最初に許可を取る設計になっているはずで、上記の記事だけ斜め読みしましたが
当然かつこんなもんかな?という印象です。

これにHTML5の通知機能を組み合わせる感じが良いんじゃないでしょうか?
こちらも顧客はChromeで許可ボタンを押すだけの簡単操作です。
JavaScriptでデスクトップ通知(HTML5 Notification)

確実に行くならメールを飛ばしましょう。

投稿2019/02/18 03:14

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikkori

2019/02/18 03:25

> PHPとは相性が悪い > スマホアプリ、WebブラウザではWebSocketが合致するとはちょっと考えにくい ありがとうございます!やっぱりそういうものなんですね。。。 知りたかったことにドンピシャでした! やっぱり簡単ですがメールがわかりやすいですよね。 スマホアプリのことは全然わからないので、色々調べてみます、 参考サイトもありがとうございます。
guest

0

リアルタイムと言いますが、対戦型ゲームのようにちょっとしたジッタも許容されないようなものもあるので、ある程度の見込みを提示された方がより適切な回答が得られやすいかと思います。
リアルタイム性を考えるとWebSocket>push通知です。
WebSocketを利用したFirebaseなどのサービスもあり、要求仕様を考慮して選定することになるかと思いますが、もちろん実装が簡単なのは既存サービスを利用したものでしょう。

投稿2019/02/18 02:18

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikkori

2019/02/18 03:14 編集

ありがとうございます。 Firebaseはよさそうだと思っていましたが、詳しく調べてみることにします。 リアルタイム性は数秒の誤差は問題ありません。 なのでイメージ的にはPush通知が一番近いのですが、実現方法がわからず…
t_obara

2019/02/18 04:23

顧客側にどのように通知し、その結果どのように処理をする予定なのか、どのようにしたいのかなどをご提示(質問本文に)されると、より具体的な回答を得られやすいのではないでしょうか。 push通知は片方向、WebSocketは双方向に対応できるので、それぞれ向き不向きがあります。
nikkori

2019/02/18 06:02

ありがとうございます。まだ顧客要件もシステムイメージもふわふわとしており、どういう選択肢があるのか調べながら技術要件につまづいている状態です。 > push通知は片方向、WebSocketは双方向に対応できる 今回の場合片方向です。向き不向きがあるのですね、調べながら段々と理解できてきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問