最近、WEBアプリの仕組みについて気になっています。
Youtubeなどの動画配信ソフトなどはRestAPIでクライアントとサーバで通信されていますか。
例えば、Youtubeで検索したら
①ブラウザからリクエストを投げる APIでGET?認証していたら、認証情報も一緒に送る。
②レスポンスとして、ユーザにおすすめの検索一覧の動画が出てくる。
Bodyには、画像情報が入っている。
③サムネをクリック(ここも、APIでリクエスト)
④レスポンスで動画ファイルが送られてくる。
⑤動画が再生
というAPIですべてやり取りされていると思っています。
そもそも、YoutubeなどのWEBってAPIでやり取りしていますか
サーバに直接行って、サーバ側でそのユーザ情報を持っていると、サーバがパンクしそうなので、
RESTAPIでやり取りしてるのかなっと思っています。。
また、APIでやり取りしている場合に、動画などのサイズがでかいファイルなどを返すことって可能なんですか?4Kなどあり、テキストしか返せないイメージがあります。
No.1ベストアンサー
- 回答日時:
YouTubeの仕様については公開されておらず、Webページのソースコードや公開情報を基に確認した内容を回答します。
これは2022年2月現在の時点での仕様であり、変更前の仕様や、非対応ブラウザでの挙動は確認していません。
①YouTubeがREST APIを用いて通信しているか。
REST APIを用いているのは間違いありません。例えばシークバーの操作や早送り、リアルタイムのコメント送受信等、ユーザがリクエスト(要求)した操作に対してレスポンス(結果)が即座に画面に反映されるものは、すべてRESTを用いたものです。(昔はFlash Playerを使用していました)
②動画データの配信をREST APIで行っているか
YouTubeの場合はRESTを使用しています。
が、使用しなくても動画の配信は可能です。
・使用しない場合
近年の動画再生においてはHTTP Live Streaming(HLS)という技術を用いています。バージョンの新しい、主要ブラウザでのみ使用可能です。
「主要ブラウザ」と言ったのは、古いバージョンのブラウザなどはHTML5に対応しておらず、HLSを使用することができません。
これはHTML5の標準機能です。videoタグを解析してサーバ上の動画ファイルを指定し、ストリーミングを行います。
以下のようなHTMLソースで記述ができます。
<video controlslist="nodownload" src="hoge.mp4"></video>
これは、imgタグと同じように「サーバ上のhoge.mp4をここに映し出せ」という命令です。つまりサーバはRESTなどとは関係なく、ブラウザがHTMLを解析した時点で動画を配信しています。ここで重要なのは、データの配信は中断できない、ということです。
気になるようであれば、以下リンクが詳しいです。
https://developer.mozilla.org/ja/docs/Web/HTML/E …
・YouTubeの場合
ソースコードを見ていると、上述のvideoタグでこのような記述がありました。
<video controlslist="nodownload" src="blob:https://www.youtube.com/難解な文字列"></video>
blobとは、バイナリデータ(ファイルを0と1で表したもの)を構造化した、データの集まりのことです。
YouTubeはこのblobをvideoタグで解析させています。このblobにはデータを分割するポイントや、4KやUHDなどの各フォーマット、字幕などの設定が含まれています。
すなわち、RESTによって操作しやすい効率的な動画を配信しています。
動画の分割ポイントなどの情報があれば、動画を止めてブラウザを閉じても分割ポイントまでのデータしか配信されないわけです。
③テキスト以外の巨大なデータをHTTP(あるいはREST)で送受信できるか
可能です。
上述しましたが、どのようなデータでも、バイナリ、すなわち1と0の文字列で表すことができます。そして、分割して送ることができます。
これを理解するためには、HTTPヘッダなどの知識が多少必要になってきます。
HTTP通信では、MIMEタイプというものを使用してデータの形式を指定します。
詳しくは以下リンクをご覧ください。
https://developer.mozilla.org/ja/docs/Web/HTTP/B …
Webアプリケーションは奥が深く、進化も早いものです。
理解するためには時間がかかると思います。また、勉強してもすぐに新しい技術が生まれるので生涯学習することだらけです。
ぜひ、勉強を頑張ってください。
色々知らない世界が詰まってました。
やはり、Restが主流のようですね。
今まで、文字列をjson形式で返すようなイメージしかなく4k動画などの膨大な01の羅列もBodyで返していくのは想像もつきません。。
めちゃくちゃ詳しく説明いただきありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
”Tortoise SVN” と ”Subversio...
-
「DNSサーバーを自動的に取得す...
-
DNSサーバを設定したのですがns...
-
サーバーというのとメインフレ...
-
同じ独自ドメインを2つのサーバ...
-
ntpサーバの置き方
-
NTPサーバーとの同期がとれませ...
-
Mail Distributorの使い方を教...
-
レンタルサーバーで全文検索nam...
-
APバッチサーバとWebAPサ...
-
LinuxからWindowsのbatファイル...
-
HULFTのコード変換について
-
pingは通るけどサーバに繋がら...
-
windowPE(ghost)のネットワーク...
-
プロキシサーバとDNSサーバにつ...
-
ワークグループ設定のPCの名前解決
-
応答を解析できません
-
同一のホスト名で何か問題があ...
-
エラーメールで"too many hops"...
-
パスワード設定していないユー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「DNSサーバーを自動的に取得す...
-
”Tortoise SVN” と ”Subversio...
-
DNSサーバを設定したのですがns...
-
同じ独自ドメインを2つのサーバ...
-
ワークグループ設定のPCの名前解決
-
サーバーというのとメインフレ...
-
LinuxからWindowsのbatファイル...
-
プロキシサーバとDNSサーバにつ...
-
gitとgiteaの違いについて
-
複数IPアドレスによるサーバ運...
-
pingは通るけどサーバに繋がら...
-
社内でプロキシサーバ(Squid)の...
-
Microsoft Outlookの受信日時が...
-
ntpサーバの置き方
-
ADサーバのスキーマ拡張の影響...
-
FTPサーバの構成について
-
windowPE(ghost)のネットワーク...
-
ホットスタンバイとロードバラ...
-
サーバルームの空気を換気したい
-
WSUSサーバの移行について
おすすめ情報