PR

【UserLAndの使い方】Android端末に「git clone」する方法

OSS開発

GitHubからAndroid端末に「git clone」するためには、ターミナルアプリが必要です。

本記事では、「UserLAnd」というターミナルアプリを使用して「git clone」する手順について詳しく説明します。

なお、プライベートリポジトリをcloneする場合は、アカウント上で生成できる「アクセストークン」も必要です。アクセストークンの取得方法と使用方法についても、この記事で丁寧に解説します。

WordPressブロガーの方必見! 外出先でもブログ執筆作業がはかどる、 Ankerの大容量モバイルバッテリー をご紹介します。

【前準備】Android端末で「git」を使えるようにする

1.「UserLAnd」をインストール

gitの操作を行うためには、「git clone」などのコマンドをターミナルで実行する必要があります。Android端末では、Playストアを通じてターミナルアプリを簡単にインストールできます。

以前は「Termux」というアプリが推奨されていました[1]が、現在では「UserLAnd」というアプリがおすすめです。

UserLAnd - Linux on Android - Apps on Google Play
Run Linux on Android. No root required.

2.ターミナルを開く

UserLAndを起動し、ターミナルを開く手順を詳しく見てみましょう。

まず、「Ubuntu」をクリックします。

クリックすると、2つの質問が表示されます。「Please select a desktop environment:」に対しては「Minimal」を選び、「Please select a connection type:」に対しては「Terminal」を選択します。

これにより、下記のようなターミナルが起動します。

3.「update」と「upgrade」をする

まず初めに、aptを更新します。

Bash
userland@localhost:~$ sudo apt update
userland@localhost:~$ sudo apt upgrade -y

4.「git」をインストールする

次に、「git」をインストールします。

Bash
userland@localhost:~$ sudo apt install git -y

これにより、Android上で「git」が利用可能となります。

パブリックリポジトリを「git clone」する

Gitをインストールした後は、単に「git clone」を行えば良いのですが、UserLAndではAndroidストレージへの直接アクセスが制限されています

まず、UserLAndのホームディレクトリを確認します。フォルダやファイルが存在しないことが確認できます。

Bash
userland@localhost:~$ pwd
/home/userland
userland@localhost:~$ ls
userland@localhost:~$

この状態で、自分が開発した「marktree」をcloneしてみます。

Bash
userland@localhost:~$ git clone https://github.com/yusu79/marktree.git
userland@localhost:~$ ls
marktree

クローンは成功しましたが、Androidから直接このフォルダにアクセスできません

フォルダ管理アプリ「ファイルマネージャー」でメインストレージ内を検索しても、「marktree」が見つかりません。

これがUserLAndの特徴です。Termux では「ファイル」アプリから Termux 側の Home ディレクトリに直接アクセスできますが UserLAnd はできません[2]

その対策として、UserLAndには、「ファイル」アプリから共有可能な別の領域「/storage/internal」が用意されています[3]。ここにcp -rなどを使用してコピーすれば、Androidからファイルを参照できます。

Bash
userland@localhost:~$ cp -r marktree /storage/internal

再び「ファイルマネージャー」で「marktree」を検索すると、検索結果に表示されます。フォルダをタップすると、ちゃんとアクセスできています。

ただし、/storage/internal」に直接アクセスしてgit cloneすることはできません

一度marktreeを削除してから、もう一度cloneしてみます。

Bash
userland@localhost:~$ cd /storage/internal
userland@localhost:/storage/internal$ ls
userland@localhost:/storage/internal$ git clone https://github.com/yusu79/marktree.git
Cloning into 'marktree' ...
(中略)
fatal: fetch-pack: invalid index-pack output

git cloneに失敗しました。そのためUserLAndでGitHubからcloneする際は、

  1. ホーム以下に「git clone」する
  2. それを「/storage/internal」以下にコピーする

という手順を踏む必要があります。これは「git pull」でも同様です。

プライベートリポジトリを「git clone」する

次に、プライベートリポジトリをダウンロードしてみましょう。

基本的な手順はパブリックリポジトリと同じですが、GitHubにログインせずにgit cloneを行う場合は、「アクセストークン」が必要です。

アクセストークン無しで「git clone」してみる

