2011年8月20日土曜日

rails3.1にだんだん慣れてきたのでどんな感じなのか自分なりに書いてみようと思います。

はじめに

特に意味もなく、なんとなく使ってみたいからと言う理由で 下記のような環境でwebサイトを作っています。

  • rails3.1.0rc5
  • haml
  • CoffeeScript
  • sass(compass)
  • mongodb(mongo_mappaer)

月末には3.1の正式版が出るので、それぞれの技術がどんな風にキモいのか、そして便利なのか、はたまたただ、紛らわしいだけなのか、自分なりに書いていこうと思います

rails3.1の特徴

そもそもruby on railsは一体なんなのか。。。というと、webサイトを作成するための最新技術を集めたフレームワークです。 一度インストールすれば

% rails new {your_webApp_name}

というコードだけを打てばそれだけでwebAppのほとんどの下地が出来てしまう大変便利なツールです。 さらに

% rails generate scaffold Blog name:string body:text
% rake db:migrate
% rails server

と続けて打てば、タイトルとコンテンツ内容を投稿していける簡単なブログサイトがデータベースの設定も済んだ状態で使えるようになります。さらにhttp://localhost:3000にはサーバーもたってます。

ブログを作るなら「楽さ」でいうとPHPのwordpressとかの方が効率的かな〜と使ってみて思ったんですが、多数のユーザーが参加するようなwebAPPはrailsの方が向いていると思います。 python使ってる人ならGAEを使ったことがあると思いますが、だいたいそれと同じような感じです。

僕なりの感想だと、GAEはある程度技術がまとまっていて、そこが学習コストを少なくさせていいところだと思います。(Googleのdocumentが素晴らしい) railsは今回のupdateで0.1増えただけなのにだいぶ変化があります。(coffee-scriptとかsassの導入) そういう使い方がコロコロ変わっていくのが(最新の技術を追いかけていく設計思考らしい)嫌いでないなら、railsを好きになれると思います。

hamlについて

railsでは標準では、erbという技術を採用してます。しかし、ゴニョゴニョすることにより、hamlを使っていくことも可能です。どちらもテンプレート言語です。

erbはこんな感じ

<!DOCTYPE html>
<html>
<head>
  <title>TestPJT</title>
  <%= stylesheet_link_tag    "application" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

ご覧のとおり、htmlの中にrubyのコードを<% %>の間に書くことによってして内容を出力できます。phpとかpythonのDjangoと似てます。HTMLを知っていれば簡単に修得することが出来るのがメリットです。

しかし、僕はhamlを選びました。その理由は…..

Pic 2011 08 20 11 07 51

こんなのところや

Pic 2011 08 20 11 04 48

こんなのとかを許せない人間になってしまったんです。。。。。

この閉じタグやら、閉じカッコを詰めると、コードが見づらくなるし、、、、かといってしっかり書くと、行数が増えるし。。。。なにより見た目が綺麗ではない。。。。

そうです。僕はインデント派の人間なのです。w だからもっとすっきり書くことが出来るhamlを選びました。下記はさっきのコードをhamlに変換したコードです。

hamlはこんな感じ

!!!
%html
  %head
    %title TestPJT
    = stylesheet_link_tag    "application"
    = javascript_include_tag "application"
    = csrf_meta_tags
  %body
    = yield

hamlは簡単にいうとcssのセレクタを書いてく要領ででエレメントを書いていくことが出来るテンプレート言語です。すっきりしてて素晴らしい。。。。かなり割愛して書いているので、もしhamlが気になった方がいたらググッて調べて下さい。(もしかしたらgoogle先生に"もしかしてhtmlの打ち間違い??"って言われるかもしれませんw)

調べてないけど、pythonにもこういうインデント系テンプレート言語あるのかなぁ。。。ありそうなきがするけど。。。

CoffeeScriot

CoffeeScriptはpythonやrubyのように書いたコードをjavascriptに変換してくれるツールです。

これもhamlを選んだ理由と同じ理由で使ってます。僕は、javascriptをそのまま書いている時いつもその冗長なところに嫌気を感じていました。そんなことを感じている人はcoffeescriptがおすすめです。

違いは見比べてみるのが一番わかりやすいと思うので同じ内容のコードを書いてみます。

ただのjavascriptの場合(jQeryも入れてみる)

$(function(){
  $("#hoge").click(function(){
    console.log("hello")
  });
});

いつもいっつも、まず、$(function());を書いて、$("#hoge")をかいて、.click();をかいてその中にfunction(){}って書いて、その中にしたいことを書く。。。。ってなことをず〜〜と続けて居たんですが、そういう冗長な行動をなくすことが出来ます。思えば、どれだけネストすれば気が済むんじゃ??ってかんじですよねw

CoffeeScriptだとこんな感じ

$ ->
  $("#hoge").click -> console.log "hello"

かなりすっきりします。まず$ ->で改行。これが$(function());です。そして、$("#hoge")は普通のと同じように書いて、その後ろに->を書きます。これはfunction(){}を意味します。そしてその横(もしくな開業してインデント)にしたいことを書く。。。ってかんじです。

慣れるまではコンパイルに失敗したり、独自の書き方に戸惑ったりするかもしれませんが、慣れたらかなり気持よくjavascriptを書いていけます。

 

sassについて

すいません。次回に持ち越しさせて下さいw 書くのに疲れちゃった〜〜wヽ(´ー`)ノ sassもhamlやcoffeescriptと同じように大変便利なツールです。

また暇があったら書くかもしれませんが、もしかしたら書かないこともあるかもしれませんw

 

最後に

かな~~~~りかいつまんで書いてあるので、興味をもったら、Google先生にいろいろ聞いてみてください。 また、なにかツッコミがあったら教えて下さい〜。

それではまた。

 

1 件のコメント: