カテゴリ: Flask 更新日: 2026/03/23

Flaskのパフォーマンス監視ツール活用ガイド!New RelicやPrometheusでアプリを高速化

Flaskのパフォーマンス監視ツール(New Relic, Prometheusなど)活用法
Flaskのパフォーマンス監視ツール(New Relic, Prometheusなど)活用法

先生と生徒の会話形式で理解しよう

生徒

「FlaskでWebアプリを作ってみたのですが、時々動きが重くなるんです。どこが悪いのか調べる方法はありますか?」

先生

「そんな時はパフォーマンス監視ツールを使ってみましょう。アプリの健康状態をチェックする健康診断のようなものですよ。」

生徒

「健康診断ですか!具体的にどんなツールがあって、どうやって使うんですか?」

先生

「New RelicやPrometheusといった有名な道具があります。それらを使って、アプリの遅い原因を突き止める方法を詳しく見ていきましょう!」

1. パフォーマンス監視とは?初心者向けにやさしく解説

1. パフォーマンス監視とは?初心者向けにやさしく解説
1. パフォーマンス監視とは?初心者向けにやさしく解説

Webアプリのパフォーマンス監視とは、一言でいうと「あなたの作ったプログラムが、今どんな様子で動いているかをグラフや数字で見えるようにすること」です。プログラミング未経験の方にとって、プログラムの動きは目に見えない魔法のように感じるかもしれません。しかし、実際にはコンピュータの中で、計算をしたり、データを保存したりという作業が絶え間なく行われています。

例えば、人気のある料理店を想像してください。お客さんが「料理がなかなか来ない」と怒っているとき、原因はどこにあるでしょうか?「キッチンが狭すぎるのか」「料理人が足りないのか」「材料を切るのに時間がかかっているのか」といった原因を突き止めないと、お店は改善できません。これと同じことを、Flaskで作ったWebアプリで行うのがパフォーマンス監視です。

2. なぜ監視ツールが必要なの?

2. なぜ監視ツールが必要なの?
2. なぜ監視ツールが必要なの?

自分のパソコンだけで動かしているときは気づきにくいのですが、インターネットに公開して多くの人が一斉にアクセスすると、予期せぬ場所でブレーキがかかることがあります。これをボトルネックと呼びます。ボトルネックは「瓶の首」という意味で、太い瓶でも首の部分が細ければ中身が少しずつしか出ないことから、全体のスピードを遅くしている原因箇所を指す言葉として使われます。

監視ツールを使わずに原因を探すのは、真っ暗な部屋で落とし物を探すようなものです。ツールを使えば、どこで時間がかかっているのかが光り輝いて見えるようになります。これにより、エンジニアは「データベースの読み込みが遅いからここを直そう」と、ピンポイントで修正ができるようになります。

3. New Relic(ニューレリック)の特徴と使い方

3. New Relic(ニューレリック)の特徴と使い方
3. New Relic(ニューレリック)の特徴と使い方

New Relicは、世界中のプロの開発者が使っている非常に強力なツールです。最大の特徴は、設定がとても簡単で、インストールするだけで勝手にグラフを作ってくれる点にあります。専門用語ではAPM(アプリケーション・パフォーマンス・モニタリング)と呼ばれます。アプリの心拍数や血圧を常に測ってくれる専属の医者のような存在です。

New Relicを使うと、どのページを表示するのに何秒かかっているか、プログラムのどの部分が一番重いのか、といった情報が綺麗な画面で一目でわかります。Pythonのプログラムに少し魔法のコードを加えるだけで、すぐに監視が始まります。


# New Relicを使うための基本的な準備例
# 実際には専用のパッケージをインストールして設定ファイルを用意します

import newrelic.agent
# 監視をスタートする命令です
newrelic.agent.initialize('newrelic.ini')

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return "New Relicでこのページの動きを監視しています!"

if __name__ == '__main__':
    app.run()

4. Prometheus(プロメテウス)とGrafanaの組み合わせ

4. Prometheus(プロメテウス)とGrafanaの組み合わせ
4. Prometheus(プロメテウス)とGrafanaの組み合わせ

次に紹介するのはPrometheusです。これはオープンソースといって、誰でも無料で自由に使える仕組みです。Prometheusは「定期的にデータの数値を集める」のが得意なツールです。ただし、これ単体では数字の羅列で見にくいため、通常はGrafana(グラファナ)という、カッコいいグラフを表示するためのツールとセットで使われます。

Prometheusは「今のアクセス数は何人?」「メモリはどれくらい使っている?」といった数値を、一定の間隔で記録し続けます。自前で監視サーバーを立てる必要があるため少し上級者向けですが、自由自在にカスタマイズできるのが魅力です。


# Prometheusでアクセス数を数えるための簡易イメージ
from flask import Flask
from prometheus_client import Counter, generate_latest

app = Flask(__name__)
# ページが表示された回数を数えるカウンターを作ります
request_counter = Counter('flask_http_requests_total', '合計アクセス数')

@app.route('/')
def home():
    # アクセスがあったら1増やす
    request_counter.inc()
    return "あなたのアクセスを記録しました!"

@app.route('/metrics')
def metrics():
    # 溜まった数字をPrometheusに渡すための専用ページ
    return generate_latest()

5. ボトルネックを見つけるための基本指標

5. ボトルネックを見つけるための基本指標
5. ボトルネックを見つけるための基本指標

監視ツールを導入したら、まずは以下の3つの指標(メトリクス)をチェックしましょう。これらはアプリの健康状態を知るための基本三原則です。

