最近、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で質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「DNSサーバーを自動的に取得す...
-
”Tortoise SVN” と ”Subversio...
-
DNSサーバを設定したのですがns...
-
同じ独自ドメインを2つのサーバ...
-
プロキシサーバとDNSサーバにつ...
-
ワークグループ設定のPCの名前解決
-
ghostサーバのようなものを探し...
-
gitとgiteaの違いについて
-
Mail Distributorの使い方を教...
-
APバッチサーバとWebAPサ...
-
複数IPアドレスによるサーバ運...
-
サーバーを何台立てればいいで...
-
ハウジングサービスとMSPの違い...
-
外部に公開したサーバを立てるには
-
LINUXのNTPサーバ同期について
-
1IPでのサーバ構築
-
サーバーの2台構成の必要性
-
専用サーバ(オーダーメイド)...
-
NFSクライアントでlockdがハン...
-
ntpサーバの置き方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「DNSサーバーを自動的に取得す...
-
”Tortoise SVN” と ”Subversio...
-
同じ独自ドメインを2つのサーバ...
-
DNSサーバを設定したのですがns...
-
ワークグループ設定のPCの名前解決
-
サーバーというのとメインフレ...
-
プロキシサーバとDNSサーバにつ...
-
LinuxからWindowsのbatファイル...
-
gitとgiteaの違いについて
-
pingは通るけどサーバに繋がら...
-
複数IPアドレスによるサーバ運...
-
APバッチサーバとWebAPサ...
-
サーバルームの空気を換気したい
-
社内でプロキシサーバ(Squid)の...
-
windowPE(ghost)のネットワーク...
-
ntpサーバの置き方
-
FTPサーバの構成について
-
Mail Distributorの使い方を教...
-
Microsoft Outlookの受信日時が...
-
NFSクライアントでlockdがハン...
おすすめ情報