日直地獄

小学校では事件が起きる

共同編集のはてなブログをGithub上で管理しやすくするツールを作った

作ったと言うとちょっと語弊がある。以下のリポジトリをフォークして共同編集用に変更したものになる。偉大なのは先達である。
ただ、もとのツールが個人のブログを管理する用に作られたと感じたので、ちょっと思想が違いそうということでPull Reqestではなくフォークした。

機能

  • はてなブログの全記事をリポジトリに同期させることができる
    • その記事を変更するPull Requestがマージされると、差分が検出され、はてなブログに同期される
  • 全記事の同期から、記事の編集、新規作成まで、全てGithub上で完結させることができる

変更点

  • もともとのツールは、ブランチを切ってpushしたタイミングで、master ブランチとのdiffを検出し、差分をはてなブログにpushするというものだった。確かにはてなブログを一人で使うならこれが楽そうなのだが、共同編集ブログ、例えば告知ブログやヘルプを管理する場合には、編集内容をレビューできるタイミングが欲しくなる。そう考えると、Pull Requestがマージされたタイミングで差分をはてなブログにアップロードする形にしたほうが良いのでそのように変更した
  • 新規エントリの作成や全記事をリポジトリに同期させる操作をissueから行えるようにした。これは告知ブログやヘルプを書くのはエンジニアだけではなく、ローカルに環境を整えるのが難しいというスタッフも多いためで、ローカル環境を一切作らずに操作できるようにしたかった。issueテンプレートも用意したので、それぞれのオペレーションが迷わず簡単にできる(と、思う)
    • その結果、今回はセットアップからその後の利用まで一切ローカルの環境を作らずにはてなブログの記事をGithubで管理できるようになった

最短セットアップ

  1. Use this Template をクリックしリポジトリを作成する
  2. READMEに書いてある2つのトークンをリポジトリのsecretsに保存する
  3. 全記事同期用issueテンプレートを使いissueを作成し、そのissueを閉じる
    • これで全記事がリポジトリに同期されるので使い始められる
    • 楽ちんですね

迷ったor迷っていること

  • issueから新規記事を作成すると、mainブランチに直接アップされるのがいいのかどうか迷った。差分を含むブランチを作る方法も考えたが、はてなブログ側にはすでに記事が作成されているので、マージされない可能性のあるブランチとして管理するのは適切でなく、mainに直接でいいだろうと判断

- コミットメッセージにどのissueから作成されたのか入れるようにしたので、何目的でエントリを作ったのかなど記載できて便利
-

  • 記事のプレビューをしたいときに困る。mainブランチにマージされたタイミングで反映されることにしたので、プレビューしたいときにいちいちマージしないといけなくてめんどくさい。Previewフラグをどこかに持って、フラグが立っている、かつDraft:yesの場合は、pushで反映されるとかだろうか…?

よかったこと

  • Github Actions触ったことなかったけど、大まかにできることがわかった気がする