ストリーミング寺子屋
音声・動画のストリーミング機能を
開発するエンジニアのための
実践的なナレッジベース
【開発環境ほか 1-7】RESTful APIについて教えて下さい。
定義
- RESTful API
RESTの指針となる原則と制約に従い、Webサービスと対話/やり取り/情報交換を可能にする インターフェースのこと。REST APIとも言います。 - REST
REpresentational State Transferの略。指針となる原則と制約がある、分散型ハイパーメディアシステムのアーキテクチャです。
準拠が必要な基準
RESTfulは、以下の基準に準拠する必要があります。
- クライアントとサーバー
クライアントとサーバーのコンポーネントは明確に定義され、分離されるます。分離されることによって、それぞれのコンポーネントが単純化し、独立してコンポーネントが進化できます。- API実装時:HTTPではクライアントで発生したエラーとサーバーで発生したエラーを、エラーコードで区別する必要があります。
- API実装時:HTTPではクライアントで発生したエラーとサーバーで発生したエラーを、エラーコードで区別する必要があります。
- ステートレス
クライアントからサーバーへのそれぞれのリクエストは、リクエストを理解するために必要なすべての情報を含まなければなりません。
サーバに保存されているコンテキストは利用できず、セッションの状態は完全にクライアント側に保持されます。リクエスト間で状態を保持する必要がないため、リソースを素早く解放でき、さらに実装を簡略化することもできるため、スケーラビリティが向上します。- API実装時:クライアントの認証情報、認証結果を保持しないため、要求毎に認証情報がないとエラーで返す実装が必要になります。
- API実装時:クライアントの認証情報、認証結果を保持しないため、要求毎に認証情報がないとエラーで返す実装が必要になります。
- キャッシュ制約
クライアントのリクエストに対するレスポンスをラベル付けし、その後の同じリクエストにレスポンスを再利用できる権利が与えられます。
キャッシュ制約があることでネットワーク効率を向上させることができます。一部のやり取りの待ち時間を短縮でき、スケーラビリティとユーザーが感じる性能を向上させます。- API実装時:キャッシュとしてはすべてのデータを保持する必要はありません。例えば、複数のデータを持っている場合、変更の少ない項目はキャッシュとして保持し、変更が多い項目は、都度、必要に応じて取得する方が効率が良いです。データを長期間保持しているとキャッシュが一杯になってしまう可能性があるので、データの有効期限を設定し、短期間でキャッシュ を削除したり、期限切れにならないように有効期限を伸ばしたり設定する必要があります。
- API実装時:キャッシュとしてはすべてのデータを保持する必要はありません。例えば、複数のデータを持っている場合、変更の少ない項目はキャッシュとして保持し、変更が多い項目は、都度、必要に応じて取得する方が効率が良いです。データを長期間保持しているとキャッシュが一杯になってしまう可能性があるので、データの有効期限を設定し、短期間でキャッシュ を削除したり、期限切れにならないように有効期限を伸ばしたり設定する必要があります。
- 統一されたインターフェイス
コンポーネント間で統一されたインターフェイスの要件を満たすこと。- リクエストはリソースを特定するURI(Uniform Resource Identifier)を使用する。
- クライアントはリソースを変更または削除できる情報を受け取り、リソースを操作できる。
- クライアントはリソースを最適に使用するためのメタデータを含む自己記述型メッセージを受け取る。
- クライアントはリソースにアクセス後、ハイパーテキスト/ハイパーメディアが使用できる。
- API実装時:RESTful APIで実装するHTTPメソッドは複数回要求しても結果が変わらない、べき等である必要があります。例えばPUTやDELETEを複数回要求しても「リソースの内容が更新されている」「リソースが削除されている」などの同じ結果が得られますが、POSTを複数回要求するとその回数だけリソースに内容が追加されていき、べき等ではありません。
- レイヤードシステム
各コンポーネントが相互作用している直近のレイヤーを越えて「見る」ことができないように、コンポーネントの動作を制約し、アーキテクチャを階層的なレイヤーで構成することを可能にします。
使用頻度の低い機能を中間層に移動させることや、情報を1つの層に限定することでシステム全体の複雑さを抑えることができます。中間層は、複数のネットワークやプロセッサにまたがるサービスの負荷を分散でき、システムのスケーラビリティを向上させます。- API実装時:以下のようなレイヤー構成の場合、data base上でエラーが発生するとレイヤーを介してapiレイヤーがHTTP 404などのエラーを返します。
api → domain service → authorization / database → entities
- API実装時:以下のようなレイヤー構成の場合、data base上でエラーが発生するとレイヤーを介してapiレイヤーがHTTP 404などのエラーを返します。
- コードオンデマンド
アプレットやスクリプトの形でコードをダウンロードして実行することで、クライアントの機能を拡張できます。事前に実装する必要ある機能を減らし、クライアントを簡略化することができます。システムの拡張性を高めることができますが、可視性が低下するため、RESTでは任意のオプションになっています。- API実装時:ディレクトリへの書き込みを可能性にしたり、特定のコンテンツはファイヤーウォールを越えることができるような実装にするなど。
Q&A
キーワード検索
-
ストリーミング技術
- 【Streaming-1】ストリーミングのシーケンスについて教えて下さい。
- 【Streaming-2】ストリーミング配信の遅延が大きいです。確認するポイントを教えて下さい。
- 【Streaming-3】ストリームの再生に失敗しました。確認するポイントを教えて下さい。
- 【Streaming-4】長時間配信時に画像の表示が滲みます。確認するポイントを教えて下さい。
- 【Streaming-5】画像が緑色で表示されます。確認するポイントを教えて下さい。
- 【Streaming-6】画像の一部しかきれいに表示されません。確認するポイントを教えて下さい。
- 【Streaming-7】ストリーミングデータは配信されているのに、映像が表示されません。確認するポイントを教えて下さい。
- 【Streaming-8】WebRTCを導入する際の技術的なポイントを教えて下さい。
- 【Streaming-9】Webブラウザでストリーミングを再生する手法を教えて下さい。
- 【Streaming-10】カメラで撮影した映像を確認するお勧めの環境はありますか。
- 【Streaming-11】ストリーミングの試験で注意すべきポイントを教えて下さい。
-
ネットワーク技術
- 【Network技術-1】QUICについて教えて下さい。
- 【Network技術-2】リアルタイム処理にUDPだけではなく、TCPも使われる理由を教えて下さい。
- 【Network技術-3】再送が保証されているTCPを使用しても、映像が乱れてしまう理由を教えて下さい。
- 【Network技術-4】TCPの通信ソケットが残り続けています。確認するポイントを教えて下さい。
- 【Network技術-5】サーバとの通信が断続的に途切れます。確認するポイントを教えて下さい。
- 【Network技術-6】TCP通信が zero window になり、継続できません。確認するポイントを教えて下さい。
- 【Network技術-7】TCP通信が断続的に途切れ、データがスムースに流れません。確認するポイントを教えて下さい。
- 【Network技術-8】TCPのデータ受信が、あるタイミングで極端に遅くなります。確認するポイントを教えて下さい・
- 【Network技術-9】SSL通信によるデータが受信出来ません。確認するポイントを教えて下さい。
- 【Network技術-10】ネットワーク品質の良し悪しを確認する、お勧めの方法はありますか?
- 【Network技術-11】EtherCATを使って時刻同期の精度を上げたいのですがポイントを教えてください。
-
ONVIF
- 【ONVIF-1】ONVIFのシーケンスについて教えて下さい。
- 【ONVIF-2】ONVIF Profileの種類と、どこまで対応すれば良いのか教えて下さい。
- 【ONVIF-3】ONVIF認証を取得したいです。最低限対応すべき機能、技術的な注意点はありますか?
- 【ONVIF-4】ONVIF準拠のカメラが接続できません。確認すべきポイントを教えて下さい。
- 【ONVIF-5】IPv6環境でONVIFは実現できますか?ONVIF準拠にIPv6は必要ですか?
- 【ONVIF-6】録画機能を持つカメラの録画データをONVIFで取得できますか?
- 【ONVIF-7】メタデータとカメラ映像を紐付けたいです。ONVIFでできますか?
- 【ONVIF-8】イベントをトリガーにカメラのPTZ操作、映像録画を行いたいです。ONVIFでできますか?
- 【ONVIF-9】指定時刻の前後N秒の映像を取得したいです。ONVIFでできますか?
- 【ONVIF-10】ONVIFで、YouTubeに映像をアップロードできますか?
-
クラウドサービス連携技術
-
開発環境ほか1
- 【開発環境ほか1-1】Wiresharkで独自プロトコルを解析することはできますか。
- 【開発環境ほか1-2】Wiresharkで、over HTTPのパケットを”HTTPを介したプロトコル”として解析する方法を教えて下さい。
- 【開発環境ほか1-3】WiresharkでRTPや独自フォーマットのストリーミングデータを解析する手法を教えて下さい。
- 【開発環境ほか1-4】暗号化されたデータをWiresharkで確認する方法はありますか?
- 【開発環境ほか 1-5】Dockerコンテナで実行しているアプリが落ちます。確認するポイントを教えて下さい。
- 【開発環境ほか 1-6】Webレンダリングエンジンを使用したアプリケーション開発について教えて下さい。
- 【開発環境ほか 1-7】RESTful APIについて教えて下さい。
- 【開発環境ほか 1-8】HTTPサーバを実装しました。お勧めの試験方法はありますか?
- 【開発環境ほか 1-9】C/C++言語で、64bit環境上で動作するプログラムを作る際の技術的な注意点はありますか?
-
開発環境ほか2
- 【開発環境ほか 2-1】YOCTOビルドする際、ハードディスク容量など、気を付けておく点はありますか。
- 【開発環境ほか 2-2】ARMコアをターゲットにする場合のYOCTOを始め方を教えて下さい。
- 【開発環境ほか 2-3】YOCTOのレシピにレイヤを追加する方法を教えて下さい。
- 【開発環境ほか 2-4】YOCTOの部分ビルドの方法を教えて下さい。
- 【開発環境ほか 2-5】YOCTOがビルドエラーになりました。対処方法を教えて下さい。
- 【開発環境ほか 2-6】開発中の製品と、PLCとの接続性をテストするため、ラズベリーパイもしくはWindows上のCODESYSでPLCを構築したいのですが、注意点はありますか?
-
生産現場の可視化
- 【生産現場の可視化-1】生産現場でカメラ映像を活用したいのですが、最初に気をつけるべきポイントは何ですか?
- 【生産現場の可視化-2】工場で不具合が発生する箇所に設置したカメラと、全体監視用のカメラの映像を簡単に見比べる方法はありますか?
- 【生産現場の可視化-3】製造現場で映像解析を実施したいのですが、既設の監視カメラを有効活用する方法はありますか?
- 【生産現場の可視化-4】生産現場の設備監視には、ドライブレコーダと監視カメラのどちらがいいでしょうか。
- 【生産現場の可視化-5】生産現場でAIを活用したいのですが、導入前に気をつけるポイントは何ですか?
- 【生産現場の可視化-6】PLCやセンサーをトリガーにしてカメラ映像を取得する方法はありますか?
- 【生産現場の可視化-7】GigEカメラ、USB3カメラ、ハイスピードカメラ、監視カメラなど、種類の異なる複数のカメラが取得した映像を関連付けて一元管理することは可能ですか?
- 【生産現場の可視化-8】フィールドバスにカメラをつなげて、PLCや機器と連携させる方法は?
- 【生産現場の可視化-9】既に導入済みの生産管理システムやSCADA、BIツールなどに、生産現場のネットワークカメラ映像を取り込みたいのですが、どのような方法がありますか?