Eclipseでクラス図を描きたかった話
皆さんこんにちは、キ゚ハダです。
今回、「Eclipseのみでクラス図を描きたいな〜」と思い実行に移し、その結果色々と彷徨ったので備忘録としてその記録を残しておく次第です。
--
そもそも4.x系では動いてくれないらしい
結論だけ申すと、これです。ネット上にある情報を色々漁りまくったんですが、どうも4.x系(2012年6月以降にリリースされたもの / コードネームだと"Juno"以降)だとEclipse単体でクラス図を描くことができないっぽいです。残念。
なので、「Eclipse単体でクラス図を描きたい!!!」という方は公式サイトのアーカイブから3.x系をダウンロード(3.7 / コードネームだとIndigoがよさげ)するのが良いでしょう。
--
そこ(結論)にたどり着くまでのお話
私が普段使っている環境を以下に載せておきます。
PC : M1 MacBook Pro (8GB)
Eclipse 4.23(2022-03) → 日本語化パッチ適応済みのものを導入(2022年5月)
まずはEclipseでクラス図を描くためには拡張機能を導入する必要があります。
ひとつは「GEF」と呼ばれる拡張機能で、以下の段階を踏んで導入することができます。
これに関しては調べたら他のサイトでも書かれていることなので簡単に流します。
まず、Eclipseの「ヘルプ」から「新規ソフトウェアのインストール」を選択します。
作業対象に「http://download.eclipse.org/releases/oxygen」と入力すると一覧でズラッと色々出てくるので、「モデリング」を選択します。
そうするとまた項目がズラズラっと出てくるので、その中にある「GEF(MVC)SDK」を選択し、「次へ」を押します。押したら自動でクラス図を含む主要なUML図を描くための機能を入れてくれます。
インストールが終了したらEclipseの再起動を促されるので、再起動を行います。
この状態で描く準備はほぼほぼ完了ですが、拡張に「AmaterasUML」が入っていない場合は別途インストール(ファイルをEclipseのフォルダ内の所定位置にコピー)する必要があります。それは別の記事を探せば方法は出てくるので割愛します。
これで本当はクラス図を描けるはずなんですが、私の環境ではなぜか描けませんでした。
調べてみると、とあるサイトでこのような記述がありました。
既知の症状(保守もされてません) です
eclipse 3.x を利用してください
泣きました。
どうやら4.x系だとAmaterasUMLをサポートしていないらしく、ファイルを作ろうとしても一向に進みません。
--
じゃあ3.xをインストールすればいいじゃない
とはいえかなり面倒です。UML図を作るためだけにわざわざ普段使いしてるパソコンにレガシーと化したソフトをインストールするのはかなり手間です。
しかし私はその必要性に駆られていたので、インストールをしてみました。わざわざ。
ここからはパソコン自体を変えて作業をしています。
構成は以下の通り。
PC : Windows 10, i5-4690, 16GB
Eclipse 3.7 (Indigo) → 日本語化パッチ適応済みのものを導入
しかしまあ10年近く前に開発が完了したものなので、使い勝手は全く違います。下手したら現行環境で作ってるものが開けないかもしれません。以下はそれを承知の上で作業をしてください。ついでに言うとすぐ固まります。
Eclipse 3.7で同様の手順を踏んでインストールを進めると、途中で「失敗しました」みたいなことを言われます。私はそれでも構わず再起動し、作業を続けましたがどうやらそれで大丈夫そうです。なんで?
なんかEclipseの動作がかな〜り悪いので、スクショはMacのもので失礼します。
まず新規ファイルの作成を行い、「AmaterasUML」から「クラス図」を選択します。
次に、クラス図のファイルを置きたいフォルダを選択します。
そうすると、「.cld」という拡張子のファイルが生成されるはずです。これがクラス図のファイルとなります。
おそらく空白のキャンバスが出てくると思いますので、そこにクラス図化したいJavaファイルを複数選択して投げ入れます。
すると、
おそらく最悪のクラス図が生成されたと思います。
あとはご自身で線と要素をお片付けしてください。私はお片付けに30分近くかけました。
--
このようにして、Eclipse単体でクラス図を作成することができます。
3.x系を使わざるを得ないというのはネックですが、タダでこのようなクラス図を自動生成できるのはとても有意であるため、活用していきたいところです。(正直なことを言うとAstah*とか使いたいですが、個人で契約すると高いじゃないですか??)
今回はここで失礼します。
それでは。