Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
148
Help us understand the problem. What is going on with this article?
@komde

Chromebookを快適な開発環境にするためのプチノウハウ群(2021年4月版)

2019年末HP Chromebook X360 14からPixelbook Go m3※に乗り換えました。ヒャッハー( ゚∀゚)o彡

※技適はモジュール認証通ってます

自分は仕事においてアルゴリズム作成3割、プログラム実装2割、資料作成3割、コミュニケーション2割ぐらいで、いろんなところからきたものや自分が実装したものをテストしてまた情報を展開する、的な仕事をメインにしています。最近はWebツールでIn/Outできることが多く、WindowsやMacだとCorei7+NVMeバリバリの化け物マシンでしか出せないようなブラウザ性能でヌルヌル仕事できる Pixelbook Go は最高の相棒です。昔は特殊な設定(Linuxの項参照、crouton)をしないと開発ツールが動かなかったのですが、現在は標準環境(Linuxの項参照、crostini)にちょっと設定するだけで限りなくほとんどの作業を乗り越えられるようになってきています。

微妙に古い情報がネットに散らばっているので、それらにハマらないようにしつつかゆいところを直していきたいと思います。

おすすめ機種は?

基本的に購入した人がこの記事見ているのかと思っていたのですが、意外と買う前に下調べで見ている方も多いようですので、個人的なおすすめを2機種紹介しておきます。

オフラインエディタ

Chromeアプリ

現在はCaretからarchetypeをメインに乗り換えました。Monacoがベースになっており、VSCode使いの人には一番しっくりくるエディタになっているかと思います。

VS Code

VS Codeは Linux領域しか書き込みできない が原則です。しかしファイルマネージャから右クリック→アプリで開くを使用した時、そのファイルだけ書き込みを実施することができます。個人的にはJSちょっといじったりとかCurlで何か叩く時にメモファイル開いて編集&実行、などはこの技を使っています。

SSH

素直にオフィシャルの拡張機能を使うのが良いでしょう。マウントとかも普通にできます。
Chromeアプリ版はサポート終了になるので早めに移行しましょう。

ブラウザからのショートカット

ブラウザのアドレスバー上で ssh と入力すると別画面ではなくブラウザ内でsshがいきなり叩けます

ホストのsshキーが変わった時のキーのリセット

開発用インスタンス等でキーが変わってしまった時などのknown_hostのリセットは以下のように実施します(古い情報だと謎のショートカットを呼び出して設定を全部消去する的な記述がでてきますが、以下でOKです)。

  • Ctrl+右クリック(2本タップ)
  • SSH の既知のホストを消去を選択

Screenshot 2021-01-21 at 07.45.36.png

(Chromeアプリ版で必要)英語キーボードで日本語入力のオンオフをする

英語キーボード時に日本語入力オンオフで使用するCtrl+Spaceをデフォルトでは渡してくれないので、日本語変換モードで立ち上げてしまうと無変換に戻せずコマンドが打ちにくくなるという問題があります。以下の設定で回避できます。

  • Ctrl+右クリック(2本タップ)
  • オプションを選択
  • Keybaord bindings/shortcutsに以下を追加
{
  "Ctrl-Shift-Space": "PASS",
  "Ctrl-Space": "PASS"
}

VNC

RealVNCから公開されているVNC Viewer for Google Chromeを使用しています。Macでビルドの際はこれをいつも使用しています。

crosh を立ち上げる

Ctrl + Alt + t のキーを押すと crosh が起動します。help_advanced と打つと使用できるコマンドのヘルプがバラバラと表示されます。基本的にcroshを触る必要はありませんが、Linuxまわりの仮想マシンをいじる時にたまにvmc/lxcを操作したりするのでそういう時にcroshを使用します。

Linux(Crostini)関連

