Chromebook にLinuxコンテナが搭載されたので “つよいワープロ” に改装してみた

 Google Chromebook がいつのまにか Linuxに対応していた。
 より正確にいうと、Chromebook上で動くLinuxコンテナである「Crostini」というプロジェクトが、安定版(stable)でも動かせるようになっていた。
 以前のChromebookは、Google Chrome以外は動かせず、アプリ利用はすべてGoogle Chrome内にWebアプリを導入してなんとかするという割り切った運用が主軸になっていた。こういう方針を「シンクライアント方式」と言う。
 このシンクライアント方式は、当然ながらWifi環境から離れると、ほとんどガラクタ同然になってしまう。Chromebookの割り切りは、弱点でもあった。
 その弱点をなんとかしようとするため、当時も少なくないパワーユーザたちが、ChromebookにむりやりLinuxを入れてデュアルブートらしき状態に仕立てるハックを披露していた。けれど、その手順はしばしば、ややこしい手段で開発者モードにしなければならなかったり、Croutonというコマンドを使った面倒な作業を経ないとならなかった。さらに、手間がかかるわりには、その状態を維持するのはかなり大変だった。総じて、あまり使いやすくないオプションだったと言える。
 今回のCrostiniは、Debian GNU Linux (version は9.9) が入っている。ただし、X window systemLinuxにおけるデスクトップメタファ)はなく、そっけないターミナルが立ち上がるだけの、CUI入力から始まる。とはいえ、GNOME-terminalやAtomVisual Studio Codeなどの、GUIウィンドウがpopするアプリも、普通に立ち上げることができる。Chrome OSの状態はそのままに、Linux経由で入れたアプリも普通に立ち上がる、という環境を手に入れることができるようになったわけだ。
 これがどういうことをもたらしたか。廉価で知られつつもWifi環境などがなければイマイチ性能を発揮できないと思われていたChromebookが、オンライン環境への接続の有無を気にせずに、正規表現機能やバージョン管理機能をバリバリ使えるワープロマシンに化けた(化けさせられるようになった)、ということだ。しかも以前のCrouton時代と違って、セキュリティの低下や妙な挙動について繊細に構える必要もなくなった。

 要するに、そのへんのChromebookが、「ちょっと強いPomera」としても使えるようになったと考えていいのではないか。
[asin:B01LXQZ4WI:detail]

 今手元にあるAcer Chromebook CB3-532(15インチ型)は、自動更新ポリシーが2022年06月までとなっている。少なくともその時間まではChromebook側のセキュリティは保証されるとのことなので、おおよそ2年半ほどはマシンとして使ってもよさそうだ。

[asin:B079WPYBB1:detail]

ところで、本記事タイトルにある“つよいワープロ”が何を指示しているのかについて、私見を述べておく。以下の条件をより多く満たすものを、私は“つよいワープロ”と呼ぶ。

  • オフライン環境でも、電源さえあればテキストエディタを扱える。
  • 正規表現が使える。
  • バージョン管理機能がある。
  • ファイルサイズや字数の制限がない。
  • 上記を除く機能がほとんど備わっていないか、必要最小限である。
  • 予算3万円未満で入手可能である。

 従来のChromebookは、シンクライアント方式を取るため、オフライン環境でのテキスト編集に難があった。
 単機能ワープロバイスとして著名なPomeraシリーズは、オフライン環境でも仕事ができる魅力があるが、正規表現やバージョン管理がなく、字数制限が限られるなど、ワープロマシンに求められる基礎機能が未だに満たされたことがないという点で弱みがあった。
 Macbookやその他のノートPCは、テキスト編集だけでなくプログラムの実行環境としても十分すぎるほどパワフルだが、どうしても高額になりがちであり、“つよいワープロ”の要件を超えて多機能すぎるという点で対象外となる。
 こうした他のマシンとは違い、Linuxコンテナの恩恵を受けたChromebookは、(Google Chromeやその他のLinuxアプリをどんどん搭載していけばリッチになりすぎるという点はあるが、)上記の“つよいワープロ”の条件を過不足なく満たしうる。すなわち、

  • オンライン環境でもAtomVS Codeが使える。
  • AtomVS Codeが使える以上、当然正規表現も問題なく使える。*1
  • Git を(コマンドラインでもGUIでも、どちらでも)使える。*2
  • ファイルサイズや字数の制限は事実上ない。
  • オフライン環境にいる限りは、Linuxアプリとしてインストール済のものでしか作業を行うことができない→限りなく単機能に近づけられる。*3
  • 新品でも3万円以下のものはありうるし、中古で1万円前後のものも存在する。*4

 つまり、Linuxコンテナをハックすることで、十分に“つよいワープロ” を、安価に手に入れることができる、ということが言える。
「娯楽的利用以外では、正直作文にしかPCを使わない」という人は、もう10万円以上の金を払ってラップトップPCを買う必要はないかもしれない。また、自分の普段遣いのPCが壊れたときの緊急避難として、このハックを知っておくことは、手痛い追加出費を免れるための保険として、使えることもあるかもしれない。
 最小限のLinux知識を即席で身につけさえすれば、格安のChromebookをハックして、“つよいワープロ”だけで作業をすることができる……そういう「別解」を持っておくことは、悪くないと思う。

