システム開発

Performance Optimization_WEBのページ表示速度改善方法

WEBページにおいてパフォーマンスの表示速度を上げることはとても重要です。

Googleの調査したデータによると、ページの表示が3秒以上掛かったサイトに対して待たずに離脱してしまうユーザーの割合は53%以上とのこと。

この記事ではそんな重要な要素であるページ表示速度について、改善するためのいくつかの方法ををご紹介したいと思います。

  • WEBページをお持ちの方
  • パフォーマンスを向上させる方法を知りたい方

これらに当てはまる方におすすめの記事となっています。これを読めばあなたのサイトの離脱率を下げる方法が分かりますよ。

改善方法①DBの抽出を最適化

パフォーマンスを最適化する時、クエリの最適化が頭に浮かぶものです。

なぜかというと、本当に動いているウェブには、データベース量がかなり大きくて、数百MBからGBまでにかかっているからです。

つまり、クエリ文は数十万のレコードがあるテーブルで抽出を実施しています。DBの抽出を実現する時、以下の方法がいくつか適用しています。

①Database index (indexing)

まず、「Indexとは?」を説明したいと思います。 Indexとはデーター型の1つ種類であり、データ表にある一定のフィールドの値を含め、該当する行目(ロー)を指します。

では、Indexを貼ってからページ表示速度がどのように改善されるのでしょうか?

例:SELECT * FROM users where name = ‘Lempi Veum’;

56.000レコードがある「users」テーブルで「name」にIndexを貼らない場合とIndexを貼っている場合で抽出して、比較しましょう。

Indexを貼っている場合の速度はあきらかに早いですね。

そしてページ表示の速度を考慮する時、DB内のフィールドでIndexを貼るべきです(できれば、DBを構築する段階から)。またIndexを貼る時は、以下の段階に優先順位をつけて対応してください。

  1. Pキー(PHP言語でLaravelは$table->increments()を使かたらPキーは自動的にIndexが貼られます。)
  2. 各テーブルの外キー
  3. 「where」文でよく使う (上述した例の通りです)

② Query cache(クエリキャッシュ)

「The query cache stores the text of a SELECT statement together with the corresponding result that was sent to the client. If an identical statement is received later, the server retrieves the results from the query cache rather than parsing and executing the statement again. The query cache is shared among sessions, so a result set generated by one client can be sent in response to the same query issued by another client.」

上記の文章がMySqlのホームページで「query cache」を定義しているものです。

複数のユーザーが同じいページにアクセスする時、抽出結果が既にcacheに保持されておきました。

そのため、他のユーザーはそのページにアクセスすると、cacheからクエリした結果を出してページの表示速度が速くなっていきます。

詳細な方法はこちらでご参考ください。

しかし MySql 5.7.20バージョンからは、query cacheが使えなくなります。 MySql 8.0バージョンから完全に除外されることになります。

その他の方法はLaravel等のフレームワークを使ってください。 cache queryを保存する為に、既にサポートしているので、とても便利です。

123$posts = Cache::remember(‘index.posts’, 30, function() {return Post::with(‘comments’, ‘tags’, ‘author’, ‘seo’)->whereHidden(0)->get();});

改善方法②課題の処理ロジックを変更する

DB内の抽出を最適化にしても、ページ表示速度があまり改善されない場合、どうすれば良いでしょうか。

今の課題で対応した方法(ロジック)を変更する方向で検討してみてください。

例えば、あるシステムの集計機能を実装しています。日間や年間をかけて膨大なデーター量で抽出しないといけません。

その時、リアルタイムにてデーター集計は大変ですよね。

一方、Cronjなら毎日・毎年等の集計が何かの作業で定期に実行され、結果を保存することができるのです。

これで、実行に時間がかかる作業は裏で実施されると思います。つまり、ユーザーが短時間で集計の結果を見ることができるということです。

このように、時間がかかるのにリアルタイムで不要になる作業は裏(underground)で実施した方が良いと思います。

cronjobを導入する前にDBのCPUの消耗


cronjobを導入した後DBのCPUの消耗

