【脱Electron】Go製TUIクライアント「Discordo」が開発環境を最適化する理由
Discordoは、Discordのクライアントをターミナル上(TUI Terminal User Interface)で動作させるための軽量かつセキュアなソフトウェアです。
言語・環境
Go言語 (Golang) で書かれており、Linux環境での利用が想定されています。
特徴
軽量性 (Lightweight)
グラフィカルなクライアントに比べてリソース消費が非常に少ないです。
TUI (Terminal User Interface)
キーボード操作を主体とし、CUI(Character User Interface)にグラフィカルな要素を加えた、ターミナル上でリッチな操作感を提供します。
セキュリティ
2要素認証やQRコード認証にも対応しています。
機能
マウス・クリップボードのサポート、添付ファイルの表示、DiscordのMarkdown(装飾)表示など、必要な機能が揃っています。
なぜ、わざわざGUIのDiscordクライアントではなく、このTUIクライアントを使うのか?エンジニアにとっての動機は以下の通りです。
集中力の維持と環境の統一
多くのエンジニアはターミナル(コンソール)を開発の主戦場としています。Discordoを導入すれば、開発中のウィンドウから目を離さずにコミュニケーションが可能です。
GUIアプリに切り替えるわずかな時間や、通知ウィンドウに気を取られることが減り、集中力(フロー)を保ちやすくなります。
リソース効率の向上
ElectronベースのDiscord公式クライアントは、往々にしてメモリやCPUを多く消費しがちです。DiscordoはGo言語製で軽量なため、サーバーや仮想環境、非力なマシンでも軽快に動作し、開発リソースを圧迫しません。
自動化・カスタマイズの可能性
TUIクライアントであるため、シェルスクリプトや外部ツールと連携して、通知のカスタマイズや特定操作の自動化といった、エンジニアらしい高度な連携・カスタマイズの土台として利用できる可能性があります。(直接的なAPIではありませんが、ターミナル操作の一部として組み込めます。)
Go言語で書かれているため、Goの環境があれば比較的簡単に導入できます。
まだGo言語をインストールしていない場合は、先にシステムに導入してください(Linuxではパッケージマネージャ経由が一般的です)。
Goの標準的なインストールコマンドを使います。
# Goの'go install'コマンドでリポジトリから直接ビルド&インストール
go install github.com/ayn2op/discordo@latest
このコマンドを実行すると、Discordoがビルドされ、通常は $GOPATH/bin または $GOBIN に実行ファイルが配置されます。
ターミナルで実行ファイルを起動します。
discordo
初回起動時、認証情報(ユーザーのトークンなど)の入力を求められるか、設定ファイルを作成する流れになります。
Discordo自体はアプリケーションコードではなく、クライアントソフトウェアであるため、ユーザーが直接書く「サンプルコード」というものは基本的にありません。
しかし、エンジニアとして「設定」と「利用」の観点から、関連する具体的な例を挙げます。
Discordoは設定ファイル(通常はTOML形式など)を使って挙動をカスタマイズできます。これは「コード」ではありませんが、エンジニアが最も触れるカスタマイズポイントです。
# ~/.config/discordo/config.toml (設定ファイルの例)
# このようなファイルでUIのテーマやキーバインドを設定できます。
[ui]
theme = "dark" # "light" やカスタムテーマを設定
messages_limit = 50 # 一度に表示するメッセージ数
[keybinds]
# キーバインドをカスタムする例
switch_channel_up = "C-k" # Ctrl + k でチャンネルを上に移動
send_message = "<enter>"
ターミナル環境での利用をより便利にするために、シェルスクリプトに組み込むことが考えられます。これは環境設定の自動化という点で「コード」と言えます。
#!/bin/bash
# dis-start.sh : Discordoを特定のターミナル設定で起動するスクリプト
# 1. 起動前に環境変数でテーマを一時的に変更したい場合
export DISCORDO_THEME="monokai"
# 2. Tmuxの新しいペインで起動し、常に開発作業の横に表示する
# Tmuxを使っていない場合は 'discordo' だけでOKです
tmux split-window -v -p 30 "discordo"
tmux select-pane -t 0 # メインの開発画面に戻る
このように、Discordoはターミナル環境という「現場」に溶け込み、エンジニアの作業効率を向上させる、まさに「開発効率化の相棒」となってくれるでしょう!