きっかけ

大規模になる一方の現在のソフトウェア開発では、全体構造の把握と部分詳細の分析を常に繰り返す事が非常に重要になります。 追加しようとしている機能はアーキテクチャに対してどのような影響があるのか? どういった手段を取れば効率的に、かつ矛盾なく実現できるのか? この一見複雑に見える箇所は必要な複雑さを持っているのだろうか?それとも単に単純な問題を複雑にしてしまっているのだろうか? など、設計や実装に携わる人が配慮しなければならない事柄が多岐に渡るからです。

My desktop

ソフトウェア開発というのは面白いもので、全体構造だけを見て部分詳細を見なければ、アーキテクチャーは徐々に崩壊を招きます。 その逆も同様で、部分詳細だけを見て全体構造を見なければ、頓珍漢な実装を招いてこれも結果的にアーキテクチャーを破壊することになります。 大規模なソフトウェア開発というのは、全体構造と部分詳細の視点を変えながら、常にバランスよく全体を隅々まで観察する必要があり、これがよく言われる「木を見て森を見よ、森を見て木を見よ」の由縁なのです。

Trees

ひと昔前では考えられなかった規模ですが、今では数万行から数十万行、時には数百万行から数千万行にも及ぶソフトウェア開発は珍しいものではなくなりました。 全体設計も、実装分析も、クラス図をノートに手書きしていた牧歌的な時代は過ぎ、手で書けない規模になったわけです。

Rapid Rabbit

少し前、日曜日の昼下がりに開発ツールについて調べていたところ、Enterprise Architectなるソフトウェアを見つけました。 これはいわゆるモデリングツールに分類されるもので、ソフトウェア開発の世界で使用されるありとあらゆる概念をモデリングできるというもの。

Enterprise Architect (上記の画像をクリックするとEnterprise Architectの日本語版を提供しているスパークスシステムズ ジャパンさんのウェブサイトに飛びます)

特筆すべきは、コードからのクラス図生成機能で、試しに手元にあった3万行ほどのC++コードをコード読み込み機能に与えてみたところ、何の問題もなくクラス図に変換できました。 今まで、この手の機能を持つソフトウェアを試す度にその結果にがっかりしていたので、これには本当に感動しました。

Enterprise Architect reverse engineering

出来上がったクラス図と自分の設計とを見比べて、確かに設計通りに実装されている事が、出力されたクラス図でみるみるうちにわかります。 「あぁ、確かに設計意図通りの構造だ。美しい。」と確信を持てるようになったのです。

Enterprise Architect class and matrix views

この試行をきっかけに、「純粋にソフトウェア開発は知的で楽しいものなんだよな」と久しぶりに思い出しました。 しかも、このEnterprise Architectにはプラグイン機構が備えられており、独自に機能拡張ができるみたいです。 そこで、休日の一日を使ってEnterprise Architect向けのアドインを実現し、大規模ソフトウェア開発をもっと創造的な世界にする事を楽しもうと考えました。 素敵なツールを作ってくれた人達の世界に触発されたのかもしれません。

ビデオ

ルールの追加と実行の方法

このアドインがどのように動作するのかを簡単な例で示した動画です。


より複雑なクラス図の色付け

階層化されたソフトウェアに対する分析に使用する例を示した動画です。

機能紹介

正規表現色付けアドインは、Enterprise architectのアドインとして機能します。

button ;-)

Enterprise Architectは、コードからのリバースエンジニアリング機能がとても優れています。 現場にある野生のソースコードを読み込ませれるだけですぐにクラス図が作成できますし、それらのクラス間関係も適切に表現できます。

ところで、全体像を把握するために大規模な設計のクラス図を仮に1枚で作る事を考えた場合、人には読めないような外観になります。 複雑に絡み合う関係線、無数にある外観がさほど変わらない箱達… 実態を掴むために出力した情報ではあるのですが、何らかの工夫を凝らす必要に迫られます。

そんな時、この「正規表現色付きアドイン」を使えば、この状況を大幅に改善できます。 パッケージ名と要素名を起点に色を付けて分類、可視化できるのです。 つまり、全体を俯瞰した状態で、かつ、部分がどのように散らばっているか、概況の判断が可能になりました。

evaluation results ;-)

このアドインは、最初に「ルール」と呼ばれるものを作ります。 パッケージ名と要素名を正規表現で指定し、該当した要素の文字や背景を何色で塗るのかを決めます。

edit rules ;-)

この「ルール」は幾つでも登録できますので、同時に何個ものルールで一括処理できます。 従来は、クラス図を作ってからシステム全体構造を把握するまでに直感的なプロセスを構築することは困難でした。 しかし、この正規表現色付けアドインを使うと、全体構造を色付けして可視化できるので直感的に要素の分布などを把握できるようになりました。

rules in the menu ;-)

どのパッケージのどの要素が、全体のどの程度の割合を占めているのか把握するのにも好都合。 塗り分けられた結果から、アーキテクチャ改善のヒントを見つけることもあるでしょう。

see the results ;-)

このアドインが大規模ソフトウェア開発をされる皆様のお役に立てることを願っております。

使い方

ルールの追加

はじめに「ルール」と呼ばれるパッケージ名と要素名に対応する色を定義します。 アドインのメニューから「ルールの追加」を選択して下さい。

Step 001

「ルールの編集」ダイアログが表示されます。

Step 002

設定項目 機能
ルール名 アドインのメニュー内で表示するルール名を指定します。
パッケージ名 検索対象となるパッケージ名を正規表現で指定します。この欄を空白にすると、全てのパッケージが検索対象になります。
要素名 検索対象となる要素の名称を正規表現で指定します。この欄を空白にすると、全ての要素が検索対象になります。
文字色 描画文字の色を決定します。チェックボックスのチェックを外すと文字色を変更しません。
背景色 要素の全体の背景色を決定します。チェックボックスのチェックを外すと背景色を変更しません。
枠線色 要素の外周を囲むように描画される枠の色を決定します。チェックボックスのチェックを外すと枠線色を変更しません。
枠線幅 要素の外周を囲むように描画される枠の幅を1から5ピクセルの中で決定します。チェックボックスのチェックを外すと枠線幅を変更しません。
決定 編集結果を反映します。
中止 編集結果を破棄します。

複数のルールを追加したい場合には、上記の手順を繰り返します。

実行

ルールを追加したら、処理対象のダイアグラムを開き、アドインの「実行」メニューを選択します。 この時、オブジェクトの選択状態によって処理内容が異なります。

Step 003

  • ダイアグラムでオブジェクトが選択状態にある場合: 選択状態のオブジェクトのみが検索対象になります。
  • ダイアグラムでオブジェクトが選択されていない場合: 全てのオブジェクトが検索対象になります。

処理が完了すると、ルールが適用された回数が表示されます。

Step 004

実際にダイアグラムの要素を見て結果を確認して下さい。

Step 005

ダイアグラム内での直接実行

ダイアグラム内での直接実行も可能です。 ダイアグラム内でマウスを右クリックして「アドイン・拡張」から「正規表現色付け」を選択して下さい。 「実行」を選択すると実行前の確認ダイアログが出ます。 続行すれば直ぐに結果が得られます。 リボンメニューに行く手間を省けますので、こちらも御利用下さい。

Diagram Menu

既存ルールの編集

既存ルールのパラメータを変更したい場合には、ルールにカーソルを当てると出現するサブメニューにある「ルールの編集」を選択します。

Step 006

既存ルールの削除

既存ルールを削除したい場合には、ルールにカーソルを当てると出現するサブメニューにある「ルールの削除」を選択します。

Step 007

削除確認のダイアログが出ますので、「はい」を選択して下さい。

Step 008

ルールの自動保存

