ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

Rubyガッと書いてPukiwikiの記事を引っこ抜く

月例会があったので今日のメインはそれだった。

研究の方はとりあえず中間発表乗り越えられそうな目処がついた気がする。頑張っていき。

Ruby

クソ楽しい。今日はRailsではなく素のRuby

研究室のwikiがレガシーすぎてまともに更新されなくてヤバみが深いのでmdで書けるいい感じのサービスに移行したいねーって話が最近ホットなのでPukiwikiから既存の記事を引っこ抜くスクリプトを書いてた。

(公開したいところではあるんだが、研究室の独自の認証モジュール関連のコードとかがあるので微妙っぽい。いい感じに移行できたら載せる)

Pukiwikiの記法→mdに変換するパーサーを書こうかと一瞬血迷ったけど、レンダーされたHTMLをmdにした方がスマートっぽいよね、(HTML→mdが最悪上手くいかなくてもHTMLのまま新サービスに投げれば表示されるという意味もあり)ってことでnokogiri使ってギコギコと記事本体の部分だけをスクレイピングしたりしてた。

なんだがいい感じに記事を引っこ抜くことはできた。

移行先として検討されてるのはおそらく下記の3つ

まずGrowi、これはOSSなのでオンプレで使えるのが嬉しい。APIもあるっぽい話を聞いた気がするのでインポートは楽そう。(オンプレなら最悪DBに直接書き込むとかいう技も使えるし)

次、esaさん。これは僕のお気に入り。(個人的に契約してる)

研究室単位なら無料で使えるらしいし、トリかわいいしここに移行したい。

APIあるのでそれを叩きまくれば移行できそう。

kibelaesa同様にオンラインサービス。使ったことないのでなんとも言えないが、とりあえず現時点ではAPIが無いので移行が大変そう。ヘッドレスブラウザから記事投稿しまくるか????

とりあえず僕はesa激推しなので無料体験でチーム作ってひっそりwikiの全記事移行した上で「どうっすか!?移行しましょう!?」ってやるつもりで引っこ抜いたデータをesaAPI叩いてもりもりインポートするコードも並行して書いてみてます。

概ね動くところまでこぎつけたものの、画像がネック。既存のwikiは研究室のアクセス認証下じゃないとリクエストを弾いてしまうのでなんとかして画像を認証の外に移動しないとなぁという感じです。(esaは画像のストレージとしてs3使ってるっぽいが、そこにAPI経由で画像を上げることはできなさそう)

とりあえず画像のパス抽出した上でダウンロードしてどこかアクセス認証外のサーバーに上げてお茶を濁そうかなと思います。

あとは適当にAPIリミットで一旦リクエストを止めるような制御をかませば大体終わりかなという感じ。

こういうの、楽しくて良いですね。

さよならMacBook

MacBook剥ぎ取られました。

嘘です。例のペチペチキーボードの不具合の修理をアップルがキャンペーンとして発表したので修理に出してきました。

1週間くらいで戻ってくるらしい。

雑談

wikiの移行スクリプト書いてたらなんだかとっても元気になりました。

そもそもプログラミング始めたのって面倒なこと、大変なことを効率よくやるためだったような気がして、割と原点に立ち返ってる気持ち。

コードかけるだけでその辺の書けない人の何万倍も同じ仕事するのに時間短縮できると思うとすごいことやなと、今更ながら。