2 ヶ月で Slack のチャンネル数がどれくらい増えるのか測ってみた

記事タイトルとURLをコピーする

こんにちは、技術1課の山中です。
4月にひっそりと入社して、ひっそりと暮らしてきました。

サーバーワークスは基本的に社内のコミュニケーションは全て Slack で行っていて、部活チャンネルやプロジェクトチャンネルなど多くのチャンネルがあります。
そんな私が気になったのは、「どれくらいのペースでチャンネルって増えているんだろう」と気になったので、ひたすら今日までデータを集めてみました。

チャンネルの取得

チャンネルの取得は Lambda で行います。
Lambda を 5 分おきにひたすら動かして Slack のチャンネル数を取得しています。(そんなに頻繁に動かす意味はないかもしれません。
取得した結果は、 CloudWatch に channelsCount というメトリクス名で追加します。

トークンの取得

Legacy tokensにアクセスし Token を発行します。

 

デプロイ準備

今回デプロイには Serverless Framework を使用しました。

serverless.yml
service: slack-python

provider:
  name: aws
  runtime: python3.6
  stage: dev
  region: ap-northeast-1
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "cloudwatch:PutMetricData"
      Resource: "*"
  channel-count:
    handler: channel-count.main
    events:
      - schedule: "rate(5 minutes)"
    timeout: 300
channel-count.py
import os
import sys
sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'vendor'))

import boto3
import datetime
import requests
import yaml

# CloudWatch クライアントの生成
cloudwatch = boto3.client('cloudwatch')

def main(event=None, context=None):

    url = 'https://slack.com/api/channels.list'
    params = {
        'token': 'xoxp-xxxxx-xxxxx-xxxxx-xxxxx',
        'exclude_archived': 'true'
    }

    try:
        response = requests.post(url, params)

        cloudwatch.put_metric_data(
            Namespace='Slack',
            MetricData=[
                {
                    'MetricName': 'channelsCount',
                    'Timestamp': datetime.datetime.utcnow(),
                    'Value': len(response.json()['channels']),
                    'Unit': "Count"
                }
            ]
        )


    except Exception as e:
        print('aborted: ' + e.message)

デプロイ

$ serverless deploy

結果

7/14 から動かし続けた結果はこのようになりました!

約 2 ヶ月でチャンネル数は 995 から 1102 まで増えました。
※途中チャンネル数が減少しているのは、アーカイブされているチャンネルがあるからです。
想像していたより、増えていなかったので引き続きカウントを続けていこうと思います。