SEO対策

CSSとの意外な関係「よくわかるSEO対策」スタイルシート編

CSS スタイルシート レンダリング
CSSとの意外な関係「よくわかるSEO対策」スタイルシート編

  

今回の「よくわかるSEO対策」はスタイルシート(CSS)編です。

 

多くの人が

「SEO対策なのに、CSSの説明をするの?」

と思うかも知れませんが、これには意外な関係性があったのです。

 

現在CSSを学んでいる人、そしてCSSの書き方ならマスターしているといった人でも、SEOのことまでを考慮した記述ができていなければ、まだまだサイトを改善させることができるということです。

 

最後まで読めば、SEO対策の知識はもちろん、今よりもCSSについても理解が深まるはずです。

 

 

CSSとSEOの関係性

 

CSSの目的の大部分は、ページの見た目をきれいにすることです。

見やすくて楽しさのあるページはユーザーを楽しませてくれたり、ブログ記事をスムーズに読ませてくれたり、ネットショップであれば商品を美しく、そして買いたくなるように購買意欲を刺激することもあります。

 

ページの質を上げるという意味でも、ユーザー目線でのサイト作りSEO対策としては重要なことです。

しかし今回解説していくのは、そういった操作性や楽しさといった見た目にテコ入れする方法ではありません

 

CSSの記述を意識することによる、ページの読み込み速度を上げるといった内部施策をご紹介します。

 

 

レンダリングの高速化

 

ページへアクセスすると、HTMLファイルを上から順番に解析していきます。そしてCSSファイルがあればそれを読み込んでから、次のCSSファイルやHTMLタグなどの処理をします。

そして最後の行まで処理を終えるとページの生成が完了です。このページを生成していくしことをレンダリングといいます。

 

Googleのページ評価の指標に、このレンダリングのスピードがあります。そのため、CSSファイルもminify化して、余計な行や空白を削除するような方法は実際に用いられています。

※common.min.cssなど

 

また、CSSファイルを読み込みしないようにHTMLファイル内に記述するケースも少なく有りません。

多少の記述量であれば確かに理にかなっているのですが、量が膨大になれば1つのファイルへ記述してしまうことは作業効率はもちろん、保守安全性が乏しくなってしまいますので注意が必要です。

 

こういった圧縮作業や記述場所についても大切ですが、CSSのレンダリングの流れを理解しておけば、記述に気をつけておくだけでレンダリングにかかる時間を短くすることができるのです。

 

 

具体的な記述方法

 

例えば、以下のようなHTMLコードがあったとしましょう。

 

<section class="weather-block">

              <p class="rain-text">明日は雨ですよ!</p>

</section>

 

このrain-textの下には少し多めに余白が欲しいので、CSSmargin-bottomを指定します。

その例を複数みてみましょう。

/* パターン1 */
.weather-block > p.rain-text{
              margin-botom: 8px;
}

/* パターン2 */
section .rain-text{
              margin-botom: 8px;
}

/* パターン3 */
.rain-text{
              margin-botom: 8px;
}

 

記述方法は他にもありますが、今回はこの3つの例にみていきます。

上記3つの例では、実際に出力される結果は同じですが、レンダリング処理には違いがあります

 

まず一つ目の記述方法についてです。

.weather-block > p.rain-text{
              margin-botom: 8px;
}

 

CSSは右から左という順番で解析されていきます

そのため、上記の記述方法であればまず、「クラスがrain-text」のタグを探します。

見つかれば、それが「pタグであるかどうか」を確認して、さらにそれが「wether-blockの子であるか」を確認するために1階層上のタグをみます。時間としてはコンマの世界になりますが、実際にCSSを解析するまでにこの3工程が行われているのです。

  1. rain-textクラスの確認
  2. pタグであるかの確認
  3. 1階層上にweather-blockクラスがあるか確認
  4. 確認終了

 

では、二つ目をみてみましょう。

section .rain-text{
              margin-botom: 8px;
}

 

先ほどより指定が少なく簡潔になりましたが、処理についてはどうでしょうか。

この場合であれば、まず「クラスがrain-text」のタグを探し、その後それが「sectionタグの子孫であるか」をチェックするために、rain-textクラスより上位のタグをすべてチェックする必要があります。先ほどであれば1階層だけだったのですが、今回は祖先すべてが対象です。

2工程ではありますが、実際にチェックする量については階層が下であればあるほど膨大になるのです。

  1. rain-textクラスの確認
  2. 上位タグにsectionがあるか上位タグすべてを確認
  3. 確認終了

 

