Termux リファレンス

Android アプリの Termux を使用したLinux環境の構築と運用方法についてのガイドです。

Termux とは

概要

Termux は Android デバイス上で動作するターミナルエミュレータアプリケーションです。root 権限なしで完全な Linux 環境を提供し、パッケージマネージャーを通じて多数のプログラムをインストールできます。

特徴

  • Root 権限不要: Android デバイスを root 化することなく使用可能
  • 豊富なパッケージ: APT パッケージマネージャーによる豊富なソフトウェア
  • ネイティブ実行: 仮想マシンではなくネイティブで実行
  • SSH サーバー: 外部からの SSH 接続が可能
  • ストレージアクセス: Android の内部・外部ストレージへのアクセス

基本的なセットアップ

初期設定

Termux のインストール後、まず基本的な設定を行います:

# パッケージリストの更新

pkg update

# パッケージの全体アップグレード

pkg upgrade

# 基本的なツールのインストール

pkg install vim curl wget git openssh

ストレージアクセスの設定

# Android ストレージへのアクセス許可を取得

termux-setup-storage

# 確認(storage ディレクトリが作成される)

ls -la ~/storage/

# 主要なディレクトリ

ls ~/storage/shared/     # 内部ストレージ
ls ~/storage/external-1/ # SDカード(存在する場合)

パッケージ管理

pkg コマンド

Termux では pkg コマンドを使用してパッケージを管理します:

# パッケージ検索

pkg search パッケージ名
pkg search python

# パッケージ情報の表示

pkg show パッケージ名
pkg show python

# パッケージインストール

pkg install パッケージ名
pkg install python nodejs php

# パッケージ削除

pkg uninstall パッケージ名

# インストール済みパッケージ一覧

pkg list-installed

# アップグレード可能なパッケージ一覧

pkg list-upgradable

よく使用されるパッケージ

# 開発ツール

pkg install git vim nano tmux

# プログラミング言語

pkg install python nodejs ruby php golang rust

# ネットワークツール

pkg install openssh curl wget rsync nmap

# システムツール

pkg install htop tree file which

# データベース

pkg install sqlite mariadb postgresql

# 圧縮・解凍ツール

pkg install zip unzip tar gzip

ショートカットキー

ターミナルショートカット

# 基本的なターミナルショートカット

Ctrl+C    # プロセス中断
Ctrl+Z    # プロセス一時停止(バックグラウンド実行)
Ctrl+D    # EOF(ファイル終端)、ログアウト
Ctrl+L    # 画面クリア
Ctrl+A    # 行の先頭に移動
Ctrl+E    # 行の末尾に移動
Ctrl+U    # カーソルから行頭まで削除
Ctrl+K    # カーソルから行末まで削除
Ctrl+W    # 前の単語を削除
Ctrl+Y    # 削除したテキストを貼り付け

# 履歴操作

Ctrl+R    # コマンド履歴を逆方向検索
Ctrl+P    # 前のコマンド(↑キーと同じ)
Ctrl+N    # 次のコマンド(↓キーと同じ)

Termux 固有のショートカット

# 音量キーショートカット(Termux設定で有効化が必要)

音量上げ + Q    # Ctrl+キーの入力
音量上げ + W    # ↑キー
音量上げ + A    # ←キー  
音量上げ + S    # ↓キー
音量上げ + D    # →キー
音量上げ + T    # Tab キー
音量上げ + L    # | パイプ記号
音量上げ + H    # ~ ホームディレクトリ記号
音量上げ + U    # _ アンダースコア
音量上げ + P    # Page Up
音量上げ + N    # Page Down
音量上げ + .    # Ctrl+\ (SIGQUIT)

# 画面タッチジェスチャー

長押し          # テキスト選択・コピー・ペーストメニュー
ピンチイン/アウト  # フォントサイズ変更
2本指上下スワイプ  # ページスクロール

セッション管理ショートカット

# tmux セッションショートカット(tmux インストール後)

