Pixel純正ターミナルでPython環境を構築してみた

2025年3月のアップデートで、Pixelスマートフォンに**純正のLinuxターミナル**が搭載されました。  
これにより、追加のアプリをインストールせずに、**DebianベースのLinux環境**が利用できるようになりました。  
これは気になる…！ということで、実際にPythonをインストールし、簡単なプログラムを動かしてみました。

## 使用環境
- **端末**: Pixel 8
- **ストレージ**: 128GB
- **OS**: Android 15
- **ターミナル** Pixel純正(2025.03 アップデート)

## 1. Pixelのターミナル環境について

PixelのLinuxターミナルは、Androidの仮想化技術 **AVF（Android Virtualization Framework）** を利用し、Debianベースの仮想マシンを起動する仕組みになっています。  

**初回起動時には約500MB以上のLinuxイメージをダウンロードする必要があります。**  
ダウンロード完了後は、通常のDebianと同様に `apt` を使ってパッケージの管理が可能です。 

## 2. Pythonのインストール

Pixelのターミナル環境はDebianベースなので、`apt`で普通にPythonをインストールできます。

```bash
sudo apt update
sudo apt install python3
```
インストールは問題なく完了。
ただし、 スマホでターミナルを打つのは結構大変…！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686753/15bf38f8-e0cd-4149-a03e-7a3452ec3aa8.png" width="50%">

![スクリーンショット 2025-03-10 22.27.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686753/e3f188cb-0293-49c8-8eaf-ade12dee6ced.png)
とはいえ、無事にPython3.11.2が入りました！🎉

## 3. Pythonスクリプトを実行してみる

ターミナルには**標準でvimが入っていた**ので、これを使ってコードを書いてみます。
試しに 簡単な数字当てゲームを実装！
```py
import random

def guess_the_number():
    number = random.randint(1, 100)
    attempts = 0
    print("1から100までの数字を当ててみてください。")

    while True:
        try:
            guess = int(input("あなたの予想 : "))
            attempts += 1
        except ValueError:
            print("数字を入力してください。")
            continue

        if guess < number:
            print("もっと大きな数字です。")
        elif guess > number:
            print("もっと小さな数字です。")
        else:
            print(f"正解！{attempts}回の試行で当てました！")
            break

if __name__ == "__main__":
    guess_the_number()
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686753/bcef1f8e-7c12-4324-a605-d93bf4f6deec.png" width="50%">

ただ、 vimのキーバインドにちょっと戸惑う場面もありました。
（`:wq`など、スマホのキーボードだとやりにくい…）

## スクリプトの保存と実行
ファイル名をnumber-gameとして保存し、pythonを実行しました。
結果、問題なく作動！

![スクリーンショット 2025-03-10 22.39.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686753/40fbf2be-2ce7-4a3f-a714-b1640de78cc1.png)
![スクリーンショット 2025-03-10 22.41.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686753/820b98e7-46f9-4047-908e-74db941503c3.png)

ちゃんと遊べました👌

## 4. Pixelターミナルの注意点

- ディスクサイズの調整
    PixelのLinux環境は仮想マシンとして動作し、設定でディスクサイズを変更できます。
デフォルトでは「5.9GB / 16GB」を使用しましたが、アプリ全体の容量は 6.45GB になっていました。
本格的に開発環境として活用する場合は、より大きな容量に設定すると良さそうです。

<div style="display: flex; justify-content: center;">
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686753/8ddd197b-71b9-4c55-8ebc-27fc36ba6d95.png" width="45%">
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686753/f3e88395-205a-40d2-be35-e5459e82cd0b.png" width="45%">
</div>

## まとめ

- Pixelの純正ターミナルはDebianベースのLinux環境
- `apt`によりPythonをインストール可能
- ディスクサイズ設定が可能
- Pythonのインストールは問題なく成功、簡単なゲームも実行できた

正直、スマホでプログラミングする気にはならないけれど、Androidユーザーが手軽にLinuxターミナルを試せるのはかなり魅力的だと思います。

今後のアップデートでより使いやすくなることに期待！



## 参考
https://helentech.jp/news-62198/#:~:text=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%8C%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%8C%E3%82%8B%E3%81%A8%E3%80%81%E3%81%8A%E3%81%AA%E3%81%98%E3%81%BF%E3%81%AE%E7%94%BB%E9%9D%A2%E3%82%92%E8%A6%8B%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%E3%81%A1%E3%81%AA%E3%81%BF%E3%81%AB%E4%BB%AE%E6%83%B3%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AB%E3%81%AF%E3%81%A1%E3%82%83%E3%82%93%E3%81%A8%20Esc%20%E3%82%84%20Tab%E3%80%81Ctrl%E3%80%81Alt%20%E3%81%AA%E3%81%A9%E3%81%AE%E3%82%AD%E3%83%BC%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

https://developer.android.com/about/versions/15/release-notes?hl=ja#:~:text=%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%A7%20Linux%20%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B

https://qiita.com/shun_nishi/items/8cc2bcd34fb192dc215b#:~:text=%E8%A7%A6%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E6%84%9F%E6%83%B3