【リリース】ブログを Blogger から内製システムに移行した話
2020/11/08
テーマ: リリース / 2020 / すべて
Blogger で書いていた個人の開発ブログを内製のに移行してみました。
移行した理由
- 外部サービスは突然終わったりサービス改悪があったりして長期的には変化に脆弱である。変化に強くありたい。
- データを構造化された形で手元に置くことで、自動ツイートシステムとの連携などデータを再利用しやすくしたい。
- 見せ方も完全にコントロールしたい。OGPに何を出すとか。
- 記事は markdown で書いて管理したい。
まとめると外部ブログサービスからデータとコントロールを取り戻す!という感じですね。
内製システムの概要
- トラックバック、コメント機能、管理画面、html のサーバサイド動的生成、DB はオーバースペックなので使わない
- (トラバとか昔流行ったよな...)
- ブログ記事データは Contents.py に構造化して記述して PC の DropBox フォルダに置く
- 1 つの記事は date, title, themes, body を持つ python dict
- ブログ更新するときは Contents.py に記事データを追記した上で make する
- make するとブログの全ての html を生成してレンタルサーバに rsync する
- ブログの全ての html とは、個別記事、テーマ一覧、テーマに属する記事リンク一覧、index.html あたり
- 個別記事の permalink は投稿日時の yyyymmdd_hhmm を含む名前とする
- 画像もセルフホストするが、既存の記事のは無理に移行しない
- 埋め込み tweet や youtube 動画、ツイートボタンなど、外部サービスの javascript はごちゃごちゃや変化に弱くなる要因なので読み込ませない
- tweet を埋め込みたいときはなるべく画像化して貼る(引用したtweetが消えたりもするし)
こんな感じでシンプルにします。
1 つの記事データはこんな感じです。
{
"date": "2020-11-08T12:00:00.000+09:00",
"title": "ブログを Blogger から内製システムに移行した話",
"themes": ["Release"],
"body": "記事本文"
}
移行ステップ
- Blogger からデータ(XML)を export してそれを parse して半自動で html から markdown に戻す(スーパー汚れ仕事)
- ブログ生成/アップロードスクリプトを開発 (markdown ライブラリ利用 + 文字列処理で 250 行くらい)
- いい感じに css を定義
- tweet を画像化するスクリプトを開発(puppeteer利用)
- tweet の画像化、画像置き換え
- 既存の記事へのリンクを新リンクに変更(意外とめんどくさい)
とやって全部で 6 時間くらいかかった気がします。
まとめ
この記事は移行後初めて書いた記事ですが、記事を書いて make するだけで更新完了なのでめっちゃ楽ですね。
そして外部ブログサービスに依存しなくなったので長期的に変化に強くなりました。
めでたしめでたし。
2020/11/08
テーマ: リリース / 2020 / すべて