Pukiwiki -> esa.ioに気合いで移行した日記
昨日に引き続きやってた。
結論から述べると、なんとか移行はできたがやはりいくつか不完全な点が出てしまった。反省点を列挙する。
反省1 スクリプトなぐり書きしすぎた問題
既存のPukiwikiから記事を引っこ抜く部分に関しては別スクリプトで書いてあって、そのスクリプトが吐き出すJSONを読み込んでesaに対してリクエストを投げるだけなので大した処理にならないだろうと思ってつらつらと手続き的なコードを書いてたのですが、結局考慮しないといけないことがたくさんあって出来上がったスクリプトは132行。もはやバグっても修正不能…。
完全に事前の想定をミスったなぁと思いました。結局移行スクリプトが途中で落ちてesaのチーム作り直したりする羽目になりました。悲しい。
反省2 想定甘すぎ問題
前述の"考慮しないといけないこと"について。僕が引っかかったのはこの辺。
- Pukiwikiに画像を貼ると自動的に画像に対してリンクがついてしまうのでそれを外す必要があった
- 記事内の
#xxxx
やmailto:
などの扱い。特に多かったのが、SSHのコマンドなどを示してる箇所でssh [username]@exmaple.com
みたいなのを勝手にメアドとして判断してmailto:をつけてくれちゃってるパターン。つらい。 - HTML -> mdのライブラリが微妙に不完全だった。esaの採用してるmdは表の横線が必須のようで、全部の表がおかしくなってしまうといった事態が起きた。gemに手突っ込むか正規表現とかで引っ掛けてお茶を濁すしかないなぁという感じ。
反省3 途中でスクリプトがコケることを考慮していなかった
途中でコケると全部やりなおさないといけない作りになっていた。
esaのAPIは15分で75回しか叩くことができないので再開できる機構がないと何かあった時に厳しい。
という感じだろうか。とりあえず不完全な状態ながら移行はできたので、それを使ってみてもらいつつ、好評なようならちゃんと移行スクリプトのバグを取りつつもう一回トライしたいなぁという感じ。
そのときはちゃんと処理を細かく切り出してテストとか書きながらやりたいなと思いました。こういう求めてる結果がはっきりしててかつ泥臭いロジックが絡み合う感じの処理を書くときはテストちゃんと書いた方がかえって楽なのではないかと思った今日この頃でした。