【売れない商品が宝の山?】「ロングテール」と「フラクタル」の奇妙な関係

こんにちは。ゆうせいです。

あなたはネットショッピングをしていて、ふと「こんなマニアックな商品、一体誰が買うんだろう?」と思ったことはありませんか?

実は、その「誰も買わなさそうな商品」こそが、Amazonのような巨大企業の利益を支えているとしたら、信じられますか!

今日は、Web業界で必ず耳にする「ロングテール」という言葉と、それが自然界の「フラクタル」という法則とどうつながっているのかをお話しします。

新人エンジニアの皆さんがこの仕組みを理解すると、サーバーの負荷対策やデータベースの設計といった、システムの見え方がガラリと変わりますよ。

ロングテールってなに?

まずは「ロングテール」の正体から暴いていきましょう。

これは、マーケティングの世界で使われる言葉です。

お店の商品の売上をグラフにしてみると分かりやすいです。

縦軸に「売上」、横軸に「人気順」に商品を並べたと想像してください。

左側には、爆発的に売れている人気商品(ヘッド)が高い山を作ります。しかし、右に行くにつれて売上は急激に下がり、あとは地面スレスレの低い線が、右の方へずーっと長く伸びていきますよね。

この右側に長く伸びた、あまり売れない商品群の部分が、まるで「恐竜の長いしっぽ(テール)」のように見えることから、「ロングテール」と呼ばれています。

塵も積もれば山となる

普通のお店(コンビニやスーパー)では、棚のスペースに限りがあるため、売れる「ヘッド」の商品しか置きません。

しかし、ネットショップには棚の制限がありません。

1年に1個しか売れないような「しっぽ」の商品でも、数百万種類集めれば、その売上の合計は、なんと人気商品たちの合計売上を上回ることがあるのです。これがロングテールの魔法です。

フラクタルとの不思議な関係

さて、ここからがエンジニアとして面白い部分です。

このロングテールのグラフ、実は「フラクタル」という構造と深い関係があります。

フラクタルとは、「拡大しても拡大しても、全体と同じ形が現れる構造(自己相似性)」のことです。

野菜のブロッコリーを思い浮かべてください。

一房ちぎって見ても、元のブロッコリーと同じような形をしていませんか? さらに小さくちぎっても、やっぱり同じ形です。自然界では、リアス式海岸の形や、稲妻の形、そして私たちの血管の分岐なんかもフラクタル構造です。

拡大しても「しっぽ」はなくならない

ロングテールのグラフも、実はこれと同じ性質を持っています。

たとえば、「音楽CD」というジャンル全体でロングテールが見られたとします。

そこから「ジャズ」というニッチなジャンルだけを切り出して拡大してみましょう。するとどうでしょう。その中にもやっぱり、少数の超人気盤(ヘッド)と、無数のマイナー盤(テール)が存在するのです。

さらに「1960年代のフリージャズ」まで絞り込んでも、やはりそこには小さなロングテールが現れます。

つまり、どれだけマニアックな市場(ニッチ)に潜り込んでも、そこには必ず「人気」と「不人気」の構造が金太郎飴のように現れるのです。これを数学的には「べき乗則」や「べき分布」と呼びます。

数式で書くと、頻度 f(x) は、ある定数 a と指数 k を使って、次のような関係になります。

f(x) \propto a \times x ^{-k}

難しそうに見えますが、「順位 x が下がると、頻度 f(x) はものすごい勢いで下がるけれど、決してゼロにはならない」という意味だと思ってください。

エンジニアが知っておくべき「テールの代償」

「ふーん、面白いね」で終わらせてはいけません!

このロングテールの性質は、システムを作る私たちにとって、無視できないメリットとデメリットをもたらすからです。

メリット:無限のコンテンツを扱える

ロングテールの力を活かすシステム(検索エンジンやECサイト)を作れば、ユーザーのあらゆるニッチな要望に応えることができます。これはサービスの価値を爆発的に高めます。

デメリット:キャッシュが効かない!

ここが重要です。エンジニアにとっての天敵、それは「キャッシュ効率の悪さ」です。

Webシステムでは、よくアクセスされるデータ(ヘッド部分)をメモリなどの高速な場所に一時保存(キャッシュ)して、表示を速くします。

しかし、ロングテールの部分にある膨大な数の「たまにしかアクセスされないデータ」は、どうすればいいでしょうか?

種類が多すぎて、すべてをキャッシュに乗せることは不可能です。かといって、キャッシュに乗せないと、毎回データベースから読み込むことになり、遅くなります。

「アクセスの大半はヘッドに集中するが、データ量の大半はテールにある」

このジレンマと戦うのが、大規模システムを設計するエンジニアの腕の見せ所なのです。

今後の学習の指針

ロングテールとフラクタルの関係、少しイメージできましたか?

一見バラバラに見えるデータの中に、美しい数学的なルールが隠れているなんて、ロマンがありますよね。

最後に、これからさらに深く学びたいあなたへ、次のステップを提案します。

  1. 「複雑ネットワーク」について調べるGoogleの検索アルゴリズムや、SNSの友人のつながりも、実はこのロングテール(スケールフリーネットワーク)の性質を持っています。
  2. NoSQLデータベースを触ってみるロングテールのような膨大な種類のデータを扱うには、従来のリレーショナルデータベース(RDB)よりも、Key-Value型などのNoSQLが向いている場合があります。RedisやDynamoDBなどを調べてみてください。
  3. パレートの法則(80:20の法則)を再確認する「売上の8割は2割の商品が生み出す」という法則と、ロングテールがどう違うのか、比較してみると理解が深まります。

データの波に溺れず、その波の「形」を見極められるエンジニアになってくださいね!

それでは、また次回の記事でお会いしましょう。

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。