UML2 Toolsはまだ完成度が...

Ganymede M7のパッケージの一つ、Eclipse IDE for Software Archtects and Modelingには、UML2 Toolsが含まれています。これは、要はUMLダイアグラムエディタで、以下のエディタが含まれています。

UML2 Toolsに含まれる上記エディタ群は、UMLメタモデルのEMFによる実装であるUML2を基に、GMFで自動生成されています。

MacOSXでちょっと試用してみましたが、少なくとも以下の点でまだ実用レベルではないと感じました。

  1. シーケンス図のエディタが含まれていない
  2. 図を構成するエレメントの輪郭をドラッグすることで図形を大きくできるが、小さくできない(!)
  3. 少なくともアクティビティ図とステート図のエディタは、編集中に頻繁にフリーズ(Eclipseを強制終了させるしかない)

UMLメタモデルのEMFによる実装であるUML2自体は、様々なUML関連ツール群のプラットフォームとして採用されていますが、その本家によるダイアグラムエディタはまだまだ開発途上といった感じですね。

Ganymede M7パッケージの展開先フォルダ名を"eclipse"以外に変えるとプラグインが認識されない

Windows XPMacOSXに、Ganymede M7のパッケージをインストールするには、ダウンロードしたzipファイルまたはtar.gzファイルを解凍します。解凍すると、"eclipse"という名前のフォルダができます。

以下のバグ等に挙げられているように(他にもたくさん報告されています)、上記フォルダ名を"eclipse"以外の名前(例えば"eclipse3.4")に変えると、Eclipseプラットフォーム以外のプラグイン群が正しく認識されません!

https://bugs.eclipse.org/bugs/show_bug.cgi?id=233101
https://bugs.eclipse.org/bugs/show_bug.cgi?id=231974

実際、Eclipse IDE for Software Architects and ModelingEclipse IDE for C/C++ Developersをインストールしたとき、上記フォルダ名を"eclipse3.4"や"ganymede"という名前に変更すると、Eclipseプラットフォーム以外のプラグイン(フィーチャ)は一切認識されませんでした。

ちなみに、上記フォルダ名を"eclipse"以外の名前に変えたとしても、p2でUpdate Siteからプラグインをインストールすると、同プラグインを認識してくれました。

以下のバグにあるように、5月9日のエントリ5月15日のエントリに書いた、dropinsフォルダへのプラグインのインストールがうまくいったりいかない問題は、おそらく上記フォルダ名を"eclipse"以外の名前に変えたのが原因でしょう。もう少し調べてみようと思います。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=231120

Code Complete第2版〈上〉―完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

去年の10月ぐらいから読み始め、11月ぐらいから今年の4月までの中断をはさみ、やっと読み終えました。

この本は、プログラミングについてかなり詳細に書かれていて驚きます。プログラミング初心者にとってはもちろん、上級者にとっても再確認や新発見があって非常に役に立つのではないかと思います。基本的に言語に中立な立場で書かれていますが、本書で使われているサンプルプログラムはほとんどC/C++JavaVBです。日本語訳は全く問題なかったと思います。

本書の詳細度について言うと、例えば、変数に関してだけで130ページ以上も割かれています。その中で変数名の付け方だけで40ページ以上使ってベストプラクティスが紹介されています。他にも、if文やcase文(switch文)、ループ等の効果的な(読み易い)書き方や、組み込みソフト開発でもよく使われるテーブル駆動方式が紹介されています。

このように、この本には読み易いプログラムを書くための詳細なテクニックが満載です。とても紹介しきれませんが、非常に役に立ちました。下巻も是非読みたいと思います。

Ganymede M7で動作しました

Reflective Ecore Model Diagram Editorの最新版の.jarファイルを以下からダウンロードし、dropinsフォルダに配置することにより、インストールでき正常に動作することを確認できました。

http://sourceforge.net/project/showfiles.php?group_id=203088&package_id=241965

実は、Ganymede M6ではorg.eclipse.xsd.ecore.importerをRequired Plug-insに加えているとエラーが出ていたのですが、M7では再びエラーが出なくなりました。以下のサイトにも記述があるように、XSD関係のパッケージングを今も変更中なのかもしれません。

http://wiki.eclipse.org/EMF/EMF_2.3/New_Features_Migration_Guide

p2のdropinsフォルダ

Ganymede M6からプラグインの管理(インストール/アンインストール)がp2に移行しました。プラグイン管理UIが一新され、Update Siteの仕様も変更になっています。またp2では、Update Site経由だけでなく、従来のように手動で.jarファイルを$ECLIPSE_HOME/dropinsフォルダに配置することによりプラグインをインストール可能です。以下にp2の基本情報があります。

http://wiki.eclipse.org/Equinox_p2_Getting_Started