1つ目はレスポンスタイムです。ユーザーがボタンを押してから、画面が表示されるまでの時間です。これが2秒を超えてくると、ユーザーはストレスを感じ始めます。

2つ目はスループットです。1秒間にどれくらいの注文(アクセス)をさばけているかを示します。お店でいうところの回転率ですね。これが下がっているときは、サーバーが悲鳴を上げています。

3つ目はエラー率です。せっかくアクセスしてくれたのに、プログラムのミスでエラー画面が出てしまった割合です。急にここが増えたら、どこかが壊れている証拠です。

6. データベースのクエリ監視で速度改善

6. データベースのクエリ監視で速度改善
6. データベースのクエリ監視で速度改善

Webアプリが遅くなる原因の第1位は、実はPythonのコードではなく、データベースとのやり取りにあります。データベースとは、大量の情報を整理して保管している本棚のようなものです。この本棚から情報を探す命令をクエリと呼びます。

「一度に100万件の本を全部持ってくる」ような無茶な命令を出していると、アプリは急激に重くなります。監視ツールを使うと、どのクエリに時間がかかっているかを教えてくれます。スロークエリ(遅い命令)を見つけ出し、効率的な探し方に書き換えるだけで、アプリの速度が10倍以上になることも珍しくありません。


# 悪い例:全てのデータを一気に取得しようとする
@app.route('/all-users')
def get_all_users():
    # 全ユーザー10万人分を一度に取ると、データベースがパンクします
    # 監視ツールでは「Slow Query」として警告が出ます
    users = User.query.all() 
    return f"{len(users)}人のデータを表示します"

7. リソース使用率のチェック(CPUとメモリ)

7. リソース使用率のチェック(CPUとメモリ)
7. リソース使用率のチェック(CPUとメモリ)

コンピュータの脳みそにあたるCPUと、作業机の広さにあたるメモリの使用状況も重要です。プログラムが複雑な計算を繰り返しているとCPUがいっぱいになり、大きなデータを一度に扱おうとするとメモリが足りなくなります。

机が散らかっていると仕事が進まないのと同じで、メモリがいっぱいになるとコンピュータは急激に遅くなり、最後にはアプリが止まってしまいます。監視ツールは「机がもうすぐいっぱいになりますよ!」とアラート(警告)を出して教えてくれます。これを見て、サーバーを高性能なものに変えるか、プログラムを節約上手な書き方に直すかを判断します。

8. ログ出力と監視ツールの連携

8. ログ出力と監視ツールの連携
8. ログ出力と監視ツールの連携

監視ツールが「何かが起きている」ことを教えてくれるのに対し、ログは「具体的に何が起きたのか」という日記のような記録です。パフォーマンスが落ちた瞬間に、どんなエラーメッセージが出ていたかを記録しておくことが大切です。

Flaskには標準でログを出す仕組みが備わっています。これを監視ツールと連携させることで、速度低下とエラー発生のタイミングを重ねて分析できるようになります。原因の特定がさらにスピードアップします。


import logging
from flask import Flask

app = Flask(__name__)
# ログの記録レベルを設定します
logging.basicConfig(level=logging.INFO)

@app.route('/process')
def process():
    app.logger.info('重い処理を開始します...')
    # ここに時間のかかる計算などが入る
    app.logger.warning('少し時間がかかりすぎているようです')
    return "処理完了"

9. 初心者が監視を始めるためのステップ

9. 初心者が監視を始めるためのステップ
9. 初心者が監視を始めるためのステップ

いきなり全てのツールを使いこなす必要はありません。まずは自分が作ったFlaskアプリを動かしてみて、ブラウザの「開発者ツール」で読み込み時間を見ることから始めましょう。それが慣れてきたら、無料で試せる範囲でNew Relicなどのクラウドサービスを導入してみるのがおすすめです。

監視ツールは、単に速くするためだけのものではなく、あなたのアプリを訪れるユーザーに「快適な体験」を届けるための優しさでもあります。数字が変わっていく様子を眺めるのは、ゲームのスコアを伸ばすようで楽しい作業でもあります。ぜひ、自分に合った監視スタイルを見つけて、素晴らしいWebアプリに育てていってください。

カテゴリの一覧へ
新着記事
New1
Flask
FlaskでJSONレスポンスを返す方法!初心者でもわかるAPIの基本出力
New2
Python
Pythonのbytes型とbytearray型とは?初心者向けにバイナリデータの扱い方を解説!
New3
Python
Pythonのbreak・continue・passを比較しよう!それぞれの役割と使い方まとめ
New4
Flask
FlaskでAPIを作る基本!初心者向けに仕組みと特徴をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Django
Djangoマイグレーションの基本コマンド完全解説|makemigrationsとmigrateでDB設計を理解しよう
No.2
Java&Spring記事人気No2
Flask
Flaskプロファイラでボトルネックを特定!Webアプリ高速化の決定版
No.3
Java&Spring記事人気No3
Flask
Flask×Redisでタスク結果を保存・参照する仕組みを完全解説|初心者向け非同期処理とタスク管理
No.4
Java&Spring記事人気No4
Python
Pythonでタプルの最大値・最小値を取得する方法!max()・min()の使い方
No.5
Java&Spring記事人気No5
Flask
FlaskのAPIでファイルアップロードを受け付ける方法!初心者でもわかる解説
No.6
Java&Spring記事人気No6
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.7
Java&Spring記事人気No7
Flask
Flask拡張機能を活用したアプリ開発のポイントとベストプラクティス!初心者でも安心ガイド
No.8
Java&Spring記事人気No8
Python
Pythonのイミュータブルとは?変更できないデータ型の特徴を解説