Jekyll で代表される静的サイトの強み、弱みについてまとめました。WordPressを卒業して静的サイトへ移行した理由を説明します。


動的サイトとは

ユーザがサイトにアクセスした時点でサーバ内のプログラムとコンテンツでWebページを作成するサイトのことです。 Webページを要求された時点から作ることから動的(ダイナミック)と呼ばれます。 このようなWebページのことを動的コンテンツといいます。

Webページを作成するためのプログラムやコンテンツの元となる記事を保存する仕組みを持つサーバをCMS(コンテンツマネジメントシステム)サーバといいます。

CMSサーバはコンテンツ生成機能とWebサーバ機能を一体化していることが多いため、単にCMSサーバとだけ記載することがあります。

動的コンテンツを作成するCMSサーバと動的コンテンツを作成しないサーバと区別するため、動的CMSと呼んだりします。 動的CMSの代表的な製品として、WordPressがあります。

dynamic_site

静的サイトとは

予め作成されたページがWebサーバに保存されているサイトです。作成済のページをアクセスすることから静的(スタティック)と呼ばれます。作成済のページのことを動的コンテンツに対して静的コンテンツという場合があります。

静的コンテンツの実態は通常のHTMLファイルとそれに付随するCSSやJavaScript等で構成される、通常のWebページです。 Webサーバのファイルシステム上に静的コンテンツを格納し、ページの要求が来たら該当HTMLファイルをそのまま返すだけのシンプルなサイトです。 

DB機能やサーバ上でHTMLを作成するスクリプトを用意する必要が無いのでセキュリティに強い特徴を持ちますHTMLやCSSについて知識がなくても、記事を書くだけでWebページを作成しWebサーバに送信するような仕組みを持つ静的CMSもあります。 代表的な静的CMSとしては、WebRelease2があります。

static_site

静的サイト、ファーストそして動的サイト、セカンドが基本

静的サイト、動的サイトどちらの方式でホームページを構築すべきでしょうか。 結論から述べますと、まず静的サイトを前提に、ホームページで実現したい要件が満たせるかどうか検討すべきです。 サイトの目的が通常のブログやホームページの公開であれば静的サイトで十分です。アクセスするユーザ毎にページの内容を変えるような会員サイトでない限り、動的サイトを構築する必要ありません。

動的サイトの定番であるWordPressはオープンソースのCMSソフトとして多くのサイトで使われています。 WordPressにはテーマと呼ばれるサイトのテンプレートも豊富で、短時間に凝ったサイトが簡単に構築できるため、個人サイト、中小の事業サイトを中心に、WordPressを使った動的サイトが広く普及しているのは事実です。しかし、動的サイトは一般的に複雑な構成にならざるを得ず、セキュリティが不安材料になります。

静的サイトはシンプルで軽快、動的サイトは複雑で重い

静的サイトでは、Webサーバは要求されたWebページをブラウザに返すだけなので、とてもシンプルなつくりです。 一方、動的サイトの場合、Webサーバ上でプログラムが実行され、Webページを作成して返しますので、Webサーバにはプログラム実行に伴うCPUなどの負荷がかかります。  同じ、性能のWebサーバであれば、静的サイトに比べて動的サイトの応答速度は遅くなります。 つまり、動的サイトでは高性能なWebサーバを用意する必要があります。 クラウドが一般的な現在では、高性能=高価なクラウドサーバ料金が必要になるということです。

動的サイトでは公開用のWebサーバだけでなく、ダイナミックページのためのスクリプト言語を実行するプログラム(PHPなど)やデータベースシステムが必須となり、Webサーバだけの静的サイトと比べて、システム構成は複雑です。 更に、CMSがダウンすると、ホームページの閲覧までできなくなるため、二重化・三重化のサーバ運用が必要となり、サーバ費用(あるいはクラウド料金)は更に高価になります。

セキュリティが不安な動的サイト

WordPressのシステム構成を例にとると、WebサーバのApache以外にページ出力のためのPHPとデータベースシステムのためのMySQLが必要です。 公開後はそれぞれのコンポーネント(Apache, PHP, MySQL)に対するセキュリティの更新を頻繁に行い、セキュリティの脆弱性を最小化する必要があります。 動的サイトは、このようにホームページ運用で最も重要なセキュリティの脆弱性対応の運用に手間がかかるという弱点があります。 一方、静的サイトはページを作成し、Webサーバに送信する機能だけのシンプルな構成です。セキュリティ対策も基本的にはWebサーバ(Apeache等)のみで十分です。

静的サイト用のCMSライクなSSGがあります!

シンプルで軽い静的サイトですが、Wordressのような関単にサイトを立ち上げることのできるCMSが無いことが静的サイトに乗り換える最大の障壁と考えていませんか? 静的サイトにおいても、予めWebページ作成のためのテンプレートが用意され、テンプレート上にマークダウン形式ですが、マークダウンエディタ経由でワードのように記事さえ書けば、Webページの作成から公開までしてくれるCMS機能を提供している製品もあります。 

ある程度HTMLやCSSの知識を前提とした記事をマークダウン記法 のような簡易HTML言語で書けば、あとはプログラムがファイルベースのHTMLが作成され、それをWebサーバに送信して公開する仕組み(SSG:スタティックサイトジェネレータ)を用意されています。 SSGを使えば、静的サイトの立ち上げも以外と簡単なのです。

まとめ

比較項目 動的サイト 静的サイト
応答時間 リクエストのたびWebページの生成するため、時間がかかる 作成済のページを返すだけなので速い
サーバー性能要件 Webサーバに加え、CMS機能を提供するためのサーバ性能が必要 Webサーバ機能のためのサーバ性能を満たすだけでよい
セキュリティ対策 Webサーバに加え、DB、HTML生成スクリプトへの対策が必要 Webサーバへの対策のみで十分
使い勝手 HTML/CSSを前提知識不要のWordPress等オープンソースベースのCMSが多数あり。 簡単にサイトを立ち上げ可能 サイトジェネレータはオープンソースとして提供されているが、HTML/CSSの知識必要。有料のCMSもある

ひとこと

分析したデータを可視化し、報告書やレポートにまとめますが、更にインターネット上に情報を発信したいと思うとどうしてもHPが必要です。
出来合いのBlogサービスを使うこともできますが、HTMLやCSSに明かるければ、静的サイトをAWSやAzureに立ち上げ、発信してみるのもいいのではないでしょうか。 インターネットに発信するとなると、それなりに緊張感を持ってまとめますので、個人的な参照先としても重宝しますね。