あと味

たくさん情報を食べて、たくさん発信すると、あとになって味わい深い。

最近の Chromebook の運用、または、GCE のすゝめ

過去の記事を振り返ると、Chromebook がメイン機となって、1年くらい経つらしい。

taiju.hatenablog.com

書いた当初はあれこれ頑張って、Chromebook で Ubuntu を使えるように悪戦苦闘していたけれど、しまいに面倒になってきたので、シンクライアントは、シンクライアントらしく振る舞うべきというところに落ち着いた。

ということで、最近の Chromebook の運用について書く。

GNU/Linux を使いたい!!!

Chromebook 自体は、素の Chrome OS の端末として使うわけですが、ほとんどの生活をターミナルで行っていた私としては、GNU/Linux または、UNIX 環境がないと厳しい。

以前は、記事に書いていたとおり USB に Ubuntu を入れて頑張っていたのだけど、Chromebook をデベロッパーモードで利用しないと駄目だし、USB 邪魔だし、USB 上の OS の動作も微妙に安定しないしで、Chromebook はシンクライアントなんだから、GNU/Linux が使えるサーバを調達して利用するのが楽ということになった。

具体的に言うと、今は、Google Compute Engine (以下 GCE と表記) を、GNU/Linux のサーバとして使っている。

Chromebook からは、Secure Shell を使って、SSH 接続して使う。*1

GCE の良い所

Chromebook だから Google のサービスを使うのが筋って考えも無きにしもあらずだけど、実際に AWS や Azure も使ってみて、私の用途では GCE が圧倒的に便利という結論になった。

GCE が圧倒的に便利である理由は、

  • プリエンプティブ VM インスタンスが超絶安い

  • 分単位の課金

  • VM の起動や作成が速い

といったところにある。

便利である理由の具体的なところ

プリエンプティブ VM インスンタンスとは、いろんな制限つける代わりに安く使っていいぞ、といったタイプの VM インスタンスのことで、具体的には、24時間以上の連続稼働はできないとかの制限がつく。*2

cloud.google.com

私は、GNU/Linux を使いたい時だけに VM を起動して、使い終わったら VM を停止するので、24時間以上使いたいシーンは皆無で、今の Chromebook の運用的にとても適している。

トイレへ行くぐらいのときは起動したままだが、ご飯を食べる時とか、お風呂に入る時は停止するといった運用方法なので、分単位の課金という点も利点になる。

また、VM の起動がめちゃくちゃ速いので、こまめに停止する運用が全く苦にならない。

ディスクの方がコストがかかるので、基本的には初期値の 10GB を起動ディスクに充てるだけにしている。

逆に Chromebook の購入者特典で、Google Drive に潤沢な容量が与えられているので、drive コマンドをインストールして、必要なデータだけ pull, 永続化したいデータだけ push するという運用をしている。それであれば、起動ディスクの 10GB で事足りる。

余計なソフトウェアをインストールしたり、余計なファイルを設置して、ディスクが一杯になったら、VM を廃棄して、新しく VM を立てる。そのために、基本セットは Ansible の Playbook にした。

github.com

Cloud9 も併用

最近は Cloud9 も併用している。*3

Emacs を快適に使えたりはしないが、クラウド IDE 上からアクセスするターミナルから、ある程度は OS を自由に触れるので、ここで事足りるような作業では、わざわざ VM を起動しなくなった。

制限はきついので、VM でしかできないこともある。例えば、Yesod の試用をしてみようとして、インストールを試みるも、cabal update できないとか、AndroidSDK 入れようとしたらディスク埋まるとか、そういうやつ。

余談

前回の記事にも書いた、Secure Shell で日本語入力できないという問題は、未だに未解決で、その点が運用に耐えない理由になるという人はいると思われる。

Chrome OS 上の IM では日本語入力できないだけで、VM 上の IM では日本語入力できるので、前回の記事にも書いたとおり、例えば Emacs で Mozc を使うという方式であれば問題ない。

私は常用シェルが eshell *4 なので、全く問題ない。.bash_profile の最終行に exec emacs を記述しているので、すべての操作を Emacs 上で行っている。

