Mediawiki でのスニペット管理を考える

      2016/02/28

先日、コード スニペットをどう管理すれば良いのかという問題について考えましたが、コードを利用する側の立場だとWeb 上に公開して検索エンジンにインデックス化された方が方が便利です。コンテンツを増やす口実とするなら自分のサイト内にコードを掲載した方が良いです。ということで、このサイト内にコードを掲載していく方針に結論づけました。

これまでもブログ(Wordpress)の記事としてコードを掲載してますが、まとめるなら Wiki(Mediawiki)の方がよいだろうと思い SandBox でテストしてます。

コードを掲載するなら今や SyntaxHighlighter という装飾は必須です。Mediawiki には標準で SyntaxHighlight_GeSHi というエクステンションが組み込まれてます。多くのサイトでは LocalSettings.php にエクステンションの読み込みを書くだけで OK となってますが、なぜかこのサイトだと動作しません(もちろん geshi は別途ダウンロードしています)。

また、Markdown も使いたいと思い入れたエクステンションだと、競合が発生するようでコードに空白行間があると <p> タグとか表示されてくるので、2 つとも別のものに入れ直して対処しました。

この SyntaxHighlighter は JavaScript ベースなので、PHP で動作している SyntaxHighlight_GeSHi に比べるとパフォーマンスに違いがありそうです。また、SyntaxHighlight_GeSHi と記述をあわせるため、<source> タグではなく <syntaxhighlight> タグで括りたかったので、SyntaxHighlighter.php を以下のように修正しました。

##$parser->setHook( 'source', array( $parser->extSyntaxHighlighter, 'source' ) );
$parser->setHook( 'syntaxhighlight', array( $parser->extSyntaxHighlighter, 'source' ) ); ##タグ名を変更

Markdown Extra GeSHi は、Markdown の記述を<markdown> タグで括るので他のページに競合なく動作しています。

今までストックしたコードはテキスト ファイルで管理しているので、一括でバッチ処理できれば理想です。Mediawiki には API が用意されているので作ることはできそう。欲を言えばオフラインでも管理できる Mediawiki のクライアント アプリケーションがあればいい。Mediawiki はかなり有名な Wiki エンジンだと思うけど、こんな要望をかなえたアプリケーションは存在しないようです。

とりあえずは手動で入れ込んでみます。テンプレートを使って少しでも効率化できればいいのだけど。

 - Web ,