MediaWikiはPHPで書かれたwiki ソフトウェアで、当初はWikipediaでの使用を目的として 2002 年にリリースされました。インターネット上のいくつかの wiki ホスティング Web サイトや、Wikimedia Foundation がホストするほとんどの Web サイト (Wikipedia、Wiktionary、Wikimedia Commons、Wikiquote、Wikivoyage [ 5 ] Meta-Wiki、Wikidataなど) で使用されており、これらの Web サイトがソフトウェアの要件の大部分を規定しています。[ 6 ] Wikimedia サイトの使用以外にも、MediaWiki はFandom、wikiHowなどの Web サイトや、 IntellipediaやDiplopediaなどの主要な内部インストールで知識管理およびコンテンツ管理システムとして使用されています。
MediaWiki はPHPプログラミング言語で記述されており、すべてのテキスト コンテンツをデータベースに保存します。このソフトウェアは、テラ バイトのコンテンツと毎秒数十万のビューを持つ大規模プロジェクトを効率的に処理するように最適化されています。 [ 6 ] [ 7 ] Wikipedia は世界最大かつ最も訪問されている Web サイトの一つであるため、複数のレイヤーのキャッシュとデータベース レプリケーションによるスケーラビリティの実現は、開発者にとって大きな懸念事項となっています。MediaWiki のもう 1 つの重要な側面は国際化です。そのインターフェースは 400 以上の言語で利用可能です。[ 8 ]このソフトウェアには、数百の構成設定[ 9 ]と、さまざまな機能を追加または変更できるようにするための 1,000 を超える拡張機能が用意されています。[ 10 ]元々はMagnus Manskeによって開発され、後にLee Daniel Crockerによってさらに強化され、[ 11 ] [ 12 ]その後、開発はWikimedia Foundationによって調整されています。
MediaWikiは、豊富なコア機能セットと、追加機能を提供する拡張機能を組み込むための仕組みを提供します。
ウィキメディアプロジェクトでは多言語主義が強く重視されているため、開発者は国際化とローカライズに多大な注意を払っています。ユーザーインターフェースはtranslatewiki.netで400以上の言語に完全にまたは部分的に翻訳されており[ 8 ]、サイト管理者によってさらにカスタマイズできます(インターフェース全体はwikiを通じて編集可能です)。
MediaWiki は、システム メッセージを介してユーザー向けのインターフェース テキストを処理し、さまざまな言語や地域に合わせてカスタマイズできます。[ 13 ] より広範な多言語サポートのために、MediaWiki Language Extension Bundle は、MediaWiki インストールに言語関連の機能を追加するための厳選された拡張機能セットを提供します。[ 14 ]
MediaWikiの多言語対応と国際化をさらに強化するために、いくつかの拡張機能、特にMediaWiki言語拡張バンドルにまとめられた拡張機能が設計されています。
MediaWiki のインストールには、 PHP と互換性のあるタイプの SQLデータベースの両方が稼働しているサーバー上で、ユーザーが管理者権限を持っている必要があります。サイトの大部分が MediaWiki とほとんど互換性のないフレームワーク ( ZopeやRuby on Railsなど) で動作している場合、仮想ホストを設定すると便利だと感じるユーザーもいます。[ 15 ]クラウド ホスティングを使用すると、新しいサーバーをデプロイする必要がなくなります。[ 16 ]
インストール用の PHP スクリプトは、Web ブラウザ経由でアクセスされ、wiki の設定を初期化します。このスクリプトは、ユーザーに最低限必要なパラメータのセットを要求し、アップロードの有効化[ 17 ] 、サイト ロゴの追加[ 18 ]、拡張機能のインストールなどのその他の変更は、という名前のファイルに含まれる構成設定を変更することによって行いますLocalSettings.php。[ 19 ] MediaWiki の一部の側面は、特別なページまたは特定のページを編集することによって構成できます。たとえば、不正使用フィルタは特別なページから構成でき[ 20 ] 、特定のガジェットはMediaWiki 名前空間にJavaScriptページを作成することによって追加できます。 [ 21 ] MediaWiki コミュニティは、包括的なインストール ガイドを公開しています。[ 22 ]
MediaWiki(およびその前身であるUseModWiki )と他のWikiエンジンとの初期の違いの一つは、キャメルケースではなく「フリーリンク」を使用していたことです。MediaWikiが作成された当時、Wikiではワールドワイドウェブに関するページへのリンクを作成するために「WorldWideWeb」のようなテキストを入力するのが一般的でした。一方、MediaWikiのリンクは、単語を二重角括弧で囲むことで作成され、単語間のスペースはそのまま残されます(例:)。この変更は、タイトルの正確さが重要な百科事典を作成するという目的に合致していました。[[World Wide Web]]
MediaWikiは、 HTMLよりも使いやすく学習しやすいように設計された、拡張可能な軽量なWikiマークアップを使用しています[ 23 ] 。MediaWikiマークアップとHTMLの間でテーブルなどのコンテンツを変換するためのツールが存在します[24]。MediaWikiマークアップ仕様を作成する努力がなされてきましたが、Wikicodeには文脈依存の文法規則が必要であるというコンセンサスが得られているようです[ 25 ] [ 26 ]。次の並列比較は、WikiマークアップとHTMLの違いを示しています。
(上記引用はルイス・キャロル著『不思議の国のアリス』より)

