本文へスキップ
Estontinc

公開日 5 分で読めます

アプリが遅いのはなぜ?サーバーを増強する前にプロファイリングで本当の原因を見つける方法

アプリが遅い原因は、サーバーの小ささではなく、無駄の多い一部のコードであることがよくあります。プロファイリングの仕組み、Cloudflareの事例、サーバー増強前のチェックリストを紹介します。

高さの異なるガラスの棒の上にあるガラスの虫眼鏡。プロファイリングでアプリが遅い原因を見つけるイメージ

アプリが遅いのはなぜでしょうか。製品が重くなったり落ちたりすると、多くの場合はより大きなサーバーに費用をかけようとします。しかし本当の原因はずっと小さいことがあります。同じ処理を何度も繰り返す関数や、裏で動き続けている古いコードです。それを見つける方法がプロファイリングです。2026年10月9日、CloudflareはWorkersとDurable Objectsに向けて、本番環境で直接取得できるオンデマンドのCPU・メモリプロファイリングを公開しました。

本記事では、プロファイリングとは何か、Cloudflareが自社サービスで新ツールを使って見つけたこと、そしてどんなアプリにも使えるパフォーマンス問題の探し方を解説します。

プロファイリングとは

プロファイラーは、アプリが動作中にどこで時間とメモリを使っているかを記録します。Cloudflareによると、ログや集計された指標だけでは限界がありますが、CPUやメモリのプロファイリングなら、どの関数がCPUを使い、メモリを確保しているかを正確に示せます。

結果は通常フレームグラフで表示されます。各四角形は1つの関数呼び出しで、その幅はその関数が使うCPU時間やメモリの量を表します。最も幅の広い四角形から確認するのが基本です。

Cloudflareが公開した機能

  • CPUとメモリのプロファイル: WorkersとDurable Objectsを対象に、ダッシュボードのObservabilityタブまたはCLIから必要なときに取得できます。
  • 本番環境のデータ: 実際のトラフィックを処理しているWorkerから取得します。Cloudflareは、アプリを理解する最善の方法は本番環境でプロファイリングすることだとしています。
  • インタラクティブなフレームグラフ: ダッシュボードで詳しく確認でき、さらに分析するためにプロファイルファイルをダウンロードすることもできます。
  • 名前でDurable Objectsを指定: 特定のオブジェクトを、どこで動いていてもプロファイリングできます。

知っておきたい制約が1つあります。プロファイラーは新しいインスタンスを起動せず実際の実行を観察するため、プロファイリングにはWorkerに十分なトラフィックが必要です。

Cloudflareでのプロファイリングの成果

Cloudflareでのプロファイリングの成果:関数が2.7倍高速化、メモリ割り当ての66.7%が無効化したはずのコードから、修正後に128 MBの上限まで約10 MBの余裕

Cloudflareは自社チームの実例を2つ紹介しています。

  • 重複した処理: R2ストレージを担うWorkerで、JSONの補助関数が同じデータ構造を何度もたどっていました。重複を取り除いた結果、その関数は2.7倍高速になりました。
  • 隠れたメモリの問題: 別のWorkerは「Exceeded Memory」エラーで失敗し続けており、P999のメモリ使用量は上限128 MBに対して約133 MBでした。ヒーププロファイルにより、無効化したはずの監視コードが割り当ての約66.7%を占めていることがわかりました。削除後、上限まで約10 MBの余裕ができました。

どちらの問題も、大きなサーバーでは解決しなかったでしょう。いずれも、誰かがプロファイルを見た時点で数分で見つかりました。

アプリが遅い本当の原因を見つける手順

アプリが遅い本当の原因を見つける手順:まず計測する、本番環境でプロファイリングする、最も幅の広い箇所を直す、もう一度計測する

