コンテンツにスキップ

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

Wikipedia:井戸端/subj/LUAモジュールの修正をお願いします。

LUAモジュールの修正をお願いします。

[編集]

Template:仮リンクの使い方を知ろうと思ってドキュメントを読んでいたところTemplate:仮リンク/docに「 出力:Lua エラー モジュール:仮リンク/link 内、90 行目: 言語コードの指定に誤りがあります」というエラーメッセージが表示されていることに気付きました。Luaというのがプログラム言語の名前らしいという知識はありますが、それ以上は何も知らないので、このエラーメッセージの意味が分かる方は修正をお願いします。--Subalternité会話2022年9月4日 (日) 18:26 (UTC)[返信]

コメント 使用例で、『入力:{{仮リンク|ジョン・マッキャニー|wikt|example}}』(他プロジェクトwikthonaryを指定)とした場合の話だと思います。本来は『他プロジェクト記事へのリンクにこのテンプレートは使えません』のメッセージとなるのが親切だろうとは思いますが、プログラム、ドキュメントの配慮(説明)不足なのだろうと思います。--115.39.243.226 2022年9月4日 (日) 23:19 (UTC)115.39.243.226 2022年9月5日 (月) 01:09 (UTC)[返信]
モジュールの動作として、引数の2つ目は言語コードまたは wikidata のみを受け付け、それ以外のあらゆる文字列に対してこの「言語コードの指定に誤りがあります」というエラーメッセージが出る、というのが通常の動作であり、ドキュメント上のエラーはそれを表示させるための意図的なデモだと思います。なのでその意味では、ドキュメントに特に間違いはありません。意図を汲み取りずらいという意味では修正が要るかもしれません (ちょっといい文例が思いつかず直していないですが)。--Merliborn (会話) 2022年9月5日 (月) 00:59 (UTC)[返信]

自分なりにもう少し調べてみました。どうも不具合があるのはモジュール:仮リンク/linkのようです。このプログラム(?)の90行目付近を見ると、

89: if langDisp == nil then
90: error('言語コードの指定に誤りがあります')
91: elseif langCode ~= 'wikidata' then
92: langDisp = langDisp .. '版'
93: end

とあります。最初に書いたエラーメッセージの内「言語コードの指定に誤りがあります」の部分はTemplate:仮リンクの引数が不適切であることに対する本来のエラーメッセージだと思うのですが、「出力:Lua エラー モジュール:仮リンク/link 内、90 行目: 」の部分はどうもLuaプログラムが正常に動作していないことを表すエラーメッセージのように思います。プログラム(?)を見た限りでは本来のエラーメッセージだけが表示されそうに思えるのですが、そもそもLuaについての知識がないので、Luaについて詳しい方のご意見をお聞きしたいところです。それから、私が使っているパソコンはかなり非力な機械で、時々「メモリーが足りません」という警告が出ているので、その辺が原因になっている可能性もあります。皆さんのパソコンなりスマホなりではどのように表示されているのかについてもお書きください。宜しくお願いします。--Subalternité会話2022年9月5日 (月) 16:07 (UTC)[返信]

まず、「出力:」はこの後にどのような出力が表示されるかを示すものであり、Luaの出力と関係ありません。上下に例示された他のサンプルでも「入力:」「出力:」という部分のフォーマットを一致させているように、そのあとに続く文字列や文章が入力/出力であることをTemplate:仮リンク/docが示してくれています。
次に、「Lua エラー モジュール:仮リンク/link 内、90 行目:」の部分ですが、これはプログラムの実行環境が出力するエラーメッセージとして非常に一般的なものです。つまり、まずこのメッセージが(警告や情報ではなく)エラーであることを示して、次にプログラムのどこでエラーを検出したかを提示するというのは、多くの実行環境で目にするメッセージ構成です。MediaWikiのリファレンスを見ても、このメッセージLua エラー モジュール:仮リンク/link 内、90 行目: 言語コードの指定に誤りがありますは特段異常なエラー出力ではありません。
PCからのアクセスであればバックトレースまで確認することができる (これはExtension:Scribuntoの機能です) ことからも、このエラーメッセージに特段おかしなところはない普通のエラーメッセージであることがわかります。
結論として、不具合(意図されていない動作)は何一つ起きておらず、エラーメッセージは意図的に出力されているものです。--Merliborn (会話) 2022年9月6日 (火) 05:24 (UTC)[返信]

返信 (Merlibornさん宛) Merlibornさんと私では、これらのエラーメッセージのとらえ方が違っているように思います。それは、に対してどのような目的(意図)で書いているメッセージかという点です。まず「言語コードの指定に誤りがあります」ですが、これは(おそらく)このプログラムの作者である翼のない堕天使さんが、テンプレートの言語コード(enなど)を書くべき個所に違うもの(Template:仮リンク/docの場合はwikt)を書いた利用者に対して、間違いを指摘して正しい使い方を求めるメッセージです。Template:仮リンク/docの書き手の意図としてはわざと間違った使い方を書くことで正しい使い方を示そうとしているのでしょう。一方「 出力:Lua エラー モジュール:仮リンク/link 内、90 行目: 言語コードの指定に誤りがあります」のほうは、(おそらく)Luaの処理系の作者がLuaを使ってプログラムを作成する人(今回は翼のない堕天使さん)に対して、間違った書き方をしているので正しい書き方に修正してほしいということを伝えるメッセージです。Luaの処理系作者の意図通りに働いているわけで、そういう意味では「不具合(意図されていない動作)は何一つ起きておらず」というのはその通りなのですが、翼のない堕天使さんの意図とは食い違っているので、修正するべきだというのが私の考えていることです。残念ながら翼のない堕天使さんは最近活動しておられません。また、Wikipediaのソースコードでもそうですが、かなり離れたところの間違いが影響している可能性もあり、上に引用した部分に間違いがあるとは限りませんし、他のモジュールに原因があるのかもしれません。ということで、この種のデバッグ作業に詳しい方にご協力いただきたいな(協力というよりは丸投げという方が正確ですか・・・)というのが私のメッセージの趣旨です。--Subalternité会話2022年9月6日 (火) 15:15 (UTC)[返信]

どうも技術者です、Merlibornさんと同じく修正不要と判断します。テンプレートの書き方使い方の間違いにより正常な仮リンクを生成出来ない場合、やるべきことは「指摘メッセージの表示」であり、避けるべきことは「半端な壊れた仮リンクを表示する」や「システムに異常な負荷をかける」などがあります。これらを達成する方法は色々とありますが、「error関数で処理を中断しメッセージを表示する」という選択をしたのでしょう。記事にこのエラーが出てもすぐに訂正されるでしょう、基本的に表に出て来ないエラーメッセージであり手間暇かけて見た目を整える必要はありません。どうしても、と言うなら具体的な修正案をノートページで提案される方がいいでしょう。--肉巻きハンバーグ会話2022年9月10日 (土) 06:31 (UTC)[返信]
しばらくWikipediaを離れておりました翼のない堕天使です。遅レスになりますが、「 出力:Lua エラー モジュール:仮リンク/link 内、90 行目: 言語コードの指定に誤りがあります」については意図通りの動作となります。Subalternité氏の示してくださったとおり、該当箇所ではerrorをraiseしているので、スタックとレース付きで、使用者に対して警告を表示するのが正しい動作だと思います。--翼のない堕天使会話2023年5月4日 (木) 16:48 (UTC)[返信]