Extension:SecurePoll

This page is a translated version of the page Extension:SecurePoll and the translation is 98% complete.
Outdated translations are marked like this.
MediaWiki 拡張機能マニュアル
SecurePoll
リリースの状態: 安定
実装 特別ページ
説明 選挙、投票、アンケートができるようにします。
作者 Tim Starlingトーク
最新バージョン 3.0.0 (継続的な更新)
互換性の方針 MediaWiki とともにリリースされるスナップショット。 master には後方互換性がありません。
MediaWiki 1.25+
データベースの変更 はい
テーブル securepoll_entity
securepoll_msgs
securepoll_properties
securepoll_elections
securepoll_questions
securepoll_options
securepoll_voters
securepoll_votes
securepoll_strike
securepoll_lists
securepoll_cookie_match
ライセンス GNU 一般公衆利用許諾書 2.0 以降
ダウンロード
  • $wgSecurePollTempDir
  • $wgSecurePollMostActiveWikisThreshold
  • $wgSecurePollUseLogging
  • $wgSecurePollKeepPrivateInfoDays
  • $wgSecurePollUseNamespace
  • $wgSecurePollSingleTransferableVoteEnabled
  • $wgSecurePollGPGCommand
  • $wgSecurePollCreateWikiGroups
  • $wgSecurePollGpgSignKey
  • $wgSecurePollTranslationImportSourceUrl
  • $wgSecurePollCreateRemoteScriptPath
  • $wgSecurePollExcludedWikis
  • $wgSecurePollCreateWikiGroupDir
  • $wgSecurePollShowErrorDetail
  • securepoll-create-poll
  • securepoll-edit-poll
  • securepoll-view-voter-pii
四半期ごとのダウンロード数 22 (Ranked 114th)
使用中の公開ウィキ 889 (Ranked 269th)
translatewiki.net で翻訳を利用できる場合は、SecurePoll 拡張機能の翻訳にご協力ください
問題点 未解決のタスク · バグを報告

SecurePoll拡張機能は、選挙、投票、アンケートのための特別ページ拡張機能です。 ウィキメディア財団理事会選挙や裁定委員会選挙で使用されています。また、ウィキメディア・ライセンス移行投票にも使用されました。

スクリーンショット

インストール

  • ダウンロードして、ファイルをextensions/フォルダー内のSecurePollという名前のディレクトリ内に配置します。
    開発者とコード寄稿者は、上記の代わりに以下を使用してGitからインストールします:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/SecurePoll
  • 以下のコードを LocalSettings.php ファイルの末尾に追加します:
    wfLoadExtension( 'SecurePoll' );
    
  • 更新スクリプトを実行します。このスクリプトは、この拡張機能が必要とするデータベーステーブルを自動的に作成します。
  •   完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。

In addition, you will need to add some user groups and user rights to your LocalSettings.php file. Here is one way to do it, which gives a new group called electionadmin the power to do everything in SecurePoll (create polls, edit polls, see voter IP addresses):

$wgGroupPermissions['electionadmin']['securepoll-create-poll'] = true;
$wgGroupPermissions['electionadmin']['securepoll-edit-poll'] = true;
$wgGroupPermissions['electionadmin']['securepoll-view-voter-pii'] = true;

Once this group is created, a bureaucrat can add someone to the group using Special:UserRights. Then that person can visit Special:SecurePoll to view polls, create polls, edit polls, tally polls, etc.

Each poll's data is compartmentalized. You can have 100 electionadmins, but if you only add one electionadmin to a particular poll, only that one electionadmin will be able to edit that particular poll or see user IPs. If an electionadmin is removed from a poll, they will lose access to it.

securepoll-view-voter-pii is used for "scrutineering" a poll, which involves looking at a list of voter IPs, user agents, and X-Forwarded-For headers to look for cheating (secret duplicate votes by sockpuppets). Because this involves looking at voter IP addresses and other sensitive, personal, de-anonymizing data, it is a sensitive user right, so only trusted users should be assigned to the electionadmin group.

