カテゴリ: Flask 更新日: 2025/12/28

Flask-Cachingとは?初心者向けキャッシュの使い方完全ガイド!

Flask-Cachingとは?アプリのパフォーマンス向上に役立つ基本と使い方
Flask-Cachingとは?アプリのパフォーマンス向上に役立つ基本と使い方

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

生徒

「Flaskで作ったWebアプリがちょっと遅い気がするんです。何か速くする方法はありますか?」

先生

「Flask-Cachingという拡張機能を使うと、処理を一時的に保存してアプリを速くすることができますよ。」

生徒

「一時的に保存って、どういうことですか?」

先生

「よく見る情報を、毎回作り直すのではなく、一度作ったものをしばらく使いまわすという仕組みです。とても便利なので、基本からやさしく説明していきますね!」

1. Flask-Cachingとは何か?

1. Flask-Cachingとは何か?
1. Flask-Cachingとは何か?

Flask-Caching(フラスク・キャッシング)は、PythonのWebフレームワークFlaskに「キャッシュ機能」を追加できる拡張機能(エクステンション)です。ページ表示やAPIの返り値など、同じ結果を何度も作る処理を一時保存して、次回は保存した結果をすばやく返せるようにします。

「キャッシュ」とは、いわば“作り置き”です。毎回ゼロから計算したり、データベース検索をしたりすると時間がかかりますが、よく使う結果を覚えておけば、処理時間やサーバーの負担を減らせます。初心者でも導入しやすく、Flaskアプリの高速化やレスポンス改善に役立ちます。

超かんたんサンプル:同じ文章を「しばらく使い回す」


from flask import Flask
from flask_caching import Cache

app = Flask(__name__)

# まずは一番わかりやすい「メモリに保存する」設定
app.config["CACHE_TYPE"] = "SimpleCache"
app.config["CACHE_DEFAULT_TIMEOUT"] = 30  # 30秒間だけ保存

cache = Cache(app)

@app.route("/")
@cache.cached()  # このページの結果をキャッシュする
def hello():
    return "こんにちは!この返り値は30秒間キャッシュされます。"

この例では、最初にアクセスしたときの返り値が保存され、30秒以内のアクセスは同じ内容をすぐ返します。難しい仕組みを意識しなくても、「よく使う結果を一時的に保存して速くする」という感覚で覚えると理解しやすいです。

2. なぜFlask-Cachingを使うと速くなるの?

2. なぜFlask-Cachingを使うと速くなるの?
2. なぜFlask-Cachingを使うと速くなるの?

たとえば、カフェで毎回コーヒーを注文するとき、豆からひいて淹れていたら時間がかかりますよね。でも、一度淹れたコーヒーをポットに入れておけば、次の人にはすぐに出せます。これが「キャッシュ」の考え方です。

Webアプリも同じで、アクセスのたびにデータベース検索計算処理、外部APIへの問い合わせを毎回やると、その分だけ待ち時間が増えます。Flask-Cachingは、いったん作った「答え」を一定時間だけ保存し、次のアクセスでは保存した結果を返します。つまり、同じ仕事を何度も繰り返さないので、ページ表示が速くなり、サーバーの負担も軽くなります。

超かんたんサンプル:わざと重くして、キャッシュの速さを体感する


from flask import Flask
from flask_caching import Cache
import time

app = Flask(__name__)
app.config["CACHE_TYPE"] = "SimpleCache"
app.config["CACHE_DEFAULT_TIMEOUT"] = 20  # 20秒間キャッシュ

cache = Cache(app)

@app.route("/slow")
@cache.cached()  # このページの結果を保存して使い回す
def slow_page():
    time.sleep(3)  # わざと3秒待つ(重い処理の代わり)
    return "最初は3秒待つけど、20秒以内なら次はすぐ表示されます"

ポイントは、最初の1回だけ時間がかかり、2回目以降は速くなるところです。これは「結果を保存して再利用している」からです。アクセスが増えるほど、同じ処理を減らせるので、表示速度の改善や安定したレスポンスにつながります。

3. Flask-Cachingのインストール方法

3. Flask-Cachingのインストール方法
3. Flask-Cachingのインストール方法

Flask-Cachingを使うには、まずパソコンにインストールします。イメージとしては、Flaskに「キャッシュの道具箱」を追加する感じです。インストールが終われば、Pythonコードの中で読み込めるようになり、Webアプリの表示を速くする準備が整います。

インストールは、ターミナル(黒い画面)でコマンドを1行打つだけです。Windowsなら「PowerShell」や「コマンドプロンプト」、Macなら「ターミナル」を開いて、次を入力してください。


pip install Flask-Caching

入力後に文字がずらっと流れて、最後にエラーが出なければ成功です。もし「pipが見つからない」と表示されたら、Pythonのインストールが途中だったり、環境設定がまだの可能性があります。その場合は、先にPythonが正しく入っているか確認するとスムーズです。

