図解でわかる、このブログの裏側 ― あえて「動かないサイト」にした理由
このブログ、実は中でプログラムがずっと動いているわけではありません。もっと言うと「サーバーで何かを処理する」ということを、ほぼしていません。
自宅にサーバーを何台も置いて日々検証している身としては、「自宅で動かせばいいのでは?」と思われるかもしれません。でも、このブログに関してはあえてそうしませんでした。今回は、専門知識がなくても分かるように図解しながら、その理由を解説します。
1. まず全体の仕組みをざっくり図解
このブログは「Astro(あすとろ)」という仕組みで作られています。Astroは、記事の元になる文章(Markdown形式のファイル)を、あらかじめ完成した見た目のHTMLファイルに変換してくれる道具です。この「あらかじめ変換しておく」という作業のことを、ここではビルドと呼びます。
流れにすると、こうなります。
ポイントは、「ビルド」が記事を公開するときに1回だけ行われるということです。読者がページを開くたびに何かを計算したり、データベースを検索したりすることはありません。読者に届くのは、あらかじめ用意しておいた「完成品のファイル」だけです。
このような仕組みを静的サイトと呼びます。逆に、アクセスのたびにサーバー側でプログラムを動かして表示内容を組み立てる仕組みを動的サイトと呼びます(会員サイトやECサイトなどはこちらが多いです)。
2. なぜ「動的」にしなかったのか
一番の理由はセキュリティです。「動くプログラムがない」ということは、それだけで攻撃されにくいということでもあります。
動的サイトが悪いという話ではありません。ログインやコメント投稿など、状況に応じて表示を変える必要がある機能には動的な仕組みが向いています。ただ、その分「常に動いているプログラム」や「保存されている情報」が存在するので、そこが攻撃の糸口になり得ます。ソフトウェアの脆弱性を突かれたり、設定ミスを狙われたりするのは、たいてい「何かが常時動いている」場所です。
このブログは日記や技術メモを公開するだけなので、そこまでの仕組みは必要ありません。だったら「そもそも動く部分をなくしてしまおう」というのが、静的サイトを選んだ理由です。動かないものは、壊しようも乗っ取りようもありません。
WordPressはなぜ使わなかったのか
ブログというと、代表的な動的サイトの仕組みであるWordPressを思い浮かべる方も多いと思います。WordPressは「PHP」というプログラムと「MySQL」というデータベースが常時動いていて、それらが記事データを都度組み立てて表示する仕組みです。豊富なプラグインやテーマで自由にカスタマイズできる反面、この「常時動いているプログラム」自体が弱点にもなります。
具体的には、次のようなリスクが知られています。
- プラグインやテーマの脆弱性を突かれる
- 管理画面(
wp-admin)へのログインを不正に突破される - 本体・プラグインのアップデートを怠ると、既知の脆弱性が残ったままになる
これらはWordPressというソフトウェア自体が悪いわけではなく、世界中で圧倒的なシェアを持つがゆえに常に攻撃者の標的になりやすく、かつ安全に保つには継続的な運用(アップデート・監視)が欠かせない、という構造の問題です。個人の趣味ブログでそこまでの運用を続けるのは、正直なところ荷が重いです。
このブログでAstroの静的サイトを選んだのは、この「継続的に管理し続けなければいけない部分」自体をなくしたかったからです。プログラムもデータベースも管理画面も存在しないので、そこを突かれる心配もありません。
3. 自宅サーバーがあるのに、あえて自宅には置かなかった
自己紹介記事でも触れましたが、自宅にはサーバーが何台もあり、日常的にいろいろ検証しています。「だったらブログも自宅で動かせばいいのでは」と思われるかもしれませんが、公開用のブログに関しては自宅には置かず、Cloudflareという外部サービスに配信を任せています。
自宅サーバーで公開すると、自宅の回線を世界に向けて開けることになります。攻撃を受けるリスクだけでなく、回線トラブルやIPアドレスの変化で「見られなくなる」不安定さも抱えることになります。趣味の検証環境ならともかく、誰でも見られる公開ブログをそこに乗せるのは割に合いません。
なので、自宅で動かしている検証用サーバーと、外部に公開するこのブログは、はっきり役割を分けています。試行錯誤は自宅で、公開は外部の専門サービスで。これも「動かない・晒さない」構成にするための判断のひとつです。
4. コメントやアクセス集計も、なるべく「動かさない」工夫
とはいえ、コメント欄やアクセス数の表示など、多少は動きのある要素も使っています。ここでも「自分でサーバーを持たない」方針は変えていません。
- コメント機能:
Cusdis という外部サービスの部品を埋め込んでいるだけで、コメントの保存や管理は先方に任せています。自分でコメント用のサーバーやデータベースは持っていません。→ その後、外部JSを読み込む構成はサプライチェーンリスク(先方のスクリプトが改ざんされた場合に影響を受ける懸念)があると判断し、Cusdisの利用は取りやめました。現在コメント機能は無効化しています。 - 人気記事の並び替え:Cloudflare Web Analyticsのアクセス数をもとにしていますが、これも読者がアクセスするたびに集計しているわけではなく、記事を公開するビルドのタイミングで1回だけ取得して並び順に反映しています。表示中に裏で何かが動いているわけではありません。
どちらも「読者のアクセスに反応してサーバー側の処理が走る」仕組みではないので、静的サイトの考え方から外れていません。
まとめ
| 動的サイト | このブログ(静的サイト) | |
|---|---|---|
| 表示の仕組み | アクセスのたびにサーバーで処理 | 事前に作ったHTMLをそのまま配信 |
| 常時稼働するプログラム | ある | ない |
| 攻撃を受けうる場所 | サーバー・データベースなど | ほぼ無し(ただのファイル置き場) |
| 公開場所 | 自前のサーバーが多い | 外部CDN(Cloudflare Pages) |
自宅にサーバーを何台も持っている身だからこそ、「動くもの」を運用する大変さと怖さは人一倍分かっているつもりです。だからこそ、公開ブログのような「常に世界からアクセスされる場所」は、あえてシンプルに、あえて動かさない。それが一番安心して長く続けられる選び方だと思っています。
コメント機能は現在ご利用いただけません
感想やご指摘は、SNSやContactページからお気軽にどうぞ。