It is possible to split securepoll-view-voter-pii into a separate group. You can use a config such as the one below to create a group called scrutineer that contains the securepoll-view-voter-pii right, separating it from the electionadmin group:

$wgGroupPermissions['electionadmin']['securepoll-create-poll'] = true;
$wgGroupPermissions['electionadmin']['securepoll-edit-poll'] = true;

$wgGroupPermissions['scrutineer']['securepoll-create-poll'] = true;
$wgGroupPermissions['scrutineer']['securepoll-edit-poll'] = true;
$wgGroupPermissions['scrutineer']['securepoll-view-voter-pii'] = true;

A user also needs to be added to the poll (and hence have the securepoll-edit-poll right) in order to view PII - securepoll-view-voter-pii by itself has no effect.

使用法

新規投票の作成

新規投票を作成するには、手動でXMLファイルを作成してそれをインポートする方法と、Special:SecurePollの投票作成インターフェースを使用する方法があります。

手動

投票を手動で作成するためには以下のことが必要です。

  1. XMLファイルを書く
  2. コマンドラインインターフェイスのimport.phpコマンドを使用してインポートします。

テストフォルダの中には、4つのサンプルファイルがあります。

  • 3way-test.xml
  • approval-test.xml
  • radio-range.xml
  • schulze-test.xml info

投票をインポートするには、cli フォルダから以下を実行します。

extensions/SecurePoll/cli$ php import.php ../test/3way-test.xml

dockerを使って投票をインポートするには、cliフォルダから以下を実行します。

docker-compose exec mediawiki php extensions/SecurePoll/cli/import.php extensions/SecurePoll/test/radio-range.xml

ウェブインタフェース経由

securepoll-create-pollの権限を持った利用者は、Special:SecurePollの一番下にあるリンクから新しい投票を作成することができます。

新しい投票を作成するには、作成フォームの必須フィールドに必要事項を入力します。 以下のフィールドには特に注意を払う必要があります。

  • When adding poll admins, only members of the electionadmin group are allowed. If $wgSecurePollUseLogging is set to true, it will be logged whenever an admin is added to or removed from a poll. The logs can be viewed at Special:SecurePollLog.
  • 暗号化された投票を作成するには、暗号化方式のラジオを選択します。 GnuPGを選択した場合、(公開)暗号化キーと(非公開)復号化キーを生成します。 暗号鍵は作成フォームに入力し、秘密鍵はオフラインの場所に保管してください(選挙終了後、集計の際に必要になります)。 詳細な例はhereをご覧ください。

さあ、Special:SecurePollを訪れて、皆さんの投票をご覧ください。

既存の投票を編集

投票を編集するのは、該当の投票の管理者でなければなりません。 Special:SecurePollから、編集したい投票の「編集」リンクをクリックします。

選挙が始まる前であれば、選挙に関することは何でも編集可能です。 選挙が開始されると、一部の項目は編集できなくなります。

有権者の編集

有権者を編集するのは、当該の投票の管理者である必要があります。 Special:SecurePollから、投票の「投票資格」のリンクをクリックします。

投票の翻訳

投票を翻訳するには、当該の投票の管理者である必要があります。 Special:SecurePollから、翻訳したい投票の「翻訳」リンクをクリックします。

投票者一覧の閲覧

投票が作成されたときに、透明性機能が無効にされていない限り、誰でも投票者一覧を閲覧できます。

特定の投票所の管理者は、投票者一覧を、重複する投票者を特定するのに役立つ非公開の情報 (IP アドレス、ユーザー エージェント情報、共有 Cookie など) と共に閲覧できます。 $wgSecurePollUseLoggingtrue を設定すると、管理者が非公開データを閲覧するたびに記録されます。 ログはSpecial:SecurePollLogで閲覧できます。

管理者は重複していると確信した票を無効にできます。

票の集計

票の集計は特定の投票の管理者のみに認められます。 Special:SecurePollで、皆さんが票の集計をしたい投票への集計リンクがクリックできます。