確認サンプル:Flask-Cachingが使えるかチェックする


# これがエラーなく動けば、インストールはOKです
from flask_caching import Cache

print("Flask-Caching を読み込めました!")

この短い確認コードは「読み込みテスト」です。難しいことはせず、まずは“使える状態になったか”だけを確認します。ここでエラーが出なければ、Flaskアプリに組み込む準備はできています。

4. Flask-Cachingの基本的な使い方

4. Flask-Cachingの基本的な使い方
4. Flask-Cachingの基本的な使い方

次に、FlaskアプリにFlask-Cachingを組み込んでみましょう。流れはシンプルで、(1)設定を書く →(2)Cacheを作る →(3)キャッシュしたい処理に印をつけるだけです。まずは「ページの返り値を一定時間だけ保存する」いちばん基本の形から始めると、仕組みがつかみやすいです。


from flask import Flask
from flask_caching import Cache

app = Flask(__name__)

# キャッシュの設定(まずはメモリに保存する設定がわかりやすい)
app.config["CACHE_TYPE"] = "SimpleCache"
app.config["CACHE_DEFAULT_TIMEOUT"] = 60  # 60秒間キャッシュする

cache = Cache(app)

@app.route("/")
@cache.cached()  # 「このページはキャッシュしてOK」という印
def home():
    import time
    time.sleep(3)  # わざと3秒待つ(重たい処理のイメージ)
    return "これはキャッシュされたページです。"

このコードのポイントは、@cache.cached()の1行です。ここが付いた関数は、最初のアクセス時に作った返り値を保存して、次のアクセスでは保存した内容をそのまま返します。そのため、最初の1回目は3秒待ちますが、2回目以降(60秒以内)は待たずに表示されます。

初心者向けメモ:どこが「保存」されているの?

  • 保存されるのは「画面に返す文字(返り値)」です。今回は return の内容が対象になります。
  • 設定した秒数(ここでは60秒)が過ぎると、次のアクセスでまた作り直して保存し直します。
  • まずはこの形を動かして「1回目だけ遅い」を体感すると、キャッシュの役割が一気にわかります。

5. キャッシュの保存時間を変えるには?

5. キャッシュの保存時間を変えるには?
5. キャッシュの保存時間を変えるには?

app.config['CACHE_DEFAULT_TIMEOUT']で、何秒間キャッシュするかを決めることができます。たとえば、60秒と設定すると、1分間は前の結果を再利用します。

また、個別の関数ごとにキャッシュ時間を設定することもできます。


@app.route('/short')
@cache.cached(timeout=10)  # 10秒だけキャッシュ
def short_cache():
    import time
    time.sleep(2)
    return "10秒間だけ保存されるページです。"

6. キャッシュの削除(クリア)をしたいとき

6. キャッシュの削除(クリア)をしたいとき
6. キャッシュの削除(クリア)をしたいとき

たとえば、「内容が変わったからキャッシュを消したい」という場合もあります。そのときは次のようにcache.clear()を使います。


@app.route('/clear')
def clear_cache():
    cache.clear()
    return "キャッシュを削除しました。"

このようにして、キャッシュの内容をいつでも消して、新しい内容に切り替えることができます。

7. よくあるトラブルと対処法

7. よくあるトラブルと対処法
7. よくあるトラブルと対処法
  • 「キャッシュが効いていない」:Flaskアプリのコードを変更したときは、ブラウザの「スーパーリロード」(WindowsならCtrl+F5)を使ってみましょう。
  • 「キャッシュが古い」:時間を短く設定するか、cache.clear()で強制的に削除しましょう。
  • 「キャッシュが保存されていない」:CACHE_TYPEが正しく設定されているか、もう一度確認してみてください。

8. Flask-Cachingが特に役立つ場面とは?

8. Flask-Cachingが特に役立つ場面とは?
8. Flask-Cachingが特に役立つ場面とは?

Flask-Cachingは次のような場面でとても便利です。

  • アクセスが多い人気のページ(ランキングやトップページ)
  • 処理に時間がかかるページ(データの計算など)
  • 外部サイトからデータを取得して表示しているページ

こうした場合、キャッシュを使うことでアプリ全体がサクサク動くようになります。

まとめ

まとめ
まとめ

Flaskでキャッシュを取り入れるという考え方は、一見むずかしそうに見えても、実際にはアプリの仕組みをより分かりやすく、そして扱いやすくしてくれるとても頼もしい方法です。とくにFlask-Cachingは、普段のコードにほんの少し手を加えるだけで大きな効果を感じられるため、初心者でも安心して試すことができます。Webアプリが重くなる理由の多くは、同じ処理を何度もやり直していることにあります。たとえば毎回同じ計算をしたり、同じデータを読み込みにいったりすると、それだけ時間がかかってしまいます。しかし、Flask-Cachingを使えば、いったん処理した結果をしばらく取っておき、同じ要求が来たときにすぐ渡せるようになります。そのおかげで、ユーザーは待たされることなく快適にページを開けるようになり、開発者はアプリ全体をより軽く保つことができます。

