プロジェクト:ウィキ技術部/スクリプト開発

ウィキペディア日本語版では、JavaScriptとCascading Style Sheetsによるスクリプトとスタイルシート（以下、「スクリプト等」と呼びます）が利用可能です。
しかし、その開発に関しての手順や案内などは整備されておらず、なかなか困難なものでした。
このページでは、そのようなスクリプト等の開発についてのヘルプをまとめるとともに、後述するスクリプト開発システムの案内をします。

**開発の段階**
スクリプト等の開発にはいくつかの段階があります。
ほとんどのスクリプトは、フェーズIからフェーズIVを目指して段階的に開発されますが、個人的に使用するだけのスクリプトの場合はフェーズIで止まったり、フェーズIIから開始される、あるいはフェーズIからIIIへ、フェーズIIが飛ばされることもあります。

**フェーズI：利用者カスタム**
自分の利用者ページ以下に自由に作成することができます。作成したら、vector.js（ベクター外装の場合）で読み込むことを忘れずに。

**フェーズII：ウィキ技術部開発版**
#ウィキ技術部開発版を参照して、作成してください。

**フェーズIII：最終版**
MediaWiki名前空間に置き、広く体験してもらいます。
URLを又はとすることで、実際にjs・cssを使用しながら閲覧することができます。
詳しくはHelp:WithJS withCSSを参照してください。

**フェーズIV-a：ガジェット**
個人設定で設定することで使用できるようになります。Wikipedia:ガジェット/提案で提案してください。

**フェーズIV-b：共通スクリプト＆スタイルシート**
個人設定での設定なしで、規定で利用できるようになります。MediaWiki talk:Common.jsあるいはMediaWiki talk:Common.cssで提案してください。

**ウィキ技術部開発版**
スクリプト等の開発は、従来は、各利用者の利用者サブページで個人的なものとして行なわれており、広くオープンソースとして複数の人による開発は困難でした。
また、ガジェットや共通スクリプト等へ導入する前に、with機能を使って提案する最終版の場合も、この機能を利用するためにはMediaWiki名前空間の編集が必要で、従って、ある程度の十分な試験の後に、合意形成を行ない、合意がとれたら管理者に編集を依頼するという複雑な手順を踏まなければなりませんでした。
ウィキ技術部では、そのような「各利用者の個人的なスクリプト等」と「ガジェットや共通スクリプト等への導入提案」の中間に位置する形式でスクリプト等の開発を行なうシステムを運用しています。
基本的なシステムは、Subversionなどのバージョン管理システムと同じように動作します。

**ウィキ技術部開発版を使用する**
このシステムで開発されたスクリプトは、
mw.loader.using( 'mediawiki.util' ).then( function() {
mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScript") + "?action=raw&ctype=text/javascript&title=" + mw.util.wikiUrlencode("プロジェクト:ウィキ技術部/スクリプト開発/trunk/◆◆◆◆◆.js"), "text/javascript");
} );
を、「◆◆◆◆◆」を読み込みたいスクリプトに変更し、利用者:○○○/common.jsに追加することで、使用できます。
このように、プロジェクト以下にあるスクリプトをそのまま読み込むと、そのスクリプトの常に最新版を使用できると言う長所がありますが、同時に、修正が入ったときに、動作が変わるなどの問題が起きる可能性があります。また、なんらかの要因によりスクリプトが動作を停止しているなど、問題を引き起こす可能性が極僅かにあります。
そのため、より安全な方法として、「プロジェクト:ウィキ技術部/スクリプト開発/trunk/◆◆◆◆◆.js」は、一度、自分の利用者サブページ「利用者:○○○/◆◆◆◆◆.js」へを複製し、それを利用者:○○○/common.jsに
mw.loader.using( 'mediawiki.util' ).then( function() {
mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScript") + "?action=raw&ctype=text/javascript&title=" + mw.util.wikiUrlencode("利用者:○○○/◆◆◆◆◆.js"), "text/javascript");
} );
を追加して、読み込むようにしてください。