まず最初に 今後はcroutonは使用しないことをオススメ します。「chromebook linux」で検索してcroutonの記事が出てきても参考にしないでください。

  • 理由1: croutonはchromebook自体を開発者モードという特殊なモードにするため、セキュリティレベルが下がる
  • 理由2: chromebookの開発者モードは起動時のビープ音がうるさい
  • 理由3: crostiniはLinuxコンテナなので、途中でdumpしたり、気に入らなかったら作り直したりがすぐできるが、croutonは毎回OSごと入れ直しが必要

標準機能のcrostini(設定でデベロッパー(Linux開発環境)、もしくはLinux(ベータ版)となっているもの)が普通に使用しても困らないようになってきているので、よっぽど特殊なUSB機器とかBluetoothなどのネイティブ機能を使用しない限りはcrostiniを使いましょう。WindowsのWSL2ではXServerは手動で設定する必要がありますが、Crostiniではインストールした状態で普通にGUIアプリを使用できます。

日本語環境の設定

いくつかまとめてくださっているブログがありますが、以下が一番オススメです。

Crostiniで日本語環境設定

Libreofficeで日本語入力するためにはさらに1行追加(GDK_BACKENDの指定)が必要です。

/etc/systemd/user/cros-garcon.service.d/cros-garcon-override.conf
Environment="GTK_IM_MODULE=fcitx"
Environment="QT_IM_MODULE=fcitx"
Environment="XMODIFIERS=@im=fcitx"
Environment="GDK_BACKEND=x11"

日本語入力時にFnキーを使う

わたくし、無変換・ひらがな・カタカナ変換はFn6-10を使う派なのですが、そのままだと通りません。LinuxにChromebookの機能キーボードをスルーしてくれないのでその時は 検索(Launcher)キー+上部のキー でFnキーイベントをLinuxに渡せます。

FcitxのUIを変更する

デフォルトのfcitxの変換ウィンドウが文字が水色、変換候補が赤とChromeOS本体と見栄えが異なり違和感あるので、fcitx-configtool で見た目を合わせます。fcitx-configtool を起動し、Appearance→skin→defaultを選び設定ボタンをタップすると以下のようなダイアログが出るので変更します(以下が自分のカラー設定です)。
Screenshot 2020-04-01 at 08.48.11.png

変更後のVSCodeはこんな感じになります。今までより馴染むようになるのでChromeOSで作業しているのを忘れることもあります。
Screenshot 2020-04-01 at 08.38.48.png

(旧UI時に必要)Linux ターミナル上で英語キーボードで日本語入力のオンオフをする

これSSHアプリと同じ症状なのですが、SSHと同じ設定方法で回避することができます。

  • Ctrl+右クリック(2本タップ)
  • オプションを選択
  • Keybaord bindings/shortcutsに以下を追加
{
  "Ctrl-Shift-Space": "PASS",
  "Ctrl-Space": "PASS"
}

個別アプリのズーム

諸事情でLinux上でもChromeを使っていて(express開発でCrostiniからのポート転送するのがめんどいとか)どうもタブが一回り大きい気がしたので、そういう場合はスケールをかけます。.desktopファイルのExecに引数を追加します(Chromeだと3箇所ぐらい)

sudo nano /usr/share/applications/google-chrome.desktop

Exec /usr/bin/google-chrome-stable --force-device-scale-factor=1.05

デフォルトフォントが汚くなった

ChromeOS 81にアップデート後、Notoフォントがインストールしてあるにも関わらず日本語が汚いフォントが使われるようになったので、設定を追加します。

nano ~/.config/fontconfig/fonts.conf

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- Default serif fonts -->
 <match target="pattern">
   <test qual="any" name="family"><string>serif</string></test>
   <edit name="family" mode="prepend" binding="same"><string>Noto Serif CJK JP</string> </edit>
 </match>
 <match target="pattern">
   <test qual="any" name="family"><string>sans-serif</string></test>
   <edit name="family" mode="prepend" binding="same"><string>Noto Sans CJK JP</string> </edit>
 </match>
 <match target="pattern">
   <test qual="any" name="family"><string>monospace</string></test>
   <edit name="family" mode="prepend" binding="same"><string>Noto Sans Mono CJK JP</string> </edit>
 </match>
