suwasakix's weblog

SOGIE, Diversity, Software-engineering, Electronics, Finances, Philosophy, etc.

2023.05.01 - アーカイブ

ブログは Hugo + GitHub Pages で

 まず、ブログを Hugo + GitHub Pages で作った背景について記しておきたいと思う。

 

■ ブログシステムの要件

 ブログに求める要件は人によって様々だけど、Hugo + GitHub Pages の組み合わせでブログを運用している人、しようとしている人ならば、考えていることはだいたい同じだと思う。ざっとこんなところだろう。

  • 運営会社による影響を受けないこと
    (サービス終了のリスクが最低限であること)

  • ブログシステムにセキュリティー面での不安材料がないこと
    (例えば不正アクセスによる改ざんのリスク)

  • 維持費がかからないこと

  • ブログに広告が掲載されないこと

  • ブログのデザインやレイアウトを自分でカスタマイズできること

 上記の要件をすべて満たしてくれるプラットフォームは、 GitHubGitLab といったオープンソースソフトウェア (OSS) のホスティングサービスである。

 

■ 絶対に終了しないサービス

 ブログを運用する上で一番の大敵はサ終問題である。言うまでもなく運営企業が潰れてしまったらそれまでだが、企業の自己都合(事業の吸収合併に伴い提供サービスの整理統合が行われた場合とか)でサービスが終了するということも、ままある話だ。一番長生きしそうなブログサービスは何か?を予想するのは極めて難しい。未来は、いまを生きる人間の予想を容易く裏切ってくれる。

 ここはひとつ視点を変えて、もし世の中から無くなったら現代文明が立ち行かなくなってしまうサービスは何か?を考える方がよさそうだ。インターネットは人類の三大発明(火薬・羅針盤・活版印刷)以来の大発明と言われる。ネットは無数のコンピューターによって支えられているのだが、それらのコンピューターは OSS と呼ばれるソースコードが公開されているソフト無しに成り立たせることはまず不可能と言っていい。ライセンス条項を守れば永続的に無料で使うことができ、非常に多くのコンピューターで使われているから不具合は見つかり次第どんどん直される。タダで高品質なソフトが使えるのだからみんなが使う、なので気がつけば世の中のコンピューターシステムを構築するのに必要不可欠なパーツになっている。OSS とは、そういう存在だ。

 GitHub は、それら OSS のソースコードを保守管理するためのプラットフォームなのだ。

 実際、サーバー用のコンピューターやネットワーク機器、スマートフォンのシステムとして広く使われている Linux という OS を構築するには、インターネット上にあるあちこちのサーバーからソースコードを取ってくる必要がある。つまり、インターネット、OSS が存在しなければスマートフォンをはじめとする各種のコンピューターを開発することは不可能だ。インターネットを構築するには OSS を組み込んだコンピューターが必要だし、OSS が公開される場所は GitHub をはじめとするインターネット上のサーバーだ。つまり、コンピューターとインターネット、OSS は相互に密接に依存する関係にある。

 だから、インターネットがこの世から無くならない限り、GitHub もこの世から無くなることはない、ということは高い確度を持って予測できるのではないだろうか。それが、ブログのコンテンツを GitHub に置いておく最大の理由である。

 不幸にも人類が核戦争を起こしてしまったとしても、核保有国は北半球にのみ存在していることから核兵器禁止条約を締結している南米諸国やオセアニアは巻き込まれずにすむ可能性が高いと考えられ、インターネットは生き残ることができるだろう。もし GitHub が不要となる(あるいは突然消えてなくなる)未来があるとすれば、全知全能の AI が爆誕して OSS がお払い箱になるとか、1859年のキャリントン・イベントを上回る規模の太陽フレアが発生して地磁気嵐が全世界の電気インフラを軒並み破壊してしまうといったシナリオだろう。知らんけど。

 