作成したルールは、自動的に保存されます。 自動保存先は「C:\Users\<ユーザーログイン名>\Documents\RexColorToolAddin」の「autosave.rules」ファイルです。

ルールのエクスポート

アドインの「ルールの管理」にカーソルを当てると出現するサブメニューにある「ルールのエクスポート」を選択します。

Step 009

エクスポート用のダイアログが出ますので任意のファイル名を入力して下さい。 拡張子は「.rules」です。

Step 010

エクスポートが完了すると、エクスポートしたルール数が表示されます。

ルールのインポート

アドインの「ルールの管理」にカーソルを当てると出現するサブメニューにある「ルールのインポート」を選択します。

Step 011

インポート用のダイアログが出ますので、エクスポート済みのルールファイルを選択して下さい。 拡張子は「.rules」です。

Step 012

インポートが完了すると、インポートしたルール数が表示されます。

ルールの全削除

沢山のルールを作成した後で、次の新たな作業に入る場合に、既存のルールを全て削除したい事があります。 この場合には「ルールの削除」を使います。

Step 013

実行確認ダイアログが表示されますので「はい」を選択して下さい。

Step 014

その他の機能
正規表現テストツール

Version 1.2.0.0から新しく正規表現テストツールが追加されました。 このテストツールを使うと、自分が意図した正規表現になっているかどうかを簡単に確認できます。 テスト文字列と正規表現を入力すると、ダイアログの右側に判定結果が表示されます。

Tester Matched

Tester Unmatched

言語選択

Version 1.2.0.0から新しく言語選択機能が追加されました。 この言語選択は、このアドインのユーザーインターフェースに適用されます。

Language menu

選択した言語を適用するためにEnterprise Architectを再起動して下さい。

Language menu

ダウンロード

ダウンロード

アドインのパッケージには、アドイン本体とサンプルデータが含まれます。

アドイン本体
リリース日付 バージョン リンク リリースノート
2020年10月3日 1.2.0.0
2020年9月27日 1.1.0.0
2020年9月20日 1.0.0.0 初版

注意事項
  • 本アドインならびに付随するデータ等を使用した結果起きた如何なる損害も当方では責任を負いません。
  • 本アドインはスパークスシステムズ ジャパン様とは関係ありませんので、本アドインに関する直接的なお問い合わせは御遠慮下さい。

インストール

インストール方法
  1. 各アドインの項目にあるZIPファイルをダウンロードし展開して下さい。
  2. EAが起動していないことを確認してください。
  3. 展開したフォルダの中に含まれるEAAddinSetup.batファイルを選択して右クリックし「管理者として実行」を行ってください。

Install step 1

Windows 10では、以下のような警告画面が表示されます。 詳細情報をクリックして下さい。

Windows protection 1

実行ボタンを押すとインストール処理を継続できます。

Windows protection 2

  1. 「アドインの登録が完了しました。」と表示されたら完了です。
  2. EAを起動し、アドインを利用できるかご確認ください。
注意事項

