2017/12/15
Atlassian Connect の Static アドオンはえらい廣田 隆之Takayuki Hirota

このエントリーは、 Atlassian(JIRA , Confluence, Trello, Bitbucket)のTips Advent Calendar 2017 – Qiitaの17日目です
昨年に続き、Atlassian Cloud 向けアドオン開発基盤である Atlassian Connect について書きます。
Server 版の Jira や Confluence のアドオン開発では、Java 言語で書いたソースコードをビルドして jar ファイルを作ります。
Atlassian Marketplace でアドオンを配布する場合は、できあがった jar ファイルを Atlassian Marketplace にアップロードしておきます。
世界中の Atlassian ユーザーは、この jar ファイルをダウンロードして各自の Jira や Confluence にインストールする、という仕組みです。
Cloud 版のアドオン開発では、jar ファイルではなく Web サービスを用意します。
Atlassian Marketplace には、この Web サービスの URL を登録します。
Atlassian Cloud の各アプリケーション(Jira, Confluence など)とは REST API や Web フック経由でやり取りを行います。
アドオンを Marketplace に公開するのであれば、24時間365日、世界中の Atlassian ユーザーからアクセスできる状態にしておかねばなりません。
「Web サービスを用意」と言うは易しですが、可用性の高い Web サービスを運用するのは簡単ではありません。
特に Server 版のアドオン開発を中心に行ってきたエンジニアにとっては少々ハードルが高いのも事実。
そんなときはサーバーレスアーキテクチャを効果的に採用して、エンジニアはアプリケーション開発に注力したいものです。
幸い、Atlassian Connect の仕組みはサーバーレスアーキテクチャと相性が良く、最小構成であれば HTML ファイルと JSON ファイルを用意するだけで Cloud 版アドオン(Static アドオンといいます)を実現できます。
静的ファイルを用意するだけであれば、Web サーバーにファイルを置いておくだけなので、アプリケーションサーバーの拡張やデータベースサーバーのチューニングに頭を悩ませることもなさそうですね。
本ブログでは Bitbucket Cloud 向けのアドオンを Bitbucket Cloud の機能で作ってみようと思います。
まずは Web サービスを用意する必要があるので、Publishing a Website on Bitbucket Cloud を参考にして、Bitbucket に静的なファイルを配置してみます。
https://bitbucket.org/ でリポジトリを作成します。
リポジトリ名は “アカウント名.bitbucket.io” とします。
リポジトリをクローンして適当な index.html をコミット&プッシュします。
ブラウザで https://アカウント名.bitbucket.io/index.html にアクセスし、画面が表示されることを確認します。
Server 版アドオンの atlassian-plugin.xml に相当する、アドオン定義ファイルを作成します。
以下のコードは、Repo Page モジュールを使用してリポジトリ画面のサイドバーにメニューを一つ追加し、アドオン独自のページを表示するものです。
{
"key": "hello-app",
"name": "Hello App",
"description": "Hello app for Bitbucket",
"vendor": {
"name": "Ricksoft",
"url": "https://www.ricksoft.jp/"
},
"baseUrl": "https://rshirota.bitbucket.io",
"authentication": {
"type": "none"
},
"modules": {
"repoPage": [
{
"url": "/hello.html?repoPath={repo_path}",
"name": {
"value": "Hello Page"
},
"location": "org.bitbucket.repository.navigation",
"key": "hello-repo-page",
"params": {
"auiIcon": "aui-iconfont-doc"
}
}
]
},
"scopes": ["account", "repository"],
"contexts": ["account"]
}
all.js ファイルは Atlassian Connect フレームワークの本体ともいうべきファイルで、この js ファイルを使ってクライアント側の様々な処理を実装します。
<!DOCTYPE html>
<html>
<head>
<script src="https://bitbucket.org/atlassian-connect/all.js"></script>
</head>
<body>
Hello bitbucket!
</body>
</html>
2つのファイルをリポジトリにコミット&プッシュします。
以上でアドオン側の実装は完了です。
Bitbucket 設定 > 統合の管理 でアドオンの URL を指定してインストールします。
インストールが成功すると、アドオンの一覧に表示されます。
リポジトリ画面のサイドバーにメニューが表示され、クリックすると hello.html の中身が表示されました。
今回はシンプルな Static アドオンで実装してみましたが、REST エンドポイントを作ったり、Atlassian Cloud のイベントをフックしたりといった場合は、サーバー側での作り込みが必要になります。
AtlasCamp 2017 のプレゼンテーション(Atlassian Connect on Serverless Platforms: Low Cost Add-Ons | Atlassian)では、サーバーレス Connect アドオンを実現するヒントや Tips が紹介されているので興味のある方はご覧ください。
Atlassian Cloudについて、または価格などは下記より製品ページをご覧ください。
また、Atlassian Cloudについてのご相談などがありましたら、下記よりお気軽にご相談ください。
アトラシアン社ではサポート範囲外となっているサードパーティ製のアドオンをリックソフトのRS標準サポートではサポートします。
リックソフトのRS標準サポートは開発元が提供するサポート以上の価値があります。
ツールを導入しただけでは成功とはいえません。利用者が効果を感じていただくことが大切です。独自で制作した各種ガイドブックはツール活用を促進します。
リックソフトからライセンス購入を頂いたお客様にはガイドブックを無料進呈いたします。
ツール操作の研修だけでなく「ウォータフォール型開発」「アジャイル型開発」のシミュレーション研修も提供。
日本随一の生産性向上にも効果のある研修サービスです。
リックソフトからライセンス購入を頂いたお客様には無料招待や割引特典がございます。