改善方法③フレームワークのサポートを活用

現在、ウェブサイトのほとんどがフレームワーク(Laravel, WordPress, CakePhp, …)で開発されています。

フレームワークなら既に最適化されているので、このメリットを活躍すれば工数が非常に削減できると思います。

Laravelで利用する場合、以下のいくつかポイントをオススメします。

Config cacheを使う

Laravel の既存コマンドを使ってキャッシュをコンフィグする:

php artisan config:cache

php artisan route:cache

php artisan view:cache


lazy loadingと eager loadingを利用する

LaravelはDBを対応する時、素晴らしいORMを提供しています。

EloquentのようにDBの各テーブルからabstracts modelを作られます。

Eloquentはeager loadingを利用する時、連携されているobject modelを全て抽出し、最初のクエリにレスポンスする為です。これはアプリケーションのレスポンスを追加されます。 

Lazy loadingは次のようにクエリします。

1234$books = App\Book::all();foreach ($books as $book) {echo $book->author->name;}

同様に、 eager loadingは次のようにクエリします。

1234$books = App\Book::with(‘author’)->get();foreach ($books as $book) {echo $book->author->name;}

適切なCacheと Sessionを利用する

Laravelではパフォマンスを最適化する時、RAMの中にCacheとsessionを保存するのが一番良い方法です。

その他に、「Redis」 や「MemcachedCache」を利用すると、sessionの抽出する速度も改善できます。

Asset bundlingを使う

Laravelでは、Laravel Mixを提供して、複数のcss/jsを同一のcss/jsにコンパイルするツールです。

そして、css/jsファイルを読み込む時、時間を短縮することができます。

まとめ

いかがでしょうか。WEBのページ表示速度を改善する方法について紹介していきました。

勿論、本日紹介紹介した方法以外にもパフォーマンスを最適化する方法が様々あります。

実用に応じて、相応しい方法を簡単に探して利用していくようにしましょう。

パフォーマンスの最適化は大切な作業でウェブサイト開発から稼働にかけてずっと対応し続ける必要があります。今回紹介した方法を参考にぜひWEBのページ表示速度を改善してみてはいかがでしょうか。

dehaでは、5年ほど前から、ベトナムオフショア開発を行っています。

ベトナムでオフショア開発を行う際の費用や、エンジニアの質を知りたい方は、無料で見積もりいたしますので、お気軽にお問い合わせください。

お問い合わせはこちらから

参考サイト

  1. 12 Tips for Laravel Performance Optimization in 2020
  2. 8.10.3.3 Query Cache Configuration

Mai Tran

Recent Posts

【2026年最新】製造業向けグローバルERPシステムおすすめ10選

製造業を取り巻く環境は、グローバル競争の激化、サプライチェーンの複雑化、そしてデジタル化の加速により大きく変化しています。 その中でERP(統合基幹業務システム)は、単なる業務管理ツールではなく、経営の意思決定を支える中核システムへと進化しています。 特に2026年においては、「クラウド化」「AI活用」「グローバル対応」「生産現場との連携」が重要な選定ポイントとなっています。 ERPは企業の成長戦略そのものに直結するため、自社の規模・業種・将来展望に適したシステム選びが不可欠です。 この記事では、製造業向けの代表的なグローバルERPを10製品厳選し、それぞれの特徴を解説します。 グローバルERPシステムが気になる方 製造業の方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば主要なグローバルERPシステムが丸わかりですよ。 IFS ERP(IFS Cloud) IFS Cloudは、製造業に加えて設備管理やサービス業務まで一体的に管理できる統合ERPです。 特に「アセット集約型製造業」や「プロジェクト型製造」に強みを持っています。…

3 days ago

SQA(ソフトウェア品質保証)とは? 顧客満足度を高める品質維持の役割と重要性

