2026年6月6日土曜日

MediaWiki(6)

MediaWiki(5)からの続き


図:Fisica Wiki の現在のトップページ


毎日,MediaWikiに手を入れている。ChatGPTがどういう手順で作業すればよいかを提案してくれたので,それに従って作業してきた。次のようなことである。
1. 物理学者記事移植の開始
2. Special:Export / Special:Import の注意点
3. Commons / Wikiquote 系ボックスの文字はみ出し対策
4. Normdaten / Authority control の縮退
5. WikidataCheck エラーへの対応
6. 国旗テンプレートの簡易整備
7. Infobox Scientist の安定化
8. 画像表示と InstantCommons
9. 不要な管理テンプレートの扱い
10. 第2段階:20名基準セットの作成
組込み用の軽量スクリプト言語のLuaが,MediaWikiにも使われている。それが引っかかるエラーが大きかったのだが,うまく回避する方法が提案された。その結果,詳細は別にして,日本語Wikipedia からの移植がほぼほぼできるようになった。

その後,国旗のsvgファイルを表示させる過程で問い詰めたら,なんと,LocalSettings.php に  \$wgUseInstantCommons = true; を設定すれば,オリジナルのウィキメディア・コモンズの画像データを直接引っ張ってこれることがわかった。肖像写真などもOKだ。早く言ってほしい。

というわけで,さくらインターネット上のMediaWiki(Fisica Wiki)の環境設定は一段落することになった。コンテンツはこれからゆっくり料理することにしよう。物理分野のカテゴリどうする問題はあるけれど,仮の住まいだと思ってがまんすることに。

2026年6月5日金曜日

MediaWiki(5)

MediaWiki(4)からの続き

自分自身の情報整理能力がどんどん衰えているため,いきおい他人(AI)に頼ることになってしまうが,まあしょうがないか。これで戦争にでもなって,生成AIへのアクセスを止められた日には,とんでもないことになる。そのときはGoogle検索もMicrosoft Officeも使えないかもなので,いずれにせよ日本の全機能が停止するのかもしれない。あるいは,OSごと動かなくなくなるとか。残るのはLinuxなどのFree Softwareのみ。


Q(koshix): 
Fisica Wiki の件ですが,構造が複雑で,なにがどこにはいっているのか。
・最初から構造として組み込まれているもの
・自分が移植したテンプレートやモジュール等
・自分が作った(移植した)コンテンツやメディア
 がどうなっていて,それぞれどうやって探せばいいのかを なるべく初心者向けに分かりやすく解説してください。

A(ChatGPT):
(回答略)

Q(koshix):
回答が冗長で回りくどいので,要点をもれなく簡潔に整理してください。

A(Gemini):
Fisica Wikiの構造と探し方を、3つのカテゴリーに絞って簡潔に整理た。

1.構造の三層整理
Wikiは「器」「部品」「中身」の3階層でできている。
カテゴリー | 内容 | 実体(名前空間)
① 本体(器)|システムが最初から持っている機能   |特別ページ、サイドバー、検索欄
② 移植部品 |Wikipediaから持ってきた表示の仕組み |テンプレート:、モジュール:、MediaWiki:Common.css
③ コンテンツ|あなたが書いた記事やアップロード画像|(接頭辞なし)、Fisica Wiki:、ファイル:

2.目的別・探し方の最短ルート
「どこにあるか」を知るための5つの手段。
・全ページを棚卸ししたい
特別:全ページ を使う。上のプルダウンで「名前空間」を切り替えると、種類ごとに一覧が出る。
・最近の作業を確認したい
特別:最近の更新 を見る。自分が直近で触ったページが時系列で並ぶ。
・画像を確認したい
特別:ファイル一覧 を見る。ロゴや写真などのメディアだけが並ぶ。
・ページが何で構成されているか知りたい
そのページの「編集」画面を開く。{{...}} なら テンプレート、[[ファイル:...]] なら 画像。
・その部品がどこで使われているか知りたい
左メニューの リンク元 をクリック。そのテンプレートや画像を使っている記事が逆引きできる。

3.迷ったときの早見表
「あれはどこ?」となったら、ページ名の先頭(接頭辞)を確認。

