julesfeatherstonebooks via Pixabay
とある旅行予約サイトの「あなた以外に○○人が見ています」の表示
興味を引かれた話題があったので少し紹介する。とある旅行予約サイトに表示されている「今あなた以外に○○人が見ています(○○ people are looking at this flight)」という表示が、ランダムな数字だったという話だ(参照:
GIGAZINE、
Ophir Harpaz @ HackfestCA)。
こうした
同時接続数を表示するサイトは時折みかける。「このサイトは流行っているようだな」と思わせる効果があるのだろう。予約が必要なサイトなら
「売り切れないように早く買わなければ」と思わせる効果もあるはずだ。
これは現実の商売なら、サクラを雇って店の前に並ばせるようなものだ。そうした行為もネットなら簡単にできる。適当に数字を生成して画面に表示すればよい。そうすれば好きな数字を表示できる。サクラを雇うのと違ってお金も掛からない。人を騙すことになるので、やるべきではないが。
このように、数字だから客観性があるわけではない。
数字はいくらでも捏造できる。その数字が本物かどうか見抜く目が求められている。冒頭の話では「
38人も同時にチェックしているなんておかしい。多すぎる」と思い、調べてみたそうだ。
しかし、これがもっと少ない数字なら、そうした疑問も湧かなかっただろう。嘘を見抜くのは、とても難しい。
数字と言えば、その昔、ペニーオークションというものがあった
こうしたネット上の数字の操作で思い出すのは、
ペニーオークションだ。ペニーオークションとは、毎回の入札毎に手数料が必要になるネットオークションだ。小額からスタートして、何度も入札しているうちに手数料が高額になる。気付くと、商品自体は安く買えても、手数料で損をしているという状況が発生する。
また、多くのペニーオークションでは、
何度も入札させるために入札者に偽装したbotを使っていた。そのため、コンピューターのプログラムと入札合戦を繰り広げることになる。当然、入札をおこなうbotは手数料を払っていない。巧妙にお金を搾り取る仕組みだ。
ペニーオークションは「安く買えるかも」という期待と、「負けるものか」という対抗心を煽る仕組みを持っていた。
ペニーオークションが日本で流行り始めたのは2010年頃だ。スパムメールが大量に飛び交っていたので、当時調べた記録が残っている。6月頃から情報を見かけるようになり、9月に調査した。
当時、サイト運営のためのプログラムが裏で売られていたようで、雨後の筍のように似た作りのサイトが存在していた。それなりの大手も参入しており、DMM.com の「ポイントオークション」は、消費者庁から措置命令をくらっている(参照:
時事通信 – Yahoo!ニュース ※インターネットアーカイブ)。
ペニーオークションは、2012年に芸能界を巻き込んだ詐欺事件に発展した。ペニーオークション詐欺事件と呼ばれるもので、芸能人によるステルスマーケティングが大きく報道された(参照:
nikkansports.com)。この事件を曲がり角に、ペニーオークションは急速にネットから消えていったように記憶している。
こうした例のように、ネットでは表示する数字に嘘を混ぜることで、閲覧者の行動をコントロールしたり誘導したりすることがある。
また、嘘の数字ではなくても、見せ方によりユーザーを誤認させようとすることは多い。点数の平均値と思わせておいて、複雑な計算式を用いて、そうではない数字を見せることもある。
嘘とまでは言えなくても、ユーザーを惑わせることは、日常的におこなわれている。そうした行為は、推奨されるものではない。場合によっては違法にもなる。
さて、最初の「ランダムな訪問者数」の話に戻ろう。実は
「ランダム」というのは、プログラマーにとっては、とても関心の高い話題である。プログラムで使われるランダムには、様々な技術的な要素があるからだ。
現実の世界でランダムな数字を得るのは簡単だ。適当なサイコロを持って来て振ればよい。しかし、コンピューターの中にはサイコロはない。そこで「
擬似乱数」と呼ばれる、計算で求める、不規則に見える数字を使う。
この場合、計算した疑似乱数を元に、次の疑似乱数を順次計算する。1→19→7→31→……のように、次々と数字を作っていくのだ。この時、計算をおこなう前の最初の数字を
シード(種)と呼ぶ。そして、計算方法を
乱数生成プログラムや
擬似乱数生成法などと呼ぶ。この疑似乱数を求める計算は、とても奥が深い(参照:
良い乱数・悪い乱数)。
満遍なく、偏りがなく数字が出て欲しい。そして偶数、奇数、偶数、奇数……のような規則性がない方がよい。また、前の計算結果を元に計算する仕組みから、ぐるりと一周回ると、同じ数字の繰り返しが始まる。そうした周期が長い方がよい。
こうした条件を満たした良質な乱数は、科学の世界で求められる。大規模なシミュレーションをおこなう際には、可能な限りばらばらの数字のセットが必要になる。また、暗号の世界でも乱数が用いられる。その場合は、推測できない乱数を生成する必要がある。
それならば、良質な乱数を得るために複雑な計算をすればよいかというと、必ずしもそうではない。使用するマシンの性能によっては、精度は下げてもよいから高速に計算できた方がよいこともある。
たとえば古いゲーム機では、簡単に計算できる乱数が重宝された。また、ゲーム独自の結果を出すために、専用の乱数生成プログラムが用いられたりもした(参照:
4Gamer.net)。
計算の起点になるシードの取り方にも様々な工夫がある。固定の値を用いることもあれば、時間を元にシードを作ることもある。また、ハードウェアの物理的な振る舞いを記録しておき、現実世界の不規則さをコンピューター内に取り込む方法もある(参照:
/dev/random – Wikipedia)。計算前のシードの生成だけでも、様々なアイデアが存在して実際に利用されている。
冒頭の旅行予約サイトでは、
JavaScript の Math.random を利用してランダムな人数を作っていた。JavaScript の Math.random も、語り始めると面白い話題なのだが、ここでは割愛しておく。JavaScript は HTML 内で実行される。ユーザーが見ているWebページ内で計算していたから、すぐにランダムだとばれてしまった。さらに、ランダムな数字が表示される場所の名前が「view_notification_random」となっていた。隠す気があるのかないのかと思ってしまう。
というわけで、「ランダムな数字」はプログラマーにとって関心が高い話題だという話を最後に書いた。私自身も、常々関心を持っている領域である。
<文/柳井政和>