NKSSG
NakaKen Static Site Generator

静的サイトジェネレータとは

静的サイトジェネレータとは

NKSSG は、静的サイトジェネレータです。が、そもそも静的サイトジェネレータとは何なのか、について説明していきます。

「もう知っているよ」という人、「とにかくはやく使ってみたい」という人は、次の記事に進んでください。

クイックスタート クイックスタート

静的サイトとは?

静的サイトジェネレータとは、サイトを作るためのアプリケーションのことです。この名前にある「静的サイト」について、少し説明します。

サイトを作るためのアプリケーションとして、もっとも有名なものは WordPress でしょう。WordPress でサイトを作った場合、だれかがページにアクセスすると、その URL に応じて表示する内容が生成されます。アクセスがあるたびにシステムがデータベースからデータを取り出し、ページのテンプレートにそって HTML を作成し、表示します。

このように、アクセスがあるたびにページを生成する方法を 動的生成 といいます。

これに対し、事前にすべてのページを作って用意しておく方法を 静的生成 といいます。ページにアクセスすると、すでに作成しておいたページが表示されます。

このようにして作られるサイトを、静的サイトといい、静的サイトを作るアプリケーションを 静的サイトジェネレータ と呼びます。

静的サイトのメリット

静的サイトを作るメリットには、以下のようなものがあります。

まずは、サイトの表示速度です。

サイトへアクセスがあった場合、「データベースにアクセスして、その都度、ページを作成する」という手順がないので、一般的に、静的サイトのほうが表示スピードが速いです。

セキュリティ上のメリットもあります。

そもそもデータベースやサイトへのログインなどが不要なので、セキュリティリスクが減ります。パスワードが推測されてログインされてしまった、記事が書きかえられてしまった、ということはありません。

また、バックアップが楽というメリットもあります。コンテンツはテキストファイルで管理するので、バックアップをとったりバージョン管理をするのが簡単です。

静的サイトのメリット

  • 表示が速い
  • セキュリティリスクが下がる
  • バックアップが楽

静的サイトは、このような表示の速さやセキュリティ上のメリットにより、人気が高まっています。

静的サイトのデメリット

静的サイトのメリットについて見てきましたが、デメリットもあります。

一番のネックは、「事前に全ページを作成する」のに時間がかかる点です。

当然ですが、ページ数が増えるほど、全ページの作成には時間がかかります。そのため、ページ数が多かったり、更新頻度が高いサイトを作るのには向いていません。

動的なコンテンツが作成できない点も注意です。例えば、コメント欄や予約投稿機能、アクセス制限などをつけるのは難しいです。静的サイトでも工夫すればできるものもありますが、そこを頑張るくらいなら、動的に作成するツールを選んだ方がはやいかもしれません。

また、一般的に、静的サイトジェネレータはプログラマ向けに作られています。プログラミングの知識が必要で、そうでないと使いこなすのが難しいことが多いです。

静的サイトのデメリット

  • 全ページの作成に時間がかかる
  • 動的なコンテンツが作成できない
  • プログラミングの知識が必要

これらがネックにならないなら、静的サイトが適しています。例えば、更新頻度の低いブログ、完結型のサイト、ページ数の少ないコーポレートサイトなどが、静的サイトに向いています。

NKSSGの立ち位置

ここからは、少し私的な内容を含みます。

NKSSG は、もともと、WordPress から脱却したい、というところから始まりました。長年、WordPress を使っていて、とても便利に使っていました。テーマも豊富だし、カスタマイズも頑張ればいろいろできます。機能を拡張するためのプラグインもたくさんあります。

しかし、次のような点が不満だと思うようになってきました。

  • セキュリティ上の不安
    • 有名アプリなので、攻撃対象になりやすい
    • 放置しているサイトも踏み台にされるリスクがある
  • バージョンの管理
    • WP本体、PHP のバージョンを上げるようにせかされる
    • プラグインやテーマが新バージョンのWPに対応していないことがある
  • Gutenberg
    • エディタがリッチになり、今までの使い方ができなくなってしまった
  • データ
    • バックアップがとりにくく、復元も大変
    • 設定をしないと、リビジョンがどんどん増えて、容量が大きくなる
  • カスタマイズ
    • ローカルにサイトを複製するのが大変
    • ローカルと本番環境が同じとは限らない
  • 階層型サイトが作りにくい
    • 工夫すればできるが、複雑になりやすい
    • ブログシステムの上でやろうとするのがそもそも無理な話
  • 日時だけのパーマリンクが使えなくなった

これらを受けて、静的サイトをいくつか試してみました。実際に使ってみたのは、HugoMkDocs です。

Hugo は、サイト作成が爆速で、全ページの作成が本当に一瞬でできます。ただ、テーマをいじるのが少し難しく感じてしまいました(Goの文法が)。また、後方互換性のないバージョンアップの影響を受けてしまうこともありました。

MkDocs は、小さい規模のドキュメントを作るには最適です。特に、Material for MkDocs というテーマが素晴らしいです。ただ、MkDocs でブログを作るのは難しそうです。また、少し規模が多くなると、記事の管理がしづらくなるとも感じました。

そこで、今まで使った WordPress、Hugo、MkDocs のいいところを寄せ集めつつ、不満だったところを解決するために作ったのが NKSSG です。

WordPress でできることをある程度確保しつつ、静的サイトジェネレータとしても使いやすくなるように作成しています。特に、MkDocs の作りをものすごく参考にしています。

また、そんなにプログラミングの知識がなくても、ある程度使えるようになっています。そもそも、僕が他の静的サイトジェネレータについていけていないくらいなので。一方、プログラミングの知識があるなら、カスタマイズもいろいろできるようになっています。