近況 ( P2Pについて)
2007年07月01日04:03
近頃忙しくて、プログラムを組んでない。 というか、大体プログラムを組むための機材、タイに置きっぱなしだし...。 でも、今の僕は液晶とキーボードに向かってガリガリとコーディングするよりも、紙と万年筆を持って、ずっと席に座っているというのが望ましい感じで、それはそれでいいのかもしれない。 しかし、その紙と万年筆を持って一人でカフェでこもる、という事自体がなかなか出来ないのも確かで、困る。
最近は、ずっとP2P※について考えている。 Winnyの作者の本は、買ってタイに持っていった。 置いてきてしまったのだけど、どうしてもまた読みたかったので、もう一冊かってしまった。
※ サーバーを使わない方式のアプリケーション。 mixi とかそういうシステムは、必ずサーバーが必要で、これを使わないで実装する方式のことをP2Pという。
みんなP2P・P2Pって言うけども、良く知ってみれば、普通のプログラムだなと思う。 昔、学生時代・新聞配達をやったのだけど、コンピューターの専門学校に通っている人が一緒に働いて居た。 ちなみに僕はジャズギタリストを目指して、早稲田大学にもぐりこんでいた。 それはともかく、彼は今日学校で『再帰アルゴリズム』※を習ったと言う。 あれはスゲー難しいと言っていた。 だって、先生だって途中で追い間違えていたぐらいだぜ、と豪語していた。
※再帰アルゴリズム。 一つの細かい作業の組み合わせで全体の大きな作業を表せる場合に使うアルゴリズム。 古典パズル「ハノイの塔」を解くときとか、あるフォルダ内のファイルを全部検索する時とかに便利。
彼には申し訳ないのだが、実際にプログラマになって色々とプログラムを作っていると、これはものすごく良く使うテクニックで、別に何も変ったことは無い。 具体的に考えると難しいけど、使っているうちに理解できるし、というか、とても便利な方法だ。
P2Pもそういうテクニックかもしれない。 実際に組んでみると実に無理がなくて効率が良く、わかってしまえば、それ以外考えられないような感じがする。 判ってしまえば当たり前な方法だった。
P2Pを利用したプログラムというのは、レゴブロックみたいなプログラムだなと思う。 レゴブロックには、そのブロック自身に、自分と同じ形のブロックをつなぐための仕掛けがついている。 だから、シンプルなブロックだけでいくらでも大きな作品を作る事ができる。 ブロックはみんな同じ形をしているので、ブロックが足りなくなっても、おもちゃ屋さんに行ってブロックを買い増せばいい。
P2Pも同じで、あるプログラムが起動すると、この起動したプログラムには他のコンピューターで起動したプログラムと連結する仕掛けがついているので、これを組み合わせることが出来てしまう。 つなぎ方次第で、いくらでも巨大なシステムを作り上げる事ができる。 一つだけ違うことがある。 レゴブロックはおもちゃ屋さんに行ってお金を払って買い足す必要があるけど、プログラムは ... 時代はブロードバンド、一家に一台パソコンがある現在では ... 事実上、無尽蔵にあると言って構わない。
ファイル交換というのは、P2Pで実装出来る一番簡単なアプリケーションなのかもしれない。 でも、色々なアプリケーションがP2Pで実装できる。 それは、とても興味深く、僕はこれの研究を当面のライフワークにしようと思っている。
◇
で、僕は恥ずかしながら、プログラムを組む時、TCP/IPよりも上位の仕掛け※しか使わないので、知らなかった。 でも、考えてみれば、何で IP を指定しただけで、世界中のどこにそのホストがあるのか一瞬にして検索できてしまうのか、凄く不思議な様な気がした。
※ IP=インターネットプロトコル 59.106.21.74 とか そういう数字から具体的なコンピューターを割り出してデータを送り届ける仕掛け。 TCP= IPはただ単にパケットを送ったり貰ったりするだけの仕掛けなので、行方不明になるパケットが結構ある。 これを防ぐための対策がTCPで、普通 IP と TCP はセットで使う。 僕は、普段、これを使うだけで、これがどうやって動いているのかまでは知らなかった。
これは、考えてみれば、P2Pで自分が探している相手がどこに居るのかを検索するのと、割と同じテーマじゃないかと思いついた。 そこで、今日は本屋さんに行ってマスタリングTCP/IP という有名な本を買ってしまった。
これを見たら、(知っている人には当たり前な事だけど)ルーティングテーブルというものを書く必要があるらしい。これがあるからこそ、自分の指定したホストがどこにいるかすぐにわかるのだけど、これを人間が書くのはとても大変だ。
ところが、実は、ルーター同士が勝手に通信して、全体の地図を作る機能という物があるんだそうで、これは便利だと思った。 これにはいくつかの方法論があるのだそうだ。 一通り読んでみた。 この話を聞いたとき、これってP2Pと同じ原理だよな...と思った。
ダメだ、もう眠いので寝ます。 おやすみなさい。
最近は、ずっとP2P※について考えている。 Winnyの作者の本は、買ってタイに持っていった。 置いてきてしまったのだけど、どうしてもまた読みたかったので、もう一冊かってしまった。
※ サーバーを使わない方式のアプリケーション。 mixi とかそういうシステムは、必ずサーバーが必要で、これを使わないで実装する方式のことをP2Pという。
みんなP2P・P2Pって言うけども、良く知ってみれば、普通のプログラムだなと思う。 昔、学生時代・新聞配達をやったのだけど、コンピューターの専門学校に通っている人が一緒に働いて居た。 ちなみに僕はジャズギタリストを目指して、早稲田大学にもぐりこんでいた。 それはともかく、彼は今日学校で『再帰アルゴリズム』※を習ったと言う。 あれはスゲー難しいと言っていた。 だって、先生だって途中で追い間違えていたぐらいだぜ、と豪語していた。
※再帰アルゴリズム。 一つの細かい作業の組み合わせで全体の大きな作業を表せる場合に使うアルゴリズム。 古典パズル「ハノイの塔」を解くときとか、あるフォルダ内のファイルを全部検索する時とかに便利。
彼には申し訳ないのだが、実際にプログラマになって色々とプログラムを作っていると、これはものすごく良く使うテクニックで、別に何も変ったことは無い。 具体的に考えると難しいけど、使っているうちに理解できるし、というか、とても便利な方法だ。
P2Pもそういうテクニックかもしれない。 実際に組んでみると実に無理がなくて効率が良く、わかってしまえば、それ以外考えられないような感じがする。 判ってしまえば当たり前な方法だった。
P2Pを利用したプログラムというのは、レゴブロックみたいなプログラムだなと思う。 レゴブロックには、そのブロック自身に、自分と同じ形のブロックをつなぐための仕掛けがついている。 だから、シンプルなブロックだけでいくらでも大きな作品を作る事ができる。 ブロックはみんな同じ形をしているので、ブロックが足りなくなっても、おもちゃ屋さんに行ってブロックを買い増せばいい。
P2Pも同じで、あるプログラムが起動すると、この起動したプログラムには他のコンピューターで起動したプログラムと連結する仕掛けがついているので、これを組み合わせることが出来てしまう。 つなぎ方次第で、いくらでも巨大なシステムを作り上げる事ができる。 一つだけ違うことがある。 レゴブロックはおもちゃ屋さんに行ってお金を払って買い足す必要があるけど、プログラムは ... 時代はブロードバンド、一家に一台パソコンがある現在では ... 事実上、無尽蔵にあると言って構わない。
ファイル交換というのは、P2Pで実装出来る一番簡単なアプリケーションなのかもしれない。 でも、色々なアプリケーションがP2Pで実装できる。 それは、とても興味深く、僕はこれの研究を当面のライフワークにしようと思っている。
◇
で、僕は恥ずかしながら、プログラムを組む時、TCP/IPよりも上位の仕掛け※しか使わないので、知らなかった。 でも、考えてみれば、何で IP を指定しただけで、世界中のどこにそのホストがあるのか一瞬にして検索できてしまうのか、凄く不思議な様な気がした。
※ IP=インターネットプロトコル 59.106.21.74 とか そういう数字から具体的なコンピューターを割り出してデータを送り届ける仕掛け。 TCP= IPはただ単にパケットを送ったり貰ったりするだけの仕掛けなので、行方不明になるパケットが結構ある。 これを防ぐための対策がTCPで、普通 IP と TCP はセットで使う。 僕は、普段、これを使うだけで、これがどうやって動いているのかまでは知らなかった。
これは、考えてみれば、P2Pで自分が探している相手がどこに居るのかを検索するのと、割と同じテーマじゃないかと思いついた。 そこで、今日は本屋さんに行ってマスタリングTCP/IP という有名な本を買ってしまった。
これを見たら、(知っている人には当たり前な事だけど)ルーティングテーブルというものを書く必要があるらしい。これがあるからこそ、自分の指定したホストがどこにいるかすぐにわかるのだけど、これを人間が書くのはとても大変だ。
ところが、実は、ルーター同士が勝手に通信して、全体の地図を作る機能という物があるんだそうで、これは便利だと思った。 これにはいくつかの方法論があるのだそうだ。 一通り読んでみた。 この話を聞いたとき、これってP2Pと同じ原理だよな...と思った。
ダメだ、もう眠いので寝ます。 おやすみなさい。
コメント一覧