Ctrl+B, C       # 新しいウィンドウ作成
Ctrl+B, N       # 次のウィンドウ
Ctrl+B, P       # 前のウィンドウ
Ctrl+B, D       # セッションからデタッチ
Ctrl+B, %       # 縦分割
Ctrl+B, "       # 横分割

# screen セッションショートカット(screen インストール後)

Ctrl+A, C       # 新しいウィンドウ作成
Ctrl+A, N       # 次のウィンドウ
Ctrl+A, P       # 前のウィンドウ
Ctrl+A, D       # セッションからデタッチ

Android 統合ショートカット

# Termux:API が必要な機能

termux-open     # ファイルを既定のアプリで開く
termux-share    # ファイルを他のアプリに共有

# 例:ファイルを共有
echo "Hello" | termux-share

# 例:URLをブラウザで開く
termux-open-url "https://example.com"

# 例:ファイルを既定のアプリで開く
termux-open example.pdf

Android ホームスクリーンショートカット

.shortcut フォルダーによるショートカット作成

Termux では、ホームディレクトリに .shortcut フォルダーを作成し、その中にスクリプトファイルを配置することで、Android のホーム画面からTermux コマンドを直接実行できるショートカットを作成できます。

# .shortcut フォルダーの作成
mkdir -p ~/.shortcut

# フォルダーの確認
ls -la ~/.shortcut

ショートカットファイルの作成

# 基本的なショートカットファイルの例

# 1. SSH サーバー起動ショートカット
cat > ~/.shortcut/start-ssh << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
sshd
echo "SSH サーバーが起動しました"
sleep 2
EOF

# 2. システム情報表示ショートカット
cat > ~/.shortcut/system-info << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
clear
echo "=== Termux システム情報 ==="
echo "日時: $(date)"
echo "ユーザー: $(whoami)"
echo "ホスト: $(hostname)"
echo "CPU情報: $(cat /proc/cpuinfo | grep "model name" | head -1 | cut -d: -f2)"
echo "メモリ情報:"
free -h
echo "ディスク使用量:"
df -h $HOME
echo "IP アドレス:"
ifconfig wlan0 2>/dev/null | grep inet | head -1
read -p "エンターキーで終了..."
EOF

# 3. パッケージアップデート ショートカット
cat > ~/.shortcut/update-packages << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
echo "パッケージリストを更新中..."
pkg update
echo "パッケージをアップグレード中..."
pkg upgrade
echo "アップデート完了"
sleep 3
EOF

# 4. Gemini CLI ショートカット(設定済みの場合)
cat > ~/.shortcut/gemini-chat << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
source ~/gemini-env/bin/activate 2>/dev/null
echo "Gemini AI との対話を開始します"
echo "質問を入力してください('exit' で終了):"
while true; do
    read -p "> " question
    if [ "$question" = "exit" ]; then
        break
    fi
    if [ -n "$question" ]; then
        gemini "$question"
    fi
done
EOF

