14
@tyamadajp EmbedShogiboard ~ 将棋盤 for MediaWiki ~

Embed Shogiboard - my first mediawiki extension -

Embed Size (px)

DESCRIPTION

Celebrating historic victory of Akara 2010 (computer Shogi engine) over Ichiyo Shimizu (women's champion in Japan), this talk explains how to create MediaWiki extension to embed Shogi board in MediaWiki - and hopefully in Wikipedia in some future.

Citation preview

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