つばろぐ

主に C#, .NET, Azure の備忘録です。たまに日記。

Backlogの通知をSlackに連携する「backlack」を公開しました(Azure Functions版)

タイトルで全部説明してる感ありますが、Backlogで行ったコメント関連の通知をSlackに連携するコードを書きました。
backlack」という名前を付けました。

ソースコードGitHubにて公開していますので、自由にお使い下さい。

github.com

作った経緯

元々、社内で使うために年末年始にせっせと作って利用していました。
弊社ではタスク管理にBacklog、チャットツールにSlackを使用しています。
BacklogもSlackもシンプルなUIで本当に使いやすいツールです。

www.backlog.jp

BacklogやSlackには社内のメンバーだけでなく、別事務所で働くメンバーやパートナー様も入っており、記録として残しておきたい指示や報告をBacklogで行っています。

Backlogにはコメントを書いたときにどのメンバーへ通知を行うかを指定する機能があります。
指定された人にはBacklog上に通知が表示されます。

f:id:tech-tsubaki:20170121213748p:plain

f:id:tech-tsubaki:20170121213756p:plain

しかしBacklog上の通知は、通知力に乏しいと常々感じていました。
複数のプロジェクトやメンバーとやり取りを行うと、どうしても通知が増え、見落としてはいけない通知を見落としてしまう場面もよくありました。

↓こんな感じの状態を経験した方、いるんじゃないでしょうか?

f:id:tech-tsubaki:20170121220703p:plain

これまでは、通知した相手が見落とさないように、BacklogにコメントしたURLをSlackで改めて伝える、という二度手間なやり方をしていました。
しかしこのようなやり方は、はっきり言って無駄でありながら、回数が増えれば時間的損失も多いやり方でした。

そこでこのBacklogの通知をSlackで受け取るようにすれば、通知をスルーしてしまうことも減るんじゃないかと思い、このツールを作りました。

構成

図にするとこのような形になります。

f:id:tech-tsubaki:20170121214734p:plain

  1. BacklogのWebhookの送信先に、Azure FunctionsにデプロイしたbacklackのURLを指定する。
  2. backlackは、受信したWebhookデータから通知先のSlackチャネルやコメント内容を抽出する。
  3. backlackからSlackのIncoming WebhookのURLに対して、通知データをPOSTする。

動かしてみたサンプル

SlackのMessage Attachmentsという機能を使えば、Backlogから流れてくるコメントも折り畳まれて表示されるので、ぱっと見すっきりします。
「コメントを受取ったことを通知する」ことに重きを置いて作ってます。

Slackで受取った通知は下記のような感じになります。

f:id:tech-tsubaki:20170121214123p:plain

所感

この機能を作って以降、Backlogの通知を見落とすこともなくなり、結果的に Backlogの通知力を高める 形になったんじゃないかなーと思ってます。

私はAzure Functionsで動作するように作りましたが、少し構成を変えればAWS Lambdaでも動くはずです。

こんな機能も欲しいとか、Lambda版作ってみたぜ!とかあれば、Pull RequestやIssueをお待ちしています。

追記

使い方についてはこちらの記事で説明してあります。

tsubalog.hatenablog.com

JXUG福岡支部発足記念勉強会でXamarinで.NET Coreを活用する話をしてきました

JXUG(Japan Xamarin User Group、"じぇいざぐ"と読む)の福岡支部が発足することを記念した勉強会が行われました。参加報告です。

jxug.connpass.com

Xamarinとは、C#を用いてマルチプラットフォームなモバイルアプリケーションを作ることのできるフレームワークです。
JXUGはXamarinのユーザグループの略称です。
これまで福岡には支部がありませんでしたが、この度福岡支部が発足されることとなりました。

私が運営に携わっているFukuoka.NET(ふくてん)も、今回の勉強会に共催という形で参加させて頂きました。
参加者、スタッフを合わせて約50名となり、多くの方に参加してもらえて主催者の一人として嬉しく思います。

当日の様子はTwitterを見るのが一番分かりやすいかな。

勉強会のメインはXamarinハンズオンでしたが、ふくてんも登壇枠をもらいましたので発表してきました。

Xamarinでも有能な .NET Core

.NET CoreでXamarin向けのライブラリを作るときは、project.jsonに記載するTarget Framework Moniker(TFM)netstandard を指定するといいよ、という内容で発表しました。
デモも行いましたが、プロジェクターの映像が複製になってなかったり、映像の端が切れてたりで見苦しかったと思います。反省。

デモで使ったコードは公開しています。

github.com

Target Framework Moniker(TFM)について参考にしたリンクはこちらです。

ハンズオン

