※サムネイル画像は、内容とは何の関係もありません。クオッカのつぶらな瞳です。
きっかけ
ウィキペディアタウンは、「書く題材」がある程度決まっているイベントです。参加者が当日スムーズに執筆できるよう、事前に参考文献を集めておく必要があります。その際、対象について国立国会図書館やCiNiiなどの典拠データを一覧にしておきたいと考えました。
そこでふと、「これ、Wikidataを使えばいいのでは」と気づきます。典拠データも、Wikipedia記事へのリンクも、Wikidataに識別子として登録されているものが多いからです。
その類似例として、以前見かけた モジュール:WLF2025Yokohamatable のことを思い出しました。User:Aspereさんが作成した(彼もまた別のモジュールを参考にしたよう)、QIDから各言語版のWikipedia記事の有無を一覧表示するモジュールです。
さらに、ちょうど韓国のウィキペディアンとの交流イベントを企画していました。このイベントはフォトウォークも兼ねており、訪れる場所に関連する Wikimedia Commons のカテゴリなどを事前に文書として整理しておく予定にしていました。
- 参考文献・典拠データを集めたい
- Commonsカテゴリなどを整理しておきたい
これらは別々に準備しようとしていた作業でしたが、「全部Wikidataを起点にすれば、ひとつの表としてまとめられるのでは」と考えました。QIDを渡すだけで表が生成され、それをそのままイベントページに貼り付けられれば、準備の手間がまとめて解消できます。
「この確認作業を、Wikidataを起点にして自動化できないか」——それが今回のモジュール開発の出発点でした。
Wikidataをハブにするという発想
独自にデータベースを作って情報を手入力するのではなく、Wikidataに既に登録されている情報をそのまま活用することをコンセプトにしました。
流れはシンプルです。
Wikipedia Townの題材を決める
→題材のWikidata QIDを探す
→各QIDについてWikidataの情報を取得
→Wikipedia Town用のリンク集として表形式で表示
利用者が入力するのは、基本的に「対象のQID」だけ。Wikipedia記事の有無、Commonsカテゴリ、OpenStreetMap、国立国会図書館やCiNiiの識別子は、すべてモジュール側でWikidataから自動的に取得します。
参考・ベースにしたのは、Meta-Wikiの Module:WikimediaCEETable および jawp の モジュール:WLF2025Yokohamatable です。QIDを入力することで、多言語版における記事の整備状況を表形式で表示する仕組みが既にあったため、そのまま使える部分・改修が必要な部分を切り分けるところから着手しました。
実装は Claude Codeと一緒に
今回、実装作業には Claude Codeを使いました。プログラミングに詳しくなくても、やりたいことを日本語で伝えながら少しずつ形にしていけるのが助かりました。(この文章は Claude に書かせているので自画自賛です – 追記)
進め方としては、いきなり全部を作ってもらうのではなく、フェーズを区切って進めました。
- 既存モジュール(Module:WikimediaCEETable)の調査
- 必要なWikidataプロパティの整理
- 最小限のプロトタイプ実装(QID・Wikipedia・Commons・座標・OSM・NDL・CiNiiのみ)
- 表示言語をカスタマイズできるように拡張
- 複数のQIDをまとめて一覧表にできるように拡張
途中、記事の有無を「記事名」で出すのではなく「○/-マーク」で視覚的に表示したい、○マークはその言語版記事への直接リンクにしたい、といった細かい調整も加えながら、少しずつ仕様を固めていきました。
できあがったもの
完成したモジュールが モジュール:WikipediaTownTable です。
主な仕様は以下の通りです。
- 入力はQIDと表示したい言語のみ。プロパティ番号や外部識別子を利用者が直接入力する必要はありません。
- 複数のQIDをまとめて一覧表にできるため、調査対象が複数ある場合もひとつの表で確認できます。
- 記事名をそのまま表示する言語と、○/-マークだけで存在確認する言語を、それぞれ引数で指定して使い分けられます。
- ○マークはその言語版の記事への直接リンクになっており、クリックすればすぐに記事を確認できます。
- Wikidataに情報が登録されていない項目は、無理に推測せず「-」で表示します。
今回は主にウィキペディアタウンでの使用を想定して、コモンズのカテゴリリンクや、同時にイベントを開催することの多い OSM へのリンクなどを貼り付けました。コモンズなどのカテゴリがそもそも存在しているか、識別子をリンクできているか一目で確認できるのも利点です。また、多言語版での記事を拡充できるチャンスでもある、韓国の方との交流イベントでの使用も考えたので、どの程度他の言語版で充実しているかを視覚的にわかるようにしました。
今後について
現時点では、Wikipedia記事の有無・Commons・座標・OpenStreetMap・NDL・CiNiiまでを対象にしていますが、他にも載せたい情報があれば(Wikidataに適切なプロパティなどが存在していれば)追加できるはずです。
とりあえず試作品を投稿してみただけです。今思いついている段階だと、例えば、それぞれの記事に対する初心者への編集アドバイスを記述する備考欄があってもいいと思います(が、ソースはかなり複雑になる気がしている)。他には、バイト数やWikiRankなどといった指標をもとに、言語版ごとの記事の充実具合を色分けしてみると、編集のモチベーションにもなるのかなと思っています。(編集の結果、色がよくなったよ~と話すもあり。)
特にイベント運営をされる方のフィードバックがあると嬉しいです。
【余談】いつも話をしているような気がしますが、AIのすごさを今回も実感しています。このモジュールのコード作成に際して、初めて Claude Code を使ってみたのですが、ツールをこんなにも簡単に作ってくれるのですね。
ですが、Lua(モジュールに使われている言語)を知らない私としては、完成したコードが無駄な動作をしていないか、などを判別する手段はないです。いろいろと入力を変えて実験したうえで、問題がなさそうと判断してからコードを公開するようにしているのですが、それでも気づかないミスはあるかもしれません。きっと、まだしばらくはプログラムを学ぶ意味はあると私は思っているのですが、どうなのでしょう…
Can you help us translate this article?
In order for this article to reach as many people as possible we would like your help. Can you translate this article to get the message out?
Start translation
