AndroidをLinux的に使ってみた話
こんにちは!
このnoteでは、電子工作やプログラミング、Linux関係のあれこれを書いているわけですが、今回はAndroidについての記事となります。タイトルの通り、AndroidをLinux的に使える「Termux」というアプリを使ってみたという話です。
今回の内容に関しては、「Termux」で検索かければよく出てくるような一般的な使い方ですが、今後はこのアプリを使って色々と面白いことができればなと思っています!
一番身近なLinux
ご存じの方も多いと思いますが、現在多くのスマホやタブレットで搭載されているOSであるAndroidはオープンソースOSであるLinuxをベースとしています。正直言って僕自身もLinuxとAndroidの関係を全て把握しているわけではないのではっきりした言い方はできませんが、要するにLinuxの一種のようなものだと言ってよいのでしょう(厳密には正しくない言い方ですw)。
僕が本格的にLinuxを使い始めたのは今年の4月ころですが(下記記事参照)、そういえば身近なところにもLinuxがあったなと気づき、これを使ってなにかおもしろいことができないかと思ったわけです。Androidはソニーの初代Xperiaの時期からの付き合いなので、なんだかんだで10年近くは継続して使ってますからねw
個人的にAndroidの面白さはカスタマイズ性の高さだと思っていて、アップルのiPhoneではできないようなことが出来るのが楽しいです。まあその分、自分でいろいろ調べたり、考えなくてはいけない面も多いので、そこは向き不向きはあるかなとは思いますけどね(最近のAndroidは普通に使う分にはあまり深く考えなくても良いようにはなっていると思いますが)。
一般的なPC向けのLinuxディストリビューションと比べると「root権限」の問題やキャリアによる制限などによって制約は多いですが、そのカスタマイズ性を発揮する意味でLinux的に使えないかと思って調べてみたところ、「Termux」というアプリにたどり着いたわけです。ここのところLinuxの扱いにもだいぶ慣れてきたところがあるので、その知識とかも活かせるかなと。
端末エミュレータアプリ「Termux」
ということで、今回紹介するのは「Termux」というAndroidアプリ。Androidの中にLinux的な実行環境を提供する端末エミュレーターアプリで、Google play storeからダウンロード・インストール可能です。
Android向けの端末エミュレーターアプリは他にもあるようですが、このTermuxの特徴的なところは「root化」しなくても使えることと、なんといってもパッケージの豊富さだと思います。
「root化」というのは、「root」というOSの操作についての全権を取得すること(正確に言うと、全権をもつ「root」ユーザーへのアクセス権を取得すること)。一般的にAndroid搭載機にはユーザーに「root」権限は与えられておらず、これを取り外すことによって出来ることが大幅に広がる反面、セキュリティー等のリスクも大きく増大します(もちろん、root化した段階でメーカーの保証は外れます)。要するに、システムの深いところまで触れるようになる分、しっかり理解して使わないと大惨事になるということです。
なので、特に大きなカスタマイズをしない用途であればあまり推奨される行為ではないわけですが、このTermuxであればroot化しなくてもAndroidをLinux的に使うことができるというわけです(ただ、root化することでTermuxで出来ることの幅が広がるというのは有ります)。root化せずに使えるので、手軽に試したりできることはおおきなメリットだと思います。
そして、個人的にこの「Termux」の良さだと思っているのが、パッケージの多さです。世界的に広く使われているアプリだということも有り、Linuxの主要なコマンドなんかはこのTermux用に色々と開発されており、それらを使えるのが最大のメリットだと思います。例をあげるとキリがないですが、例えば「ssh」や「cron(Termux上ではcronieという名称)」などですね。具体的なパッケージのリストは、Githubのリポジトリとして公開されています。
パッケージを利用する際は、他のLinuxディストリビューションと同じように
$ apt install {パッケージ名}
とするだけでいいので、そういう意味でもお手軽に利用できます(aptの部分はpkgでもOK)。このリポジトリ以外には接続できないという制限はありますが、それでもここにあるものだけでもかなりのことができるので、個人でサクッと使う分にはそんなに困らないかなと思います。
僕は今の所あまり使う予定はないですが、各種プログラミング言語の開発・実行環境なんかもインストールできるので、これを使ってAndroid上で開発をおこなう、なんてこともできてしまいます。ruby、 python, perl, php, node.jsなどなど、主要なものは割と揃っていますし、もちろんgitにも対応しています。Bluetoothキーボードを繋いで、出先でちょちょっと開発をすすめる、なんてこともできるかも知れませんね(というか、実際にやっている人のWeb記事もちょこちょこありました)。
ちなみに、Androidで一般的に使われるソフトウェアキーボードだと入力が結構やりにくいので、この「Termux」と合わせてよく推奨されている「Hacker's Keyboard」というアプリを併用しています。コマンドラインを打っていると、上下左右キーやタブキーが欲しくなったりするので、なかなか便利に使えます。
SSHへの接続
ということで、まずはものは試しでってことで「ssh」への接続を試してみます。「Termux」をインストールして開いた時の画面はこんな感じ。
まずはsshをインストール。上の画像の一番下の行にあるように
$ pkg install openssh
とすればOK。あとは通常のLinuxと同様にしてsshの鍵を作成して公開鍵を接続先に登録、あとは権限を適切に設定すればリモートマシンに接続できます。このあたりの詳しい手順は調べてみればいくらでも見つかりますし、以前に書いたリモートデスクトップの記事でも書いたので、興味があればそちらをご参照下さい。
実際に家で動いているサーバー用PCに接続するとこんな感じ。まあAndroid用のsshクライアントアプリは他にも色々あるので、あえて「Termux」経由でやる意味があるのかと問われると微妙ですけどねw
ただ、逆にPCからこのTermuxにsshで接続することも可能で、そういう点は便利かも知れません。デフォルトのポートは8022のようなので、鍵交換をしたPC側から
$ ssh -p 8022 {Termux側ユーザー名}@{IPアドレス}
と打ち込んでやれば下記のように接続できます。
ただ、動作がちょっと重いのと、Android側でTermuxを立ち上がっている状況でないと接続できない & Termuxが切れるたびに「sshd」コマンドを打つ必要があるというちょっとめんどくさい仕様なので、ssh接続自体がどこまで実用性があるのかは微妙です。まあ、コマンドは明らかにPCの方が打ちやすいというメリットはありますし、ファイルをssh経由で転送したりすることを考えると用途はそれなりにあるとは思います。
まとめ
ということで、今回はAndroidをLinux的に使うためのアプリ「Termux」を使ってみたという話を書きました。今回はsshでリモート接続しただけですが、工夫次第でいろいろと遊べそうなアプリだと思うので、何か応用が思いついたら都度記事にしたいと思います。
ちなみに、すでに一つの利用していることがあるので、それについては次回記事にするつもりです。ご興味のある方はお楽しみに!
それでは、また!