How to become a MediaWiki hacker/ja

この記事は開発者を対象に、MediaWiki core と MediaWiki 拡張機能の開発に貢献するために欠かせないスキルの習得を支援する目的で執筆されました. MediaWiki で活動中、ほんとうに自信があって責任を持てないなら、ほとんどの場合MediaWiki coreをいじらないように注意してください.

ウィキメディアの開発を始めるなら、まずメンターを付けてくれるウィキメディアで貢献することから入りましょう. メンターなしでする他の開発としては、既存のコードにあるgood first bugの修正があります.

あなたが経験を積んだ開発者である場合は、代わりに  を参照してください.

ウィキメディアのコミュニティに参加するその他の方法は、 を参照してください.

概要
MediaWiki は、ウィキペディアとその姉妹プロジェクト群や世界中の数多くのウィキを支えるソフトウェアです.

MediaWiki は PHP プログラミング言語で書かれていますが、一部の補助ツールは他の言語で書かれています. バッチ ファイル、Makefile、Python などがその例です. また、クライアントのJavaScript ライブラリとしては jQuery を使用しています.

MediaWiki は主に LAMP プラットフォーム向けに書かれており 、ほとんどの OS で実行可能です. MediaWiki は主に MySQL または MariaDBデータベース サーバーを使用しています

開発オープンソーススタイルで行われており 、大部分のコミュニケーションはオンライン上で行われています. 開発はウィキメディア財団による支援もありますが、ボランティアコミュニティの開発者によるものがかなりの部分を占めています.


 * 開発についての議論がさまざまなメーリング リストや IRC チャンネルで行われています. メインの開発者メーリング リストは wikitech-l です.  メインの開発者 IRC チャンネルは  と  です.
 * ソースコードは Git リビジョン管理システムで管理されています.
 * コードレビューは、 で行われます. こちらで閲覧できます. パッチを投稿するために Git や Gerrit をセットアップするには、こちらのチュートリアルに従ってください.
 * バグ報告やタスクは、こちらで閲覧できます.

このページは、MediaWikiのコントリビュータになる助けになるはずです. これはチュートリアルではありません. 単に必要なことを学べる場所へのポインタを示しているに過ぎません.

開発環境のセットアップ
ほとんどのプロジェクトでは Git と Gerrit を使用します. Gerrit のチュートリアルにしたがって開発者アカウントを登録してください. その後に、コードをダウンロードしたり変更、テスト、パッチの送信が可能になります. 開発環境を準備するには、あらかじめ設定された仮想マシン (Docker または Vagrant) を使用する方法と手作業で行う設定の 2 通りがあります.

Docker 開発環境

 * MediaWiki Docker – Dockerを使用してMediaWikiを実行します. (Linux、Windows、macOSのホストで使用可能). This is the recommended method.

You can also try the experimental mwcli tool which provides basic orchestration functionality for MediaWiki docker containers.

Vagrantを使用した仮想マシン

 * Vagrantのインストール - ここに書かれた手順に従えば、Linux仮想マシン内で、MediaWikiサーバーとそれに必要なすべてのプログラムのインストールができます. ホストには、Linux、Windows、Macのいずれも使用可能です.

Vagrant is a powerful tool, but it is more complex and less robust than Docker, and significantly more resource-intensive. It is mainly aimed at developers who need to set up complex, flexible environments, e.g. for testing the interaction of multiple extensions.

手動インストール

 * インストール要件 - ハードウェア要件を確認し、LAMP、MAMP、WAMP のいずれかのサーバー (Linux、Mac、Windows のいずれかとApache、MySQL/MariaDB、PHP) をインストールします.
 * — Git から最新のソースコードをダウンロードします.
 * — 引き続きインストールと初期設定をします.
 * 早期に警告やエラーを表示するためにさまざまなデバッグ手段準備します.

MediaWikiの機能開発には、必ずしもウィキペディアのデータベースからダンプをダウンロードする必要はありません. 実際、多くの場合では、いくつかの工夫して作成したテストページを追加したほぼ空のデータベース使用した方が簡単です. しかし、もし何らかの理由でウィキペディアのコピーが必要な場合は、ここからダンプを入手できます.