探したいもの  | ページ名の例       | 探し方
物理学者の記事  |アルベルト・アインシュタイン |接頭辞なし(標準)
自分の作業メモ  |Fisica Wiki:物理学者記事移植  |Fisica Wiki: 名前空間
表示のひな形   |テンプレート:Cite web     |テンプレート: 名前空間
複雑な計算・処理 |モジュール:Citation/CS1   |モジュール: 名前空間
画像・ロゴ    |ファイル:fisica-logo.png   |ファイル: 名前空間
全体のデザイン調整|MediaWiki:Common.css   |直接ページ名を検索
アドバイス

混乱を防ぐため、「Fisica Wiki:物理学者記事移植」 のページに、よく使うテンプレートやCSSへのリンクを 「お気に入りリスト」 としてまとめておくと、名前空間を意識せずに一発でアクセスできるようになる。

2026年6月4日木曜日

MediaWiki(4)

MedieWiki(3)からの続き 

Q(koshix):
日本語Wikipediaの物理学者記事にあるテンプレートやモジュールのうちで主要なものを,自分のMediaWikiサイト,Fisica Wiki に移植するプロジェクトの件です。
codexにお願いして,
koshi@mba2020 ~ % ls -al jawiki-template-test 
total 208
drwxr-xr-x   17 koshi  staff    544  5月  1 13:40 .
drwxr-x---+ 131 koshi  staff   4192  5月  5 16:40 ..
-rw-r--r--    1 koshi  staff    464  5月  1 11:17 articles.txt
-rw-r--r--    1 koshi  staff    749  5月  1 13:41 core_export_pages.txt
-rw-r--r--    1 koshi  staff    659  5月  1 13:02 export_pages.txt
-rw-r--r--    1 koshi  staff   7912  5月  1 12:58 extract_template_dependencies.py
-rw-r--r--    1 koshi  staff   8317  5月  1 11:29 extract_templates.py
-rw-r--r--    1 koshi  staff   1614  5月  1 13:01 make_export_pages.py
-rw-r--r--    1 koshi  staff   1956  5月  1 12:53 make_module_list.py
-rw-r--r--    1 koshi  staff   3488  5月  1 13:33 make_template_export_pages.py
-rw-r--r--    1 koshi  staff    307  5月  1 12:59 modules_needed.txt
-rw-r--r--    1 koshi  staff   2866  5月  1 13:08 README.md
-rw-r--r--    1 koshi  staff     17  4月 30 22:37 requirements.txt
-rw-r--r--    1 koshi  staff   1345  5月  1 12:19 template_dependencies.csv
-rw-r--r--    1 koshi  staff   2284  5月  1 13:35 template_pages.txt
-rw-r--r--    1 koshi  staff  18146  5月  1 11:54 template_usage.csv

こんな状況になっています。自分がなにをしたか,してもらったかが,よくわからなくなっているので,状況を整理して,現在の進行状況がどうなっているか,これからどうすればいいか,を教えてください。必要があれば,それぞれのファイルや現在のFisica Wikiの内容を確認してお知らせすることが出来ます。どうぞよろしくお願いいたします。


A(ChatGPT):
状況はかなり整理できます。結論から言うと、いまの jawiki-template-test は、日本語Wikipediaの物理学者記事を材料にして、Fisica Wikiへ移植すべきテンプレート・モジュールの候補リストを作るための作業ディレクトリになっています。

ただし、ここにあるファイルだけを見るかぎり、これはまだ「移植そのもの」ではなく、主に次の段階まで進んだ状態です。

・第1段階:物理学者記事を調べる
・第2段階:それらの記事で使われているテンプレートを抽出する
・第3段階:そのテンプレート群に必要な関連テンプレート・モジュールを推定する
・第4段階:日本語Wikipediaの特別:データ書き出しに渡すページ一覧を作る

ここまでは、かなり進んでいます。一方で、Fisica Wiki側に何が実際に取り込まれていて、何がまだ赤リンク・Luaエラー・TemplateStylesエラーになっているかは、この一覧だけではまだ確定できません。

ファイルごとの意味は、おそらく次のようになります。

articles.txt は、調査対象にした物理学者の記事名リストです。たとえば「ハンス・ベーテ」「ニールス・ボーア」「湯川秀樹」のような記事名が入っているはずです。ここが出発点です。

