テンプレート・トーク:ForLoop

出典: へっぽこ実験ウィキ『八百科事典(アンサイクロペディア)』
ナビゲーションに移動 検索に移動

軽量化しませんか?[編集]

100回繰り返しができるようにしていますが、20回くらいに軽量化したほうがいいと思います。

  1. 容量が大きい。三万バイトを超えています。
  2. テンプレートの中にさらに繰り返しテンプレートを用いることで掛け算できる。

という理由です。--XANA.png.旻 (記録/回数) 2015年8月6日 (木) 19:49 (JST)

ご意見ありがとうございます。確かにそうですね。かなり減りました--ガノー (会話) 2015年8月6日 (木) 20:07 (JST)
ところでこのForLoopでForLoopをネストさせられないでしょうか? use_args=のところで詰まりました。--XANA.png.旻 (記録/回数) 2015年8月6日 (木) 20:16 (JST)
ForLoop以外のテンプレート、トーク等なら、以下のようにできます。
{{ForLoop
|to=5
|call_target=word
|call={{ForLoop
|to=4
|call_target=word
|call=        <font size='5'>☺   ☺   ☺</font> <br />
 you are an idiot, ha haha ha ha ha haaa ah hahaha haa.<br />
 you are an idiot, ha haha ha ha ha haaa ah hahaha haa.<br />
 you are an idiot, ha haha ha ha ha haaa ah hahaha haa.<br />
}}
}}
だいぶすっきりしますね。。。
use argsはループ回数をテンプレートに渡す、もしくは引数を変換するためのテンプレートに処理させて引数を渡すという、びっくり構造になっています。
用途は偽NRVなどにメッセージを変えながら流し込む、等なのですが、いらないかもしれませんね。。。--ガノー (会話) 2015年8月6日 (木) 20:27 (JST)

NRVに関して[編集]

まず[編集]

テンプレート:EasyLoopの置き換えがこのForLoopです。
※目的は一緒であり、まず、そちらのノートをご覧ください。

これは、EasyLoopで有していた問題・不便な個所を是正したテンプレートです。
※そのため、向こうは削除依頼状態です。

存在意義、利点[編集]

