作成: 更新:

MicroCMSをGithubIssueに移管してみた

この記事は最終更新日から10か月以上が経過しています。
このエントリーは約3分で読めます。

注意

  • migrationのスクリプトとかはないです、目当てだった人すみません

なぜ?

  • githubで技術ブログ書いた時も草生やしたい
  • graphql使ってみたい
  • githubのアップグレードに敏感になっておきたい
    • 仕事でよく使うし、自分のブログで使ってたら調べざるを得ないため
  • microcmsのプランの変更とか見えて、今後がちょっと怖かった

microcmsの構成

詳しくはこちら

image
image

超シンプルです。ジャンルごと(技術系、サウナ系、思想系。。。)に1APIを実装していて、パラメータはbodyのみです。bodyの中にfront-matter(gray-matterの変換形式)(メタデータ)を記載してます。例えばタイトルやタグ、その他エントリとして表示しないもの全てはここに記載してます。なのでissueにもそのまま渡してます。でもエントリに「登録日時」「更新日時」とかを表示しており、今回の移管作業でその日付を更新したくないので、表示ロジックを「microcmsXXXというパラメータが存在する場合、そのパラメータを優先する、それ以外はgithubのメタデータを利用する」とし、エントリ修正時にmicrocmsXXXパラメータを削除すれば問題ない状態にするために、それらも一緒にインサートしてます。こんな感じ↓

---
microcmsId: 45fhk7g70i_1
microcmsCreatedAt: 2021-04-08T06:39:50.788Z
microcmsUpdatedAt: 2021-11-28T06:33:34.308Z
microcmsPublishedAt: 2021-04-08T06:41:56.108Z
microcmsRevisedAt: 2021-11-28T06:33:34.308Z
topics: ['aws', 'nextjs', 'githubaction', 'jamstack', 'microcms']
---

# 以下本文

わかります。あなたの思う通り、かなり雑です。マネタイズしてるプロダクトでは絶対やらないですが、あくまで自分のプレイグラウンドとして使ってるWebサイトなので気にしない気にしない。。。

どうやったの?

単純にmicrocmsのbodyをgithub issueのtitleとbodyに移管しただけです。github apiのアクセス制限がある+一度昔のエントリを見直したい+microcms今後あまり使わなそうと言う理由から、メタデータ以外、つまり本文だけ手動で移管しました。スクリプトありますが下手に乗せるとノイズになりかねないので載せません。apiをジャンル毎に分けてましたが、issueでは「labels」にジャンルを設定して判別することにしました。「private」というラベルを作成して、下書き判定もしてます。

どこ大変だった?

amp-img対応

amp対応済みだったこともあり、エントリで画像を使う時<amp-img>を直接ベタ書きしてたんですが、これissueに書いちゃうと検索に引っ掛からなくなるので大変でした。(htmlタグ的なやつ+markdown記法の記号のような、メタ的な記述は検索に引っ掛からない仕様なのを把握してなかった)

手動での移管

github apiのアクセス制限がある+一度昔のエントリを見直したい+microcms今後あまり使わなそう

結局こんな理由語っときながら、手動は本当にきついです。許容はしてたけど予想通りミスも出てきたし色々だるさあった。。。やっぱ一旦スクリプトしっかりかいて自動で移管すればいいかなーと思いました。いやーエンジニアらしくない愚直な作業でほんと無駄だった。。。100エントリ近くを1時間かけてやりました。ジャルジャル見ながらやりました。

まとめ

  • データの手動移管はダメ、ゼッタイ。(当たり前だろ)