Amazon AppStream 2.0 Linuxイメージを日本語化してみた

2021.11.20

しばたです。

先日Amazon AppStream 2.0でLinuxイメージがサポートされた記事を書きましたが、今回このLinuxイメージの日本語化にチャレンジしてみました。

はじめに (注意事項)

AppStream 2.0 Linuxイメージはつい先日提供されたばかりであり、まだイメージのローカライズに関するドキュメントは存在していませんでした。
このため今回やってみた手順は私の個人的な試行錯誤の結果となります。

最低限の動作確認はしていますが本記事の内容が必ずしも正しいとは限りませんし、将来的にはAWSからオフィシャルな手順が公開されるかもしれません。
その場合はオフィシャルな手順を正とする様にしてください。

2021年11月22日追記

記事を公開後改めてドキュメントを調べ直したところ本日時点ではまだLinuxイメージのローカライズは非サポートでした。

Enabling regional settings is currently not supported for Linux-based stacks.

本記事の手順を試す際は自己責任でお願いします。

やってみた

それでは日本語化の手順を説明していきます。

VPCなど必要なリソースを作成した上でLinuxイメージのImage Bulderに接続してください。
今回はベースイメージにAppStream-AmazonLinux2-11-15-2021を使用してます。

1. 日本語フォントの追加

イメージのデフォルトでは日本語フォントがインストールされていなかったため、まずは日本語を表示できる様にフォントを追加します。

追加するフォントは日本語が表示できれば何でもよいですが今回はIPAのフォントを追加しています。

# 日本語の表示できるフォントを追加
sudo yum install -y ipa-gothic-fonts ipa-mincho-fonts

補足 : フォントのライセンス

今回はあくまでもテストのためにIPAフォントを使用していますが実際の業務などで日本語フォントを使う場合はライセンスに従う様にしてください。

意外と認知されないですがフォントは一個の著作物でありライセンスの塊なのです...

2. 言語設定の変更

つづけてデスクトップ(GNOME)の表示言語を変更します。

はじめは「設定 (Settings)」アプリの設定を変えれば良いのかと思っていたのですが、単純にアプリから内容を更新するとFleet展開時に英語設定に戻ってしまいました。

(「設定 (Settings)」アプリでの変更は反映されない模様...)

AppStream 2.0では/var/lib/AccountsService/users/配下にある各ユーザーのデフォルトセッション設定を変えてあげないとダメな様です。
as2-streaming-userユーザーの場合は/var/lib/AccountsService/users/as2-streaming-userにデフォルト設定が存在し、初期設定としては

/var/lib/AccountsService/users/as2-streaming-user

[User]
Language=
XSession=com.aws.appstream.appview
SystemAccount=false

となっています。
この中のLanguageセクションをja_JP.UTF-8に設定してやることで言語設定を変える事が可能です。
ちなみにImageBuilderAdminユーザーの場合は/var/lib/AccountsService/users/ImageBuilderAdminとなります。

ということでsedを使ってサクッと内容を更新してやります。
ImageBuilderAdminユーザーの設定を変えた場合は再起動→再接続で反映されます。

# ImageBuilderAdmin と as2-streaming-user の言語設定を日本語に
sudo sed -i -e "s/Language=/Language=ja_JP.UTF-8/g" /var/lib/AccountsService/users/ImageBuilderAdmin
sudo sed -i -e "s/Language=/Language=ja_JP.UTF-8/g" /var/lib/AccountsService/users/as2-streaming-user

# Image Builderの設定変更は再起動で反映される
reboot

設定変更後の各ファイルは以下の様になります。

$ cat /var/lib/AccountsService/users/ImageBuilderAdmin
[User]
Language=ja_JP.UTF-8
XSession=com.aws.appstream.deskview
SystemAccount=false

$ cat /var/lib/AccountsService/users/as2-streaming-user 
[User]
Language=ja_JP.UTF-8
XSession=com.aws.appstream.appview
SystemAccount=false

