YouTube の v の値が桁上がりする恐れについて - にぽたん研究所

October 20, 2006

このエントリーをはてなブックマークに追加
YouTube の動画のページの URL は、現在の仕様だと、
http://www.youtube.com/watch?v=***********
のような形式になっていて (www. は必須ではない)、この v= に続く値がどの動画であるかを指し示す値で、一意になっている。この値の形式がどうなっているのか、約 1,000 個の動画の URL を元に色々調べてみたところ、数字 [0-9]、アルファベットの大文字 [A-Z]、小文字 [a-z]、アンダースコア _、ハイフン - の、計 64 種類の文字 11 バイトで形成されていることがわかった。

Perl とかの正規表現であれば、
use strict;
use URI;

my $youtube = URI->new('http://www.youtube.com/watch?v=LIhbap3FlGc');
my %query = $youtube->query_form;
my $valid = $query{v} =~ /^[-\w]{11}$/;
というので判別出来る。

で、気になったのが、この 11 バイトというしばりについてなんですが、どうも足りなくなったという場合に、これの桁が増えて 12 桁とかになる可能性はどの程度のものなのか気になった。

単純に考えれば、64 (種類の文字) の 11 (バイト) 乗で、73,786,976,294,838,206,464 種類。
なので、この 11 バイトで 73,786,976,294,838,206,464 個の動画に一意な文字列を割り当てることが出来る。
ちなみに、もし一日に 1 億個の動画がアップされるとしたら (←まずありえないけど) どうも 20,202,208 世紀の世紀末頃にこの文字列は枯渇してしまう模様。
なので、「よし、俺、長生きするぞー!」と希望に胸踊らせている方は、念の為
my $valid = $query{v} =~ /^[-\w]{11,12}$/;
というカンジで、12 バイトでもマッチするように正規表現を書いておいたほうが良いでしょう。
12 バイトもあれば、1,292,940,049 世紀中頃までは枯渇しないので、11 バイトよりは安心ですね。

さて、くだらないこと書いてないで Shibuya.pm でも行くかな。

nipotan at 17:33 | Comments(0) | 技術 
このエントリーをはてなブックマークに追加

Post a comment

Name:
URL:
  Remember info?: Rate: Face    Star