Extension:Graph
警告: ここで記述しているコードまたは設定には、セキュリティ上の重大なリスクがあります。 サイトの管理者へ: このセキュリティ上の問題が解決されるまで、これを使用しないように勧告します。 問題点: 利用者からの入力をブラウザーへ直接出力するため、クロスサイト スクリプティング攻撃に対して脆弱です。 これにより利用者アカウントが乗っ取られるなどの問題点が発生するおそれがあります。 詳細は T336556 を参照してください。 解決法: strictly validate user input and/or apply escaping to all characters that have a special meaning in HTML |
現在、この拡張機能は積極的な保守が行われていません! それでも機能する可能性はありますが、バグ報告や機能の要望は無視される可能性が高くなります。 この拡張機能の開発や保守の作業を引き受けることに興味がある場合は、リポジトリの所有権を申請できます。 礼儀として、作者に問い合わせることをお勧めします。 保守を引き継いだ場合、このテンプレートは除去すべきです。また、拡張機能ページの {{Extension }} 基礎情報ボックス内のリストにあなたの名前を保守担当者として追加してください。 |
Graph リリースの状態: 保守されていない |
|
---|---|
実装 | タグ , ContentHandler |
説明 | データ駆動グラフ |
作者 | |
MediaWiki | >= 1.43 |
ライセンス | MIT ライセンス |
ダウンロード | |
|
|
四半期ごとのダウンロード数 | 25 (Ranked 106th) |
使用中の公開ウィキ | 884 (Ranked 281st) |
translatewiki.net で翻訳を利用できる場合は、Graph 拡張機能の翻訳にご協力ください | |
問題点 | 未解決のタスク · バグを報告 |
Graph (グラフ) 拡張機能は、<graph>
タグでデータの画像化をJSONで記述しレンダリングします。棒グラフ、円グラフ、タイムテーブル(年表)やヒストグラム(demo)をVega宣言型プログラミングで生成します。
This extension is expected to be replaced by the Chart extension.
全般的な情報
Graph 拡張機能は強力な Vega ベースのグラフをウィキページに加えます。 グラフは対話的なものにできます。
もっとも簡便にグラフを追加するには、既存の{{Graph:Chart}}などのテンプレートを使います。 これらのテンプレートはVegaの複雑さを見ずに済みます。 熟練の利用者ならグラフ用サンドボックスでグラフが作成できます。 グラフのサンドボックスでは、JSON に加えてウィキのテンプレート構文を使用できます。 この拡張機能はVisualEditorと統合されており、エディタに直接値を入力することで基本的なグラフを生成するシンプルなツール/ウィザードを提供します。
有用なリンク
- Vega 2ドキュメント – nyurik/vega/wiki 上の復元されたVega 2ドキュメントページ。
- Guide - ウィキでグラフを使う方法の標準的な推奨。
- Interactive Tutorial - ゼロから複雑でインタラクティブなグラフ完成まで、段階的に解説する説明書。
- デモページ - 多くのサンプルと使い方のトリックを紹介します。
- TechTalk 動画 - ウィキメディア財団技術部門の議論。Graph 拡張機能を取上げ、Lyra エディターを分かりやすくデモしている (labsにも合わせてインストールする)。
- 興味があれば、Vegaの将来的な機能の動画も参照できる(Jeffrey Heerの基調講演)。
- 開発者のための Vega 解説 - Vegaのリソースを探すならこちらが最適。
- Vega 2.0 への移行
- 対話的な Vega の紹介動画
インストール
- JsonConfig 拡張機能が必要
- ダウンロードして、ファイルを
extensions/
フォルダー内のGraph
という名前のディレクトリ内に配置します。
開発者とコード寄稿者は、上記の代わりに以下を使用してGitからインストールします:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Graph - 以下のコードを LocalSettings.php ファイルの末尾に追加します:
wfLoadExtension( 'Graph' );
- 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。
Vagrantでのインストール:
- Vagrant を使用している場合は、
vagrant roles enable graph --provision
でインストールしてください。
追加設定のセットアップ
en.wikiのような本番環境を複製したい場合、以下のステップを実行する必要があります。
- Install Scribunto , Imagemap and TemplateStyles , and enable SVG uploads
- If you use vagrant, you can use
vagrant roles enable --provision scribunto imagemap templatestyles svg
- If you use vagrant, you can use
- Import mediawiki.org's Module:Graph, Module:Graph/doc, Template:Nowrap and Template:Nowrap/styles.css (export link)
- Import enwiki's Module:Chart and Module:Chart/Default colors (export link)
- File:Circle_frame.svg ファイルをインポート
グラフのデバグ方法、 Vega 2 から Vega 5 へポートするには
Special:GraphSandbox に置いたサンドボックスでは、Vega グラフ編集機能と似た動作をします。 MediaWiki ツールには互換性コードがあり、旧来の Vega スケマを現行の有効なバージョンと紐付けます。 本文の領域に旧版のスケマを加えると、可能な場合はグラフの下に改変して更新済みのスケマを出力します。
Vega のオブジェクトは vega.github.io/editor に似て、VEGA_DEBUG
JavaScript global を使った動作確認ができます。
Vega の操作は、デバグのガイドを参照。
Vega の旧版からスケマを取り込む
グラフ機能は従来、Vega 2 に対応。 グラフの JSON は http://vega.github.io/vega-editor/?mode=vega にペーストすると、旧来はどうレンダリングしたかVega 5 と比較できます。
古いスケはを Special:GraphSandbox を使うと(最新のコードは[1])新しいものに紐づけできます。 古いスケマをメインのテキスト領域にコピーすると、更新済みのスケマをグラフの下の文字エリアに表示。 新しいスケマを使用するコードにコピー。
表の例
サンプルや使用法の裏技はデモのページ を参照してください。
利用者定義のフォールバック
クライアント サイドのレンダリングを使用する場合、noscript
利用者に静的なフォールバック画像を提供するためにウィキメディア コモンズが使用できます。
これは、サーバーサイドレンダリングを提供するために新しいサービスが実装されるまでの一時的な対処です。
利用者は最初に静的なグラフをウィキメディア コモンズにアップロードする必要があります。
フォールバック画像には2つの変数 fallback
と fallbackWidth
があります。
fallback
はWikimedia Commonsのファイル名に対応します。
fallbackWidth
はフォールバック画像の幅のピクセル数です。
これらの変数は以下の方法でグラフを通して渡されます。
<graph fallback="Graph test seddon.png" fallbackWidth=450>
Module:Graphのようなluaモジュールを使用する場合、これらの変数はタグ関数で提供することができます。 Template:Graph:Chart を適応させると、こんな感じになります。
{{safesubst:#tag:graph|{{safesubst:#invoke:Graph|chartWrapper}} | fallback = {{{fallback|''}}} | fallbackWidth= {{{fallbackWidth|''}}} }}
そして、次のような形でテンプレートに活用されることになる。
{{Graph:Chart|width=400|height=100|xAxisTitle=X|yAxisTitle=Y
|type=rect|x=1,2,3,4,5,6,7,8|y=10,12,6,14,2,10,7,9|fallback=Graph test seddon.png|fallbackWidth=450}}
fallbackWidth が提供されず、画像が定義されている場合、拡張機能は提供されたグラフ幅から幅を導きます。 その理由は、レンダリング画像の幅と実際の画像の幅に差が生じることが多いからです。
{{Graph:Chart|width=400|height=100|xAxisTitle=X|yAxisTitle=Y
|type=rect|x=1,2,3,4,5,6,7,8|y=10,12,6,14,2,10,7,9|fallback=Graph test seddon.png}}
外部データ
HTTP(S)を使ってグラフのデータを取得することはできません。
代わりに wikiraw:
や wikiapi:
等、固有のウィキ プロトコルを使用してください。
Graph 拡張機能は GraphAllowedDomains
設定を用いてプロトコルの解決を調整します:
注意点として突然、クエリが動作を停止することがあり、ウィキベース項目の構造に依存するクエリは、基底のデータが編集や変更を受けると不完全か空白あるいは無効なデータを生成してしまい、グラフ作成に使えない事態になるかもしれません。
これらの事例だと、成果のグラフは空白になります(phab:T168601を参照)。
$wgGraphAllowedDomains = [
# http + httpsキーで外部のデータアクセスが認められるドメインをすべて一覧にします。
# ここに列記したドメインはサブドメインもすべて容認します。
# 〈wikiraw〉のような特製のプロトコルは、どのプロトコルを選ぶべきか調べるために用います。
# こうするとwikiraw://en.wikipedia.org/Pageはhttps://en.wikipedia.org/w/api.php?action=query&titles=Page&...を呼び出すapiのリクエストになる
'https' => [ 'wikipedia.org', 'wikimedia.org', ... ],
'http' => [ 'wmflabs.org', ... ],
# wikirawuploadに用いることが承認されたドメイン一覧: プロトコルにアクセス。
# 完全一致のみ。サブドメインは対象外。
'wikirawupload' => [ 'upload.wikimedia.org' ],
# wikirawuploadと同値だがウィキデータSparqlクエリ用
'wikidatasparql' => [ 'query.wikidata.org' ],
];
内部リンク
解析をすると、Graph 拡張機能はテンプレートのパラメーター/式をすべて展開し、グラフのハッシュを識別子に使うと完全なグラフ定義を ParserOutput ページのプロパティとして保存します。
グラフ拡張機能は、そのグラフを置くページ内に HTML を追加して、属性は <div>
に graph-id を添えます。
サンプル:
<div class="mw-graph" data-graph-id="72edc224f0a10b343c1e84f63dbfc97cac9bc957">
</div>
Graph 拡張機能は ResourceLoader の JavaScript モジュールとして Vega ライブラリを含むページに ext.graph
を呼び込み、グラフ定義の JSON を通称 wgGraphSpecs
と呼ばれる JavaScript mediawiki.config
変数に組み込みます。
このモジュールがクライアントのブラウザに読み込まれると、Vega JavaScriptライブラリは<div>
を個別のHTMLキャンバスに取り込み、その中にグラフを描画すると静止画像と置き換えます。
セキュリティ機能
信用できないデータソース参照を許可しないように、<graph>
を設定できます(例: ウィキメディアではウィキメディアのサイト内のデータのみ許可)。
ライセンス
VegaライブラリはBSDライセンスの修正版容認の範囲で使用できるものとして配布されます。
“ | BSDライセンスの複写に(容認できる範囲の)微調整を加えたようにも見えます。 使用に際して問題はありませんが、このような変更をライセンスに加えないと理想的です。 ライセンスがオープンソースの使用について安全かどうかという(このような)混乱を防ぐためにも、ライセンス条件にこのような改変を行うことは好ましくありません。 | ” |
—Stephen LaPorte |
設定
wgGraphAllowedDomains
外部データの見出しを参照(external date)。
ビジュアルエディターのモジュール
2015年の夏以降、Graph 拡張機能にはビジュアルエディターを使ってグラフを編集するモジュール (ext.graph.VisualEditor) が付与されました。
このモジュールは「Google Summer of Code 2015」プロジェクトの成果です。 詳細は phab:T89287 を参照してください。
利用者はこのモジュールを使い、外部の拡張機能ノードに頼らずとも、VisualEditor内でグラフを見ることができます。 ユーザーはさらに、グラフの形式、データやパディングを編集するダイアログを開くことができます。 ユーザーインタフェース(UI)ではさらに、ウィキテキスト・エディターに切り替えなくてもビジュアルエディター上でグラフの生JSON定義を直接、編集できます。熟練したユーザーなら、これを使ってUIのサポートしない設定の微調整も可能です。
この第1ステップは、ビジュアルエディター内でどのようなグラフ編集ができるかという試金石になり、またモジュールとして改善したり伸展する方法が十分にあります。
壊れたグラフのトラブルシューティング
グラフを含むエラーは、開発者コンソールに記録されます。
Error: Bad constructor arguments (phab:T277906)
修正方法: filepath:Earthmap1000x500compac.jpg を filepath:Earthmap1000x500.jpg に置き換える。
例.
TypeError: undefined is not an object (evaluating 'datum.firstYear.value')
修正方法: 既定値が null でない点を確認。
例。
関連項目
- Diagram extensions
- Plotly — オープンソースのJavaScriptグラフ作成ライブラリ(3D作表も可能)
- D3 — データ駆動型ドキュメント
この拡張機能は以下のウィキ ファーム/ウィキ ホスト/パッケージに含まれています: これは正式な一覧ではありません。 一部のウィキ ファーム/ウィキ ホスト/パッケージは、ここに記載されていなくてもこの拡張機能を含んでいる場合があります。 必ずご利用のウィキ ファーム、ウィキ ホスト、バンドルで確認してください。 |