ログファイルからシーケンス図を自動生成する方法

組み込みソフト開発を始めとして多くのソフトウエア開発では運用中・デバッグ中に関わらず異常動作発生時のロギングがデバッグに役立ちます。どのようなシステムでも大抵はロギングの機構が埋め込まれていて、異常発生時はそのログファイルと共にプログラマへ解析依頼が出ることでしょう。

まっとうな製品や、万人向けのOSSでない限り、ログファイルは読みやすさを考慮して設計される性格のものではありません。受託開発の組み込みソフトに至っては内部データの羅列でしかなく人間が読めるものになっていないことも多いです。プログラマしかログを読まないので顧客が要求仕様化してくることは滅多になく、あったとしても優先度が低いためです。

しかしプログラマ視点でいうと、ログの可読性は生産性に与える影響が大きいです。

人間に読めない数字の羅列だと、その解析の難易度に拠らず毎回必ず「ログを精査する」作業から取り掛からなければならず、どんなに簡単な調査だったとしてもそれなりの工数を要してしまいます。

また、調査結果を報告書にまとめることが必要な案件も多いと思います。パワーポイントやエクセルを使ってUML的なポンチ絵を書く作業です。ログをそのままスクリーンショットにして貼り付けたいところですがそうもいかないのが悩みのタネです。

報告書は要するにドキュメント作成です。それ相応に工数を要しますが、報告を受ける側の人間は報告書作成に工数がかかることを軽視しがちです。工数を費やすと文句を言われますが、手抜きの報告だとさらに文句を言われます。

そこでここはプログラマらしくポンチ絵作成を自動化する PlantUML のご紹介です。

PlantUML公式サイト:http://ja.plantuml.com/

このツールは簡単にいうと「テキストファイルで書いたUMLを絵にしてくれる」ものです。所定の書式をまもって書く必要はありますが、もともとのログ出力フォーマットをPlantUML準拠のものにしておけば後々が楽になることでしょう。そうなっていない場合でも、ログファイル→PlantUMLテキスト への変換ならちょっとしたマクロを用意しておけば足りるのではないでしょうか。

下の図はAtomエディタ+plantuml-viewerパッケージ を使って記述した時のスクリーンショットです。

2016-08-14

左側ペインのテキストを書きさえすれば、右側のシーケンス図は自動で生成されてくれます。jpeg、png、svg など出力フォーマットも多彩で、パワーポイントやエクセルに貼り付けて二次加工する素材に最適です。

上の図はプロセス間や装置間でメッセージをやり取りするログを例に挙げています。Foo・Tmp ・Bar はプロセスや装置の名称を意識しています。見てわかる通り、書いたテキストはたったこれだけです。

Foo・Tmp ・Bar の縦軸、各メッセージの横線(実線・破線)はすべてこのテキストのみで自動生成されます。

メッセージログは多くの場合、送信元・送信先・メッセージ名・タイムスタンプ・・のようなものを出力しているでしょうので、PlantUMLの書式へ変換するマクロでも作っておきさえすれば、プログラマの労力をかなり低減できるのではないでしょうか。

これはほんの一例であり、公式サイトでテキストの書式が解説されています。かなり多くの表現を記載できるようになっています。かなりお勧めのツールですのでぜひご活用ください。

スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告