有志開発のCLIを用いてSlackからDiscordにメッセージを移行した(WindowsPC上)
はじめに
家庭でSlackを利用してきましたが、この度のSlackのサービス内容変更で90日以内のメッセージしか閲覧できなくなるのが困り移行先を検討した結果、Discordにしようということになりました。
移行はMSDというツールを使って行っていきましたが、Windowsではいくつか注意点があったので記していきます。
ちなみにWSL2を使います。また、申し訳ないですが開発者以外にはこの記事は難しい内容かと思いますので、すみませんがよろしくお願いします。
なお、MSD開発者の記事はこちらです。誠に開発ありがとうございます。
環境
- Windows 10 Home ビルド 19044
注意点
上記の開発記事から遷移できるGithubのリポジトリのページ内の手順で概ね差し支えないですが、以下のような点を踏まえる必要がありました。
ツールのコマンドを実行するまでに目を通しておいてください。
初回設定のための環境構築
初回設定の中でdirenv等のツールをインストール/利用しますが、私のPCにはそれらが入っておらず、仮に入っていたとしてもLinux環境のほうがつまづきにくく、WSLのほうがWindows本体の環境を汚さずに済むことからWSLを利用して実行していくことにしました。
WSL2のインストール
MS公式のドキュメントを参考に進めます。WSLは1と2がありますが、WSL2にします。
インストールするLinuxは既定のUbuntuとしておきます。
ツールのビルド&インストール環境整備
初回設定で必要になるツールをインストールするのに必要なツールをインストールします。
- Make
- Golang開発環境
Make
以下でインストールしてください。
参考: https://qiita.com/KentoNaka/items/531f8af8872bfec2d82a#makeコマンドのインストール
sudo apt install make
Go lang 開発環境
こちらのサイトを参考に進めます。
goのURLなどは公式を参考に読み替えてください。
また、このままではsudoでgoコマンドのパスが通っておらずsudoでgoコマンドを利用できないため、以下の手順を実施してください。
- sudoの設定を開く
sudo visudo
-
Defaults secure_path =
で始まる行を探す - パスの値の後ろに
:/usr/local/go/bin
を足す
参考: https://stackoverflow.com/questions/71899341/go-command-not-found-error-when-using-sudo
これらが済んだ後、mds-cliをWSL上にgit cloneします。
WSL上のファイルにアクセスしたい
上記で紹介したGoの環境のセットアップ手順にも記載があるのですが、 explorer.exe .
でWindowsのエクスプローラが開けます。ファイルの書き込みもできます。とても便利ですね!
Slackからエクスポートしたデータの解凍
SlackからエクスポートしたZIPファイルを解凍し中のフォルダを .src
フォルダに改名して配置する手順がありますが、Windows標準のZIP解凍機能だと文字コードの問題で文字化けしてしまいます。
これを避けるため、7-zipなどを用いてください。解凍してファイル/フォルダ名が文字化けしないなら何でも差し支えありません。
なぜか空文字列になっていたdisplay_name
自分のSlackワークスペースでは、エクスポートされたファイルの users.json
内にあるオブジェクト全ての display_name
が何故か空文字列になっており、これが原因でツールの一部コマンドの実行が中断し終了されます。
この問題を避けるため、cloneしてきたスクリプトのコードを修正します。
修正箇所は、
libs > user.mts > UserClientクラス > migrateUserメソッドの
return文の
name: user.is_bot ? user.profile.real_name : user.profile.display_name,
を
name: user.profile.real_name,
と変更します。変更後はそのまま保存します。
まとめ
実際にツールを実行してみると、発言内容がすんなりとDiscordに移行されて問題が解決しました。
WSLの勉強にもなり、やってみてよかったです。
Discussion