MediaWikiのデフォルトのページ編集ツールは、習得がやや難しいと評されている。[ 27 ] MediaWikiベースのwikiを使用するよう割り当てられた学生への調査では、 wikiの主な問題点について自由記述で質問したところ、24%が書式設定に関する技術的な問題を挙げた。例えば、「画像を挿入する方法がわからなかった。リンクをテキストで表示する方法がわからず、数字が挿入されてしまう。」[ 28 ]
長いページの編集を容易にするため、MediaWikiではページの一部(ヘッダーで識別される部分)を編集できます。登録ユーザーは、編集内容が軽微なものかそうでないかを指定することもできます。スペル、文法、句読点の修正は軽微な編集の例であり、新しいテキストの段落を追加することは軽微ではない編集の例です。
あるユーザーがページを編集している最中に、別のユーザーが同じ箇所を編集して保存してしまうことがあります。その後、最初のユーザーがページを保存しようとすると、編集の競合が発生します。すると、2番目のユーザーには、最初のユーザーがページを保存した後の現在のページに、自分のコンテンツを統合する機会が与えられます。
MediaWikiのユーザーインターフェースは、多くの言語にローカライズされています。ウィキコンテンツ自体の言語も設定でき、HTTPヘッダーの「Content-Language」とHTML属性の「lang」で送信されます。
VisualEditorには、2017 wikitextエディタと呼ばれる独自の統合型wikitext編集インターフェースがあり、それ以前の編集インターフェースは2010 wikitextエディタと呼ばれています。
MediaWiki には、MediaWiki データベースに含まれるデータに直接的かつ高レベルでアクセスできる拡張可能なWeb API (アプリケーション プログラミング インターフェイス) があります。クライアント プログラムは、この API を使用してログインし、データを取得して変更を投稿できます。この API は、軽量な Web ベースの JavaScript クライアントとエンド ユーザー アプリケーション (荒らし対策ツールなど) をサポートしています。この API は、別の Web サイトのバックエンドからアクセスできます。 [ 29 ]大規模なPythonボットライブラリであるPywikibot [ 30 ]や、AutoWikiBrowserと呼ばれる人気の高い半自動ツールも、この API と連携しています。[ 31 ]この API には、 などの URL を介してアクセスしますhttps://en.wikipedia.org/w/api.php?action=query&list=recentchanges。この場合、クエリは、Wikipedia に対して、サイトへの最後の 10 件の編集に関する情報を要求します。この API の利点の 1 つは、言語に依存しないことです。クライアントからのHTTP接続をリッスンし、 XML、シリアル化された PHP、JSONなど、さまざまな形式で応答を送信できます。[ 32 ] API に抽象化レイヤーを提供するクライアントコードが開発されました。 [ 33 ]
MediaWiki の編集追跡を支援する機能の一つに、ウィキへの最近の編集の一覧を提供する「最近の変更」機能があります。この一覧には、編集ユーザー、編集の概要、編集されたページなどの編集に関する基本情報に加え、カスタマイズ可能な不正利用フィルターやその他の拡張機能によって追加されたタグ (例: 「荒らしの可能性」) [ 34 ]が含まれており、不適切な編集に対処するのに役立ちます。[ 35 ]よりアクティブなウィキでは、編集が非常に多く発生するため、「最近の変更」を手動で追跡するのは困難です。このようなウィキでは、「最近の変更」アイテムを処理するために、ユーザー支援ツールを含むアンチ荒らしソフトウェア[ 36 ]が使用されることがあります。これらのツールが監視できるIRC チャンネルに「最近の変更」の継続的なフィードを送信することで、サーバー負荷を軽減できます。これにより、更新された「最近の変更」フィードを API にリクエストする必要がなくなります。[ 37 ] [ 38 ]
もう1つの重要なツールはウォッチリストです。ログインしているユーザーは、ユーザーが作成したウォッチリストを持っており、そのリストには、いずれかのページに加えられた編集の概要が表示されます。[ 39 ]最近の変更ページと同様に、ウォッチリストに表示される最近の編集には、記事の履歴や行われた具体的な変更を簡単に確認できるクリック可能なリンクが含まれています。
また、特定のユーザーが行ったすべての編集内容を確認できる機能も備えています。これにより、編集内容に問題があると判断された場合、そのユーザーの他の編集内容にも問題がないかを確認することが可能になります。
MediaWikiでは、記事の特定のバージョンにリンクすることができます。これは、専門家による査読者が記事を分析し、改善し、信頼できるバージョンの記事へのリンクを提供できるため、科学コミュニティにとって有益でした。[ 40 ]
Wiki内でのナビゲーションは、主に内部ウィキリンクによって行われます。MediaWikiのウィキリンクはページ存在検出機能を実装しており、リンク先のページがローカルWikiに存在する場合はリンクが青色に、存在しない場合は赤色に変わります。ユーザーが赤色のリンクをクリックすると、そのタイトルの記事を作成するよう促されます。ページ存在検出機能のおかげで、ユーザーは他の関連トピックへのリンクを含む「ウィキ化」記事を、それらの関連トピックがまだ存在しない場合でも簡単に作成できます。
Interwikiリンクは名前空間とほぼ同じように機能します。一連のInterwikiプレフィックスを設定することで、たとえばページタイトルがWikiquotewikiquote:Jimbo WalesのJimbo Walesの記事にユーザーを誘導することができます。[ 41 ]内部ウィキリンクとは異なり、Interwikiリンクにはページの存在検出機能がないため、青色のInterwikiリンクが壊れているかどうかを判断する方法はありません。

言語間リンクは、ほとんどの MediaWiki スキンでサイドバーに表示される小さなナビゲーションリンクで、同じ Wiki ファミリー内の他の言語の関連記事と記事をリンクします。これにより、すべての Wiki が同じサーバー上にあるか、それぞれが独自のサーバー上にあるかにかかわらず、より大きなコンテキストで接続された言語固有のコミュニティを提供できます。[ 42 ]
以前は、ウィキペディアは言語間リンクを使用して、記事をウィキペディアの他の版にある同じトピックの他の記事にリンクしていました。これは、Wikidata の導入により廃止されました。[ 43 ]

