世の中のGithubリポジトリをランダムに巡ってみる
こんにちは!乱数によく振り回されるめぐみそです!
Githubは色んなコードがあって面白いですよね!トレンドを眺めるだけでもすごく面白いです。
先日、ぼーっと検索をしていたら、こんなリポジトリがありました。
https://github.com/RyanDavison/RandomRepo
これはどうやらGithubにたくさんあるリポジトリからランダムなリポジトリを表示してくれるみたいです。
やってみよう
https://ryandavison.github.io/RandomRepo/JAVASCRIPT/random_src.html にアクセスすると、リンクが出るので、このリンクをクリックするとランダムなリポジトリが表示されます。
中には何もないリポジトリもあったり ちょっと便利そうなリポジトリや 誰かのフォークの跡もあります ものすごい量の誰かのスクリプトまで
少しやるだけでもたくさんの掘り出し物があります。
ただ、何度かクリックするとわかりますが、どうも9年前や12年前などの古いリポジトリしか表示してくれないです。
みてみよう
仕組みが気になったのでソースコードを眺めてみました。
1function init(){
2 var number = getRandomIntInclusive(0, 60000000);
3
4 var xhr = new XMLHttpRequest();
5 xhr.open('GET', 'https://api.github.com/repositories?since=' + number, true);
6 xhr.send();
7
8 xhr.onreadystatechange = function(e){
9 openRepo(e, xhr)
10 };
11 }
12
13
14 function getRandomIntInclusive(min, max) {
15 min = Math.ceil(min);
16 max = Math.floor(max);
17 return Math.floor(Math.random() * (max - min + 1)) + min;
18 }
19
20
21
22 function openRepo (e, xhr){
23 if (xhr.readyState == 4 && xhr.status == 200) {
24 var full_name = JSON.parse(xhr.responseText)[0]['full_name'];
25 location.href = 'https://github.com/' + full_name;
26 }
27 }
28 init();
29 }
一部抜粋していますが、まとめるとGithubにはサイトができてから何番目のリポジトリが何かを取得するためのAPIがあるようで、そのAPIにランダムな数字を使うことでこの機能を実現しているようです。
しかしながら上記のコードでは60000000(6000万)を上限としており、サイトができてから60000000番目のリポジトリは9年前にできたものなので、一番新しいもので9年前までしか表示されなくなっていました。
変えてみよう
そこで新しいリポジトリを表示させるため、現在は何個リポジトリがあるかを調べました。
結果としては、985000000番目のリポジトリが3週間前に作られたリポジトリであることが判明しました。
0が多すぎると思ったそこのあなた!正解は9億8500万です。
この9年の間に9億リポジトリも作成されたと考えるとすごい量ですね...
ちなみに10億はまだありません。キリ番を狙いたいあなた!今がチャンスですよ!!!!私は狙いません。
上記のソースを985000000に変更して、ページをデプロイしてみました。
比較的新しめの誰かのやりかけ 2025年に作られた"frist" 自己紹介 相変わらず空っぽ
比較的新しめのリポジトリが掘れるようになりました。
やってみたい方はリンクを公開しているので、以下のページからどうぞ
https://randomrepo.megumiso.com
ソースもちゃんと公開しています。
https://github.com/megumisodotcom/randomrepo
危険性
さて、ここまで読んだ方の中には少し怖くなってしまった方もいると思います。
そうです。もしかしたらプライベートキーを間違えて晒してしまったリポジトリに出会うかもしれないことです。
今ではGithubやDiscordのトークンを晒したら自動ですぐに無効化してくれますが、それができるサービスは少数派です。
少しでも怖いなと思ったそこのあなた!すぐにプライベートリポジトリに変更しましょう。
おわり
今回はランダムなリポジトリを巡る旅をしてみました。
暇になると私はGithubのトレンドを眺めたりしていますが、それでも暇になったときの暇つぶしができて私は喜んでいます。
この記事も誰かの暇つぶしになればいいなと思います。