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年ほど前から、ベトナムオフショア開発を行っています。
ベトナムでオフショア開発を行う際の費用や、エンジニアの質を知りたい方は、無料で見積もりいたしますので、お気軽にお問い合わせください。
参考サイト
近年、製造業・建設業・エンジニアリング企業では、複雑化する生産プロセスや高度化する顧客要求に対応するため、ERP(Enterprise Resource Planning)の導入が急速に進んでいます。 ERPとは、企業のさまざまな情報や業務を一元的に管理するための基幹システムの総称であり、経営資源を最適に活用しながら生産性を向上させ、企業競争力を高めるための中心的なツールです。 その中でも、IFS ERPは国際的に高い評価を受けており、特に製造業・設備保守業(EAM)・プロジェクト型産業に強みを持つERPとして知られています。 モジュール構成の柔軟性、ユーザーインターフェイスの使いやすさ、そしてクラウド・オンプレミスの双方に対応できる拡張性を兼ね備え、多様な企業に適応できる点が大きな特徴です。 この記事では、画像資料として提示された「IFS導入サービス」「工場調査プロセス」「GAP分析」「開発プロセス」「アジャイル開発体制」などの情報をもとに、IFS ERPの全体像、導入ステップ、具体的なメリットを総合的に解説します。 IFS導入を検討している企業の方 ERPシステムの比較・理解を進めたい方 製造業の方 これらに当てはまる方におすすめの記事になっております。これを読めばIFS導入について具体的な方法がわかりますよ。 (more…)
ソフトウェア開発において、品質の確保はプロジェクト成功の最重要テーマの一つです。 市場のニーズは高度化し、リリースサイクルは短期化し、開発チームの構成は複雑化しています。このような状況の中で注目されているのが TQA(Technical Quality Assurance:技術品質保証) です。 TQAは従来のQAと異なり、単にテスト工程で不具合を検出するだけではなく、開発工程全体の技術的な品質を可視化し改善するという役割を担います。 この記事では、TQAとは何か、その役割から導入メリットまで詳しく解説します。 TQAが気になる方 TQAの開発プロセスが気になる方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばTQAとは何かがわかるのはもちろん、導入メリットもわかりますよ。 (more…)
近年、システム開発・建設・製造・マーケティングなど、あらゆる分野でプロジェクトの複雑化が進んでいます。 市場の変化は速く、顧客の期待値も高まり続けるなか、企業に求められるのは「限られたコストと期間で、高い品質を確保した成果物を提供すること」です。 しかし実際には、品質のばらつき、手戻り、要件の理解不足、工程管理の不徹底などにより、多くのプロジェクトが計画どおりに進まず、結果的にコスト増や納期遅延という課題を抱えています。 こうした背景から注目されているのが プロジェクト品質管理サービス です。専門家による品質管理プロセスの整備・運用支援を通じて、プロジェクト全体の成功確率を高めるサービスとして、大企業から中小企業まで導入が広がっています。 この記事では、プロジェクト品質管理サービスの概要、必要性、導入メリット、サービス内容、実際の運用プロセスまでを詳しく解説します。 品質管理にお悩みの方 プロジェクト品質管理システムに興味がある方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事になっています。これを読めば、品質問題で悩んでいる組織やプロジェクトリーダーにとって、具体的な改善ヒントとなる内容がわかりますよ。 (more…)
近年、企業や教育機関、自治体を中心に「生成AIチャットボット」の導入が一気に広がっています。 ChatGPTをはじめとする大規模言語モデル(LLM)が急速に発展したことで、これまでのチャットボットでは実現できなかった高度な対話や柔軟な問題解決が可能になりました。 しかし、「生成AIチャットボット」と「従来型のチャットボット」は何が違うのか、具体的に説明できる人は意外と多くありません。 本記事では、両者の仕組みや特性、メリット・デメリット、そして導入時のポイントまで分かりやすく解説しています。 生成AIに興味がある方 チャットボットを導入したい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば生成AIチャットボットが、従来と比べてどう違うのかが丸わかりですよ。 (more…)
いま、ソフトウェア開発の現場で“静かな革命”が起きています。それは、AIがエンジニアの相棒としてコーディングを支援する時代の到来です。 「AIがコードを書くなんて、まだ先の話」と思われていたのはもう過去のこと。今ではAIが自然言語での指示を理解し、数秒でプログラムを提案・修正してくれるのが当たり前になりました。 その結果、開発スピードが従来の3倍に向上したという事例も続々と報告されています。 この記事では、AIがどのようにしてコーディングを効率化し、開発現場を変えているのかを具体的に解説します。 開発をしたい方 コーディングの効率を上げたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばコーディングにAIを活用する方法が丸わかりですよ。 (more…)
システム開発において最も重要であり、同時に最も難しい工程は何でしょうか。 多くのプロジェクトで共通して挙げられるのが 「要件定義」 です。 要求が曖昧なままプロジェクトが進むと、後工程での手戻りが一気に増え、QCD(品質・コスト・納期)は簡単に崩壊します。 実際に、プロジェクトが失敗する原因の6〜7割は、この初期工程である要件定義に起因すると言われています。それほど、要件定義は重要かつリスクの高いフェーズなのです。 しかし近年、AI技術の急速な進化により、従来の要件定義で「時間がかかる」「認識が揃わない」「情報が不足している」といった課題に対し、新たな解決策が生まれています。 この記事では、要件定義フェーズで頻発する7つの課題を取り上げ、それらをAIを活用してどのように改善できるのかを、具体例を交えて解説します。 要件定義フェーズでお悩みの方 AIを活用して開発効率を上げたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば要件定義で起こりうる問題とそれを解決する方法がわかりますよ。 (more…)