オープンソース
Parsoid
要約
Parsoidは、MediaWikiのウィキテキストとHTML/XML DOMを双方向で変換するランタイムパーサーです。RDFaをサポートし、ウィキテキストの構文解析とHTMLへの変換、およびその逆の処理を行います。VisualEditorやコンテンツ翻訳などの機能で利用されており、情報損失を防ぎ、編集の精度を高めることを目的としています。現在はPHPで開発されており、MediaWiki 1.35以降にバンドルされています。
全文翻訳
mediawik.orgよりこのページを翻訳してください言語:アフリカーンス語 インドネシア語 バンナム語 (タイ・ラオ) セブアノ語 ドイツ語 英語 イド語 オランダ語 ベトナム語 トルコ語 カタルーニャ語 スペイン語 フランス語 インターリングア語 イタリア語 ハンガリー語 ポーランド語 ポルトガル語 ブラジルポルトガル語 ルーマニア語 チェコ語 バシキール語 ロシア語 ヘブライ語 アラビア語 ペルシャ語 クルド語 ベンガル語 グジャラート語 タイ語 中国語 日本語 閩南語 / バンナム語 韓国語 Wikimedia FoundationプロジェクトParsoid双方向ランタイムウィキテキストパーサー。ウィキテキストとHTML/XML DOMをRDFaで相互に変換します。グループ:コンテンツ変換チーム開始:2011-10チームメンバー:Arlo Breault, C.Scott Ananian, Isabelle Hurbain-Palatin, Mateus Santos, Otto Šleger, Subramanya Sastry, Yiannis Giannelosバックログ: #parsoidリード: C.Scott Ananianマネジメント: Sérgio Lopesアップデート: Parsoid/リリース進捗: Parsoid/デプロイメントParsoid HTML5 + RDFaウィキランタイムの図JavaScript (Node.js)で書かれたParsoidの歴史的なバージョンについては、Parsoid/JSを参照してください。Parsoidは、ウィキテキストとHTMLの間で双方向に変換するために使用されるPHPライブラリです。2012年から開発されており、当初はVisualEditorをサポートするためにJavaScriptで書かれていました。MediaWikiバージョン1.35以降にバンドルされています。MediaWiki 1.47では、パーサー統合プロジェクトとして、現在のネイティブパーサーを置き換えるMediaWikiのデフォルトパーサーになる予定です。技術詳細Parsoidは、MediaWikiのウィキテキスト構文と、自動処理およびリッチ編集を強化した同等のHTML/RDFaドキュメントモデルの間で双方向に翻訳できるアプリケーションです。2012年からWikimedia Foundationのチームによって開発されています。現在、VisualEditor、コンテンツ翻訳、その他のアプリケーションで広く使用されています。Parsoidは、情報損失を回避し、「ダーティ差分」を防ぐために、シームレスな双方向変換を提供することを目的としています。Wikimediaウィキでは、いくつかのアプリケーションで、Parsoidは現在RESTBaseの背後でプロキシされており、Parsoidによって翻訳されたHTMLが保存されます。RESTBaseは最終的にMediaWikiにより密接に統合されたキャッシュに置き換えられる予定です。プロジェクト全体の詳細については、2013年3月のブログ投稿を参照してください。使用されているHTMLモデルについては、MediaWiki DOM仕様を参照してください。Parsoidは当初、Webサービスとして構造化され、Node.jsを利用してJavaScriptで書かれていました。2019年2月の技術トーク(スライド)とブログ投稿では、PHPへの移植プロセスについて説明しています。Parsoid拡張APIは現在活発に開発されており、2020年8月の技術トークではこの作業について説明しています。GitHubリポジトリ: https://github.com/wikimedia/parsoid使用方法Parsoid/リリース – Parsoid向けリリース一覧Parsoid/API – Web API用MediaWiki DOM仕様 – APIから取得するHTMLを理解するためのもので、将来のストレージフォーマットとしても役立つように設計されていますParsoid/LanguageConverter – ParsoidのLanguageConverter実装に関する注記Parsoid/Core Parser出力との既知の違いインストールこの拡張機能はMediaWiki 1.35以降に含まれているため、ダウンロードする必要はありません。残りの設定手順は引き続き実行する必要があります。ParsoidはMediaWikiバージョン1.35以降に含まれています。有効にするために設定は不要です。Parsoidは内部REST APIをエクスポートしますが、これは歴史的にRESTBaseによって使用され、WMF内部クラスター外からはアクセスできませんでした。これは、Visual Editorまたはコアの読み取りビューではもはや必要ではなく、内部APIは非推奨となり、MW 1.43での削除が計画されています。Parsoidは名目上、mediawikiコアによって使用されるコンポーザーライブラリです。何らかの理由で内部APIを引き続き必要とする場合は、LocalSettings.phpに以下を追加してParsoidを「拡張機能」として明示的にロードできます: wfLoadExtension( 'Parsoid', "$IP/vendor/wikimedia/parsoid/extension.json" ); 内部Parsoid APIの残りのサードパーティユーザーは、同等の機能を提供するコアREST HTMLページエンドポイントに移行することを強く推奨します。開発Parsoidでの開発はGitリポジトリで行われます。コードレビューはGerritで行われます。アカウントを設定するには、Gerrit/Getting startedを参照してください。仮想マシンを使用するMediaWiki-Vagrant開発環境を使用している場合は、それにvisualeditorロールを追加するだけで、Extension:VisualEditorとともに動作するParsoidがセットアップされます。以下の手順はMediaWiki 1.35以降を対象としています。JavaScriptで書かれた古いバージョンのParsoid(MW 1.34以前で使用)を実行している場合は、Parsoid/JSを参照してください。開発者チェックアウトのParsoidのリンク標準的なMediaWikiインストールでは、ParsoidはMediaWikiからコンポーザーライブラリwikimedi/parsoidとして含まれています。開発目的では、通常、MediaWikiコアにバンドルされているバージョンではなく、Parsoidのgitチェックアウトを使用したいでしょう。LocalSettings.phpに追加する以下の行により、gitチェックアウトのParsoid(オプション)を使用でき、wfLoadExtensionを使用してParsoid REST APIをロードし(VisualEditorにバンドルされているバージョンを使用するのではなく)、通常はVisualEditorによって行われるParsoidの設定を手動で行うことができます: $parsoidInstallDir = 'vendor/wikimedia/parsoid'; # バンドルされたコピー #$parsoidInstallDir = '/my/path/to/git/checkout/of/Parsoid'; // 開発者向け: Parsoidが$parsoidInstallDirから実行されることを確認してください、 // (デフォルトでmediawiki-coreに含まれているバージョンではなく) // wfLoadExtension() の *前に* 実行する必要があります if ( $parsoidInstallDir !== 'vendor/wikimedia/parsoid' ) { function wfInterceptParsoidLoading( $className ) { // Parsoid名前空間クラスのみをインターセプトします if ( preg_match( '/(MW|Wikimedia\\)Parsoid\\/', $className ) ) { $fileName = Autoloader::find( $className ); if ( $fileName !== null ) { require $fileName; } } } spl_autoload_register( 'wfInterceptParsoidLoading', true, true ); // AutoLoader::registerNamespaces は MW 1.39 で追加されました AutoLoader::registerNamespaces( [ // $parsoidInstallDir/composer.json の "autoload" 句と同期させてください 'Wikimedia\Parsoid\' => "$parsoidInstallDir/src/", ] ); } wfLoadExtension( 'Parsoid', "$parsoidInstallDir/extension.json" ); unset( $parsoidInstallDir ); これらの行は、VisualEditorの自動構成とMediaWikiに含まれるバンドルされたParsoidコードを使用できるほとんどのVisualEditorユーザーには必要ありませんが、ほとんどの開発者には必要になります。NginxでMediaWikiを提供している場合は、サーバーブロックに次のようなものを追加する必要があります(MediaWikiのセットアップファイルが/w/にあると仮定): location /w/rest.php/ { try_files $uri $uri/ /w/rest.php?$query_string; } Dockerを使用してMediawikiを実行しており、ローカルのParsoidリポジトリをMediawikiにリンクしている場合は、media wikiプロジェクトのdocker-compose.override.ymlファイルに追加のボリュームをマッピングする必要があります。これを行う最も簡単な方法は、media wikiプロジェクトにdocker-compose.override.ymlを作成し、以下のコードを(パスを変更して)内部に配置することです。既にdocker-compose.override.ymlファイルがある場合は、それに合わせて変更してください。services: mediawiki: volumes: - ./:/var/www/html/w:cached - /my/path/to/git/checkout/of/Parsoid:/my/path/to/git/checkout/of/Parsoid 適切な設定をテストするには、{$wgScriptPath}/rest.php/{$domain}/v3/page/html/Main%20Page にアクセスしてください。ここで、$domainは$wgCanonicalServerのホスト名です。(注: 本番のWMFサーバーは、Parsoid REST APIを外部ネットワークに公開していません。)テストの実行すべてのパーサーテストとmochaテストを実行するには: $ composer testパーサーテストには多くのオプションがあります。php bin/parserTests.php --help で一覧表示できます。環境変数MW_INSTALL_DIRが設定済みのMediaWikiインストールを指している場合は、次のコマンドで追加のテストを実行できます: $ composer phan-integrated簡単なウィキテキストの変換コマンドラインから簡単なウィキテキストスニペットを変換するには、bin/ディレクトリのparse.phpスクリプトを使用できます: $ echo '[[Foo]]' | php bin/parse.php parseスクリプトには多くのオプションがあります。php bin/parse.php --help で表示されます。