</fontconfig>

その後 fc-cache を実行します。

VSCodeのインストール&設定

公式サイトからDebian用の.debをダウンロード&インストール(ファイラでファイルを右クリック→Linuxでのインストール)します。Arm版は永らく非公式バイナリに頼っている状況でしたが、Code 1.50以降はarmv7/arm64対応しています。

素の状態だとタイトルバーが少し残念なので、appearanceを変更(window->title bar styleをcustomに)し、フォントサイズを多少調整(Shift + Ctrl + -/=)すると↓こんな感じで違和感なくVSCodeを使えるようになります。

Screenshot 2019-12-14 at 21.07.11.png

Node.js

Chromebookに限らずなのですが、LinuxでNode.js使う時にディストリデフォルトのnodejsを入れてnpm更新してnを入れてもともとのnodejsを消して、、みたいな記事を参考にしてしまいハマっている人を見ることが多いので、素直にNodeSource Node.js Binary Distributionsを使いましょう。

curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

ポート転送

ChromeOS 85以降

設定→Linux→ポート転送、から転送するポートを設定します。再起動すると自動的にオフになるようです。

Screenshot 2020-08-24 at 11.19.27 - Edited.png

ChromeOS 84以前

Connection Forwarder を使用します。標準で転送されているポートもあるので、ご注意ください。
https://www.reddit.com/r/Crostini/comments/99s3t9/wellknown_ports_are_now_autoforwarded_to_the/

バックアップと復元

たまーに不具合があり、再インストールを試したくなる時があるので、暇な時にバックアップを取っておきましょう。で、いざ復元の時に(これは予想なのですが)一旦ストレージ内のどこかに展開してそれをコピるっぽく、
- もともとのコンテナと同じ容量のLinux領域
- 展開用の領域
- バックアップファイル
と、バックアップ時に元の容量の3倍ぐらいの領域が必要になります(バックアップできたけと復元できない、があり得る)。なので、このような状況で詰みそうになったときは一旦バックアップファイル(.tini)をUSBストレージなど外に出してから復元を実行してください。

Docker

以下で少しだけ説明していますが、Crostini自体はlxcをベースにしたコンテナ管理なのでlxcに習熟している場合はlxcをcrosh経由で使うとディスクの無駄遣いがなく良いかと思います。ただ、普通はDockerを使用すると思いますので、Debianの標準手順通りにインストールします。

デフォルトで用意されている以外のLXCコンテナを扱う

croshからコマンドを打ち、デフォルトのDebian以外を使ったり、複数のコンテナを使うことが可能です。これは説明し出すと広範になってしまうので、基本情報だけ記載しておきます。
まず仕組みとしてコンテナのホストとなるVMを管理するためのコマンドがvmc、標準状態の仮想マシンがterminaです。Chromebook自体はそれほどメモリ、ストレージが潤沢ではないことが多いと思うので、特に理由がなければ複数のVMを建てることは必要ないかと思います。仮想マシンにログインするのがvshです

#VM一覧を取得
crosh> vmc list

#terminaにログイン
crosh> vsh termina

これで仮想マシンにログインし、その後コンテナを操作します。コンテナを操作するコマンドがlxcです。標準のコンテナ名がpenguinです。ちなみに手動でpenguinを立ち上げるとLinuxターミナルが起動しなくなることがあるみたいなので、penguinはできるかぎりいじらないほうが良さそうです。

#コンテナ一覧を取得
lxc list

#コンテナを作成
lxc images:debian/bullseye new-container

#コンテナにログイン
lxc exec new-container -- /bin/bash

自分が使用している言語・開発環境一覧

JavaScript

GitpodとVSCode@Crostiniの50%/50%ぐらいです。github codespaces, Visual Studio Codespaces なども出てきますので、気分に応じて環境変えられそうですね。

Arduino(主にM5Stack)

