KEIS BLOGは株式会社ケイズ・ソフトウェアが運営しています。

KEIS BLOG

フェルミ推定とは?システム開発におけるパフォーマンスチューニングへの応用法


亀井です。

今日は「フェルミ推定」という思考術についてお話ししようと思います。このフェルミ推定は限られた情報からざっくりとした答えを導き出すための有効なツールなんです。

我々はビジネスやシステム開発で、日々「どれくらいのリソースが必要か?」とか「この新機能でどれくらいアクセスが増えるのか?」といった曖昧な問いに直面します。そんな時、フェルミ推定は「とりあえずの答え」を示してくれる心強い味方になります。

 


1. フェルミ推定とは?

フェルミ推定の歴史

この手法、物理学者エンリコ・フェルミにちなんでいます。フェルミは限られた情報から、ものすごく的を射た推定をする名人として知られています。「シカゴのピアノ調律師が何人いる?」と聞かれた時、彼は情報を細かく分解して、短時間で合理的な推定値を叩き出しました。

基本的な考え方

ポイントは、「複雑な問題をいきなり正確に解こうとしない」ということ。

フェルミ推定の基本は、「複雑な問題を単純な要素に分解し、それぞれをおおよその値で推定し、最終的に合計する」という事です。

例えば、「東京にピアノ調律師は何人いるか?」といった質問に対して、以下のように段階的に推定を行います。

  1. 東京の人口は約1,400万人。
  2. 1世帯あたり平均3人。
  3. ピアノを持っている世帯の割合は約5%。
  4. ピアノを持つ世帯のうち、調律が必要な割合は約10%。
  5. 1人の調律師が1日に約4台調律できる。
  6. 年間稼働日数は約250日。

これらを組み合わせて、東京に必要なピアノ調律師の数を推定します。


2. フェルミ推定の基本テクニック

2.1 分解する

大きな問題を小さな要素に分解します。これにより、一つ一つの要素をより簡単に推定できるようになります。

2.2 推測する

各要素について、過去のデータや経験、常識を基におおよその値を推測します。正確さよりも概算が重要です。

2.3 合計する

分解した要素の推定値を合計して、最終的な答えを導き出します。


3. フェルミ推定のシステム開発への応用

パフォーマンスチューニングとは?

システム開発におけるパフォーマンスチューニングとは、システムの動作速度や効率を最適化するプロセスです。具体的には、レスポンスタイムの短縮やリソースの有効活用などが含まれます。

フェルミ推定を用いたリソースの見積もり

パフォーマンスチューニングにおいて、リソースの適切な見積もりは非常に重要です。ここでフェルミ推定が役立ちます。例えば、新しい機能を追加する際に、必要なサーバーの台数やCPUの性能を予測する際にフェルミ推定を活用できます。

実例:ウェブアプリケーションのトラフィック予測

問題: 新しいキャンペーンを開始するにあたり、予想されるウェブサイトのアクセス数に対応できるサーバーリソースを見積もりたい。まあ、定番のやつですね。

フェルミ推定のステップ:

  1. 現在のユーザー数: 月間100万人。
  2. キャンペーンの効果: アクセス数が2倍になると予測。
  3. 一人当たりのリクエスト数: 1日あたり平均5リクエスト。
  4. サーバー1台あたりの処理能力: 1秒間に100リクエスト。

計算:

  • キャンペーン後の月間アクセス数: 200万人。
  • 日間アクセス数: 約66,666人。
  • 日間リクエスト数: 66,666人 × 5リクエスト = 333,330リクエスト。
  • 秒間リクエスト数: 333,330 ÷ 86,400 ≈ 3.85リクエスト/秒。
  • 必要なサーバー数: 3.85 ÷ 100 ≈ 0.04台 → 最低1台。

結論: キャンペーン開始に伴い、サーバーリソースは現状のままで十分対応可能。

このように、フェルミ推定を用いることで、大まかなリソース見積もりを迅速に行うことができます。もちろん、詳細なモニタリングや実測値も重要ですが、初期段階での指針として非常に有用です。


4. フェルミ推定を使うメリットと限界

メリット

  • 迅速な意思決定: 詳細なデータがなくても、大まかな見積もりができるため、迅速な意思決定が可能。
  • 問題の理解: 問題を分解し、各要素を考える過程で、問題の本質を理解しやすくなる。
  • リソース節約: 詳細な分析を行う前に、必要なリソースの大まかな範囲を把握できる。

限界

  • 精度の低さ: あくまで概算であり、正確な値を求めるものではない。
  • バイアスの影響: 推測に個人の経験や知識が影響し、誤差が生じる可能性がある。
  • 複雑な問題には不向き: 要素が多すぎたり、相互に依存する場合には、フェルミ推定だけでは不十分。

5. フェルミ推定をマスターするための練習方法

日常生活での練習

  • スーパーの品数を推定: 自宅近くのスーパーにある商品の数をざっくりと推定してみましょう。
  • 本のページ数を推定: 読んだことのない本のページ数を推定し、実際と比較する。

システム開発での練習

  • アクセス数の推定: 新機能のリリース前に、予想されるユーザーアクセス数を推定してみる。
  • リソース消費の推定: 新しいサービスを追加する際に、必要なCPUやメモリの量をフェルミ推定で見積もる。

オンラインリソースの活用

  • フェルミ推定の問題集: インターネット上には様々なフェルミ推定の問題が公開されています。これらを解くことで、思考のトレーニングができます。
  • コミュニティ参加: フェルミ推定に興味を持つ人々が集まるオンラインコミュニティに参加し、他の人の推定方法を学ぶ。

6. まとめ

フェルミ推定は、限られた情報から迅速かつ概算的な見積もりを行うための強力なツールです。システム開発においても、パフォーマンスチューニングやリソースの見積もりに活用することで、効率的な開発プロセスをサポートします。

今日学んだこと

  • フェルミ推定の基本概念と歴史
  • 分解、推測、合計というステップを活用した推定方法
  • システム開発における具体的な応用例
  • フェルミ推定のメリットと限界
  • マスターするための実践的な練習方法

フェルミ推定を活用することで、複雑な問題にも大胆に挑戦できるようになります。ぜひ、日常生活や仕事の中でフェルミ推定を取り入れ、思考力と問題解決能力を高めてみてください!


練習するための本もあるみたいですね。

  1. 『地頭力を鍛える』:
    • フェルミ推定の基本的な考え方や問題解決の手法を解説しています。
  2. 『ロジカルシンキングを超える戦略思考 フェルミ推定の技術』:
    • フェルミ推定を活用した戦略的思考法を学べます。
  3. 『フェルミ推定力養成ドリル』:
    • 実践的な問題を通じてフェルミ推定のスキルを磨けます。