**お試しリンクの有効化**
を使った試用リンクを有効化したい場合、プロジェクト:ウィキ技術部/スクリプト開発/trunk/withWTECH.jsが利用できます。
上記の方法で、◆◆◆◆◆の代わりにwithWTECHを入れてください
mw.loader.using( 'mediawiki.util' ).then( function() {
mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScript") + "?action=raw&ctype=text/javascript&title=" + mw.util.wikiUrlencode("プロジェクト:ウィキ技術部/スクリプト開発/trunk/withWTECH.js"), "text/javascript");
} );

**ウィキ技術部開発版で開発する**
ウィキ技術部開発版のスクリプト等は、プロジェクト:ウィキ技術部/スクリプト開発のサブページにあります。- プロジェクト:ウィキ技術部/スクリプト開発/trunk - 開発の主流- プロジェクト:ウィキ技術部/スクリプト開発/tags - 公開安定版のような、後から変更を加えない複製- プロジェクト:ウィキ技術部/スクリプト開発/branches - 開発の主流とは異なる方向で開発したい時など、後から変更を加えることを前提とした複製
基本的には、trunk以下を利用すれば十分ですが、適宜tagsやbranchesを利用してください。使い分けについて、詳しくは 解説ページも参照してください。

**新しく開発する**
プロジェクト:ウィキ技術部/スクリプト開発/trunkのサブページに開発したいスクリプトあるいはスタイルシートを作成してください。例えば、TestScript.jsなら「プロジェクト:ウィキ技術部/スクリプト開発/trunk/TestScript.js」、TestScript.cssなら「プロジェクト:ウィキ技術部/スクリプト開発/trunk/TestScript.css」です。
次の入力ボックスを使えば簡単に作成できます（/と.jsあるいは.cssの間に名称を挿入してください）
作成したあと、プロジェクト:ウィキ技術部/スクリプト開発/一覧に、その作成したスクリプトやスタイルシートを掲載し、他の参加者に知らせることができます。
既存のスクリプト等への編集（コミット）は、コミット権限のある人なら誰でも可能ですが、多くの場合、主開発者が存在します。
主開発者に対して遠慮する必要はありませんが、自分の理解度に不安がある場合などは無理に触らず、branchesに複製して編集してみたり、主開発者に質問してみるなどしてみてください。

**ライセンスについて**
ウィキペディア日本語版のウィキ上で開発するので、これらのスクリプト等は、CC BY-SAおよびGFDLで利用可能でなければならないことに注意してください。これは、スクリプトのヘッダーなどで宣言がなくとも暗黙的に適用されます。
もしすべて自分で作成したスクリプトなら、これらのライセンスに加えて、他のライセンスを付与してマルチライセンスにしたり、あるいはパブリックドメインにすることもできます。
もし自分以外の人の作成したスクリプトなら、その利用条件に従って使用してください。

**コミット権限**
ウィキ技術部開発版への編集投稿（コミット）は、コミット権限を持っている人（コミッター）以外は行なわないでください。
これは、体験ガジェットのように簡単に他人のスクリプトを実行させることのできる環境で、破滅的・破壊的なスクリプトが使用されると、大惨事に繋がる危険性があるため、それを防止するためです。そのため、コミッター以外のコミットは原則的にすべて差し戻されるべきです（#コミッターでない人の編集の差し戻しも参照してください）。
現在のコミット権限を持つ人（コミッター）の一覧はプロジェクト:ウィキ技術部/スクリプト開発/コミッターにあります。
コミット権限は、プロジェクト・トーク:ウィキ技術部/スクリプト開発/コミッターで、自分がどのような開発をしたいのかなどを述べて、付与を申請してください。
コミッターは、誰でも他の人をコミッターにすることができます。
かいはつ