はじめに
こんにちは。「すば」と申します
この記事は「完全に理解したTalk Advent Calendar 2020」4日目の投稿記事です。
今回は、うっかりChromebookプログラミングの全てを理解してしまったので(本当か?)みなさんにご紹介したいと思います。
なぜChromebookでプログラミング? vs PC
そもそも普通にPCでプログラミングしたほうがいいじゃん、と思われる方もいらっしゃると思います。(僕もそう思います)
Chromebookでやる大きなメリットとして、簡単にLinux環境が作れることです。
なんとクリック数回でできてしまいます。
Linuxの操作はITエンジニアにとっては必須と呼べるものですので、それが簡単に学習できる環境は魅力的です。
(変なことをしてしまったときは、簡単に初期化もできます。)
また、安価で軽くタッチパネルも備わっているので、カフェでプログラミングして、飽きたらYoutubeとかゲームも簡単にできて捗ります。
kindleも読めるのが地味に便利。
なぜChromebookでプログラミング? vs iPad
でもiPadのほうが画面きれいだよね?と思う方がいらっしゃると思います。(僕もそう思います)
ただ、iPadは手軽に使えるLinux環境というのはありません。
VPSでサーバーを借りて、そこにSSHで接続という形になると思いますが、回線が不安定なときだと何もできないということがあったりします。(実際にあって結構辛かった)
ChromebookはローカルにLinux環境を構築できるので、安定感が段違いです。
あと、iPad Proだとキーボードつけると重いし、全体的に高いし
Chromebookの種類
大雑把に言うと、2種類に分かれます
- CPUがx86_64のハイスペックChromebook(6万円くらいからが目安)
- CPUがArmで持ち運び重視なコスパChromebook(5万円が目安)
プログラミングは、x86_64のCPUを前提とした環境が多いので、こちらのほうが自由度は高いですが、軽さとスペックを両立させようとするとちょっとお高いです。(1kg前後は10万円くらいが目安)
ただし、Armもいいところがあって、消費電力が少なくてスマホの充電器で十分動くとか、タブレットとしても使いやすいので、外出時に持ち運びやすいなど、サブマシンとしては十分だと思います。安いしね。(Elmが動かないのだけが辛い)
環境
今回は以下の環境での説明となります
マシン名:Lenovo Chromebook Duet
CPU:Arm
メモリ:4GB
Linux: Debian 10(標準)
言語設定:英語
軽くてタブレットにもなるので、自分的に結構好きです。
セットアップ
設定を開くと上記のように*Linux(Beta)*という項目がある。
クリックすると、有効化する旨のボタンがあるので、今度は、そこをクリック。
出てきたダイアログを次へで進んでいくと設定完了
アプリ一覧にTerminal
というアイコンが増えているはず。
詳しくはググってほしい
Terminal Emulator
標準のTerminalを使用します。
後述のパッケージマネージャーからgnome terminal
等も入れることができますが、標準のターミナルの方が安定して使える感がありました。
また、Linux内にインストールしたGUIアプリの場合、Linux内で更に日本語入力設定を行わないといけなくて大変なので、基本的に標準のTerminal内で完結させると楽です。
標準のTerminalではChromeOSが日本語入力の制御をしてくれます。
あと細かい話ですが、Linux内でWebサーバーをPort 8080で起動したするとします。
そこに、Chromeからアクセスしようとすると、100.115.92.202:8080
というアドレスにアクセスしなくてはいけません。これはChromebookのLinuxの実態は、実はVMなので、そのIPアドレスにアクセスしないといけないからです。
ただし、標準のTerminalだと、自動でlocalhost:8080
でアクセスしても大丈夫なようにしてくれます。
パッケージマネージャー
Debianなので、apt
が使えます。
また、パッケージが足りない場合は、以下の2つを追加で使ってみると大体の新しいパッケージは網羅できます。
ただし、動かない場合もあるので注意。
自分の場合は、nix-shellで入れたneovimが設定ファイルを読み込んでくれなかったが、snapの方でインストールしたら動いたとかあったり。
他にもhomebrewがあるんですが、armだと使えないです。
エディタ
Armでも使えるメジャーなエディタは以下のものがあります
- VSCode
- Vim/NeoVim
- Emacs
AndroidStudio
とかはx86_64じゃないと動かないです。
自分は軽さ重視で、NeoVimとEmacを使っています。
言語
見た感じ大体動きます
Nodejs
とか余裕ー。
Python
とかRuby
はもちろんですし、
dotnet
とjava
も動きました。
ただ、Rust
とかのコンパイルが必要な言語で、開発用ツールのバイナリがArm用のがないとか、そういうパターンとかはありそうです。(Rust
自体は動く)
例えば、rust-analyzer
は公式にArmのバイナリがないので困ってます。(自分でコンパイルすれば動くかもしれないけど未確認)
あと、個人的にはElm
が動かないのが辛いです。(Arm用の公式バイナリがない)
CLIを使おう
Armだとマシンスペックが足りないので、GUIソフトは辛いところがあります。
VSCodeでもそんなにサクサク動きません。
開発に使うものは全部CLIでまとめると現実的な動作速度になるので、勉強すると思って使ってみるのもいかがでしょうか。壊してもすぐリセットできるし
自分は以下のCLIツールを使っています。
- neovim/emacs(CLIエディタ)
- tmux(ウィンドウ管理)
- zsh/fish(シェル)
- fzf(検索)
- ranger(ファイルブラウザ)
- git(バージョン管理)
ここらへんをカスタマイズすれば個人開発には十分な環境ができると思います。
カスタマイズ
Chromebookからできる設定はあまり多くないですが、いくつかあります
まず、keyboardのrepeatです。(キーボード設定を探して下さい)
上記の画像のようにrepeatの箇所をマックスにすると、キーを押しっぱにした時のサクサク感がかなり変わります。
また、Terminal上でCtrl + Shift + p
を押すと、Terminalの設定画面になります。
この画面からの設定できるフォントは、あまり多くないですが、実はNerdFont
等のアイコン付きフォントにも変更できます。
ただし、手順が少し複雑なので、別にまとめた記事を見てください
まとめ
Linuxに触ってみたい、軽いPCでカフェでプログラミングしたいって人はChromeook買ってみましょう!!