k4200’s notes and thoughts

Programmer side of k4200

ちょい前にLift 2.4が出たので眺めてみた

はじめに

Scalaフレームワークを使おうと・・・

最近はPHPJavaScriptにどっぷり浸かってしまったんだけど、新しいサイトを作ろうと思ってるので、Scalaフレームワークをいじろうと思ってる。

先日のScala勉強会in渋谷で、Play! 2.0が実用段階に入るにはもう少し時間がかかるというお話だったので、最近2.4の出たLiftを久しぶりに見てみようと思った。

ソースを読む予定

ソースはこちら→ https://github.com/lift/framework

Lift 2.4

What's Lift?

知ってる人も多いと思うけど、ちょっとだけLiftの紹介(若干主観もあり)。

  • Scalaで出来たフルスタックのWebフレームワーク。出来て5年経ったらしい。
  • ViewからSnippetというロジックを呼び出すのが特徴的(View First)。
  • Ajax, Comet等がシームレスに扱える。
  • 「Secure」が売り。XSS, CSRFの対策はフレームワークで結構面倒を見てくれる。
  • 「Scalable」らしい。

以下、個人的な感想。

  • ドキュメントがいけてない。(お前が貢献しろっていうのはごもっともです)
  • 慣れると便利な気がするけど、そこまで時間がかかる気が。
  • MLは活発。文章だとdppが若干とっつきにくい。
What's new in Lift 2.4?

最近MLとかも全くチェックしてないので、何が新機能なのかもさっぱり分からず。

まずはこの辺をチェック。主な改善はこんな感じらしい。

  • DB関係
    • Recordの改善 (!)
    • Crudify(※)のSqueryl/Recordサポート (!)
  • データ構造とか?
    • JSONサポートの数多くの改善
    • BsonDSLサポート
  • 外部サーバーとの接続性
    • MongoDBサポートの大幅改良
    • Mailer機能の大幅改良
  • View
    • CSSセレクターの大幅改良 (!)
    • HTML5準拠テンプレート?(Ability to get html5 compliant templates using data-lift attribute)
    • Snipet resolution(templateからどのSnipetを呼び出すかとかその辺?)の改善
  • その他
    • RESTサポートの大幅改良:stateless Async/Continuations on Jetty 7, Jetty 8 and Tomcat/Glassfishとか
    • ローカライゼーション関連のモジュール (!)

Wikiで色々情報を得てみる

いきなりソース読む前に、Wikiで新機能の使い方とかをさらっと見てみる。
http://www.assembla.com/spaces/liftweb/wiki

Yabe!

Play!を真似てチュートリアルが出来てる。いいことだ。

開発環境

以前に比べ、開発環境関連のwikiエントリーが少し増えたような。

Eclipseの情報もちょっとだけある。いいね。

sbt 0.10以降の情報もある。いいねいいね。

半年以上前にLiftのプロジェクトをsbt 0.10系に移行するってブログ記事を書いたんだけど、色々変わってるだろうし、また何か書こうかな。

ちなみに、現在ダウンドードできるLift 2.4のパッケージはsbt 0.7系がベースだけど、そのうち変わるっぽい。

モジュール

モジュールも微妙に増えてるっぽい。この辺

OpenIDとか、OAuthもあるね!と思ったら・・・

ちなみに、以前TwitterアカウントでLiftアプリにログイン出来るように改造したコード。上手くコードが分離できなくて、結構ライブラリのコードをコピペせざるを得なかった(?)んだけど、今はどうなってるんだろ。

みんな大好きREST

「Liftはステートフルだしー」、とか言って敬遠される事もありそうだけど、RESTサポートを強化したって書いてある。これ、どうなんだろ。

関係有りそうなのだとStateless Requestsとか?でも、これって2.2-M1から入ってるのか・・・知らなかった。

RESTなサービスの書き方はこれ

ちなみにHTTPリクエストがどのように処理されるかはこちら

Mapper関連

先日scala-jp MLでORMの話が出たけど、Lift Mapperはまぁまぁ使えるかなって気がする。

使い方はこちら

CRUDifyはこの辺

ソース読むぞ、ソース読むぞ、ソース読むぞ

以前のバージョンを比較的読んだことがあるので、mapperあたりを。