ページタブはページの上部に表示されます。これらのタブを使用すると、ユーザーは現在のページに関連する操作を実行したり、ページを表示したりできます。利用可能なデフォルトの操作には、現在のページの表示、編集、および議論が含まれます。表示される特定のタブは、ユーザーがウィキにログインしているかどうか、およびユーザーがウィキでシステム管理者権限を持っているかどうかによって異なります。たとえば、ページを移動したり、ウォッチリストに追加したりする機能は、通常、ログインしているユーザーに限定されています。サイト管理者は、JavaScript を使用したり、拡張機能をインストールしたりすることで、タブを追加または削除できます。[ 44 ]
各ページには、ユーザーが過去に存在したすべてのバージョンのページにアクセスし、選択した2つのバージョンの差分を生成できる履歴ページが関連付けられています。ユーザーの貢献は、ここだけでなく、サイドバーの「ユーザーの貢献」オプションからも表示されます。2004年の記事で、カール・チャルボーンとテレサ・ライマンは、「この機能は、ウィキの純粋主義者の協調的で『エゴのない』精神から少し逸脱しているかもしれないが、個々の学生ユーザーの貢献と参加を評価する必要がある教育者にとっては非常に役立つ可能性がある」と述べています。[ 45 ]
MediaWiki は、ハイパーリンク以外にもコンテンツを構造化するための多くの機能を提供しています。そのような機能の初期の 1 つは名前空間です。Wikipedia の初期の課題の 1 つは、百科事典コンテンツとメンテナンスやコミュニティの議論に関するページ、および百科事典編集者に関する個人ページを分離することでした。名前空間は、ページタイトルの前に付加される接頭辞 (" User:" や " Talk:" など) で、ページの目的を記述し、同じタイトルの下に異なる機能を持つ複数のページが存在することを可能にします。たとえば、デフォルトの名前空間にある " " というタイトルのページは、アーノルド・シュワルツェネッガー主演の1984 年の映画について説明できますが、" " というタイトルのページは、この名前を仮名として選択したユーザーを説明するプロフィールである可能性があります。より一般的には、各名前空間には、その内容について議論するために使用できる関連付けられた " " 名前空間 (" " や " " など) があります。議論ページを持つ目的は、コンテンツと、そのコンテンツに関する議論を分離することです。[ 46 ] [ 47 ][[The Terminator]][[User:The Terminator]]Talk:User talk:Template talk:
名前空間は、さまざまな基本タイプの情報や機能を分離するフォルダとして見なすことができます。カスタム名前空間は、サイト管理者によって追加できます。デフォルトでは、コンテンツ用に 16 個の名前空間があり、動的に生成される「 」ページやメディア ファイルへのリンクには 2 つの擬似名前空間Special:が使用されます。MediaWiki の各名前空間には番号が付けられており、コンテンツ ページの名前空間には偶数、それに関連付けられたトーク ページの名前空間には奇数が割り当てられています。[ 48 ]
ユーザーは、コンテンツテキストに1つ以上のカテゴリタグを追加することで、新しいカテゴリを作成し、ページやファイルをそれらのカテゴリに追加できます。これらのタグを追加すると、ページの下部にそのカテゴリ内のすべてのページの一覧にアクセスできるリンクが作成され、関連する記事を簡単に閲覧できます。[ 49 ]コンテンツを整理するためのカテゴリ化の使用は、次の組み合わせとして説明されています。
名前空間に加えて、サブページを使用してコンテンツを並べ替えることもできます。このシンプルな機能により、スラッシュの後のページ(この場合は「サブページタイトル」)からスラッシュの前のページ(この場合は「ページタイトル」)までのパターンを自動的にパンくずリストとして表示します。[[Page title/Subpage title]]

この機能が有効になっている場合、ユーザーはスタイルシートをカスタマイズし、ページビューごとに実行されるクライアントサイド JavaScriptを設定できます。Wikipedia では、これにより、wiki を通じて開発され、ユーザー間で共有される多数の追加ツールやヘルパーが生まれました。たとえば、ナビゲーション ポップアップは、ユーザーがリンクにマウスカーソルを合わせたときに記事のプレビューを表示し、一般的なメンテナンス タスクのショートカットも提供するカスタム JavaScript ツールです。[ 51 ]

