Help us understand the problem. What is going on with this article?

Chrome OSを開発機にするまでの道のり

More than 1 year has passed since last update.

モチベーション

業務ではmacOSを利用していますが、自宅での趣味プログラミングは開発する内容によりUbuntuを利用することが多々あります。
現在使用しているUbuntuはノートPCにインストールして使用していますが、メーカー側でサポートされていないOSのため以下のようなハードウェアに関連する問題がよく発生します。

  • TouchPad、Wi-Fi、Bluetooth、カメラなどの周辺機器がうまく動作しない
    • 特にTouchPadのカーソル飛んでく問題はつらい
  • バッテリーの減りが早い
  • Suspend/Resumeがうまく動作しない

それでもソフトウェアの設定変更で対応できることも多いので現在でも愛用していますが、タブレット的に使うにはさらに難度が上がり、そもそも対応できないこともあります。

つまり、ハードウェア部分がサポートされたメーカー純正のLinuxノートPCが欲しいのです。
もちろんメーカー純正のLinuxノートPCは存在しますが選択肢は少なく、2in1などは見たことがありません(情報お待ちしております)。
そこで最近、ハイスペックな構成も選択でき、Linuxコンテナが起動できるChromebookであれば、上記の問題をクリアできそうなので検証をしたいと思います。

前提

  • Chrome OSの情報
    • Version: 72
    • Channel: dev
  • Project Crostiniを利用
    • Linuxカーネルが古いデバイスはサポート外となるようなので注意が必要です
    • 対応デバイスはこちらのリンクから調べられます。
    • 有効にする方法はこちら
  • OSSのChromium OSではなく、この記事ではProject CrostiniがサポートしているChromebookを利用しています

開発機にするため確認したこと

それでは開発機とするために、個人的に必要な要素を検証していきます!!

LinuxコンテナのOSは?

Chrome OS v72ではdebian 9.5でした

日本語入力はできるのか?

一応できます!

日本語入力の設定はChrome OS側とLinuxコンテナ側、それぞれで設定が必要です。

Chrome OS

Mozcが入っているため、入力方法の設定でGoogle日本語入力に切り替えるだけです。

ただし、Google日本語入力のひらがな直接入力を切り替えるショートカットが見当たりません。
一部の記事ではAlt+Shiftで切り替えられていますが、自分の環境では切り替えできなかったので、英語のキーボードも追加しCtrl+Spaceで日本語と英語を切り替えています。

Linuxコンテナ

Linuxコンテナの場合は、日本語入力をするためのソフトや設定が必要です。
以下の記事を参考にfcitx-mozcをインストールしfcitx-configtoolで設定すれば動作します。

自動起動の設定も記事の通りの設定で問題なく動作しました。感謝です!

設定画面では入力メソッドのショートカットなどが変更できます。

入力中のスクリーンショットはこんな感じです。

ただし、自分の環境では以下の現象が発生し、動作が安定しません。

  • 日本語の変換中にフリーズが発生し、そのままChrome OSごとシャットダウン
  • 変換ウィンドウが表示されなくなる
  • 入力自体ができなくなる

上記の不安定な動作に加え、アプリケーションによっては変換ウィンドウが残念な位置になります。

標準のTerminalは十分に使えるのか?

普段iTermやgnome-terminalを使用しているので、それらと変わらない操作感を得られるか検証しました。

Chrome OSで用意されているTerminalは、Shif+Ctrl+pでプロファイルの変更ができます。
変更できる内容はAppearanceやKeyboardの設定変更が可能です。

プロファイルの変更画面の一部

自分としてはコピー&ペーストなどのショートカットを、いつも使っているコンソールアプリと同じキーにしたかったのですが設定がなかったので、今回はgnome-terminalをインストールして使うことにしました。

そのほかにも地味な制限があり、インストールしたフォントが標準のTerminalでは読み込めないようです。
promptやtmuxをpowerline系の表示にしている方、Rictyなどのいつも使っている日本語フォントがある場合は標準ではないターミナルを使った方が良さそうです。

gnome-terminalとhyperの例

エディターやIDEは使えるのか?

私が普段使っているエディターやIDEは以下になります。

  • Vim
  • Emacs
  • Visual Studio Code
  • IntelliJ IDEA Ultimate

(日本語入力部分を除けば)アプリケーション自体の動作は問題ありませんでした。

データ共有はできるのか?

Chrome OSとLinuxコンテナのデータ共有は、Crostiniの場合特別な設定は不要です。
Chrome OSのファイラーからLinuxコンテナのホームディレクトリが参照できるので、このインタフェースからデータの受け渡しが可能です。

Dockerは動作するのか?

動作します!

以下の記事を参考にLinuxコンテナの設定変更をします。

またインストール方法によりますが、Dockerの公式ドキュメントの手順でインストールした場合、systemdのcontainer.service設定にあるExecStartPreを修正する必要があります。
詳細は以下の記事を参照ください。

18.09: containerd depends on overlay · Issue #475 · docker/for-linux

キーバインドは変更できるのか?

Chrome OS側で以下のキーが変更できます。
*使用しているデバイスによって変わりそうな気がします。

上記の他は変更できないため、カスタマイズが必要な場合はIMEを自作する必要があります。
公式のサンプルや増井先生のIMEが公開されているのでそちらを参考にどうぞ。

個人的にはMozcの挙動を保ちつつ、キーバインドだけを変えたかったのでMozcをカスタマイズビルドしてみました。
インストールもでき、入力メソッドとして認識はしましたが動作していません……現在も調査中です。

キーバインドの変更方法は他にもありそうなので、簡単な方法が見つかれば検証していきたいと思います。

クリップボードの共有

Chrome OSとLinuxコンテナ間のクリップボードは、PRIMARYセクションは共有されず、CLIPBOARDセクションは共有されます。
通常のコピー&ペーストであれば問題なく動作します。

最後に、結局Chrome OSを開発機にできたのか?

まだ開発機として使えてないです!!
キーバインドが変更できないとやる気が湧いてこないので絶賛改善中です。

逆に「キーバインドは変えません」派の方は、十分に開発ができるのではないでしょうか。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away