CoffeeScriptを触ってみた

CoffeeScriptを触ってみたのでその感想

CoffeeScriptとは

AltJSの一つです.文法はPythonRubyに似ています.

CoffeeScriptの導入

CoffeeScriptを導入するには以下の手順でコマンドをインストールしていきます. もし,導入する前に少し触ってみたいのであれば,公式サイトの「TRY COFFEESCRIPT」で試せます.

  1. npm (node package manager) のインストール
    • Node.jsをインストールすると一緒にインストールされます
  2. coffeeコマンドのインストール
    • npm install -g coffee-scriptでインストールできます (失敗する場合はsudoで管理者として実行してみてください)

JavaScriptソースコードを生成するまで

手順は以下の通りです.

  1. *.coffee を作成
  2. 作成した *.coffee を編集
  3. coffee --compile --output . *.coffeeで編集したファイルをコンパイル

3まで実行すると,--outputオプションで指定したディレクトリに*.jsが生成されます.

触ってみた感想

AltJSはやはり書きやすいし見やすいなと思いました.以前TypeScriptを触ったことがありましたが,その時も「JSを書くよりも断然見やすい!」となったのですが,CoffeeScriptは文法がPythonRubyに似ていることもあってより見やすく感じました.

もう少し触ったら文法などを記事にしてみようかと思います.

Titanium 4.x系でAndroidのPush通知が来ないバグについて

TitaniumでAndroidのPush通知を実装したときに,タスクがない状態で通知を受け取ってもステータスバーに表示されず,3日ほど粘ったが,どうやらTitanium自体のバグらしい.

[TIMOB-18098] Android: JavaScript Service calling the notify method throws an error if the application is backed out - Appcelerator JIRA

このページによるとこのバグは3.5.0.GAからあるらしい.

fix versionは5.0.0って書いてあるけど,4.2.0.v20150812103137で修正が反映されているっぽい.

Rubyの文字列とシンボルの比較でつまづいた

とあるgemパッケージを使ってた際につまづいた...

タイトルの通り,文字列とシンボルを比較するとfalseになって想定した動きをしてくれないところでつまづいた. 結果から言うと,パラメータの渡し方が悪かった(文字列を渡していた)ようでそれをシンボルに変換して渡せばうまくいった. また,シンボルについてよくわかっていなかったのでこれを機会に調べてみた.

シンボルとは

class Symbol (Ruby 2.0.0)

ドキュメントによると

シンボルは任意の文字列と一対一に対応するオブジェクト

シンボルは、ソース上では文字列のように見え、内部では整数として扱われる

だそう.

等値にしたい場合

等値にしたい場合は

  1. Stringクラスのto_symメソッド
  2. Symbolクラスのto_sメソッド

のどちらかを用いて文字列かシンボルに合わせて比較してやるとうまくいく.

以下は具体的なコード.

'hoge' == :hoge.to_s # シンボルを文字列に変換
#もしくは
'hoge'.to_sym == :hoge # 文字列をシンボルに変換