PHP
MediaWikiはPHPで書かれています. ですから、MediaWikiのコアをハックするためにPHPに精通する必要があります.


 * PHPを学ぶ
 * PHP のチュートリアル — 様々な言語で利用できます. PHPについて全く知らなくても、他のオブジェクト指向プログラミング言語の経験があれば、PHPを学ぶのは簡単です.
 * PHP Programming at Wikibooks.
 * PHP at Wikiversity.


 * PHPに関するリソース:
 * PHPマニュアル — 様々な言語で利用できます.
 * MediaWiki コミュニティ内の PHPコーディング規約


 * 知っておくべきこと:
 * MediaWikiの

が、基本のPHPインタープリタにMediaWikiのオブジェクトとクラスをロードします.
 * また、MediaWiki のスクリプト  の書き換えも必要.   がベースです.  も参照してください.

データベース
多くの機能がある程度のデータベース操作を必要とするため、MySQL/MariaDBに精通している必要がある場合が多いでしょう.


 * MySQL/MariaDBについて学ぶ
 * MySQL のチュートリアル — MySQL リファレンス マニュアルより.
 * MySQL at Wikibooks.


 * MySQL/MariaDB リソース
 * MySQL のリファレンス マニュアル — 様々な言語で利用できます.
 * MariaDB ナレッジ ベース
 * MediaWiki コミュニティ内のデータベース コーディング規約


 * 知っておくべきこと:
 * MySQL/MariaDBでコードをテストしてください.
 * MediaWiki は現在、主要なデータベースバックエンドとして MySQL と MariaDB を使用しています. また、PostgreSQLやSQLiteなどの他のDBMSもサポートしています.  しかし、ほとんどすべての開発者はMySQL/MariaDBを使用しており、他のDBをテストしていないため、結果として定期的に動かなくなっていまいます.  そのため、パッチのテストには、特に他のDBのサポートを改善する場合を除き、MySQL/MariaDBを使用することをお勧めします.  後者の場合、MySQL/MariaDB を壊さないように（あるいは、MySQL/MariaDB において恐ろしく非効率なクエリを書かないように）注意してください.

JavaScript と CSS
JavaScriptとCSSは、フロントエンドのコードのいたるところに現れます. MediaWikiで作業するためにJavaScript、jQuery、CSSに精通する必要はありませんが、作業する内容によっては必要かもしれません.


 * JavaScriptとCSSについて学習する
 * JavaScript and CSS at Wikibooks.
 * jQueryをはじめる — jQuery のチュートリアルです.
 * Learning JavaScript — references and sources.


 * JavaScript と CSS のリソース
 * MediaWiki コミュニティ内の JavaScript コーディング規約
 * MediaWiki コミュニティ内の CSS コーディング規約

MediaWiki
MediaWikiのコードベースは大きな部分もあります; それに圧倒されないでください. 最初のうちは、コードの小さな領域にしか触れないような機能を書いたり、バグを修正したりすることを目標にしましょう.


 * MediaWiki の基本と必読ページ:
 *  — MediaWikiの主な構成要素と、それらがどのように相互に作用するかについての高レベルな概要です.
 *  — 安全なコードを書く理由と方法についての概要です.


 * MediaWiki のリソース:
 * — 重要なリストとリンクのより詳細な情報です.
 * — フックの一覧です. コードベースのどの部分が何かをするのか見つけようとする場合、多くの場合、関連するフックを検索することから始めるのがよいでしょう.
 * — MediaWikiコミュニティ内の一般的なコーディング規約の概要です.


 * コードの説明文書 (出典の追加) — ソースコードとそれのコメントによって自動生成されています.
 * — MediaWikiデバッグの手引.
 * — MediaWikiのオブジェクトをライブで操作するためのツールです.

MediaWiki 拡張機能
MediaWikiの拡張機能のコードを動かす事を選んだなら、以下のリンクから詳細をご覧いただけます.


 * MediaWiki 拡張機能のリソース:
 * 拡張機能の開発 — MediaWikiでの拡張機能のコードの書き方
 * 拡張機能の書き方のチュートリアル


 * MediaWiki 拡張機能のリソース:
 * 拡張機能に関する最善の手法
 * A brief introduction to MediaWiki extension development — MediaWikiの拡張機能の作り方に関するプレゼンの動画. (slides).
 * MediaWikiの拡張機能の作り方 — MediaWikiの拡張機能を開発する方法、ベストプラクティス、MediaWikiコミュニティへの参加方法について説明します. 2011年2月からです.
 * Help for extension developers on the Developer Hub

関連項目

 * リポジトリを横断してコードを検索
 * – この記事にかかれていることをを精読したら、今度は開発者ハブの情報に移りましょう.