試しに、アクセストークンなしでクローンしてみます。今回はあらかじめ作成した「obsidian-backup」というプライベートリポジトリを対象にします。

同じくgit cloneを実行します。

Bash
userland@localhost:~$ git clone https://github.com/yusu79/obsidian-backup.git

すると、「ユーザー名」と「パスワード」が求められます。

Bash
Cloning into 'obsidian-backup'...
Username for 'https://github.com': yusu79
Password for 'https://yusu79@github.com': 

素直に両方とも入力すると、以下のメッセージが表示されます。

Bash
remote: Support for password authentication was removed on August 13, 2021.
remote:  Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/yusu79/obsidian-backup.git/'

リモート: パスワード認証のサポートは2021年8月13日に削除されました。
リモート: 現在推奨されている認証モードの情報については、https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls を参照してください。
致命的エラー: https://github.com/yusu79/obsidian-backup.git/ の認証に失敗しました。
この翻訳はChatGPTによるものです(出典: ChatGPT

上記のメッセージの通り、2021年8月以降、パスワード認証でプライベートリポジトリをcloneすることは出来なくなりました

アクセストークン有りで「git clone」してみる

このように、アクセストークンがないとプライベートリポジトリをgit cloneすることはできません。

以下のサイトにアクセスし、アクセストークンを生成する手順を説明します。

Build software better, together
GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over...

まず、「Generate new Token」をクリックします。

トークンには任意の名前を付けます。ここでは「obsidian-backup」としましょう。Expirationはアクセストークンの有効期限で、デフォルトは30日です。

「Repository access」では、アクセストークンがアクセスできるリポジトリを選択します。一番下の「Only select repositories」を選び、「obsidian-backup」リポジトリを選択します。

「Permissions」では、アカウントには一切の権限を与えず、「Account permissions」は「No Access」のままにします。一方でリポジトリには「Contents」と「Metadata」のみを選び、「Read-only」にします

こうすることで、git clonegit pullしか出来なくなります。

最後に「Generate token」をクリックします。

これで、アクセストークンが表示されます。このトークンをコピーして保管しておくと、これがパスワードの代わりとなります。

次に、「obsidian-backup」をクローンします。パスワードには先ほど生成した「アクセストークン」を貼り付けます。

Bash
userland@localhost:~$ git clone https://github.com/yusu79/obsidian-backup.git
Cloning into 'obsidian-backup'...
Username for 'https://github.com': yusu79
Password for 'https://yusu79@github.com': [アクセストークン]
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 9 (delta 0), reused 9 (delta 0), pack-reused 0
Receiving objects: 100% (9/9), done.

これでクローンが成功しました。

Bash
userland@localhost:~$ ls
marktree obsidian-backup

残る作業は、marktreeと同様に「/storage/internal」にコピーすることです。

Bash
$ cp -r obsidian-backup /storage/internal

ファイルマネージャーでメインストレージで「obsidian-backup」と検索すると、正しく表示されます。

ただし、一度クローンした後でもgit pull」を行う場合、アクセストークンが必要になるので注意が必要です。

Bash
userland@localhost:~$ cd obsidian-backup
userland@localhost:~/obsidian-backup$ git pull 
Username for 'https://github.com': yusu79
Password for 'https://yusu79@github.com': 

まとめ

この記事では、Android端末でGitHubから「git clone」を行う方法についてまとめました。

Android端末でgitを使用するためには、まずターミナルアプリが必要です。複数の選択肢がありますが、この記事ではUserLAnd」を使用した手順を解説しました。

UserLAndではAndroidから直接アクセスできないため、ダウンロードしたファイルは「/storage/internal/」にコピーしてください。また、/storage/internal/」以下に直接クローンやプルはできないことに留意してください。

プライベートリポジトリをクローンする際は、アクセストークンが必要です。2021年8月13日以降はパスワード認証ができなくなったため、注意が必要です。


  1. AndroidスマホにWifi経由でSSH接続する方法 #Android – Qiita ↩︎

  2. linux:userland [HYPERでんち] ↩︎

  3. Android: UserLAnd + Termux を Note PC 代わりに使う | ホイール欲しい ハンドル欲しい ↩︎

タイトルとURLをコピーしました