どーも、こんにちは。まる(@malmal0v0)です。
趣味でプログラミングの独学支援コミュニティを運営しているのですが、
先月突如Slackのサービス改変が発表。
ワークスペースの全メンバーが有料会員にならないと、90日以上前の履歴を遡ってみることが出来なくなってしまいました。
事業として行っているわけではないし、これではコミュニティが破綻してしまう..!
という事で、過去の投稿履歴を全て呟き直すことで、以前のやり取りを再現させることにしました。
実際の完成図
そして完成したのがこんな感じ↓
各ch内で繰り広げられていたやり取りを、投稿日時の古い順からひたすら呟き直してもらってます。
6時間くらいでつくったのでだいぶやっつけ感がすごいのですが、
自分用だしまあ必要最低限機能しているから良いかなという感じです。(ソースコードが汚すぎて他のエンジニアに見せられない)
みんな大好きPythonで書いてます。
履歴の保存だけでなく、Slackへ再出力
取得した投稿情報(メタデータ含む)をもとに、Slack上に再度投稿し直すことで、事実上の復元を行っています。
テキストベースでバックアップしている方はちらほらいたのですが、Slack上に再投稿させて元の状態に復元(インポート)しようとしてる方があまりいなかったので、作りました。
プライベートchのエクスポートに対応
調べてみるとSlackでは公式のエクスポートだとパブリックチャンネルのみにしか対応していないようですが、こちらはパブリック・プライベート両方対応しています。
各チャンネルごとの全メッセージ履歴と、復元時に必要となるワークスペースの全参加者をJSONで保管し、整形して復元させてます。
投稿に添付していた画像も保存可能
メッセージだけでなく、キャプチャーやスクリーンショットといった添付された画像ファイルも同時に保管しています。大事な情報がテキストベース以外で挙げられていた場合などにこれは助かりますね。
メッセージべた貼り式
タイムスタンプ情報もとに紐づけてスレッド再現する、みたいなことも出来そうなんですがそこまではやってないです。
一覧でchにバーっと投稿し直されるので、メッセージ検索などには支障ありません。
仕様上の制限
欠点としては、履歴数の最大取得値が1000件であるということ。
これは、API側の仕様なのでどうしようもなく、1000件を超えるやり取りを行うような大規模なワークスペースは予算あるだろうから課金してくれ、ってことなんでしょうかねえ。
逆に、そこまでメッセージをしないよ、という10人前後の様な少人数規模のワークスペースであれば、メッセージ上限1000件までは半永久的に無料で使えるままの状態に出来る、という感じですね。
(まとめ)タダほど高いものはない
ということで、無理くりSlackの90日の履歴制限を突破するツールを作ってみました。
今回のサービス改変に様々な業界から悲鳴が上がっていますが、元々これだけのクオリティのものを無料で提供していたことが本来あり得にくいことだったんじゃないかと思います。
Slackも株式会社である以上、どこかで収益を立てないと潰れてしまいます。収益性の見込めない事業は買収されませんし、売上がないと経営が破綻してSlackというサービスそのものが終了してしまう可能性もあるわけです。
つまり、経営戦略的には元々大きく育ったタイミングで有償化(値上げ化)を考えていたであろう、というのは充分考えられる筈で、一方で多くのユーザーは提供される便利なサービスを「当たり前」のように使ってその背景に対する認識をしていなかった、というのが今回感じたことです。
もちろん、値上がりしすぎることでユーザーが離れてしまってはSlack的にも本末転倒ですが、昨今はかのGoogleですら、クラウドストレージに月額課金制を導入するようになりました。近年はソフトウェア業界の有償化も一般化しつつあります。
一昔前まではフリーソフトだらけだったSSDのクローンソフトも今ではほとんどのものが有償化したので、今後もこの潮流は増えていくのかもしれません。
先を見て、サービスに振り回されないユーザーでありたいですね。(この2日間これ作るのに振り回されたけど)