この文書は解説ページです。ルールや手続きについて、一般的な事実や共有されている合意事項を解説しています。ウィキペディアの方針やガイドラインそのものではありません。.mw-parser-output .module-shortcutboxplain{float:right;border:1px solid #aaa;background:#fff;margin:0 0 0 1em;padding:0.3em 0.6em 0.2em 0.6em;text-align:center;font-size:85%;font-weight:bold}.mw-parser-output .module-shortcutlist{display:inline-block;border-bottom:1px solid #aaa;margin-bottom:0.2em;font-weight:normal}.mw-parser-output .module-shortcutanchordiv{position:relative;top:-3em}ショートカット:
WP:LUA
2013年3月から追加されたMediaWikiの拡張機能「Scribunto」の実装により、ウィキペディア日本語版ではプログラミング言語Luaを利用したスクリプトを作成することが可能になりました。主にテンプレートの機能を向上させる目的で使用され、Luaのソースコードをテンプレートに組み込んで、{{#invoke:}}という構文を使って呼び出すことができます。Scribunto拡張は2022年3月時点でLua 5.1.5をサポートしています。
Luaのソースコードは、モジュール空間(例:モジュール:Bananas)に置かれます。そして、各モジュールを、テンプレートとして別なページから呼び出せるようになっています(例えば、モジュール:Bananas/docでは、{{#invoke:Bananas|hello}}と書くことで、「Hello, world!」という出力を得ています)。 ウィキペディアの一般的なウィキページでモジュールを実行するには#invokeというパーサー関数(→Help:マジックワード)を使用します。#invokeの書き方はテンプレートのそれと似ているが、若干違うところがあります。すなわち、#invokeでは「関数名」を指定する必要があります。関数とは入力を取得して処理を行い、出力を返す一連の命令であり[注 1]、テンプレートと似ていますが、1つのページには1つのテンプレートしか定義できないのに対し、1つのLuaモジュールには複数の関数を定義できます。 また、Luaモジュールを直接実行することはできず、必ずモジュールの関数を1つ選んで実行しなければなりません。モジュールは関数のコンテナにすぎず、それ自体は何もしません。そのため、関数名を指定する必要があります。 ウィキページでモジュールを実行するには{{#invoke:モジュール名|関数名}}のように書きます。 例えば、モジュール:Bananasの"hello"関数を実行するためには下記のように書きます。 モジュールに引数を渡すときの書き方はテンプレートに引数を渡す書き方と同じです。しかし、1つ目のパイプ"|"の後ろに書くのは関数名なので、1つ目の名無し引数は2つ目のパイプの後ろに書かれます: {{#invoke:モジュール名|関数名|1つ目の名無し引数|2つ目の名無し引数|引数名=引数の値}} 例えば、モジュール:BananasArgsの"hello"関数では1つ目の名無し引数の指定によって出力が違います。 BananaArgsの"count_fruit"関数ではbananasとapples引数を受け入れます。 多くのモジュールには解説サブページがあり、使える引数とその効果を説明します。 ウィキペディア日本語版で特定のタスクを行うためにLuaスクリプトが必要になった場合、プロジェクト:ウィキ技術部にて依頼を提出することができます。 Luaは長年にわたる議論を経て、2012年にテスト用としてtest2.wikipedia.org
モジュールを実行する
{{#invoke:Bananas|hello}} → Hello, world!
引数を渡す
{{#invoke:BananasArgs|hello|Kate}} → Hello, Kate!
{{#invoke:BananasArgs|hello|Fred}} → Hello, Fred!
{{#invoke:BananasArgs|count_fruit|apples=3|bananas=4}} → I have 4 bananas and 3 apples
{{#invoke:BananasArgs|count_fruit|bananas=5|apples=2}} → I have 5 bananas and 2 apples
サンプルモジュール
モジュール:Bananas: 関数が1つ、引数がなしという、いちばんシンプルなモジュール。
モジュール:BananasArgs: 引数を使う例。
Luaスクリプトの作成依頼
導入までの経緯
Size:17 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef