今日もiPadでHappyHackingしてますか?どうも魚住です。
大学でLinuxに触れてからCUIの虜になってしまい、コマンドを叩き続けてきました。makeしたりカーネルからコンパイルしてみたり。人並みですが、Linuxを普段使いしてきました。
社会人になってからMacBookを購入し、ターミナルが使えることに感動して今に至ります。このブログも一時期はさくらのVP Sで運用していました。
さて、そんな僕がずっと思っていたのは、「iPadでターミナルが使えいないか」ということでした。SSH接続するためのクライアントアプリはちょくちょく見かけるんですが、僕としてはiPad本体で直接シェルを使いたいと思っていました。
見つけました。ついに見つけましたよ。ローカルで動くシェルが。
今回紹介するのは、「iPad?はぁ?シェルも使えないコンピュータに意味はあるの?」と思っていらっしゃる方もきっと「ほほぉ、やるやん」と思えるアプリ。「a-Shell」です。
a-Shell
このアプリは、無料で使うことができます。公式サイトはこちら。
a-Shellはオープンソースで開発されています。ソースコードが公開されているGitHubはこちらです。
起動するとこんな感じの画面が出ます。もうこれだけで、僕は「あぁ、いつもの画面だ」と思い安堵します。(病気)
画面の右下にはカーソルキーのボタンが表示されていますが、左下がちょっと分かりづらい。
左からTab、Ctrl、ESC、Paste(コピペのペースト)です。特にESCはMagic Keyboardにも実装されていないキーなので重宝します。ソフトウェアキーボードのボタンが押しづらいなら、設定で装飾キーの割り当てを変更してESCを設定するか、ショートカットキー「⌘+.(ドット)」でESCとして動かせるので、無理にこのボタンを使う必要はないと思います。
使用できるコマンド一覧
help -l
どのコマンドが実装されているか、惹かれるコマンドは人それぞれですが、ls、cd、cat、vimなど、ターミナルでやりたいこと一通りが実装されていることに好感が持てました。sedやawk、grepもあります。ネットワーク関連のpingやifconfig、sshやsftpもあります。tarも入っているので圧縮ファイルの解凍もやれます。
また、pythonやpipも実装されているので、iPad1台でpythonが使えることも良さげです。あと、ffmpegも入っているので、動画や音声のエンコードもできそうです。
Pythonを動かす
早速、Pythonで書かれたプログラムを動かしてみます。vimを使って、10進数から2進数に変換するコードを書いてみました。10to2.pyとして保存しました。
jushin = int(input())
keta = int(1)
nishin = int(0)
while jushin > 0:
nishin = nishin + jushin % 2 * keta
jushin = int(jushin / 2)
keta = keta * 10
print(nishin)
python 10to2.py
無事動いたようです。
C言語のファイルをコンパイルする
C言語も動かしてみます。C言語は一度コンパイルしてから実行する必要があります。ここでは2進数を入力したら10進数に変換し、出力するコードを書いてみました。
#include <stdio.h>
int main(void)
{
int nishin;
int jushin;
int keta;
scanf("%d",&nishin);
jushin=0;
keta=1;
while(nishin>0){
jushin = jushin + nishin % 10 * keta;
nishin = nishin / 10;
keta = keta * 2;
}
printf("%d\n",jushin);
}
作成した.cファイルをclangコマンドを使ってコンパイルします。
clang 2to10.c
するとa.outが出力されるので、実行してみます。
./a.out
10101000と2進数を入力したら、10進数に変換されて168と出力されました。うまく動いたようです。
iCloud Driveや「このiPad内」にアクセスする
a-Shellを起動した時に最初にいるディレクトリは、a-Shellアプリ内のDocumentsです。今でこそiCloudにファイルを保存するアプリが増えてきていますが、iPhoneやiPadのアプリは昔からアプリ内にあるDocumentsディレクトリにデータを保存する傾向がありました。アプリを削除すると、一緒に扱っていたデータが消えるわけです。
試しに「cd ..」で上位階層に上がると、Libraryなどのディレクトリが出てきましたが、そこよりももう1段階上にあがろうとすると、権限がないため移動できませんでした。
また、「cd /」でルートに移動した後、「ls」でディレクトリ群は見えるものの、etcやApplicationには入ることすらできませんでした。このまま使うとなると、a-Shell内のDocumentsディレクトリ内だけで遊んでくれって言っているようなもんです。
ではa-Shellで作成したファイルを外部に保存したい場合や、a-Shell外で作ったpythonやMarkdownなどのファイルを処理したい場合はどうするのかというと、別の方法が用意されていました。
pickFolder
pickFolderというコマンドが用意されていました。大文字が含まれているコマンド名ですが、picあたりまで入力するとTab補完できるのでさほど気になりません。
picFolderコマンドを実行すると、移動先の場所を聞いてきます。ここでiCloud Driveや「このiPad内」の任意の場所を選ぶと、a-Shell内のDocumentsディレクトリから移動できます。
bookmark ブックマーク名
移動した後に、bookmarkコマンドを実行することで、今いる場所をブックマークできます。
cd ~ブックマーク名
bookmarkコマンドでブックマーク名を指定すると、ブックマークしたディレクトリにジャンプできます。何度も利用する移動先をブックマークすることで、pickFolderコマンドを使用せずに移動できるようになります。
iPadでシェルを使いたいならa-Shellで決まり
使っていて、「これだよ。これこれ。」という感情が溢れてきて、久々にハクハクした気分になりました。sshも使えるので、これで不満があれば、ラズパイなどに接続すれば済むだけの話です。あとネットワークトラブルの際にはpingやifconfigをよく使うので重宝します。
ただここまでちゃんと使おうとすると、Magic KeyboardにESCキーが欲しくなりますね。いやそこはHHKBの出番か。
iPadってどうせタブレットだから、用途は限定的なんでしょ?と思っているそこのあなた。a-Shellを使ってみてください。Apple Pencilて手書きも良いですが、キーボードでシェルを使うという用途にも、まぁまぁ使えるって思うようになりますよ。
これまでターミナル系のアプリは山ほど見てきましたが、ここまでの自由度と完成度のアプリはありませんでした。これだけのことがローカルでできる。まじでおすすめです。