開発者ハブ
このページでは、MediaWiki 開発の高度な概要を記述しており、MediaWiki 開発者が利用する重要な文書、リソース、ツールへのリンクを含んでいます。対象はMediaWiki の使用経験があり、熟練したLAMP開発者です。
- ウィキメディアの web API を使用したい場合は、開発者ポータルを参照してください。
- ウィキメディアのソフトウェア開発に貢献したい場合は、新規開発者 を参照してください。
- MediaWiki およびその拡張機能の開発の入門ガイドについては、MediaWikiハッカーになる方法 を参照してください。
- もし外部のMediaWiki利用者と協同したい場合には、MediaWiki開発者やシステム管理者、利用者、コンサルタントのほかホスティングのプロバイダが集まるMediaWiki 利用者グループは、MediaWiki 利害関係者グループ (MWStake:MediaWiki利害関係者グループ) です。
概要
MediaWiki は、ウィキペディアとその姉妹プロジェクト群や世界中の数多くのウィキを支えるソフトウェアです。
MediaWiki はPHP プログラミング言語[1] jQueryをクライアントJavaScriptライブラリに使っています。
MediaWiki は基本的にLAMP プラットフォーム向け[2]で、ほとんどのOSで有効です。 基本的に MediaWiki ではデータベース サーバーに MySQL と MariaDB を使用します[3]。
開発はオープンソース方式で行われます[4]。大部分はオンラインでの調整となっており、ウィキメディア財団はサポートしていますが、ボランティアのコミュニティ開発者も大きな役割を果たしています。
- 開発についての議論がさまざまなメーリング リストや IRC チャンネルで行われています。 主な開発者向けメーリングリストは wikitech-l です。主な開発者向け IRC チャンネルは #mediawiki 接続 です。
- ソースコードは、バージョン管理システム Git を使用して管理しています。[5]
- ほとんどのプロジェクトはコードレビューを Gerrit で実施しています。パッチ提出の準備として Git と Gerrit を設定するには、チュートリアルに従ってください。
- バグの報告およびほとんどのプロジェクトのタスクは Phabricator で管理されています。
- 開発者で(コアコードの作業ではなく)MediaWiki の拡張やインターフェースに取り組む場合は、API や フック システムなど、いくつか便利な Manual:Developing extensions#Extension points|拡張ポイント があります。
主要な文書
コード、開発、スタイル
- 開発の方針 – 主要な開発の方針の概要
- コーディング規約 – MediaWiki のスタイルでコードを書く方法を学習しましょう。
- 開発者向けセキュリティ – MediaWiki をセキュアなものに保つ方法を学習しましょう。
- コミット前のチェックリスト – コードをコミットする前にこのチェックリストをお読みください
- コード レビュー ガイド – MediaWiki のソースコードへのコミットのレビュアー向けのガイド
- Technical Decision Making Process – より大きな技術的変更を行う決定プロセスに関して読む。
- ライブラリの開発 – サードパーティーのライブラリをパッケージ化して MediaWiki で使えるようにするガイド
デバッグとテスト
- デバッグの方法 – MediaWiki をデバッグするためのガイド
- Errors and symptoms – MediaWiki でよくあるエラーとそれが引き起こす症状の概要。
- ブラウザー テスト – MediaWiki 用の UI テストを Selenium を使用して記述する方法を学習しましょう。
- 単体テスト – MediaWiki 用の単体テストを PHPUnit を使用して記述する方法を学習しましょう。
- APIの統合テスト – Mochaを使ってMediaWikiのAPI統合テストを学ぶ。
- 開発者向けセキュリティ – 安全性の高いコードの書き方はこちらで習得できます。
アーキテクチャ
- MediaWikiのアーキテクチャ – MediaWikiのアーキテクチャの紹介。
- コード – MediaWiki のソースコードの主要な部分の概要。
- データベースのレイアウト – MediaWiki のデータベース スキーマの概要。
- グローバルオブジェクト変数 – 主要なグローバル変数の部分的な一覧。
- 地域化(多言語への対応) – MediaWiki の国際化システムについて学習しましょう。
- このウィキの Manual 名前空間 – 開発者向けの説明文書。
- MediaWiki Class Reference – MediaWiki ソースコードから導いた技術文書(注記: クラスの参照ページは重いため読み込みに時間がかかります。)
下位システム
- API - MediaWiki の API は、MediaWiki のデータベースに含まれるデータへの直接的で高レベルのアクセス手段を提供します。
- ContentHandler – 特殊な種類のコンテンツをサポートする MediaWiki のフレームワーク。
- データベース アクセス – MediaWikiにおけるデータベース利用の概要と、データベース抽象化層の簡単なガイド。
- ジョブ キュー – MediaWikiで長時間実行されるタスクを非同期に処理するフレームワーク。
- メッセージAPI – PHPまたはJavaScriptでローカライズされたアプリケーションメッセージを提供する、MediaWikiのフレームワーク。
MediaWikiを拡張する
MediaWiki は「コアコード」を変更することなく修正できるように設計されています。これにより、古い拡張機能のコードの変更に手作業でマージすることなく新しい MediaWiki のバージョンを更新することが簡単になります。MediaWiki ができることを開発者が変更・拡張できるようにするための、いくつかの拡張ポイント があります。
拡張機能開発者向けのヘルプ
- 拡張機能の開発 – 拡張機能の開発ガイド。
- 拡張機能のよくある質問
- 拡張機能の一覧は、カテゴリ:拡張機能 を参照してください。
- Extension:BoilerPlate – 空の拡張機能テンプレート。
外装開発者向けのヘルプ
- MediaWiki外装を作る方法 – MediaWiki の外装を作成するガイド(訳注:全3パート)。
- 外装の設定 – ウィキ用外装を作成するガイド。
Help for gadget developers
- ガジェット キッチン – a guide to developing user scripts and gadgets on wiki.
Help for module developers
- Scribunto/Lua リファレンス マニュアル – documentation for developing Lua modules on wiki.
- Extension:Scribunto – about the Scribunto extension.
脚注
- ↑ MediaWiki 全体が PHP で書かれているわけではありません。サポート用ツールのなかには別の言語で書かれたものがあり、バッチ ファイルやシェル スクリプトのほか Makefile や Python が使用されています。
- ↑ MediaWiki はPHPをサポートするプラットフォームであれば走りますが、LAMP以外のプラットフォームだと、ユーティリティやOS拡張機能が不足していると機能やパフォーマンスが制限されます。
- ↑ MySQL と MariaDB 以外にも、MediaWiki がサポートするデータベースにはPostgreSQL と SQLite があります。
- ↑ 開発者はボランティアと様々な組織の有給スタッフです。MediaWikiで働いている人の完全なリストは開発者 を参照して下さい。
- ↑ ソース コードやコード リポジトリのリビジョンを Gerrit で参照するか、Gerrit を使用してソース コードのダウンロードができます。