Will YouTube Ever Run Out Of Video IDs?

Tom Scott
21 Mar 201605:10

Summary

TLDRYouTubeのビデオには一意のIDがあり、そのIDは11文字の文字列で表されます。これにより、ビデオを特定し、参照することが可能です。YouTubeは、ビデオのアップロード量が膨大であることを考慮し、11文字の文字列で非常に大きな数値を表現できるため、Base 64を使用しています。また、安全上の問題を回避するために、連続したカウンターを避け、ビデオごとにランダムな数値を生成しています。Base 64を使用することで、73京786兆976兆294億838万206千464のビデオを表すことができます。これは、地球上の全人類が約18,000年間、1分間に1本ずつビデオをアップロードするのに十分な大きさです。YouTubeは将来のニーズを十分に計画しており、URLが不足する可能性は技術的にはありますが、実際にはそうであるとは言えません。もしもそうなった場合でも、1文字を追加するだけで解決可能です。

Takeaways

  • 📺 YouTubeの各動画には一意の11文字のIDが付いています。
  • 🌐 YouTubeは1分間に400時間もの動画がアップロードされるほどの規模を誇ります。
  • 🔢 人間は10進法で数え、コンピュータは2進法または16進法で計算します。
  • 📈 Base 64はコンピュータが扱いやすいし、人間が理解しやすくなっています。
  • 🔑 YouTubeの動画IDは、Base 64で表現されたランダムな数字です。
  • 🚫 動画のアップロードを全てのサーバーで同期する必要があるため、単純なカウントは避けられます。
  • 🛡️ 動画のIDを単純に1, 2, 3と数えると、セキュリティリスクを引き起こす可能性があります。
  • 🚫 インクリメンタルカウンターは、ウェブサイトの設計において避けるべき悪手です。
  • 🧮 Base 64を使用すると、非常に短い文字列で非常に大きな数値を表現できます。
  • 🌟 YouTubeの11文字のIDは、73の京と976の兆、294億の数千兆、464の万と206の数千の動画を表すことができます。
  • ⏳ 地球上の全人類が1分間に1本ずつ動画をアップロードした場合でも、18,000年は十分にカバーできます。
  • 🔗 YouTubeは将来のニーズを考慮して、URLの枯渇を未然に防いでいます。

Q & A

  • YouTubeのビデオには一意のIDが付いているとされていますが、それはどのようにして識別されるのですか?

    -YouTubeのビデオには、URL内に11文字の文字列があり、それがビデオを一意に識別します。

  • YouTubeは1分間に400時間ものビデオがアップロードされるとされていますが、ビデオIDが不足する可能性はありますか?

    -YouTubeは基数64を使用しているため、非常に多くのビデオIDを生成できます。実際には、11文字のIDで73京786兆976兆294億838万206千464のビデオを表すことができます。

  • 基数64とは何ですか?なぜYouTubeは基数64を使用するのですか?

    -基数64は、0から9、大文字のAからZ、小文字のaからz、そして2つの記号(ハイフンとアンダースコア)を使用する数値システムです。YouTubeは基数64を使用して、小さなスペースで大きな数値を表し、人間が読みやすいようにしています。

  • YouTubeがビデオのアップロードを処理する際に、なぜシーケンシャルなカウンターを使用しないのですか?

    -シーケンシャルなカウンターはセキュリティ上の問題を引き起こす可能性があり、誰もが簡単にすべてのビデオを列挙することができるためです。代わりに、YouTubeは各ビデオに対してランダムな数値を生成します。

  • YouTubeのビデオIDはどのように生成されるのですか?

    -YouTubeは各ビデオに対してランダムな数値を生成し、その数値が既に使われているかどうかをチェックします。もし使われていなければ、その数値をビデオIDとして使用します。

  • もしYouTubeがビデオIDを使いきったらどうなるでしょうか?

    -技術的には、YouTubeがビデオIDを使い切ることは可能です。しかし、実際にはそうする可能性は非常に低く、もしそうなった場合でも、ただ1文字を追加するだけで解決できます。

  • YouTubeのビデオIDは、なぜ人間が読むことが難しい2進法の代わりに基数16の16進数を使用するのですか?

    -16進数は、コンピュータが扱いやすい一方で、人間が理解するのが難しいためです。また、16は2の4乗で、コンピュータにとっても扱いやすい数字です。

  • YouTubeのビデオIDは、なぜ人間が読むことが困難な2進法を使用しないのですか?

    -2進法は非常に長い数字列になるため、人間が読むのは困難です。また、2進法はコンピュータが扱いやすいですが、人間にとっては読み書きが不便です。

  • YouTubeのビデオIDが基数64で表される場合、11文字のIDは何の数量のビデオを表すことができますか?

    -11文字の基数64のIDは、73京786兆976兆294億838万206千464のビデオを表すことができます。

  • YouTubeがビデオをアップロードする際に、なぜシーケンシャルなカウンターを使用しない方が安全ですか?

    -シーケンシャルなカウンターは、誰もが簡単にビデオIDを推測し、未公開のビデオにアクセスすることができるリスクがあります。ランダムなIDを使用することで、そのようなセキュリティリスクを減らすことができます。

  • ウェブサイトを構築する際に、シーケンシャルなカウンターを使用しないでくださいとアドバイスされていますが、なぜでしょうか?

    -シーケンシャルなカウンターを使用すると、競合他社が簡単に顧客数を推測したり、誰もが簡単にすべての記録をダウンロードしたり、他人の個人情報を閲覧したりできるリスクがあります。代わりにランダムな数値を使用することが推奨されています。

  • YouTubeがビデオIDを使い切った場合、どうすればさらに多くのIDを生成できますか?

    -YouTubeがビデオIDを使い切った場合、URLにもう1つの文字を追加することで、さらに多くのビデオIDを生成できます。

