ソースコードを3Dアニメ化 78
ストーリー by Oliver
マシンの中の小宇宙 部門より
マシンの中の小宇宙 部門より
ferrocyan 曰く、 "本家で見つけた話題です。ディレクトリ構造や関数・変数の依存関係を、3次元空間内の線分として表すことで、Linuxのソースコード開発を3Dアニメ化することに成功したそうです。さっそくリンクされているページを見に行きましたが、3D化されてよく分かるようになったとはちょっと… 分かる人には分かるんでしょうか。"
ferrocyan 曰く、 "本家で見つけた話題です。ディレクトリ構造や関数・変数の依存関係を、3次元空間内の線分として表すことで、Linuxのソースコード開発を3Dアニメ化することに成功したそうです。さっそくリンクされているページを見に行きましたが、3D化されてよく分かるようになったとはちょっと… 分かる人には分かるんでしょうか。"
UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア
これって・・・ (スコア:2, すばらしい洞察)
作り上げたヒドラコンピューターウイルスを連想するのは
私だけでしょうか?
#割と好きな映画なのでID
-------------------------------------
「早くアレゲになりた〜い」by エセあれげ人間
Re:これって・・・ (スコア:1)
昔作ったウィルスの隠し場所が大学のPDP-11(だったか?)てところで、何かマニアック。
でも、結構好き。DVDまで持ってるし。
XCruise (スコア:1)
思わず XCruise [titech.ac.jp]というプログラムを思い出してしまいました (^^;
ただそれだけなんだけど.
Re:XCruise (スコア:2, 参考になる)
ふぅ~む (スコア:1)
構造が複雑化してボリュームが増えているのはわかるんだけど、
確かに、いまいち「わかりやすい」という感じがないっぽい。
でも、巨大で複雑なコードをビジュアライズして見せるっていうこと自体が
無駄だとは思わないので、さらに良い視覚化のために頑張ってほしいですね。
この応用はLinuxのカーネルだけに限らず、もっと幅広い可能性がありますから。
Re:動作させてカーナビで診る (スコア:3, すばらしい洞察)
実際にコードを走らせて、活性化している
部分がピカッと光るようにして、見てみたいですね。
テストカバレッジに使えるかも(ずーっと暗いところが未テスト)
また、アーキテクチャ(PC)にマッピングして、
どのコードがどこのリソース(バス、プロセッサ、グラフィック等)
を食いつぶしているか見れたら、ボトルネックが
どこになってるか探すの楽。(バスが渋滞してるとか)
表示はSimCityみたいにして、カーナビをつかって空から見られる
ようにすれば、その土地(コード)に不慣れな人でも迷わない
「ポーン。300行先を右折するとgettyです。」とか
Re:動作させてカーナビで診る (スコア:3, 参考になる)
解析なんかでもよく使われます。>トラックのビジュアル解析
要は実際のデータ/人/アクセスのフローをビジュアルに
描画してみることで利用頻度が高いパスが浮き上がるので、
その部分を短縮化・最適化してやろう、っていう話ですが
応用範囲は広いですね。
単に案内するだけでなくて、高頻度に実行されるパスだけを
表示する intelligent outline モードみたいにできると
ソース読むときかなりうれしいかも。
Re:動作させてカーナビで診る (スコア:1)
# 五感に訴えるつながりって事で
Re:動作させてカーナビで診る (スコア:1)
空間的にモジュールを継剥ぎすることでプログラミングなんてのも ありかも。
「えーい、依存関係が多すぎて切り離せやしない」
なんてのが一目でわかるだろうな。
の
Re:動作させてカーナビで診る (スコア:2, おもしろおかしい)
3Dゴーグルとデータグローブつけて
何人かで空間を共有して力をあわせて
デバッグとか。
「おーい。そっちのコードのpに3をforceしてみて」とか
傍からみると怪しい舞踏集団にみえる?^^;
Re:動作させてカーナビで診る (スコア:1)
データの行き来も、見えるとデバッグも楽になるでしょうね。
手元のソース書き換えると、データの流れが変わって見えて、
あ、ここで詰まっているみたいな...
Re:動作させてカーナビで診る (スコア:0)
>実際にコードを走らせて、活性化している
>部分がピカッと光るようにして、見てみたいですね。
>テストカバレッジに使えるかも(ずーっと暗いところが未テスト)
デバッグにビジュアル的なイメージが使えれば解り易いんですよね。
方向オンチはプログラマになれない? (スコア:0)
ソースの依存関係が複雑になってくると、3次元空間では足りなくなって、4次元以上の方向感覚が必要とされるとか。
Re:方向オンチはプログラマになれない? (スコア:2, 興味深い)
人間が3次元空間を見るという想定で「ファイル名」を座標に変換しようとすると、
1つの軸を表現する分解能として細かすぎない所を狙うには、
せいぜい2byte(65536段)くらいで1軸ってことになっちゃうんじゃないかな。
つまり(リニアにやればの話だが)6文字かそこらで3Dビジュアル的にはお腹一杯になっちゃう。
そう思うと、何十文字だろうが容易に識別できる(注:識別と暗記は別ですが)
文字列、というかその文字列を読む人間様の能力というか、は、たいしたもんだなと思います。
そして、パス名やら何やら(プログラム言語の中身とかも)で「文字列」を全面的に採用した
先人の知恵というか人体への最適化というか(笑)っぷりが、なんか凄いなあと。
数学的には、例えば6文字(笑)と3次元画面(?)とは等価だ、と言えてしまうわけですが、
表現形態しだいで、人間の目には斯様に、色々なものが見え易くなったり見えにくくなったりするんですね。
当然ですが文字列のほうが向いてる面もあれば3Dのほうが向いてる面も有るわけで。
3Dで判った気になれないのは、いつも「文字列というメディアを経由して理解する」ことに慣れてるからでしょうね。
与えられた情報のうちどの面が脳に理解されやすいか、が文字列と3Dでは違っていて、
文字列を使った際の理解されパターンに、我々は慣れてるでしょうから。
#一番いいのは、Borlandが言う「2way開発」みたいに、1つの情報を色んな形態でアクセスできるようにすること、なんだろうな。
#流行語(?)でいえばMVCってわけだ。
文字列そのものの3D図での復権 (スコア:1)
ノード間を「線分」でつなぐのではなく、「モジュール名を構成する文字を構成する線分」(←一画二画の画のことです)の一部が別のモジュール名を構成する文字を構成する線分に直接繋がっているというのはどうだろうか。
FILE_______________________XFS
みたいな感じ。"E"と"_"と、"_"と"X"とは本当は繋がっているわけ(崩し字とかサインみたいな感じ)。それでもってフォントサイズで階層性を表す、とか。
モジュール名がそこそこ長ければ、そして装飾性が高いフォントを自動選択させれば、四方八方(+前後)に腕を伸ばせてなんとかなりそうだけど。
Re:文字列間の納豆のような張力 (スコア:2, 興味深い)
モジュール名が吹っ飛んできて、、
そんでそのときに、それぞれの
文字が納豆みたいに糸でつながってて、
情報の依存関係で張力が異なる感じ?
そんで
タスク分割するとき、タスク間の情報のやり取りが
多いときはたくさん糸を引いて、引き離すのに
力がいるとか。。
Re:文字列間の納豆のような張力 (スコア:1)
# 代書屋ってPOBOXのアニメーション版だなぁ。
3次元空間を使った可視化という線は外したくないです。糸を引いているのは確にそういうイメージ。
3次元なので情報量制御はピンぼけでしたいなぁ。マウスで指定する度に、あるいはincremental searchでヒットする度にピントが合っていくと。
(名付けてシュレディンガーの文字列)
> タスク分割するとき、タスク間の情報のやり取りが
> 多いときはたくさん糸を引いて、引き離すのに
> 力がいるとか。
こういうのだと僕は所先生の計算場理論を思い出す。
Re:プログラマになるための資質 (スコア:0)
経路探索能力とか。
Re:方向オンチはプログラマになれない? (スコア:0)
Re:ふぅ~む (スコア:2, 興味深い)
ん。これって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出来るツールが有るならば、ユーザーが見たい位置まで移動すれば良いだけだから。
#で、移動式ガベコレが動くと、オブジェクト群が一斉に「席換えゲーム」しちゃってワケワカになる罠
Re:ふぅ~む (スコア:1)
TouchGraph [sourceforge.net]のWikiBrowser [touchgraph.com]なんてどう?
trueOne
Re:生dotty? (スコア:1)
何でだったかすっかり忘れちゃったんですが、
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に
持っていくのも楽だった記憶が。。
Re:生dotty? (スコア:1)
ただ、指定しちゃうなら、GraphVizを使う価値って、あんまり無いような気がするんですよ。
あの良くも悪くも(笑)自動的に位置を決めてくれるのが真骨頂だろうなと思う。
かといって手動(?)で位置決めをするのは、素人(笑)にはなかなか難しい。
で、そこで3Dという話が絡むのだと思います。
手動で2Dの絵で「見易いような」位置決めをするのって、素人(笑)には至難の業だと思います。
が、これが3Dになると、俄然楽になるんじゃないかなと思うので。
線とか点とか同士が干渉して見辛くなることを、3Dだとそもそもあんまり心配しなくていいですし、
もし線が密集して見辛い部分が出来ちゃっても、WalkThruが出来るならば、ユーザーの目のほうに
見易い位置まで移動してもらえば済みますから。
余談:
SpaceBall [indyzone.co.jp]みたいな3Dを考慮したInput(?)Deviceが有ると無いとでは、仮想3D空間を扱うのの楽さは、雲泥の差ですね。
Re:生dotty? (スコア:1)
経験から言うと、2D表示でわかりにくいグラフは、3Dにしてもわかり
にくい(わかりやすい3D配置にするのが難しい)事が多い。
例えば、2Dで辺が交差しない完全グラフは頂点数3まで。これを
3Dにしたところで、頂点数は4にしか増えません。また、この
3Dグラフを2Dディスプレイで見れば、やはり辺は交差して表示
されます。結局、見せる情報の量や種類を対話的に指示する、という形に
落ち着くようです。
Graph Drawing [gd2003.org]の過去の文献を漁ると面白いでしょう。(あ、GD2003ってイタリアだ…論文出そうかな…)
Re:ふぅ~む (スコア:1)
>氏が人を煙にまこうとしておられるのか、という点についてだけ
>注意すれば良いのです。
なんで「俺(が煙にまこうとしてること)の意図」「だけ」を注目しろという話になるんです?
書いてある内容そのものには注意する必要が無いの?
#そもそも煙にまこうという意図とやらの実在をどうやって確認してるのかすら謎ですが。
>#もう少し話題を絞ればいいのになと、思うのですが。
と書くからには、内容が無い(よって内容を読む必要がない)と言いたいわけじゃないはずですよね?
にも関わらず内容に注意する必要が無いと主張されるのは、一体どういうことで?
よく意図(笑)が判らない主張ですね。
Re:ふぅ~む (スコア:1)
>「一つの文章に話題を詰め込みすぎると読み手に意図が伝わらんよ」ってことかと。
べつに意図を伝えようとしてるわけじゃない(ことも多い)んで、構いませんが、何か?
ええ。そういうときは多分、「話題を」伝えたいんです。
話題提供って奴ね。
提供しといたから後はキミたちで自由に食べてちょ。
べつにこっちから色をつけようって「意図」は無いよ、…って感じ。
むしろ話題提供ごとき(笑)に1話題ごとに1投稿を浪費するのも、アホでしょ?
適当に切り刻んで部品取りしていってくださいませ。はい。
>より多くの人に理解できる文章をお願いしたいなと(もちろん強制じゃないですが)
普通(笑)のレスもついてるところを見ると、受け取れる人間には受け取れたようだから別に問題もないなぁと思うのでG7
だいたい、「多くの」人間を狙ってもしょーがないでしょ。
大衆受けを狙ってピン惚けしたWindowsみたいな代物になれとでも?このOpenSource万歳のスラドで?
#でも、そういやたしかに、ありきたりな眠い話も多いもんね、スラド(T_T)
Re:ふぅ~む (スコア:0)
ビジュアライズだと一度DVIにしてから見るTeXと同じだけど、
時代はWYSIWYGに進んでるよね。
一歩進んでそのまま編集できないかな。
# Linux Kernelで採用されるかとか関係なくて。
# a-kernel [cs.ubc.ca]みたいに実験的にやっても面白いけど。
Re:3D Emacs (スコア:2, おもしろおかしい)
移動は、
右C-f,左C-b,
後進C-n,前進C-p,
上C-u,下C-d。。。
空間分割C-x2 ?
Re:3D Emacs (スコア:1)
#それ以前に、Emacs3Dで泳ぐ対象であるところの「テキスト」というフォーマットの古さをどうにかしないとならんと思うので、G7
Re:3Dテキスト (スコア:1)
そんでもって
テキストに「プスッ」と旗をたててブレークポイントとか。
c-tagsでジャンプすると、びゅーっとワープするとか
#レトロずき
Re:3D Emacs (スコア:1)
でしょうか?編集中に3Dで表現されたDとか&に出会っちゃいそうな感じですが。
#変数"Elbereth"だらけのソースコードになりそうな。
進んでる? (スコア:0)
WYSIWYGのほうが「進んでる」とは思わない。
WYSIWYGのほうが適切な場面もあるけど。
今回だと、ビジュアライズされたソースのことをソースそのものだと勘違いする人
Re:進んでる? (スコア:2, 参考になる)
出力ないし最終形態ですよね。例えば文書の場合は印刷物かPDFの類。
で、プログラムの場合は、利用者は何をgetするの?
という観点に立つと、たとえどれほど高度なVisual Languageで開発
したところで、WYSIWYGではありません。プログラムのWYSIWYGという
意味では、インターフェースビルダがややWYSIWYG的かな、ぐらいでしょう。
多分貴方が言わんとしているのは、Visual Languageの事だと思います。
Max/DSPやPure Data [pure-data.org]、
今ではどこへ行った感のあるインテリジェントパッド [pads.or.jp]。
いろいろあるけど、Maxの普及率を越すものがないっつーのが…
ついでに・・・ (スコア:1)
UIを開発して欲しい。あれはかっこいいと思った。
そのUI+このビューアで・・・プログラマも筋肉が
いる職業となるでしょう。
-- gonta --
"May Macintosh be with you"
Re:文字どおり (スコア:1, おもしろおかしい)
# IT力士
ネットワークとかにも (スコア:1)
あとはWEBサイトの内部構造とか、意外に応用範囲は広そうな
Re:ネットワークとかにも (スコア:2, 興味深い)
Galactica Proxy [asahi-net.or.jp]
-May the sakura-cards be with you.-
Re:ネットワークとかにも (スコア:1)
ネット上のマシン構成を表示するツールがあった
ような気がします。
プロバイダの上流の経路図であれば、impressの
インターネットマガジンの終わりについていま
したよね。
-- gonta --
"May Macintosh be with you"
Re:ネットワークとかにも (スコア:1)
Re:ネットワークとかにも (スコア:2, 参考になる)
Cyber-Geography Research [cybergeography.org]
ここで紹介されている「Atlas of Cyberspaces」とうい本はお勧めです。
デカくて重くて読むのが大変ですが眺めているだけでも面白い。
アニメじゃない? (スコア:1)
#ほんとのことなのでG7
攻殻機動隊? (スコア:1)
っていうか実際ああいうイメージなのかなぁ?<攻殻
#誰も言い出さないのであえて言ってみる(w
書痴の森へようこそ。
Re:攻殻機動隊? (スコア:1)
--- ほしみ
Re:攻殻機動隊? (スコア:1)
前者は"MAN MACHINE INTERFACE"だし
後者は呪術的言語の視覚化だなぁ。
書痴の森へようこそ。
VJ (スコア:1)
azitt is not an agitator ;-)
しまった (スコア:1)
バーチャル ガール (スコア:0)
よくでてくるものですから、各自みなさん
色々な作品が思い当たると思うんですが
個人的にはヴァーチャル・ガール [google.co.jp]で
主人公のマギーが自分自身をmake worldしているシーンを連想しました。
# 表紙に惹かれただけなのでAC
Re:(余計なもの) Re:バーチャル ガール (スコア:1)
http://www.ltokyo.com/ohmori/henkyo/vol03.html
http://www.ltokyo.com/ohmori/henkyo/vol03-3.html
とりあえず (スコア:0)
普通のテキスト文字の分布を同じようにするだけで良さそうな気がする
Re:それは・・・、 (スコア:1)
第二ファウンデーションのやってたのは、従来通りソースを読んでのハック(の延長。ないしその結果のプレゼンテーション)で、今回のこれは最終作に出てきた奴かなあ、と思いました。
見てどうする(どうにかできる)というのではなく、ただ見てるだけな感じ。