パスワードを忘れた? アカウント作成
5204 story

ソースコードを3Dアニメ化 78

ストーリー by Oliver
マシンの中の小宇宙 部門より

ferrocyan 曰く、 "本家で見つけた話題です。ディレクトリ構造や関数・変数の依存関係を、3次元空間内の線分として表すことで、Linuxのソースコード開発を3Dアニメ化することに成功したそうです。さっそくリンクされているページを見に行きましたが、3D化されてよく分かるようになったとはちょっと… 分かる人には分かるんでしょうか。"

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • これって・・・ (スコア:2, すばらしい洞察)

    by asmodeus_mt (11308) on 2003年03月09日 11時54分 (#275420) ホームページ 日記
    映画「Swordfish」でヒュー・ジャックマン扮するハッカーが
    作り上げたヒドラコンピューターウイルスを連想するのは
    私だけでしょうか?

    #割と好きな映画なのでID
    --

    -------------------------------------
    「早くアレゲになりた〜い」by エセあれげ人間
    • by deleted user (13818) on 2003年03月09日 12時29分 (#275427)
      映画だけに、ビジュアル重視、無茶設定というところで、なんだかなーでしたが、
      昔作ったウィルスの隠し場所が大学のPDP-11(だったか?)てところで、何かマニアック。

      でも、結構好き。DVDまで持ってるし。
      親コメント
  • 思わず XCruise [titech.ac.jp]というプログラムを思い出してしまいました (^^;

    ただそれだけなんだけど.

  • by cyber205 (4374) on 2003年03月09日 10時39分 (#275409) ホームページ 日記
    xcruiseみたいなもんなのかなぁ。
    構造が複雑化してボリュームが増えているのはわかるんだけど、
    確かに、いまいち「わかりやすい」という感じがないっぽい。

    でも、巨大で複雑なコードをビジュアライズして見せるっていうこと自体が
    無駄だとは思わないので、さらに良い視覚化のために頑張ってほしいですね。

    この応用はLinuxのカーネルだけに限らず、もっと幅広い可能性がありますから。
    • by sameshima (10060) on 2003年03月09日 11時06分 (#275412) 日記
      こういうの好きです。
      実際にコードを走らせて、活性化している
      部分がピカッと光るようにして、見てみたいですね。
      テストカバレッジに使えるかも(ずーっと暗いところが未テスト)

      また、アーキテクチャ(PC)にマッピングして、
      どのコードがどこのリソース(バス、プロセッサ、グラフィック等)
      を食いつぶしているか見れたら、ボトルネックが
      どこになってるか探すの楽。(バスが渋滞してるとか)

      表示はSimCityみたいにして、カーナビをつかって空から見られる
      ようにすれば、その土地(コード)に不慣れな人でも迷わない

      「ポーン。300行先を右折するとgettyです。」とか
      親コメント
      • by tyamadajp (10476) on 2003年03月09日 13時36分 (#275455) ホームページ
        元々は建築関係からきたアイディアですが、ウェブのアクセス
        解析なんかでもよく使われます。>トラックのビジュアル解析

        要は実際のデータ/人/アクセスのフローをビジュアルに
        描画してみることで利用頻度が高いパスが浮き上がるので、
        その部分を短縮化・最適化してやろう、っていう話ですが
        応用範囲は広いですね。

        単に案内するだけでなくて、高頻度に実行されるパスだけを
        表示する intelligent outline モードみたいにできると
        ソース読むときかなりうれしいかも。
        親コメント
      • サイバーパンクなイメージですね。
        空間的にモジュールを継剥ぎすることでプログラミングなんてのも ありかも。

        「えーい、依存関係が多すぎて切り離せやしない」

        なんてのが一目でわかるだろうな。

        --
        親コメント
        • by sameshima (10060) on 2003年03月09日 11時44分 (#275416) 日記
          >間的にモジュールを継剥ぎすることでプログラミングなんてのも ありかも。

          3Dゴーグルとデータグローブつけて
          何人かで空間を共有して力をあわせて
          デバッグとか。
          「おーい。そっちのコードのpに3をforceしてみて」とか

          傍からみると怪しい舞踏集団にみえる?^^;
          親コメント
        • 確かにリアルタイムで、変化が見られると面白いかも。
          データの行き来も、見えるとデバッグも楽になるでしょうね。

          手元のソース書き換えると、データの流れが変わって見えて、
          あ、ここで詰まっているみたいな...
          親コメント
      • >こういうの好きです。
        >実際にコードを走らせて、活性化している
        >部分がピカッと光るようにして、見てみたいですね。
        >テストカバレッジに使えるかも(ずーっと暗いところが未テスト)
        デバッグにビジュアル的なイメージが使えれば解り易いんですよね。
      • これからは、プログラマになるための資質として、方向感覚が必要になってくるかもしれないですね。

        ソースの依存関係が複雑になってくると、3次元空間では足りなくなって、4次元以上の方向感覚が必要とされるとか。

        • by G7 (3009) on 2003年03月09日 14時55分 (#275478)
          XCluiseはたしか、ファイル(path)名の文字列をもとにして座標を決定してるんでしたよね。

          人間が3次元空間を見るという想定で「ファイル名」を座標に変換しようとすると、
          1つの軸を表現する分解能として細かすぎない所を狙うには、
          せいぜい2byte(65536段)くらいで1軸ってことになっちゃうんじゃないかな。
          つまり(リニアにやればの話だが)6文字かそこらで3Dビジュアル的にはお腹一杯になっちゃう。

          そう思うと、何十文字だろうが容易に識別できる(注:識別と暗記は別ですが)
          文字列、というかその文字列を読む人間様の能力というか、は、たいしたもんだなと思います。

          そして、パス名やら何やら(プログラム言語の中身とかも)で「文字列」を全面的に採用した
          先人の知恵というか人体への最適化というか(笑)っぷりが、なんか凄いなあと。

          数学的には、例えば6文字(笑)と3次元画面(?)とは等価だ、と言えてしまうわけですが、
          表現形態しだいで、人間の目には斯様に、色々なものが見え易くなったり見えにくくなったりするんですね。
          当然ですが文字列のほうが向いてる面もあれば3Dのほうが向いてる面も有るわけで。

          3Dで判った気になれないのは、いつも「文字列というメディアを経由して理解する」ことに慣れてるからでしょうね。
          与えられた情報のうちどの面が脳に理解されやすいか、が文字列と3Dでは違っていて、
          文字列を使った際の理解されパターンに、我々は慣れてるでしょうから。

          #一番いいのは、Borlandが言う「2way開発」みたいに、1つの情報を色んな形態でアクセスできるようにすること、なんだろうな。
          #流行語(?)でいえばMVCってわけだ。
          親コメント
          • スレッド元の視覚化形式は線分と雲があるだけで、文字列もアイコンも出てこない(文字列は補助として出てくるだけ)ので情報量が少ないという気がします。

            ノード間を「線分」でつなぐのではなく、「モジュール名を構成する文字を構成する線分」(←一画二画の画のことです)の一部が別のモジュール名を構成する文字を構成する線分に直接繋がっているというのはどうだろうか。


            FILE_______________________XFS


            みたいな感じ。"E"と"_"と、"_"と"X"とは本当は繋がっているわけ(崩し字とかサインみたいな感じ)。それでもってフォントサイズで階層性を表す、とか。

            モジュール名がそこそこ長ければ、そして装飾性が高いフォントを自動選択させれば、四方八方(+前後)に腕を伸ばせてなんとかなりそうだけど。

            親コメント
            • by sameshima (10060) on 2003年03月10日 0時53分 (#275676) 日記
              dasher [cam.ac.uk]みたいな感じで、
              モジュール名が吹っ飛んできて、、
              そんでそのときに、それぞれの
              文字が納豆みたいに糸でつながってて、
              情報の依存関係で張力が異なる感じ?
              そんで
              タスク分割するとき、タスク間の情報のやり取りが
              多いときはたくさん糸を引いて、引き離すのに
              力がいるとか。。
              親コメント
              • dasherは知りませんでしたが、うーん、似ているような似てないような。
                # 代書屋ってPOBOXのアニメーション版だなぁ。

                3次元空間を使った可視化という線は外したくないです。糸を引いているのは確にそういうイメージ。
                3次元なので情報量制御はピンぼけでしたいなぁ。マウスで指定する度に、あるいはincremental searchでヒットする度にピントが合っていくと。
                (名付けてシュレディンガーの文字列)

                > タスク分割するとき、タスク間の情報のやり取りが
                > 多いときはたくさん糸を引いて、引き離すのに
                > 力がいるとか。
                こういうのだと僕は所先生の計算場理論を思い出す。
                親コメント
        • タクシーの運転手さんのような
          経路探索能力とか。

        • 地図が読めないのもだめだけど、相手の話を聞かないのもだめだよね?
    • Re:ふぅ~む (スコア:2, 興味深い)

      by G7 (3009) on 2003年03月09日 15時24分 (#275488)
      確かに、依存関係の線を引いてるって点を除けば、xcruiseっすね。
      ん。これってWikiのWikiName相関図でも同じことをやりたいかも。

      あと時系列で図の変化を表示する奴もかっこいいですね。遠くから飛来するように見える奴は新規機能を意味するのかな?

      ところで、似ているようで似ていないようでな物として、GraphVizが有りますね。
      あれはレイアウトは値(名称とか)に拠らず適当に配置しちゃうんだっけか。あと2Dだし。
      でも関連の一目瞭然を狙ったという意味では、近いものなのかも。

      ソフトウェア開発つながりとしては、超チャチ(未完成だし)な手前味噌でアレなんですが、
      http://member.nifty.ne.jp/guion/SOFT/#iwata なんてのをやってみたことが有ります。
      本題はオリジナルなプログラム言語の試作なんですが、本題はどうでも良くて(笑)、
      おまけ機能というか自分で欲しくなったこの言語用のデバッグ機能として、
      ブレークポイント(?)ごとに Object間の関連を(GraphVizフォーマットで)吐き出す
      という仕掛を実装してあるってのが、今回言いたいことでし。
      ブレークポイントを通過するたびにGraphVizファイルを連番ファイル名で生成しますので、
      Scriptを組み合わせて絵(pngとか)を起こすところまで自動化すれば
      曲りなりにも「Objectの関連の遷移をパラパラ漫画」してみることが出来るはず。

      #なまじまともなParseをせずForthみたいにひたすらソースの頭から実行する言語であり、
      #そのせいで「任意の」単語の間において全Objectの状態を定義できる(つーかそのまんまメモリ上に実在している)ので、
      #ブレークポイントは「任意の」単語の間に置く事が出来るようになっています。
      #単なる区切り記号の";"を通過するだけでも状態が変化します。
      #もちろん";"の前後にブレークポイントを置けば変化がGraphVizで見れます。なんだかなあ…

      で、これもGraphVizじゃなく3Dでやったら面白いのかも。

      というかGraphVizだと、なまじレイアウトが自動化されてるため、1つのObjectが
      時系列で常に同じ位置に表示される保証が無く、却って見づらいという面も有ります。
      XCruise方式のほうが幸せだったのかも?

      GraphVizがそうであるように、3D表示も、表示(やWalkThru)そのものを丸投げできるツールが
      有るといいなぁと思う他力本願なのでG7。

      ん?待てよ?GraphVizみたいな座標決定の自動化を諦めて、
      XCruiseみたいに元データから座標をでっち上げる(Objectのアドレスとかから)ようにすれば、
      ふつうの3Dグラフ表示ツール(色々あるよね)に食わせられるデータを作るのは、そう困難じゃない、かも?

      ん。今主流の32bitアドレスだと、Objectアドレスのうち有効に使うのはだいたい上位30bitくらいだから、
      これを10bit(1024段)ごとに3軸に振り分けるといいかも。解像度が1000くらいってのも丁度良い感じだし。
      上から順に10bitづつで分けちゃうと多くのObjectが一直線に並んじゃいそうだから、
      bit番号を3で割った余りで3軸に振り分けるくらいが良いかなー
      まあ同じことは64bitでもやって良いだろうな。20bitづつになっちゃって大変だけど、
      WalkThru出来るツールが有るならば、ユーザーが見たい位置まで移動すれば良いだけだから。

      #で、移動式ガベコレが動くと、オブジェクト群が一斉に「席換えゲーム」しちゃってワケワカになる罠
      親コメント
      • by trueOne (134) on 2003年03月09日 17時25分 (#275529)
        これってWikiのWikiName相関図でも同じことをやりたいかも。

        TouchGraph [sourceforge.net]のWikiBrowser [touchgraph.com]なんてどう?

        --
        trueOne
        親コメント
      • by sameshima (10060) on 2003年03月09日 18時20分 (#275544) 日記
        >GraphVizだと、なまじレイアウトが自動化されてるため、1つのObjectが

        何でだったかすっかり忘れちゃったんですが、
        digraph test {
        graph [rankdir=LR];
        node [label="\N"];
        graph [bb="0,0,400,200"];
        node2 [label=HOHOHO, color=green, shape=box, style=filled, pos="100,100", width="1", height="1"];
        }
        みたいのをdottyに食わせるて場所指定してました
        この形式で出しとくと、確か「↑」のTouchGraphに
        持っていくのも楽だった記憶が。。
        親コメント
        • by G7 (3009) on 2003年03月09日 21時07分 (#275585)
          いや、GraphVizには座標「も」指定する機能が有るのは存じてます。

          ただ、指定しちゃうなら、GraphVizを使う価値って、あんまり無いような気がするんですよ。
          あの良くも悪くも(笑)自動的に位置を決めてくれるのが真骨頂だろうなと思う。

          かといって手動(?)で位置決めをするのは、素人(笑)にはなかなか難しい。

          で、そこで3Dという話が絡むのだと思います。
          手動で2Dの絵で「見易いような」位置決めをするのって、素人(笑)には至難の業だと思います。
          が、これが3Dになると、俄然楽になるんじゃないかなと思うので。

          線とか点とか同士が干渉して見辛くなることを、3Dだとそもそもあんまり心配しなくていいですし、
          もし線が密集して見辛い部分が出来ちゃっても、WalkThruが出来るならば、ユーザーの目のほうに
          見易い位置まで移動してもらえば済みますから。

          余談:
          SpaceBall [indyzone.co.jp]みたいな3Dを考慮したInput(?)Deviceが有ると無いとでは、仮想3D空間を扱うのの楽さは、雲泥の差ですね。
          親コメント
          • by oltio (3848) on 2003年03月09日 23時24分 (#275624) 日記
            グラフ配置最適化(あるいはGraph Drawing)でちょこっと苦労してきた
            経験から言うと、2D表示でわかりにくいグラフは、3Dにしてもわかり
            にくい(わかりやすい3D配置にするのが難しい)事が多い。
            例えば、2Dで辺が交差しない完全グラフは頂点数3まで。これを
            3Dにしたところで、頂点数は4にしか増えません。また、この
            3Dグラフを2Dディスプレイで見れば、やはり辺は交差して表示
            されます。結局、見せる情報の量や種類を対話的に指示する、という形に
            落ち着くようです。
            Graph Drawing [gd2003.org]の過去の文献を漁ると面白いでしょう。(あ、GD2003ってイタリアだ…論文出そうかな…)
            親コメント
    • by Anonymous Coward
      > でも、巨大で複雑なコードをビジュアライズして見せるっていうこと自体が

      ビジュアライズだと一度DVIにしてから見るTeXと同じだけど、
      時代はWYSIWYGに進んでるよね。

      一歩進んでそのまま編集できないかな。
      # Linux Kernelで採用されるかとか関係なくて。
      # a-kernel [cs.ubc.ca]みたいに実験的にやっても面白いけど。
      • Re:3D Emacs (スコア:2, おもしろおかしい)

        by sameshima (10060) on 2003年03月09日 12時54分 (#275440) 日記
        Emacsを3D化
        移動は、
        右C-f,左C-b,
        後進C-n,前進C-p,
        上C-u,下C-d。。。

        空間分割C-x2 ?
        親コメント
      • by Anonymous Coward

        ビジュアライズだと一度DVIにしてから見るTeXと同じだけど、 時代はWYSIWYGに進んでるよね。

        WYSIWYGのほうが「進んでる」とは思わない。
        WYSIWYGのほうが適切な場面あるけど。

        今回だと、ビジュアライズされたソースのことをソースそのものだと勘違いする人

  • by gonta (11642) on 2003年03月09日 13時01分 (#275442) 日記
    映画「マイノリティーリポート」で出てきたような
    UIを開発して欲しい。あれはかっこいいと思った。

    そのUI+このビューアで・・・プログラマも筋肉が
    いる職業となるでしょう。
    --
    -- gonta --
    "May Macintosh be with you"
  • by YF19 (12943) on 2003年03月09日 14時08分 (#275466) 日記
    プログラムの構造もそだけど、ネットワークの経路でも同じように表示してくれると便利かもしれず

    あとはWEBサイトの内部構造とか、意外に応用範囲は広そうな
  • by G7 (3009) on 2003年03月09日 15時31分 (#275494)
    トピック(っていうんだったよね)は、「アニメ」じゃないんですね…

    #ほんとのことなのでG7
  • コミック2巻の方ね。
    っていうか実際ああいうイメージなのかなぁ?<攻殻

    #誰も言い出さないのであえて言ってみる(w
    --
    書痴の森へようこそ。
  • by azitt (13075) on 2003年03月10日 12時37分 (#275827)
    音つけてプレイするヤシとかいないのかな。 今週末にでも、使おうと思っているのだが。 著作権はGPL?
    --
    azitt is not an agitator ;-)
  • by hiroko (11146) on 2003年03月11日 12時54分 (#276344) ホームページ 日記
    しまった、先を越されたか。。ワタシこういうの作ろうと思ってたのに。。
  • by Anonymous Coward on 2003年03月09日 12時20分 (#275426)
    こういうのはSFではお約束な描写として
    よくでてくるものですから、各自みなさん
    色々な作品が思い当たると思うんですが

    個人的にはヴァーチャル・ガール [google.co.jp]で
    主人公のマギーが自分自身をmake worldしているシーンを連想しました。

    # 表紙に惹かれただけなのでAC
  • by Anonymous Coward on 2003年03月09日 12時33分 (#275429)
    スクリーンセーバーにするのがいいじゃないかな
    普通のテキスト文字の分布を同じようにするだけで良さそうな気がする
typodupeerror

ソースを見ろ -- ある4桁UID

読み込み中...