
Google Pixel 9aでLinux開発環境が使えるようになったのでClaude Codeを使ってみた。
はじめに
皆様こんにちは、あかいけです。
ちょっと前にAndroid16でLinux開発環境が使えるようになりました。
その影響で、私のGoogle Pixel 9aでもついにLinux開発環境が使えるようになりました!🎉🎉🎉
これで満員電車の中でも Claude Code で Vibe Coding ができるというわけです、素晴らしい!
というわけで、
今回はGoogle Pixel 9aでClaude Codeを使うまでにやったことを書いていきます。
モチベーション
「スマホでも開発作業できたらいいのになぁ...」
そう思った経験はありませんか?
確かに、これまでもAndroidでLinux環境を使う方法はありました。
TermuxやUserLAndといったターミナルエミュレータを使えば、開発環境を構築することは可能でした。
しかし、やっぱり「公式」の安心感って大きいですよね。
Android公式として提供されているということは、セキュリティ面もある程度担保されているでしょうし、今後の動向次第ではありますが長期的なサポートも期待できるかもしれません。
Linux開発環境 有効化までの手順
開発者向けオプション
まずは開発者向けオプションを有効化する必要があります。
手順は以下を参照しています。
私の端末はGoogle Pixel 9aなので、
[設定] > [デバイス情報] > [ビルド番号]の画面でビルド番号を表示させます。
この[ビルド番号] オプションを 7 回タップすることで「開発者向けオプション」を有効化できます。
有効化後に[設定] > [システム]の画面にて、「開発者向けオプション」が表示されています。
あとは「開発者向けオプション」をクリックして、有効化をしてあげればOKです。
この一連の謎の儀式感が、
昔のゲームの隠しコマンドみたいでワクワクしますね。
Linux開発環境
次はLinux開発環境の有効化です。
こちらも公式のドキュメントを参考に作業します。
まずは[設定] > [システム] > [開発者向けオプション] > [Linux開発環境]の画面を開き、
トグルをクリックして有効化します。
有効化後に「ターミナル」というアプリが追加されているので起動します。
開くとインストールを促されるので、実施します。
インストール後、再度アプリを開くと見慣れた画面を拝めます。
これにてインストールは完了です。
デフォルト状態
とりあえずデフォルトの状態を色々確認してみます。
OS
OSはDebian 12です。
これは固定で、他のOSは選択できないようです。
droid@localhost:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
CPU
CPUはデフォルトで全コアが使えるようです。
また現状では設定変更はできなそうです。
droid@localhost:~$ lscpu
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
メモリ
メモリは4GiB割り当てられています。
こちらも設定変更できなそうです、今後のアップデートに期待ですね。
droid@localhost:~$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 402Mi 3.4Gi 5.6Mi 231Mi 3.4Gi
Swap: 981Mi 0B 981Mi
ディスク
ディスクはデフォルトだと6GBです。(あまりにも心許ない…)
こちらは変更できるので、後で拡張しましょう。
droid@localhost:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 5.7G 1.4G 4.1G 25% /
/dev/vda2 191M 191M 0 100% /opt/kernel_extras
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 786M 508K 785M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
internal 110G 40G 71G 36% /mnt/internal
android 110G 40G 71G 36% /mnt/shared
tmpfs 393M 0 393M 0% /run/user/0
tmpfs 393M 4.0K 393M 1% /run/user/1000
色々設定してみる
では色々設定してみます。
なおスマホからコマンドを打つのは辛すぎるので、
Bluetooth や USB で外部キーボードを使うことをおすすめします。
ディスク増強
6GBだと何もできないので、まずはディスクを増強しましょう。
ディスクは設定画面(歯車マーク)からGUIで設定変更できます。
とりあえず20GB割り当ててみます。
変更するとアプリが再起動します。
再起動後、確認してみると問題なく拡張できているかと思います。
droid@localhost:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.4G 18G 8% /
/dev/vda2 191M 191M 0 100% /opt/kernel_extras
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 786M 508K 785M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
internal 110G 54G 57G 49% /mnt/internal
android 110G 54G 57G 49% /mnt/shared
tmpfs 393M 0 393M 0% /run/user/0
tmpfs 393M 4.0K 393M 1% /run/user/1000
OS アップグレード
次に OS アップグレードしましょう。
$ sudo apt update; sudo apt upgrade -y;
おそらく使う子たちインストール
おそらく使うであろう、いつもの子達をインストールしておきます。
$ sudo apt install -y git npm htop jq tmux unzip;
ポート制御
ポート制御も設定画面から設定できます。
なお許可ポートにウェルノウンポートの追加はできません。
とりあえず以下のコマンドでHTTPサーバーを立ててみます。
droid@localhost:~$ python3 -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
設定画面を見ると指定したポートが出てくるので、これを許可してあげます。
その後別端末から疎通確認してみると、通信できるかと思います。
$ curl XXX.XXX.XXX.XXX:8000
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Directory listing for /</title>
</head>
<body>
<h1>Directory listing for /</h1>
<hr>
<ul>
<li><a href=".bash_history">.bash_history</a></li>
<li><a href=".bash_logout">.bash_logout</a></li>
<li><a href=".bashrc">.bashrc</a></li>
<li><a href=".config/">.config/</a></li>
<li><a href=".lesshst">.lesshst</a></li>
<li><a href=".profile">.profile</a></li>
<li><a href=".python_history">.python_history</a></li>
<li><a href=".sudo_as_admin_successful">.sudo_as_admin_successful</a></li>
<li><a href=".viminfo">.viminfo</a></li>
</ul>
<hr>
</body>
</html>
Docker
Claude Code で MCP サーバーを使うときにほぼ確実に使うので、Docker も入れておきます。
手順はDocker公式の手順通りです。
Docker インストール
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
rootユーザー以外のDocker実行権限追加
sudo groupadd docker;
sudo usermod -aG docker $USER;
newgrp docker;
claude code
いよいよclaude codeのインストールです。
とはいえ、公式ドキュメントの手順に従ってインストールして、ログインするだけです。
まずはインストールして、
npm install -g @anthropic-ai/claude-code
あとは claude
を起動して、いつも通りログインをするだけです。
よくあるエラー
ターミナルを起動してから別のアプリを開き、再度ターミナルを開いた際に以下のエラーが表示されることが割とよくあります。
(私は1日に2回ぐらい遭遇しました。)
なんだか物騒なことが書いてありますが、私の環境ではターミナルを再起動すれば治りました。
なので遭遇した際は焦らず、とりあえずターミナルを再起動してみてください。
さいごに
以上、Google Pixel 9a で Linux 開発環境が使えるようになったので Claude Code を使ってみました。
今までスマホではGUIのClaudeを使うことが多かったですが、
これからはClaude Codeを使ってスマホでもある程度コードなど具体的な実装の部分を触りやすくなりました。
ただ現状ではターミナル上で日本語キーボードが使えない?ようなので、英語でのやり取りが前提になりそうです。
なお今回は私が使ってる関係でGoogle Pixel 9aを対象としていましたが、
Android16であれば他の端末でも使えると思うので、皆様もぜひ使ってみてください。