distributed.netの始め方

[distributed.net](http://www.distributed.net/)はグリッドコンピューティングにより暗号解読や数学の未解決問題に取り組んでいるプロジェクトです。そのdistributed.netに参加する手順を解説します。

なお、当然のことながら以下の手順は自分が管理者権限を持っているPCでのみ行ってください。会社で支給されたPCなどで行うことは、就業規則などに違反する可能性があります。過去には職場のPCで無断で実行して解雇されたという噂もありました。

## クライアントのダウンロード

クライアントは http://www.distributed.net/Download_clients よりダウンロードできます。
![download.png](https://qiita-image-store.s3.amazonaws.com/0/86075/d19c0581-86b2-ca71-d24b-3e3a2e4731e1.png)
使用予定のマシンのCPU/OSに応じたクライアントを選択してください。distribuet.netのクライアント(以下dnetc)は非常に多くの環境に対応しています。例えば対応OSは[Acorn RISC OS] [AIX] [AmigaOS] [BeOS] [BSD/OS] [FreeBSD] [HPUX] [Linux] [Mac OS X/Darwin] [MorphOS] [NetBSD] [NetWare Server] [NeXT/OS] [OpenBSD] [OS/2] [PC-DOS, MS-DOS] [QNX] [SCO UNIX] [SGI IRIX] [Solaris/SunOS] [Tru64 UNIX / DEC UNIX / OSF1] [VMS] [Windows 3.x 16bit] [Windows 32bit] [Windows 64bit]と、実際のところ現代においてユーザはどれくらい存在するのか疑問になるような環境にまで対応しています。CPUにしても、x86/AMD64/PowerPC/ARM/Sparcなどのメジャーどころから、MIPS/Alpha/PA-RISCなどなど。はては68kとかVAXとかs390とかほんとにそんなの使ってるユーザは居るのかって環境まで対応しています。

なお、マイナーな環境用のクライアントによっては長年更新が止まっているものも多くありますが、機能的には特に劣っていることはありませんのでご安心ください。

(2016/9/17追記)
ダウンロードしたクライアントがセキュリティソフトによってマルウェアと判定される場合があります。経緯の詳しくは http://www.distributed.net/trojans/ja に書かれている通りです。かいつまんで説明しますと、他人のコンピュータを勝手にのっとってdnetcを動かし計算結果を自分の手柄にしようとたくらんだ悪者が居たということです。dnetc自体は計算をして結果をサーバに送るだけの動作しかしないのですが、PCの管理者が意図せずに動いているとしたらそれはマルウェアだというわけですね。だから、自分の意志でダウンロードして実行しているのであれば問題はありませんが、セキュリティソフトの警告を無視しなさいと言うのもかなり酷な話ではありますので、ここで諦めるというのも一つの判断だと思います。
(2016/9/17追記終わり)

## クライアントの設定と実行

以下、Windows版クライアントで説明しますが、他の環境でも基本は同じです。クライアントをダウンロードしたら、アーカイブを展開してdnetc.exeを実行します。初回実行時には設定画面が表示されます。
![dnetc_config1.png](https://qiita-image-store.s3.amazonaws.com/0/86075/fd02ff9e-c1ac-2584-ec6f-0775d5f9fbc6.png)
何も設定せずに保存終了しても動作はするのですが、最低限設定しておきたいのはアカウント設定です。まずメニューの「1) General Client Options」を選択します。
![dnetc_config2.png](https://qiita-image-store.s3.amazonaws.com/0/86075/a119cdb0-ae43-859e-8012-03b104b1f150.png)
次に「1) Your email address (distributed.net ID)」を選択します。
![dnetc_config3.png](https://qiita-image-store.s3.amazonaws.com/0/86075/067a40ab-c991-9240-a494-088def90c906.png)
ここで自分のメールアドレスを登録します。
![dnetc_config4.png](https://qiita-image-store.s3.amazonaws.com/0/86075/38a219c2-7534-7694-22ac-1955f0084c04.png)
チーム登録するときにパスワードを受信する必要があるので、受信可能なメールアドレスを設定することをお勧めします。
あとはメインメニューに戻り、設定を保存して終了です。
![dnetc_config5.png](https://qiita-image-store.s3.amazonaws.com/0/86075/cab84c55-af95-35dd-8e3b-2f1d804a868d.png)
設定を変更したい場合は、メニューの「File」-「Config」からいつでも行うことが出来ます。設定項目について詳しくは[SEGA Users Groupさん](http://www.segausers.gr.jp/)が[日本語マニュアル](http://www.segausers.gr.jp/sug/rc5/dnetc.html)を用意してくださっていますので、そちらを参照ください。

再度dnetc.exeを実行します。設定ファイル(dnetc.ini)が存在すると設定画面にはなりません。サーバからブロックを取得し、計算がスタートします。
![dnetc_exec1.png](https://qiita-image-store.s3.amazonaws.com/0/86075/b4425325-9d6f-aa6e-9b12-ac7f98d14173.png)
ちなみにメニューで「View」-「Core Throughput」を選択すると、グラフ表示になります。
![dnetc_exec2.png](https://qiita-image-store.s3.amazonaws.com/0/86075/ff1b65f2-e7f9-1992-82bc-fee789fd0e2b.png)
基本的にはこのまま放置していれば大丈夫です。取得したブロックの計算が完了すれば自動的にサーバに送信されて、次のブロックを取ってきて計算してというのをずっと繰り返してくれます。

##ランキング確認

distributed.netでは各参加者の計算量をランキングとして確認することが出来ます。もちろん主目的は暗号解読であったり最適ゴロム定規の計算であったりするのですが、それらが完了するまでには長い年月がかかります。ランキングの上下は日々の楽しみとなりますし、実際のところかなりランキングに熱くなってしまうものでもあったりします。
ランキングは[stats](http://stats.distributed.net/)から確認することが出来ます。なおstatsの更新は1日に1回です。dnetcが計算結果をサーバに送信してから1日か2日程度経ってからstatsを確認しましょう。
![stats.png](https://qiita-image-store.s3.amazonaws.com/0/86075/4664abae-c04c-93f7-b3ea-f92dae4ca1df.png)
まずプロジェクトを選択します。現在稼働中なのはRC5-72とOGR-28の二つです。RC5-72を選択してみます。
![stats_rc572_1.png](https://qiita-image-store.s3.amazonaws.com/0/86075/dd9d848a-e22f-5beb-7e87-a1b457d69d5b.png)
statsのトップ画面が出たら、自分のメールアドレスを検索してみます。
![stats_rc572_2.png](https://qiita-image-store.s3.amazonaws.com/0/86075/81d98c1f-8252-a446-f891-9310c724bb4b.png)
計算結果が無事にサーバに届いていれば自分のランキングが表示されます。dnetcのデフォルト設定では両方のプロジェクトを交互に計算するようになっています。どちらか一方だけに専念したい場合にはdnetcの設定を変更する必要があります。

## メールアドレスの秘匿

statsでは自分のメールアドレスがそのまま表示されています。これがいやな場合は、秘匿することも出来ます。

まず、自分のランキングページを表示し、ページ下部にある「Please email me my passowrd」をクリックします。
![stats_saoyagi2.png](https://qiita-image-store.s3.amazonaws.com/0/86075/e00ed096-3a9b-a230-3194-79a06eb456b9.png)
パスワードが登録したメールアドレス宛に送信されます。迷惑メールに分類されることがありますので、届かない場合はそちらも確認してください。もしもダミーのアドレスを使ってしまった場合はパスワードを知ることが出来ませんので、これまでの計算結果は諦めるしかありません。dnetcに正しいメールアドレスを設定して新しく計算を始めてください。計算を行ってパケットを送信しないとstatsには自分のアドレスが掲載されません。

次に、「Edit your Information」をクリックします。認証ダイアログが表示されますので、自分のメールアドレスと、先ほど届いたパスワードを入力します。

無事に認証されましたら、設定画面となります。「List Mode:」欄で「List me using my real name.」を選択し、「Real Name:」欄にstatsに表示したい名前を設定します。![hitoku.png](https://qiita-image-store.s3.amazonaws.com/0/86075/048430a3-fabe-ea34-4bd8-deef1b1fad9f.png)

## チーム参加

distributed.netでは個人参加の他にチームを作ってランキングを競うこともできます。チームは自分で作ることもできますが、ここでは既存のチームに参加する方法を説明します。

まず、メールアドレスの秘匿と同様にパスワードを取得します。

次に参加したいチームを検索します。
![team1.png](https://qiita-image-store.s3.amazonaws.com/0/86075/e150afbb-688d-6cf7-584f-aa1de64c9ce0.png)
チームが見つかったら、ページ下部にある「I want to join this team!」のリンクをクリックします。認証ダイアログが表示されますので、自分のメールアドレスとパスワードを入力します。
![team2.png](https://qiita-image-store.s3.amazonaws.com/0/86075/a054789c-d601-c90b-a9cb-a51477c78ecd.png)
認証に成功すれば、チームへの参加が完了です。あとは自分のランキングと同様に、チームのランキングも眺めてにへらにへらする毎日を送りましょう(^^)

## サービス化

毎回手動でdnetc.exeの実行を行っていると面倒です。スタートアップに登録してもいいのですが、管理者権限があるのでしたらサービス化してしまうのが簡単です。UNIX系の場合は同様の手順でデーモン化も出来ます。

手順は、管理者権限でコマンドプロンプトを開き、dnetc -installとして実行するだけです。
![install.png](https://qiita-image-store.s3.amazonaws.com/0/86075/259f3484-6d1a-5f04-4c66-0b8fb8e7d9f1.png)
サービスとして登録されました。これでPCが起動している間は非ログイン状態でもずっと計算させることが出来ます。
![ins2のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/86075/c78aaeb4-5e14-5de7-fefd-d2500ab1d9b7.png)