私たちのプロジェクト経験にもとづき、プラットフォームを問わず次の順序で進めます。

  1. まず計測する: どのページやリクエストが、誰にとって、どれだけ遅いのかを把握します。数字がなければ、どの修正も推測になります。
  2. 可能なら本番環境でプロファイリングする: 実際のトラフィックはテスト環境とは異なる動きをします。
  3. 最も幅の広い箇所を直す: 怪しく見える箇所ではなく、CPUやメモリを最も使っている関数から着手します。
  4. もう一度計測する: 修正前後の数字を残し、効果を確認します。

サーバーを増強する前のチェックリスト

サーバー増強前のチェックリスト:遅いリクエストを把握する、CPUプロファイルを取る、メモリプロファイルを取る、重複した処理を確認する、不要なコードを削除する、エラーと遅延のアラートを設定する
  • 遅いリクエストを把握する: どのくらいの頻度で起きているかも確認します。
  • CPUプロファイルを取る: 処理時間がどこで使われているかを確認します。
  • メモリプロファイルを取る: クラッシュやメモリエラーがある場合に有効です。
  • 重複した処理を確認する: 同じ計算や呼び出しを2回行っていないかを見ます。
  • 不要なコードを削除する: 一部だけ無効化された機能も含みます。
  • エラーと遅延のアラートを設定する: 次の問題をユーザーより先に見つけられます。

アプリをCloudflare Workersへ移行する場合は、Deno Deployからの移行の記事で安全な進め方を紹介しています。修正を小さくレビューされたステップでリリースすると、パフォーマンス改善の効果も測りやすくなります。

ビジネスへの影響

遅いアプリは顧客を遠ざけ、大きなサーバーは毎月のコストを押し上げます。プロファイリングは、漠然とした不満を特定のコードの1行に変えてくれることがよくあります。ユーザーから苦情が来てからではなく、定期的な保守の一部としてパフォーマンスを確認することをおすすめします。

Estontincのサポート

Estontincはマラン(インドネシア)のソフトウェア開発会社で、6年以上にわたり100件以上のプロジェクトと50社以上のクライアントを支援してきました。クラウド・DevOpsチームが監視、アラート、プロファイリングを整え、Web開発サービスで遅いアプリや不安定なアプリの原因となるコードを、修正前後の数字とともに改善します。

保守サービスにはバグ修正、監視、バックアップが含まれ、リリース後もパフォーマンスを維持します。お問い合わせページから、アプリの遅いと感じる部分をお聞かせください。24時間以内にご返信します。

よくある質問

アプリが遅いのはなぜですか?

よくある原因は、必要以上の処理を行う関数、重い処理の繰り返し呼び出し、無効化したはずのコードによるメモリ使用、遅いデータベースやネットワークのリクエストです。プロファイリングで最もCPUやメモリを使う関数がわかるため、推測ではなく本当の原因を直せます。

フレームグラフとは何ですか?

プロファイルを視覚的にまとめた図です。各四角形は関数呼び出しを表し、幅はその関数が使うCPU時間やメモリの量を示します。最も幅の広い四角形が、パフォーマンス問題を探し始めるのに最適な場所です。

Cloudflareは2026年10月9日に何を公開しましたか?

WorkersとDurable Objects向けのオンデマンドCPU・メモリプロファイリングです。ObservabilityタブやCLIから稼働中のWorkerのプロファイルを取得し、インタラクティブなフレームグラフで確認し、さらに分析するためにダウンロードできます。

アプリが遅いときはサーバーを増強すべきですか?

まず計測とプロファイリングを行いましょう。Cloudflareの事例では、問題の原因はリソース不足ではなく、重複した処理や残っていたコードでした。大きなサーバーは一時的に症状を隠せますが、コードを直す方が根本的な解決になり、運用コストも下がります。

出典

この記事の事実と数値は、以下の公式情報に基づいています。

  • Cloud & DevOps
  • Web development
  • Cloudflare
  • Performance
すべての記事を見る

アイデアを、動くソフトウェアに。

つくりたいものをお聞かせください。明確な計画、スケジュール、見積もりを無料でご提案します。

  • 無料相談
  • 24 時間以内に返信
  • NDA 締結可