\r\n\r\n
長年にわたり、Webサイトの公開は多くのユーザーにとって手の届かないものでした。 HTMLの作成、アカウントのホスティング、ホスティングされたファイルの更新管理は、技術者でない一般の人々にとって負担が大きすぎたのです。現在、ユーザーはTumblrのアカウントにサインアップして、数分で最初の投稿を入力することができます。
ユーザーがより洗練されたものになるにつれ、WordPressのようなブログプラットフォームは、コンテンツの所有権を提供するようになりました。しかし、WordPressやその同業他社は、まだ多くの可動部分を抱えています。ブログを書きたいだけで、なおかつ所有している人にとっては、やりすぎなのでは?その最新の答えが、SSG(Static Site Generator)です。ここでは、次のオンライン・プロジェクトで、なぜこの製品を検討する必要があるのか、その理由を考えてみましょう。
ウェブ上の最初のページは、誰かがHTMLファイルとして書き、サーバーにアップロードした1ページでしかない。最近のCMS(contentmanagementsystem)は、コンテンツをページとして表示していますが、実際にはマークアップ、データベースコンテンツ、リアルタイムコンピューティングが混在しています。ユーザーがコンテンツを作成し、保存し、ウェブサイト訪問者に提供するためのウェブアプリケーションです。
その代わり、静的サイトジェネレータはパブリッシングツールです。編集可能なフォーマット(Microsoft Wordなど)を使いやすいフォーマット(.PDF)に変換するという点では、Adobe Acrobatなどのツールと変わりはない。この場合、SSGは以下のような基本的な作業を行っています。
次のセクションでは、SSG の「静的」な性質が今日の cms にもたらす利点のいくつかを見ていきます。
WordPressなどのCMSでお仕事をされていた方にとっては、以下のように大きな変化に感じられる方もいらっしゃるかもしれません。しかし、ある種のWebサイトの**管理や保守が非常に簡単になります。そのメリットを見てみましょう。
以下では、Jekyll Static Site Generatorのコマンドと出力を例にして説明します。別のSSGを選択した場合、コマンドは異なりますが、コンセプトは似ています。
従来のCMSとの主な違いは、静的サイトビルダーをローカルコンピュータにインストールすることです。例えば、UbuntuマシンでのJekyllの起動と実行は、以下のコマンドで簡単に行えます。
sudo apt-get install jekyllで新しいプロジェクトを立ち上げる。
jekyll new mytestsitemytestsite "ディレクトリに新しいサイトを作成します。このディレクトリには多くのデフォルトファイルが含まれます。タグファイルを含む "the \ posts "ディレクトリに注目してください。
Static Site Builderは、オフラインのローカルコンテンツ向けに設計されています。新しい投稿を作成するには、ライブのインターネット接続は必要ありません。コンテンツを下書きし、後で「ビルド」コマンドを実行して、ウェブに公開するポスト/ページを作成することができます。BlogDeskのようなオフラインのブログ編集に慣れている方は、一度に1つの記事をプッシュするのではなく、サイト全体をローカルに構築することを除けば、非常によく似ています。
次に、先ほどの「˶‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾」フォルダにコンテンツを作成します。準備ができたら、プロジェクトディレクトリから以下のコマンドを実行して、サイトを構築してください。
jekyll serveこれにより、以下のようにサブフォルダでサイト全体が構築されます。
これが完了すると、Jekyllの組み込みWebサーバーを使用して、このウェブサイトhttp://localhost:4000 を表示することもできます。
気に入ったものがあれば、「U sites」フォルダからすべてのファイルをウェブホストにアップロードするだけでよいのです。あなたのウェブサイトが完成しました
マークダウンが最もサポートされていますが、多くのssgはまた、ボックスまたはプラグインを介して他のssgを受け入れることができます。これらの他のマークアップ言語を使用している場合は、簡単な設定変更またはプラグインのインストールで済みます。
興味深いことに、ほとんどのSSGはHTMLも入力として受け付ける。"ちょっと待てよ"HTMLに変換することがポイントなんじゃないの!?"しかし、考えてみてください。SSG が直接サポートしていない他のフォーマットも、しばしば HTML にエクスポートできます。あなた(または他の著者)が LibreOffice で ODT を使って作成し、それが(たとえば Pandoc を使って)生の HTML に変換されて、さらに SSG で処理されてスタイルが決まる、というワークフローを想像してみましょう。そのためには、多少の工夫が必要ですが、十分に可能なことです
前述のように、ほとんどのSSGは、追加機能を提供するためのエクステンションやプラグインもサポートしています。日付ベースのURLや関連記事などのデータを自動的に追加するものから、ユーザー認証やコメントなどのCMS的な機能まで。DocPad SSGのプラグインには、管理画面も用意されています。
データベースからコンテンツを取得し、含まれるコードを実行する間に、いくつかのCMSページの読み込みに時間がかかることがあります。これに対し、静的なサイトでは、すでにブラウザが使用する形式を採用しています。遅延は、ウェブサーバーがページを送信するのにかかる時間と、ブラウザがページを表示するのにかかる時間だけです。しかし、この2つはCMSで動くサイトもやらなければならないことです。
また、SSG の出力はプレーンな HTML、CSS、Javascript であるため、ほとんどの Web サーバはこれら (および任意の画像) を問題なく提供することができます。つまり、VPSなどの自前のサーバーがあれば、lighttpdやnginxなどの軽量なWebサーバーを導入する柔軟性があるのです。
WordPress、DrupalなどのCMSの複数の可動部は、インターウェブの悪党に攻撃のベクトルを開いてしまう。PHP ファイルにアクセスすると、攻撃者がサイト上で独自のコードを実行することができます。データベースの漏洩は、(より複雑なCMSである)eコマースプロバイダーにとってトラブルの元となる。
一方、SSGのプログラミングマジックは、すべてローカルマシンで行われます。したがって、主な関心事はファイルのパーミッションです。誤ってファイルを書き込み可能にしてしまうのは「悪いこと」でしょうが、CMSでも起こりうることです。しかし、静的サイトは実行コードを持たず、データベースの内容にもアクセスしないため、サイトセキュリティにおける潜在的な脆弱性の数を減らすことができます。
Webサイトを管理したことがある人なら、恐怖のタイミングで管理画面に「アップグレードが可能です」というメッセージが表示されたときの気持ちを知っているはずです。もちろん、本番環境でテストはしますが、コードの修正やユーザーのコメントの書式がおかしくなることで、すべてが壊れてしまうかどうかはわかりません。
静的なサイトと比較してみてください。SSGツールの新しいバージョンが利用できるかもしれませんが、これらはあなたのライブサイトには影響を与えません。このままでは、起こるかどうかわからないバージョンアップのことも忘れて、突っ走ってしまいそうです。その間、SSG をアップグレードし、新しいバージョンのサイトをリリースしてテストし、最終的に新しいバージョンを本稼働させることができます。cmse でも可能ですが、データベースのロールバックと新しいユーザー生成コンテンツが失われるかどうかを考慮する必要があります。
すべてのサイトがStatic Site Generatorに適しているわけではありません。小規模な個人サイトや、従来のブログのようなもの(日刊紙のようなもの)を作るなら、SSGのシンプルさはあなたに合うかもしれませんね。基本的に、テキストとグラフィックのコンテンツを一方的にウェブに公開するのであれば、静的サイトが適しています。
しかし、現代のウェブサイトのほとんどは、オンラインジャーナルを美化しているわけではありません。現在または将来的に以下のいずれかを必要とするサイトでは、Static Site Builderに付随する注意事項を検討する必要があります。
全体として、静的サイトジェネレータは、簡単にコンテンツを作成し、ウェブ用に準備する方法を探しているユーザー向けのパブリッシングツールです。
いかがでしょうか?静的サイトジェネレーターを試してみる気はありますか?CMSはまだいいと思っていませんか?下のコメント欄で議論しましょう
画像引用元:mihalec via Shutterstock.com ウェブサイト