まとめ

おそらく今の運用が Chromebook を使う上で、最も正しい運用な気がしている。

しょせん Chromebook はシンクライアントであって、Chromebook 自体であれこれやろうとするのは間違いな気がしてきている。*5

そういう意味では、一番安い Chromebook (3万以下)で必要十分だと思う。高いスペックが欲しければ GCE で調達すれば良いのだし。

今のところ GCE で、ワンコイン(500円)以上かかったことはない。

安く調達できる分、必要に応じて GCE の VM を立てるという方法を取っても、MacBook AirMacBook Pro と比較して、普通にお買い得である。

この運用の欠点は VM を停止し忘れることによってコストの増大という事故が起こりうることなのだけど、プリエンプティブインスタンスは、そもそも24時間以上連続稼働することはないので、事故の被害額はある程度制限される。24時間以上の連続稼働ができないという制限が保険にもなっている。実感覚では、数時間で落ちるイメージ。

欲を言えば、Chromebook の特典で GCE の VM の利用料が月一定額無料とかがついてきたら最高なんだけどなぁ。

スマホAndroid + 格安 SIM にしたし、メインマシンも Chromebook になったし、コンピューティング生活に全く金をかけないという制約の中で、1年間生活してみたが、なんとかなるもんだった。

むしろ、どんな過酷な状況になっても、快適なコンピューティング生活ができる自信がついた気もする。

ほなの。

*1:エフェメラル IP で運用するので、起動のたびに設定を変更している

*2:作業中に VM が落ちることも多々あるので、作業対象はまめに保存しましょう

*3:永遠にリリースされることのない何かを作っているという体で

*4:出力結果が多いコマンドに対するパイプや、入力のリダイレクトをしたい時は、適宜 shell モードを使う

*5:Chromebook Pixel となると話は変わってくるけど

Chromebook (Acer C720) 買った

年末に Chromebook (Acer C720) を買いました。

いろいろ弄る中で知見を得たので、記事にすることにします。

結果的に良い買い物だったという気がしています。

購入前

今使っている Macbook Pro も数年使っていて、ハード的にも環境的にもボロボロになってきたので、買い替えを検討していました。

本当は Macbook Air が欲しかったんですけど、結婚してから自由に使えるお金が限られるようになったので、Macbook Air はヨイショと簡単に買えるような端末ではなくなってきていました。

振り返ると、家で使う個人端末では Chrome とシェルしか使ってないので、別に Macbook Air にこだわることはないのかなと思い、安い Linux ラップトップを買おうかなと思ってたんですけど、予てから興味のあった Chromebook を調べてみると、Chromebook で事足るのかなと思い始めてました。Chromebook は、貧乏人の Macbook Air だという評価も見かけましたし。

正直 Chromebook を弄りたいという欲が先行していて、同スペックのより安い Linux ラップトップがあるかどうかはろくに調べていないのですが、Windows 8.1 with Bing なラップトップと比べても、Chromebook はコスパが優れている方な気がします。

自分の日本語入力方式が JIS かな入力なので、JIS 配列のキーボードが必要だと思っていて、輸入で買う選択肢はなく、日本での JIS 配列キーボード搭載版の Chromebook の発売を待っていました。

とりあえず、日本版のすべての Chromebook のラインナップが出揃ったので、本格的に購入することを検討し、一番コスパが良さそうな Acer C720 の購入に至った次第です。

Acer C720 は現時点で日本で発売されているラインナップのうち、唯一 SSD を換装できる端末らしいのですが、SSD は 16GB のまま換装はしませんでした。(後述しますが、16GB では余裕で足らないです)

Web 開発できることが条件

Chromebook を安物買いの銭失いにするのは絶対に避けたかったのと*1、今後のメインマシンにするつもりで購入するので、Web 開発できることが絶対条件でした。

Chromebook に Ubuntu を入れる方法はすでに確立されていて、それでなんとかなるかなと思っていましたが、実際に使ってみて今のところなんとかなりそうな気配です。

