How to become a MediaWiki hacker/ja

この記事は開発者を対象に、MediaWiki core と MediaWiki 拡張機能の開発に貢献するために欠かせないスキルの習得を支援する目的で執筆されました.

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

あなたが既にMediaWikiの使用に慣れ親しんだ経験を積んだ開発者である場合は、代わりに  を参照してください.

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

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

MediaWikiおよび拡張機能のほとんどはPHPプログラミング言語で書かれています. 対話式のインターフェース要素を提供するためにJavaScriptがクライアントJavaScriptライブラリとしてのjQueryおよびVue.jsと共に使用されています.

一部の補助ツールは他の言語で書かれています. バッチ ファイル、Makefile、Python などがその例です.

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

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


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



タスクを探す、もしくは新設
今まで、 MediaWiki プロジェクトのどれかで実際に機能を開発したとかバグ修正をしたことがなくても、始めるからには下調べが重要です. 具体的にいうと次のことを考えましょう.


 * 1) Phabricator を検索し、未解決またはすでに処理済みのタスク（文書の種別欄）がないか探ること.  もしないなら、新しく項目を立てます.  ただしごく小さな変更なら、タスクは作りません.
 * 2) 指定の機能を展開するには、どのコードを修正するか探してじっくり検討すること.  Phabricator のタスクにコメントして、自分が発見したことで他の人の助けになりそうな点を記入し、変更点の査読を待つ、あるいは展開する人が現れるのを待つこと.
 * 3) 調査したコードのどこをどう変更するか理解できるなら、自力でバグ修正する技能があるかどうか、あるいは機能そのものを追加できるかどうか、見きわめます.  タスクが長大もしくは複雑そうな場合には、もう少し難易度が低いタスクに取り組んでみて、少しずつ難し目のタスクへと技能を上げていくと、当初は長大だと判断した規模でも扱えるように努力します.  自力で完結できるという自信がある場合は、あなた自身をそのタスクに割り当てて、作業を始めてください.



開発環境のセットアップ
Once you have found something you can work on, the next step to developing MediaWiki or an extension is creating an environment to run MediaWiki, its database, and any other external features so that you can develop and test them.

You can install and develop MediaWiki on Linux, Windows, or macOS using any of the three solutions below.

Docker

 * MediaWiki Docker – Dockerを使用してMediaWikiを実行します.

Docker is a good option if you want to setup a MediaWiki installation quickly and are not planning on installing many extensions.

You can also try the new mwcli tool which sets up Docker with a few simple commands and provides basic orchestration functionality between MediaWiki, MySQL, ElasticSearch, Memcached, and other types of containers.

Vagrant

 * MediaWiki Vagrant – Run MediaWiki on a Linux virtual machine using Vagrant.

Vagrant allows you start a MediaWiki instance you can develop as well as allowing you to add and develop any of 250+ extensions - all with a single command.

This saves you installation and configuration time compared to manually adding extensions in a Docker or local installation, but it runs a bit slower than the other two options.



ローカルインストール
MediaWiki can be developed by installing it and its dependencies locally on your system.

It will take much more time to set up than Docker or Vagrant.


 * 1)  — Check hardware requirements and install dependencies
 * 2)  — Git から最新のソースコードをダウンロードします.
 * 3)  — 引き続きインストールと初期設定をします.
 * 4) 早期に警告やエラーを表示するためにさまざまなデバッグ手段を準備します.

Open a code editor
The two recommended code editors for editing MediaWiki are VSCode and PhpStorm. VSCode is free and PhpStorm is paid, however, you can acquire a PhpStorm license for free if you are a student by linking your GitHub Education account to your JetBrains account, or by requesting a license granted to Wikimedia.

To determine which editor you should install and use, know that all-around, PhpStorm has more and more-powerful features than VSCode. However, PhpStorm takes significantly longer to load on start than VSCode as it builds an index of the entire repository whereas VSCode progressively loads. Therefore, VSCode is typically useful for file-viewing sessions or small changes and PhpStorm for larger changes. It makes sense to have both installed for these reasons.

To develop the MediaWiki codebase that is inside a Docker container you can establish a remote connection to it and open the MediaWiki folder inside it using VSCode or PhpStorm.

Change and test the code
Change the code and view your changes by reloading your MediaWiki browser tab. Make sure to follow. Write and run tests on your code to make sure it works and is formatted properly.

Note, you can save time by ensuring your changes will be accepted before taking the time to write tests. Create a patch without needed tests and ask for someone to review it stating that you will add tests after they review it.

Create a patch
Finally, to submit your code to be reviewed and added to the repository you are contributing to, follow.



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



MediaWiki 外装
is helpful if you choose to work on MediaWiki skins.



関連項目

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