もし投票がすでに集計されていたら、そのページに結果が表示されています。 もしなければ、または皆さんが再集計したいのであれば、新規集計を始めるためのフォームがあります。

  • 投票が暗号化されていなければ、集計ボタンをクリックしてください。
  • 投票が暗号化されている場合、より多くの情報を入力する必要があるかもしれません。例えば、GnuPGを使用した場合、(非公開の)復号化キーを入力し、集計ボタンをクリックします。暗号化された投票に多くの投票がある場合、集計に長い時間がかかることがあります。後で結果を確認する必要があるかもしれません。

次に、Special:SecurePollにアクセスすると、皆さんの投票がご覧いただけます。

(STV) 集計

STV(単記委譲式投票方式)の集計を有効にするには、以下の設定(configuration)値を、LocalSettings.php に追記してください。

$wgSecurePollSingleTransferableVoteEnabled = true;

単記委譲式投票方式(single transferable votes 略号STV)の詳細情報はこちらをご参照ください。

一般的なアルゴリズム(algorithm)の実装 (source).

クオータ(Quata)式投票とは + .000001. 最低得票数(Quota)は、議席を確保するための最小限の票数です。

1. コンピューターで最低得票数を計算してみましょう。
2. 第一希望で候補者に票を割り振ります。
3. 少なくとも最低得票数に達した候補者、全員を勝利者として発表します。
4. 勝者から希望者に余剰票を移します。
5. 3から4の手順を、もはや選ばれる新しい候補者がいなくなるまで繰り返します。(いくつかの制度の元では、初めのうち、票は以前の勝者と敗者を逆転させる可能性があります。これは選挙結果に影響するかもしれません)
もし、すべての議席が勝利者で埋まれば、過程は終了です。さもなければ:
6. ひとりまたはそれ以上の候補者が敗退することになります。通例、最下位の候補者か、残った候補者のなかで合計票が最低の得票数より少ない者になります。
7. 敗者の票を残った希望のある候補者に移します。
8. 3-7を議席が埋まるまで繰り返します。

今回使用するクォータ(手順1)は、ドループクォータ(情報)方式です。

floor( no. votes / (no. seats + 1) ) + 1

選ばれた、あるいは敗退した候補者から票を移動させる方法には、ミーク(Meek)方式を用います。 w:Counting_single_transferable_votes#Meek

集計作業(JobRunner)

この作業のために、  scheduled jobを作成するか、手作業で遂行するか、はっきりさせておいてください。

  • また、集計は、手動で集計スクリプトを実行することでも進めることができます。

集計を実行するには、下記のように、extensions/SecurePoll/cliにある cli フォルダから実行します。

extensions/SecurePoll/cli/tally.php

MediaWiki-Dockerを使って集計を実行するには、extensions/SecurePoll/cliに置かれた cli フォルダから、下記コマンドを動かします。

docker-compose exec mediawiki php extensions/SecurePoll/cli/tally.php

(STV)試験選挙を作り出す

  • 試験的な(STV)選挙は、extensions/SecurePoll/cliに置かれた cli フォルダから作り出すことができます。
  • 試験選挙を作り出すには、extensions/SecurePoll/cliに置かれたcli フォルダから下記コマンドを動かします。
extensions/SecurePoll/cli/generateTestElection.php
  • 試験的な(STV)選挙は集計のための足場を提供します。

Redirect polls

If you are using SecurePoll in a wikifarm, it is possible to configure it to create a main election on a vote wiki, and then it will also create a redirect poll on a different wiki, with a vote link that points back to the vote wiki.

説明文書

セキュアポル(SecurePoll)

SecurePoll(セキュアポル)に関する一般的な説明文書はwikitech:SecurePollをご参照ください。

SecurePoll の改善

SecurePoll 改善の概要はAnti-Harassment Tools/SecurePoll Improvementsをご参照ください。(仮題:嫌がらせ行為対策ツール/セキュアポル改善)

STV 集計結果を理解する

STV 集計結果に関する解説文書はAnti-Harassment Tools/SecurePoll Improvements/Understanding the STV resultをご参照ください。(仮題:嫌がらせ行為対策ツール/セキュアポルの改善/STV集計結果を理解する)