マルチプラットフォーム対応 P2Pファイル共有ソフトの開発 石川 直樹 木下 陽介 関野 誠 高木 元気 保坂 智之 吉田 侑基 担当教諭 仲道 嘉夫 私たち6人は、「マルチプラットフォーム対応P2Pファイル共有ソフトの開発」というテーマで課題研究を行いました。
何故P2Pファイル共有ソフトを作ろうと思ったのか 動機
たとえば・・・ 体育祭の写真をクラス全員で共有したい でも知らない人には見られたくない ファイルを共有したいときに、いくつか気になったことがありました。 スライド嫁
従来の方法 アップローダを使う インスタントメッセンジャを使う 他のP2P共有ソフトを使う パス設定が必須、容量制限がある 転送速度が遅い、複数人で共有不可 他のP2P共有ソフトを使う ネットワークが大規模すぎる 導入の敷居が高い 従来の方法を用いた場合、以下のような問題点がありました。 ・アップローダを使った場合は、第三者がダウンロードできないようにパスワード設定が必要だったり、容量制限をクリアするためにファイルの分割をしなければならなかったりします。 ・また、インスタントメッセンジャなどを使ってファイルを転送した場合、サーバーを介してデータを送信するため、転送速度が「極端に」遅く、複数人での共有も難しいという事情があります。 ・他のP2P共有ソフトを使うという方法もありますが、ネットワークが大規模すぎて、個人的なファイルを共有するのには向きません。加えて、導入の敷居が高いのも初心者にとっては問題でしょう。
いいこと考えた ファイル共有ソフトを自分で作っちゃえばいいんじゃね? 題して旧世代ポエム共有ソフト Poem for You 略して P4U 独自のソフトウェアの開発を決定 題して旧世代ポエム共有ソフト Poem for You 略して P4U そこで私たちは考えました。 「用途にあったソフトウェアを自分で作ってしまえばいいじゃないか」と。 旧世代ポエム共有ソフト Poem for You 略してP4Uの開発を開始しました。
構造のイメージ、転送の仕組み 概要
ハイブリッド型P2Pネットワークのイメージ 現在のP4Uではハイブリッド型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) ※ 画面は開発中のものです。 開発中のスクリーンショットはこんな感じです まずRubyという言語で開発したバージョン、 Ruby版をGUI化したバージョン、 そしてJavaで開発しなおした最新のバージョンがこれです Java(GUI) ※ 画面は開発中のものです。
wxRuby = マルチプラットフォーム対応のRuby用GUIライブラリ プラットフォームによって挙動に微妙な差異がある 実行ファイルの容量が大きくなりがち GUIデザイナを用いるとダイアログが使えない マルチスレッドでうまく動作しない Javaへの移行を決定 一見順調に思えたP4U開発ですが、いくつか問題が浮上しました ひとつめは、RubyでGUIを実現するためのライブラリ・wxRubyに起因するものです スライド嫁 例えば上から3番目の問題点については、GUI部品を手作業でレイアウトするなど、 それぞれに一応の解決策はあるのですが、そうすると極端に手間がかかり、開発効率の低下が問題になります。 wxRuby = マルチプラットフォーム対応のRuby用GUIライブラリ
問題(2) ハイブリッド型P2Pに関して サーバーの管理が必要 サーバーが止まるとクライアントは何も出来ない 手軽に共有できるとは言いがたい ピュア型への移行を決定した要因 ふたつめは、ハイブリッド型の仕組みに起因する問題です スライド嫁
おや? P4Uのようすが…… 今後の予定
Javaへの移行 メリット デメリット ランタイムさえ入っていれば、同じプログラムがさまざまな環境で動作する プラットフォームによる文字コードの違いにも対応できる 優れた統合開発環境があり、GUIの開発が容易 デメリット Rubyに比べてロジックの開発が難しい 不具合の多いwxRubyに代わる開発環境として、Javaへの移行を決定しました スライド嫁
ピュア型への移行 メリット デメリット サーバーが不要なので障害に強い ネットワークの負荷を分散できる ファイルを一元管理することができない ハイブリッド型と比べて実装が大変 また、ハイブリッド型の仕組みに代わるものとして、ピュア型への移行を検討しています スライド嫁 ピュア型P2Pネットワークのイメージ
ご静聴ありがとうございました
優しいお兄さんたちがみんなの質問に丁寧に答える 質疑応答のじかん
次回 : 2008年秋 P4U Project Wiki http://www9.atwiki.jp/poem_for_you/ ……8月初旬になんかやるかも