0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Slackの投稿データをMattermostに移行してみる

Last updated at Posted at 2022-10-28

背景と概要

Slackのフリープランを自分のメモ用と家族の情報共有用に使っていたが、2022年9月1日に料金プランが更新され、フリープランだと過去90日間の投稿しか見れなくなってしまった…。昔のメモが見れなくなってしまうのは若干困るのだが、有料プランに変更するほど使いまくっているわけでもなく、可能ならば無料のままで過去の投稿も見れるようにしたい。
MattermostだとSlackみたいなサービスを自分で構築できるので、今までのSlackの投稿データをMattermostに移行してみることにした。

この種の情報はググると沢山出てくるので、基本的な手順などは各記事へのリンクを参考にしていただきたい。本記事では、これらのリンクの情報を参考にしてどのように移行したかを記載する。

また移行においてslack-exportのPythonツールを使わせていただいたが、slack_export.pyの修正が必要で、そのやり方に関しては現状テキストでの簡単な記載しかしていない不完全な状態なのでご了承願いたい。

手順

(1) Mattermost環境の構築

例えば以下のサイトを参考に、Docker Composeで作成する。

(2) Slackの投稿データのエクスポート

以下のREADMEとソースを参考にさせていただいた。

(2-1) エクスポート用のアプリを作成

上の記事のREADMEにも書かれているが、事前にエクスポート用のアプリをこちらから作る必要がある。

  • 手順概要

    • 右上の「Create New App」ボタンをクリック
    • 「From an app manifest」を選択して、以下のYAMLマニフェストを記載
    • アプリ作成後に発行されるOauth Tokenを以後利用するので控えておく
    display_information:
      name: [任意の名前]
    oauth_config: 
      scopes:
        user:
          - channels:history
          - channels:read
          - groups:history
          - groups:read
          - im:history
          - im:read
          - mpim:history
          - mpim:read
          - users:read
     settings:
      org_deploy_enabled: false
      socket_mode_enabled: false
      token_rotation_enabled: false
    

(2-2) 投稿データのエクスポート

こちら(再掲)のツールを参考にjson形式のエクスポートデータを作成する。
現時点だと「各チャンネルの投稿テキスト」と「ダイレクトメッセージ」のみの出力で、これだけではMattermostへのインポートのために必要なデータが足りない模様。これ以外にもいくつか修正必要で、ソースslack_export.pyで修正が必要な内容を以下に記載する。(本当は作ったソースをGitHubとかに上げればいいのだが、現状は文章のみでの共有になっておりあしからず)

  • 投稿データの出力ディレクトリの変更
    • 元のソースは「指定したディレクトリ」直下に出力されるので、各チャンネル(および各ダイレクトメッセージ)毎にその名前のディレクトリを個別に作って、jsonファイルはそこに格納するよう修正
  • fetch_users関数で取得したユーザ一覧
  • fetch_channels関数で取得したチャンネル一覧
$ python slack_export.py \
--token [アプリ作成時に発行されたトークン] \
--output-dir output \
--output-format json

outputディレクトリの構成は以下のような感じになる。各ディレクトリのmessages.jsonは任意のファイル名で問題なさそう。

$ tree ./output
./output
├── channels.json
├── users.json
├── general
│   └── messages.json
├── random
│   └── messages.json
├── channel1
│   └── messages.json
├── channel2
│   └── messages.json
...
├── direct-message1
│   └── messages.json
...

上記のディレクトリ構成は、Slackからデータをエクスポートした際のzipを展開してみると参考になる。また、こちらにもフォーマットの説明があり助けになりそう。

エクスポートしたデータはzip化する。

$ cd ./output
$ zip -r slack_export.zip .

slack_export.zipは次の手順で利用する。

フリープランの場合、過去90日間の投稿データしかエクスポートできない。過去データもエクスポートしたい場合は、30日間の無料トライアルモード等を使う必要あり。

(3) Mattermostへのインポート

下記サイトを参考に行うが、微妙に手順のカスタマイズが必要。

カスタマイズ部分は以下

おわりに(課題など)

上手く行けば、MattermostにSlackの情報が移行できているはず!
だが課題も結構多くあり以下に遺す。今後もっと簡単に移行できるようにノウハウやツールのアップデートも必要かも。

  • 日本語で作ったチャンネル名が反映されず、代わりにチャンネルIDで設定されしまう

  • 添付ファイルが一部しか移行できていない

  • 移行したチャンネルが全てパブリックチャンネルになっている

  • 各チャンネルの所属メンバー情報が反映されていない

  • ダイレクトメッセージが移行できていない

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?