Chrome OS に関しては、Virtualbox にインストールして触ってみてましたが、Chrome に毛が生えた程度なので、特に事前に触ってみる必要もなかった気もしています。

OS として起動が速い点は大変良いです。*2

Web 開発環境のセットアップ

Ubuntu は crouton でインストールしました。

他にも選択肢はあるようですが、Issue 見てもちゃんと対応しているし、複数人でメンテされていて、crouton であれば、Chrome OS の特徴を殺すこともないので、自分的には crouton しか選択肢なかった感じです。

crouton は chroot の仕組みを使って、Ubuntu をインストールする仕組みですが、chroot するディレクトリは任意に選べます。

本体の SSD の容量は 16GB で、実際使える容量はさらにそれより少なく、余裕で足らない感じだったので、USB メモリ内のディレクトリにインストールすることにしました。

幸い、Chromebook には、USB 3.0 端子があるので、高速な USB メモリが利用できます。

ネットで調べて評判も高そうだったサンディスクの 64 GB の USB メモリを買いました。

64 GB あればとりあえず当面は十分です。

IO の反応も非常に速く、リムーバブルディスク上で操作している感はありませんでした。SSD すら初体験という前提はありますが。

USB メモリを ext4 でフォーマットしようと思ったところ、USB 3.0 に対応した端末が Chromebook しかなく、詰んだかなと思ったんですけど、普通に Chromebook の Crosh ウィンドウのシェル*3で、fdisk やら、mkfs.ext4 が使えたので、事無きを得ました。

ついでに、USB のラベルも、接続直後、「USB Disk」という微妙なラベルだったので、e2labelchromebook に変更しました。(以下、USB メモリのラベルを chromebook に変更していることを前提としてパス等記述しています)

crouton のインストールオプションは下記のような感じです。

sudo sh ~/Downloads/crouton -r trusty -t xfce -p /media/removable/chromebook/crouton

t オプションに xiwi を指定して、crouton の Chrome エクステンションをインストールすると、タブ上で Ubuntu を開くことができたり、Chromebook と Ubuntu 間で、コピー・ペーストを共有したりできるらしいのですが、タブ上で Ubuntu を開くのはうまくできませんでした。

あと、cli-extra というターゲットを指定すると、X Window System のないミニマムな Ubuntu 環境をインストールできますが、後述する通り、Virtualbox 使うために X Window System が必要だったので、指定しませんでした。

インストールが終わったら Ubuntu が USB メモリに入ります。USB メモリがなければただの Chromebook で、USB メモリがあれば Ubuntu も利用できるという感じで、Chromebook はそのまま残しつつの運用ができるのでおすすめです。

p オプションをつけてインストールすると、インストール先の bin ディレクトリ(例えば上記で言えば、/media/removable/chromebook/crouton/bin)に crouton の各種スクリプトがインストールされます。

Crosh ウィンドウのシェルで、

sudo sh /media/removable/chromebook/crouton/bin/startxfce4

と入力すれば、Xfce4 の Ubuntu デスクトップ環境が起動しますし、

sudo sh /media/removable/chromebook/crouton/bin/enter-chroot

と入力すれば、Crosh ウィンドウでそのまま UbuntuCUI 環境で利用できます。

UbuntuSSH サーバー入れて、自動で起動する設定をしておいて、Secure ShellSSH ログインするという方法もありますが、sudo enter-chroot で Crosh ウィンドウからそのまま UbuntuCUI 環境使う方が 、Ubuntu デスクトップ環境を起動する必要もなく、気軽だと思います。

VirtualboxWindowsIE)を動かせるようにする

Chromebook で Web 開発するにあたって、VirtualboxWindowsIE)を動かせることも必要条件と考えていました。

インストールした Ubuntu をデスクトップ環境としてそのまま利用することは考えておらず、Virtualbox を利用するためのデスクトップ環境という感じで考えています。*4

ただ、Virtualbox のインストールは簡単ではありませんでした。

crouton リポジトリWiki を参照して、

あたりを見ながら各種設定し、modern.IE の OVA で、Windows 7IE 11 が動かせたので、この条件もクリアできました。

