智球な金曜日
デザイン変えてみました。
■
渡辺聡さんの情報化社会の航海図:情報社会学追説:私たちはなぜ語るのか
http://blog.japan.cnet.com/watanabe/archives/002776.html
を読むと
公文 俊平さんの情報社会学序説―ラストモダンの時代を生きる
http://www.ni.tama.ac.jp/shumpei/LastModern_Common/
が紹介されていて、Tim O'reillyさんのWeb2.0や梅田望夫さんのWeb進化論と通じる
ところが論じられている。
『智民』という言葉をよく使われていてよく伝わる。
『智民』の世界規模のつながりを表現するのに『智球』という言葉が閃いた!
ググッてみたが、その意味では使われた事例はないので、オリジナルでっせ。
Ruby on Railsは、デンマークのDHHさんが日本のまつもとさんのRubyを使ってアメリカで開発していて、私は神戸で、フィンランドのリーナスさんのLinuxを使って多国籍DELLマシン上で動かしている。『智球』のプロダクツだな。
江島健太郎さんのところもね
http://blog.japan.cnet.com/kenn/
「Getting Real」もみてるし、「燎原の火のごとく」の事例だなっと経歴みると、やっぱ海の向こうなんだ。どんどんこっち(日本)にも燃え広がるのに貢献して頂けていそう^^
↓では、復刻第19弾!
2004年5月20日号
━━━━━━━━━━━━━━━━━━━━━ 2004.05.20 Vol.962 ━━━━━ ■□■□■ ■□■□■ 日刊「WEBのツボ!」 □■□■□ http://www.soho-union.com/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 配信部数 3255部 「続 システムはオブジェクト指向 Ruby & Flash」(#009) 福井修@Fsys.NET 【○】本日のお題 「 XMLの生成と受け渡し 」 ━━━━━━━━━━ さわやかな この頃ですね。皆さんお仕事は、はかどっていますか? こんにちは、Fsys福井システムリサーチの福井です。 サーバの引越しをしたので、この機会に自サイトのリニューアルを考えていたの ですが、なかなか時間が取れません^^;; そのうちこっそりやるつもりです。 前回「クラスの生成と部品の利用」注1)にてオブジェクト指向の具体的なメリッ トの部品化の実装についてカレンダーの例で説明しました。 『 繰り返して 磨けば 光る 』 という話もしましたが、これは「リファクタリング」に通じます。 リファクタリングというのは、平たく言うと「ちゃんと作り直してゆく」ことで す。詳しくは、マーチン・ファウラーさんの本 注2) を読みましょう。 さて今回は、続けてきた基礎の上で、やっとやりたかったところの「XMLの生成 と受け渡し」についてです。前シリーズの応用編の最後の方でさっとXML連携に 言及したのですが、サーバでのXML生成には、ファイル操作、文字コード、コー ド変換の話や正規表現の話などがベースになるのでそちらの話を進めてきまし た。 基礎がないと上物は、立ちませんし。 サーバサイドのDB連携での情報編集は、Rubyの特長を生かして、リッチクライア ントには、Flashの特長を生かして、そして受け渡しには、XMLを使うというの は、なかなか良い組み合わせです。 リッチクライアント Flashがサーバサイドと連携するためには、LoadVarsオブジ ェクトが基本になります。LoadVarsオブジェクトについては、昨年何度か取り上 げました。注3) 今回は XMLオブジェクトを活用します。 まだまだいろいろ説明したいのですがあと2回なので、先を急ぎます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ 実体をcsvで表現してから DBへ 次にDB から 取り出して XML に編集 ──────────────────────────────────── グループの表現をDBに格納し、さらにXMLに編集して取り出します。 かなり濃い要素がたっぷり詰まっています^^;; 1. データ構造 親グループ(ノード)名,..子グループ(ノード)名 〔例〕 大グループ,中グループ,小グループ,グループ 会社,部門,部,課, 福井システムリサーチ,技術部門,システム構築部,開発課 福井システムリサーチ,営業部門,営業部,営業1課 福井システムリサーチ,管理部門,総務部,庶務課 : 2. DB構成 create table ( gr_id int; # グループid gr_name text; # グループ名 sgr_id int; # 親グループid ) 〔データ例〕 0 福井システムリサーチ NULL 1 技術部門 0 2 システム構築部 1 3 開発課 2 4 営業部門 0 5 営業部 4 6 営業1課 5 7 管理部門 0 8 総務部 7 9 庶務課 8 : 3. サーバサイドスクリプト #───────────────────────────────── # 子要素を再帰的に取り出すメソッド定義 def getchild( db, gr_id ) out = "" # 結果文字列初期化 sql = "select gr_id,gr_name from grlist where sgr_id=#{gr_id}" rows = db.query(sql) rows.each_with_index{ |row,i| gr_id1 = row[0] gr_name = row[1] out << "<#{gr_name} data='#{gr_id}'>" out << "\r\n" if gr_id != gr_id1 out << getchild(db, gr_id1) end out << "#{gr_name} >" out << "\r\n" } return out end : # xml 編集エリア xml = '' xml << '<グループ data="グループ一覧">' xml << "\r\n" # 初期の最上位グループ情報検索文 sql = "select gr_id,gr_name from grlist where sgr_id is NULL" rows = db.query(sql) # 該当グループ検索&逐次処理 rows.each { |row| gr_id = row[0] gr_name1 = row[1] xml << "<#{gr_name1} data='#{gr_id}'>" xml << "\r\n" # 子要素を再帰的に取り出し xml << getchild( db, gr_id ) xml << "#{gr_name1} >" xml << "\r\n" } xml << 'グループ >' # EUC to UTF-8変換 uxml = Uconv.euctou8(xml) #----- データの出力 print "Content-type: text/plain\n\n" # xml編集結果出力 print uxml ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ リッチクライアントFlashにて XML を受け取り Tree表示 ──────────────────────────────────── リッチクライアントの Flash アクションスクリプトで、XMLを受け取り、コンポ ーネントの Treeで表示します。 ActionScriptの一部を紹介します。 : //━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Tree用の XMLデータをサーバに要求 // 送信用LoadVarsオブジェクトの作成 // my_tree というのは、FTreeコンポーネントに名付けたインスタンス名! mySendVars = new LoadVars(); mySendVars.dataIN = "root"; // 受信用LoadVarsオブジェクトの作成 myLoadVars = new LoadVars(); // Load完時の処理を定義 myLoadVars.onLoad = function(success) { _root.nodeLabel.text = myLoadVars.dataOUT; // 応答後に読み込み my_tree.loadXML("dep_tree.xml"); } // xml リクエスト mySendVars.sendAndLoad("getGroup.rb",myLoadVars,"POST"); 前回シリーズの第10回 注4) も どうぞ ご参考に。 http://fsys.net/tree/ にて Treeコンポーネント表示の例が参照できます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ まとめ ──────────────────────────────────── 今回は XMLの生成と受け渡し を駆け足でやりました。 実体→.csvテキスト表現→DB 2次元表格納→XML表現→Flashリッチクライアント Tree表現 またまた再帰とかいろいろな要素が出てきましたね。一歩一歩進みましょう。 また 次回でもう少し解説を加えます お楽しみに。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ※ 注釈、資料、参考情報 ──────────────────────────────────── 注1) 続 システムはオブジェクト指向 Ruby & Flash (#008) 「クラスの生成と部品の利用」 http://www.melma.com/mag/02/m00020302/a00000749.html 注2) リファクタリング:プログラムの体質改善テクニック マーチン・ファウラー 著 児玉 公信 友野 晶夫 平澤 章 梅澤 真史 訳 株式会社ピアソン・エデュケーション 5,040円 ISBN4-89471-228-8 http://www.pearsoned.co.jp/washo/object/wa_obj25-j.html 注3) システムはオブジェクト指向 Ruby & Flash (#007) 2003.10.30 Vol.856 【 実践編 】LoadVars連携での ログイン認証 http://www.melma.com/mag/02/m00020302/a00000651.html システムはオブジェクト指向 Ruby & Flash (#008) 2003.11.13 Vol.866 【 実践編 】LoadVars連携での DB検索 http://www.melma.com/mag/02/m00020302/a00000661.html 注4) システムはオブジェクト指向 Ruby & Flash (#010) 2003.12.11 Vol.886 【 応用編 】Ruby&Flash&PostgreSQL での 応用例 http://www.melma.com/mag/02/m00020302/a00000681.html 【プロフィール&近況】 福井 修 ( FUKUI Osamu ) o-fukui@po.iijnet.or.jp 福井システムリサーチ http://fsys.net/ 主幹。システム構築歴27年。 システム構築エキスパート 日本Linux協会、神戸商工会議所、情報処理学会、関西IT共同体 会員 関西ソーホ・デジタルコンテンツ事業協同組合員