とはいえ、AtomやVSを使うまでには、多少の苦労があった。以下、その手順をメモっておく。
このハックが多少なりとも魅力的だと思えた人は、ぜひLinuxコンテナがサポートされているバージョンのChromebookを手に入れて、試してみてほしい。

(1) Crostini(ChromebookLinuxコンテナ)のアクティベーション

以下の記事の序盤を参照。
wazalabo.com

(2) Fcitx-mozc(Linuxアプリ内日本語入力環境)の導入

 ここからはいわゆるDebian/Ubuntu系のコマンドライン入力を知っておく必要がある。とはいえ、"$ sudo apt" がわかればなんとかなる程度だ。*5

具体的な導入手順は、以下が頼りになる。
kazblog.hateblo.jp

特にここに書かれている

fcitxが立ち上がってない状態(fcitx start か fcitx-autostart のどちらも一度も実行していない状態)で設定画面を開くと、Input Methodの欄が空っぽになる

は、自分自身ハマってしまった。
fcitx-config-gtk3 を実行する前にかならず一度は

$ fcitx-autostart

を実行しておく必要がある。($ fcitx start でもよいみたいだ)

(3) Atomの導入

 Chromebookは、ディレクトリの表示が他のLinuxマシンと比べて素直でないので、「一度DLしたパッケージを展開して」という普通の手続きをGUI側でやることが面倒である。したがって、徹頭徹尾コマンドラインでダウンロードからインストールまでをこなす必要がある(っぽい)。
 具体的には、wgetコマンドとdpkgコマンドを使うとうまくいった。
 基本的には以下の手順に従って進める。
www.karelie.net

 最後の方でエラーを吐く場合がある。その差異、"apt --fix-broken install" というコマンドを実行してくださいというエラー文が出てくるので、そのとおりに以下のコマンドを入力するといい。

$ sudo apt --fix-broken install

(4) Atomの追加パッケージのインストール

https://pepese.github.io/blog/atom-install-packages/
あたりにおすすめの記述が書いてある。とりあえず「japanese-menu」はどのAtom解説サイトでも推奨されているので、それだけ入れることを目指そう。後は必要が出るまで放置しておいてもなんとでもなる。
日本語フォントがこのときまでインストールされていない場合、「japanese-menu」を入れてもうまく表示されていない(Chromebook側で日本語が表示されていても、Linuxコンテナの内部では未だに日本語フォントがサポートされていないため)。もし(3) の段階でまだ具体的な日本語フォントを入れていなかった場合は、コマンドラインで入れること。*6

結果、快適にAtomが動かせるようになった。
たまにfcitx-Mozcが動作していない時があるが、そのときは"fcitx autostart" と入力すると、またCtrl+Spaceで変換ができるようになる。

【おまけ1】VS Code のインストール

教えてもらったのだが、最近はTypescriptを使った開発にVisual Studio Codeを選ぶ人が多いらしい。もちろん正規表現完備。AtomVS Codeのどちらも動くことは確認できたので、気になる方はこちらを選ぶといいだろう。自分は以下を参考に導入した。
qiita.com

【おまけ2】Firefox安定版のインストール

ブラウザはGoogle Chromeで基本的に問題ないが、たまに「別のGmailアカウントで仕事をしないといけない」ということがある。そういう時、Chromebookは最初にアカウント名として選んだGmailしか開かせてくれない。別のGmailアカウントをChromebookに登録して、そちらのアカウントでログインしなおせば開けるけれど、その間にLinuxアプリまで閉じて移行して、Gmailの確認だけして戻ってくるのでは割りに合わない。
ということで、第2のブラウザとしてFirefoxを入れることになる。aptコマンドを以下のように打つとインストールできた。

$ sudo apt install firefox-esr-l10n-ja/oldstable 

既存のFirefoxアカウントとの同期も、問題なくうまくいくことが確認できた。

*1:正規表現とは https://www.mnet.ne.jp/~nakama/

*2:Git とは Git - バージョン管理に関して

*3:決してNethackなどの楽しいゲームアプリを入れてはならない。

*4:ただし、Chromebookのセキュリティサポートが最長でも6年前後しかなく、中古品に至ってはさらにそれらより消費期限が短くなっている点については、注意が必要だ。詳しくは「Google Chromebook」「自動更新ポリシー」等で検索をかけること。公式ページでは、各Chromebook製品のサポート期限を呈示している。自動更新ポリシー - Chrome Enterprise and Education ヘルプ

*5:sudo は UNIX/Linuxコマンドラインにおける、スーパユーザ権限の宣言のこと。apt はLinuxディストリビューションのうち、Debian系およびUbuntu系に属するLinuxディストリビューションで使用可能な「パッケージ管理システム」用のコマンドのこと。Chromebookに搭載されているLinuxコンテナは、本文にも書いたとおりDebian 9 stable であるため、apt コマンドでインストールしたいパッケージを指定することになるわけだ。これがRedHat系だと dnf、Slackwareだとpacman など、同じ状況で唱えるべき呪文が違ってくる。とはいえChromebookのハックにおいては、とにかく apt から始まるコマンドラインのことさえ調べれば事足りるようになっている。

*6:余談だが、AtomがPCにインストールされた時点で、"$ apm install " と入力することで、ターミナルの方でも任意のAtom関連パッケージをインストールすることができる。紹介記事→ https://www.moongift.jp/2014/05/apm-atom