カーネルヘッダのビルドは手動でもやってみましたが、すごく時間がかかって大変だったので、上記の Wiki にリンクのある、下記のスクリプト使うのが良いかなと思います。自分の環境はそれで動きました。

Virtualbox のインストールは何度か躓いて、躓いた時に何が足りなかったのかイマイチわかってない状況です。Xfce4 ではなく、Unity をインストールした時に、crouton の Issue にも同例の報告があった Virtualbox で Windows 起動した時に Chromebook が強制的にリブートする問題が発生してうまくいかなかったんですけど、Xfce4 に変更した今は問題は発生していません。ネットで情報を見ながらアレコレ試行していたので、この問題がウィンドウマネージャを変更したことで解決したのかどうか、それが関係あるのかないのかも正直よくわかってません。。。少なくとも Issue にあるように Trusty を Precise に変更するという方法では解決しませんでした。

Virtualbox がインストールできたことで、他の OS を操作することができる状況も確立したし、Chrome リモートデスクトップ を使って、既存の Macbook Pro を操作できることも確認できたので、今後困ったことがあっても逃げ道ができた感じです。

あとは日本語言語パックの設定とロケールの変更、シェル環境の整備、LAMP 周りのソフトウェアとか入れて、いい感じに使えるようになりました。

とにかく Virtualbox のインストールだけが一癖あって、他のツールのインストールは特に問題は起こっていません。

各種環境を整えた後、Movable Type をセットアップして実際に操作してみましたが、IO が速いせいか、既存の Macbook Pro 上の環境と比べても速く、今のところスペックによるストレスは感じていません。

困った点と解決方法

以上のセットアップで、Chromebook で Web 開発できるような雰囲気になりましたが、いろいろと細かいところで問題があり、これからもあるかもしれません。

使ってみて発覚した各種の問題を、自分はどのように解決したか、または解決するつもりなのかということを、今後購入される方向けに残しておきます。

Crosh ウィンドウが複数開けない

Crosh ウィンドウの欠点としては、複数ウィンドウが開けない点です。

一方、Secure Shell は複数ウィンドウが開けます。

Ctrl + Alt + TChrome のタブに複数開くこともできるのですが、Chrome のタブとして開くと、Chrome のショートカットキーが優先され、一部のキー操作が奪われるという問題があります。

Secure Shell であれば、ウィンドウを複数開くことができ、かつ、それらを Chrome のタブとしてではなく、独立したウィンドウとして開く設定にしておけば、Chrome のショートカットキーにキー操作が奪われることもないので、この運用を好む方もいるかもしれません。

ただし、Secure Shell で開く場合は、Crosh ウィンドウから Ubuntu デスクトップを起動しておく必要があります。

cli-extra を入れて、sudo startcli するという方法もありますが、シェルが別画面に開くだけで、使用感は変わりませんでした。

自分は、Crosh ウィンドウ内で sudo enter-chroot して UbuntuCUI 環境で開き、複数ウィンドウ開けない問題については、tmux や screen を使うことで対応することにしました。

日本語情報が少ない

まだ、日本語情報が少ない感じです。ただ、すでに欧米では Chromebook のハックの実績が多く、知見もあるので、英語圏の情報は充実しています。

しばらくは、何か調べる際は、英語圏の情報を探すしかないです。

crouton 固有の情報は、経験的に、crouton リポジトリの Issue や Wiki から探すのが良いです。

セットアップのやり直しをするたびユーザー領域がリストアされる

個人的にもセットアップのやり直しを何度か実施したのですが、そのたびにユーザー領域がリストアされます。

設定情報等は、クラウドに保存されるようで、再セットアップの手間はそれほどではありません。

消えて困るデータは、リムーバブルメディアや Google Drive に保存するようにした方が良さそうです。

/etc/hosts の書き換えができない

Ubuntu 側は問題ありませんが、Chromebook 側の /etc/hosts の書き換えができません。*5

DNS サーバーをセットアップすることで任意のホストで Ubuntu 上のウェブサーバーのリソースにアクセスできるようにすることも可能なのかもしれませんが、自分は xip.io のようなサービス使って凌ぐことにしました。

