KaleidoというマルチアカウントDiscordクライアントを作ろうとしている話 | Kaleido開発 #0
皆さん、ご無沙汰してます。m4rshalです。
良いブログネタが思いついたので、久しぶりに書いてます。
ということで今回書いていくのは、私が今開発しようと思っている 「Kaleido(カレイド)」 についてです。
簡単にいうと、
ひとつのDiscordクライアントで、複数のアカウントを同時に使えるようにする
というものです。
まだ実装を始める前の設計・LLMとの壁打ち段階なので、今後普通に仕様が変わる可能性はあります。
今回は「こんなものを作ろうとしてます」という紹介回です。
そもそも、なぜ作るのか
Discordを使っている人の中には、アカウントを複数に分けている人もいると思います。
例えば、
- 普段使いのプライベート用
- 仕事・学校用
- コミュニティ運営用
- 所属サーバーを分けるためのサブアカウント
みたいな感じです。
自分の場合も複数アカウントを使う場面があるのですが、当然ながらアカウントを分けると、今度は切り替えが面倒という問題が出てきます。
Discord自体にもアカウント切り替え機能はありますが、今回やりたいのは少し違います。
「アカウントAからログアウトして、アカウントBに切り替える」
ではなく、
アカウントAもBも最初からログインしたまま、必要なときに表示するアカウントだけ切り替える。
という形です。
ブラウザで複数のタブを開いて、必要なものに切り替える感覚に近いかもしれません。
Kaleido
このクライアントにつけた名前が Kaleido です。
由来は Kaleidoscope(万華鏡)。
ひとつの筒の中に複数の色や模様があって、見る角度によって違った景色が見える。
複数のアカウント、複数のコミュニティ、複数の自分を、ひとつのクライアントから見るという今回のコンセプトに合っていたので、この名前にしました。
タグラインも一応考えていて、
Multiple Accounts. A Wider You.
としています。
日本語だと、
ひとつのクライアントで、もっと多くのつながりを。
くらいのイメージです。
ちなみに内部の開発コードは Muxia。
こちらは MUX、つまり Multiplexer / Multiplexing から取っています。
複数のDiscordセッションをひとつのアプリケーションの中で多重化する、という内部構造寄りの名前ですね。
なので、
Muxia = 開発コード Kaleido = 表に出す名前
という扱いにする予定です。
どういう動作にしたいのか
現時点では、Vencordをベースに、必要に応じてVesktop側まで手を入れる方向で考えています。
理想としているのは、アカウントごとに完全にログイン状態を保持しておいて、必要になった瞬間に切り替えられる構成です。
例えば3アカウント登録していた場合、
Account A ─ 接続中
Account B ─ 接続中
Account C ─ 接続中
という状態を維持。
普段画面に出ているのはAccount Aだけでも、裏ではBとCも動いている。
そこでAccount Bに切り替えると、
Account A
↓
Account B
と、表示する画面だけが変わるようなイメージです。
毎回ログイン処理をやり直す必要はありません。
実装方法についてはまだ検討中ですが、Vesktop側まで触る場合は、Electronのセッションや WebContents、partition などをアカウントごとに分離して、それぞれ独立したDiscordセッションとして保持するような構成も候補になっています。
このあたりはまだ設計段階なので、実際に作り始めてみたら全然違う構造になる可能性もあります。
UIはなるべく普通のDiscordのままにしたい
UIについては、Discord本来の見た目や操作感をなるべく崩さない方向で考えています。
特にサーバーリストについては、通常のDiscordと同じものをそのまま残したいと思っています。
Discordはもともと、
サーバー | チャンネル | メッセージ | メンバー
という形で横方向にかなり情報量の多いUIなので、アカウント切り替えのために常設のUIを増やすよりも、必要なときだけ呼び出せる形の方が良さそうです。
そこで現在考えているのが、左下のユーザーパネルなどから専用のアカウントスイッチャーを開く方式です。
イメージとしては、
┌─────────────────────────┐
│ Switch Account │
│ │
│ ● m4rshal Active │
│ ○ Account B 3 │
│ ○ Account C 1 │
│ │
│ + Add Account │
│ Manage Accounts │
└─────────────────────────┘
みたいな感じです。
アカウントごとの未読やメンションも、ここからある程度確認できるようにしたいと思っています。
あわせて、
Ctrl + Shift + AでアカウントスイッチャーCtrl + Alt + 1Ctrl + Alt + 2Ctrl + Alt + 3
のようなショートカットから直接切り替えられるようにする案も考えています。
マウスでもキーボードでも素早く切り替えられる形が理想です。
誰向けなのか
一番分かりやすいのは、最初にも書いたような用途ごとにDiscordアカウントを分けている人です。
例えば、
プライベートでは友達とのサーバー。
別アカウントでは学校や仕事関係。
さらに別アカウントではコミュニティ運営。
みたいな使い方です。
あとは、参加しているサーバーが増えすぎて、アカウント自体を分けて管理している人にも便利かもしれません。
一つひとつのケースだけを見るとそこまで大きな問題ではないのですが、毎日使うものなので、切り替えの手間がなくなるだけでも結構変わるんじゃないかなと思っています。
まだ何も完成していない
ここまでいろいろ書いていますが、現状はまだLLMと壁打ちしながら仕様を考えている段階です。
名前と大まかなコンセプト、UIの方向性あたりが固まってきたくらいです。
ロゴについても作成を進めていて、KaleidoとMuxiaそれぞれで別のデザインを用意しています。
これから実際にVencordやVesktopの構造を確認しながら、
- 複数セッションをどう保持するか
- 各アカウントをどこまで完全に分離できるか
- バックグラウンドのアカウントをどう扱うか
- 通知や未読情報をどう取得するか
- 音声接続をどうするか
- Vencord / Vesktop側のアップデートにどう追従するか
などを詰めていくことになりそうです。
特に「複数アカウントを同時に動かす」という部分は、単純に画面を切り替えるだけでは済まないので、実際に作り始めるといろいろ問題が出てくる気がしています。
まあ、その問題を潰していくところも含めて面白そうなのでやります。
今後について
開発が進んだら、このブログでも適宜進捗を書いていこうと思っています。
たぶん次に書くとしたら、
「Kaleidoを実際に作り始めた話」
とか、
「Vencord/Vesktopを魔改造して複数Discordを同時に動かしてみる」
みたいな記事になる……はず。
ちゃんと開発が進めばですが。
まだ構想段階のプロジェクトなので最終的にどうなるかは分かりませんが、少なくとも今のところは結構面白そうなものになりそうです。
暇なときにでも進捗を読んでもらえたら嬉しいです。
それでも次の投稿がいつになるかは分かりませんが、気長に待っていてください。
それでは!