Androidを気軽にCUI環境で遊ぶ(root不要)

これまで色々なCUIツールを紹介してきましたが、Android端末上でこれらを使うのは「root化が必須で環境構築がメンドくさい」といった声を良く耳にします。また、ターミナルから基本的なLinuxコマンドを使いたくてもマーケットにあるbusybox-installerの類は軒並み要rootだったりする為に、基本的にAndroidでのCUIオペレーションは敷居が高いと思う方が結構いらっしゃるみたいですよね。そこで今回はターミナルアプリをインストールするだけで気軽にCUI作業が出来る仕組みを用意してみました。というか最近手持ちの端末が調子悪くて環境2,3回壊しちゃってるんで、自分で楽するためですね。本当は。
「用意した」と言ってもこちらのサイトの成果を利用させて頂いているだけです。'kbox'という名称もそのまま使わせて頂いてます。

◆インストール方法

  1. ここからTerm20120612.apkをダウンロードし、イントールする。

これだけです。元のTerm.apkと比べるとかなり肥大化しているので端末の空き容量には注意願います。

◆使用方法
「端末エミューレータ」を起動すると、ファイルの展開を行った後zshが起動するので後は自由に色々なオペレーションを試してみてください。2回目以降の起動ではファイル展開はスキップされます。$HOME配下のドットファイル類は普段自分が使ってるものの一部を流用しているので、ご自分の好みに合わせて修正してください。GNU Screenについては過去の記事にあった不具合は改善されているのでLinuxと同様に設定、実行して頂いて大丈夫だと思います。
あ、あと設定でUTF-8をオンにしとかないと日本語が出ないので注意してください。

◆仕組みについて
端末エミュレータに限ったことではないと思いますが、Androidにapkをインストールすると作成される(されない場合もある?)shared_prefsディレクトリ(/data/data/jackpal.androidterm/shared_prefs)は一般ユーザでも読書可能で、ファイルに実行属性を付けることも出来ます。ここに作成した'kbox'ディレクトリを起点としてbusyboxと追加のツール類を展開し初期設定を行った上でshellを起動させているだけです。

いつも普通に電話として使ってるIS03(もちろん非root)に入れてみました。ちゃんと動きますが、直接端末をタッチして操作するのはサスガに少々キビしいですな。まともなソフトキーボードがあるのなら、ちょっとタブレットで試してみたいな〜と思いましたね。
ではではごきげんよう

◆参考にさせて頂いたサイト

物理キーボード付Android端末で快適CUI生活

とりあえずLinux/Cygwinのターミナル上で普段多用するツール類がLifeTouch Note上でもほぼ遜色なく使えるようになり、結構快適に使用出来ております。
私と同じような環境を構築したい!という方(居るのか?)は、今まで紹介してきたもの以外に以下のツールを準備しましょう。新たにここに置きました。

◆改造版Android Terminal Emulator
マーケットで落とせるものでも設定画面のオプション指定でUTF-8表示が可能ですが、East Asian Ambiguous Widthな文字幅の対応、また、日本語の文章をスクロールさせると頻繁に落ちる問題に暫定的な対処をしてあります。設定で「インプットメソッド」を「単語ベース」にしておけばSKK以外のIMEATOK等)でもインライン入力が可能な様です。

◆screen-android
先日のエントリに記した問題はありますが、とりあえず普通に使えてます。libncurses.soも必要なので適宜配置します。

w3m
Android用にコンパイルしたものです。現時点ではOpenSSLは有効にしていないので"https://"で始まるサイトへはアクセス出来ません。 w3m_20120313.tar.gzでOpenSSLを有効化しました。
◆cocot
端末とプロセスの間で文字コードを変換するツールです。JNetHackにしか使ってませんがついでに紹介。

シェルとScreenの設定を以下の様にする事で、日本語も乱れなく表示出来てます。おかしな部分はツッコんでください。

.bashrc


PS1='\w% '
LANG=ja_JP.UTF-8
LC_CTYPE=ja_JP.UTF-8
LC_ALL=ja_JP.UTF-8
alias vi=vim
alias ls='busybox ls'
alias w3m='LC_MESSAGES=ja w3m -bookmark /sdcard/dropbox/share/bookmark.html'
export SCREENDIR=~/tmp
export PROMPT_COMMAND='echo -ne "\ek$(basename $(pwd))\e\\"'
alias screen="screen -s bash -e^Zz -U"
alias jnethack='cocot -t UTF-8 -p EUC-JP /data/home/games/jnethack'
export NETHACKOPTIONS="color"
.screenrc

cjkwidth on
caption always "%0`%{=b wk} %-w%{=bu bw}%n %t%{-}%+w %= %{=b wk}%Y年%m月%d日(%D) %{=b wk}%c"
※aliasでscreenのエスケープキャラクタを^Zにしています。また、w3mのブックマークをDropbox上に置いて他のLinuxWindows(Cygwin)PCと同期してます。dropsyncを併用すると超便利。

後はSKK for LifeTouch NOTEのスルーモード(F9)と通常モード(F10)の切替で入力することでかなり幸せになれるんじゃないでしょうか?

