Perfect Dark

**perfect dark**（パーフェクトダーク）はWindowsで動作するファイル共有ソフトである。**会長**と名乗る匿名の人物によって開発され、最終的にはWinnyやShareの後継となりうるものを目指していた。**PD**と略されることも多かった。

## 公開テスト
現在、perfect darkは開発中でテスト段階のものであるので、利用者のつもりではなく、テストに参加するつもりで運用することが求められる。また、報告・議論を行う時は開発に有用な形にするよう努めることが求められる。

WinnyやShareと比べて、回線速度やHDD容量等の要求スペックが高くなっているが、2000年以降の一般的なPCスペックであれば容易に満たせると思われる。

## 概要
Winnyに類似したファイル共有ソフトの一つであり、ファイルを**unity**と呼ばれる独自形式のデータに変換したうえでP2P（ピアツーピア）で構成されたネットワーク上を流通させる仕組みを持つ。

制作された初期は創価学会の**[[池田大作|名誉会長]]**の名称（個人名）で運用した方が良いという意見が多くあったが（メディアや記事への存在の露呈の回避を目的とした名称）、現在の形に落ち着いた。

アイコンはShareが採用した笑い男に似たマークを参考にして、『攻殻機動隊 S.A.C. 2nd GIG』の個別の11人に似たマークが一時的に使われていたこともあった。

## 特徴
### 高い検索能力
perfect darkの最大の特徴は、高い検索能力を持つことである。ネットワークの規模が拡大しても検索能力を維持できるdkt（分散キーワードテーブル）と呼ばれる仕組みを持つため、ノードのクラスター構築に頼る必要が無く実装していない。そのため、クラスターキーワードの入力および切り替える手間が省ける上に、ジャンルの異なった複数のファイルを即座に検索することも可能となった。WinnyとShareでは、事前に目的のファイルに合ったクラスタキーワードに設定する必要があり、またキーワードを切り替えてから実際に効果が出るまで時間がかかる問題がある。

高い検索能力を活かすため**ツリー検索**と呼ばれる概念を導入しており、検索と同時に柔軟な絞り込みを行うことができる。キーワードを直列につなげば絞り込みが可能で、並列に分岐すれば同時に複数の検索が可能であり、これらは任意の箇所で組み合わせることができる。この柔軟性に加え否定条件も備えるためフィルタの機能も兼ねることができる。

### 公平なネットワーク設計
WinnyやShare以上に、公平な負担を重視しており要求するネットワーク帯域とHDDの容量が増加しているほか、保持するunityが少ないうちは自分で指定したファイルのダウンロードが制限され他のノードへの貢献が優先されるようになっていて、将来的に流通するファイルの量がperfect darkネットワークの許容量を上まわることが予想されたための処置としているがクラック版の流通によりunity負担が不要になり有名無実と化している。

ネットワークの設計はファイル共有以外の機能も見越して行われており、**フロー**と呼ばれる簡易掲示板機能や**ボード**と呼ばれる掲示板機能が実装されている。また、ネットワークの設計について、作者が**dkt+dht+du**と呼ぶ機構があり、実装されている。

細かい点では、アップロード用フォルダの概念が無いこと、評価機能を備えること、条件に合うものを次々と見つけ次第ダウンロードする**地引**機能が無い等のWinnyとの違いがある。地引が無い代わりに、一度検索欄にキーワードを入力しておけば自動的に更新されファイルの情報が蓄積される仕様となっている。

### dkt+dht+du
それぞれ、分散キーワードテーブル（**D**istributed **K**eyword **T**able）、分散ハッシュテーブル（**D**istributed **H**ash **T**able）、分散ユニティ（**D**istributed '''U'''nity）を示し、これらを組み合わせた構造のネットワーク構想を指す。

dktは主に効率的なファイルの検索機能の提供のために用いられ、dht+duは主に効率的なファイルの共有機能の提供と匿名性の強化のために用いられる。

### dkt（分散キーワードテーブル）
perfect darkは分散ハッシュテーブルを部分一致検索に対応できるように変形した分散キーワードテーブルを実装している。これによりノードのクラスタ構築を行わなくても充分に効率的な検索を実現することが期待される。

ノードのクラスタ構築は効率を増すが、しかし、各ノードが同時期に検索できるファイルを絞りこんでしまう欠点がある。そのため、perfect darkでは分散キーワードテーブルによる効率向上を前提として、ノードのクラスタ構築は採用していない。

各ノードは利用者の操作と関係なく**brain keyword**と呼ぶキーワードを一つランダムに決め、brain keywordと関連のあるファイルの仮身を重点的に集めるようにする。これにより、perfect darkネットワークの各ノードは分担して仮身を持つようになるため、ネットワーク全体で扱える仮身の数が大幅に増える。ファイルを検索する時は、検索したいファイルと関連のあるbrain keywordを持つノードに重点的に問い合わせる。この時、求めているファイルの仮身を持っている可能性の高いノードはbrain keywordを参考に絞りこめるため、無駄な問い合わせを減らすことができネットワークへの負担を減らすことができる。

brain keywordは、他のノードのものも含めてツリー検索に入力した単語やファイルに付加したキーワードの中からランダムに選ばれる。現在のバージョンでは既に表示されないためユーザーが意識することはない。

### Torコネクション
公開鍵暗号を利用した多段中継によって、情報の発信元の匿名性を維持するTorのアルゴリズムを利用したperfect darkネットワーク内のコネクションであり、version 1.17で実装された。

The Tor ProjectによるTorネットワークとの互換性はなく、あくまでperfect darkネットワーク内における接続の一つである。

現在はファイルの評価と簡易掲示板であるボードのメッセージの送信に用いられている。

## 開発と現状
ネットワーク全体のノード数について、ネットエージェント調べによると2009年お盆期間中の平均ノード数が約5万1000。GW期間と比べると約137%で、国産のP2Pでは最も増加率が高かった。

しかし現在はBitTorrentの普及により急速にユーザー数が減りつつある。

作者はハンドルネーム・会長を名乗っているが2ちゃんねる等ウェブでは発言していない。

WinnyとShareとは異なり技術的な仕様はほとんど公開していない。

perfect darkはネットワークの構造上、各ノードの他ノードへの依存性が強くクラックに弱い原因となっていて、現行バージョンもクラック済である。

## 用語
; unity
: perfect darkは、ファイルをunityフォルダに取り込んでからネットワーク上に流通させるが、取り込まれたファイルのことをunityと呼ぶ。取り込む時に暗号化され、取り出す時に復号される。Winny・Shareの習慣から**キャッシュ**と呼ばれることも多い。
: unityには、ファイルの情報である**仮身**とデータ本体である**実身**がある。仮身はネットワーク上を単独で流通可能で、実身は現状では仮身とセットでのみ流通可能である。dkt+dht+du構想では将来、実身はそれ単独でも流通可能にする予定であった。
; 99%病
: ダウンロードが完了したもののファイルへの変換が行われなかった時、表面上ダウンロードが99%で止まる現象。右クリックメニューから「ファイルに変換」を選択することで不完全ながら解消できる事もあった。最近ではこの現象は起こりにくくなっている。
; 隠語
: ソフトの名称や、このソフトに関するインストール・アップデートなどの一般的なコンピュータ用語について、前述の創価学会名誉会長の池田の名を流用した形の隠語で呼ばれることがある。

## 脚注

## 関連項目
* 日本におけるファイル共有
* Freenet
* Peer to Peer
* Profes
* Share (ソフトウェア)
* StealthNet
* Winny
* ダウンロードソフト板
* ファイル共有ソフト