さらに、キャッシュはアプリの負担を減らすだけでなく、仕組みを整理して考えるきっかけにもなります。「どの部分が重たいのか」「どれくらいの時間なら古いデータを使っても大丈夫なのか」「どのページは毎回作り直したほうがいいのか」など、アプリ全体の構造を広い視点で眺める習慣が身につきます。これは開発に慣れてくるほど重要になる視点で、長く使われるアプリほどこうした工夫の積み重ねが品質に直結します。たとえばランキングページや集計ページなど、毎回計算すると負担が大きい部分はキャッシュする価値があります。逆に、リアルタイムに変化する内容を扱うページは必要に応じてキャッシュ時間を短くするなど、用途に応じた調整も行えます。

もちろん、キャッシュは便利な一方で、古い情報が残ってしまうという注意点もあります。しかし、Flask-Cachingではキャッシュ時間をページごとに細かく変更できるうえ、必要に応じて手動でキャッシュを削除する仕組みも用意されています。この柔軟さが、初心者にも扱いやすい理由のひとつです。実際の運用では、定期的に内容が変わるページや、外部サービスからの取得が必要なページなど、状況に応じて時間を調整することで、より実用的な構成に近づけられます。こうした調整は一気に理解する必要はありませんが、少しずつ工夫していくとアプリ全体が見違えるほど快適になります。

これまでの内容を振り返ると、Flask-Cachingは導入が簡単で、負荷を軽減しながら動作の安定性を高めてくれる非常に価値のある仕組みだということが分かります。Webアプリというのは、規模が大きくなるにつれて処理の遅さや複雑さが課題になりますが、キャッシュという仕組みを一度身につけてしまえば、それらの負担をうまく軽くしていくことができます。今回学んだ内容は、Flaskだけに限らず、さまざまなフレームワークやシステムにも通じている基礎の考え方です。これを機に、キャッシュの仕組みを生かした工夫を積極的に取り入れ、より快適で信頼されるアプリ作りを進めていきましょう。

サンプルコードで再確認

今回の内容を振り返るために、基本的なキャッシュの書き方をまとめた例を紹介します。


from flask import Flask
from flask_caching import Cache

app = Flask(__name__)

# 基本のキャッシュ設定
app.config['CACHE_TYPE'] = 'SimpleCache'
app.config['CACHE_DEFAULT_TIMEOUT'] = 60

cache = Cache(app)

@app.route('/')
@cache.cached()
def home():
    import time
    time.sleep(2)
    return "キャッシュされたトップページです。これは次のアクセスからすぐに表示されます。"

@app.route('/detail')
@cache.cached(timeout=20)
def detail():
    import time
    time.sleep(1)
    return "詳細ページは20秒間キャッシュされます。"

@app.route('/clear')
def clear_cache():
    cache.clear()
    return "すべてのキャッシュを削除しました。"

このように、ほんの少しの記述でページの動作が大きく改善されます。とくにアクセスが集中しやすいページや、毎回計算をやり直すような処理が含まれるページでは、キャッシュの有無により快適さが大きく変わります。今後アプリを改良していく際にも、ページごとの負荷を見ながら適切なキャッシュ設定を考えていくことが成長につながっていきます。

先生と生徒の振り返り会話

生徒

「キャッシュってこんなに便利だったんですね。同じ内容を毎回作り直す必要がなくなるなんて、思っていたよりずっと効率が良いんだと感じました。」

先生

「そうなんです。アプリを速くする仕組みと聞くとむずかしそうに思うかもしれませんが、基本を押さえてしまえばとても使いやすい方法なんですよ。」

生徒

「ページごとに時間を変えられるのも面白いですね。処理の内容によって細かく調整できるのは便利だと思いました。」

先生

「その視点はとても大切です。今後アプリの規模が大きくなるほどこの工夫が役に立ちます。ぜひ今回覚えた考え方を次の開発にも活かしてみてください。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Flask-Cachingとは何のためのライブラリですか?

Flask-Cachingは、Flaskで作られたWebアプリにキャッシュ機能を追加して、アプリの表示速度を向上させるための拡張ライブラリです。
カテゴリの一覧へ
新着記事
New1
Django
Djangoのプロジェクトとアプリの違いを徹底解説!初心者でも迷わない構造の考え方
New2
Flask
FlaskでRQ(Redis Queue)を使って非同期タスク管理を行う方法|初心者向けやさしい解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Flask
Flaskアプリの環境変数設定方法!安全で柔軟な構成を実現しよう
No.4
Java&Spring記事人気No4
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.5
Java&Spring記事人気No5
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.6
Java&Spring記事人気No6
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説