SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
よーく(@youku_s)
HN:よーく(@youku_s)
新社会人初心者丸出しプログラマ

仕事で使っている(た)もの:
 VB.NET, Java

最近興味があるもの:
 Scala, C++, HaskeLL, 離散数学,
 幸せになるための方法全般, TRPG, etc…
 関数型+オブジェクト指向の静的型付け言語
 Javaとの互換性がある
 Twitterとかで使われてる
 便利な機能がたくさん
    ◦ 型推論
    ◦ パターンマッチ
    ◦ 高階関数+無名関数
    ◦ immutableなコレクションの操作
    ◦ Option/Either型(nuLL とか絶対おかしいよ!)
   初心者(僕のことです)的にうれしいところ
    ◦ 段階的にパラダイムや機能を導入できる柔軟性
    ◦ とりあえず短く書ける

   関数型脳欲しい(;ω;)

   Scalaちゃん可愛い!
    ◦ http://twitter.com/#!/scalachan
    ◦ 眼鏡掛けたい(褒め言葉)
とりあえずこの本を読みましょう!
   フルスタックなWebフレームワーク
    ◦ foursquareとかSiemensで使われてるっぽい
   特徴
    ◦ Viewを前面に出したアーキテクチャ
    ◦ Function Mappingによるイベントの記述
      formのsubmit処理
      Ajaxの実行とか
    ◦ Cometのサポート
    ◦ 脆弱性への対応
    ◦ 設定はScala/DSLで記述
 シンプルに書ける
 他言語を同時に扱う量が減る
    ◦ XML
    ◦ JavaScript
   Scalaの強みを生かせる
    ◦ 並列処理との親和性
      Comet、並列レンダリング…
    ◦ Javaと同等のパフォーマンス
    ◦ コンパイル時のチェック
Requestとか
                    LiftFilter

主に作成する部分
             View
                テンプレート
                          画面中のコンポーネントの
                          レンダリング

Boot.scala          Snippet
                          データアクセス

                     Model
   ページを構成するコンポーネントの見た目
    ◦ HTMLで記述
   レンダリングロジックは直接記述しない
    ◦ 動的な部分はSnippetのメソッドへ分離
   Snippetによるレンダリング適用位置の指定
    ◦ タグのclass属性、接頭語lift:を用いたタグを使用
    ◦ HTMLとして単体で見た目を確認できる
<body class="lift:content_id=main">
 <div id="main"class="lift:surround?with=default;at=content">
  <h2>Welcome to your project!</h2>
  <p>
   <span class="lift:HelloWorld.howdy">
     <span id="time">Time goes here</span>
   </span>
  </p>        lift:Snippetのクラス名.メソッド名
 </div>
</body>
 コンポーネントの動的な部分のレンダリング
 Scalaで記述
 テンプレートのタグに処理を流し込む
    ◦ LiftではScalaのXMLリテラルとしてテンプレートを
      扱い、Snippetを処理している
    ◦ なので、Snippetのメソッドの戻り値型はNodeSeq
     XMLノードのシーケンスの型
Template(抜粋)
<span class="lift:HelloWorld.howdy">
   <span id="time">Time goes here</span>
</span>                        id=“time”のタグの内
                               容を#>の右辺で置き
Snippet                        換えますヨ!
class HelloWorld {
   def howdy = "#time *" #> "9:02pm"
}
Template(抜粋)
<span class="lift:HelloWorld.howdy">
   <span id="time">Time goes here</span>
</span>

Snippet
class HelloWorld {
   def howdy = "#time *" #> “9:02pm”
}
Template(レンダリング後)
<span class="lift:HelloWorld.howdy">
   <span id="time">9:02pm</span>
</span>
   イベントにGUIDを割り当てる
    ◦ RequestでGUIDを受け取ると、対応する関数オブ
      ジェクトがサーバ側で実行される
    ◦ JavaScriptを生成してテンプレートに注入する関数
      オブジェクトを与えるとAjaxを記述できる
   GUIDはセッション固有
