2004年9月22日号
復刻第26弾!
━━━━━━━━━━━━━━━━━━━━━ 2004.09.22 Vol.1018 ━━━━ ■□■□■ ■□■□■ 日刊「WEBのツボ!」 □■□■□ http://www.soho-union.com/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 配信部数 3246部 「続々 システムはオブジェクト指向 Ruby & Flash」(#006) 福井修@Fsys.NET 【○】本日のお題 「 動きのある Flash を Ruby で作る 」 ━━━━━ いつのまにか秋分の日も近づき、実りの秋ですね。 まいど Fsys福井システムリサーチの福井です。 前回は「 オブジェクト指向の本質は、モデル化表現 」注1) で「言語」での表 現も「プログラム言語」の表現も 実体を言葉や命令に写像(=モデル化)して いるのであって、それはまさにオブジェクト指向の本質であるところのモデル化 (=名前を付けてカプセル化や操作の定義)と同じである。また「映像」は実体 を直接的に伝えることができるので、キャラクタベースとは次元の違う方式であ るし、それが携帯で簡単に扱えるようになるとブレイクするだろうという話をし ました。 『簡単』『お手軽』に『奥深い』ことができるというのは、『価値がある』と感 じます。これは Ruby、FLASH、携帯映像に共通したキーワードです。 もちろんその土俵のなかでの他との比較であって、その土俵なりの敷居はありま す。 今回は、 Flash動画 を Ruby で作る話題に進みます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ Flash Power Session 2004 ──────────────────────────────────── 9月10日(金)に Flash Power Session 2004 注2)がありました。私のFlash歴 は、浅いので今回初めて参加して、勉強させて頂きました。 Mac屋さんの波動というか「クリエータ」の熱気を感じました。感性の世界とい うか右脳屋さんが闊歩です。プログラマも「クリエータ」ですが、理屈の世界と いうか左脳の方をよく使わないといけない訳で、緻密に100%完璧でないとバグや 不具合だとなる世界とやっぱり雰囲気は違いました。 どのセッションも見ごたえがありましたが、「Flash大喜利」は特に見ごたえが ありました。 Flash Power Session 2004 サイト「レポート」のところで「セッ ション資料」が公開されていますので、参加できなかった方も 追体験可能です。 野中氏のActionScript解説もお見事でしたし、よしだゆたか氏の音声やカメラと の連携の作品にはとても刺激と可能性を感じました。リッチクライアントの本命 は、やっぱりFlash!!との感触を新たにしました。 感性に 直接 訴える のは動画(音・画像・映像を含む)ですね! 日頃 勉強させて頂いている 解説本の著者の方々とも名刺交換できましたし、 植木さんのサイン入り著作 注3)をじゃんけんで勝ち取りましたし、CATMANのTシ ャツもgetしてしまいました。CATMAN をその時はじめて知ったのは秘密です^^;; こんなすばらしい場を造りあげている関係者の方々に感謝感謝です。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ 動きのある Flash を Ruby で作る ──────────────────────────────────── Flashの .swf ファイルの構造は、公開されています。注4) 注5) そこで『 Ming 』という swf を生成してくれる library が公開されています。 注6)さらに『 Ming 』の日本語対応版 『 JaMing 』も公開されています。注7) このMingを使いこなすと、プログラミングの世界で Flash .swf ファイルが生成 できます。 この話題は、2003.04.03の「システムはオブジェクト指向、そしてRubyで(#009) 」注8)で1回取り上げています。また2004.08.25の本連載(#004)「メタ と ベタ そして blog と Wiki 」注9) で zphoto でも使われています。 MingをRubyで扱うライブラリ Ming/Rubyは池上さんが公開されています。注10) 池上さんは、昨年の関西オープンソース2003 でご一緒しましたが、Ming/Slide 注11)というプレゼンテーションスライドの作成を支援するツールも公開されて います。 前回 実写映像の世界を話題にしましたが、今回はインタラクティブ動画への進 展(受身で流される映像を見るのでなく、能動的に働きかける)を体験してみま しょう。 rubber(弾み玉) http://ns2.fsys.net/tubo/rubber/ これは、Fsysでバリバリやって 今は JAISTへ行った うえの君の作品です。 #!/usr/bin/ruby # # rubber.rb - An example of phisical simulation using Flash # # Copyright (C) UENO Katsuhiro 2003 # # | # --+---------------> # |\ # |-\ l x, y: position of the particle [m] # |A \ m: inertial mass of the particle [kg] # | \ l: length of the rubber at that time [m] # | O (x,y) T: tension of the rubber at that time [m] # | g: acceleration of gravity [m/s^2] # v L: natural length of the rubber [m] # k: stretchability of the rubber [N/m] # # m * d^2x/dt^2 = -TsinA = -T(x / l) # m * d^2y/dt^2 = mg - TcosA = mg - T(y / l) # T = (l < L) ? 0 : k(l - L) # # therefore, # when l < L then; # d^2x/dt^2 = 0 # d^2y/dt^2 = g # when l >= L then; # d^2x/dt^2 = -k(l-L)x / lm # d^2y/dt^2 = g - k(l-L)y / lm # # # # d^2x/dt^2 = -T(x / l)/m = -(T/l) * x / m # d^2y/dt^2 = g - T(y / l)/m = g - (T/l) * y / m # f(x,y) = T / l(x,y) # d^2x/dt^2 = -f(x,y) * x / m # d^2y/dt^2 = = g - f(x,y) * y / m # require 'ming/ming' Width = 320 Height = 320 movie = Ming::SWFMovie.new movie.set_dimension Width, Height movie.set_rate 20 : ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ まとめ ──────────────────────────────────── 今回は、Flashの動画(映像含む)は魅力的なコンテンツであることを再確認し これを Ruby で作るテーマにと掛かりました。 この分野は、リッチクライアントという切り口からのアプローチもありますが、 情報を直接的に伝え合うという大きなテーマでもあります。 『簡単』『お手軽』に『奥深い』ことができるツールをどんどん使いこなして 魅力的なコンテンツを創りだしてゆきたいものです。 リッチクライアントの関連の話題は、いろいろ盛り上がりますね。注12) 13) 今後の展開が楽しみです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ※ 注釈、資料、参考情報 ──────────────────────────────────── 注1) 続々 システムはオブジェクト指向 Ruby & Flash (#005) 「 オブジェクト指向の本質は、モデル化表現 」2004.09.8 http://www.melma.com/mag/02/m00020302/a00000805.html 注2) Flash Power Session 2004 http://www.flash-jp.com/fps2004/ 注3) ActionScript for FLASH MX 2004 http://www.amazon.co.jp/exec/obidos/ASIN/4798104620/qid%3D1095678299/249-0124841-1183570 注4) Flashファイルフォーマット http://www.macromedia.com/software/flash/open/licensing/fileformat/ 注5) Flash フォーマットの秘密 http://www.languagegame.org:8080/propella/42 注6) Ming - a SWF output library and PHP module http://ming.sourceforge.net/ 注7) JaMing - Mingの日本語対応版 - http://blue.ribbon.to/~harpy/ming/jaming/index.html 注8) 2003.04.03/システムはオブジェクト指向、そしてRubyで(#009) http://www.melma.com/mag/02/m00020302/a00000507.html 注9) 2004.08.25/メタ と ベタ そして blog と Wiki http://www.melma.com/mag/02/m00020302/a00000797.html 注10) Ming/Ruby http://madscientist.jp/~ikegami/ruby/ming/index.html 注11) Ming/Slide http://madscientist.jp/~ikegami/ruby/ming/slide/index-ja.html 注12)【導入段階を迎えたリッチクライアント(前編)】 J2EE Watch (4)(2004/9/4) http://www.atmarkit.co.jp/fjava/kaisetsu/j2eewatch04/j2eewatch04.html 注13) XMLでリッチクライアントを実現「Macromedia Flex」 http://www.atmarkit.co.jp/fjava/products/flex/flex.html 【近況】 関西オープンソース2004 が大阪産業創造館で10月22日(金)、23日(土)に開催さ れます。http://k-of.jp/ 日本Rubyの会では、発足してまだ日が浅いので、高橋会長(たのしいRuby、Ruby レシピブックの著者)より会の紹介を行う予定です。皆様どうぞお越し下さい。 【プロフィール】 福井 修 ( FUKUI Osamu ) o-fukui@po.iijnet.or.jp 福井システムリサーチ http://fsys.net/ 主幹。システム構築歴28年。 システム構築エキスパート 日本Linux協会、神戸商工会議所、情報処理学会、関西IT共同体 会員 関西ソーホ・デジタルコンテンツ事業協同組合 監事