マルチプラットフォーム対応 P2Pファイル共有ソフトの開発 石川 直樹 木下 陽介 関野 誠 高木 元気 保坂 智之 吉田 侑基 担当教諭 仲道 嘉夫 私たち6人は,「マルチプラットフォーム対応P2Pファイル共有ソフトの開発」というテーマで課題研究を行うことにしました.
何故P2Pファイル共有ソフトを作ろうと思ったのか 動機 ではまず,P2Pファイル共有ソフトを開発しようとした動機について説明します
きっかけ 美しい画像をみんなと共有したい クラス内で共有するのに適した方法は? 1ファイルを複数人で共有するのが難しいケースがあります. たとえば・・・ スライド移動 2このような場合,どのような方法が適切でしょうか.
従来の方法 アップローダを使う インスタントメッセンジャを使う 他のP2P共有ソフトを使う パス設定が必須,容量制限がある 転送速度が遅い,複数人で共有不可 他のP2P共有ソフトを使う ネットワークが大規模すぎる 導入の敷居が高い 従来の方法を用いた場合,次のような問題点があります ・アップローダの場合は,パスワード設定が必要だったり,ファイルの分割をしなければならなかったりします. ・また,インスタントメッセンジャの場合,サーバーを介してデータを送信するため,転送速度が遅く,複数人での共有も面倒です. ・他のP2P共有ソフトを使うという方法もありますが,ネットワークが大規模すぎて,個人的なファイルを共有するのには向きません.導入の敷居が高いのも問題でしょう.
いいこと考えた ファイル共有ソフトを自分で作っちゃえばいいんじゃね? 題して旧世代ポエム共有ソフト Poem for You 略して P4U 独自のソフトウェアの開発を決定 題して旧世代ポエム共有ソフト Poem for You 略して P4U そこで私たちは考えました. 「用途にあったソフトウェアを自分で作ってしまえばいいじゃないか」と. 旧世代ポエム共有ソフト Poem for You 略してP4Uの開発を開始しました.
構造のイメージ,転送の仕組み 概要 P4Uの仕組みを大まかに説明します
ハイブリッド型P2Pネットワークのイメージ 現在のP4Uではハイブリッド型P2Pという仕組みを利用しています. ハイブリッド型P2Pとは・・・あとはスライド嫁 ハイブリッド型P2Pネットワークのイメージ ファイルの概要をサーバーから取得 実際のファイル転送はクライアント同士で行う
P4Uプロトコルの詳細 サーバー ファイル登録 検索 問い合わせ ファイル送信 クライアント1 クライアント2 ファイル要求 公開されてる ファイルある? Hogeってファイルは誰が持ってる? Hogeってファイルがあるよ! ファイル登録 検索 問い合わせ クライアント1が 持ってるよ! Hogeってファイルを公開するよ! Hogeあげるよ! P4Uがどのように通信して動作しているのか,その仕組み,プロトコルについて説明します. あとはスライド嫁 ファイル送信 クライアント1 クライアント2 ファイル要求 Hogeちょーだい!
P4Uの特徴 Windows, Mac OSX, Linuxに対応 仕組みが簡単なので設定も簡単 高速なファイル転送 ダウンロード再開機能 ・Windows, Mac OSX, Linuxの3つのOSで動作します ・仕組みが簡単なので,わずらわしい設定をする必要がありません ・サーバーを介さずにファイル転送を行えるため,高速に送受信が完了します. ・途中でファイルの送受信が中断されても,後でダウンロードを再開することができます
スクリーンショット Ruby Ruby(GUI) Java(GUI) ※ 画面は開発中のものです. 開発中のスクリーンショットをお見せします
開発言語と構造の問題 問題 一見順調に思えたP4U開発ですが,大きく分けて2つの問題が明らかになりました
wxRuby = マルチプラットフォーム対応のRuby用GUIライブラリ プラットフォームによって挙動に微妙な差異がある 実行ファイルの容量が大きくなりがち GUIデザイナを用いるとダイアログが使えない マルチスレッドでうまく動作しない Javaへの移行を決定 問題(1) wxRubyに関して この問題は,RubyでGUIを実現するためのライブラリ・wxRubyに起因するものです ・プラットフォームによって挙動に微妙な差異がある ・実行ファイルの容量が大きくなりがち さきほど表示したP4U on wxRuby の容量は11.8MBを記録しました ・GUIデザイナを用いるとダイアログが使えない ・マルチスレッドでうまく動作しない それぞれに解決策はありますが,そうすると極端に手間がかかり開発効率が低下してしまいます. このような理由から ・Javaへの移行を決定 しました. wxRuby = マルチプラットフォーム対応のRuby用GUIライブラリ
問題(2) ハイブリッド型P2Pに関して サーバーが必要 サーバーが止まるとクライアントは何も出来ない 手軽に共有できるとは言いがたい ピュア型への移行を決定 問題(2) ハイブリッド型に関して この問題は,ハイブリッド型の仕組みに起因するものです 先ほどのプロトコルの説明を思い出して下さい ・まず,クライアントがP4Uを利用している間はサーバーをずっと起動しておかなければならず, ・手軽に共有できるとは言いづらいのが現状です ・また,サーバーが止まるとクライアントは何もできなくなってしまいます ・このような理由からピュア型への移行を決定しました
おや? P4Uのようすが…… 今後の予定 最後に,P4Uプロジェクトの今後の予定について紹介します
Javaへの移行 メリット デメリット プラットフォームによる文字コードの違いにも対応できる 優れた統合開発環境があり,GUIの開発が容易 Rubyと比べてコードが長くなりがち 先ほど説明したように,不具合の多いwxRubyに代わる開発環境として,Javaへの移行を決定しました
ピュア型P2Pへの移行 メリット デメリット サーバーが不要 ネットワークの負荷を分散できる コンピュータ間の同期がとりにくい また,ハイブリッド型P2Pに代わるものとして,ピュア型P2Pへの移行を検討しています スライド嫁 ピュア型P2Pネットワークのイメージ
ご静聴ありがとうございました 私たちの発表は以上です ご静聴ありがとうございました
優しいお兄さんたちがみんなの質問に丁寧に答える 質疑応答のじかん 俺たちの戦いはこれからだ! あ,URLは要旨集にも載ってますんで P4U Project Wiki(要旨集にも載ってるよ) http://www9.atwiki.jp/poem_for_you/ ……8月初旬になんかやるかも
ここから先は予備
いずれも100MiBのテストデータを用いて計測 ただし、OSXからWindowsへの転送には10MiBのデータを用いた 転送速度について 送信元 送信先 使用ソフト 転送速度 Windows (FTTH) P4U 3.096Mbps LiveMessenger 1.760Mbps Max OSX (FTTH) 3.480Mbps 2.420Mbps Mac OSX (FTTH) Windows (ADSL) 未計測 0.018Mbps いずれも100MiBのテストデータを用いて計測 ただし、OSXからWindowsへの転送には10MiBのデータを用いた