コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:Mr.R1234/sandbox/Wikipedia:subst展開

Subst展開の技術的な説明に関しては、Help:subst展開を参照してください。

Subst展開はWikipediaでの普通のテンプレートの処理方法とは異なる方法です。

通常、テンプレートが呼び出されているということは、テンプレートが更新されればそれを使っている全てのページもその編集に従って更新されることを意味します。これは、ほとんどのテンプレートで利用されている方法です。しかし、いくつかのテンプレートはその代わりにsubst展開されて使用されます。つまり、もしテンプレートが変更された場合でもそれを使用しているページは変更されず、そのテンプレートの古いバージョンが表示され続けます。常にsubst展開する必要があるテンプレートはありますが、ほとんどのテンプレートは呼び出しで使う必要があります。

subst展開を使用するには、開始括弧 "{{ " の後にsubst:を追加し、

{{subst:page name}}

のようにします。

例: subst展開 {{subst:自動車}}は、呼び出し {{自動車}}とは対照的です。subst展開のとき、Template:自動車の内容は(あらゆるテンプレートに対して)展開され、ページ上の"{{subst:自動車}}"が配置された場所に保存されます。

一時的に名前を"<xref name=xx>"などとしないと、refタグは「subst:」の実行を拒否することに注意してください。( T4700も参照)

このページにはWikipedia名前空間以外で常にsubst展開する必要がある、または決してsubst展開しないテンプレートもリストされています。 ←疑問点1

subst展開について:

[編集]

定義

[編集]

subst:というキーワード(subst展開=「Substitution」の略)はテンプレートのコード内で使用され、波括弧内({{}})のテンプレート名の前に接頭辞として置かれます。それによりMediaWikiソフトウェアがテンプレートを展開する方法が変更されます。

普通、テンプレートは「その場で」展開されることになります。すなわち、ページのテンプレートコードは、レンダリングされるたびに別のページを呼び出します。ほとんどのページビューはキャッシュから提供されますが、プレビューのためにページをレンダリングする必要があり、ページが変更されると再度レンダリングされます。通常のテンプレート呼び出しでページを編集している場合、編集者はテンプレートの呼び出しを見ます。

中括弧の中に「subst:」を置くと、ソフトウェアに対してテンプレートを(ページに追加された時点でのテンプレートの内容で)永続的にsubst展開するよう指示します。←疑問点2次の編集者は、テンプレート呼び出しではなく、保存時のテンプレートのテキストを見ることになります。元のテンプレートが編集されても、そのテキストは変更されません。

使い方

[編集]

テンプレートタグをsubst展開するには、「subst:」を追加します。例えば、{{subst:test1}}を{{test1}}の代わりに使用します。

