Download - Embed Shogiboard - my first mediawiki extension -

Transcript
Page 1: Embed Shogiboard - my first mediawiki extension -

@tyamadajp

EmbedShogiboard~ 将棋盤 for MediaWiki ~

Page 2: Embed Shogiboard - my first mediawiki extension -

Why MediaWiki?

いいWikiEngineは沢山あります。でもWikipediaに入る=世界中が使う…かも?

Page 3: Embed Shogiboard - my first mediawiki extension -

なんで将棋盤?

VSあから2010 清水女流王将

2010年 10月 11日、通常条件での対局で「公式に」プロ棋士の一角(女流)が崩れる

Page 4: Embed Shogiboard - my first mediawiki extension -

Wikipedia中の棋戦の扱い

チェスの棋譜 チェスの棋譜将棋の棋譜

Page 5: Embed Shogiboard - my first mediawiki extension -

勝敗だけじゃなく内容も残したい

チェスの充実ぶり凄すぎ…

Page 6: Embed Shogiboard - my first mediawiki extension -

作ってみた:将棋プラグイン

機能 :CSA形式等の表示・再生

Page 7: Embed Shogiboard - my first mediawiki extension -

MediaWiki Extensionの種類拡張タイプ できること

SpecialPage, Skin ページ全体を独自生成したり、デザインのカスタマイズができる

Tag WikiText の <mytag>...</mytag> を好きな HTML に置換できる

Magic words WikiText の {{#mymagic: … }} を好きな WikiText に置換できる

Macro WikiText の {{MYVAR}} を好きなテキストに置換できる

Hook ページ更新など MediaWiki の特定動作タイミングに連動して関数を呼ぶ

AJAX スキン内への JS 追加とあわせてコールハンドラ登録で AJAX をできる

今回はコレ

Page 8: Embed Shogiboard - my first mediawiki extension -

どう作る?MediaWiki Extension$wgExtensionFunctions[] = "efHelloInit";

function efHelloInit() { global $wgParser; $wgParser->setHook("hello", "efHelloRender");}

function efHelloRender($input, $args, $parser) { $parser->disableCache(); return "<p>hello!</p>";}世界で一番簡単なTag Extension。<hello>...</hello>を <p>hello!</p>に変換

Page 9: Embed Shogiboard - my first mediawiki extension -

$wgHoge? efHuga?

wg:(Media)Wiki Global (Variable)ef:Extension Function

1.歴史的理由から、グローバル変数で  設定情報や主要オブジェクトにアクセス

2.MediaWiki本体や他プラグインとの  干渉を防ぐため、名前付けルールなどが  かなり整備されている。

最上位の変数・関数は wgMyExtHogeなど、拡張名を含めるコーディング規約

Page 10: Embed Shogiboard - my first mediawiki extension -

グローバルの嵐をやり過ごす変数名 用途

$wgExtensionCredits プラグインのクレジット情報の登録先

$wgExtensionFunctions プラグインの初期化関数の登録先

$wgExtensionMessagesFiles メッセージデータベースの登録用

$wgLang ユーザの言語設定

$wgContLang コンテンツの言語

$wgParser WikiText パーサ

$wgHooks フック処理の登録用

$wgServer ウェブサーバの絶対 URL (ベース URL )

$wgScriptPath インストール先の相対 URL

$wgArticlePath 記事リンク生成用の URL

$IP ウェブサーバ上のインストール先フォルダ

計418個あるが、よく使いそうなのは10個程度

Page 11: Embed Shogiboard - my first mediawiki extension -

EmbedShogiboardの中身

<kifu 再生設定 >棋譜データ</kifu>

<textarea id=hash>棋譜データ</kifu>

<iframe src=盤面 ?id=hash />

1.プラグインとしてはiframe/textareaを  吐き出しているだけ。コメント込みで63行。

2.iframe先はMediaWikiに依存しない  汎用の棋譜プレーヤにできるので潰しが効く

Page 12: Embed Shogiboard - my first mediawiki extension -

デモネットワークが取れない場合はごめんなさいでスキップします

Page 13: Embed Shogiboard - my first mediawiki extension -

ここでお知らせ

実は明日、 MediaWiki イベント開催!

WCJ2010 Tech Talk  - MediaWiki Developers~開催内容~ ・ Hadoop による Wikipedia データの解析 ・ MediaWiki の内部クラスと応用研究 ・開発者コミュニティに参加するには ・ディスカッション

URL: http://atnd.org/events/9164Hash: #wcj2010

Page 14: Embed Shogiboard - my first mediawiki extension -

http://www.mediawiki.org/wiki/  Manual:Extensions  Manual:Global_object_variables  Manual:Configuration_settings   Coding_convention

おしまい■ とにかく役に立つリファレンス

■ 参考にしたチェス版

MediaWiki 拡張、作ってみませんか?

■ 今回作った EmbedShogiboardhttps://github.com/tai/mediawiki-kifu

http://www.mediawiki.org/wiki/Extension:EmbedChessboard