このサイト
このサイトは Hugo というオープンソースを利用して、作成されています。
Hugo とは Go 言語で書かれた静的 (スタティック) サイトジェネレーターです。 WordPress のようなデータベースを利用するウェブサイトとは異なり、データベースを使用をしません。 Markdown 形式のコンテンツとページをデザインしたテンプレート (HTMLテンプレートやスタイルシート) を利用して、静的な (スタティックな) HTMLページを生成しブログを作成します。
静的サイトジェネレーター (SSG = Static Site Generator) の利点は、サイトのビューワーからページリクエストに対してすでに生成済みの完成した HTML ページで応答するため、コンテンツのデータベースへの問い合わせ等の遅延がなく、非常に高速なページレスポンスが可能なことです。
また、各ページリクエストに対して Web サーバーでの (HTTPレスポンス以外の) 特別なプロセスを必要としないため、Web コンテンツの配信のスケーラービリティが確保できる点も重要な利点です。
さらに、SEO (Search Engine Optimization: サーチエンジン最適化) の観点でも、静的なWebページは有利に働きます。
このサイトで配信するWebコンテンツはドキュメントやアイディアなどが多いため、このような SSG の利点を踏まえて SSG を利用することにしたのですが、
- オープンソースであり、シンプルなアーキテクチャであること
- 高速なサイトビルド (ページ生成) 時間で実現できること
- 開発とユーザーのコミュニティが活発で、多くのデザインテンプレートがあること
という条件を元にいくつかの SSG を比較したところ、Hugo がこれらの条件に合致したため、Hugoを利用することにしました。
デザインテンプレート
このサイトは、PaperMod という、Hugo コミュニティで一般公開されている Hugo テーマ (デザインテンプレート) を利用しています。
デザインテンプレートは、Hugoの技術ドキュメントに従って自分の好みのデザインや機能を備えたものを開発することも可能なのですが、コミュニティ内のデザインテンプレートの中でシンプルで見た目がわかりやすいデザインのものでよいものがあったので、このデザインを選びました。
商用の技術ブログサイトなどには、「いいね」機能などの様々な便利機能が追加されたりしていますが、このデザインテンプレートはソースコードが GitHub で公開されているため、もし必要になったら公開されたソースコードベースで機能を追加したりすることも可能です。最初はテンプレートに備わった標準の機能でスタートしようと考えて始めています。
「あるものを活用する、なければ、開発する」
オープンソースのいいところですね。
サイトの公開
このサイトは Netlify を利用しています。
Netlify ドキュメント にも記載されているように、Hugo サイトのビルドと公開をサポートしています。
Netlifyがサポートする CI/CD (継続的統合および継続的展開) 機能を使って、GitHub のリポジトリに登録したサイトのコンテンツファイルを元に、リポジトリに新しい追加・変更のコミットが加わった時に自動的に Hugo サイトのビルドを行い、ウェブサイトの更新を反映して公開することができます。
謝辞
Hugo および PaperMod の開発に関わったすべての方の情熱と貴重な時間に感謝します。