■ 永続性を重視するなら静的サイトで

 話は変わって、ブログを構築するためのシステムについて記しておきたい。ブログを含め、インターネット上のサイトを構築する方法は大きく分けて2種類に分類される。1つは動的サイトと呼ばれるもので、PC やスマートフォンからブラウザでサイトの画面を見ようとするたびにサーバーはその画面を表示するのに必要なデータを生成して送り返す。もう1つは静的サイトで、サーバーは持っているデータをそのまま PC やスマートフォンに送る方式である。両者の違いは、画面に表示するデータを準備するときにサーバーが(PHP や Python で書かれた)プログラムを実行するかどうかである。

 動的サイトを構築するシステムの代表格といえば WordPress だろう。ブログを始めようとした人ならば一度は目にしたことがあるワードではないかと思う。レンタルサーバーを借りて(業者によっては WordPress をインストールする機能を用意してくれている)、WordPress の管理画面から記事を投稿すれば HTML を書けなくても見た目が高品位なブログを運用することができる。WordPress は汎用性のあるシステムなので、ホームページを WordPress で構築している企業・組織は少なくない。

 そう書くと便利そうな WordPress だが課題もある。WordPress はプログラムなのでバグやセキュリティーホールが日々発見されていて、そのつど修正版のプログラムがリリースされている。これはプログラムの宿命というべきもので、ブログの管理者は WordPress がバージョンアップしたらシステムを更新しなければならない(さもなければ、セキュリティホールが対策されていないサイトとして狙われてしまう)。システムの自動更新という手段があるじゃないか、という声も聞こえてきそうだが、自動更新されたときにブログの画面が正常に表示されなくなってしまうケースもあるので、ブログが正常に表示されるかどうかは日常的にチェックしなければならない。

 つまり、WordPress を使ったシステムというのは、人の手をかけ続けなければ維持できない。

 ネット業者が提供するブログサービスも仕組みとしては似たようなもので、業者が裏方としてシステムのメンテナンスを行っているおかげで、利用者はそうした面倒事を一切意識することなく自分の書きたいことを書くことだけに専念できる。そのかわり、プラットフォームの部分は業者が握っているので先述のサ終問題から逃れる術はないのだけど。

 その一方、静的サイトは HTML や CSS、画像ファイルなど予め用意されたファイルを使ってブラウザの画面に表示する。インターネットの黎明期には表示するページの内容を HTML でコーディングしていたものだが(HTML が書けない人向けのホームページ・ビルダーや、プロユースの Dreamweaver もあるけれど)、近年では JekyllHugo といった静的サイトジェネレータが登場したことで(プログラマーにとっては)ぐっと手軽にサイトを構築できるようになった。

 静的サイトのよいところは、サーバーに負荷がかかりにくいためブラウザで表示されるのが速いことも挙げられるが、なんといってもサーバー側のセキュリティーリスクがほぼ無いことだろう。なので、サイトを公開したら基本的にほったらかしにしておいても何の問題も生じない。サーバーがサイトのデータを保存し続けてさえくれれば、人の手を掛ける必要がないのだ。

 Hugo で静的サイトをビルドして、その生成物を GitHub Pages に置いて公開する ── そうすれば、自分という人間がいなくなってもサイトは生き残り続けてくれるはずだ。

 

■ やっぱりソフト開発経験者向け

 Hugo + GitHub Pages でサイトを構築するのに必要なスキルを書き出してみた。

  • git が使えること
    (そもそも GitHub のサービスを使うので)

  • コマンドプロンプト(もしくは GitBash)からコマンドを叩くことに抵抗がないこと
    (Hugo の操作はコマンドを叩くのが基本)

  • Hugo でビルドしたときにエラーが出たら自力で解決できること
    (静的サイトジェネレータがプログラマー向けである理由はこれ。なおメッセージは英語)

  • 画面デザインをカスタマイズしたい場合には、HTML や CSS のコードを改変できること

 そんな感じなのでやっぱりハードルはそれなりに高い。まぁ、そもそも Hugo も GitHub もソフト開発者向けの環境であることからそういうことは織り込み済みではあるし、分からないことがあれば Hugo 本家のサイトのマニュアルを見るなり他人の書いたコードを見て分析するなりして最終的には自力で打開していくのがプログラマーに求められる資質でもある。

 このブログの画面デザインにしても、Hugo 用に提供されている幾多のテーマの中から選んだ Hugo-Octopress のリポジトリをフォークして、私なりのカスタマイズを行っている。どのような改変を加えたかは オリジナルとの差分に履歴が残っているので、同じ構成でブログを作りたい人がいたら参考にしてほしい。

 GitHub Pages でブログを書くことの注意点としては、ブログのコンテンツは git のリポジトリで管理されるので変更内容がすべて履歴が残ることである。もしうっかり問題のある書き込みを GitHub Pages にアップロードしてしまって、後からその書き込みを消したとしても、一度書いた内容はリポジトリの履歴に残る。その黒歴史は、リポジトリそのものを完全に削除しない残り続けるので各位にはご注意いただきたい(もっとも、それ以前の問題としてウェブ魚拓や Wayback Machine の方に残ってしまう可能性もあるけれど)。

 Hugo でサイトを構築するための tips については、また機会を改めて書くことにしたい。

Tags: Hugo GitHub