Outlines

00:00

😀 YouTubeビデオのユニークIDについて

YouTubeの各ビデオには、URL内の11文字の文字列で一意に識別されるユニークIDがあります。ビデオは数百万もの存在し、1分間に400時間のビデオがアップロードされるとされています。このような状況で、YouTubeはユニークなIDを使い切ることはないでしょうか?そこで、数値表現方法について話します。人間は10進法で数え、コンピュータは2進法で数えますが、人間には読みづらいため、しばしば16進法で表示されます。しかし、YouTubeはBase64を使用しており、0から9、大文字のAからZ、小文字のaからz、そしてハイフンとアンダースコアの2つの文字を用いて、コンピュータが扱いやすいかつ人間が読むこともできるようにしています。また、ビデオのアップロードを担当する各サーバー間でのカウントの同期が必要になるため、YouTubeは各ビデオに対してランダムな番号を生成し、使用可能かどうかをチェックしています。これにより、インクリメンタルカウンターが原因でセキュリティ上の問題が生じるのを避けることができます。YouTubeが使用する数値の大きさについて考えてみると、1文字のBase64で64のID番号が生まれるため、11文字のIDで73の京兆に及ぶビデオを扱えます。これは、地球上の全人類が1分間に1本ずつビデオをアップロードしても、約18,000年も続くほど十分な大きさです。

Mindmap

Keywords

💡YouTube動画ID

YouTube動画IDとは、YouTubeの各動画を一意に識別する11桁の文字列です。このIDはURL内に含まれており、動画を特定するため非常に重要です。ビデオのテーマに関連して、このIDはYouTubeが動画を追跡し、整理するために使用されます。

💡カウントシステム

カウントシステムとは、数字を表す方法を定めるシステムです。人間は10進法、つまり0から9の数字を使用します。コンピュータは2進法、つまりバイナリを使用し、時には16進法のhexadecimalで表すこともあります。このビデオでは、YouTubeが動画IDとしてBase 64を使用していることが説明されています。

💡Base 64

Base 64は、0から9、大文字のAからZ、小文字のaからz、そしてハイフンとアンダースコアの2つの記号を使用する、64進法の数値システムです。ビデオでは、Base 64を使用することで、短いスペースに大きな数値を格納し、人間が読むことができるようにすることが強調されています。

💡ランダムナンバー

ランダムナンバーとは、各動画に対して生成される一意の数字です。YouTubeは、動画IDとしてシーケンシャルな数字を使用する代わりに、重複を避けるためにランダムな数字を生成します。これは、セキュリティ上の問題を回避し、動画のリストを簡単に列挙することを難しくするためです。

💡シーケンシャルカウンター

シーケンシャルカウンターは、1, 2, 3などの連続した数字を使用してカウントを進める方法です。ビデオでは、シーケンシャルカウンターがセキュリティ上の問題を引き起こす可能性があると警告し、代わりにランダムナンバーの使用が推奨されています。

💡エントロピー

エントロピーとは、システムの無秩序またはランダム性の度合いを表す指標です。ビデオでは、Base 64を使用することでエントロピーが増加し、IDの数は非常に大きくなり、動画を一意に特定することが容易になることが説明されています。

