コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
MonoBook:テンプレートのサンドボックスとテストケース
」を編集中
プロジェクトページ
議論
日本語
閲覧
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
{{Guideline|てんふれとのさんとほつくすとてすとけす|subcategory=編集}} [[Help:テンプレート|テンプレート]]は[[MediaWiki|メディアウィキ]]のとても強力な機能ですが、経験を積んだ利用者であってさえも、簡単に失敗をしてしまうことがあります。したがって、バグを防ぐために、複雑なテンプレートにはその[[Help:サブページ|サブページ]]として、試作を行う[[サンドボックス]]とその試作品の呼び出しをテストする[[テストケース]]が必要です。 == この方法が向いているテンプレート == テンプレートは多くのページに呼び出されるものであり、テンプレートの編集で失敗をするとその影響が大きくなります。そのため、大きな変更をする前にサンドボックスでテストをするのがよいでしょう。膨大な数のページに呼び出されているテンプレートは、編集する前に必ずテストしてください。 特に[[Help:条件文|条件文]]を使ったテンプレートは、多くの[[引数]]をとったり、<tt>#switch</tt>演算子の多くの分岐によって、非常に多彩な出力を生成することができます。このようなテンプレートは、プレビューやサンドボックスだけでは問題がないか確かめることが困難であり、テストケースでいろいろなパターンの出力を試すことが勧められます。さらに、このようなテストケースは表示例の一覧としても役に立ちます。 逆に、関連項目へのリンク一覧であるナビゲーションテンプレートのように、パラメータを受け取らず、どの呼び出し先でも同じ表示がされるものはテストケースを利用する利点が少ないといえるでしょう。 また、テンプレートが呼び出されたページの構成によっては表示に問題が起こることがあります。それを防ぐために、サンドボックスに作成したテンプレートを様々な環境で閲覧して確かめたり、テストケースで他のテンプレートや表、画像などと一緒に表示した結果をテストすることもできます。 == サンドボックスとテストケースのサブページの作り方 == === サブページを作る === テンプレートの名前が'''<tt>Template:X</tt>'''だとすると、サンドボックスの名前は'''<tt>Template:X/sandbox</tt>'''、テストケースの名前は'''<tt>Template:X/testcases</tt>'''になります。 テンプレートの解説に、{{[[Template:Documentation|Documentation]]}}が使われていれば、それぞれのサブページへの赤リンクがあるので、そこからサブページを作成することができます。既にこの名前のサブページがあれば、<nowiki>{{Documentation}}</nowiki>を用いてそれらにリンクすることができます。<nowiki>{{Documentation}}</nowiki>が使われていない場合は、改めて使用するか独自にサブページへのリンクを作ってください。 === サンドボックスにコードを複製する === サンドボックスにコードを複製します。その際、履歴継承の必要性などGFDLの諸条件を満たす必要があります。つまり、 # <tt>Template:X/sandbox</tt>の末尾に、<tt>Template:X</tt>から<tt><nowiki> <noinclude> </nowiki></tt>で囲まれていない部分全体を複製します。要約欄には「<tt><nowiki>[[Template:X]]</nowiki></tt>のxxxx年xx月xx日 xx:xx (UTC) から一部複製」と記入し一旦投稿します。 # 次のコードを最初の行の先頭に挿入します。<nowiki><noinclude></nowiki>と<nowiki></noinclude></nowiki>の'''間'''には空行があっても構いませんが、<nowiki></noinclude></nowiki>の'''後'''には空行や空白を入れないでください。<pre><noinclude>{{Template sandbox notice}}</noinclude><!-- ここに複製したコード --></pre>必要があればその他の編集を行なった上で投稿します<ref>テンプレートの始めに表があると、それが正しく表示されないことがあります。その場合は</noinclude>の前に改行を入力してください。</ref>。 1.と2.とで2回に分けて投稿するのは複製作業と編集作業とを明確に区別するためです。手順の詳細については、[[MonoBook:ページの分割と統合#一部転記の手順]]も参考にしてください。 === テストケースを作る === <tt>Template:X/testcases</tt>にはいくつかの呼び出しの例 (<tt><nowiki>{{X | .... }}</nowiki></tt>) を作成します。テンプレートの解説文にある場合はそれをコピーしてください。そして、それぞれの例をさらに二つに複製します。さらにそれぞれの例の'''片方'''について、<tt>X</tt>を<tt>X/sandbox</tt>に置き換えてください。これで、元のテンプレートによる表示と新しいテンプレートによる表示を一つ一つ比較できるようになります。最後に、{{[[Template:Template test cases notice|Template test cases notice]]}}をテストケースのページの先頭に加えてください。周囲に空行を入れても構いません。 最終的に、<tt>Template:X/testcases</tt>は、次のようなコードになるはずです: <pre> {{Template test cases notice}} {{X | .... }} {{X/sandbox | .... }} </pre> == サンドボックスとテストケースの使い方 == まず、サンドボックスを編集して新しいテンプレートにします。ノートページやローカルのエディタなどで新しいテンプレートを用意してある場合や、既存のテンプレートと全く違うものを作る場合でなければ、サンドボックスを作るときと同じように[[#サンドボックスにコードを複製する|現在のテンプレートを複製し]]てから、それを編集しましょう。 次にテストケースを表示し、新しいテンプレートが問題なく呼び出されるか確認します。新しい出力と元の出力を比較するには、テストケースに一度に表示されるのを比べる方法だけでなく、タブ・ブラウザを使って、サンドボックスを変更する前にテストケースのサブページを表示し、サンドボックスの変更後にもう一つのタブで表示することで、変更前後のテストケースを比べる方法もあります。 サンドボックスのテンプレートが全てのテストケースで問題ないようでしたら、本物のテンプレートをサンドボックスのものに書き換えます。この際にも履歴継承の必要性などGFDLの諸条件を満たす必要があります。[[#サンドボックスにコードを複製する]]際と同様の手順で作業してください。 == サンドボックス対応のコードの書き方 == サンドボックスとテンプレート本体のページはコードの複製を頻繁に繰り返すことになります。そのため、毎回、サンドボックスに複製するときは{{[[Template:Template sandbox notice|Template sandbox notice]]}}を加え、テンプレート本体に複製するときは<nowiki>{{Template sandbox notice}}</nowiki>を除去するというのは、少しばかり手間だと感じるかもしれません この点は、あらかじめ、テンプレート本体のページをサンドボックス対応にしておけば、面倒な作業は発生しません。 {{[[Template:Template sandbox notice|Template sandbox notice]]}}は貼り付けられたサブページ名が「sandbox」でない限り、何も引数を指定していなければ、何も出力しませんから、次のように本体のテンプレート本体のページに書いておけば、テンプレート本体のコードとsandboxのコード全体を相互に複製しても、サンドボックスでだけメッセージが表示されます: <pre> <noinclude> {{ Template sandbox notice }} </noinclude><!-- テンプレートの本体コード --> </pre> さらに、(1)テンプレート本体のページではある告知を出し、サンドボックスでは出したくない場合、(2)逆にサンドボックスではある告知を出し、テンプレート本体のページでは出したくない場合、あるいは(3)テンプレート本体のページとサンドボックスで出す告知を使い分けたい場合、次のようなコードを使うことができます<ref>テンプレートの説明文(Template:X/doc)がある場合には、テンプレート本体の告知は<nowiki><includeonly></includeonly></nowiki>構文を用いて説明文のサブページに書いた方が便利です。</ref><ref name="includeonly in doc">テンプレート本体に適用されるものを<nowiki><includeonly></includeonly></nowiki>構文を用いて説明文のサブページに書く方法には、テンプレートの編集が保護されている場合に、テンプレート本体に適用される言語間リンクやカテゴリを変更できるようにするなどの効果があります。</ref>: <pre> <noinclude> {{ #ifeq: {{SUBPAGENAME}} | sandbox | <!-- サンドボックスで出す告知 -->{{Template sandbox notice}} | <!-- サンドボックス以外で出す告知:{{保護}}、{{複雑なテンプレート}}など --> }} </noinclude><!-- テンプレートの本体コード --> </pre> もっとも、同様のテンプレート本体のページとサンドボックスでの使い分けは、{{[[Template:Template sandbox notice|Template sandbox notice]]}}の引数を使って、次のようなコードでも実現できます: <pre> <noinclude> {{ Template sandbox notice | notice-for-sandbox = <!-- サンドボックスで出す告知 --> | notice-not-sandbox = <!-- サンドボックス以外で出す告知:{{保護}}、{{複雑なテンプレート}}など --> }} </noinclude><!-- テンプレートの本体コード --> </pre> また、テンプレート本体に適用される言語間リンクやカテゴリ(例:[[:Category:ウィキペディアのテンプレート]])を、テンプレート説明文書のサブページ(Template:X/doc)<nowiki><includeonly></includeonly></nowiki>構文で書いている場合<ref name="includeonly in doc" />、サンドボックスにそのコードをそのまま複製すると、サンドボックスのページにも同じ言語間リンクやカテゴリが適用されてしまいます。しかし、'''次のようなコードを書いてはいけません''': <pre> <noinclude> {{ #ifeq: {{SUBPAGENAME}} | sandbox | | {{Documentation}} }} </noinclude> </pre> このように記述した場合、{{[[Template:Documentation|Documentation]]}}で読み込まれた文書の節編集リンクが機能しなくなります<ref>呼び出した文書が条件文中にあることが原因です。詳しくは[[Help:セクション#条件文中のセクション]]をご覧ください。</ref>。かわりに、'''テンプレート説明文書の中で'''つぎのような条件文を使うことで対処できるので、検討してみてください: <pre> <includeonly> {{ #ifeq: {{SUBPAGENAME}} | sandbox | | <!-- ここに、テンプレート本体に適用する言語間リンクやカテゴリを書く。--> }} </includeonly> </pre> == テストケース対応のコードの書き方 == 前節ではテンプレート自体に適用するカテゴリについて述べましたが、テンプレートの中には、そのテンプレートを貼り付けたページに一定のカテゴリ(例:[[:Category:スタブ]])を適用するものがあります。そのようなテンプレートをテストケースに使用すると、テストケースもそのカテゴリに含まれてしまいます。 これを避けるためには、テンプレートを貼り付けたページに適用するカテゴリを、テンプレートの中の次のようなコードで記述することができます: <pre> <includeonly>{{ #ifeq: {{NAMESPACE}} | {{ns:0}} | <!-- テンプレートを貼り付けたページに適用するカテゴリをここに書く --> }}</includeonly> </pre> このコードは、[[Help:名前空間|標準名前空間]]のページ(つまり普通の記事)に貼り付けられたときのみ、そのページをカテゴリに含ませます。また、このコードを使えば、ノートページでテンプレートについて説明する場合など、そのテンプレートを標準名前空間以外の場所で使うときに、そのページをカテゴリに含ませないという効果もあります。ノートページで使用するためのテンプレートなどの場合は、<nowiki>{{ns:0}}</nowiki>の部分を、適当な[[Help:マジックワード#名前空間|マジックワード]]に代えてください。 逆に、どの名前空間でも使用したい、つまり貼り付けたページがどの名前空間であってもカテゴリに含ませたいとき、それでもなおピンポイントでテストケースでだけはカテゴリの適用を避けたい場合は、次のようなコードを使用できます: <pre> <includeonly>{{ #ifeq: {{SUBPAGENAME}} | testcase | | <!-- テンプレートを貼り付けたページに適用するカテゴリをここに書く --> }}</includeonly> </pre> <pre> <includeonly>{{ #ifeq: {{FULLPAGENAME}} | {{ns:10}}:X/testcase | | <!-- テンプレートを貼り付けたページに適用するカテゴリをここに書く --> }}</includeonly> </pre> もちろん、他の方法もありえますし、引数やより複雑な条件文を使ってより高度な動作を行わせることもできます。 == 実例 == * [[Template:Ambox-mini]] ** [[Template:Ambox-mini/sandbox]] ** [[Template:Ambox-mini/testcases]] == 脚注 == <div class="references-small"><references/></div> == 関連項目 == * [[Help:テンプレートの説明文]] * [[MonoBook:影響が特に大きいテンプレート]] * [[Template:Template sandbox notice]] * [[Template:Template test cases notice]] {{DEFAULTSORT:てんふれとのさんとほつくすとてすとけす}} [[Category:ウィキペディアのテンプレート|*Wてんふれえとのさんとほつくすとてすとけえす]] [[Category:FAQ・ガイドブック]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
このページで使用されているテンプレート:
テンプレート:Guideline
(
編集
)
本文の横幅制限を有効化/無効化