Help us understand the problem. What is going on with this article?

PukiWiki Plus!の進捗をslackに通知するプラグインを書いた

More than 3 years have passed since last update.

この記事は animateLAB Advent Calendar 2015 22日目の記事です。

@kariaです。いい加減ポエムばっかり書いてないでコードを書きなさい!という声が聞こえた気がしました。

皆さんはチーム内のドキュメント共有にどのようなツールをお使いでしょうか。ブラウザからサクッと書いたり更新したりできるツールですと、古くからあるところではPukiWikiWordPress、最近のイケてるサービスだとQiita:Teamesaなどが有名でしょうかね。Google Docsもイイ感じに共有状態で文書を書けますね。

わたしはドキュメント共有にPukiWikiやその派生版であるPukiWiki Plus!を利用しているチームに遭遇したことがありますが、PukiWikiの問題点として複数人で同じ記事を同時に更新すると更新の衝突が発生することが知られています。一応PukiWikiが更新差分を表示してくれるものの、長大な記事で衝突が発生するとなかなかマージが面倒臭いものです。

ということで、PukiWiki Plus!での編集の進捗をslackに通知してくれるプラグインを書きました1

https://gist.github.com/karia/0964e6a1f71143cb65ac

この pukiwiki.cls.php をPukiWiki Plus!の lib ディレクトリ配下に置き、 plugin/edit.inc.php の進捗を知りたい箇所に以下のようなコードを仕込みます。

$t = new slack();
$t->notice("[編集開始]".$page, $_SERVER['PHP_AUTH_USER']);

すると、以下のように編集状況がページ名と共にslackに通知されます。やったー!

slackの様子

このプラグインの利点は、(チャットをちゃんと見ているという前提で)誰がどのページを更新中かわかるため、同時に更新して衝突する事故が発生しにくいということです。編集開始通知が来たあと長時間放置されている場合、その人にmentionを送って「進捗どうですか?」などと確認してあげるとよいでしょう。また、上記画面の例では更新画面を開いたあと何もせずキャンセルボタンを押すことで、明示的に編集を中止した旨を通知しています。

PukiWikiおよびPukiWiki Plus!は古くから利用されているツールではありますが、PHPで書かれていることもあってこのようなプラグインもサクっと書けるのが良いところと感じています。

ちなみに、 plugin ではなく lib 配下に置いてるのでこれは厳密にはプラグインとは呼べないのかもしれませんが……というオチ。


  1. 元々はIRCへの通知プラグインだったものを大幅に改造したものです(原著作者へ公開する旨および記事にする旨の許可を得ています)。 

karia
株式会社つみき SREエンジニア。普段はこの辺に生息しています: https://twitter.com/karia
http://karia.hatenablog.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away