これが編集の主要な要素である場合、テンプレートを編集要約に記載することを強く推奨します(例えば、編集要約に「{{」や「subst:test1」、または「test1が適用されました」と書くと、他の編集者があなたの行ったことを簡単に確認できます)。 さらに、一般的にsubst展開されるテンプレートを作成または編集する際には、テンプレートページに隠しコメントを追加することで、記事の編集者がテンプレートの使い方を把握しやすくなります(例:<!-- Substituted from Template:Documentation -->)。HTMLコメントを含むウィキテキストの展開が必要な場合は、{{subst:html comment}}を使用してください。

利点

[編集]
  • 1回限りでテンプレートを修正したいが、すべてのページでテンプレートを修正したくなく、また新しいテンプレートを作りたくない場合、テンプレートをsubst展開して、次の編集で修正を加えることができます。例えば、あるテンプレートをアメリカ合衆国のすべてのコロンビア特別区のページで使用したいとき、そのテンプレートは州に対しては正しく表現されているかもしれませんが、コロンビア特別区には適していないかもしれません。この表現を修正するために、テンプレートをsubst展開してから修正を行うことができます。
  • 特定のテンプレートを転送することで、新人にウィキテキストを隠すことができますが、subst展開することでウィキテキストが可視化され、その使い方を学ぶ機会が得られます(もちろん、各編集ページの下には「編集方法」のリンクがあります)。
  • subst展開により、マクロテンプレートを通じた再帰的評価が可能になります。

中立

[編集]
  • テンプレートはしばしば修正または削除されます。テンプレートが修正されるときにそのページに表示される内容が変化することを望むかどうかを検討する必要があります。「いいえ」と答えた場合、subst展開が適しています。この例として、{{subst:welcome}}テンプレートがあります。ユーザーの会話ページのアーカイブは、そのユーザーが受け取った実際の歓迎メッセージを示すべきであり、現在の歓迎メッセージではありません。

欠点

[編集]
  • テンプレートがsubst展開されると、その結果はもはやテンプレートにリンクされなくなるため、そのテキストを表示しているすべてのページを見つけるのが難しくなります(ただし、カテゴリを使用することでこの問題はある程度軽減できます)。この問題は、テンプレートのコードにそのテンプレートへのリンクを含めることで容易に回避できます。
  • subst展開されたテンプレートは、元のテンプレートのエラーが修正されても更新されません。
  • テンプレートが何かの外観を標準化するために使用されている場合、subst展開を行うべきではありません。目次やナビゲーションボックスがその例です。
  • 一度に大量にsubst展開する(何千もの記事をボットで編集する)と、一時的にサイトが遅くなり、サーバーのリソースが無駄に使われます。
  • subst展開により、データベース内の記事のサイズやデータベースのダンプが増えます。
  • subst展開されたテンプレートは、記事に多くのウィキコードやHTMLを追加することがあり、技術的に不慣れなユーザーのアクセシビリティを損なう可能性があります。
  • subst展開されたテンプレートは、新しいユーザーがテンプレートの使い方を学ぶのを妨げ、ユーザーがそのドキュメントを見つけるのを困難にします。
  • テンプレートが一時的に使用されている場合、subst展開しない方が通常は良いです。subst展開されたテンプレートは、削除や修正がずっと難しいです。
  • (荒らしなどで)破壊されたテンプレートがsubst展開されると、通常の破壊行為よりも修復が困難になります。これは、テンプレートとその派生物との間にリンクがなく、更新もできないからです。
  • {{((}} のような一部のメタテンプレートは、subst展開された場合に機能しません。

常にsubst展開すべきテンプレート

[編集]

これは、常にsubst展開すべきテンプレートのリストであり、名前空間で整理されています。各リストはアルファベット順で整理されており、系列がグループ化されています。これは完全なリストではありません。他のあまり使用されていないテンプレートもsubst展開が必要な場合があるので、詳細はテンプレートのドキュメントを参照してください。

記事名空間

[編集]
  • {{外部リンクの方針参照}}、これをsubst展開すると、スパムリンクを避けるための短い説明が挿入されるのみで、編集モードでのみ可視化されるコメントが追加されます。

ユーザートーク空間

[編集]

Category:ユーザーへの警告テンプレートにリストされているすべてのテンプレートはsubst展開されるべきです。これは、ユーザーページのテンプレートには適用されません。

ファイル空間

[編集]

その他のテンプレート

[編集]
  • ユーザー署名テンプレートは、呼び出された場合に過度のサーバー負担を引き起こします。マイナーなユーザーテンプレートの変更が広範囲に影響を及ぼすため、署名テンプレートを使用する場合はsubst展開されるべきです。(ただし、ユーザー署名テンプレートは推奨されていません。)

subst展開するべきテンプレート

[編集]

これらのテンプレートは、目的や構文があるため、subst展開されるべきです。

  • {{sakujo}} 、subst展開せず使用しても正しく動作しません。
  • {{cfr}}, {{cfm}}、カテゴリを改名するか統合する時に使われます。
    • {{nld}}、著作権状態の情報がない画像に対して、自動的に{{no license}}を追加し、今日の日付が記入されます。
    • {{nsd}}、ソース情報がない画像に対して、自動的に{{No source}}を追加し、今日の日付が記入されます。

    subst展開すべきでないテンプレート

    [編集]

    技術的には、以下の条件を含むテンプレートはsubst展開しない方がよいとされています:

    • 2. パラメータの一部がデフォルト値のまま指定されていない場合(デフォルトの代替メカニズムが使用されていない限り)。
    • 3. 外部リンクを含む場合(URLのフォーマットが変更される可能性があるため、クエリや検索を行うことに影響します)。

    これは、これらの構文が生成されるウィキコードに置き換えられないためです(単一レベルのsubst展開を行った場合、(1)は#ifや#switchの構文がそのままsubstした位置に残り、(2)はデフォルト値の構造がそのまま残ります)。特定の合意があれば、特定のテンプレート呼び出しを排除するために、Special:ExpandTemplatesを使用して、その呼び出しをプレーンなウィキ構文に展開できます。

    リスト

    [編集]

    これらのテンプレートは、subst展開すべきではありません。なぜなら、それらは書式設定の標準コード、複雑なコード、またはsubst展開時に壊れるコードを含んでいるからです。

    • さまざまな引用/参考テンプレート、非常に複雑な条件付きコードを含むもの(詳しくはWP:CTを参照)。
    • {{Curlie}}、URLは外部ウェブディレクトリをクエリします(以前のDMOZ)。
    • {{Javadoc:EE}}、{{Javadoc:SE}}、{{Javadoc:SE-guide}}、マスターテンプレートが更新されたときにリンクを更新するために使用される条件付きテンプレート。
    • ←疑問点3
    • {{Main}}、標準的な書式設定を維持するためのもの。{{See also}}、標準的な「見出し」リストのための書式。
    • {{selfref}}、subst展開された場合は機能しない。ミラー内で異なるコードを持つように設計されているからです。
    • {{stub}}テンプレート、様々な簡略化された使用法や削除のためのものです。
    • {{tl}}、{{tlp}}、{{ti}}、{{tls}}、および多くの非常に広く使用されているテンプレート。subst展開よりも入力する方が速く、新しいウィキペディアンがそれらを学ぶのを可能にするため、subst展開しない方が良いです。
    • {{sockpuppet}}および類似のテンプレートは、ユーザー空間のトップレベルページに配置されることを意図しています。(注意:ユーザートーク空間の警告や通知はsubst展開されるべきです。)

    また、一部のものはテンプレートに見えるが、実際にはマジックワードである場合があります。例えば、{{!}}{{noexternallanglinks}}。これらをsubst展開すると、何も出力されないか、非表示になるテンプレート(非推奨のTemplate:!のような)がsubst展開されます。

    間違ったタイトルに関するテンプレート

    [編集]

    これらのテンプレートは、標準名前空間で使用され、記事名が正しくない理由に関するコメントを追加します。MediaWikiのタイトル付け機能が改善されるにつれて、これらは削除される可能性があり、文言やレイアウトも変更されることがあります。

    削除関連

    [編集]
    例外

    次のテンプレートは必ずsubst展開しなければならず、正しく機能するために必要です。


    さらに、削除プロセスが完了したことを文書化するテンプレート({{Vfd top}}など)はsubst展開する必要があります。

    関連項目

    [編集]