# すべてのショートカットファイルに実行権限を付与
chmod +x ~/.shortcut/*

高度なショートカット例

# 5. 開発環境セットアップショートカット
cat > ~/.shortcut/dev-setup << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
echo "開発環境をセットアップ中..."

# 必要なパッケージのインストール
pkg install -y git vim tmux nodejs python

# Git 設定(初回のみ)
if [ ! -f ~/.gitconfig ]; then
    echo "Git 設定を行います"
    read -p "Git ユーザー名: " git_name
    read -p "Git メールアドレス: " git_email
    git config --global user.name "$git_name"
    git config --global user.email "$git_email"
fi

# SSH キーの生成(初回のみ)
if [ ! -f ~/.ssh/id_rsa ]; then
    echo "SSH キーを生成します"
    ssh-keygen -t rsa -b 4096 -C "$git_email" -f ~/.ssh/id_rsa -N ""
    echo "公開鍵:"
    cat ~/.ssh/id_rsa.pub
fi

echo "開発環境のセットアップが完了しました"
read -p "エンターキーで終了..."
EOF

# 6. ファイルバックアップショートカット
cat > ~/.shortcut/backup-files << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
backup_dir="~/storage/shared/termux-backup-$(date +%Y%m%d)"
mkdir -p "$backup_dir"

echo "ファイルバックアップを開始します..."
echo "バックアップ先: $backup_dir"

# 重要なファイルのバックアップ
cp -r ~/.ssh "$backup_dir/" 2>/dev/null
cp -r ~/.shortcut "$backup_dir/" 2>/dev/null
cp ~/.bashrc "$backup_dir/" 2>/dev/null
cp ~/.gitconfig "$backup_dir/" 2>/dev/null

echo "バックアップが完了しました"
ls -la "$backup_dir"
read -p "エンターキーで終了..."
EOF

# 7. ネットワーク診断ショートカット
cat > ~/.shortcut/network-check << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
echo "=== ネットワーク診断 ==="

echo "1. ネットワーク接続状態:"
ping -c 3 8.8.8.8

echo -e "\n2. WiFi 情報:"
termux-wifi-connectioninfo 2>/dev/null || echo "termux-api が必要です"

echo -e "\n3. IP アドレス情報:"
ifconfig

echo -e "\n4. DNS 解決テスト:"
nslookup google.com

echo -e "\n5. HTTP 接続テスト:"
curl -I https://www.google.com

read -p "エンターキーで終了..."
EOF

# すべてのショートカットファイルに実行権限を付与
chmod +x ~/.shortcut/*

ショートカットの確認と管理

# 作成済みショートカットの一覧表示
ls -la ~/.shortcut/

# ショートカット内容の確認
cat ~/.shortcut/ショートカット名

# ショートカットのテスト実行
~/.shortcut/ショートカット名

# ショートカットの編集
vim ~/.shortcut/ショートカット名

# ショートカットの削除
rm ~/.shortcut/ショートカット名

Android ホーム画面での表示

# ショートカットが Android ホーム画面に表示される流れ:

# 1. ~/.shortcut フォルダーにスクリプトファイルを配置
# 2. ファイルに実行権限を付与(chmod +x)
# 3. Termux アプリを一度再起動またはリフレッシュ
# 4. Android のホーム画面で長押し → ウィジェット → Termux
# 5. 作成したショートカットが選択肢に表示される
# 6. ホーム画面に配置してタップで実行

# Termux の設定確認
echo "Termux バージョン: $(termux-info | grep "Termux version" || echo "不明")"

ショートカットのカスタマイズ

# アイコン付きショートカット例(Android 8.0以降)
cat > ~/.shortcut/custom-shortcut << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash

# カスタムタイトル設定
echo -e "\033]0;マイカスタムショートカット\007"

# カラー出力
echo -e "\033[1;32m=== カスタムショートカットが実行されました ===\033[0m"
echo -e "\033[1;34m現在時刻: $(date)\033[0m"

# 実行したい処理をここに記述
echo "カスタム処理を実行中..."

# 処理完了の通知
termux-notification --title "ショートカット実行完了" --content "カスタムショートカットが正常に完了しました" 2>/dev/null

read -p "エンターキーで終了..."
EOF

chmod +x ~/.shortcut/custom-shortcut

トラブルシューティング

# ショートカットが表示されない場合

# 1. 権限確認
ls -la ~/.shortcut/

# 2. ファイル形式確認(実行可能ファイルである必要がある)
file ~/.shortcut/*

# 3. Termux の再起動
# Android のアプリ履歴からTermux を完全に終了し、再起動

# 4. shebang の確認(ファイルの最初の行)
head -1 ~/.shortcut/*

# 5. ファイル名の確認(特殊文字や空白は避ける)
# 正しい例: start-ssh, system-info, backup-files
# 避ける例: "start ssh", "システム情報"

# 6. Termux のストレージ権限確認
termux-setup-storage

SSH 接続の設定

SSH サーバーの設定

# OpenSSH のインストール(未インストールの場合)

pkg install openssh

# SSH サーバーの起動

sshd

# SSH サーバーの状態確認

pgrep sshd

# パスワードの設定(重要)

passwd

SSH 接続の確認

# Termux デバイスの IP アドレス確認

ifconfig
# または

ip addr show

# SSH 接続ポートの確認(デフォルト: 8022)

cat $PREFIX/etc/ssh/sshd_config | grep Port

# ユーザ名の確認

whoami
# または

echo $USER
# または詳細情報

id

# 外部からの接続テスト(同一ネットワーク内から)

# ssh -p 8022 username@device_ip_address

SSH キー認証の設定

# SSH キーペアの生成

ssh-keygen -t rsa -b 4096 -C "termux@device"

# 公開鍵の確認

cat ~/.ssh/id_rsa.pub

# 公開鍵を authorized_keys に追加(リモートアクセス用)

cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

SSH 設定ファイルのカスタマイズ

# SSH サーバー設定の編集

vim $PREFIX/etc/ssh/sshd_config

# 主要な設定項目:

# Port 8022                    # ポート番号
# PasswordAuthentication yes   # パスワード認証の可否

# PubkeyAuthentication yes     # 公開鍵認証の可否
# PermitRootLogin no          # root ログインの可否

# 設定変更後の SSH サーバー再起動

pkill sshd
sshd

外部からの SSH 接続

基本的な接続方法

# PC から Termux への SSH 接続

ssh -p 8022 username@192.168.1.100

# SSH キーを使用した接続

ssh -p 8022 -i ~/.ssh/termux_key username@192.168.1.100

# SSH 設定ファイルを使用(推奨)

# ~/.ssh/config に以下を追記:
# Host termux

#     HostName 192.168.1.100
#     Port 8022

#     User username
#     IdentityFile ~/.ssh/termux_key

# 設定後の接続

ssh termux

ファイル転送

# SCP を使用したファイル転送

scp -P 8022 file.txt username@192.168.1.100:~/
scp -P 8022 -r directory/ username@192.168.1.100:~/

# rsync を使用した同期

rsync -avz -e "ssh -p 8022" directory/ username@192.168.1.100:~/backup/

ポートフォワーディング

# ローカルポートフォワーディング

# Termux上のサービス(例:Webサーバー)をPCからアクセス
ssh -p 8022 -L 8080:localhost:8080 username@192.168.1.100

# リモートポートフォワーディング

# PCのサービスをTermuxからアクセス
ssh -p 8022 -R 9000:localhost:3000 username@192.168.1.100

Gemini CLI の環境構築

Python 環境のセットアップ

# Python と pip のインストール

pkg install python python-pip

# 仮想環境の作成(推奨)

pip install virtualenv
python -m venv ~/gemini-env

# 仮想環境の有効化

source ~/gemini-env/bin/activate

# 仮想環境の確認

which python
python --version

Gemini CLI のインストール

# Google AI Python SDK のインストール

pip install google-generativeai

# または Gemini CLI 専用ツール(例)

pip install gemini-cli

# 依存関係の確認

pip list | grep -i gemini

API キーの設定

# 環境変数での設定

export GEMINI_API_KEY="your_api_key_here"

# 永続化(.bashrc に追記)

echo 'export GEMINI_API_KEY="your_api_key_here"' >> ~/.bashrc
source ~/.bashrc

# 設定ファイルでの管理

mkdir -p ~/.config/gemini
echo "your_api_key_here" > ~/.config/gemini/api_key
chmod 600 ~/.config/gemini/api_key

Gemini CLI の基本的な使用方法

# インストール確認

python -c "import google.generativeai as genai; print('Gemini AI installed successfully')"

# 基本的な API テスト

python << 'EOF'
import google.generativeai as genai
import os

# API キーの設定

genai.configure(api_key=os.getenv('GEMINI_API_KEY'))

# モデルの作成

model = genai.GenerativeModel('gemini-pro')

# 簡単なテスト

response = model.generate_content("Hello, Termux!")
print(response.text)
EOF

Gemini CLI スクリプトの作成

# Gemini CLI スクリプトの作成

cat > ~/bin/gemini << 'EOF'
#!/data/data/com.termux/files/usr/bin/python

import google.generativeai as genai
import os
import sys

# API キーの設定

api_key = os.getenv('GEMINI_API_KEY')
if not api_key:
    with open(os.path.expanduser('~/.config/gemini/api_key'), 'r') as f:
        api_key = f.read().strip()

genai.configure(api_key=api_key)

# モデルの作成

model = genai.GenerativeModel('gemini-pro')

# コマンドライン引数の処理

if len(sys.argv) < 2:
    print("使用方法: gemini <質問>")
    sys.exit(1)

question = ' '.join(sys.argv[1:])

# 質問の送信と回答の表示

try:
    response = model.generate_content(question)
    print(response.text)
except Exception as e:
    print(f"エラー: {e}")
EOF

# スクリプトに実行権限を付与

chmod +x ~/bin/gemini

# PATH に bin ディレクトリを追加

mkdir -p ~/bin
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

使用例

# Gemini CLI の実行

gemini "Termux の便利な使い方を教えて"

# 長いテキストの処理

echo "解析したいテキスト" | xargs gemini "以下のテキストを要約して:"

# ファイル内容の分析

gemini "このログファイルに問題はありますか? $(cat /var/log/syslog | tail -20)"

高度な設定とカスタマイズ

Termux API のセットアップ

# Termux:API アプリのインストールが必要

# Google Play Store から Termux:API をインストール

# termux-api パッケージのインストール

pkg install termux-api

# API 機能の例

termux-battery-status    # バッテリー情報
termux-location         # 位置情報
termux-notification     # 通知送信
termux-sms-list        # SMS一覧
termux-wifi-scaninfo   # WiFi情報

自動起動設定

# SSH サーバーの自動起動スクリプト

cat > ~/.bashrc << 'EOF'
# SSH サーバーの自動起動

if ! pgrep sshd > /dev/null; then
    echo "SSH サーバーを起動中..."
    sshd
fi

# Gemini 仮想環境の自動有効化(オプション)

if [ -f ~/gemini-env/bin/activate ]; then
    source ~/gemini-env/bin/activate
fi
EOF

# 設定の反映

source ~/.bashrc

セキュリティ設定

# ファイアウォール的なネットワーク制限(例)

# Note: Termux は root 権限がないため、システムレベルの設定は制限される

# SSH アクセスログの確認

tail -f $PREFIX/var/log/auth.log

# 不要なサービスの停止

pkill -f "不要なプロセス名"

# セキュアな権限設定

chmod 700 ~
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.bashrc

トラブルシューティング

よくある問題と解決方法

# パッケージインストールエラー

pkg clean                    # キャッシュクリア
pkg update && pkg upgrade    # パッケージリスト更新

# SSH 接続できない場合

pgrep sshd                   # SSH サーバー確認
sshd                         # SSH サーバー起動
netstat -tlnp | grep 8022    # ポート確認

# 権限エラー

ls -la ~/.ssh/               # 権限確認
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

# Gemini API エラー

echo $GEMINI_API_KEY         # API キー確認
pip list | grep google       # パッケージ確認
python -c "import google.generativeai"  # インポート確認

ログ確認

# Termux のログディレクトリ

ls $PREFIX/var/log/

# SSH ログ

tail -f $PREFIX/var/log/auth.log

# システムログ(Android)

logcat | grep -i termux

パフォーマンス最適化

# メモリ使用量確認

free -h
ps aux --sort=-%mem

# 不要なプロセス終了

pkill -f "不要なプロセス"

# ディスク容量確認

df -h
du -sh ~/* | sort -hr

Linux CLI の基本コマンド

Termux では標準的な Linux コマンドが使用できます。詳細な Linux CLI の使用方法については、Linux CLI リファレンスを参照してください。

Termux 固有の違い

# PREFIX 変数(Termux 固有)

echo $PREFIX  # /data/data/com.termux/files/usr

# Android 固有のパス

ls /android_asset/
ls /system/

# Termux 固有のコマンド

am start                     # Android Activity Manager
pm list packages            # パッケージ管理
getprop                      # Android Properties

このガイドを参考に、Termux を効果的に活用してモバイル Linux 環境を構築してください。