WEBページにおいてパフォーマンスの表示速度を上げることはとても重要です。
Googleの調査したデータによると、ページの表示が3秒以上掛かったサイトに対して待たずに離脱してしまうユーザーの割合は53%以上とのこと。
この記事ではそんな重要な要素であるページ表示速度について、改善するためのいくつかの方法ををご紹介したいと思います。
これらに当てはまる方におすすめの記事となっています。これを読めばあなたのサイトの離脱率を下げる方法が分かりますよ。
パフォーマンスを最適化する時、クエリの最適化が頭に浮かぶものです。
なぜかというと、本当に動いているウェブには、データベース量がかなり大きくて、数百MBからGBまでにかかっているからです。
つまり、クエリ文は数十万のレコードがあるテーブルで抽出を実施しています。DBの抽出を実現する時、以下の方法がいくつか適用しています。
まず、「Indexとは?」を説明したいと思います。 Indexとはデーター型の1つ種類であり、データ表にある一定のフィールドの値を含め、該当する行目(ロー)を指します。
では、Indexを貼ってからページ表示速度がどのように改善されるのでしょうか?
例:SELECT * FROM users where name = ‘Lempi Veum’;
56.000レコードがある「users」テーブルで「name」にIndexを貼らない場合とIndexを貼っている場合で抽出して、比較しましょう。
Indexを貼っている場合の速度はあきらかに早いですね。
そしてページ表示の速度を考慮する時、DB内のフィールドでIndexを貼るべきです(できれば、DBを構築する段階から)。またIndexを貼る時は、以下の段階に優先順位をつけて対応してください。
「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で利用する場合、以下のいくつかポイントをオススメします。
Laravel の既存コマンドを使ってキャッシュをコンフィグする:
php artisan config:cache
php artisan route:cache
php artisan view:cache
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;} |
Laravelではパフォマンスを最適化する時、RAMの中にCacheとsessionを保存するのが一番良い方法です。
その他に、「Redis」 や「MemcachedCache」を利用すると、sessionの抽出する速度も改善できます。
Laravelでは、Laravel Mixを提供して、複数のcss/jsを同一のcss/jsにコンパイルするツールです。
そして、css/jsファイルを読み込む時、時間を短縮することができます。
いかがでしょうか。WEBのページ表示速度を改善する方法について紹介していきました。
勿論、本日紹介紹介した方法以外にもパフォーマンスを最適化する方法が様々あります。
実用に応じて、相応しい方法を簡単に探して利用していくようにしましょう。
パフォーマンスの最適化は大切な作業でウェブサイト開発から稼働にかけてずっと対応し続ける必要があります。今回紹介した方法を参考にぜひWEBのページ表示速度を改善してみてはいかがでしょうか。
dehaでは、5年ほど前から、ベトナムオフショア開発を行っています。
ベトナムでオフショア開発を行う際の費用や、エンジニアの質を知りたい方は、無料で見積もりいたしますので、お気軽にお問い合わせください。
参考サイト
不動産業界は、これまで「対面営業」「紙契約」「属人的な価格交渉」といったアナログな手法が中心でした。 しかし近年、デジタル技術の進化と顧客行動の変化により、業界全体でDX(デジタルトランスフォーメーション)が加速しています。 この記事ではそんな不動産業界のDX化において、注目されている「オークション形式」についてどんな特徴があるのかや、システムを選定する際のポイントについて見ていきたいと思います。 DX化をすすめたい企業の方 不動産業界の方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば不動産業界におけるオークション形式のポイントや注意点が丸わかりですよ。 不動産DXが求められる背景とオークションモデルの可能性 国土交通省の電子契約解禁やオンライン重要事項説明の普及により、売買・賃貸のプロセスは大きく変わりました。さらに、ポータルサイト依存型の集客モデルから脱却し、より収益性の高い販売手法を模索する動きが強まっています。 そこで注目されているのが「オークション形式」です。 従来の不動産取引は「売主が価格を提示し、買主が交渉する」という相対交渉モデルが一般的でした。 しかし、オークションモデルでは市場原理をより明確に反映させることが可能です。需要が集中するエリアや希少物件では価格が自然に上昇し、売主にとっては最大利益を得られる可能性があります。 また、オークション形式は透明性の向上にも寄与します。 価格決定のプロセスが明確になり、「なぜこの価格になったのか」という説明責任を果たしやすくなります。 これはコンプライアンス強化が求められる現代において大きな利点です。…
2026年、AI活用は新たなフェーズへと突入します。これまでの「生成AIを使う」段階から、「AIエージェントが業務を遂行する」段階へと進化しています。 Google Cloudが発表したレポート『AI agent trends 2026』では、企業活動におけるAIの中心がAgentic AI(エージェント型AI)へ移行すると指摘しています。 AIエージェントとは、単に質問に答える存在ではありません。目標を理解し、計画を立て、複数のシステムを横断しながら実行まで行う「行動するAI」です。 この記事では、Googleの調査をもとに、2026年を形づくる5つのAIエージェントトレンドを詳しく解説します。 AIエージェントは何か知りたい方 業務効率を上げたい方 これらに当てはまる方におすすめの数となっています。これを読めばAIエージェントのトレンドがわかるのはもちろん、利用のポイントもわかりますよ。 すべての従業員にAIエージェントがつく時代(Agents for Every…
グローバル市場におけるITアウトソーシングでは、品質保証は単なる最終テスト工程ではありません。 品質は「工程の最後で確認するもの」ではなく、「開発の初期段階から設計され、統制されるべき経営基盤」です。 従来型のQAがリリース直前のテストに依存するのに対し、DEHA SOLUTIONSではTQA・PQA・SQAの3層構造により、技術・プロセス・サービス全体を横断的に管理しています。 これは単なる品質向上施策ではなく、リスクコントロールと持続的成長を実現するためのガバナンス設計です。 (more…)
システム開発プロジェクトにおいて、成功と失敗を分ける最大の要因は「PM(プロジェクトマネージャー)」の力量だと言っても過言ではありません。 技術力の高いエンジニアが揃っていても、要件が曖昧だったり、スケジュールが破綻したり、関係者間の認識がずれたりすれば、プロジェクトは簡単に炎上します。 特に近年は、アジャイル開発やハイブリッド型開発など手法の多様化、オフショア開発の増加、DX推進によるスピード要求の高まりなど、PMに求められる能力はますます高度化しています。 この記事では、そんなシステム開発におけるPMの役割を体系的に整理し、失敗や納期遅延を防ぐための実践的なポイントを徹底解説します。 システム開発をしたい方 システム開発を効率よく行いたい方 社内にIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばシステム開発におけるPMの役割がわかるのはもちろん、失敗しないためのポイントも丸わかりですよ。 PMとは何か?システム開発における本質的な役割 システム開発におけるPM(プロジェクトマネージャー)は、単なる進捗管理者ではありません。 PMの本質的な役割は、「プロジェクトを成功に導くための総責任者」であることです。 プロジェクトには必ず「QCD(品質・コスト・納期)」という制約があります。さらに、近年では「スコープ(範囲)」や「リスク」、「ステークホルダー満足度」も重要な要素です。 PMはこれらすべてを統合的に管理し、バランスを取りながら意思決定を行います。PMの主な責任領域は以下の通りです。 目的・ゴールの明確化 要件定義の統括…
アジャイル・ウォーターフォールハイブリッド開発は、ウォーターフォール開発の計画性・文書化・統制力と、アジャイル開発の柔軟性・反復改善・顧客密着型の進め方を組み合わせる手法です。 この記事では、そんなアジャイル・ウォーターフォールハイブリッド開発の基本概念から具体的な実践方法、さらにオフショア開発における効果や導入時の注意点まで、体系的に解説していきます。 アジャイル・ウォーターフォールハイブリッド開発が気になる方 オフショア開発に興味がある方 開発効率を上げたい方 これらに当てはまる方におすすめの記事となっています。これを読めばアジャイル・ウォーターフォールハイブリッド開発について特徴わかるだけでなく、導入のポイントも丸わかりですよ。 なぜ今「ハイブリッド開発」が注目されているのか 近年、ITシステム開発の現場では「スピード」と「品質」の両立が強く求められています。市場環境は急速に変化し、顧客ニーズも多様化しています。 その一方で、セキュリティ要件や法規制への対応、社内ガバナンスの強化など、開発プロジェクトに求められる統制レベルは年々高まっています。 このような背景の中で、従来型のウォーターフォール開発だけでは変化への対応が難しく、またアジャイル開発だけでは大規模案件や厳格な要件管理が必要なプロジェクトに対応しきれないケースも増えています。 そこで注目されているのが、「アジャイル・ウォーターフォールハイブリッド開発」です。 これは、ウォーターフォール開発の計画性・文書化・統制力と、アジャイル開発の柔軟性・反復改善・顧客密着型の進め方を組み合わせる手法です。 単なる折衷案ではなく、プロジェクトの特性やフェーズに応じて最適な開発アプローチを選択・融合する実践的な方法論といえます。 特にオフショア開発においては、言語・文化・時差・契約形態といった要素が絡み合うため、開発手法の選択はプロジェクトの成否を左右します。 日本国内で要件定義を固めた上で海外チームに実装を委託するケース、あるいは海外側に一部設計まで任せるケースなど、形態はさまざまです。…
ソフトウェア開発の世界において、「技術的負債(Technical Debt)」という言葉は数十年前から馴染みのある概念です。スピードを優先した不適切なコードや設計が、将来的に修正コストやバグの増大を招くことは、エンジニアやマネージャーにとって共通認識となっています。 しかし、AI活用が急速に進む現代において、技術的負債よりもはるかに深刻で、目に見えにくい新たなリスクが蓄積されつつあります。それが制約の負債(Constraint Debt)」です。 本記事では、最新テクノロジーの実装において見落とされがちなこの概念と、その対策について解説します。 (more…)