Graphvizで依存関係
初めに
お久しぶりです。砂子です。もう年末ですね。前回はFF7のメモリ解析でしたか。光陰矢の如しとは言いますが、本当に時間がたつのが早く感じる今日この頃です。
弊社では機械学習やDeepLearning、FPGA、CUDAなどに関連した業務も増えてきましたが、わたくしは栃木でWEBのフロントエンド開発などをしております。Web開発は初ということもあり、HTML、CSSなど勉強することも多い毎日です。
業務で遭遇する依存関係
さて、業務を遂行していると時節依存関係に出くわすことがあります。
- 関数の呼び出しを説明する
- 要求仕様で記述されている機能群の関係を把握したい
- etc
大半の方が業務で使用できるツールといえばMicrosoftのOfficeシリーズになりますが、それを使って依存関係を記述、描画するにはかなり骨がおれます。非常に単純なものであればExcelやPowerPointなどを使用すればよいのですが、ドキュメントの中に所々ある依存関係の記述を拾い集めて管理するのは大変な作業となります。
今回業務で遭遇したのが、200ページ位のPowerPointドキュメントに記述された要求仕様でした。機能ごとに整理されており、各機能が依存する機能はわかるのですが俯瞰して依存関係が記述されていません。それほど依存関係が複雑というわけではないはずが、いくつかの箇所に”機能Aは機能Bを呼び出す”などと記述されている状態です。
プログラミングの依存関係の例
プログラマーであれば依存関係ということばより、Makeやコールグラフが思い浮かべるかもしれません。
makeは有名なUnixツールで複数のソースコードを成果物にまとめ上げるためのツールです。makeを詳しく知らなくともUnixライクなシステム(Linux, cygwinなど)で下記のようなコマンドを実行したかたもいるかもしれません。
./configure
make
make install
コールグラフはIDEやドキュメント自動生成などでみることがある関数の呼び出し関係を記述したグラフです。私はDoxygenを利用してソースコードからドキュメントを作ったとこがありますが、その時関数の関係が描画されていました。
Graphvizについて
Graphvizは上記のDoxygenがコールグラフを生成する際に使用するツールです。これはdot言語で記述されたグラフ構造を描画するツールになります。 ここでグラフ構造とはノード(節点)とエッジ(辺)を構成要素とし、ノードとエッジの関係を記述した構造です。ノードn1とn2があり、エッジとしてn1とn2を結ぶe1があるとすると下図のようになります。
graph G {
n1 -- n2;
}
エッジにn1からn2への方向を持たせると下図になります。
digraph G {
n1 -> n2;
}
依存関係描画
さて、依存関係は”機能Aが機能Bに依存している”というように記述されます。これを下記のように描画します。
digraph G {
FuncA -> FuncB;
}
ドキュメントに出てくるページをコメントで書いて、次のように書けば依存関係のグラフ構造が描画できます。
digraph G {
// P.10
FuncA -> FuncB
// P.13
FuncA -> FuncC
// P.20
FuncB -> FuncC
// P.50
FuncD -> FuncC
// ... until P.200
}
ドキュメントの各ページで記述されている依存関係を描画できました。納品や客先での説明資料としては物足りないかもしれませんが、見積もりの資料としてはある程度の意味をもつと思います。
終わりに
実際の業務では専門領域以外の複雑性に直面することが多々あります。マッチングするツール等があればよいですが、高級であったりライセンスの関係で利用できないこともしばしばです。また、個人的に業務の複雑性をその都度解消できてもチーム内で共有できなくてはせっかくの効率化も失われてしまいます。Officeなどの汎用的なツールで完結できればそれが一番なのですがね。 もっと大枠で業務の改善などを提案、定着できるように配慮して開発を進める必要を感じます。 では次回の記事で。次は英語で書いてみようかな。
年末近くを迎えて
寒くなってまいりました。
皆さまいかがお過ごしでしょうか。
iPXのかのまたです。
年末が近くなり、年末ジャンボの発売日も近くなってまいりました。
「今年こそは人生を購入するのだ!」と息をまく、そんな皆様のために、このような写真を用意しました。
栃木県那須烏山市「大金駅」です。
駅前に小さくても「大金神社」があります。
お参りをば
駅前にある売店
駅前の道路
六角形「県道233号線」
総延長14km程度です。
大金駅の時刻表です
JR烏山線「ACCUM」
キハ40はちょうど来なかったです。
那須烏山市の案内板
さて、皆様の運が上向いたことでしょう。
自宅からちょっとばかり遠いですが、よいドライブコースでした。
栃木は寒いですがよいところです。
Modelica Users Conference 2017に参加してきました
EPLU(Engineering Process Leading Unit)の加藤です。
10月27日(金)に、Modelica Users Conference 2017に参加してきました。
http://www.modelon.com/jp/modelica-users-conference-2017-japan/
主催はModelon社ですが、ユーザーカンファレンスという名前の通り、ユーザー事例の発表を中心としたイベントです。
Modelon社のプレゼンテーションに続き、海外や国内のユーザの事例発表が行われました。
当日はModelicaユーザやFMIに関心のある方々が、140名あまり参加していました。
2017年のモーターショーに行って来ました
EPLU(Engineering Process Leading Unit)のパルハットです。人生初めてモーターショーに行ってきました。休日だったので、訪れた人がいっぱいいましたが、展示された車の数も多くて結構面白い経験になりました。今回AI等の技術を取り組んだ自動運転車がメインイベントになって人々の関心を集めるような雰囲気かなと思ったのですが、スマート車、クラス部屋自体が車、オイルなしの環境にいいEV車、水素使用の車等も人気でした。もちろん一番人々を集めたのがやはりコンパニオンでした。いっぱい写真撮ってきましたが、ブログに自分でいいなと思った写真を載せてみました。写真を見て少しでもモーターショーの雰囲気を感じたら良いですね。
展示された車の一覧です。
ここからうちの子とコンパニオンのコラボレーションです。
以上、ちょっとだけのモーターショーの写真でした。
引っ越しのお知らせ
こんにちは、CPUのすずきです。
この度、11月3日に弊社iPXは引っ越しすることになりました。
新オフィス
〒108-0072
東京都港区白金一丁目27番6号 白金高輪ステーションビル5階
電話. 03-6277-2048
FAX. 03-6277-0283
最寄り駅が「天王洲アイル」から「白金高輪」に変更になります。
引っ越しの前の最後の思い出ということで、事務所にいたメンバーで写真を撮りました。
本当は舟を背景に写真を撮りたかったのですが、逆光だったため断念してビル名が映る場所で撮影しました。
これを機に社員一同さらに社業に邁進する所存でございますので、今後とも一層のお引立てを賜りますようお願い申し上げます。
(初回掲載時、新オフィスの電話番号ならびにFAX番号に一部表記ミスがあったため修正致しました。)
旅行日記
どうも、iPX川口です。
今週は私の数少ない趣味の一つ、旅行についてお話ししたいと思います。
大内宿とは(Wikipediaより)
南会津の山中にあり、全長約450mの往還の両側に、道に妻を向けた寄棟造の民家が建ち並ぶ。
江戸時代には会津西街道(別称:下野街道)の「半農半宿」の宿場であったが、現在でもその雰囲気をよく残し、田園の中の旧街道沿いに茅葺き民家の街割りが整然と並ぶ。
大内宿本陣跡には、下郷町町並み展示館がある(地図)。民宿や土産物屋、蕎麦屋などが多数立ち並ぶ。特に蕎麦に関しては、高遠そばの名で知られており、箸の代わりにネギを用いて蕎麦を食べる風習がある。
つまるところ、昔ながらの茅葺き屋根の風景を残した一帯です。
現地グルメ
通称きんつば
実際は今川焼なんですが、現地ではきんつばの愛称で親しまれているそうです。
高遠そば
上記にもありますが、高遠そばは箸の代わりにネギを使用して蕎麦を食べる風習があるそうです。(もちろん箸も用意してあります。)
なぜ一本のネギを使用して食べるようになったかというと、
会津のそばは、昔は祝いの席や徳川将軍への献上品だったため「切る」というのは縁起が悪いとされ、ねぎを切らずにそのまま使ったのが始まりだと言われているそうです。
まとめ
大内宿は昔ながらの日本文化に接することのできる貴重な場所でした。
日常を忘れたい時、文化に触れたい時、プチ旅行の際には大内宿に訪れてみてはいかがでしょうか。
参考
https://ja.wikipedia.org/wiki/%E5%A4%A7%E5%86%85%E5%AE%BF
https://macaro-ni.jp/36989
http://ouchi-juku.com/