静的サイトジェネレータとは
NKSSG は、静的サイトジェネレータです。が、そもそも静的サイトジェネレータとは何なのか、について説明していきます。
「もう知っているよ」という人、「とにかくはやく使ってみたい」という人は、次の記事に進んでください。
静的サイトとは?
静的サイトジェネレータとは、サイトを作るためのアプリケーションのことです。この名前にある「静的サイト」について、少し説明します。
サイトを作るためのアプリケーションとして、もっとも有名なものは WordPress でしょう。WordPress でサイトを作った場合、だれかがページにアクセスすると、その URL に応じて表示する内容が生成されます。アクセスがあるたびにシステムがデータベースからデータを取り出し、ページのテンプレートにそって HTML を作成し、表示します。
このように、アクセスがあるたびにページを生成する方法を 動的生成 といいます。
これに対し、事前にすべてのページを作って用意しておく方法を 静的生成 といいます。ページにアクセスすると、すでに作成しておいたページが表示されます。
このようにして作られるサイトを、静的サイトといい、静的サイトを作るアプリケーションを 静的サイトジェネレータ と呼びます。
静的サイトのメリット
静的サイトを作るメリットには、以下のようなものがあります。
まずは、サイトの表示速度です。
サイトへアクセスがあった場合、「データベースにアクセスして、その都度、ページを作成する」という手順がないので、一般的に、静的サイトのほうが表示スピードが速いです。
セキュリティ上のメリットもあります。
そもそもデータベースやサイトへのログインなどが不要なので、セキュリティリスクが減ります。パスワードが推測されてログインされてしまった、記事が書きかえられてしまった、ということはありません。
また、バックアップが楽というメリットもあります。コンテンツはテキストファイルで管理するので、バックアップをとったりバージョン管理をするのが簡単です。
静的サイトのメリット
- 表示が速い
- セキュリティリスクが下がる
- バックアップが楽
静的サイトは、このような表示の速さやセキュリティ上のメリットにより、人気が高まっています。
静的サイトのデメリット
静的サイトのメリットについて見てきましたが、デメリットもあります。
一番のネックは、「事前に全ページを作成する」のに時間がかかる点です。
当然ですが、ページ数が増えるほど、全ページの作成には時間がかかります。そのため、ページ数が多かったり、更新頻度が高いサイトを作るのには向いていません。
動的なコンテンツが作成できない点も注意です。例えば、コメント欄や予約投稿機能、アクセス制限などをつけるのは難しいです。静的サイトでも工夫すればできるものもありますが、そこを頑張るくらいなら、動的に作成するツールを選んだ方がはやいかもしれません。
また、一般的に、静的サイトジェネレータはプログラマ向けに作られています。プログラミングの知識が必要で、そうでないと使いこなすのが難しいことが多いです。
静的サイトのデメリット
- 全ページの作成に時間がかかる
- 動的なコンテンツが作成できない
- プログラミングの知識が必要
これらがネックにならないなら、静的サイトが適しています。例えば、更新頻度の低いブログ、完結型のサイト、ページ数の少ないコーポレートサイトなどが、静的サイトに向いています。
NKSSGの立ち位置
ここからは、少し私的な内容を含みます。
NKSSG は、もともと、WordPress から脱却したい、というところから始まりました。長年、WordPress を使っていて、とても便利に使っていました。テーマも豊富だし、カスタマイズも頑張ればいろいろできます。機能を拡張するためのプラグインもたくさんあります。
しかし、次のような点が不満だと思うようになってきました。
- セキュリティ上の不安
- 有名アプリなので、攻撃対象になりやすい
- 放置しているサイトも踏み台にされるリスクがある
- バージョンの管理
- WP本体、PHP のバージョンを上げるようにせかされる
- プラグインやテーマが新バージョンのWPに対応していないことがある
- Gutenberg
- エディタがリッチになり、今までの使い方ができなくなってしまった
- データ
- バックアップがとりにくく、復元も大変
- 設定をしないと、リビジョンがどんどん増えて、容量が大きくなる
- カスタマイズ
- ローカルにサイトを複製するのが大変
- ローカルと本番環境が同じとは限らない
- 階層型サイトが作りにくい
- 工夫すればできるが、複雑になりやすい
- ブログシステムの上でやろうとするのがそもそも無理な話
- 日時だけのパーマリンクが使えなくなった
これらを受けて、静的サイトをいくつか試してみました。実際に使ってみたのは、Hugo と MkDocs です。
Hugo は、サイト作成が爆速で、全ページの作成が本当に一瞬でできます。ただ、テーマをいじるのが少し難しく感じてしまいました(Goの文法が)。また、後方互換性のないバージョンアップの影響を受けてしまうこともありました。
MkDocs は、小さい規模のドキュメントを作るには最適です。特に、Material for MkDocs というテーマが素晴らしいです。ただ、MkDocs でブログを作るのは難しそうです。また、少し規模が多くなると、記事の管理がしづらくなるとも感じました。
そこで、今まで使った WordPress、Hugo、MkDocs のいいところを寄せ集めつつ、不満だったところを解決するために作ったのが NKSSG です。
WordPress でできることをある程度確保しつつ、静的サイトジェネレータとしても使いやすくなるように作成しています。特に、MkDocs の作りをものすごく参考にしています。
また、そんなにプログラミングの知識がなくても、ある程度使えるようになっています。そもそも、僕が他の静的サイトジェネレータについていけていないくらいなので。一方、プログラミングの知識があるなら、カスタマイズもいろいろできるようになっています。