昔はCrostiniのUSB通信が不安定だったのでしばらくRaspberry Pi 4を使っていましたが、今は普通にCrostiniでUSB Serialを利用できます!。ちなみにわたくし、充電用のUSBC-USBCケーブルで接続して全然動かんなーって半年ぐらい悩んだことあるので、通信はちゃんとした通信用ケーブルを使用することをおすすめします、、。

ちなみに Raspberry Pi 4を開発母機にする場合の注意点とか
  • Raspberry Pi 4(推奨4GB以上)
    • Raspberry Pi OS(ツールチェーンの関係からまだ32bitのほうが良いです)
    • ヘッドレスでSSH/VNC設定
    • Arduino IDE(素直に1.8系の最新を入れ、GUI上で設定を済ませビルド通るところまで実施)
    • arduino-cli(0.11、GUIで設定が終わっていると特に問題なくコマンド発行できます)
  • VSCode@Crostini でremote developmentで上記RaspberryPi4に接続し、arduino-cliでビルド&ボード転送
  • remote developmentでVS CodeのArduinoプラグインは使用できないようでしたので、remote development時にはarduino-cliを使うようにしています。
  • Arduino Web EditorがESP32に対応してくれれば最高なのに、、、(ESP8266は有償版で対応してるっぽい)

R

サーバーを使用する

自分はRstudio serverをリモートで立ち上げてそこで処理する開発スタイルを2年ほどとっています。Shiny serverを同じサーバ内に同居させているので、瞬間デプロイができて便利です。

ローカルにインストールする

Rstudioのインストールはintel系CPUの場合はDebian用をパッケージをインストールするだけです。Arm系の場合はソースからビルドする必要があります。Raspberry PiでRstudioを使う、系の記事を参考にすると良いです。かなり時間と手間はかかるのでArm系で手っ取り早くRを使いたい場合は標準のr-baseパッケージをインストールしてJupytorLabでカーネルをRにして動かすのが良いかもしれません。

Python

Linux上でJupyterlab。そろそろPython2が死に絶えてきたのでそこらへんでハマることも減ってきました。

Android Studio

Android Studio に関してはサンプルアプリがビルドできるか?ぐらいにしか使ったことがないので実際いろいろ不具合あるのかもしれません(試しに日本語入力してみましたが、変換ウィンドウが左下に表示されてしまうので追加設定が必要かもしれません)。ビルド走らせるだけなら問題無いです。

ChromeOSでのAndroid開発で面白いのは、実機デバッグをケーブル繋がないでChromeOSの1画面としてできる、というところです(ChromeOSではAndroidアプリが動くためそれ自身がAndroid端末になります)。普通のシミュレーターではUSB/Bluetoothなどのハードウェア機能が動きませんが、ChromeOS上でのデバッグではハードウェア機能も動かすことができます。

Screenshot 2019-12-15 at 09.26.29.png

その他Chromebook使用時のコツなど

Excel・スプレッドシート

Googleシートを使い倒します。細かいコツはGoogle スプレッドシートを快適に使うコツ(2019年版)をご覧ください。

パスワード付きExcelを開かなくてはいけない時のみAndroidアプリで処理しています(LibreOffice@crostiniはちょっと動作が重いのであまり使用していません)。Excel絶ちして3年ぐらいになりますが、Excelの操作忘れるぐらいにExcel使わなくなりましたw。

Chromebookを使うメリットを定量化してみる

Chromebook でどれだけ仕事はブーストできるのか? でまとめています。

まとめ

Chromebookは英語キー問題とかで、「ビミョーに使いづらいなぁ」的な迷いがありましたが、今では全て回避できていて快適な開発ライフを送っています。みなさんも気分転換にちょい速めのChromebookを使ってみると、自分の開発環境を見直す良い機会になると思うのでオススメです〜。

148
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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
komde
JINS MEME のハードウェアとファームウェアとSDKとアルゴリズムとアプリとクラウドのリフォームをする中の人。Fitness x tech。R/JavaScript、Chromebook使い。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
148
Help us understand the problem. What is going on with this article?