再起動後のImage Builderはこんな感じで無事日本語化できました。

3. キーボード設定

次に日本語入力できる様にしてやります。

GNOMEの標準だと日本語キーボードのキーバインド設定はあるものの日本語入力メソッドを持った設定がデフォルトで存在しない様なので *1、別途ibus-kkcをインストールして利用することで日本語入力できる様にしました。

まずはYumでibus-kkcをインストールします。

# ibus-kkcのインストール
sudo yum install -y ibus-kkc

# インストール後Ibusを再起動
ibus-daemon -drx

Ibusを再起動して追加したibus-kkcを認識させる様にしておきます。
その上で「設定」から「地域と言語」を選び、今度は「入力ソース」を追加します。

ダイアログから「日本語」を選択、

続けて「日本語(かな漢字) *2」を選択し「追加」します。

入力ソースが増えていればOKです。(並び順は好きに変えてください)

これで無事日本語入力ができる様になりました。

補足1 : 言語切り替えのキーバインドについて

GNOMEのデフォルト設定では言語切り替えのショートカットキーは「Super *3 + Space」となっています。

WEBブラウザでAppStream 2.0を使う場合Superキーはブラウザに奪われることがありますので必要に応じてキーバインドを変えておくと良いでしょう。
Windows Clientの場合はSuperキーは問題なく使えました。

キーバインドの変更は「設定」アプリから「デバイス」→「キーボード」で変更できます。

補足2 : 他の入力メソッドについて

今回ibus-kkcのほかにibus-mozcも試してみたのですが、依存関係周りと思われる謎エラーに遭遇し利用することができませんでした...
私のLinuxちからが低いのが悪いだけだと思うのでLinuxデスクトップに自信のある方にぜひ試してみてもらいたいです。

4. タイムゾーンの変更

続けてタイムゾーンを変更します。

タイムゾーンの変更はコマンドから行う必要があります。
「設定」から行おうとしてもロックされており、ロック解除のためにパスワードが要求されてしまいます。

(「設定」アプリの時刻設定はロックされている...)

なのでCLIでsudoして設定を変えてやります。

# タイムゾーンをJSTに変更
sudo timedatectl set-timezone Asia/Tokyo

変更結果はターミナル上で確認しても良いですし、先ほどの「設定」からでも構いません。

$ timedatectl
      Local time: 土 2021-11-20 10:41:45 JST
  Universal time: 土 2021-11-20 01:41:45 UTC
        RTC time: 土 2021-11-20 01:41:45
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

5. デフォルト設定への反映

最後にImage Builderのユーザー設定をデフォルト設定へ反映させてやります。

こちらは通常のイメージ作りの時と同様に/etc/skel/.configディレクトリを作り、その配下に各アプリの設定をコピーしてやります。
コピーすべき設定は作るイメージ次第ですが、最低限

  • ~/.config/dconf : GNOMEの設定 (dconf)
  • ~/.config/ibus-kkc : ibus-kkcの設定

があれば良いと思います。

# デフォルト設定用フォルダを作成
sudo mkdir /etc/skel/.config

# ここは必要に応じてコピーする内容を変える
sudo cp -R ~/.config/dconf /etc/skel/.config
sudo cp -R ~/.config/ibus-kkc /etc/skel/.config

# 最悪 ~/.config/ 配下全部コピーしてしまうという手もある
# sudo cp -R ~/.config/* /etc/skel/.config

6. 結果確認

あとは通常の手順通りです。
作成したイメージからFleet、Stackを用意し接続した結果は下図の様になります。

いい感じにローカライズできました。

最後に

以上となります。

はじめに言った通りオフィシャルな手順では無いですがLinuxイメージの日本語化に成功しました。
実際の業務で使う場合はこれ以外の設定も必要になるとは思うので本記事はあくまでも最低限のものだとお考えください。

脚注

  1. Linuxデスクトップに全くもって疎いので認識が間違ってたらすいません...
  2. これがibus-kkc
  3. WindowsのWindowsキー、MacのCommandキー