UMLをソースで管理 (Mac + ATOM + PlantUML)

#はじめに
　PlantUMLは、DSLをコーディングすることでUMLが描ける、Java製のツールです。
　メリットとしては、git などのバージョン管理システムと組み合わせることで、
　ソースとして管理できる為、再利用・差分情報の抽出が容易であることだと考えています。

　Mac、ATOM、PlantUML（ATOMのPackage）の組み合わせで、
　インストールから、簡単なクラス図を出力するまでを記載します。
　※ マシンのOSのバージョンは、macOS High Sierra 10.13.4です。
　※ ATOM+mermaidも試しましたが、クラス図はPlantUMLの方が見やすかった為、
　　ATOM+PlantUMLの環境を選択しました。

#前提条件
　以下の2つを事前に準備する必要があります。
　・JDK
　　PlanuUMLはJavaで動くので、Javaの実行環境がインストールされている必要があります。
　　JDKがインストールされていない場合は、参考情報（JDK インストール）を参照して下さい。
　・Graphviz
　　Graphvizがインストールされていないとシーケンス図以外のダイアグラムが正常に表示されません。
　　Graphvizがインストールされていない場合は、参考情報（Graphviz インストール）を参照して下さい。


#1. ATOM
##1-1. ダウンロード
　　ATOM を以下のサイトからダウンロードします。
　　https://atom.io/

##1-2. インストール
　　(1) ダウンロードしたファイル「atom-mac.zip」を実行します。
　　(2) ATOMが展開されるので、Applicationsにドラッグ＆ドロップします。

#2. PlantUML
##2-1. インストール
　　ATOMのInstall Packageとして、PlantUMLをインストールします。
　　具体的には、「plantuml-viewer」「language-plantuml」をインストールします。

|Package|Note|
|:---|:---|
|plantuml-viewer|PlantUMLで記述したテキストをUMLの図変換します|
|language-plantuml|PlantUMLで記述したテキストをシンタックスハイライト表示します|

　　　(1) メニューのAtom → Preferencesを選択します。
　　　(2) Installを開き、「PlantUML」を検索します。
　　　　<img width="567" alt="pkg01.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/423ead32-0967-3068-926f-8adbb3bbb4c8.png">


　　　(3) plantuml-viewerのInstallボタンを選択します。
　　　　<img width="567" alt="pkg02.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/53f066c1-b27b-ea2a-07da-1ac690b9727e.png">

　　　(4) language-plantumlのInstallボタンを選択します。
　　　　<img width="567" alt="pkg03.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/093fed75-02ab-6dc7-3238-c874b03a900a.png">

##2-2. 設定
　　plantuml-viewerの設定を行います。
　　　(1) Settingsボタンを選択します。
　　　　<img width="567" alt="pkg04.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/1621fc63-8e9e-5d4b-eec8-640772c03a5b.png">

　　(2) 各項目の設定を行います。
　　　例では、Charsetのみ「UTF-8」に変更しています。
　　　<img width="567" alt="pkg05.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/879b713c-a2fd-b8a6-ebbf-36bf5026fdd7.png">

　　　参考に各項目の説明を以下に示します。

|Item|Note|
|:---|:---|
|Charset|変換前のテキストのエンコーディングを指定します|
|Config File|変換時に読み込まれる、共通の処理を記載しておくPlantUMLファイルのパスを指定します|
|Grammars|対象となるファイルの拡張子を指定します|
|Graphviz Dot Executable|インストールしたGraphivizのパスを指定します。<br/>本手順では設定は不要でした。|
|Live Update|チェックを外すと、図の自動更新を無効にできます|
|Open in Split Pane|チェックを外すと、図のプレビューを分割ペインではなく、通常のタブに表示するようになります|



#3. UMLの作成
　UMLを作成する準備が整いました。
　クラス図を例にATOM+PlantUMLで作成します。
##3-1. クラス図のUMLを記載します。
```
@startuml

interface Aggregate {
  iterator()
}
interface Iterator {
  hasNext()
  next()
}
class BookShelf {
  books
  last
  getBookAt()
  appendBook()
  getLength()
  iterator()
}
class BookShelfIterator {
  bookShelf
  index
  hasNext()
  next()
}
class Book {
  name
  getName()
}

Aggregate -ri-> Iterator
BookShelf .up.|> Aggregate
BookShelfIterator .up.|> Iterator
BookShelfIterator o-le-> BookShelf
BookShelf o-down-|> Book

@enduml
```

##3-2. previewを開きます。
　　メニューのPackages → PlantUML Viewer → Toggle Viewを選択します。
　　以下のように表示されていれば、正常にUMLが記述出来ています。
　　<img width="567" alt="pkg06.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/af86eef0-a05b-e9f7-1d3c-fa7ac40a8d17.png">


#参考情報（JDK インストール）
　1. ダウンロード
　　(1) 以下のURLにアクセスし、Java SE 8のJDKのDOWNLOADボタンを押下します。
　　　http://www.oracle.com/technetwork/java/javase/downloads/index.html
　　　　![jdk01.png](https://qiita-image-store.s3.amazonaws.com/0/165180/73320597-9f2a-56c6-0ab8-2a7e49ce90cd.png)

　　(2) Mac OS X x64のインストーラーを選択します。
　　　 ![jdk02.png](https://qiita-image-store.s3.amazonaws.com/0/165180/5883869d-f8d9-01e6-c91a-82f98d29ded7.png)

　2. インストール
　　ダウンロードしたファイル「jdk-8u171-macosx-x64.dmg」をダブルクリックします。
　　特別な選択はなく、そのまま進めて行くとインストールできます。

　3. インストールの確認
　　ターミナルで以下のコマンドを実行して下さい。
　　/usr/libexec/java_home -V
　
　　以下のように表示されれば、インストールが正常にできています。
　　　$ /usr/libexec/java_home -V
　　　Matching Java Virtual Machines (1):
　　　    1.8.0_171, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
　　　/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home

#参考情報（Graphviz インストール）
　1. インストール
　　ターミナルで以下のコマンドを実行して下さい。
　　brew install graphviz
　　※1 以下のエラーが発生した場合、App StoreでXcodeをインストールもしくはアップデートして下さい。　
　　　Error: Your Xcode (8.0) is too outdated.
　　　Please update to Xcode 9.3 (or delete it).
　　　Xcode can be updated from the App Store.
　　※2 以下のエラーが発生した場合、ターミナルで「sudo xcodebuild -license accept」を実行して下さい。
　　　Error: You have not agreed to the Xcode license. Please resolve this by running:
　　　  sudo xcodebuild -license accept

　2. インストールの確認
　　ターミナルで以下のコマンドを実行して下さい。　
　　dot -V

　　以下のように表示されていれば正常にインストールされています。
　　$ dot -V
　　dot - graphviz version 2.40.1 (20161225.0304)

#参考元
+ 主に参考にさせて頂きました。
　[PlantUMLを自動変換してLiveプレビューしてくれるAtom拡張 PlantUML-Viewer がイイ！](http://pierre3.hatenablog.com/entry/2015/08/23/220217)

+ PlantUMLの記載方法が紹介されています。
　[PlantUML Cheat Sheet](https://qiita.com/ogomr/items/0b5c4de7f38fd1482a48)

+ クラス図の記載方法の詳細が紹介されています。
　[PlantUML - クラス図](http://yohshiy.blog.fc2.com/blog-entry-154.html)