plantumlTweetこんにちは、浅海です。日頃開発をしている中で、設計や実装内容を他の人と共有するためにUMLを使いたい時があります。そんなとき、紙とペンを使って書くのが一番手っ取り早いですが、綺麗なものをデータとして作成する場合はPlantUMLを使うのがおすすめです。PlantUMLは特別な記法で書いたテキストをUMLが描画されている画像ファイルとして変換してくれるJava製のツールで、とても簡単に様々なUMLを作成することができます。変換する方法は2つあり、1つは変換する都度jarファイルを実行する方法があります。この方法だと実行時のオーバーヘッドが気になるので、今回はもう1つの方法を使います。PlantUMLが公式で提供しているWebサーバを利用する方法です。このWebサーバを立てると、HTTPのGETリクエストによりPlantUMLの記法を画像ファイルとして取得することができます。Webサーバのソースはgithubにあります。https://github.com/plantuml/plantuml-serverこのREADMEによればサーバの起動方法は次の2つです。mvnで直接実行するDocker上で実行するDockerで実行するのが手軽なので、それを試してみます。EC2でインスタンス作成サーバはEC2で用意しました。2017.03」です。AMI」を使用すると後述のdockerのインストールも不要になるそうです。サーバに必要なツールをインストール全てrootユーザで作業しています。ドメインは「plantuml.example.com」を使うと仮定します。yumでdockerのインストールを行います。startplantuml-serverの起動dockerで起動します。PlantUMLのサーバはデフォルトだと8080で待つので、80を8080にポートフォワードします。plantuml/plantuml-serverあとはセキュリティグループで80番を空けるだけで、http://plantuml.example.com/にアクセスすると次のようなplantuml-serverの画面が表示されるはずです。PlantUMLからURLを生成するPlantUMLのWebサーバは特定のパスにデータを渡せばUMLを描画してくれます。pngとしてUMLを描画したければ/png/PlantUMLの圧縮文字列、svgで描画してほしければ/svg/PlantUMLの圧縮文字列というURLにアクセスする作りになっています。この「圧縮文字列」さえ作ることができれば、PlantUMLの描画をAPIとして使用することができます。圧縮文字列の生成アルゴリズムは公式に載っています。http://plantuml.com/code-phpこれはphpの例です。自分が使いたいのはrubyなので、rubyで書き直しました。rubyは簡潔に書けて良いですね。endendこのモジュールを実際に使ってみます。test”というPlantUMLの記法から、”UDfpoazIqBLJSCp9J4vLi5B8ICt9oUS204Ai1ZK0′′という文字列が生成されました。この文字列を使用して、http://plantuml.example.com/png/UDfpoazIqBLJSCp9J4vLi5B8ICt9oUS204Ai1ZK0にアクセスしてみます。すると、次の画像が取得できました。いったものは全角文字を使用すると文字化けしたりすることがあるので、一応、全角文字も試してみます。"UDfBoomgBh5IUDmuzt7ZklTx9d8LfoRdvwKWH2PnbMHa5Y49JEPAooyjAib0Y4pXuehMYbNGBItGjLD80nd81IOLT8ioqpDAW88GGw5cA-W2HS26GenMqCr9JGEfWfZB1G2HGJrY"この文字列を使用したURLにアクセスすると、次の画像を取得できました。想定通りなので成功です。実際にこのサーバを弊社の開発しているDocBaseという情報共有サービスに導入してみました。こちらから試してみて下さい。DocBaseについてDocBaseは情報共有を活発にして組織が力を最大限発揮できるようにすることを目指した情報共有・ドキュメント共有サービスです。「いいね!」で応援よろしくお願いします!このエントリーに対するコメントコメントはまだありません。date*日本語が含まれない投稿は無視されますのでご注意ください。fax.0422-26-9781お問い合わせはこちらからどうぞ。