💡セキュリティ

セキュリティとは、システムや情報に対して不正アクセスや悪用を防ぐための措施です。ビデオでは、シーケンシャルな動画IDがセキュリティリスクを引き起こす可能性があると説明し、ランダムなIDの使用が推奨されています。

💡人間が読める

人間が読めるとは、情報やデータが人間の理解しやすい形式で提示されていることを意味します。ビデオでは、Base 64を使用することで、動画IDが短くなりながらも人間が読むことができるようになることが強調されています。

💡コンピュータの扱いやすさ

コンピュータの扱いやすさとは、データがコンピュータによって処理されるのが簡単であることを意味します。ビデオでは、16進数の使用がコンピュータにとって扱いやすいと説明されており、同様にBase 64もコンピュータが処理しやすい形式であるとされています。

💡URL

URLとは、インターネット上の特定のリソースにアクセスするための一意のアドレスです。ビデオでは、YouTubeの動画IDがURLの一部であり、その文字列が動画を特定する役割を果たしていることが説明されています。

💡文字の選定

文字の選定とは、特定の文字を使用する理由やその利点を意味します。ビデオでは、YouTubeがURLでハイフンとアンダースコアを使用する理由が説明されており、それはBase 64の通常の文字セットであるスラッシュとプラスがURLで問題を引き起こすためです。

Highlights

YouTubeの各ビデオには一意のIDが付いており、そのIDはURL内の11文字の文字列で表されます。

YouTubeは、1分間に400時間のビデオがアップロードされるほどの数百万のビデオを持つとされています。

人々は10進法で数え、コンピュータは2進法で数えますが、人間には読みづらいため、16進数(ヘクス)で表示することがよくあります。

YouTubeは、2の6乗である64をベースとした64進法を使用し、これはコンピュータにとって扱いやすい数です。

64進法では、0から9、大文字のAからZ、小文字のaからz、および2つの記号を使用します。

YouTubeのURLで使用される64進法のIDは、単にランダムな数値です。

YouTubeが単純に1からカウントを始めなかった理由は、サーバー間のカウント同期が必要であるためです。

インクリメンタルカウンターは、セキュリティ上の問題を引き起こす可能性があり、YouTubeでは使用していません。

YouTubeの非公開ビデオは、パブリックには表示されませんが、リンクを共有することができます。

インクリメンタルカウンターは、サイトの設計において避けるべき悪い考えであり、ランダムな数値を使用することが推奨されます。

YouTubeが使用する数は、64進法で11文字を使用することで、73の京兆(10の15乗)と976の四兆(10の12乗)294億8385万206千464個のビデオに対応できます。

地球上のすべての人間が1分間に1つのビデオをアップロードする場合でも、YouTubeのIDが枯渇するまでに約18,000年の時間がかかります。

技術的には、YouTubeのURLが枯渇する可能性はありますが、実際にはそうする可能性は非常に低いです。

もしもYouTubeがURLを使い切った場合でも、1文字を追加することで問題を解決することができます。

YouTubeは、ビデオのアップロードを計画的に行っており、十分な余裕を持っています。

YouTubeのビデオIDは、人間が読むことができる大規模な数値を小さく保ちながら、ランダム性と安全性を確保しています。

プログラマーサム・ヒューズによって、64,512進法が提案されており、これはすべての言語の文字を使用していますが、実際には必要ではありません。

YouTubeは、URLに登場する可能性のある言葉、特に不適切な言葉を除外するために辞書チェックを行っていると予想されます。

Transcripts

play00:00

Every YouTube video has a unique ID.

play00:03

It's up in the URL: a string of eleven characters

play00:05

that uniquely identifies which video you want.

play00:08

Now, YouTube has millions and millions of videos.

play00:12

The last stats that they released said they have

play00:16

400 hours of video being uploaded every minute.

play00:20

So: are they ever going to run out of those IDs?

play00:23

Well, to find out, let's talk about counting systems.

play00:27

People count in Base 10. 0 to 9.

play00:29

That'll be, hopefully, familiar to you.

play00:31

Computers count in base 2, in binary,

play00:34

but that's difficult for humans to read,

play00:36

it gets too long to write really, really quickly,

play00:38

so often computers will display it in base 16, hexadecimal.

play00:43

You have 0 to 9, and then A to F,

play00:46

and then you start adding to the next column.

play00:49