extract_templates.py は、articles.txt にある記事を日本語Wikipediaから取得して、それぞれの記事中に現れるテンプレートを抽出するスクリプトだと思われます。その結果が template_usage.csv です。

template_usage.csv は、どの記事でどのテンプレートが使われているかを記録した表です。Fisica Wikiに物理学者記事を移すとき、どのテンプレートが頻出するかを見るための中心的な資料です。

extract_template_dependencies.py は、テンプレートがさらに別のテンプレートやモジュールを呼んでいないかを調べるスクリプトです。Wikipediaテンプレートは単体では動かず、内部で {{Ifempty}} や {{Citation}} や #invoke:Citation/CS1 などを呼ぶため、この依存関係の抽出が重要です。

template_dependencies.csv は、その依存関係の表です。たとえば「テンプレート:Cite web は モジュール:Citation/CS1 を必要とする」といった情報が入っているはずです。

make_module_list.py は、依存関係の中から モジュール: 名前空間のものだけを抜き出すためのスクリプトでしょう。

modules_needed.txt は、必要と推定されたLuaモジュール一覧です。サイズが307バイトなので、かなり小さいリストです。過去の経緯から考えると、モジュール:Citation/CS1 系、モジュール:Arguments、モジュール:If empty、モジュール:String、モジュール:TableTools、モジュール:Yesno あたりが入っている可能性があります。

make_template_export_pages.py は、必要なテンプレートを日本語Wikipediaの「特別:データ書き出し」に渡しやすいページ名リストへ整形するスクリプトだと思われます。

template_pages.txt は、移植候補のテンプレートページ一覧です。サイズが2284バイトなので、ある程度の数があります。

make_export_pages.py は、テンプレートとモジュールなどを合わせて、最終的なエクスポート対象ページ一覧を作るスクリプトでしょう。

export_pages.txt は、最初に作ったエクスポート用ページリストだと思われます。

core_export_pages.txt は、より絞り込んだ「主要部分だけ」のエクスポート用ページリストだと思われます。名前から見ると、全候補ではなく、Fisica Wikiでまず動かすべき中核テンプレート・モジュールをまとめたものです。

README.md は、Codexが作った作業説明書です。ここに実行手順や前提が書かれているはずです。まず読むべきファイルです

requirements.txt はPythonスクリプトに必要なライブラリです。17バイトなので、たぶん requests など最小限だけでしょう。

現時点の進行状況を、作業フェーズで言うとこうです。

1.まず、分析用ツール群は作られている。これはすでに達成されています。extract_templates.py、extract_template_dependencies.py、make_export_pages.py などがそろっているので、Codexは「日本語Wikipediaからテンプレート使用状況を調べ、移植候補リストを作る」ための小さな道具立てを用意したことになります。

2.次に、物理学者記事に使われるテンプレート候補も抽出済みです。template_usage.csv、template_dependencies.csv、template_pages.txt、modules_needed.txt が存在するので、少なくとも一度は処理が走っています。

3.さらに、日本語WikipediaからXMLエクスポートするためのページ一覧も作成済みです。export_pages.txt と core_export_pages.txt があるので、次の作業はこれを使って日本語Wikipediaの「特別:データ書き出し」からXMLを取得し、Fisica Wikiの「特別:データ取り込み」で取り込むことになります。

(中略)

これからやるべきことは、いきなり再インポートではなく、まず「現在地の棚卸し」です。
まずMac側で、次のコマンドを実行して内容を確認してください。

(後略)

以下,指示された通りに進めていく。長いモジュールやテンプレートのリストを提示して,これがどうなっているかチェックせよといわれたが,手動だとやってられない。相談したところ,MediaWiki API を使えば良いといわれたので,以下,ChatGPTがその都度作ってくれる,APIをたたいてチェックするpythonコードをコマンドラインで入力し,その出力結果をChatGPTの対話画面に貼付ける,という操作を延々と繰り返す。その前提として,check_fisica_pages.pyと,check_fisica_rendered.py というコードを準備してくれた。

一例を見せると下記のようなものである。
python - <<'PY'
import requests

API_URL = "https://nucleus.sakura.ne.jp/wiki/api.php"