MediaWiki のユーザー インターフェース全体は、必要な権限を持つユーザー (通常は「管理者」と呼ばれます) が wiki 自体から編集できます。これは、「MediaWiki:」という接頭辞が付いた特別な名前空間を介して行われ、各ページ タイトルは特定のユーザー インターフェース メッセージを示します。拡張機能[ 52 ]を使用すると、ユーザーは個人用スクリプトを作成したり、ユーザー設定ページで適切なオプションを切り替えることで、特定のサイト全体のスクリプトを自分に適用するかどうかを選択したりすることもできます。
「MediaWiki:」名前空間は、元々はカスタムテキストブロックを作成するためにも使用されていました。作成されたテキストブロックは、特別な構文を使用して他のページに動的に読み込むことができました。このコンテンツは後に「Template:」という独自の名前空間に移動されました。
テンプレートとは、別のページがリクエストされた際に、そのページ内に動的に読み込まれるテキストブロックです。テンプレートは、二重中括弧で囲まれた特別なリンク(例:「 」)で、テンプレート呼び出しの代わりに、{{Disputed|date=October 2018}}指定されたテンプレート(この場合はTemplate:Disputedにあります)を呼び出します。
テンプレートは、属性と値のペアを含む構造化されたドキュメントです。これらはパラメータで定義され、記事ページに組み込まれる際に値が割り当てられます。パラメータ名は等号で区切られ、値は等号で区切られます。ウィキペディアでは、インフォボックスと呼ばれるテンプレートの一種が、主題に関する情報のサブセットを収集して表示するために使用され、通常はドキュメントの上部(モバイル表示)または右上隅(デスクトップ表示)に表示されます。
他の名前空間のページもテンプレートとしてトランスクルードできます。特に、メイン名前空間のページは、タイトルの前にコロンを付けることでトランスクルードできます。たとえば、メイン名前空間から「MediaWiki」という記事をトランスクルードします。また、トランスクルードするページの一部をマークする方法もいくつかあり、最も基本的なものは次のとおりです。[ 53 ]{{:MediaWiki}}
<noinclude>...</noinclude>これは、転記すべきでないコンテンツを示すものです。<includeonly>...</includeonly>これは、トランスクルードされない限りレンダリングされないコンテンツであることを示します。<onlyinclude>...</onlyinclude>これは、トランスクルードされる唯一のコンテンツであることを示すものです。関連する方法として、テンプレート置換(subst:テンプレートリンクの先頭にを追加することで呼び出される)があり、ページが読み込まれるたびにテンプレートの内容を動的に読み込むのではなく、テンプレートの内容をターゲットページに挿入します(コピー&ペースト操作と同様)。これにより、テンプレート使用時に一貫性が失われる可能性がありますが、特定の場合には有用であり、ほとんどの場合、サーバーリソースの使用量を削減できます(実際の削減量は、Wikiの設定やテンプレートの複雑さによって異なります)。
テンプレートはさまざまな用途で使用されています。テンプレートを使用すると、複数のページで一貫して使用される複雑なテーブルレイアウトを作成でき、テンプレートパラメータを使用してテーブルの内容のみが挿入されます。テンプレートは、記事にテンプレートを挿入することで、Wikipedia の記事の問題を特定するためによく使用されます。このテンプレートは、記事の内容が議論の的になっているか、他の注意が必要であることを示すグラフィック ボックスを出力し、また、このような性質の記事を見つけられるように分類します。テンプレートは、ユーザー ページで、ユーザーにサイトへの歓迎の標準メッセージを送信したり、[ 54 ]優れた貢献に対して賞を授与したり、[ 55 ] [ 56 ]行動が不適切とみなされた場合に警告したり、[ 57 ]編集がブロックされた場合に通知したり、 [ 58 ]などするためにも使用されます。
MediaWiki は、ユーザー グループの作成と定義において柔軟性を提供します。たとえば、ユーザーをブロックしたりページを削除したりできる任意の「忍者」グループを作成することができ、その編集はデフォルトで最近の変更ログに非表示になります。また、一定数の編集を行い、一定日数待つとメンバーになる「自動確認」ユーザーのグループを設定することもできます。[ 59 ]デフォルトで有効になっているグループには、ビューロクラットとシステムオペレーターがあります。ビューロクラットは、他のユーザーの権限を変更する権限を持ちます。システムオペレーターは、ページの保護、削除、およびユーザーの編集のブロックに関する権限を持ちます。MediaWiki で利用可能な編集権限の制御は、病院の標準作業手順マニュアルなどの重要な文書を公開および維持するのに十分であると見なされています。 [ 60 ]
MediaWiki にはアクセス制限に関連する基本的な機能セットが付属していますが、その本来の設計と継続的な設計は、コンテンツの分離ではなく、主にコンテンツに関連する機能によって推進されています。その結果、最小限の例外 (特定のツールとそれに関連する「特別」ページに関連する) を除いて、ページのアクセス制御はコア開発において高い優先事項になったことはなく、開発者は、安全なユーザーアクセスと認証制御を必要とするユーザーは MediaWiki に頼るべきではないと述べています。なぜなら、MediaWiki はそのような状況のために設計されたものではないからです。たとえば、特定のユーザーのみが一部のページを読んだりアクセスしたりできる wiki を作成することは非常に困難です。[ 61 ]ここで、 Foswiki、MoinMoin、Confluenceなどの wiki エンジンは、アクセス制御リストなどの高度なセキュリティメカニズムをサポートすることで、より柔軟性を提供します。
MediaWikiのコードベースには、コールバック関数を使用してPHPコードを拡張可能な形で追加できる様々なフックが含まれています。これにより、開発者はコア部分を変更したり、コードのレビューを依頼したりすることなく、拡張機能を作成できます。拡張機能のインストールは通常、設定ファイルに1行追加するだけで済みますが、場合によってはデータベースの更新やコアパッチなどの追加変更が必要になることもあります。
開発者が MediaWiki に機能を追加できるように、5 つの主要な拡張ポイントが作成されました。フックは、特定のイベントが発生するたびに実行されます。たとえば、ArticleSaveComplete記事の保存リクエストが処理された後にフックが発生します。[ 62 ]これは、たとえば、新規ユーザーまたは匿名ユーザーによる wiki 上のページ編集が発生するたびに、選択されたユーザーに通知する拡張機能で使用できます。[ 63 ]開始タグと終了タグ ( <newtag>...</newtag>) を使用してデータを処理するために、新しいタグを作成できます。[ 64 ]パーサー関数を使用して、新しいコマンド ( {{#if:...|...|...}}) を作成できます。[ 65 ]特定の機能を実行するために、新しい特別なページを作成できます。これらのページは動的に生成されます。たとえば、特別なページは、外部サイトへのリンクが 1 つ以上あるすべてのページを表示したり、ユーザーが送信したフィードバックを提供するフォームを作成したりする場合があります。[ 66 ]スキンを使用すると、ユーザーは MediaWiki の外観をカスタマイズできます。[ 67 ]マイナーな拡張ポイントにより、 Amazon S3を使用して画像ファイルをホストできます。[ 68 ]

最も人気のある拡張機能の 1 つは、条件文の結果に基づいて異なるコンテンツをレンダリングできるパーサー関数拡張機能 ParserFunctions です。[ 69 ]これらの条件文は、パラメーターが空かどうかの評価、文字列の比較、数式の評価、ページが存在するかどうかに応じて 2 つの値のいずれかを返すなどの機能を実行できます。これは、{{Qif}}と呼ばれる非常に非効率的なテンプレートの代替として設計されました。[ 70 ]シンドラーは、ParserFunctions 拡張機能の歴史を次のように語っています。[ 71 ]
2006年、一部のウィキペディア編集者は、テンプレート機能とCSSの複雑な相互作用によって、条件付きウィキテキスト、つまりテンプレートパラメータが特定の値を持つ場合に表示されるテキストを作成できることを発見しました。これにはテンプレート内でテンプレートを繰り返し呼び出すことが含まれており、システム全体のパフォーマンスを低下させていました。開発者は、このような使用を検出してソフトウェア内で明示的に禁止することで、明らかに望ましい機能の普及を阻止するか、効率的な代替手段を提供するかの選択を迫られました。後者はティム・スターリングによって実現され、彼は基盤となるソフトウェアに実装された関数を呼び出すウィキテキストであるパーサー関数の導入を発表しました。当初は条件付きテキストと単純な数式の計算のみが実装されていましたが、これだけでもウィキ編集者の可能性は飛躍的に広がりました。その後、さらに多くのパーサー関数が導入され、最終的には、ジオコーディングサービスやウィジェットなど、任意の機能を追加するための拡張関数を簡単に記述できるフレームワークへと発展しました。今回は、開発者たちは明らかにコミュニティの要求に応えようとしており、コミュニティが抱えていた問題(つまり条件付きテキスト)に対する解決策に対抗するか、あるいは以前の手法に代わる改良された技術的実装を提供し、全体的なパフォーマンスを向上させるかの選択を迫られた。
別のパーサー関数拡張機能であるStringFunctionsは、文字列の長さ、文字列の位置などを評価できるように開発されました。同じ機能を実現するために不格好な回避策を作成していたウィキメディアコミュニティは、それを自分たちのプロジェクトで有効にするよう強く求めました。[ 72 ] [ 73 ]その機能の多くは最終的にParserFunctions拡張機能に統合されましたが、[ 74 ]デフォルトでは無効になっており、Tim Starling氏から、文字列関数を有効にするとユーザーが「人類が知る中で最も醜く、最も非効率的なプログラミング言語であるMediaWikiウィキテキストとParserFunctionsで独自のパーサーを実装できるようになる」という警告が添えられていました。[ 75 ]
2012年以来、スクリプト言語Luaで記述された「モジュール」(wikiページ)を作成できる拡張機能Scribuntoが存在し、作成したモジュールはテンプレートや標準のwikiページ内で実行できます。Scribuntoは2013年からWikipediaやその他のWikimediaサイトにインストールされており、これらのサイトで広く使用されています。Scribuntoコードは、ParserFunctionsを使用した対応するwikitextコードよりも大幅に高速に実行されます。[ 76 ]
もう1つの非常に人気のある拡張機能は、インライン参照を使用してページに脚注を追加できるようにする引用拡張機能です。[ 77 ]しかし、この拡張機能は使いにくく、複雑な構文をユーザーが覚える必要があるという批判を受けています。RefToolbar と呼ばれるガジェットは、一般的なテンプレートを使用して引用を簡単に作成できるようにしようとしています。MediaWiki には、数学拡張機能[ 78 ]や分子を3Dでレンダリングできる拡張機能[ 79 ]など、学術分野に適した拡張機能がいくつかあります。
MediaWiki がほぼあらゆるものと統合できる汎用ウィジェット拡張機能が存在します。ウィキを改善できる拡張機能の他の例としては、カテゴリ提案拡張機能[ 80 ]やFlash ビデオ[ 81 ]、YouTube ビデオ[ 82 ]、RSS フィード [ 83 ]の組み込み拡張機能など があります。米国上院および下院の議場のビデオ映像をアーカイブするサイトMetavid は、MediaWiki を共同ビデオ作成の領域に拡張するコードを使用して作成されました。[ 84 ]
MediaWiki は検索エンジン最適化の試みを抑制するためにnofollow属性を使用しているにもかかわらず、ウェブ上で MediaWiki のインストールを検索してリンクスパムを追加するスパムボットが多数存在します。[ 85 ]問題の一部は、ミラーなどのサードパーティの再発行者が、自社の Web サイトに nofollow タグを独自に実装していない可能性があるため、マーケターはサードパーティの Web サイトにエントリが表示されるときにページにリンクを挿入することでPageRank のメリットを得ることができることです。 [ 86 ]この問題に対処するために、 CAPTCHA の導入、[ 87 ]特定の URL のブラックリスト化、[ 88 ]および特定のユーザーによって最近追加されたページの一括削除を可能にすることで、アンチスパム拡張機能が開発されています。[ 89 ]

MediaWikiには標準のテキストベースの検索機能がプリインストールされています。拡張機能を使えば、MediaWikiはElasticsearch(2014年からWikipediaで使用されている)、Lucene [ 90 ]、Sphinx [ 91 ]など、より高度なサードパーティの検索エンジンを利用できるようになります。
ウィキ内に入力されたデータとページの改訂履歴などのメタデータの両方に対して、より複雑なファセット検索を可能にするために、さまざまな MediaWiki 拡張機能が作成されています。 [ 92 ] [ 93 ] Semantic MediaWikiはそのような拡張機能の 1 つです。[ 94 ] [ 95 ]

MediaWikiには、特殊な構文を用いて生成されたリッチコンテンツをサポートする様々な拡張機能が用意されています。これには、 LaTeXを用いた数式、数式グラフによるグラフィカルなタイムライン、楽譜、エジプト象形文字などが含まれます。
このソフトウェアは、アップロードされた様々なメディアファイルに対応しており、画像ギャラリーやサムネイルを比較的簡単に生成できます。また、Exifメタデータにも対応しています。MediaWikiは、世界最大級の無料コンテンツメディアアーカイブであるWikimedia Commonsを運営しています。
WYSIWYG編集には、MediaWikiで使用できるVisualEditorがあり、編集者の編集プロセスを簡素化し、MediaWiki 1.35以降にバンドルされています。 [ 96 ] WYSIWYG編集をさまざまなレベルで処理するための他の拡張機能も存在します。[ 97 ]

MediaWiki は、 MySQL / MariaDB、PostgreSQL 、またはSQLite のいずれかのリレーショナル データベース管理システムを使用できます。Oracle DatabaseおよびMicrosoft SQL Serverのサポートは、MediaWiki 1.34 以降で終了しました。[ 98 ] MediaWiki データベースには、ページ タイトル、ページ ID、その他のメタデータを含むテーブルなど、数十個のテーブルが含まれています。 [ 99 ]また、編集が行われるたびに新しい行が追加されるテーブルには、ページ ID、実行された変更の簡単なテキストによる要約、記事編集者のユーザー名 (未登録ユーザーの場合はその IP アドレス)、およびタイムスタンプが含まれています。[ 100 ] [ 101 ]pagerevision
2008 年以前の 4 年半の間に、MediaWiki データベースには 170 のスキーマバージョンがありました。[ 102 ]おそらく最大のスキーマ変更は、パフォーマンスの柔軟性を向上させるためにメタデータの保存とコンテンツの保存を分離した 2005 年の MediaWiki 1.5 で行われました。このアップグレードが Wikipedia に適用されたとき、サイトは編集のためにロックされ、スキーマは 22 時間ほどで新しいバージョンに変換されました。ウォッチリストを介して記事のセクションを監視できるようにする提案など、いくつかのソフトウェア強化提案は、必要なスキーマ変更に Wikipedia のダウンタイムが過剰になるため却下されました。[ 103 ]
MediaWikiは、Web上で最もトラフィックの多いサイトの一つであるWikipediaの運用に使用されているため、パフォーマンスとスケーラビリティが高度に最適化されています。[ 104 ] MediaWikiは、 Squid、負荷分散されたデータベースレプリケーション、クライアントサイドキャッシング、クエリ結果の頻繁にアクセスされる処理のためのmemcachedまたはテーブルベースのキャッシング、シンプルな静的ファイルキャッシュ、機能削減された操作、リビジョン圧縮、およびデータベース操作用のジョブキューをサポートしています。MediaWikiの開発者は、高コストなアルゴリズムやデータベースクエリなどを避け、高コストで参照の局所性があるすべての結果をキャッシュし、プロファイリングによってコードのホットスポットに焦点を当てることで、ソフトウェアの最適化を試みてきました。[ 105 ]
MediaWikiのコードは、読み書き可能なデータベースへのデータの書き込みと、読み取り専用データベースからのデータの読み取りを可能にするように設計されていますが、読み取り専用データベースが最新の状態でない場合は、一部の読み取り操作に読み書き可能なデータベースを使用することもできます。記事の改訂履歴、記事の関連情報(リンク、カテゴリなど)、ユーザーアカウント、設定などのメタデータは、コアデータベースに保存してキャッシュできます。実際の改訂テキストは使用頻度が低いため、外部ストレージに追記専用のブロブとして保存できます。このソフトウェアは、2011年8月時点で約800のWikiを擁していたWikimediaのような大規模なWikiファームの運用に適しています。ただし、MediaWikiには、このようなインストールを管理するための組み込みのGUIは付属していません。
実証的な証拠によれば、MediaWikiデータベースのほとんどの改訂は、以前の改訂とわずかにしか異ならない傾向がある。そのため、記事のその後の改訂を連結して圧縮することで、最大100倍という非常に高いデータ圧縮率を実現できる。 [ 105 ]
ウィキテキストの保存方法やページの構成方法など、アーキテクチャの詳細については、「外部リンク」を参照してください。
正式な構文が定義されていないため、パーサーは事実上のMediaWiki構文標準として機能しています。正式な定義がないため、 MediaWiki用のWYSIWYGエディタを作成するのは困難でしたが、人気の高いVisualEditorをはじめとするいくつかのWYSIWYG拡張機能は存在します。
MediaWikiは、専用のオンラインフォーラムやブログソフトウェアの適切な代替品として設計されているわけではありませんが、[ 106 ]これらの両方を可能にする拡張機能は存在します。[ 107 ] [ 108 ]
MediaWiki の新規ユーザーが、投稿に 4 つのチルダ ( ~~~~ )を付け忘れたり[ 109 ] 、プレーンテキストの署名を手動で入力したりするなど、特定のミスを犯すことはよくあります[ 110 ]。これは、MediaWiki のディスカッション ページでのコミュニケーションに関わる特有の詳細に慣れていないためです。一方、このディスカッション ページの形式は、ある教育者によって強みとして挙げられており、従来のスレッド形式のディスカッション フォーラムよりも、よりきめ細かなディスカッション機能を提供すると述べています。たとえば、ディスカッションの参加者は、メッセージ全体に「返信」する代わりに、元のページの任意の単語に新しい Wiki ページへのハイパー リンクを作成できます。従来のスレッド形式のディスカッション フォーラムの一連の返信メッセージではなく、ハイパーリンクされた Wiki ページを介してコンテンツにアクセスできるため、ディスカッションは追跡しやすくなります。しかし、ごく一部の例外を除いて、学生はこの機能を使用していませんでした。これはおそらく、従来の直線的な議論スタイルに慣れていることと、コンテンツをより「リンクが豊富な」ものにする方法に関するガイダンスが不足していることが原因でしょう。[ 111 ]
MediaWiki はデフォルトでは動的に組み立てられたドキュメントや、他のページからデータを集約するページの作成をほとんどサポートしていません。MediaWiki 内で直接このような機能を有効にする研究が行われています。[ 112 ] Semantic MediaWiki拡張機能はこれらの機能を提供します。これは Wikipedia では使用されていませんが、1,600 を超える他の MediaWiki インストールで使用されています。[ 113 ]ただし、Wikibase Repository と Wikibase Repository クライアントはそれぞれWikidataとWikipediaに実装されており、ある程度セマンティック Web機能を提供し、中央に保存されたデータをさまざまな Wikipedia 記事の情報ボックスにリンクします。
MediaWikiのアップグレードは通常完全に自動化されており、サイトコンテンツやテンプレートプログラミングの変更は必要ありません。過去には、かなり古いバージョンからアップグレードする際に問題が発生したことがあります。[ 114 ]
2025年に授業でWikipediaの編集を課題として出した教員を対象にした調査では、MediaWikiの使い方を学ぶことが学生と教授の両方にとって最も一般的な課題であった。[ 115 ]
MediaWiki の開発者は、コア コードと拡張機能の両方に対してセキュリティ標準を制定しました。[ 116 ] 2008 年現在、SQL クエリと HTML 出力は通常、クロスサイト スクリプティングとSQL インジェクションの防止のために検証、エスケープ、フィルタリングを処理するラッパー関数を介して行われます。[ 117 ]多くのセキュリティ問題は MediaWiki のバージョン リリース後にパッチを適用する必要がありました。[ 118 ] 2010 年に MediaWiki.org は、「最も重要なセキュリティ対策は、発表メーリング リストに登録して発表されたセキュリティ アップデートをインストールすることにより、ソフトウェアを最新の状態に保つことです」と述べています。[ 119 ]
Check Pointは、 2006年から2014年の間にMediaWikiで発見された3つのリモートコード実行の脆弱性を報告した。 [ 120 ]
2026年3月、 Meta-WikiのユーザーJavaScriptファイルを上書きする自己増殖型JavaScriptワームが発生しました。このワームは、変更権限を持つユーザーのJavaScriptファイルに感染した場合、MediaWikiのグローバルJavaScriptファイルも上書きするように設計されていました。[ 121 ]ワームの調査と編集の取り消しが行われている間、すべてのアカウントで編集が停止されました。[ 121 ]
MediaWikiユーザーへのサポート内容は以下のとおりです。
MediaWiki は無料かつオープンソースであり、GNU General Public Licenseバージョン 2 またはそれ以降のバージョンの条件に基づいて配布されています。公式 Web サイト www.mediawiki.org にあるドキュメントはCreative Commons BY-SA 4.0ライセンスで公開されており、他のライセンスを持つ Wiki の法的問題を解消するために、新しい Wiki インストールに自由にコピーしたり、パブリック ドメインの MediaWiki ソフトウェアとともに配布したりすることを目的としたヘルプ ページのセットが含まれています。[ 127 ] [ 128 ] MediaWiki の開発は、一般的にオープンソースのメディア フォーマットの使用を優先しています。[ 129 ]
MediaWikiには、開発とメンテナンスのための活発なボランティアコミュニティがあります。MediaWikiの開発者は世界中に散らばっていますが、大多数は米国とヨーロッパにいます。MediaWikiの開発者のための対面会議やプログラミングセッションは、2004年以来、年に1回または数回開催されています。[ 130 ]
誰でもプロジェクトのGit / Gerritリポジトリにパッチを提出できます。[ 131 ] また、主にWikimedia Foundationのプロジェクトを開発する有給プログラマーもいます。MediaWiki の開発者は、MediaWiki のコアおよび拡張プロジェクトに取り組みたい学生にメンターを割り当てることで、Google Summer of Codeに参加しています。 [ 132 ] 2012 年 11 月までの 1 年間で、MediaWiki のコアまたは拡張機能に変更をコミットした開発者は約 200 人いました。[ 133 ] メジャー MediaWiki リリースは、継続的に実行可能な状態に保たれている開発ブランチのスナップショットを取得することで、約 6 か月ごとに生成されます。[ 134 ]マイナーリリース、またはポイントリリースは、バグ(特にセキュリティ上の問題)を修正するために必要に応じて発行されます。MediaWiki は継続的インテグレーション開発モデルで開発されており、ソフトウェアの変更は定期的に Wikimedia サイトにライブでプッシュされます。[ 134 ] MediaWikiには、 Phabricatorを運用する 公開バグトラッカー、phabricator.wikimedia.orgもあります。このサイトは、機能や改善のリクエストにも使用されます。

2001年1月にWikipediaが立ち上げられた当初は、既存のWikiソフトウェアシステムであるUseModWiki上で動作していました。UseModWikiはPerlプログラミング言語で記述されており、すべてのWikiページをテキスト(.txt)ファイルに保存していました。しかし、このソフトウェアは機能面でもパフォーマンス面でもすぐに限界があることが判明しました。2001年半ば、ケルン大学の学生であり開発者、そしてWikipediaの編集者でもあったマグナス・マンスケは、UseModWikiに代わる、Wikipedia専用に設計された新しいソフトウェアの開発に着手しました。このソフトウェアはPHPスクリプト言語で記述され、すべての情報をMySQLデータベースに保存していました。新しいソフトウェアは2001年8月24日までにほぼ完成し、その後まもなくテスト用のWikiが構築されました。
このソフトウェアの最初の本格的な実装は、2001 年 11 月 9 日に公開された新しいMeta Wikipediaでした。英語版 Wikipedia にすぐに実装したいという要望がありました。[ 135 ]しかし、マンスケはクリスマス直前に完了しなければならなかった期末試験の期間中に、潜在的なバグが新興のウェブサイトに悪影響を与えることを懸念していました。 [ 136 ]このため、英語版 Wikipedia での公開は 2002 年 1 月 25 日まで延期されました。その後、このソフトウェアは、当時のすべての Wikipedia 言語サイトに徐々に展開されました。このソフトウェアは「PHP スクリプト」および「フェーズ II」と呼ばれ、UseModWiki の使用には後付けで「フェーズ I」という名前が付けられました。
利用者の増加に伴い、すぐに負荷の問題が再び発生し、その後まもなくソフトウェアの書き直しが始まりました。今回はリー・ダニエル・クロッカー氏が担当し、これが「フェーズIII」として知られるようになりました。この新しいソフトウェアもPHPで記述され、バックエンドにはMySQLが使用され、フェーズIIソフトウェアの基本的なインターフェースは維持しつつ、拡張性を高める機能が追加されました。「フェーズIII」ソフトウェアは2002年7月にWikipediaで公開されました。
ウィキメディア財団は2003 年 6 月 20 日に発表されました。7 月、ウィキペディアの寄稿者ダニエル メイヤーは、「ウィキメディア」をもじってこのソフトウェアに「メディアウィキ」という名前を提案しました。[ 137 ] MediaWiki という名前は、2003 年 8 月から段階的に導入されました。この名前は、「Wikimedia」という名前 (それ自体は「Wikipedia」に似ています) と (意図的に) 似ているため、頻繁に混乱を引き起こしました。[ 138 ] MediaWiki の最初のバージョン 1.1 は 2003 年 12 月にリリースされました。

旧製品ロゴは、フローレンス・ニバート=デヴォアールが撮影した花の写真を使用してエリック・メラーによって作成され、元々は2003年7月20日から8月27日まで開催された新しいウィキペディアのロゴのコンテストに提出されました。 [ 139 ] [ 140 ]このロゴは3位となり、ウィキペディアではなくMediaWikiを表すために選ばれ、2位のロゴはウィキメディア財団に使用されました。[ 141 ]二重角括弧([[ ]])は、他のウィキページへのハイパーリンクを作成するためにMediaWikiが使用する構文を象徴しており、ヒマワリはウィキペディアのコンテンツの多様性、その絶え間ない成長、そして荒野を表しています。[ 142 ]
2006年にGoogleで行われた講演で紹介者は、ブリオン・ヴィバーが「ウィキメディアに約4年間在籍している」こと、そして「最近まで[...]エンジニアリング部門で唯一のフルタイムの有給従業員だった」ことを指摘した。この発言は、これに伴う膨大な量のボランティアの努力について言及したものである。 [ 104 ] 2007年の書籍では、ブリオン・ヴィバーが「ウィキペディア組織の最高技術責任者」であると述べられている。 [ 143 ]
MediaWiki の開発における主なマイルストーンには、カテゴリ分類システム(2004 年)、パーサー関数 (2006 年)、フラグ付きリビジョン(2008 年)、[ 71 ] CSSと JavaScriptの配信システムである「ResourceLoader 」 (2011 年)、[ 144 ]および「見たまま編集できる」( WYSIWYG ) 編集プラットフォームであるVisualEditor (2013 年) などがあります。[ 145 ]
新しいロゴのデザインコンテストは、旧ロゴがビットマップ画像で「高精細」であったため、高解像度と低解像度でのレンダリング時にそれぞれ問題が生じたことから、2020年6月22日に開始されました。2回の投票を経て、Serhio Magpie氏がデザインした新しいMediaWikiロゴが2020年10月24日に選ばれ、2021年4月1日に正式に採用されました。[ 146 ]
2020年から、WikipediaはMediaWikiと連携して、10年ぶりの大規模なUI再設計の展開を開始した。[ 147 ] [ 148 ]

MediaWiki の最も有名な用途はウィキペディアでの使用であり、程度は低いですがウィキメディア財団の他のプロジェクトでも使用されています。Fandom は、以前は Wikia として知られていたWiki ホスティング サービスで、MediaWiki 上で実行されます。 MediaWiki 上で実行される他の公開 Wiki には、wikiHowやSNPediaなどがあります。WikiLeaks はMediaWiki ベースのサイトとして始まりましたが、現在は Wiki ではありません。
Citizendium、Metapedia、Scholarpedia、Conservapediaなど、Wikipedia に代わる多数の Wiki 百科事典が MediaWiki 上で実行されています。 MediaWiki は、 NovellやIntelを含む多くの企業によって社内でも使用されています。[ 149 ] [ 150 ] [ 151 ]
政府機関における MediaWiki の注目すべき使用例としては、米国情報機関が使用するIntellipedia、米国国務省が使用するDiplopedia 、米国国防総省が使用するmilSuiteの一部である milWiki などがある。国連開発計画やINSTRAWなどの国連機関は、ウィキを MediaWiki を使用して実装することを選択した。その理由は、「このソフトウェアは Wikipedia を動作させているため、徹底的にテストされていることが保証されており、将来にわたって開発が継続され、これらのウィキの将来の技術者は他のどのウィキ ソフトウェアよりも MediaWiki に触れる機会が多い」ためである。[ 152 ]
フリーソフトウェア財団は、LibrePlanetサイトを実装するためにMediaWikiを使用しています。[ 153 ]
オンラインコラボレーションソフトウェアのユーザーは、Wikipedia でよく使われていることから MediaWiki の機能やレイアウトに馴染みがあるかもしれません。2006 年の学術界におけるソーシャルソフトウェアの概要では、「他の wiki と比較すると、MediaWiki はシンプルながらも見た目がかなり良く、サイドメニューやスタイルシートを簡単にカスタマイズできる」と指摘されています。[ 154 ] 2006 年のアセスメントでは、API と複数の wiki をより良くサポートできる能力からConfluenceが好ましいとされています。 [ 79 ]また、別の 2006 年のアセスメントでは、新規ユーザーや管理者にとって洗練されていて信頼できるとされています。[ 155 ] InfoWorld は2008 年に、管理者のメンテナンスの容易さ、見た目、機能の点で MediaWiki を評価しました。[ 156 ]
2009年に香港大学で行われた研究では、TWikiとMediaWikiが比較されました。著者らは、TWikiは主に教育論文や技術プロジェクトの開発のための共同作業ツールであるのに対し、MediaWikiの最も有名な用途はWikipediaであると指摘しました。どちらのプラットフォームも議論や進捗状況の追跡が可能ですが、TWikiにはMediaWikiにはない「レポート」機能があります。学生はMediaWikiの方がTWikiよりも使いやすく、楽しいと感じました。知識管理コースのグループプロジェクトにMediaWikiの使用を推奨するかどうか尋ねられた際、16人の回答者のうち15人がMediaWikiを好むと回答し、「もちろん」「間違いなく」などと確信を持って答えました。[ 157 ] TWikiとMediaWikiはどちらも柔軟なプラグインアーキテクチャを備えています。[ 158 ] 2009年に香港で行われた別の研究では、学生のMediaWikiとGoogle Docsの使用経験を比較したところ、学生は情報管理全般においてMediaWikiを好み、ユーザーフレンドリーなレイアウトについてはGoogle Docsを高く評価しました。[ 159 ]
2021年にブラジル原子力工学研究所が行った調査では、MediaWikiベースの知識管理システムと、DSpaceおよびOpen Journal Systemsをそれぞれベースとした他の2つのシステムを比較した。[ 160 ]この調査では、MediaWikiベースのシステムの利点として使いやすさを強調し、ウィキメディア財団が一般向けサイト(Wikipedia)のためにMediaWikiを開発していたため、「そのユーザーインターフェースは最初からユーザーフレンドリーになるように設計されており、長期間にわたって多くのユーザーからのフィードバックを受けている」と指摘した。これは、ニッチなユーザー層に焦点を当てたDSpaceとOJSとは対照的である。[ 160 ]
2025年に行われたArchWiki(MediaWikiを使用)の2人のメンテナーへのインタビューでは、MediaWikiの主な問題点はマークアップ言語であり、「奇妙」で「脆弱」であり、正式な仕様がない言語のパーサーを書くのは難しいと述べられた。[ 161 ] Klinkovskýは、MediaWikiのマークアップを好まない新しいプロジェクトには、代わりにMarkdownを使用するウィキを検討することを推奨した。[ 161 ]彼らはMediaWikiの幅広い使用とAPIを高く評価した。[ 161 ]
言語 (サポートされているが翻訳がない言語は含まない)
Wikipediaを使った教育で最もよく報告された課題は、教師と学生の両方がMediaWikiソフトウェアの基本を学ぶ必要があることでした。