Humans can't understand that easily,

play00:50

but it's efficient if we have to type it in somewhere,

play00:53

and 16 - 2 to the power of 4 - is also easy for computers to deal with.

play00:59

So how about Base 64?

play01:00

That'd be a ridiculous counting system, right? Except.

play01:05

64 is another one of those easy numbers for computers,

play01:08

it is 2 to the power of 6.

play01:10

And humans can get to 64 very easily:

play01:12

0 to 9, then capital letters A to Z,

play01:15

then small letters a to z, and two other characters.

play01:18

Most Base 64 uses slash and plus,

play01:20

but they don't work so well in URLs,

play01:22

so YouTube uses hyphen and underscore.

play01:25

That YouTube URL, that unique ID,

play01:28

is really just a random number in base 64.

play01:32

They could have have picked base 10 or base 16,

play01:34

but they didn't: they went with 64,

play01:36

because it will let you cram a huge number into a small space

play01:40

and still make it vaguely human readable.

play01:43

Author and programmer Sam Hughes, by the way,

play01:45

pushed this to the limit, and invented Base 65,536,

play01:51

which includes basically every character from every language.

play01:54

It is ridiculous and unnecessary,

play01:56

but when has that ever stopped programmers?

play01:59

So why didn't YouTube just start counting at 1 and work up?

play02:04

Well, first, they would have to synchronise their counting

play02:07

between all the servers handling the video uploads,

play02:11

or they'd have to assign each server a block of numbers.

play02:14

Either way, there's a lot of tracking to do,

play02:16

a lot of making sure that it's never duplicated.

play02:18

Instead, they just generate a random number for each video,

play02:21

see if it's already taken, and if not, use it.

play02:24

And secondly, it is a really, really bad idea

play02:28

to just count 1, 2, 3 and so on in URLs.

play02:32

Incremental counters, as they're called, can be a big security flaw:

play02:35

if you see video 283 up there, then you might wonder:

play02:39

what's video 284? Or video 282?

play02:42

It's easy to enumerate, as it's called,

play02:43

to run through the entire list.

play02:46

YouTube Unlisted videos, the ones that don't appear publicly

play02:49

but that you can send the link to people, those wouldn't work.

play02:52

And by the way? Lots of badly designed sites do use incremental counters.

play02:57

And it is a terrible idea.

play03:00

It might tell your competitors exactly how many customers you have,

play03:03

'cos they can just count them.

play03:04

It might let people download all your records easily,

play03:07

'cos they can just run through them.

play03:08

And in one site that someone in Florida emailed me about this week,

play03:12

it lets you look at other people's personal details.

play03:16

Don't use incremental counters if you're building a web site. Use a random number.

play03:21

Which brings me to the question:

play03:22

just how big are the numbers that YouTube uses?

play03:26

Well, let's work it out.

play03:28

One character of base 64 lets you have 64 ID numbers.

play03:32

Two characters? That's 64 by 64, or 4,096.

play03:37

Three characters? 64 times 64 times 64 -- or 64 to the power of 3.

play03:42

That is already more than a quarter of a million.

play03:45

And if we go to four? Well, now we're above 16 million.

play03:50

If you use Base 64, then you can assign an ID number

play03:53

to everyone who lives in London down there twice over,

play03:57

and you'll only need four characters.

play04:00

This gets big fast. We can keep on doing this,

play04:02

and by seven characters we're already at four quadrillion.

play04:06

Now, I assume that YouTube checks through a dictionary,

play04:10

and doesn't allow any actual words to appear up there --

play04:13

particularly anything rude.

play04:15

But that is going to be a tiny minority of the URLs,

play04:18

so for our purposes, we can pretty much just ignore that.

play04:22

At YouTube's 11 characters, we are at 73 quintillion 786 quadrillion

play04:27

976 trillion 294 billion 838 million

play04:30

206 thousand and 464 videos.

play04:32

That's enough for every single human on planet Earth

play04:35

to upload a video every minute for around 18,000 years.

play04:41

YouTube planned ahead.

play04:42

Can they run out of URLs? Technically, yes.

play04:45

Practically? No. And if they did?

play04:49

They could just add one more character.

play04:53

[Translating these subtitles? Add your name here!]

play04:57

Ha! One take! One take! Yes!

Rate This

5.0 / 5 (0 votes)

Related Tags
YouTubeビデオIDBase64エンコードセキュリティカウンターランダム大容量セキュアプログラミング
Do you need a summary in English?