エンジニアのブログ投稿フローを公開してみる
※本記事は広告を含みます
どうも、本業エンジニアです。本日は本業と全く関係がない、当ブログの投稿フローについて話していきたいと思います。
ざっくりイメージ
とりあえず全体像が分かったほうがいいかなあと思って、Geminiにイメージを作成してもらいました。

基本的にはローカル環境内で作業が完結するような構成にしている感じですね。
投稿フローの解説
では要素をひとつずつ解説していこうと思います。
文章執筆・編集
執筆は主にObsidianで行っています。Markdownベースのノート作成アプリですね。ローカルファイルを扱うのでとても軽いのが良いところです。また、md形式はAIとの嚙み合わせが非常によく、誤字チェックや構成なんかも簡単に実施することができます。
また、エクスプローラーでのファイル操作が容易なので、整理整頓はかなりしやすい印象です。
筆者もちょっと前にカテゴリ毎にディレクトリ作成して振り分けするツールを作成して整理したりしました。ローカルにファイルがある、というのはこういうところでもメリットになりますね。
なお、このブログの記事にはアフィリエイトリンクが貼っていますが、これは自作ツールで作成しています。既存のWEBツールで似たようなことができますが、こちらの方がアレンジが効きそうだなと思って自作することにしました。楽天のAPIを利用しているので、セール情報とかレビュー数とか色々拡張することができますね。いまのところはシンプルですが。
こういうの↓

投稿・同期
当ブログはGhostというブログCMSを使っています。WordPressみたいなやつですね。んで、GhostにもWordPressと同じように管理画面があり、そこから投稿できるのですが、ローカルで書いている記事をわざわざ管理画面開いてコピペするのはやや面倒です。なので、ローカルで作ったmdファイルをそのまま投稿できるツールを自作し、これを用いて投稿&同期を行っています。Ghostには投稿用のAPIが用意されているので、そこに向けてPOSTしている感じですね。
こういう感じのツールです↓

公開
上記のツールを叩いてGhostへリクエストを投げると、その内容で記事が公開されます。
いちおうツール上はドラフトor公開が選べるようになっていますが、基本的には最初から公開で投げちゃってますね。
ここまでが一通りの投稿フローとなります。
投稿フローの作成にあたり考えたこと
ここからは個人的にこのフローを作成するにあたり検討したこと、重要視したことなどを述べていこうと思います。
手間に感じる部分はどこなのか
もちろんブログ更新にあたり一番手間がかかるのはこうやって執筆している時ではあるんですが、これはまあ除外するとしてその他の部分で手間がかかる部分がどこか?というお話です。
だいたいのブログCMSには、そのCMS自体にブログ執筆エディタが用意されています。なので、基本的にはCMS側のエディタで執筆する方が多いかと思います。
しかし、個人的にはここがかなり面倒でした。まず毎回ブログ執筆前に認証を通さなきゃいけないですし、執筆するにもCMS側のエディタのクセにも慣れなければいけません。もちろん慣れれば使いやすいですし、UIであれこれ装飾できたりするのも利点です。ですが、このブログは基本的には装飾なし、テキストベースで運用する方針だったので、このエディタの機能はやや冗長であると言えました。なので、Obsidianで執筆を行うことにしました。
すると今度は「執筆した内容をブログに投稿するのが面倒くさい」となりました。CMS側のエディタで書いていればそのまま投稿できるのですが、ローカルで執筆しているとそれができません。また、結局投稿のために管理画面を開いてコピペするのは本末転倒です。という訳で、今書いているこのファイルをそのまま投稿できるようなるツールを作成しました。
このように「手間となる感じる部分」はどこなのか?をひとつずつ潰していくことで、より快適なブログ執筆ができるように工夫しています。
ローカル記事のマスタ化
基本的にCMSのエディタで投稿すると、CMS側にしか投稿データが残りません。なので記事データを残したければ別途バックアップの手法を検討しなければなりません。
しかし、ローカルでマスタ管理しCMS側へ投稿すると、意識せずともバックアップが手元に残る状態となります。この点も自作投稿ツールで改善したポイントですね。
今後は、Obsidianで読み込んでいるディレクトリ自体をgitで管理しちゃおうかな?とも思っていたりしますね。投稿したら同時にpushされる的な。パイプラインと組み合わせて遊べたり可能性も広がりますね。
最後に
AIのお陰でこういった作業環境の最適化みたいな部分がかなりやりやすくなったと思います。AIでコード書くなら、いきなりガッツリ開発するよりピンポイントなツール作るほうが良き。結局テストもデバッグも大変だからね。