そこでEclipse IDE for Software Architects and Modeling | Eclipse Packagesを使って、p2のdropinsフォルダに、プラグインを手動でできるかどうか調べてみました。その結果、以下のような配置は全て正しく認識され、プラグインをインストールすることができました。結局、上記wikiの記述通りという結果になりました。新たに判明した点を強いて挙げるならば、以下のようにうまくいく配置パターンを同時に組み合わせても大丈夫、といったところでしょうか。

eclipse/
  dropins/
    net.sourceforge.dynamicgmf.0.1.2.jar
    eclipse/
      features/
        org.eclipse.emf.compare_0.8.0.v20080404851/*
      plugins/
        org.eclipse.emf.compare_0.8.0.v20080404851.jar
    emft_mint/
      eclipse/
        features/
          org.eclipse.emf.mint_0.7.0.v200805070024/*
        plugins/
          org.eclipse.emf.mint_0.7.0.v200805070024.jar

正しく認識されるパターン

dropinsフォルダにプラグインを手動で配置する場合、以下のパターン(の組み合わせ)であればうまくプラグインを認識してくれるようです。

パターン1:featureのない.jarをdropins直下に配置
eclipse/
  dropins/
    net.sourceforge.dynamicgmf.0.1.2.jar
パターン2:dropins/eclipse以下に配置
eclipse/
  dropins/
    eclipse/
      features/
      plugins/
パターン3:dropins/${AS_YOU_LIKE}/eclipse以下に配置

このパターンを使うとプラグイン群をフォルダごとに分けて配置できますね。${AS_YOU_LIKE}/以下に"eclipse"フォルダを設けないといけないところが要注意。

eclipse/
  dropins/
    emf/
      eclipse/
        features/
        plugins/
    gef/
      eclipse/
        features/
        plugins/

正しく認識してくれなかったパターン

以下のように配置した場合、プラグインを認識してくれないようです。

  • dropins/${AS_YOU_LIKE}/以下に配置
  • dorpins/${AS_YOU_LIKE}/${AS_YOU_LIKE}/eclipse/以下に配置
  • dropins/eclipse/plugins/以下に、featureのないプラグイン.jarファイルを配置
  • dropins/${AS_YOU_LIKE}/eclipse/plugins/以下に、featureのないプラグイン.jarファイルを配置

まとめ

このエントリで、dropinsフォルダに.jarを配置してもプラグインを認識してくれない症状を体験しましたが、このエントリで紹介した方法でEclipse SDK 3.4M7を半手動でインストールした場合でした。Eclipse Packages | The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects...からインストールしたGanymedeでは(M6だろうがM7だろうが)、featureのないプラグインでも.jarファイルをdropinsフォルダに配置すれば正しく認識してくれました。

Ganymede M7 Packagesが利用可能になりました

http://www.eclipse.org/downloads/packages/

パッケージ"Eclipse IDE for Software Architects and Modeling"のFeature Listを見ると以下のようになっています。

org.eclipse.emf.ecore.sdo.sdk
org.eclipse.emf.emfqtv.all.sdk
org.eclipse.emf.sdk
org.eclipse.epp.usagedata.feature
org.eclipse.gef.sdk
org.eclipse.gmf.sdk
org.eclipse.m2m.qvt.oml.sdk
org.eclipse.ocl.all.sdk
org.eclipse.sdk
org.eclipse.uml2.sdk
org.eclipse.uml2tools.sdk
org.eclipse.xsd.sdk

M6のPackageでは以下のようになっていました。

org.eclipse.cvs
org.eclipse.emf
org.eclipse.emf.common
org.eclipse.emf.common.ui
org.eclipse.emf.ecore
org.eclipse.emf.ecore.edit
org.eclipse.emf.edit
org.eclipse.emf.edit.ui
org.eclipse.emf.emfqtv.all.sdk
org.eclipse.emf.query
org.eclipse.emf.query.ocl
org.eclipse.emf.transaction
org.eclipse.emf.validation
org.eclipse.emf.workspace
org.eclipse.epp.usagedata.feature
org.eclipse.gef
org.eclipse.gmf.sdk
org.eclipse.jdt
org.eclipse.m2m.qvt.oml.sdk
org.eclipse.ocl.all.sdk
org.eclipse.pde
org.eclipse.platform
org.eclipse.uml2.sdk
org.eclipse.uml2tools.sdk
org.eclipse.xsd
org.eclipse.xsd.edit

上記のように、M6 Packageでは、EMFのソースコード (SDK)が含まれていませんでしたが、M7 Packageでは含まれています。id:kompiroさんに促されて、M6 Packageの時に「EMFのSDKを含めてください」とBugを登録しようかと考えていましたが、その必要はなかったですね。

Eclipse: Building Commercial-quality Plug-ins 第3版

第3版が出るようですね。Amazon.co.jpの発売日は2008年10月24日となっています。
Eclipse 3.3/3.4対応のようです。

Eclipse Plug-ins (Eclipse Series)

Eclipse Plug-ins (Eclipse Series)

第2版では、必要に応じて拾い読みし、結果的に大部分を読みましたが、読み易いし非常に役立ちました。第3版も期待できそうです。