ハンズオンはこちらの資料が元となっています。私は参加者のサポートしながらだったので、日を改めて再挑戦したいと思います。

github.com

github.com

感想

これまで交流の無かった方々とも知り合うことができて、とても有意義なイベントでした。
登壇者やスタッフの皆様、本当にお疲れ様でした。

オマケ

ちょまどさんが会場のホワイトボードに書いてましたね。さすがお上手です。
いいねがハイペースでついて驚きました。

DocumentDB SDK for .NET Core(Preview)を試しつつ、ローカルなDocumentDB環境を作ってみた

この記事は .NET Core Advent Calendar 2016 5日目の記事です。

11月中旬にAzure DocumentDB .NET Core向けのSDKのプレビュー版の提供が始まりました。

Azure DocumentDBとは

Microsoft Azureが提供する フルマネージドなNoSQLデータベースサービス です。
これまでDocumentDBのSDKは下記の言語が提供されていました。

docs.microsoft.com

冒頭でも述べたようにこれらのSDKのラインナップに「.NET Core」が加わりました。

DocumentDB .NET Core Preview SDK available

私自身、待ち望んでいたところがあるので試してみました。

SDKのインストール

まずはVisual Studioで.NET Coreのプロジェクトを作成します。
作成したプロジェクトを右クリックして「NuGetパッケージの管理」をクリックします。
パッケージマネージャにて Microsoft.Azure.DocumentDB.Core を検索し、インストールを行います。

f:id:tech-tsubaki:20161203224842j:plain

もしくはパッケージマネージャーコンソールにてインストールコマンドを発行します。

PM> Install-Package Microsoft.Azure.DocumentDB.Core -Pre
'nuget.org' からパッケージ 'Microsoft.Azure.DocumentDB.Core 0.1.0-preview' を取得しています。
NuGet パッケージ Microsoft.Azure.DocumentDB.Core.0.1.0-preview をインストールしています。
'Microsoft.Azure.DocumentDB.Core 0.1.0-preview' が MyDocumentDB に正常にインストールされました
NuGet の操作の実行に 42.79 ms かかりました
経過した時間: 00:00:01.3186288

機能

プレビュー公開についての記事によれば、.NET向けのSDKと同一の機能を有しているそうです。
なのでアプリケーションでDocumentDBを使う上での必要な機能は既に揃っていることになります。

DocumentDB .NET Core Preview SDK available

The DocumentDB .NET Core Preview SDK has feature parity with the latest version of the DocumentDB .NET SDK

データベースの作成、コレクションの作成、JSONドキュメントの作成など、基本的な機能の使い方はドキュメントを読んだほうが分かると思います。

docs.microsoft.com


とまぁこれだけだと大したブログにならないですね。

(オマケ)DocumentDBの環境をローカルに作る方法を試してみる

エミュレータを使ってローカルにDocumentDBの環境が作れるというもの。いつ頃でてたんだろう?
どうしてもDocumentDBを使ったアプリだと、ローカルでデバッグする際もデータベースだけはAzureにアクセスしないといけなかったので、オフラインだと開発しづらかった面がありました。これは早くに知っておきたかったですね。
元ネタはこちらです。

docs.microsoft.com

使用するのは DocumentDB Emulator というものです。Microsoftが提供しています。
必要なスペック要件としては、OSはWindows Server 2012 R2以上、またはWindows10のようです。
また、メモリは2GB、ディスク空き容量は10GBとのこと。

f:id:tech-tsubaki:20161204133629j:plain

SDKを使用してDocumentDBにアクセスするには、エンドポイントとアクセスキーを用いた認証が必要となります。
エミュレータの場合、エンドポイントは https://localhost:8081/ 、アクセスキーはドキュメントに記載されています。

接続先をエミュレータに変えてしまえば、他のコードを変更する必要はありません。
エミュレータのDocumentDBに格納されているデータを確認する場合は、タスクトレイのアイコンをクリックし[Open Data Explorer...]をクリックすればよいです。

f:id:tech-tsubaki:20161204140016j:plain

f:id:tech-tsubaki:20161204140156j:plain

DocumentDB Emulatorの標準ポートは8081ですが、このポート番号だと都合が悪い場合、Emulatorのコマンドラインでの起動引数にて別ポートを指定できるようです。

インターネット接続が必要なクラウドサービスを使ったアプリケーションの開発が、ローカルかつオフラインでできるのは素晴らしいですね。

最後にこの記事を書くために使用したコード(リポジトリ)を置いときます。
デバッグ実行時はDocumentDB Emulatorに接続するようなコードにしています。

github.com


※追記

この記事を書いてたらScott HanselmanさんのブログにDocumentDB Emulatorの記事が公開されていた。なんとタイムリーなw

www.hanselman.com