<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Freshness · 仁才徳</title>
    <link>https://jared.lynskey.co.nz/ja/tags/freshness/</link>
    <description>ソフトウェアエンジニアリングと開発組織のリーダーシップについて。評価、採用とチームの拡大、CI/CD、DevOps モニタリング、エージェンティック AI。ソウルより。</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <copyright>© 2026 仁才徳</copyright>
    <lastBuildDate>Wed, 28 Oct 2026 00:00:00 +1300</lastBuildDate>
    <atom:link href="https://jared.lynskey.co.nz/ja/tags/freshness/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>フィードのランキングアルゴリズムは、古い投稿をいつ埋もれさせるのか</title>
      <link>https://jared.lynskey.co.nz/ja/posts/2023/2023-09-27-simulating-views/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/ja/posts/2023/2023-09-27-simulating-views/</guid>
      <pubDate>Wed, 27 Sep 2023 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>Content Ranking</category>
      <category>Decay</category>
      <category>Freshness</category>
      <category>Engagement</category>
      <description>フィードのランキングアルゴリズムが、減衰関数を使って鮮度とエンゲージメントを天秤にかける仕組みを、コンテンツフィードを仕事にしている立場から解説します。</description>
      <content:encoded><![CDATA[<p>コンテンツプラットフォームで働いているので、ユーザーの目には決して見えない、ある問いについて人より長く考えています。「フィードはいつ、そのコンテンツを表示するのをやめるべきか？」という問いです。</p>
<p>コンテンツは古くなります。アプリを開く人は新しい情報を求めていて、フィードはそれに応えなければなりません。とはいえ、先月の素晴らしい投稿が「もう新しくない」というだけで消えるのもおかしい。このトレードオフをモデル化する定番の手法が減衰関数で、名前から想像するよりずっとシンプルです。</p>

<h4 class="relative group">鮮度は大事、ただしどこでも同じではない
    <div id="鮮度は大事ただしどこでも同じではない" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e9%ae%ae%e5%ba%a6%e3%81%af%e5%a4%a7%e4%ba%8b%e3%81%9f%e3%81%a0%e3%81%97%e3%81%a9%e3%81%93%e3%81%a7%e3%82%82%e5%90%8c%e3%81%98%e3%81%a7%e3%81%af%e3%81%aa%e3%81%84" aria-label="アンカー">#</a>
    </span>
    
</h4>
<p>ニュースサイトやSNSのフィードを開くとき、たいてい求めているのは最新の情報です。ニュースや金融市場のような動きの速い領域では、先週のコンテンツはただの重りなので、ランキングは新しさに大きく寄ります。</p>
<p>ただ、どの領域もそうだとは限りません。学術論文や長編ジャーナリズムの価値は時間が経っても変わらず、むしろ上がることさえあります。コンテンツの古さはほとんどのランキングシステムで意味を持ちますが、どれだけの重みを与えるべきかは、何をランク付けしているか次第です。</p>

<h4 class="relative group">指数減衰でフェードをモデル化する
    <div id="指数減衰でフェードをモデル化する" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e6%8c%87%e6%95%b0%e6%b8%9b%e8%a1%b0%e3%81%a7%e3%83%95%e3%82%a7%e3%83%bc%e3%83%89%e3%82%92%e3%83%a2%e3%83%87%e3%83%ab%e5%8c%96%e3%81%99%e3%82%8b" aria-label="アンカー">#</a>
    </span>
    
</h4>
<p>関連性が薄れていく様子をモデル化する定番は指数減衰です。古くなるほど、体感的な価値は加速度的に落ちていきます。いちばん単純な形はこうです。</p>
<p><code>relevance = e^(-decay_rate × age)</code></p>
<p>relevance はそのコンテンツの現在の価値、decay_rate（減衰率）は価値を失うスピード、age は通常、公開からの日数です。</p>
<p>このモデルの良いところは、つまみが1つしかないことです。減衰率を調整するだけで、コンテンツの旬を数時間にするか、数日にするか、数週間にするかを決められます。設定項目はそれで全部です。</p>

<h4 class="relative group">エンゲージメントが良いコンテンツを生かし続ける
    <div id="エンゲージメントが良いコンテンツを生かし続ける" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e3%82%a8%e3%83%b3%e3%82%b2%e3%83%bc%e3%82%b8%e3%83%a1%e3%83%b3%e3%83%88%e3%81%8c%e8%89%af%e3%81%84%e3%82%b3%e3%83%b3%e3%83%86%e3%83%b3%e3%83%84%e3%82%92%e7%94%9f%e3%81%8b%e3%81%97%e7%b6%9a%e3%81%91%e3%82%8b" aria-label="アンカー">#</a>
    </span>
    
</h4>
<p>古さは話の半分でしかありません。閲覧数、いいね、コメントは「実際に人が関心を持っているか」を教えてくれる指標で、これを無視したランキングは、良い投稿も悪い投稿もまとめて埋めてしまいます。解決策は単純で、両者を掛け合わせるだけです。</p>
<p><code>score = engagement × e^(-decay_rate × age)</code></p>
<p>こうすると、エンゲージメントの強い古い投稿は、平凡な新着投稿より上位に残れます。ただし減衰項が縮んでいくぶん、順位を維持するにはより多くのエンゲージメントが必要になっていきます。</p>
<p>実際のライフサイクルはこんな流れです。新しい投稿は鮮度ブーストをもらい、見てもらうチャンスを得る。閲覧され、いいねされ、コメントが付けばスコアは伸びる。日が経つと減衰がスコアを削っていき、エンゲージメントが続いている投稿だけが上位に残る。新しいコンテンツにはチャンスが与えられ、本当に良いコンテンツは居場所を自力で守る、という構図です。</p>
<p>種明かしをすれば、これで全部です。指数関数が1つ、エンゲージメント項が1つ、回すつまみが1つ。難しいのは自分たちのコンテンツに合った減衰率を決めるところで、そこは完全に判断の世界です。</p>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2023/2023-09-27-simulating-views/featured.jpeg" medium="image" type="image/jpeg" />
    </item>
  </channel>
</rss>
