NKSSG
NakaKen Static Site Generator

NKSSGの特徴

NKSSGの特徴

NKSSG とは、Python で書かれた静的サイトジェネレータ(Static Site Generator)です。ブログを書くのにも、サイト(非ブログ)を作るのにも、便利な機能がたくさん含まれています。

ここでは、NKSSG の主な特徴を挙げていきます。

すぐに始められる

NKSSG は、最近流行のプログラミング言語 Python で書かれています。Python の環境があれば、NKSSG をすぐに使い始めることができます。

NKSSG のインストールはコマンド1つで完了します。インストール後は、nkssg new site でサイト作成、nkssg serve でローカルサーバ立ち上げ、 nkssg build でファイル出力を行うことができます。

Python を使ったことがある人なら、NKSSG のインストールからサンプルサイトのファイル出力まで、5分もかかりません。

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

ブログもサイトも作れる

NKSSG は、ブログを作ることも、サイト(非ブログ)を作ることもできます。

NKSSG には、ブログによくあるタグ機能やカテゴリー機能が含まれています。アーカイブページやサイトマップの作成機能もあります。

🖌 ブログ作成の流れ

サイト(非ブログ)を作る場合には、記事フォルダの構造をサイトの構造に反映できます。また、記事の順番、内部リンクや画像の管理を楽に行うための機能も用意しています。

📗 サイト作成の流れ

完全に静的なHTMLサイト

NKSSG で作成されるサイトは、完全に静的な HTML サイトです。

ファイル出力を行うと、public フォルダにすべてのファイルが書き出されます。ここには、HTML ファイルのほか、CSS ファイルや JavaScript ファイル、画像ファイルなども含まれます。あとはこれを好きなところにアップすれば、サイト公開となります。

レンタルサーバーにアップしてもいいし、Amazon S3 を使ってもいいです。また、GitHub と連携して Netlify でホスティングすることもできます。

静的サイトだと何がいいのか、については、次のページにまとめています。

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

好きなエディタを選べる

NKSSG では、記事を書くために好きなエディタを使うことができます。

NKSSG では VSCode を推奨していますが、他のエディタを使っても構いません。使い慣れたエディタを選ぶことができます。

オンライン上のエディタを使うわけではないので、オフラインでも作業ができます。

自動更新のプレビュー機能

NKSSG には、ファイルを保存するたびに画面が更新されるプレビュー機能があります。

nkssg serve というコマンドで簡単にローカルサーバーを立ち上げて、サイトを確認することができます。また、記事やテーマファイルを保存すると、サイトが自動更新されます。記事の執筆やテーマの作成・編集が楽に行えます。

サイト全体ではなく、1つの記事だけをプレビューする機能もあります。再構築を行うのは1ページだけなので、動きが軽くなります。

この機能を使うために、NKSSG の内部で LiveReload というパッケージを使用しています。

Markdownが使える

NKSSG では、HTML 形式だけでなく、一般的な Markdown 記法を使って記事を書くことができます。

内部で、Python-Markdown というパッケージを使っており、サードパーティーの Extensions も使うことができます。好きな拡張機能を使って、より便利に記事を書くこともできます。

Markdown で記事を書く方法、拡張機能の使い方などは、次の記事にまとめています。

Markdown Markdown

記事のフォルダ構造を自由に決められる

NKSSG では、記事のフォルダ構造と URL の構造を、それぞれ、自由に決めることができます。

例えば、それぞれの記事は "/year/month/" というフォルダで管理して、URL は "/year/month/day/" にする、ということもできます。この機能は、階層型のサイトを作るときにも便利です。

静的サイトジェネレータの中には、記事のフォルダ構造が URL に連動してしまうものがありますが、NKSSG では、記事のフォルダ構造と公開記事のフォルダ構造を合わせる必要はありません。

🌐 URLの設定をしよう

上の記事が参考になるでしょう。

内部リンクを楽に管理できる

先ほど、「記事のフォルダ構造と URL の構造を、それぞれ自由に決められる」と書きましたが、「それだと、内部リンクの管理が大変になりそう」と思う人がいるかもしれません。

しかし、その心配は不要です。内部リンクを簡単に管理できる機能を、公式プラグインで用意しています。デフォルトで有効になっています。

各記事に file_id というキーをつけて、他の記事から呼び出すことができます。この file_id は、数字だけでなく、テキストを設定することもできます。自由に管理しやすい名前をつけることができます。

詳しくは、次の記事で解説しています。

🔗 内部リンクを使おう

file_id だけでなく、相対パス、絶対パスで呼び出す方法も用意しています。

画像を楽に管理できる

NKSSG では、画像を記事と同じフォルダで管理することができます。

静的サイトジェネレータの中には、記事は docs フォルダに、画像は static フォルダに、というように、別の場所に保存しないといけないものもあります。しかし、このルールでは、記事と画像が増えてくると、探すのが大変になります。

NKSSG では、画像を static フォルダに置くこともできるし、記事と同じフォルダ内に置くこともできます。記事のあるフォルダに img フォルダを作ってその下で管理することもできます。img フォルダの中に、ai ファイルや ps ファイルを置いておくこともできるので、関連するファイルをまとめて保存しておけます。

📷 画像を貼り付けよう

画像を簡単に管理するための公式のプラグインを用意しています。デフォルトで有効になっています。

ページの順番を楽に管理できる

NKSSG には、サイト(非ブログ)を作る際に便利な、ページの順番を楽に管理できる機能があります。

記事のファイル名を「_xx_yyyy.html」のようにアンダーバーから始めると、NKSSG は自動的に「/yyyy/」というURLに変換します。ローカルのフォルダ内の記事の順番とサイトにおける記事の順番が連動し、しかも、URL はきれいになります。この機能は、階層型のサイトを作るときに威力を発揮します。

次の記事で詳しく説明しています。

😊 簡単に記事を並べる方法

静的サイトジェネレータの中には、この順番管理が難しいため、ファイル名や URL に番号を入れているサイトもあります。しかし、URL に番号を入れてしまうと、記事の順番を入れ替えたり、記事を削除・挿入するときに問題が起きてしまいます。

NKSSG では、URL をきれいにしたまま、ページの順番を簡単に管理することができます。

テーマ機能

NKSSG にはテーマ機能があり、デザインや HTML の構造を自由に決めることができます。デフォルトのテーマを拡張することもできるし、一から作成することもできます。

テンプレートには、Python の世界でよく使われる Jinja2 を使用します。Python の文法と少し違うところがありますが、それほど難しくはないでしょう。また、WordPress のテーマとも違う点はありますが、WordPress のテーマを作ったことがあるなら、それほど学習コストは高くないはずです。

プラグイン機能

NKSSG にはプラグイン機能があり、NKSSG の機能をさらに拡張することができます。プラグインを作るには Python の知識が必要ですが、自由にいろいろな処理・機能を追加することができます。

Illustration by Freepik Storyset