17 March 2026

memo: yaskkserv2 をUbuntu 24.04で使う手順

SKKを使いつつ、新語や合成語の変換にはGoogleサジェストを使いたい。 そのようなときにyaskkserv2を使ってみてなかなか良かった。以下はmacos用の記事。

なかなか良かったので、Ubuntuでも使えるようにセットアップしてみた。以下はそのメモ

Rustのセットアップ(もしされていなければ)

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

yaskkserv2をclone、ビルド、インストール

git clone https://github.com/wachikun/yaskkserv2.git
cd yaskkserv2
cargo build --release
sudo cp -av target/release/yaskkserv2 /usr/sbin/
sudo cp -av target/release/yaskkserv2_make_dictionary /usr/bin/

SKK辞書を取得、辞書作成

mkdir -p $HOME/dic
wget http://openlab.ring.gr.jp/skk/skk/dic/SKK-JISYO.L
yaskkserv2_make_dictionary --dictionary-filename=$HOME/dic/dictionary.yaskkserv2 SKK-JISYO.L

yaskkserv2 をsystemdユーザーサービスとして自動起動する手順

Ubuntu 24.04でyaskkserv2をユーザーログイン時に自動起動し、常駐させる設定手順。

1. systemdユーザーサービスディレクトリを作成

mkdir -p ~/.config/systemd/user

2. サービスファイルを作成

vi ~/.config/systemd/user/yaskkserv2.service

以下の内容を記述:

[Unit]
Description=yaskkserv2 Japanese input server
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/yaskkserv2 --no-daemonize --google-suggest %h/dic/dictionary.yaskkserv2
Restart=always
RestartSec=3
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=default.target

重要ポイント:

  • --no-daemonize: systemdがプロセスを管理するため、デーモン化しない
  • %h: ホームディレクトリに自動展開される
  • Type=simple: フォアグラウンドで実行
  • Restart=always: プロセス終了時に自動再起動

3. systemdに設定を読み込ませる

systemctl --user daemon-reload

4. サービスを起動

systemctl --user start yaskkserv2.service

5. 起動状態を確認

systemctl --user status yaskkserv2.service

以下のように表示されればOK:

● yaskkserv2.service - yaskkserv2 Japanese input server
     Loaded: loaded (...)
     Active: active (running) since ...
   Main PID: xxxxx (yaskkserv2)

エラーがある場合はここにログが出るはず。

プロセスも確認:

ps aux | grep yaskkserv2

ddskkなどのクライアントで実際に動作確認してみる。 絶対に辞書に登録されていなさそうな新語を変換してみるとよい。

6. ログイン時の自動起動を有効化

systemctl --user enable yaskkserv2.service

確認:

systemctl --user is-enabled yaskkserv2.service
# => enabled と表示される

管理コマンド

# サービスを停止
systemctl --user stop yaskkserv2.service

# サービスを再起動
systemctl --user restart yaskkserv2.service

# 自動起動を無効化
systemctl --user disable yaskkserv2.service

# ログを確認
journalctl --user -u yaskkserv2.service -f

# 過去50件のログを表示
journalctl --user -u yaskkserv2.service -n 50 --no-pager

トラブルシューティング

エラーコード 203/EXEC が出る場合

  • which yaskkserv2 でパスを確認し、ExecStartのパスを修正
  • フルパスで指定する(~ や変数は使わない)

サービスがすぐ終了する場合

  • --no-daemonize オプションを追加
  • ログで原因を確認: journalctl --user -u yaskkserv2.service -n 50

辞書ファイルが見つからない場合

  • パスが正しいか確認: ls -la ~/dic/dictionary.yaskkserv2
  • サービスファイルのパスを修正して daemon-reload を実行

完了

次回ログイン時から自動的にyaskkserv2が起動します(ポート1178で待ち受け)。