今回はa-Shell上でプログラムを実行してみましょう。a-ShellはPythonやJavaScript、Luaなどのプログラムを実行する事ができます。a-Shellのアプリを入れるだけで自動的に使えるようになっているのは大変便利です。また、プログラムを作って手軽に実行できるというのはiPhoneの用途と可能性を広げてくれます。特にPythonやLuaは対話モードも使用できるので、命令を入力するとすぐに結果を得ることができます。
・Python
https://www.python.org/
・JavaScript/ECMA Script
https://developer.mozilla.org/ja/docs/Web/JavaScript
https://ecma-international.org/publications-and-standards/standards/ecma-262/
・Lua
https://www.lua.org/
バージョンの確認
まず、バージョンを確認してみましょう。以下のようにpythonと入力すると対話モードで起動します。Pythonのバージョンなどのメッセージが表示されます。終了させる場合はquit()と入力してリターンキーを押してください。
python
なお、インストールされているPythonのバージョンはこの原稿を書いている時点では3.11.0となっています。将来的にバージョンは上がる可能性はあります。今回実行するプログラムはバージョンは3.0以上であれば動作します。
対話モードで起動しなくてもバージョン確認だけであれば-Vのオプションをつければ確認できます。
python -V
なお、Pythonに関してはAIのおかげで数多くの情報がWebサイトや書籍に用意されていますので、ここではプログラムの説明はしません。興味を持ったら勉強してみてください。
次にLuaですが、Luaも以下のようにオプションを指定するとバージョン等を確認できます。
lua -v
Luaも対話モードが用意されています。以下のようにluaとだけ入力する対話モードで起動します。Luaの対話モードを終了させるにはcontrol+Dとします。
lua
Pythonの対話モードを使う
それでは、Pythonの対話モードで何か処理をしてみましょう。対話モードにするには、コマンドでそのままpythonとだけ入力します。
python
せっかくなので何か命令を入力して実行して見ましょう。とりあえず、1234の数字を表示させてみます。数字を表示させるにはprint()を使います。
print(1234)
今度は計算させてみましょう。12*34の計算結果を表示する場合は、そのまま計算式を書きます。ちなみにprint()の()内に計算式を書いても同様に計算した結果を表示してくれます。
12*34
多くの場合、Pythonのプログラムは別に用意しておいてから実行します。ということで一旦対話モードを終了させましょう。quit()と入力すると対話モードは終了します。
quit()
Pythonのプログラムを実行する
今度はあらかじめプログラムを作成しておき実行します。ここでは0から9までの数値を表示するプログラムを作成し実行します。プログラムと言っても2行しかありません。以下のプログラムです。
for i in range(10):
print(i)
これを1.pyというファイル名で保存しておきます。保存先は問いませんが、プログラムファイルを保存したディレクトリをカレントディレクトリとします。iCloudドライブが使えるなら、プログラムをMacで作成しておき、それをiPhoneのa-Shellで実行させることもできます。ここでは、そのような方法を使って実行しています。
プログラムを実行するにはpythonの後に半角空白で区切って実行したファイル名(ファイルのパス)を指定します。1.pyはカレントディレクトリにあるという場合は以下のようになります。プログラムが実行されると0〜9までの数字が表示されます。
python 1.py
今度は1〜100までのランダムな整数値を表示してみましょう。プログラムは以下のようになります。
import random
for i in range(10):
n=random.randint(1, 100)
print(n)
先ほどと同様にプログラムを2.pyとして保存しておきます。以下のようにコマンドを入力すると2.pyのプログラムが実行されます。
python 2.py
今度はコマンドラインで入力された引数(パラメーター)を表示してみます。コマンドラインから数値や文字列などが入力できれば用途は広がります。pythonとコマンドを入力した後の引数はargsで参照できます。args[0]は最初に指定した引数になるので、python 3.pyとすると3.pyがargs[0]に入ります。多くはプログラムに何か値を渡すのでpython 3.py 456のように指定することになります。この場合、456はargs[1]に入ります。
コマンドラインで渡された2番目の引数を表示するプログラムは以下のようになります。
import sys
args = sys.argv
print(args[1])
このプログラムを3.pyとして保存しておきます。このプログラムを実行する場合は以下のように引数を指定してください。指定し忘れると何も表示されません。
python 3.py 456
引数を得ることができたので、もう1つプログラムを作成しましょう。引数で指定した金額に8%,10%の税金を適用した値を表示します。このプログラムは以下のようになります。
import sys
args = sys.argv
v=args[1]
print('元値 ',v)
print('8%税',float(v)*1.08)
print('10%税',float(v)*1.1)
このプログラムを4.pyとして保存しておきます。このプログラムを実行する場合は以下のように数値を指定してください。指定し忘れるとエラーになります。これは、プログラムを短くするためにエラー処理はしていないためです。勉強したい人はエラー処理も組み込んでみてください。
python 4.py 1000
JavaScriptプログラムを実行する
次にJavaScriptを実行してみましょう。ここで注意しないといけないのはJavaScriptはJavaScriptでもRhino (Java系) のようです。このため、WebブラウザやNode.jsで使用されているJavaScriptとは若干異なっています。なお、JavaScriptのプログラムに関しては説明しません。数多くある書籍やWebサイトを参照してください。
・Rhino
https://ja.wikipedia.org/wiki/Rhino
Rhinoであれば対話モードで実行できるjsiといったコマンドもありそうですが、a-Shellには組み込まれていないため対話モードが使えません。このため、あらかじめプログラムを作成しておき実行させる事になります。
JavaScriptの場合、実行環境により動作するプログラムが異なります。基本的なオブジェクトだけの使用であれば、だいたいどの環境でも動きます。ここでは基本的なプログラムを実行させるだけにしておきます。なお、Webブラウザであればconsole.log()となる部分はRhinoではprint()になります。
まず、以下のようなプログラムを作成し1.jsという名前で保存しておきます。ここではMacを利用しiCloud Drive経由でファイルを実行します。
print("なんとなくコマンド\n");
ここで注意しないといけないのはjscコマンドのオプションです。jscコマンドのみを入力すると使用できるオプションが表示されます。
Usage: jsc [--in-window] [--silent] file.js
Executes JavaScript file.js.
--in-window: runs inside the main window (can change terminal appearance or behaviour; use with caution).
--silent: do not print the result of the JavaScript execution.
一見するとオプションが省略できそうですが、省略するとエラーでスクリプトが実行されません。ここでは--in-windowを指定するものとします。1.jsファイルを実行するには以下のようにコマンドを入力します。
jsc --in-window 1.js
次に乱数を表示するスクリプトです。2.jsというファイル名で保存します。
var n=Math.random()*10;
print(n);
print("\n");
保存したら以下のコマンドを実行します。すると0から1未満の乱数(小数値)が表示されます。
jsc --in-window 2.js
次に0から9までの数値を表示するスクリプトです。3.jsというファイル名で保存します。
for(var i=0; i<10; i++){
print(i+"\n");
}
保存したら以下のコマンドを実行します。すると0から9までの数値が表示されます。
jsc --in-window 2.js