text = """
これは仮リンクのテストです。

{{仮リンク|Test Person|en|Test person}}
"""

r = requests.get(API_URL, params={
"action": "parse",
"format": "json",
"contentmodel": "wikitext",
"text": text,
"prop": "text",
"formatversion": "2",
}, timeout=30)

data = r.json()
html = data.get("parse", {}).get("text", "")
print(html[:3000])
PY
その後,レオ・シラードとかハンス・ベーテとかでチェックしたが,表示がおかしいのは.cssファイルのせいだということになり,この簡易版を適当に作ってもらって現在に至る。プログラミングのプロセスが,過去とは完全に違うスタイルになってしまう。

2026年6月3日水曜日

MediaWiki(3)

MediaWiki(2)からの続き

前回は,Fisica WikiにMathJaxの設定をしたところだった。新しく知ることになったRaTeXのインストール過程で,MathJax代替にはKaTeXというJavascriptライブラリを使うのがよいと教えられた。MathJaxより若干表現範囲は狭いが,高速で自己完結していて十分だとのことだ。

そこで,Fisica WikiにKaTeXを導入することにした。koshix.blogspot.com はとりあえずMathJaxのままにしておく。GeminiにKaTeXの設定方法を尋ねたところ,具体的には次のようなことだ。

(1) Commons.jsを修正する。
/* KaTeXの読み込みと自動実行 */
(function() {
    // CSSの追加
    var link = document.createElement('link');
    link.rel = 'stylesheet';
    link.href = 'https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css';
    document.head.appendChild(link);

    // JSの追加
    var script = document.createElement('script');
    script.src = 'https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js';
    script.onload = function() {
        var autoRenderScript = document.createElement('script');
        autoRenderScript.src = 'https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js';
        autoRenderScript.onload = function() {
            renderMathInElement(document.body, {
                delimiters: [
                    {left: "\$\$", right: "\$\$", display: true},
                    {left: "\$", right: "\$", display: false}
                ]
            });
        };
        document.head.appendChild(autoRenderScript);
    };
    document.head.appendChild(script);
})();

(2) ただし,このままではセキュリティの問題でブロックされるので,さくらインターネットレンタルサーバーのコントロールパネルのセキュリティで,WAFを一端無効化してから作業して,有効化に戻すことに注意する。

(3) LocalSettings.php の確認(Extension:Math を使っている場合)
もし「Math拡張機能」自体を導入して MathJax モードに設定している場合は、そちらの設定も変更する必要がある。Extension:Mathを使っていたのでコメントアウトした。

数式は正しく表示され,<math>E = h \nu</math> のようなものは,レンダリングされなくなった。それはそれで,従来のソースと矛盾するので,再度復活させることにした。うーん,結局KaTeXは意味があったのかな?

2026年6月2日火曜日

MediaWiki(2)

MediaWiki(1)からの続き

図:Fisica_Wiki トップページ

さくらインターネットサーバーに,MediaWikiのページを立ち上げることができた。次に,日本語Wikipediaとできるだけ似たような見かけや機能にすることを目指している。このためには,Wikipediaから,テンプレートやモジュールをxmlファイルとしてダウンロードし,MediaWiki側に移植することが必要になる。
Wikipedia 特別:データ書き出し
https://ja.wikipedia.org/wiki/特別:データ書き出し
MediaWiki 特別:データ取り込み
https://nucleus.sakura.ne.jp/wiki/index.php/特別:データ取り込み
ChatGPTに相談したところ,次の5つのグループで進めてはどうかということだった。
第1グループ:脚注・出典の基本 ✓
テンプレート:Reflist,テンプレート:Cite web,テンプレート:Cite book,テンプレート:Cite journal
第2グループ:追加の出典テンプレート(×失敗)
テンプレート:Cite news,テンプレート:Cite press release,テンプレート:Cite conference,テンプレート:Citation
第3グループ:言語表記 ✓
テンプレート:Lang,テンプレート:En,テンプレート:De,テンプレート:Fr,テンプレート:La,テンプレート:仮リンク
第4グループ:関連項目・導線
テンプレート:Main,テンプレート:See also,テンプレート:See,テンプレート:For,テンプレート:Further
第5グループ:軽い整形補助
テンプレート:Nowrap,テンプレート:Smaller,テンプレート:Resize,テンプレート:Clear,テンプレート:Plainlist,テンプレート:Flatlist,テンプレート:Unbulleted list,テンプレート:Br separated entries

