Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

地方エンジニアが実践するアウトプット継続のための2つの戦略

7月25日(木)に仙台の「タガヤス:東北のITを盛り上げて行きたい!」という志のもと集まった団体で『好きな技術の学び方(ナレッジのI/O)』というテーマで1セッション担当することになりました。

tagayas.connpass.com

はじめは「へー、ちょっとおもしろそう」みたいな感じだったのですが、改めて私の情報発信・アウトプット戦略の棚卸ししたら少し面白いかもなぁと思いながら、これをまとめています。

誰に向けて?

これはあくまで「私」の経験と考え方に基づく、より良い「学び方」「情報発信」「アウトプット」、そして「継続」のための戦略です。それは私が考えるエンジニアとしての生存戦略でもあります。

なので身近に存在している一般的(?)な地方エンジニアの一例として聞くのが吉ですが、なかなかアウトプットを継続できない、アウトプットがうまくできない、と悩んでいる方の一助になればとも思い書いています。なのでどちらかといえば、若手エンジニアや新入社員向けだと思います。

ちなみに、私がどんなアウトプットをしているのか、は以下の記事でざっくりまとめています。

kageura.hatenadiary.jp

続きを読む

新しいデータ可視化ソリューション「Reveal」を使ってみた(#Dynamics365 for CE に接続)

UIコンポーネントベンダーであるインフラジスティックス(https://jp.infragistics.com/)から新しいデータ可視化ソリューション「Reveal」の提供が開始されました!

他のデータ可視化ツール(BIツール等)とは違って、自社サービスやアプリケーションに組み込むことを前提に提供されているのが、大きく違う点ですねー!(ここはすごくインフラジスティックスさんらしい。)

どんなソリューションなのか、実際にWeb上で触ってみることができたので、記事としてまとめてみました。

公式サイトは以下から。ここからトライアルも可能です。

revealbi.io

f:id:sugimomoto:20190702125938p:plain

ちなみに、今回の記事では組み込みではなく、シンプルにWeb版で提供されているアプリケーションとしてどんな感じのものか触ってた記録になります。でも、これだけでも組み込んだ時のイメージが結構湧きますね。

https://cdatajbuilds.s3-ap-northeast-1.amazonaws.com/sugimototest/Reveal3.gif

なお、日本ではインフラジスティックスジャパン主催のイベント「Distinct 2019」で正式発表になるみたいです。(と言いながら、このBlogを書いている数時間後に開催です)

connpass.com

続きを読む

#decode19 に参加&登壇してきましたレポート

年に1回開催される Microsoft の技術者向けカンファレンスであるdecode 2019 に参加&登壇してきました!

https://www.microsoft.com/ja-jp/events/decode/2019/default.aspx

f:id:sugimomoto:20190603214538p:plain

本当は去年 CData Software Japan のスポンサー枠で出展・登壇する予定だったのですが、私用で急遽参加できなくなっていたので、リベンジも兼ねて行ってきました!

  • 私のセッション:誰のための API?
  • 私が参加したセッション:1日目
    • 基調講演 #KN01
    • Azure Data Services で実現するエンタープライズ データ分析基盤解説 #DP04
    • HoloLens を活用した働き方改革! Dynamics 365 Guides・Remote Assist 活用手法と環境構築を解説します #CM05
    • SNS 分析を 20 分で作成! Power Platform の活用術 #PR81
  • 私が参加したセッション:2日目
    • .NET とクラウド ネイティブ ~ 本格化するクラウド移行とそのアーキテクチャ (前編) #DT07
    • デモで魅せます! 近未来の企業システム #SP04
    • SQL Server 2019 Big Data Cluster 入門 #DP01
    • C# ドキドキ・ライブコーディング対決 @ de:code - ONLY C#!! Blazor Web 開発バトル - #MW51
  • おわりに
続きを読む

LogicAppsでHTTPコネクタを使う時、SwaggerSpec(OpenAPI)を挟むと楽ができるよというお話

SwaggerってなんとなくAPIを開発する側やAPIを使ってプログラミングする側が嬉しいよねー、っていうシチュエーションで語られることが多いと思うんですが、今ローコードな界隈でも結構役立ちます。

Swagger なにそれ? みたいな方は以下の記事をどうぞ。

bit.ly

その一例がMicrosoftが提供している「LogicApps」での活用です。

https://azure.microsoft.com/ja-jp/services/logic-apps/

f:id:sugimomoto:20190524232549p:plain

LogicAppsではフローチャートを描くようにGUIベースでデータ統合処理を開発することができる、PaaS基盤です。

標準のHTTPコネクタはこんな感じ

LogicAppsは標準でも数多くのSaaSクラウドサービス・DBに接続するためのコネクタが提供されていますが、標準提供以外のWeb APIなどと連携するために「HTTP」コネクタが用意されています。

コネクタを開くと、おそらくPostmanなどを普段使う人にとっては馴染み深い画面が表示されます。 「あー、Method選んで、URI書いて、ヘッダー書いて、URLパラメータとしてクエリ書けばいいのね。ふむふむ」みたいな人はこれで済みますが、そういったことに馴染みが薄い人はなかなか大変です。

(知っている人でもちまちまドキュメントからコピペしてくるのは面倒だと思う)

f:id:sugimomoto:20190524232558p:plain

せっかくなのでこのAPIを通じてCustomer情報を取得して、Dynamics 365 に取引先担当者を作るための処理をGIF動画に撮ってみました。

https://s3-ap-northeast-1.amazonaws.com/cdatajbuilds/sugimototest/LogicApps/NormalHTTPRequest.gif

URLやヘッダー、パラメータを手打ちしなければいけず、また取得した本文も一度JSON解析をしなければいけないのが若干面倒ですね。(慣れてしまえばそんなことも無いかもだけど)

そこで HTTP + Swagger を使おう

そこで、Swagger ベースで公開されている API であればさくっとHTTPリクエストが使えるようになる「HTTP + Swagger」を使ってみます。

f:id:sugimomoto:20190524232616p:plain

https://s3-ap-northeast-1.amazonaws.com/cdatajbuilds/sugimototest/LogicApps/SwaggerHTTPRequest.gif

今回使うAPIは以下のとおりです。顧客情報であるCustomerリソースを取得・作成・更新・削除するエンドポイントを備えています。

https://decodeapiserverdemo.azurewebsites.net/api.rst

f:id:sugimomoto:20190524232624p:plain

このAPIの作り方は、以下のURLから。

kageura.hatenadiary.jp

このAPIではSwaggerで作られているのと同時にSwagger Specを取得するためのエンドポイントもサポートしています。以下のURLでアクセス可能。

https://decodeapiserverdemo.azurewebsites.net/api.rsc/@1q0E5n7v8V1k4r1U5g0e/$swagger

f:id:sugimomoto:20190524232711p:plain

これを「HTTP+Swagger」に取り込むと

f:id:sugimomoto:20190524232717p:plain

こんな感じで、APIの機能をリストアップ

f:id:sugimomoto:20190524232725p:plain

URLパラメータや認証処理なんかもさくっと選択して入力することができます。

f:id:sugimomoto:20190524232745p:plain

また予めレスポンスオブジェクトのフォーマットがわかっているのでそのままValueを取り出して、値を設定することができます。

f:id:sugimomoto:20190524232753p:plain

注意点

Swaggerを取り込むためのURLはCORSが許可されていないとLogicAppsがアクセスできないです。

もし、CORSが許可されていない場合は、Azure Storeageに配置してCORSを許可する方法があります。(ただちょっと面倒か)

Reference

docs.microsoft.com

Slack の利用状況を可視化して見えてくるものってなんだろう? Power BI と CData Slack Connector で利用状況レポートを作る方法

最近Twitterでこんなご意見をもらいました!

社内利用状況レポート! なるほど!

最近はビジネスチャット戦国時代ですもんね。Slackを筆頭に、TeamsやChatWork、LineWorkなど、どんどんサービスが増えて、盛り上がっているなーと感じます。

boxil.jp

ただ、導入したとしても、うまく活用されているのかってやっぱり気になりますよね。もっと有効活用されるには、もっとコミュニケーションが活発になるにはどうしたらいいのか? いろんな会社・コミュニティで試行錯誤しているのかなとも感じています。

そこでやっぱりひとつの指針として(サブスクリプションサービスにお金を払っているなら尚更)、利用状況というのは可視化したいというニーズは強いのでしょうね。

でも実際のところ利用状況レポートってどうなの? 役立つの? 

ただ、私自身実際にデータは取れることは理解していても、Slackのデータを分析することで見えてくるものが本当にあるのか? ってわからなかったんですよね。

そこで今回は、Slackをベースにチャットツールからのデータの取得の仕方だけでなく、実際にレポートとして作成したものを紹介して、どんな情報が可視化できるのか!? 試してみた結果をお届けします。

また、チャットツールって結構会社さんごとに使い方にばらつきがあるのではないかと思っているので、SNSを通じて、みんなが使っているSlackの状況を共有してもらおうと考えています!

いい感じに協力してくれた方のレポートが集まったら、それをまとめた記事+勉強会での発表もしようかなと考えていますので、是非ご協力いただければと思います!

こんなレポートが出来上がった!

早速ですが、作成した Slack 利用状況レポートを紹介したいと思います。

今回はなんと Microsoft Power BI MVP の清水さんに協力頂いてレポートを作成してもらうことができました!

こんな感じのレポートです! 接続先は清水さんがイベントの管理などで利用しているSlackとのこと。

f:id:sugimomoto:20190516195540p:plain

Messages数の偏りやチャネルごとの投稿状況、時間帯別の投稿状況が可視化されていて、面白いレポートに仕上がっています!

f:id:sugimomoto:20190516195546p:plain

そのSlackの役割にもよるかもしれませんが、メインのチャネルが固定されていて、ユーザー投稿にもかなり偏りがあることが見て取れます。

私は勝手に、チャネルごとにみんなバラバラ投稿しているんじゃないかなと思っていたりしたのですが、やはりSlackごとに特色があるものですねー。

ちなみに、以下のURLでReportのテンプレートの使い方を公開しています!

bit.ly

是非試してみてください! そしてよかったら、Poewr BI Facebook Groupかツイッターで流してもらえると、みんなで比較ができるので、いろんな考察が捗るのではないかと思っています。

Slackのデータはどうやって取得するの?

それでは実際にレポートを作るためのデータ取得方法を解説したいと思います。

Slackのデータは現状Power BI に標準のコネクタが無いので、基本的には Web API 経由で取得しないといけません。ただ、認証だったり、取得したJsonのパースだったり、テーブル形式に直したりと、手間がかかることが多いので、CData Slack Power BI Connectorを使って、楽をします。

f:id:sugimomoto:20190516195636p:plain

https://www.cdata.com/jp/drivers/slack/powerbi/

こちらのページから「ダウンロード」をクリックして、評価版を入手してみてください。

継続的にデータを分析するのであれば製品版が必要ですが、一回きりの取得であれば、機能差は無いので評価版で大丈夫です。

ダウンロード後、インストーラーが起動するので、そのまま次へ進めていきます。

f:id:sugimomoto:20190516195702p:plain

インストールが完了すると、以下のように接続設定の画面が表示されます。

特に入力は不要で、そのまま「接続のテスト」をクリックすればOKです。

f:id:sugimomoto:20190516195708p:plain

すると、以下のようにOAuthの承認画面が表示されるので、内容を確認の上「許可する」をクリックしてください。

f:id:sugimomoto:20190516195714p:plain

f:id:sugimomoto:20190516195719p:plain

以下のような画面が表示されれば接続OKです。接続画面もそのままOKをクリックして閉じます。

f:id:sugimomoto:20190516195725p:plain

Power BI でのデータ取得方法

それでは、Power BIからSlackのデータを取得してみます。

まずは手軽にチャンネルの一覧から。

f:id:sugimomoto:20190516195731p:plain

CData Power BI Connectorのインストールが正常に完了していると、データを取得の一覧で、以下のようにCData Slackのアイコンが追加されます。これを選択して、「接続」をクリックします。

f:id:sugimomoto:20190516195738p:plain

最初にサードパーティサービスの確認が出てくるので、そのまま続行をクリック

f:id:sugimomoto:20190516195743p:plain

Data Source Nameを選択(1種類しか無いはずです)して、OKをクリックします。ちなみに、CData Power BI ConnectorはSQLでSlackのデータが取得できるようになっているので、SQL Statementのところに「SELECT * FROM hogehoge」と書いてもデータが取得できますが、それは後ほど。

f:id:sugimomoto:20190516195749p:plain

ナビゲーターの画面では、取得できるテーブルの一覧が表示されるので、Channelsを選択して、読み込みます。

f:id:sugimomoto:20190516195755p:plain

すると、こんな感じでチャンネルの一覧が取得できます。

f:id:sugimomoto:20190516195801p:plain

Messageの取得方法

Messageの取得方法は若干特殊です。

もともとSlackのAPIでは、Messageの取得処理にChannelIdが必要となっているので、CData Power BI Connectorを使う場合も、ChannelIdをWhere句で指定する必要があります。

今回はすべてのチャネルからメッセージを取得したいので、Power Queryを使ってこれを実現します。

新しくデータを追加するため、「クエリの編集」をクリックし

f:id:sugimomoto:20190516195943p:plain

「空のクエリ」を追加します。

f:id:sugimomoto:20190516200107p:plain

詳細エディタを開いて、以下のようなクエリを追加します。

let
    Source = "CData Power BI Slack",
    ChannelsQuery = "select * from Channels ",
    MessagesQuery = "select * from Messages Where ChannelId = '",
    
    Channels = CData.Slack.DataSource(Source, null, [Query = ChannelsQuery]),

    ChannelRecoreds = Table.Column(Channels,"Id"),

    AllData = Table.Combine(
    List.Transform(
        ChannelRecoreds,
        each CData.Slack.DataSource(Source, null, [Query = MessagesQuery & _ & "'" ])
        )
    )
in
    AllData

f:id:sugimomoto:20190516200327p:plain

やっていることは単純で「select * from Channels」で取得してきたチャネル一覧を元に、「"select * from Messages Where ChannelId = 」で各チャネルからメッセージを取得しています。

これで、以下のようにメッセージ一覧が取得できます。

f:id:sugimomoto:20190516200505p:plain

あとは取得したデータのリレーションを構成して、レポートを作成できる環境が整います。

f:id:sugimomoto:20190516200607p:plain

おわりに

Power BI で Slack の利用状況を可視化しよう!How to use Power BI Template & CData Power BI Connectoer

この記事では、Power BI Slack 利用状況可視化レポートの使い方を解説します。

実行すると、自身のSlack環境に接続でき、以下のようなレポートが自動で表示されます!

レポートは初期状態でチャネル名やユーザー名を伏せた状態になるので、このままキャプチャしたものを公開してもSlack内の情報が漏れることは無いので安心してください。

f:id:sugimomoto:20190516193809p:plain

f:id:sugimomoto:20190516193815p:plain

Report のTemplateは以下のURLから入手できます。

https://s3-ap-northeast-1.amazonaws.com/cdatajbuilds/sugimototest/SlackPowerBI.zip

Power BI Report Templateの作成には、Power BI の Microsoft MVP である清水さんにご協力いただきました! ありがとうございます!

twitter.com

清水さんは他にも様々なレポートを公開しています。是非見てみてください。

qiita.com

必要なもの

実施にあたり必要なものは以下のとおりです。

  1. Power BI Desktop ※古いバージョンの場合、Templeateが利用できない可能性があるため、最新バージョンをインストールしてください。

  2. Power BI Slack Report Template(こちらからダウンロード https://s3-ap-northeast-1.amazonaws.com/cdatajbuilds/sugimototest/SlackPowerBI.zip

  3. CData Power BI Slack Connector (https://www.cdata.com/jp/drivers/slack/powerbi/

  4. Slack アカウント

注意事項

  1. 無償版 Slack の場合、1環境に登録できるアプリが10までとなっているため、すでに10個アプリを接続している場合は、使用することができません。

  2. 無償版Slackの場合、取得できるメッセージの上限が10,000件までです。そのため、チャネルによっては、

1. CData Power BI Slack Connector のダウンロード・セットアップ

まず Power BI から Slackに接続できるようにするために、CData Power BI Connector を入手します。

以下のURLから30日間のトライアル版がダウンロード可能です。機能制限は無いため、今回はそのまま利用できます。

https://www.cdata.com/jp/drivers/slack/powerbi/

ダウンロードをクリックし

f:id:sugimomoto:20190516194003p:plain

「ダウンロード評価版」を選択します。

f:id:sugimomoto:20190516194011p:plain

必要情報を入力して、「ダウンロード」をクリックしてください。

f:id:sugimomoto:20190516194017p:plain

ダウンロードした、インストーラーはそのまま次へ次へと進めれば、完了します。

f:id:sugimomoto:20190516194023p:plain

2. Slack への接続設定

インストール後、以下のような画面が立ち上がるので、特に何も入力せず「接続のテスト」をクリックしてください。

(ProxyServerなどを経由したい場合は別途設定ができます。わからないことがあれば、私のTwitterFacebookまでどうぞ。@sugimomoto)

f:id:sugimomoto:20190516194029p:plain

「接続のテスト」をクリックすると、OAuth認証処理が開始されるので、ログインするSlackのアカウントを選択した後、接続の許可を行います。

f:id:sugimomoto:20190516194034p:plain

f:id:sugimomoto:20190516194040p:plain

最終的に以下のような画面が表示されれば、接続構成はOKです。

f:id:sugimomoto:20190516194048p:plain

3. Report Template を立ち上げる

最後にダウンロードした Report Template を開きます。

f:id:sugimomoto:20190516194053p:plain

立ち上げるとODBCの接続情報入力が表示されるので「CData Power BI Slack」と入力します。(※スペースなどに気をつけてください)

f:id:sugimomoto:20190516194058p:plain

すると、先程接続構成を行ったSlackからデータの取得処理が開始されます。

f:id:sugimomoto:20190516194105p:plain

取得が完了すると、以下のようにレポートが表示されます。

f:id:sugimomoto:20190516194113p:plain

4. よかったら FacebookTwitter でシェアしてください。

Facebook で Power BI Groupがあるので、是非投稿してください。

www.facebook.com

また、ツイッターでのツイートも大歓迎です! 以下はハッシュタグ付きのツイート用URLです。

twitter.com