IS01の場合、CM4IS01を入れている場合は全て動作しますが、デフォルトの1.6のままだと動かないツールもある様です。時間があったら対応しようかと思います。
ではでは。

Androidでテキストブラウジング(w3m編)

ELinksに続きw3mも何とかAndroidで使える様になりました。
いやーやっぱり使い慣れてるツールはいいですねぇ。
これで普段Linuxのターミナルやコンソールでやってるのと大体同等の作業がこなせるようになりました。
現状のAndroid Terminal EmulatorをUTF-8で使ってると落ちやすいのが玉にキズですが、Screenでアタッチすれば復活出来ますw
CM4IS01とLifeTouch Note(ともにFroyo)では普通に動いてますがもう少しテストしてからバイナリは上げますね。
次は何やろっかな〜。

AndroidでGNU Screenを使う。

以前のエントリでもscreen-androidを紹介しましたが、落としてきたバイナリは"getpropによるAndroidの設定値の取得が不可で、dnsによる名前解決が出来ずにネットワークに接続するツールがまともに使えない"という問題がありました。(今現在はこのバイナリは公開されていない様です。)
最新のソースを持ってきて自分でビルドしてみたら上記の問題は解決したのですが、今度は何故か設定ファイルでの'escape','shell','encoding'などの指定が無視されてしまう様になりました。自分のコンパイルの仕方が悪いのかとも思いましたが、別な方が作ったバイナリをxdaで見つけて試したら状況は一緒でした。OSのバージョンにもよるのかな?ちょっと原因は追えてません。何方か分かったら教えてください(^^;
それでも起動時のオプションでの指定は効くようなので、以下の手順で私が普段PC上でやってるぐらいの事は出来てとりあえずは満足してます。

◆ncursesライブラリの準備

他のツール等で既にインストール済みであったり、カスタムROM等でもともとシステムに存在する場合などは必要ありませんが、それ以外の場合はlibncurses.soをライブラリパスが通った場所に置きます。

◆screenの設定ファイル

前述の様に指定が効かないオプションがあるので、自分の場合.screenrcの内容はこれだけです。

caption always "%0`%{=b wk} %-w%{=bu bw}%n %t%{-}%+w %= %{=b wk}%Y年%m月%d日(%D) %{=b wk}%c"

bashの設定

screenのバイナリを/data/home/binに置き、以下の様に.bashrcに追記しました。


export SCREENDIR=~/tmp
export PROMPT_COMMAND='echo -ne "\ek$(basename $(pwd))\e\\"'
alias screen="/data/home/bin/screen -s bash -e^Zz -U"

LifeTouch Noteで使用中の画面です。

最近IS01の方がおざなりになってるので後で使えるか試してみよう。

ちなみに、LifeTouch NoteでCUI作業を行う場合、TomioNaritaさんの作成されたSKK for LifeTouch NOTEがほぼ必須だと思われます。このIMEにはConnectBotモードやスルーモード(Android Terminal Emulatorはこちらが便利)が用意されていて、LTNのキーボードがフル活用出来ます。素晴らしいツールをありがとうございます。

Androidでテキストブラウジング(ELinks編)

Unix互換環境で動作するテキストブラウザと言えばw3mが有名ですが、他にもlynx,Links,ELinks等が存在します。
中でもELinksは開発版が結構頻繁に更新されていて、SpiderMonkeyを組み込んでJavaScript使用のサイトを閲覧出来るなど、ユニークな特徴を持ち合わせているWebブラウザです。
上であげたブラウザ達の中でも割とすんなりAndroid用にビルド出来たので、ちょっと紹介したいと思います。
試したのはExperimental GIT snapshot版です。最近iconvを使用してのマルチバイトの対応が良くなって来ている様ですが、日本語サイトに関してはまだ若干表示に問題がある場合もあります。まぁ、私のビルドの仕方が悪いのかもしれませんが。
とりあえずこんな感じでブラウジング出来てます。


設定はこんな感じでやってます。



使いたい人はあんまりいると思いませんが、一応ここに置いときます。

AndroidでもFD使いたい。

※2012-2-18:Oっくんさんのご指摘を元に記事を修正しました。

どんなプラットフォーム上でもずっとFD系のファイラを使い続けて現在に至りますが、MarijuanaさんのサイトAndroidでFDcloneが使えるという記事を発見したので早速試してみました。元はcielavenirさんがビルドしてくださったものだそうです。有りがたく使わせて頂きますー。
おおーちゃんと動きますねー。FDcloneは、UTF-8環境下でも実行ファイルと同じ場所に日本語メッセージカタログ(fd-cat.ja)とUnicode用の変換テーブル(fd-unicd.tbl)を置いてLANGUAGEに文字コードを設定すれば日本語化出来ます。
下図はLifeTouch NoteのAndroid TerminalEmulator上での表示です。

FDcloneはファイラだけではなく、単文節変換のIMEを備えていたり,仮想端末機能が使えたりして面白いソフトだと思います。LTNでもこれらが使えるかTryしてみましょうかね。
実行ファイル以外をまとめたもの(fd.tar.gz)をここに置いとくので興味がある方はどうぞ。