このコミュニティーは、次世代インターネットアプリケーションの形を考察、想像し、実際に設計して作ってみるコミュニティーです。
=========================
※ 当工房の開発成果の一つに、「イデアルパッド」と呼ばれる特殊なアウトラインエディタがあります。 コミュニティーを作りました。
http://
=========================
これだけ便利になった様に見えるインターネットですが、実際には大きな問題を抱えています。 問題って一体なんでしょうか。 そのためにはすこし話をさかのぼらなければなりません。
ずいぶん昔の話...1970年後半の話です。 この時代は、コンピューターがあまり高性能ではなく、ものすごく高価でした。 みな、頑張ってくめんしたお金で一台だけ大きなコンピューターを買い、それを『端末機』と呼ばれる、黒い画面に文字が表示できるだけの安物の『超低性能』コンピューターを沢山つなげて、みんなで仲良く使ったものでした。
メッセージのやり取りから、データベースを使ったお仕事まで、どんな複雑な仕事でも、こういう貧弱なマシンをたった一台だけ使って、こなしていました。
そうこうしているうちに時代は変わって、パソコンの時代がやってきました。 80年代後半の話です。
今では、誰もが当たり前のようにコンピューターの事を「パソコン」と呼びますが、もともとはどういういみなのでしょうか。 このパソコンというのは、パーソナルコンピューターという言葉の略です。
当たり前な事を... と思われるかもしれません。しかし、当時、この言葉には、それまでのような全員で一台きりだったケチなコンピューターではなくて、これからは安くて高性能、誰でも手軽に買える、一人(パーソナル)一台のコンピューターを持つ時代が到来したのだ! という熱いメッセージがこめられていたのです。
そんなパソコン時代にあわせて、システムも一人が一台ずつ持っている高性能なコンピューターにあわせたシステムに変わりしました。
それまでは、前述の通り、中央に置いた巨大なコンピューターが、全員分の仕事を引き受けていましたが、考えてみれば、これは、沢山の列車を引っ張る機関車の様なものです。 たった一台の機関車で全ての列車を引くということは、ものすごく、力のいる仕事です。
そして、時代が変りパソコンの時代になりました。これは、 機関車はそのままなのに、いつのまにか、引っ張られている列車のほうが高性能な新幹線にいれかわってしまったようなものです。
そうなってしまえば、一台だけの機関車に引っ張らせるよりも、それぞれの列車が協力しあって走ったほうが効率がよさそうです。
コンピューターの世界でも、同じ様に、高性能になった端末機に沢山仕事をさせることで、中央コンピューターを安くて小さいコンピューターに変える、という事を考えた人がいました。 この方法は、とてもいいアイデアでした。 値段がやすくなるだけではなく、全体的にとても効率がよくなり、スピードもとても速くなりました。
この方法は非常に成功し、当時はとても流行しました。
(当時は、このことを『ダウンサイジング』『クライアントサーバー化』などと呼びました。)
=========================
時代はさらに変わって現在です。
2000年代。
時代はインターネットです。
www とよばれるネットワークが全世界に張り巡らされています。 そこで、HTTPという文章を配るだけのために作った規格を流用して、mixi や Myspace などの巨大な中央システムが構築されています。
そんな巨大な中央システムに、ウェブブラウザと呼ばれる最初は文章を読むだけのために作られたソフトを流用して、アクセスしています。
近頃、パソコンはとても安くなりました。 昔のスーパーコンピューター顔負けの、凄まじい 超高性能・超高速コンピューターが10万円以下という信じられない値段で売られています。
ところが 奇妙な事なのですが、 mixi や Myspaceをやっているとき、その超高性能コンピューターは、mixiやMyspaceにおいてある巨大な中央スーパーコンピュータに指示を出す以外、ほとんど何もしていません。 まるで寝転んでポテトチップスを食べながら、リモコンを片手にテレビを見ているようなものです。
そんな400万・500万台という数の怠けた高性能コンピューターが、大挙して、たった30台程度の哀れなコンピューターをドレイの様に働かせているのが現代のシステムだといえます。
このようなシステムを快適に運営するためには、高性能なコンピューターを贅沢にそろえ、その上でシステムを構築する必要があるため、とてもお金がかかります。
... それは、80年代にみんなで使いまわしたコンピューターと、どこか 似ています。
そして、それは、やはり、おなじように、とても壊れやすいのです。 80年代のみんなで使いまわしたコンピューターは、壊れてしまえば、全員がコンピューターが使えなくなってしまいました。 それは、実は、現在でも、そうなのです。
これは ... やはり、80年代の ... 沢山つながった新幹線を、巨大な旧式の機関車で引っ張っている状況と、似ていないでしょうか...。
そうです。
全員で協力して走ったほうが速いのです。
ですが... 残念ながら現在のシステムはそうなっていません。
それを構築するためのアプリケーションが無いからです。
=========================
というわけで ... 無ければ作りましょう。 (^−^)
私、管理人おかあつは、このアプリケーションこそが、次世代アプリケーションのあるべき形だと言う確信を持っています。
そんなあたらしい次世代システムのあり方について、語り合うコミュニティーです... がほとんど実情は、管理人が独り相撲をしているだけのコミュニティーです。
(^−^;;;;;;
=========================
☆ 何故ネットプロトコルなの?
プログラムを作る...というと当然プログラムを作る事に意識が向きがちです。 AJAXでやろうとかFlashでやれとか、はたまたJavaでいこうとか... しかし、こういう分散アプリを作るときは、どうやってプログラムを作るのかは実はどうでもよかったりするものです。 実装方法は一つではありませんから。 それよりも、プログラム間でやり取りされるデータの構造、形式が、あいまいさがなく明確である事のほうがずっと大切です。 やり取りする方法と中身、それさえきっちり決まっていれば、Javaで作ろうが、C++で作ろうが、MACだろうがWindowsだろうが、限られたの時間内※でプログラムは作ることができるからです。
そのやり取りされるデータ・データのやり取りしかた自体のことをプロトコルと呼びます。
※ 現在のHTMLビューワー、つまりウェブブラウザなどが限られた時間内で作れないアプリのよい例ではないかと思います。 仕様に曖昧な点が多く、その考えられるすべての解釈方法を実装しなければならないため、新規に開発するためには莫大なコストがかかります。 そして、常に互換性の問題が発生します。
=========================
☆ 今
○ IdealPad という 分散式・階層ドキュメントエディター (アウトラインエディター)
○ Titaniumcore という 小型の HTTP/1.1 インプリメンテーション
○ SissyStruts という やはり小型のアプリケーションサーバー
の作成を行っています。
イデアルパッドに関しては、次のコミュニティーがあり、ここで結果報告をしています。
http://
☆ 完成品
○ 管理人のホームページ http://
☆ ゴール
『ホスト集中型システムがよりクライアントPCの能力を活用した『クライアントサーバー型』システムに移行したように、現在のWEBサーバー集中型システムは、より効率が高い『P2P型分散型』システムに移行するだろう、という予想を前提に、P2P型ウェブアプリケーションを出来るだけ簡単に開発するための非フレームワーク型ライブラリを、J2SE6.0以降を利用して開発する。 』
○ 参考資料
http://
(^o^)/
☆ (最後に) WEB2.0/AJAX に付いて。
WEB2.0や AJAXという言葉の意味するところは、究極的には上で述べた意味だったはずなのですが、残念な事に、今ではすっかり、真意とは似ても似つかない定義で定着してしまいました。
私は、最初にWEB2.0について述べられた文章(※1)や、AJAXの文章(※2)をみたときにとても感銘を受けた口なのですが、*そこを敢えて* WEB2.0やAJAXという言葉を使う事は避けていきたいと思います。
(※1)
http://
http://
(※2)
http://
やる事:
・JAVA6.0での設計理論・実装のアイデアを作る
・データ構造とデータ形式の違いを知り、新しいデータフォーマットを開発する。
・NEURO FILE SYSTEMという ネットワーク透過・非階層型のファイルシステムについてあるべき姿を考察し・実際に作成してみる
・ウェブサーバー(HTTP SERVER)の設計理論考察と作成
・ニュースサーバー(NNTP SERVER)の設計理論の研究
・オラクル等のデータベースの内部設計理論の研究
(テーブルスペースの格納形式・バイナリファイル設計理論)
・DNS サーバーの 設計理論の研究
・グラフ理論(数学)の研究
・メルセンヌツイスタ乱数生成について
・PGPの暗号化アルゴリズムについて学習
・公開鍵暗号・署名・証明書の原理を学習
・P2Pアプリケーション 又は グリッドコンピューティングの設計理論の研究と実装
・オブジェクト指向的な設計理論の研究と考察
etc...
その他
・JavaScriptやその他のスクリプト言語のアプリケーション埋め込み実装
・Java上のOpenGL実装の研究
・SHOUTCAST/PEERCAST についての学習
・FLASH 8( Flash Player 9) の機能
=========================