最後はクラスのみの指定です。

.rain-text{
              margin-botom: 8px;
}

 

これであれば、「クラスがrain-text」であれば解決なので処理がすぐに終了します。その分、レンダリングにかかる時間は短くて済みます。

  1. rain-textクラスの確認
  2. 確認終了

 

 

人間はCSSコードを左から右に記述していきます。

また、上位の親からしっかりと絞り込んで言ったほうが、他の部分に影響を与えることなくクラスをピンポイントで指定して、スタイルを反映することができるので、余計な親要素まで書いてしまうことが多々あります。

しかし、サーバー側からすると人間と違って「右から左」という順番に解析していくため、安易に親の指定がされていると「本当にその条件にあっているのか」という確認に無駄な処理を繰り返してしまっていることがあるのです。

 

そのため、CSSはできるだけ簡潔にクラスやIDを指定することで反映させる方が、ページのレンダリング速度が格段に上がるということです。

 

 

まとめ

  

SEO対策と聞くと、メタタグやリンクタグ、階層化や外部施策、キーワードの選定などといった方法が思い浮かぶ人がほとんどではないでしょうか。

もちろんそれらは大切ですが、それ以外の部分にも要因があるということを知っておかなければなりません。

 

ページのレンダリング速度を上げることで、よりスムーズにユーザーにページの内容を伝えてあげられます。

しかしページの読み込みが遅いと、その時点でページの閲覧を諦めてしまいサイトから離脱してしまいます。1秒遅くなれば、それだけ何倍ものユーザーが離れていってしまうのです。

 

最後に、今回のポイントをまとめておきます。

レンダリングにかかる時間を短くする

CSSの指定はできるだけ簡潔する

  

記述量が膨大になればなるほど、それだけ解析に必要な時間は増えていきます。そんなとき、一つ一つの時間をできるだけ短縮できていれば、比べたときにより大きな効果があります。

 

今までCSSを見た目だけを意識して記述していた人は、是非記述方法一つでSEO対策をしているということも考えながら取り組んでいくと、よりよいサイトが作れるようになるでしょう。

関係がないと思っていたものでも、実際に詳しく知ることで意外な関係性が出てくるのです。

せっかく作るのであれば、より得られる効果の高いものにしていきましょう。

 

他にもSEO対策については記事をまとめているので、これを機にSEO対策へ本格的に取り組みたい人は是非参考にしてください。

HTMLの基本設計「よくわかるSEO対策」構造化(マークアップ)編 HTMLの基本設計「よくわかるSEO対策」構造化(マークアップ)編

  HTML5がリリースされて随分経ちました。 それにより多くのタグが増え、それにより今までデザインを目的と使用されていたものが「構造化」という本来の役割を持たされるようになりました。    構造化は、目に見えにくい部分です   それぞれの役割を理解していなければ、せっかくきれいなサ...

注目の記事

PHPポケモン「わざ編〜チャージ技の実装〜」34
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「わざ編〜チャージ技の実装〜」34

チャージ技とは ポケモンの技は数多く存在していて、その中でも特別な処理が必要なものがいくつかあります。その1つが「チャージ技」です。 ※チャージ技とはポケモン上で用いられている用語ではありません   現在実装している初代御三家+ピカチュウの初代レベルアップ技の中では以下の2つがあります。 ロ...

毎日継続をするためのコツ
雑記
毎日継続をするためのコツ

定期的にコラムを書きたくなるので、今回は「毎日継続をするためのコツ」というテーマで自分が意識していることや、感じたことを書き綴っていきます。 決して開発や業務で追われていたり、PHPポケモンの大幅見直しを迫られているわけではありません。   毎日継続するために  ブログや学習など、毎日継続...

フレンドリィショップ編 アイテムの販売 PHPポケモン 76
プログラミング
PHP,PHPポケモン,ポケモン
フレンドリィショップ編 アイテムの販売 PHPポケモン 76

