Heroku で PlantUML サーバーを立ててみた

[この記事](http://qiita.com/kkeisuke/items/45f4725d41dd789061a2)で作成した[アプリ](http://dimension-maker.info/plantuml-editor/)で使用している PlantUML サーバーを Heroku で立てたので、手順をまとめておきます。

2017/09/20 追記
[本家が jetty-runner に対応したため、webapp-runner は不要になりました。](https://github.com/kkeisuke/plantuml-server/commit/37b4bc851bc96dd84052ae8e98eec3633607fb52)

## Heroku の準備

1. Heroku のアカウント作成
2. 画面に沿って新規アプリ作成
3. Buildpacks は Java を選択 (4 と同じタイミングでも可)
4. Settings の Buildpacks に [graphviz](https://github.com/weibeld/heroku-buildpack-graphviz) を追加

![image](https://qiita-image-store.s3.amazonaws.com/0/61513/f57d1dcf-a7e7-3964-b9bb-a16679978670.png)

## デプロイの準備

1. [plantuml-server](https://github.com/plantuml/plantuml-server) を clone
2. Heroku にデプロイ( push )する前に以下の修正を行います。
    3. [Procfile](https://github.com/kkeisuke/plantuml-server/blob/37b4bc851bc96dd84052ae8e98eec3633607fb52/Procfile) を新規追加する。
    4. ~~[pom.xml](https://github.com/kkeisuke/plantuml-server/commit/3bae0f56968d9a834b011a76972a7f2d81f3f7d3#diff-600376dffeb79835ede4a0b285078036) に webapp-runner を追加します。[詳細はこちら](https://devcenter.heroku.com/articles/java-webapp-runner)。~~ jetty-runner については[こちら](https://devcenter.heroku.com/articles/deploy-a-java-web-application-that-launches-with-jetty-runner)
    5. [.fonts](https://github.com/kkeisuke/plantuml-server/commit/3bae0f56968d9a834b011a76972a7f2d81f3f7d3#diff-991d2fd185d15c1917a63f7c1e42a2b2) 以下にフォントを追加します。(無難に [IPAexフォント](http://ipafont.ipa.go.jp/)にしました。フォントがないと日本語が表示できません。)
6. [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) をインストール ( mac なら `brew install heroku` )
7. `heroku git:remote -a アプリ名` を実行し、リモートブランチとして heroku のアプリを指定。
8. `git push heroku master` で heroku へデプロイします。

## 動作確認

Resources は以下のようになっていれば OK

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61513/7f5208e4-be49-fc5a-d30b-f99df46bb519.png)

また、Build log が以下のようになります。

```
-----> Java app detected
-----> Installing OpenJDK 1.8... done
-----> Installing Maven 3.3.9... done
-----> Executing: mvn -DskipTests clean dependency:list install

<中略> 依存関係のダウンロード等 ( plantuml.war のビルド、jetty-runner のダウンロード etc )

       [INFO] ------------------------------------------------------------------------
       [INFO] BUILD SUCCESS
       [INFO] ------------------------------------------------------------------------
       [INFO] Total time: 13.995 s
       [INFO] Finished at: 2017-03-26T00:55:20+00:00
       [INFO] Final Memory: 32M/231M
       [INFO] ------------------------------------------------------------------------
-----> Graphviz app detected
-----> Installing Graphviz version 2.36.0
       (Ubuntu package graphviz_2.36.0-0ubuntu3.1_amd64.deb)
-----> Graphviz binaries in /app/graphviz/bin and added to PATH
-----> Discovering process types
       Procfile declares types -> web
-----> Compressing...
       Done: 73.1M
-----> Launching...
       Released バージョン
       https://アプリ名.herokuapp.com/ deployed to Heroku
```

あとは、[簡単なシーケンス図](https://plantuml-server.herokuapp.com/svg/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000)や、[オブジェクト図](https://plantuml-server.herokuapp.com/svg/UDfpA2v9B2efpStXuifFoafDBb5utBJgSVEqnqqx7ZSjVzoq_d5pXo5kAICkBYpg5PGCbHHqTS4KLZqEgNafG3i1kdy_M000)が表示できればOKです。

## 参考

- [Heroku CLI 簡単リファレンス](http://qiita.com/histori/items/3ce08a2926c22c63626b)
- [herokuで日本語フォントを奇麗に使うには？](http://qiita.com/ssuzuki@github/items/58be855f909f29c05ae6)