サービス(xip.io)が終了したら、任意のドメインで同じようなことを適当にやります。

Secure Shell でも Crosh ウィンドウのシェルでも日本語入力できない

ここ重要!

Chrome で Secure Shell 使う時もこの問題があったので、予想はしてましたが、Chromebook の Crosh ウィンドウや Secure Shell であっても同じ状況です。コピペはできますが、それでは厳しいです。

Chromebook にインストールした Ubuntu デスクトップ環境を、そのまま利用する場合は、問題なく日本語入力できます。

Crosh シェルで crouton の enter-chroot コマンドで CUI 環境を利用する場合や、Secure Shell で SSH ログインして CUI 環境を利用する場合には、ウィンドウ内で日本語入力ができないので、この点が購入にあたっての大きな障害になり得ます。(Vim で開発する人とか)

自分の場合は、Chrome で Secure Shell の操作を確認した際に、SSH ログインした環境で、Emacs の入力切替ができることは確認できていたので、Vim から Evil + Emacs に移行しつつある自分的にはクリアできる問題となりました。

要するに日本語入力したければ Emacs 使いましょうという話です。

mozc.el 入れて、通常と同様に文字変換できるし、設定を変更すれば、JIS かな入力もできます。

シェル上で日本語を使いたい場合も、eshell 使えば良いので、無問題でした。

Vim を使っている時にハングアップする

よくわかりませんが、Crosh ウィンドウや、Secure Shell のウィンドウで、Vim を使っていると、突如ハングアップして、 使っていたウィンドウがどれであるかは関係なく、シェルを起動したすべてのウィンドウが軒並み動作しなくなることが何度かありました。

その状態では新しくシェルを立ち上げることもできないので、再起動するしかなくなります。

Emacs では今のところ発生していないので、基本は Emacs を使っています。

これはハード固有の問題なのか、たまたま自分の環境で起こっている問題なのか、解決策があるのかもわかっていません。

ハード固有の問題

Acer C720 では、リストア後のセットアップで WiFi に繋がらないという問題が、2回ほど発生しました。

一度接続設定をしてからは問題ないのですが、リストア後のログイン直後でそういう事象が起こりました。

1回目は何度も試行しているうちにつながり、2回目はルータを再起動したらつながりました。

多分、下記の QA と同様の事象だと思いますが、何が起こっていたのかよくわかりません。

あとは、キーボードやディスプレイ*6、タッチパッドが値段相応の品質ということです。これはどうしようもないので、慣れるしかない。

Macbook がよく出来ているということを痛感した感はあります。

まとめ

Macbook Air を購入しても財布が痛くない人は、素直に Macbook Air 買えば良いと思います。。。

自分の場合は、型が古くなっても新しい端末が買えなかったり、故障した時に新しい端末の調達がすぐにできないといった状況がストレスなので、今後そのようなことがあっても安く必要十分なマシンが調達できることが確認できて良かったです。*7

また、crouton でインストールした UbuntuCUI 環境に、Crosh ウィンドウのシェルからアクセスする運用は、Chrome OS をシャレオツな UNIX デスクトップ環境として使っている感覚で気に入りました。*8

これで今後も持たざる者(いろんな意味で)として快適に生きられそうです。

ただ、今のところ万人におすすめできるものとは思ってません。特に日本語入力できない問題が痛い。

あ、あけましておめでとうございます。

ほなの。

追記

最近の運用方法書きました。

taiju.hatenablog.com

*1:それだとコスト削減のために Chromebook 買う意味がなくなるし。

*2:あと、バッテリーがやたら持ちます。外出ないけど。

*3:Crosh ウィンドウを開いて shell とタイプして利用できるシェル。

*4:インストールした UbuntuChromium を起動した時の敗北感たるや...

*5:調べるとやりようはあるっぽいのですが、やってません。

*6:HDMI 端子があるので、テレビに繋げるという選択肢もある。多分使わないけど。

*7:少なくとも Chromebook が発売され続ける間は。

*8:crouton ありきな危うい状況ではありますが。