リュックの作成 前回はフレンドリィショップへ商品を並べ、計算機を作成するところまで作成しました。ですが、商品が購入できたとしても、それを保管しておくためのスペースがなければ意味がありません。 なので、プレイヤー情報に対してアイテムを格納できるように機能拡張をしましょう。   プレイヤークラス(/C...

進化の石編(実装)PHPポケモン103
プログラミング
PHP,PHPポケモン,ポケモン
進化の石編(実装)PHPポケモン103

アイテムによる進化 前回作成した、進化アイテムによる構成の続きです。   進化アイテムとして「かみなりのいし」、ピカチュウの進化判定を作成したので、アイテムの使用から進化処理までを作成、実装します。   今回作成する処理は以下の2点です。 アイテムの使用判定 進化画面への移管   それ...

Laravel7系でTraitのmakeコマンドを作成する方法
プログラミング
artisan,Laravel,Linux,PHP,Trait
Laravel7系でTraitのmakeコマンドを作成する方法

Laravel7がリリースされて、さっそくそれを使った開発の機会がやってきましたので、使用頻度の高いものをまとめていきたいと思います。 5系や6系の情報は多く出回っていますが、6系がLTSということもあって7系の情報は少なめですね。   今回は「Laravel7系でTraitのmakeコマンドを作成する方法」をご紹介します...

ポケモン預かりシステム編 ボックスの作成 PHPポケモン 86
プログラミング
PHP,PHPポケモン,ポケモン
ポケモン預かりシステム編 ボックスの作成 PHPポケモン 86

ポケモン預かりシステムの実装 今回は、前回ざっくりと仕様決めをした「ポケモン預かりシステム」を実装していきます。ボックス内では操作する項目が多いため、ボックス自体に1つの画面を用意して、できる限りPHPによる制御だけで完結できるように作成していきます。   ボックスクラスの作成 それではまず、今...

ポケモン預かりシステム編 システムの実装 PHPポケモン 87
プログラミング
PHP,PHPポケモン,ポケモン
ポケモン預かりシステム編 システムの実装 PHPポケモン 87

ポケモン預かりシステムの実装 システムの仕様とクラスも整ってきたので、いざ実装をしていきましょう。 前回までに作成した項目で、いくつか変更になったものがあるので、まずはじめに挙げておきます。   シャットダウン機能 ボックスの選択を解除するというものでしたが、こちらを不採用にしました。ボックスは...

本当に価値のある宣伝方法 〜多くの人が実践している【間違った努力】とは〜
マーケティング
Facebook,note,Twitter,YouTube,集客
本当に価値のある宣伝方法 〜多くの人が実践している【間違った努力】とは〜

  YouTubeやTwitter、Facebookやnoteなど、いろんなサービスを使った集客方法があります。集客という視点ではなく、それ自体に人を集めたいという人も多いでしょう。   フォロワーやチャンネル登録者数を増やすために、多くの人が様々な取り組みをしていますが、その中でもひときわ意味のないことをただ繰り返して...

カテゴリ

SEO対策 イベント デザイン ネットワーク ビジネスモデル フリーランス プログラミング マーケティング ライティング 動画編集 雑記

タグ

5G Adobe AfterEffects AI ajax amazon Animate api artisan atom Automator AWS Bluetooth CSS CVR description EC-CUBE4 ECショップ ESLint Facebook feedly foreach function Google Google AdSense Honeycode htaccess HTML IEEE 802.11ax Illustrator Instagram IoT JavaScript jQuery jQuery UI keyword LAN Laravel Linux MacBook MAMP meta MLM MySQL NoCode note OS OSI参照モデル Paypal Photoshop PHP phpMyAdmin PHPポケモン PremierePro rss SEO SEO対策 Sequel Pro Skype SNS SSH Symfony TCP/IP title Toastr Trait Twig Twitter UCC V系 WAN WebSub Wi-Fi wiki Windows WordPress XAMPP xml Xserver YouTube YouTuber Zoom アーティスト アウトプット アクセス層 アニメーション アフィリエイト イーブイ インターネット インプット エンジニア オブジェクト指向 お金配り クリック単価 クリック数 コミュニケーション能力 コロナ コンサルティング サムネイル システムエンジニア スタートアップ スタイルシート スパム データベース ディープフェイク デザイナー デザイン テレワーク ナンパ ニュース ネットワークモデル ノマドワーク バナー ピカチュウ ビジネス フィード フリーランス ブロガー ブログ プログラマー プログラミング プログラミング学習 プログラミング教育 プロトコル ホームページ制作 ポケモン マークアップ マーケティング メール リモートワーク レンダリング 三井住友 三宮 仕事依頼 児童デイ 児童デイサービス 児童発達支援 公開鍵 初心者 助成金 勉強法 営業 広告 広告収入 必勝マニュアル 放課後等デイサービス 朝活 楽天 深層学習 無線LAN 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力