4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

animateLABAdvent Calendar 2015

Day 22

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

Last updated at Posted at 2015-12-22

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

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

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

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

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

この 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への通知プラグインだったものを大幅に改造したものです(原著作者へ公開する旨および記事にする旨の許可を得ています)。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?