Crowi 用の API Client 書いて公式に取り込まれた

April 4, 2017


Crowi というオープンソースソフトウェアの wiki があります。

Markdown で書ける wiki で、

  • Markdown をオートプレビュー
  • URL (パス構造) でページを作成/表現できる
  • リビジョンヒストリ (差分を管理してくれる)
  • いいね、ブックマーク、ポータル機能、…

などの特徴があって、とても便利なサービスです。

簡単に Heroku to deploy できるので気になる方は試してみてください。開発者向けにはオールインワンの Docker が有志によってメンテされているので、そちらを試してみても良いかもしれません。

go-crowi

Crowi 用の API Client を Go で書きました。

Go で API Client は初めて書いたのですが、@deeeet さんの記事が参考になりました。

https://deeeet.com/writing/2016/11/01/go-api-client/

もともと、Qiita:Team からの移行ツールを Go で書いていたのですが、Crowi API と通信する部分は外部パッケージとして切り出したほうが汎用的に良いなと、go-crowi を作りました。

https://github.com/b4b4r07/qiita2crowi

このツールは Qiita:Team からのエクスポート用の JSON を食わすと、指定した Crowi に記事を作成してくれるものです。Qiita から画像を取ってきてアッタチメントしたり、コメントなども移行してくれます。

Transfer to Crowi

そして今日、Crowi のメインメンテナの @sotarok さんから公式においても良いかも、というお話をいただき transfer しました。

公式 SDK としたほうが多くの人に使ってもらえるし、ユーザに安心感も与えられるのでこの移譲には大賛成です。P-R も歓迎しています (おそらく自分がこのままメンテすることになると思います)。

現在は 3 つの API に対応しています。

  • /_api/pages.create
  • /_api/pages.update
  • /_api/attachments.add

ここらへんは Crowi API の変更にともなって変更、または追従して新たに追加する予定です。

Others…

Crowi 用の Vim plugin も作っているので良かったら見てみてください。開いているファイルでそのままページを作ってくれます。投げたらそのままブラウザを開いてくれるのでとても便利です。mattn/memo と組み合わせると、メモった内容ですぐにページを作れるので捗ると思います。