3 ポイント 投稿者 GN⁺ 2023-09-11 | 1件のコメント | WhatsAppで共有
  • 「Make」を静的サイトジェネレーターとして使う方法を紹介した記事で、このツールはシンプルさ、高速さ、低メンテナンス性によって人気を集めている。
  • 著者のKarl Bartelは、簡単なスクリプトを使ってブログをセットアップした経験を共有しており、他のサイトビルダーを使うよりも満足感が高かったと述べている。
  • 基本設定では、すべての入力ファイルをソースディレクトリに置き、処理中にすべてのHTMLファイルへヘッダーを追加し、それ以外のすべてのファイルはそのままビルドディレクトリへコピーする。
  • 著者は make build で実行する各ステップに対応するMakefileルールを示しており、それによってローカルで閲覧したりWebサーバーへアップロードしたりできるビルドディレクトリを生成する。
  • 記事ではさらに、現在のページを表示したり、Markdownからページを生成したり、便利機能を追加したりするなど、さまざまな要件に合わせて基本設定を拡張する方法についても論じている。
  • 便利機能の例としては、Pythonの組み込みWebサーバーを使ってサイトをローカルで配信すること、ソースディレクトリ内のファイルが変更されたときにサイトを自動で再ビルドすること、サイトをGitHub Pagesへアップロードすることが挙げられる。
  • 著者は、Makefileの中に自分専用の静的サイトジェネレーターを持つ利点を強調しており、そこには奇妙な依存関係がないこと、保守が容易であること、自分の要件に素早く適応できることが含まれる。
  • このアプローチで構築されたページの実例は https://github.com/karlb/astridbartel.de で公開されている。

1件のコメント

 
GN⁺ 2023-09-11
Hacker Newsのコメント
  • 静的サイトジェネレーターとして "Make" を使うことについての記事
  • あるユーザーが、Makefile を使ってウェブサイトを生成した個人的な経験を共有し、ニュース、RSS フィード、研究発表や講義資料の自動リスト化などの機能を追加してもうまく動いてきたと述べている
  • そのユーザーは、ウェブサイトがホストされているリモートサーバー上で必要なときに make を自動実行する git hooks の利用にも言及している
  • 別のユーザーはこのアプローチの問題点を指摘している。ソースからファイルを削除してもビルド結果からは削除されないというもの。回避策として、再ビルド前にビルドフォルダー全体を削除する方法を提案しているが、それではビルドシステムの目的を打ち消してしまう
  • あるユーザーは柔軟性を高めるために m4 を追加することを提案しているが、寄稿者に HTML の習熟が必要になるため、この手法は今日の大規模なウェブサイトでは機能しないかもしれないとも指摘している
  • あるユーザーは、Karl の "blog.sh" シェルスクリプトの取り組みに触発され、自身のミニマリストな静的サイトジェネレーター(SSG)である "barf" を作った経緯を共有している
  • 別のユーザーは、すでに Github にプッシュしているなら、ソースをプッシュし、Github に Markdown をホストされたページとして公開させることもできると指摘している
  • あるユーザーは、Hacker News で目にする開発者ブログの大半に RSS フィードがあることを称賛し、自分は興味深い記事を見つけるたびにそのフィードを購読していると述べている
  • あるユーザーは、make を使って科学論文を生成した経験談を共有しており、単一のテストファイルを変更すると、テストの実行やグラフの生成を含めて論文全体を再生成できるとしている
  • あるユーザーは、make はコンパイルに時間のかかるコンパイラでビルドされる大規模プログラムには有益で、高速な増分再ビルドを可能にすると主張しているが、すぐに生成できる静的サイトならスクリプトのほうが効率的かもしれないとも述べている
  • あるユーザーは、シェルスクリプトを使った後に Makefile へ移行した経験を共有し、そのほうが適していると感じたと述べている。ページ生成やインデックス、Atom フィードを作成するために XSLT テンプレートを使っていることにも触れている
  • 20年以上 Linux とシェルスクリプトを使ってきたものの、あまりコーディングはしてこなかったというユーザーが、なぜシェルスクリプトより make が好まれるのかを尋ね、Zim-wiki でウェブサイトを作ったあと、スクリプトでメインの講義ページを整理・更新している習慣を共有している