object name extends RequestVar(Full(""))

def form = {
     "#txtbox *" #> SHtml.text(name.openOr(""),
        v => name(Full(v))) &
     "#submit *" #> SHtml.submit("Send",
        () => {println(name.openOr(""))})
  }
入力文字列を受け取り、
object name extends RequestVar(Full(""))
                               nameにセットする
def form = {                   無名関数
     "#txtbox *" #> SHtml.text(name.openOr(""),
        v => name(Full(v))) &
     "#submit *" #> SHtml.submit("Send",
        () => {println(name.openOr(""))})
  }
object name extends RequestVar(Full(""))
                             nameの中身を取り出し、
def form = {                 コンソールに出力する
                             無名関数
     "#txtbox *" #> SHtml.text(name.openOr(""),
        v => name(Full(v))) &
     "#submit *" #> SHtml.submit("Send",
        () => {println(name.openOr(""))})
  }
<form method="POST">
   <div id="txtbox">
      <input value="" name="F1213629648567AELZKU"
type="text">
   </div>
   <div id="submit">
      <input type="submit" name="F1213629748568P2ZWC0"
value="Send">
   </div>
</form>
 Scala実践プログラミング
 Scala+Liftによる実践Webアプリケーション
  開発
    ◦ http://codezine.jp/article/corner/322
   Exploring Lift
    ◦ http://exploring.liftweb.net/
   Lift Wiki
    ◦ http://www.assembla.com/wiki/show/liftweb/
ご清聴ありがとうございました!

Mais conteúdo relacionado

Mais procurados

JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介Yusuke Hirao
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック良太 増子
 
クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介しくみ製作所
 
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoGrails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoTsuyoshi Yamamoto
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話Yoichi Toyota
 
What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -chibochibo
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリAndroidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリYukiya Nakagawa
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門Atsushi Tadokoro
 
Wb osaka 20120623
Wb osaka 20120623Wb osaka 20120623
Wb osaka 20120623Miho Ishida
 
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -Hayato Mizuno
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック庸介 高橋
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目大樹 小倉
 
WebGL and Three.js
WebGL and Three.jsWebGL and Three.js
WebGL and Three.jsyomotsu
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話azuma satoshi
 

Mais procurados (20)

JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
 
Try Webworkers
Try WebworkersTry Webworkers
Try Webworkers
 
クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介
 
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoGrails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
 
Ll xcode
Ll xcodeLl xcode
Ll xcode
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話
 
What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリAndroidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門
 
Wb osaka 20120623
Wb osaka 20120623Wb osaka 20120623
Wb osaka 20120623
 
G * magazine 1
G * magazine 1G * magazine 1
G * magazine 1
 
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
 
Knockout
KnockoutKnockout
Knockout
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
WebGL and Three.js
WebGL and Three.jsWebGL and Three.js
WebGL and Three.js
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
 

Semelhante a ScaLa+Liftとか

scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
Jetpack Library 事始め
Jetpack Library 事始めJetpack Library 事始め
Jetpack Library 事始めTomohiro Kaizu
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2Atsuo Yamasaki
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaTakuya Tsuchida
 
CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 arisu yano
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングkunihikokaneko1
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applicationstotty jp
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2Nishida Kansuke
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライMasanobu Sato
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210cmtomoda
 
Tide - SmalltalkでSPA
Tide - SmalltalkでSPATide - SmalltalkでSPA
Tide - SmalltalkでSPAMasashi Umezawa
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るKiyoshi SATOH
 
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~hokori matu
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugY Watanabe
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようHiroaki Wakamatsu
 
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術Koichi Fujikawa
 

Semelhante a ScaLa+Liftとか (20)

scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
Jetpack Library 事始め
Jetpack Library 事始めJetpack Library 事始め
Jetpack Library 事始め
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
 
HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210
 
Tide - SmalltalkでSPA
Tide - SmalltalkでSPATide - SmalltalkでSPA
Tide - SmalltalkでSPA
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
 
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
 
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
 

ScaLa+Liftとか