珈琲コマンド


『東京喰種:re』

あれ、金木くんはどこへ行ったのでしょうか。前期も見ていたはずなのに、さっぱり繋がりません。主人公変わったのでしょうか。意味分からないが続けて見ようか見まいか迷いながらも、なんとか堪えて見続けているうちに、ようやく理解できました。理解できると、主人公が、ふと入った喫茶店でコーヒーを飲むシーンに感動。記憶がないのに味覚は覚えてるんですね。グールって、人間が食べるものは食べられないけど、唯一コーヒーは飲めるんです。
私も、子供の頃に食べた実家近くの汚いラーメン屋の、まずいラーメンが忘れられません。懐かしい味だから、ものすごい、まずいにもかかわらず、きっと美味しく感じると思います。まずくて美味しい。まずいけど、まずくなかった。たぶん今食べたら、まずいっまずいって、泣きながら美味しく食べると思います。

コーヒーということで、CoffeeScript使ってみます。流行った時は、まったく興味がなく、今回東京喰種見なければ、ずっと使う機会はなかったであろうスクリプト言語ですが、触ってみると意外に面白いです。ハマると思います。
インストールはapt-get install一発。

takk@deb9:~/tmp$ sudo apt-get install coffeescript

インタラクティブモード(REPL)を使うには、coffeeと入力します。

takk@deb9:~/tmp$ coffee
coffee>

終了するには、Ctrl+C。もう一回と言われるので、もう一度Ctrl+C。

coffee> 
(To exit, press ^C again or type .exit)
coffee> 
takk@deb9:~/tmp$ 

Rubyのirbのように、電卓代わりにできそうです。

takk@deb9:~/tmp$ coffee
coffee> 2 + 3 * 4 / 5
4.4
coffee>

変数は=で代入できます。

coffee> a=10
10
coffee> a
10
coffee> 

配列も..が使えるので便利です。

coffee> a=[1,2,3]
[ 1, 2, 3 ]
coffee> a=[1..10]
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
coffee> 

関数。

coffee> Math.pow(2,8) - Math.sqrt(25)
251
coffee> 

関数を自作する場合は、

関数名 = (引数) -> 内容

と定義します。

coffee> add = (a, b) -> a + b
[Function]
coffee> 

実行すると、

coffee> add(10,20)
30
coffee> 

if文を使って、ちょっと複雑にします。

coffee> max = (a, b) -> if a>b then a else b
[Function]
coffee> max(10, 20)
20
coffee> 

次はsort関数の引数として渡す降順に並べる関数。

coffee> compare = (a, b) -> b - a
[Function]
coffee> a=[1..10]
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
coffee> a.sort(compare)
[ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]
coffee> 

スクリプトを書いたファイルを指定して実行することもできます。

takk@deb9:~/tmp$ cat -n test.coffee
     1	a=[1..10]
     2	
     3	for i in a
     4	  console.log i
     5	
takk@deb9:~/tmp$ coffee test.coffee
1
2
3
4
5
6
7
8
9
10
takk@deb9:~/tmp$ 

JavaScriptにコンパイルするには、-cオプションをつけます。

takk@deb9:~/tmp$ coffee -c test.coffee
takk@deb9:~/tmp$ ls
test.coffee  test.js
takk@deb9:~/tmp$ cat -n test.js
     1	// Generated by CoffeeScript 1.10.0
     2	(function() {
     3	  var a, i, j, len;
     4	
     5	  a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
     6	
     7	  for (j = 0, len = a.length; j < len; j++) {
     8	    i = a[j];
     9	    console.log(i);
    10	  }
    11	
    12	}).call(this);
takk@deb9:~/tmp$ 

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA