一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • GitHub Pages × Googleフォーム投稿 × GAS自動コミットでブログを作った話(Markdown運用+静的サイト生成)

GitHub Pages × Googleフォーム投稿 × GAS自動コミットでブログを作った話(Markdown運用+静的サイト生成)

「手軽に投稿したい」と「ちゃんとGitで管理したい」

この2つを両立したくて、ちょっと変わった構成でブログを作りました。

結論から言うと👇

👉 Googleフォームで投稿 → GASでGitHubにcommit → Markdownから静的サイト生成

という流れです。

これが思った以上にちょうど良かったので、構成とメリットを書いていきます。

全体構成

今回の構成はこんな感じ👇

  • ホスティング:GitHub Pages
  • 投稿UI:Googleフォーム
  • 自動処理:GAS(Google Apps Script)
  • データ形式:Markdown(.md)
  • ビルド:静的サイトジェネレーター(PorMod系)

データの流れ

投稿から公開までの流れ👇

  1. Googleフォームで記事を入力
  2. スプレッドシートに保存される
  3. GASがトリガーで起動
  4. Markdownファイルを生成
  5. GitHubにcommit & push
  6. GitHub Pagesがビルド
  7. 公開

👉 完全自動でブログが更新される

なぜこの構成にしたのか

① 投稿は楽にしたい

Markdown運用は強いけど、

  • PC開かないと書けない
  • Git操作が必要

→ 地味に面倒

そこでGoogleフォームを使うことで:

  • スマホから投稿できる
  • UIを作らなくていい

② でもデータはGitで管理したい

ここが一番重要。

GAS構成だけだと:

  • データはスプレッドシート
  • API依存

→ Gitの外にある不安

この構成なら:

👉 最終的に.mdとしてGitに残る

③ 静的サイトにしたい

  • 表示が速い
  • SEOに強い
  • シンプルで壊れにくい

そのためにPorMod系のツールでビルドしています。

GASでやっていること

GASはほぼ“変換&橋渡し役”です。

やっていること👇

  • フォーム入力を取得
  • Markdown形式に変換
  • GitHub APIでcommit

イメージはこんな感じ👇

function postToGitHub(content) {

  const md = `

title: ${content.title}

date: ${new Date().toISOString()}

${content.body}

`;

  const payload = {

    message: “new post”,

    content: Utilities.base64Encode(md)

  };

  // GitHub APIにPOST(省略)

}

👉 フォーム入力 → md化 → Gitへ

この構成の良いところ

◎ 投稿が楽

スマホでサクッと書ける

◎ Gitで完全管理できる

  • 差分管理できる
  • バックアップ不要
  • いつでも復元可能

◎ 自動化されている

  • 手動デプロイ不要
  • pushすら不要

👉 “書くだけ”で公開される

◎ 静的サイトのメリットを享受

  • 高速
  • シンプル
  • 壊れにくい

デメリット

△ 初期構築がちょっと面倒

  • GAS書く必要あり
  • GitHub APIの理解が必要

△ デバッグがやや難しい

  • フォーム → GAS → Git
  • どこで失敗したか分かりにくい

△ リアルタイム性は低い

  • ビルド待ちがある

向いている人

この構成、かなりニッチだけどハマる人には刺さります👇

  • Gitでコンテンツ管理したい人
  • でも投稿は楽したい人
  • 個人開発で自動化したい人

個人的な結論

👉 “いいとこ取り構成”だった

  • 投稿の楽さ(フォーム)
  • 管理の強さ(Git)
  • 配信の強さ(静的サイト)

この3つがうまく噛み合った感じ。

まとめ

ブログ構成って色々あるけど、

  • フルCMS → 重い
  • md運用 → 面倒
  • GASだけ → 不安

みたいにどこかに不満が出がち。

その中でこの構成は、

👉 「ちょっとズルいけど実用的」な落としどころ

でした。

 

 

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア