近年ではコンピューターの進化や普及にともない、ソフトウェアで機能を実現する製品が増えた。
ソフトウェアはますます大規模にそして複雑化している。
ソフトウェアの開発で扱う情報量は膨大になり、紙やディスプレイなどの二次元平面で
表示できる限界を超えてしまうほどだ。
では、三次元空間でソフトウェア構造を可視化できたら?
「日立ソーシャルイノベーションフォーラム2019」での展示でも大きく注目された
「大規模で複雑なソフトウェアの構造をVR空間で可視化する技術」。
それはどのように発想され、開発されていったか?
日立製作所 研究開発グループ 主任研究員 川上真澄と企画員 堀 旭宏に話を聞いた。

「直接見たほうがわかりやすい」からスタート

川上:「VR=Virtual Reality/バーチャルリアリティ」は、「表面的には現実ではないが、本質的には現実」という、人工的につくられた空間で現実のような体験ができる技術やその機器をさします。今回の「大規模で複雑なソフトウェアの構造をVR空間で可視化する技術(以下、ソフトウェアVR可視化技術)」は、ソフトウェア構造・内部を平面ではなく立体的に視覚化して理解を支援する技術です。

堀:我々が開発したVR空間には、「円筒で階層化した建築物をイメージした空間」に、「部屋」がいくつもあり、部屋の中に「物体(オブジェクト=関数)」が見えるつくりになっています。

画像: 円筒形で階層化した建築物をイメージしたVR空間図。赤、青、緑で示されたのが「部屋(関数のまとまり)」だ。

円筒形で階層化した建築物をイメージしたVR空間図。赤、青、緑で示されたのが「部屋(関数のまとまり)」だ。

川上:今回の「ソフトウェアVR可視化技術」は、「イニシアティブ・イノベーション・ファンド」というアイデアコンテストに堀さんのアイデアを応募したのがきっかけで、「面白そうだから実際につくって動くところを見たい」という研究所内での強い後押しもあり開発がスタートしました。

画像1: 「直接見たほうがわかりやすい」からスタート

堀:VRでソースコードを可視化したら面白いに違いない、そう直感していました。以前にソフトウェア構造を二次元平面で表示してみたときにはゴチャゴチャしてまったく読めなかった。それを最近注目されているVRでトライできないかというのが、発想の始まりなんです。

川上:日々の業務では、日立製作所の事業部門から「ソフトウェア開発に関する問題を解決したい」という依頼に対して、堀さんをはじめチームのメンバーがソースコード解析を行うことがよくあります。ただし、そのままでは複雑すぎて何もわからない状況に陥りがちで、元のソフトウェアの情報を理解して整理したり、情報を減らしたりしながら、ようやく分析可能な形になります。「ソースコードをVRでそのまま再現すれば、VR空間に入って直接見てもらえるし、人間の認識力と直観を生かしたほうが早い」という考えが背景としてはありました。

堀:VRを使う大きな利点はふたつあります。まず誰もが“没入”できるので、その世界に自分が入りこんでしまったかのように見える点です。そしてもう1点が、その世界のなかを自由に飛び回れるということですね。

画像: VRコントローラーでターゲットオブジェクトを選択すると、空間にその関数の詳細が浮かぶ例。

VRコントローラーでターゲットオブジェクトを選択すると、空間にその関数の詳細が浮かぶ例。

川上:現実空間と違って仮想空間ですから、頭を動かしたり歩いたりする動作で、視点を自由に変えたり移動することができます。見るものを自由に決めることができるので、ソースコードの可視化に向いていると考えています。

堀:たとえば自動車や部品パーツなど固体として存在するものであれば実物が見られますが、論理的構造であるソフトウェアの実物は見られない。そのため、複数の人間が同じソフトウェアの構造を想像するとき、それぞれの思い描く姿はおそらく違ってきます。そこで、VR空間で可視化して全員で同じものを見れば、意識合わせなどもできるというメリットも生まれます。

画像2: 「直接見たほうがわかりやすい」からスタート

「世の中に存在しない表現」を生み出すアプローチ

堀:VRによるソースコード可視化を提案したのが2018年8月。9月には企画が通過し、10月頃から仮想空間のデザインに関する議論を始めました。

川上:デザインについては、研究開発グループの社会イノベーション協創センタに属するデザイナーの協力を得ながら「どういう表現にするか」の議論を重ねました。その時点では世の中に存在しない表現ですから、検討したデザインに実際のデータを当てはめて検証しないとわからないことも多くありました。少しつくっては実際にデータを表示して、「これだと見えづらい」「こうやれば、こういう目的には使いやすい」といった確認をする、そんなトライ&エラーを積み重ねてデザインをまとめ、最終的に創り出した空間が円筒形をベースとしたものになりました。

堀:当初は集合住宅のようなビル状の箱を検討していました。つまり、正六面体の立体パズルのように直角にソフトウェアの部屋を並べようと考えていましたが、直角に部屋を並べていくと個々の部屋を結ぶ線が同じ方向に重なってしまうんです。

川上:その重なりをいかに抑えるかを考え、さらにスタート地点で全容が一気に見えるほうがよりわかりやすいという結論に至り、円筒状のデザインに落ち着きました。全体が円筒であれば、ソフトウェアの部屋を結ぶ線の方向が変わり、重なりにバラつきが出ます。つまり同方向になる線を少なくして、見やすくなるわけです。

堀:個々の関数、つまり部屋の中のオブジェクト配置についても試行錯誤でしたね。今回は球面状に配置するアイデアで挑みました。オブジェクトがプラネタリウムに表示されているようなイメージです。アバター(VR体験者)からは、オブジェクトが同じような距離に見えるように視覚化できました。

画像: 球体面に沿ったオブジェクト(関数)配置。バネアルゴリズムによって、 それぞれのオブジェクトがなるべく離れるように自動調整される。

球体面に沿ったオブジェクト(関数)配置。バネアルゴリズムによって、
それぞれのオブジェクトがなるべく離れるように自動調整される。

画像1: 「世の中に存在しない表現」を生み出すアプローチ

川上:その際もさまざまなアルゴリズムを試しました。各オブジェクトに仮想的なバネ(スプリング)を備えるバネアルゴリズムを使うと見やすくうまく配置できるという結果に辿り着きました。バネアルゴリズムで、それぞれのオブジェクトがなるべく離れるように自動的に調整しています。そうしてデザインが固まり、実際の開発を12月から開始して、3月に完成。開発期間は4か月ほどといったところです。

堀:実際に見えるイメージを伝えると、VRゴーグルを付けた瞬間、アバターはまず、円筒形の中庭に立ち、頭を動かすと天地左右360度、さらに奥行を感じながら全体を一望できます。そこには部屋と部屋に含まれるオブジェクトが浮かんでいます。部屋は大規模ソフトウェアを構成するソフトウェアの一部で、オブジェクトは関数。部屋同士の依存関係が線で結ばれているのがわかるはずです。次に詳細に見たいと思った部屋があれば、それを選んで手許のVRコントローラのトリガーを引く。すると選んだ部屋に自分が吸い込まれるように移動し、部屋のなかのオブジェクト群を見ることができます。アバターはソフトウェア内を自由に移動し、関数同士の関係やソフトウェアの特性をオブジェクトの色や形状で容易に把握できる仕組みです。また、プログラム実行時のエラーを赤く燃える炎のように表現することで、エラーの発生個所を簡単に発見することもできます。

画像: ソフトウェア内のエラーは、その異常を示すサウンドとともに「赤く燃え上がる炎」 としてわかりやすく表示される。

ソフトウェア内のエラーは、その異常を示すサウンドとともに「赤く燃え上がる炎」
としてわかりやすく表示される。

川上:この「ソフトウェアVR可視化技術」は、設計、実装、テスト、レビュー、教育、ソフトウェアの改善(リファクタリング)など、さまざまな分野で実用化の可能性を秘めていると考えています。我々の本業は、基本的にはソフトウェア開発生産性の向上ですから、できればこの技術をソフトウェア改善に役立てたい。たとえばリファクタリングですね。悪い構造のソフトウェアは、一部分が巨大すぎたり、依存関係がゆがんだ構造になっていることが少なくありません。この技術で解析するとVR空間では、構造のゆがみが箱の大きさや線の重なり合いとして見えると思います。それは、理解しやすく修正しやすいソフトウェアに改善することに役立つはずです。

堀:新しく参加した開発者の理解の手助けにもなりますし、バグの発見にも役立ち、ソフトウェアの劣化も防げる。より良いソフトウェアを実現でき、開発速度も上がると睨んでいます。現時点の技術で、約42万行のプログラムまでは解析と表示が可能なことを確認しています。

画像2: 「世の中に存在しない表現」を生み出すアプローチ

将来に向けて志す、チャレンジングスピリット

川上:我々が属しているシステムイノベーションセンタ・システム生産性研究部は、ソフトウェア開発の手法などを研究し、日立製作所の事業部門が開発しているソフトウェアに対して技術を適用していく部署です。私はもともと電気工学を専攻していましたが、プログラムの開発方法に興味があると感じて転向し、いまの仕事に就きました。日立グループの持つさまざまな分野のソフトウェア開発効率を上げる――そんなチャレンジを希望して入社しました。いまは、開発技術の適用をすることで経済的な効果が上がることはもちろん、開発現場の人たちや実際に製品を使ってくれているユーザーの方々からの「仕事が楽になった」「品質がよくなった」という直接的な声を聞くのが個人的には一番の楽しみですね。

堀:私は、新しいものを考えたりつくったりするのが好きで、自分でスマホアプリやウェブアプリをつくるなどしていました。大学の研究室ではソフトウェアを自動でテストする方法を研究していて、次第にテスト工程だけでなく、ソフトウェア開発工程全体の効率化に強い興味を持ち、日立に入社しました。研究では0から1を生み出すのが楽しく、続けていきたいと思っています。企業では課題を解決する研究なども多く、今回のような自由な研究ばかりではありません。でも、そうした研究環境の中でもオリジナリティを出し、それまではなかったような内容を自ら考え適用できるようなチャレンジを続けていきたいです。

画像: 本技術はハードウェアを選ばない。VRゴーグル/VRコントローラーなど市販の汎用品で対応可能だ。

本技術はハードウェアを選ばない。VRゴーグル/VRコントローラーなど市販の汎用品で対応可能だ。

画像: 将来に向けて志す、チャレンジングスピリット

プロフィール

※所属、役職は公開当時のものです。

画像1: もっと奥へ、深く進んで視る!ソフトウェア構造をVRで可視化

川上真澄(かわかみ・ますみ)

豊橋技術科学大学修士課程修了後、日立製作所入社。
電力関連のシステム開発からキャリアをスタートし、デジタルテレビなど家電関連を経て、現在は自動車や鉄道のソフトウェアの研究開発に携わる。専門技術は、モデルベース開発、ソフトウェアプロダクトライン、テスト、プロジェクトマネジメントなど。

■私に影響を与えてくれた作品
著作『時を超えた建設の道』
クリストファー・アレグザンダー

オーストリアの建築家、クリストファー・アレグザンダーの著作で「時を超えた建設の道」という本があります。これは良い街並みや建物をつくるための「パタン・ランゲージ(町・建物・施工など環境設計を表現した言葉)」を提案した建築分野の本です。後年にこの考え方をソフトウェア開発に応用してデザインパターンという技術が生まれました。ソフトウェアは目に見えない概念ですから、建築分野のコンセプトを使うことでソフトウェア開発をやりやすくしています。私は、もしソフトウェアエンジニアにならなかったら建築家になりたかったので、今回のような建築物のメタファを使ってソフトウェアを開発するコンセプトは必然だったのかもしれません。

画像2: もっと奥へ、深く進んで視る!ソフトウェア構造をVRで可視化

堀 旭宏(ほり・あきひろ)

慶應義塾大学ではソフトウェアテスト自動化の研究を行い、修士課程卒業後、日立製作所入社。「大規模で複雑なソフトウェアの構造をVR空間で可視化する技術」を企画。

■私に影響を与えてくれた作品
映画『インセプション』
クリストファー・ノーラン監督

レオナルド・ディカプリオ主演の映画「インセプション」では、主人公たちが夢の中に入り込み、さまざまなミッションをこなします。夢の中の世界では、豊富な想像力によって一瞬で建物を建てることができます。その建物は現実のものとは違い、どれも独創的で、特に周囲を取り囲むような湾曲した建物や宙に浮いた建物などは、建物をモチーフにしたソースコード可視化を行ううえで、大きなヒントとなりました。

This article is a sponsored article by
''.