バッチファイルEAAddinSetup.batの実行に際しての注意事項を以下に記します。

  • EAAddinSetup.batを選択して右クリックし「管理者として実行」を行ってください。
  • EAAddinSetup.batが存在するフォルダ名もしくは途中のフォルダ名に ‘&’ ‘(’ ‘^’ 等が含まれないようにしてください。
  • EAAddinSetup.batを実行する管理者ユーザとして少なくとも一度はEnterprise Architectの起動実績が必要です。(管理データを初回起動時に作成するため)
  • .NET Frameworkで作成されたアドインを登録するためには、.NET Frameworkがインストールされている必要があります。必要な .NET Frameworkのバージョンは、アドインのインストール設定に依存します。

アンインストール方法
  1. Uninstall.batを選択して右クリックし「管理者として実行」を行ってください。

uninstall


謝辞

本アドインは、スパークスシステムズ ジャパン様が提供されている「アドインセットアップツール」を配布条件に従って使用させて頂いています。 素晴らしいツールの提供に感謝致します。

また、本ページに記載されたインストール方法と注意事項の内容には細心の注意を払っていますが、念のため最新情報をスパークスシステムズ ジャパン様のページでも御確認下さい。 アドインセットアップツール情報へのリンク

よくある質問

このアドインに関する内容
クラス図以外にも使えますか?
  • はい。
  • クラス図以外でも使用可能です。
このアドインを業務に使用しても良いですか?
  • はい。もちろんです。
  • 利用者の責任の下で御利用下さい。
英語版のEnterprise Architectでも使用できますか?
  • はい。Version 1.2.0.0から英語と日本語の言語切り替えが可能になりました。初回起動時、ユーザーインターフェースは英語で表示されます。
  • アドインのユーザーインターフェース言語を日本語で表示したい場合、LanguageからJapaneseを選択した後、Enterprise Architectを再起動して日本語表示に切り替えて下さい。
UNDOできません。
  • Version 1.0.0.0では、モデルの値を直接変更していたためUNDOが出来ませんでした。
  • Version 1.1.0.0から、ダイアグラムの要素に対して変更を行なうように挙動を修正しました。このため、ダイアグラムの範囲でUNDO操作が可能になりました。

Enterprise Architectに関する内容
namespaceで分割された複数のディレクトリに渡る巨大なソースファイル群をどうやって一枚のクラス図にするのですか?
  • スパークスシステムズ ジャパン様がライセンス保有者向けに提供している「クラス図の自動生成アドイン」を使うと、選択したパッケージに対するクラス図を子パッケージに渡って自動生成できます。正規表現色付けアドインは、このスパークスシステムズ ジャパン様が提供されている「クラス図の自動生成アドイン」と組み合わせて使用することで、システム全体像を直感的に把握する意図で設計実装されており、お勧めのプラグインです。 クラス図の自動生成アドイン
Enterprise Architectの何が素敵ですか?
  • リアルな開発現場で実用に耐えうる信頼性の高い挙動と論理接続機能が素敵です。
  • 色々評価したところ、開発の現場で使っている野生のコードから完全なクラス図を逆生成できる、私が試した限り唯一のツールでした。
  • スパークスシステムズ ジャパン様から購入すると無償でダウンロード可能な数多くの魅力的なアドインを利用可能になります。これも決め手の一つでした。特にお気に入りはクラス図の自動生成アドインC/C++言語の解析アドイン拡張マトリックスアドインです。これらの組み合わせだけでも、他社単体製品に匹敵する利便性を開発現場にもたらしてくれました。(ステマじゃないよ)

拡張マトリックスアドイン 拡張マトリックスアドインの概要 (メーカーページより抜粋)


そのほかの質問
フィードバックや感想をお届けしたいです
  • 連絡先まで御連絡下さい!
何か応援したいです

開発チーム

ソフトウェアの設計実装

担当: 中村 晋一郎 (Shinichiro Nakamura)

Shinichiro Nakamura

プロフェッショナルとしての豊富な経験

2002年より業務用ビデオ機器メーカーで電気設計やファームウェア開発、ソフトウェア開発、プロジェクト企画運営等に従事。 リアルタイムOSを使ったリアルタイムシステム設計、ソフトウェアアーキテクチャ設計分析、クロスプラットフォームソフトウェア開発などが得意分野。 OSレスのマイクロコントローラ環境から、QNX, FreeRTOS, Windows、Linux、MacOS上で動作するソフトウェアまで、幅広く活動しています。


ドキュメントの制作

担当: ラピッド ラビット (Rapid Rabbit)

Rapid Rabbit

色んな雑務の豊富な経験

ちょっとちょっと色々とお手伝しています。 率直な感想や辛辣な意見など、他の人が言えない/言いにくい内容をズバズバと言う担当。 えっと、ここにAmazon欲しいものリストを貼っても良いですか?(笑)

Rapid RabbitのAmazon欲しいものリスト

中村: え?(笑)