はじめに

最近個人esaを始めてみてからなにか調べたりわかったりしたことをまとめる癖がついたような気がします

せっかく書いてるんだからいっそブログにも書いてみるかと思い立った次第です

とはいえesaとブログと二回同じことを書くのは普段コードを書いている習慣上なんとも気持ち悪いものがあります

実際メンテコストもかかるのでesaで書いたものをそのままブログとして公開できないものかなあと考えてみました

要件

esaにすべてまとめる 記事になるものもあれば個人メモのままになるものもある 簡単にブログとして公開できる 二重管理しない 任意の更新時刻を反映できる

構成

サービスの連携

esa, Github, CircleCI, Netlifyを組み合わせてブログを立ててみることにしました

ブログの構成図.jpg (25.2 kB)

流れとしてはこんな感じです esaにはgithubとの連携機能があり、特定のディレクトリ配下の記事がship itされるとgithubの指定されたブランチの指定されたディレクトリに追加することができます それを利用してesaからCIに流してstatic site generatorのhugoでhtmlに変換してnetlifyでホスティングしています これでおしまいだと簡単でよかったんですが、いくつかCircleCIのところでごにょごにょしています

esa記事のディレクトリ問題

この状態での問題は、esaの特定のディレクトリ配下の記事しかブログとして公開できない、ということです これではesaにブログディレクトリを作ってブログとして公開したい記事はその配下に移動しなくてはいけません ブログとして公開するために本来分けたいディレクトリ構造とことなる場所に置くのは嫌だったので、この方法は使えません。 かといってコピーすると二重管理になってしまいます どうにかしてディレクトリ構造を変えないままブログとして公開できる必要がありました

解決策

esaのタグを利用します esaのタグにブログとついてる記事がship itされたらブログ記事として公開されるようにしました esa記事がgithubにpushされるときにこういう形式で出力されます

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
---
title "記事タイトル"
category github
tags タグ1, タグ2, タグ3
created_at 2019-03-06 01:19:59
updated_at 2019-03-06 02:16:26
published true
number 31
---

記事の内容

このタグに"ブログ"が入っているかどうかをみてhugoに記事を渡すかどうかを分けることでディレクトリに依らず特定の記事を公開しています ついでに記事内容をちょっと変えて最新記事になるのは避けたいので更新日時を任意の時間にできるようにyyyy-mm-ddなタグがついていたら更新日時としてhugoに与えるようにしました

まとめ

ブログのために書いている記事なのでブログっぽい書き方になってしまいましたが、たぶんほとんどの記事は技術メモみたいな感じになるんじゃないかなーと思っています(ちゃんと続けば esaの出力ファイルからhugoの入力データの形式に変換するスクリプト公開するかどうかはちょっと考え中(汚すぎて

うまいこと公開されてくれよこの記事