php-class-diagram 1.5.0でクラス図の関連にフォーカスした絞り込み機能を追加しました
2024/12/17
2024/12/18
先日、CodeZineにPHPカンファレンスを盛り上げる連載企画の第5回に、記事を寄稿するという実績を解除することができました。
健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう PHPカンファレンス実行委員プレゼンツ PHPの最前線 第5回
php-class-diagram v1.5.0では、@jose-ba さんからプルリクを頂いて新しいフィルター機能が追加されました。
今日は、その機能について紹介します。
今までの課題
例えば、php-class-diagramのソースコード全体に対してクラス図を生成しようとすると、以下のクラス図を生成することができます。
デカいです。出力されているクラスが多いため、ごちゃごちゃしてしまっていて、何かを読みとるには難しくなってしまっています。
今までは、クラス図を出力する対象を減らすために、ある特定のフォルダに絞ってクラスを出力するか、不要なクラスを--exclude
で除外するかという方法を取るしかありませんでした。
関連にフォーカスしたフィルター機能--rel-target
オプション
このような場合の問題を解決できる機能が、v1.5.0で追加されました。
--rel-target
オプションでターゲットのクラスを指定すると、そのクラスが依存しているクラスとそのクラスに依存しているクラスだけが表示されたクラス図を出力することが可能になります。Entry
クラスに注目したい場合のコマンド例は以下のようになります。
$ vendor/bin/php-class-diagram --rel-target=Entry --rel-target-depth=1 src | plantuml -pipe -tpng > rel-target-Entry.png
追加されたオプション
--rel-target-from
: 指定したクラスが依存しているクラスを、出力対象とします。--rel-target-to
: 指定したクラスに依存しているクラスを、出力対象とします。--rel-target
: 指定したクラスに依存しているクラスと指定したクラスが依存しているクラスを、出力対象とします。--rel-target-depth
: 依存先または依存元を辿る階層の数を指定します。
Entry
クラスの依存関係の関連に注目した図の出力は以下のようになります。
さっきの大きなクラス図と比べて、すっきりとしたEntry
クラスの関連にフォーカスした図を出力することができました。--rel-target
に指定したクラスEntry
が赤く強調表示されています。(強調表示はv1.5.2で追加した機能です)
「修正するクラス名はわかってるけど全体とどのように関連しているのかわからない」というような状況では、まさに見たい図を出力できると思います。
是非試してみてください。
VSCode等のIDEの拡張機能でインタラクティブに、--rel-target
を指定したクラス図を出力できるようにすると便利かもしれません。誰か作ってください。