ソフトウェア開発において品質の確保は単なる技術的課題ではなく、企業の信頼性や顧客満足度に直結する重要な要素です。 その中核を担うのがSQA(Software Quality Assurance:ソフトウェア品質保証)です。 SQAとは、開発プロセス全体を通じて品質を計画的に作り込み、維持・向上させるための活動を指します。 この記事ではそんなSQA(ソフトウェア品質保証)について、その概要や役割などを紹介していきます。 SQA(ソフトウェア品質保証)が気になる方 品質管理に興味がある方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばSQA(ソフトウェア品質保証)の特徴がわかるだけでなく、その重要性が丸わかりですよ。 SQA(ソフトウェア品質保証)とは SQA(ソフトウェア品質保証)とは、ソフトウェア開発において品質を計画的かつ継続的に確保するための活動全般を指します。 単に完成した製品の不具合を検出するテスト工程だけでなく、開発プロセス全体に関与し、品質を作り込む仕組みを整えることが重要な役割です。 具体的には、開発標準の策定や遵守状況の確認、レビューや監査の実施、品質指標の設定と分析、リスクの早期発見と対策などが含まれます。 これにより、開発の初期段階から問題の発生を未然に防ぎ、手戻りやコスト増大を抑えることが可能になります。…

4 days ago

IFS CloudにおけるMigration Jobsの実践

概要 IFS Cloud におけるMigration Job(マイグレーションジョーブ)は、カットオーバーフェーズにおける最重要ボトルネックである。本稿では、実プロジェクトから抽出した知見をもとに、ステージングアーキテクチャ・トランザクション管理・冪等性設計・大容量データ処理・自動アラートの5領域にわたる実践的設計手法とトラブルシューティング戦略を体系的に解説する。適切に設計されたマイグレーションは単なるデータ移送を超え、監査可能性と再現性を備えた運用基盤となる。  (more…)

1 week ago

PQAとは? プロジェクトの成功を支える標準化と導入のメリット

近年、システム開発や製造業、さらにはサービス業においても「品質」の重要性がますます高まっています。 その中で注目されているのが「PQA(プロセス品質保証)」という考え方です。 従来の品質管理が「成果物の品質」を中心にしていたのに対し、PQAは「プロセスそのものの品質」を保証することに重点を置きます。 この記事では、PQAの基本概念と、プロジェクト成功にどのように寄与するのか、さらに導入のメリットについて解説します。 PQA(プロセス品質保証)について知りたい方 製造業やシステム開発をしたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばPQA(プロセス品質保証)の概要やメリットなども丸わかりですよ。 (more…)

2 weeks ago

【2034年まで】生成AIチャットボットの日本市場規模は3,300億円超へ予測

生成AIチャットボット市場は、近年のAI技術の進化とともに急速な成長を遂げており、日本においても例外ではありません。 特に、企業のDXの進展と、顧客対応の高度化・効率化ニーズの高まりを背景に、導入が加速しています。 本日はそんな生成AIチャットボットの日本市場規模について、現状とこれからの予測についてお伝えしていきたいと思います。 生成AIチャットボットが気になる方 生成AIチャットボットの市場規模を知りたい方 これらに当てはまる方におすすめの記事となっています。これを読めば生成AIチャットボットの日本市場規模がわかるのはもちろん、その要因もわかりますよ。 (more…)

3 weeks ago

クラウド型とオンプレミス型の生成AIチャットボットの違い

近年、企業のDXが加速する中で、生成AIチャットボットの導入は急速に広がりを見せています。 顧客対応の自動化や業務効率化、さらには新たなユーザー体験の創出といった観点から、多くの企業がその活用に注目しています。 しかし、いざ導入を検討する段階になると、多くの企業が直面するのが「どのような形態で導入すべきか」という課題です。 この記事では、まず生成AIチャットボットの基本構造と進化の背景を整理した上で、クラウド型とオンプレミス型それぞれの特徴やメリット・デメリットを詳しく解説します。 AIチャットボットに興味がある方 クラウド型とオンプレミス型の生成AIチャットボットについて知りたい方 これらに当てはまる方におすすめの記事となっています。これを読めばクラウド型とオンプレミス型の生成AIチャットボットの違いがわかるのはもちろん、企業がどのような観点で最適な方式を選択すべきか、さらに今後の技術動向もわかりますよ。 (more…)

1 month ago