2026年6月1日月曜日

MediaWiki(1)



図:MediaWikiで始めて作ったウェブページ

メディアウィキMediaWiki)は,プログラミング言語PHPとMySQLなどのデータベースから構成されるウィキソフトウェアである。ウィキペディアやその関連プロジェクトはこのによって作成されている。昔は向日葵のアイコンでなじみ深かったが,いまはちょっとイマイチになった。

マニュアルレス時代が到来しているので,ほとんどの設定方法などは生成AIに聞いてみることで事足りる。今回は,Geminiの指導を仰いだ。ChatGPTの回答がいまいちだったからだ。
Q(koshix):
sakura internet のアカウント( サービス名 :さくらのレンタルサーバ スタンダード)で 公開用のMediaWiki(Wikipediaとほぼ同水準の)を立ち上げることはできますか。もし可能ならば,どの程度の工数が必要でしょうか。 

の最初の段階について ChatGPTにきいたところ以下の回答が得られました。 でも,ちょっと自分にとっては分かりにくくて不親切に思えるので,初心者向けに 丁寧かつ簡潔に修正していただけませんか。(以下ChatGPTの回答を添付)

(1) スタンダード契約しているさくらインターネットのコントロールパネルで,MySQLデータベースを新しく作成する。

(2) さくらインターネットのサーバーのウェブ公開ディレクトリ配下にwikiというディレクトリをつくる。MediaWikiのダウンロードサイトから入手したファイル(MediaWiki 1.45.3 安定版)を展開して,その中身をwikiに置く。

(3) httpでwikiディレクトリにアクセスし,初期化プロセスindex.phpを実行する。タイトルは,安易にPhys_Wikiとしたところ,田原真人のフィズヨビのなかでPhys-Wikiというコーナーが作られていたので,後にFisica_Wikiに変更した。 Wikiではあるけれども,管理者の自分だけが編集可能に設定する。外装はWikipediaになるべく近くなるようVector を指定する。

(4) 先ほど設定していたMySQLデータベースとの接続などを定義すると,LocalSettings.phpという設定ファイルができあがる。 これを自分のMacBook Airにダウンロードして,サーバーのwikiディレクトリに置く。CC-BY-SAも必須だ。これで準備は出来上がり。

(5) logoがデフォルトのままで美しくないので,Geminiと相談してそれっぽいデザインのものを作り,さらにそれをsvgに変換してもらう。そのまま埋め込んだらサイズが固定ではみ出てしまったので,そこも調整してもらう。なんでもかんでも任せっきりだ。

(6) バックアップの設定をしておけとの助言があった。少し問い合わせて指示に従って,さくらインターネットのコントロールパネルのWebサイト/バックアップ&ステージングでSnapUpを設定し,wikiのページのバックアップを指定したつもり(大丈夫かな?)。

(7) なるべく負荷少なく数式を表示したいので,ユーザ側でレンダリングするMathJaxを設定ファイルにCommon.jsに書く。いったんWAF設定のセキュリティ解除する必要があるとか,キャッシュのせいだとか,ななかなうまく反映できなかったが,最終的にはなんとかなった。

(注)昔は馬力があったので,あれこれ全部マニュアルと首っ引きで設定できた。その後は,インターネットで検索しながらになり,ついに生成AI(LLM)様に完全依存の状態に到達した。

/* MathJax 3 強制ロード・スクリプト */
mw.loader.using('mediawiki.util').done(function () {
    window.MathJax = {
        tex: {
            inlineMath: [['$', '$'], ['\\(', '\\)']],
            displayMath: [['$$', '$$'], ['\\[', '\\]']],
            processEscapes: true
        }
    };

    var script = document.createElement('script');
    script.src = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js';
    script.async = true;
    document.head.appendChild(script);
    
    // ページ読み込み後に再レンダリングを命令
    script.onload = function() {
        if (window.MathJax && MathJax.typeset) {
            MathJax.typeset();
        }
    };
});