創作物紹介

📕

Linux(Waydroid)でKindleを使ってみよう

Published: 2025-02-03

WaydroidでKindleを開いている様子
WaydroidでKindleを開いている様子

はじめに

Amazon Kindle は、 公式の Linux 向けデスクトップアプリが存在しない1。 現代の読書生活において Kindle が使えないのは致命的であるため、何とかして Linux 環境で Kindle を動かせるようにしたい。

結論から言うと、 Waydroid を用いて Linux 上で Android 版の Kindle を実行することにした。 本記事では Waydroid を導入する方法、及びその上で Kindle を動かすための手順について説明する。

(余談)何故 Android 版なのか?

Linux 上で Kindle を実行する方法としては、以下の 3 つが考えられる。

  1. Kindle Cloud Reader(Web 版の Kindle)を使う
  2. Wine で Windows 用のデスクトップアプリを動かす
  3. Android 用のモバイルアプリを(仮想環境などを用いて)Linux 上で動かす

1 は最も簡単な方法だが、読み込みに時間がかかる上に一部閲覧出来ない本があるなど問題点が多い。 そこで 2 あるいは 3 の方法をとるわけだが、2 は却下された。 文字化けしたり上手く動かなかったりして導入出来なかったのもあるが、そもそも PC 版の Kindle はモバイル版よりも使いづらいからである2。 そのため、必然的に Android 版のものを動かすこととなったのだった。

Waydroid

概要

Waydroid は、 Android システムを Linux 上のコンテナ内で動かすためのソフトウェアである。 カーネルをホストマシンと共有することでハードウェアに直接アクセス出来るため、他の Android エミュレータ・仮想環境より高いパフォーマンスを実現している。 実際の使用感としても、もはやネイティブアプリと遜色ない軽快さで動作してくれる。

CPUやメモリなどのハードウェア、及びカーネルをホストのLinuxと共有していることが分かる
CPUやメモリなどのハードウェア、及びカーネルをホストのLinuxと共有していることが分かる

インストール

こちらのドキュメントに従ってインストールする。 主要なディストロであれば問題なくインストール出来るが、ディスプレイサーバーは Wayland でなければならない3

初期設定

まず、waydroid-container.serviceを起動・有効化出来ているか確認する(systemdを使っている場合)。 その後、

Terminal window
sudo waydroid init

で Android イメージをインストールする。この時点では GApps を入れる必要はないので、VANILLA イメージを選択する。

(参考)Void Linux によるインストール

Terminal window
# インストール
sudo xbps-install -S waydroid
# runit でサービスとして起動・管理出来るようにする
sudo ln -sv /etc/sv/waydroid-container /var/service/
# 初期設定
sudo waydroid init

GAPPS 及び ARM への対応

これで Waydroid 上で Android を動かせるようになったが、これだけでは Kindle を動かす上で十分ではない。 何故なら、この Android システムは Google Play Store がインストールされていない上にアーキテクチャも x86_64 だからである4。 よって、以下の手順に従いこれらの問題を解決する。

必要なものをインストールする

以下のスクリプトを使う。

Terminal window
git clone https://github.com/casualsnek/waydroid_script
cd waydroid_script
python3 -m venv venv
venv/bin/pip install -r requirements.txt
sudo venv/bin/python3 main.py

で対話型インターフェースを起動した後、Android 11 -> Installと進んでgappslibhoudini(CPU が AMD の場合にはlibndk)をインストールする。 gappsはカスタム ROM で Google Play Store を利用出来るようにするためのものである。 また、libhoudinilibndk)は x86_64 Android - ARM 間の翻訳レイヤであり、ARM 対応はこれを用いて行っている。

デバイスを Google に登録する

Google Play Store を利用するためには、自分のデバイスを Google Play Protect に認証してもらう必要がある。

Terminal window
sudo waydroid shell

で Waydroid のシェルに入った後、

Terminal window
ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"

を実行して Android ID を取得する。 その後 https://www.google.com/android/uncertified/でその ID を入力し、デバイスを Google に登録する。 登録には少し時間がかかる。

おわりに

Google Play StoreからKindleをインストール出来るようになった
Google Play StoreからKindleをインストール出来るようになった

これで Amazon Kindle を Google Play Store からインストールし、起動出来るようになったはずである。 仮想化されていることを感じさせないほどにサクサク動く Kindle とともに、Linux でも便利な読書生活を楽しんでしまおう。 また、他の Android アプリをインストール・実行してみるのも面白いかも知れない5

参考

脚注

  1. Windows と macOS のみに対応している。なお、モバイルアプリでは Android と iOS の両方に対応している

  2. 例えば、漫画の単行本をシリーズごとに自動でまとめてくれない

  3. X11 でもweston を使えば動かせるらしいが、試してはいない(参考:https://arimasou16.com/blog/2022/07/17/00469/

  4. Google Play Store で配信される多くのアプリは ARM 用のものである

  5. ただし、アプリケーションの規約に違反しないよう注意する必要がある

X