両テンプレートとも、「より複雑なテンプレートを作る上で、必ず必要になる」からです。まず、このテンプレートを用いることで得られる利点を3つ上げます。


  • 例えば同じ内容の繰り返しを扱った膨大なページのバイト数を大幅に減らせる
    • You are in idiotなどは、99%削減できるでしょう
  • 例えば何度も「同じ内容/又は違う内容」を出力する歳に、それを出す量を動的に、若しくは簡単に変更できるようになります。
    • コピペではバイト数がかさみます。
      • ※同じ内容をテンプレートにして、それをコピペするぐらいの手間をかけるなら、むしろこのテンプレートを使っても問題ないでしょう。
      • 閲覧している人によって表示される量や回数を変更できるようになります。
  • 処理できる内容の件数が増減できると、複雑なことができる「可能性が生まれる」
    • アンサイクロペディアで使われているテンプレートも、「テンプレートプログラミング」と言われるものです。
    • この主張を理解していただく一助としては、プログラミングの経験と知識を得ることかもしれません。
    • その他の使い方は、テンプレートで使える{{#expr:}}と同様に、「テンプレートを作る人が適材適所を考えて使うもの」です。


削除を主張される方へ[編集]

もし、このテンプレートを削除する必要があると主張される方は、 「繰り返し処理が出来るようになることで生まれる利点を捨ててまで、削除して得られる数千バイトにそこまで価値があるのかの説明をお願いします。

そんな繰り返し処理が必要な記事がわずかなのに、却ってテンプレート呼び出しのサーバ負担のほうが心配だ。」ってところです(後半は半分冗談ですが)。
繰り返し処理が容易にするのはわかりますし便利なのは確かですが、大量の繰り返しを行っている記事なんて両手で数えられるぐらい(しかも千夜一夜物語以外は古い記事ばかり)で、そんなもう更新不要の記事のために今更テンプ作って直す必要あるの?というところがものすごく気になっているから張りました。
あと重要な点として「新規記事でこれ使うニーズはあるの?'」ということ。新しい記事の可能性があるのだったらいいのですが、ただ大量繰り返し使ったものは結局は昔の記事の二番煎じでしかなく、結局使われずに終わるような気がしてなりません。--BCD (会話) 2015年8月8日 (土) 21:12 (JST)
(追記)考えすぎのところでもありますが、引数を「10000000000000000000」とか変える馬鹿がでてくる危険性が格段に高くなります。(今は大量コピペが必要なところが簡単になる)--BCD (会話) 2015年8月8日 (土) 21:19 (JST)
おはようございます。一晩考えた内容をこれからご投稿させていただきます。最初に一点だけ追記に対してご返答しておきます。引数を単純に変えても20回以上は、クズ程度ではループできません。--ガノー (会話) 2015年8月9日 (日) 08:49 (JST)


※以降よりガノー (会話)による2015年8月9日 (日) 09:04 (JST)の追記です。

ご意見、ありがとうございます。BCDさんの主張は大部分同意できます。当方の勝手な解釈も交えて以下の意味にとらえます。
  1. 過去の繰り返し的な表現を使った記事は飽和状態。しかも、それをあえてテンプレートを使って置き換える必要はない
  2. 大量の繰り返しが平易にできることは、悪戯目的の利用者が不正利用すると問題になるのではないか?
  3. そもそも、これを使って新しい記事ができるのか?

※順番は私の返答意図によって入れ替えさせていただきました。
※予め断っておきますが、超長文です。
※忙しい方は追記の最後尾にある超要約だけ閲覧してください。

  • 1つめ。
おっしゃる通りです。この記事を削除するとバイト数が減ると主張をされた方がもし居た場合に備え、敢えて出した「こじつけ」です。
私は「あ」等の記事を読んで(?)いると、つい「ぷっ」と吹き出してしまうことがあります。
こんな繊細な下らない繰り返しは、人間だからできるのであって、「繰り返し処理を使ったからって出来る訳無い」のです。
バイト数を減らせるというのは、「削除されるよりは、『単なる』繰り返し記事なら、このテンプレートを使って置き換えたって減らせる」という、屁理屈でしかありません。
これを、最初の利点として挙げたのは「誰にでも効果を想像できる」と思ったからです。
返答を見る限り、BCDさんには見抜かれているようで、申し訳ありませんでした。

  • 2つめ。
これもおっしゃる通りです。そもそもどこぞと違って、極悪な集金作業をされていないのだから、そのサーバー負荷を利用者が考慮するのは大切です。
しかし、これに関しては3点ほど考慮が必要です。

  1. コピペと違い「いたずら目的の投稿者の全員が全員使えるわけではない」
    荒らしの類として、アンサイでは「コピペ一行記事スパム」が多いと思っています(1か月に満たない新人の感想)。
    この一部のコピペ野郎は、所詮私の家にいたよりは無いでしょう。だってでもポインターの一つや二つは理解出来るのですから。
    そんなにも劣るコピペ野郎の全員が全員、このテンプレートを使えるわけではないでしょう。
  2. じゃなくて人間悪意を持って使われた場合
    テンプレートの呼び出しによる負荷は、やはり平文5万バイトの向こう側よりも相当高いのは容易に想像できます。
    ForLoopの現状では単純に入れ子にして125バイトそこらをループさせただけでこれに到達します(あくまでマークアップ上は)。
    ですから、テンプレートとして存続させるなら「それを考慮しろ」と言われても至極当然だと考えます。
  3. しかし、コピペと違い「ForLoopを使った投稿がされたということは管理ターゲット上に残せます」
    コピペによる投稿は、所詮は文字情報のみなので、深夜にこっそりやられると気づかないことが起こるでしょう(今の管理ログを見る限り、無さそうだなーとか言ったらダメです。反証できません)
    しかし、ForLoopテンプレートです。テンプレートなのだから、私の嫌い苦手なNRVと同様に「ForLoopを使った記事があることをカテゴリーにて示せます」。
    要は、コピペ以上に、不正利用されても、発見し易いと考えます。
    (≒管理者様、どうぞこのテンプレートが存続することになっちゃった暁には管理作業の手間を増やしていただけませんか?
    え?新人が出しゃばんなって?申し訳ありません。orz)

  • 3つ目。
これが一番の私の理由です。
繰り返し処理は「無駄な内容を繰り返すために使うべきではありません」。
しかし、「処理回数(件数)を固定ではなく、増減できる手段としての、繰り返し処理は必要です」。
これは現在開発構想中なのですが、「手裏剣ガチャポン」というものを構想している際に、繰り返し処理ができないことが開発のネックになると考えたため、先にForLoopを作りました。
※ お世話になっている方へ手裏剣を贈呈することがあると思いますが、その際、送られた相手が「ガチャ」を引いて、そこで引いた手裏剣を飾れるようなイメージです。
※ 特殊なテンプレート構造になると思うので、繰り返し処理が必要「かもしれない」。←まだ構想中だから突っ込まないで!とにかく、放っておいて!!
手裏剣ガチャポンアイデアがいいか悪いかは無視して、安直なクソ記事の連投を助けたい、したいからではありません。
でも、私みたいに「人を笑い転げさせられるユーモアがないから、謎の技術力で変な記事を作って驚かせたいんだ!」と考えるプログラマーは居るでしょう。きっと、たぶん。
そうすると、ForLoopなんていう、プログラミングの世界では必須の内容は、共通化した方が良いと考えたのです。
だからこそ、ForLoopは消されてもいいので「代わりにLoops拡張を採用してくれたら文句無いよ!お代官様!!」です。


超要約
  • ForLoopを使ってゴミ記事を繰り返したからって「ゴミは寧ろクソ程度にしか変化もしないことを理解しています」
  • ForLoop不正利用の温床になるためにあるものではありませんし、それに必要な対策も施します
  • ForLoopや繰り返し処理を可能にする手法は、今後「自分とか、自分とか、その他のプログラマーモドキ供に必要となる! と「信じています」
超長文ご容赦!
ガノー (会話)による2015年8月9日 (日) 09:04 (JST)の追記です。

補足[編集]

MediaWiki拡張にLoopsがあります。このテンプレートを削除されるなら、そちらの採用をお願いします。 なぜ拡張されているのか、それを考慮されても良いでしょう。

https://www.mediawiki.org/wiki/Extension:Loops/ja
{{ #vardefine: i | 0 }}{{
  #while:
  | {{ #ifexpr: {{ #var: i }} < 5 | true }}
  |<nowiki/>
* {{ #var: i }}{{ #vardefine: i | {{ #expr: {{ #var: i }} + 1 }} }}
}}


改修可能な点[編集]

このテンプレートの改修としては、「もっと.テンプレートのバイト数を減らせる」ことを突き止めています。
テンプレート機能拡張用のテンプレートがバイト数を食うのはダメだと考えられる方は、その修正を待ってください。


--ガノー (会話) 2015年8月7日 (金) 20:27 (JST)