2014/09/20
Skinny Scala祭りとか
@aa7th? さん
- 学習曲線の話とか聞けた
- 言語設計者の方の思想を聞けた
関西も盛り上げていこうと思った
- 東京は「もういいよね」感なので。
- 関西待ってるだけじゃヤバイ
SkinnyFramework
-
Scala製ふるすたっく web フレームワーク
-
Scala on Rails
-
Scalatraベース(超シンプルなフレームワーク)
-
Servletコンテナ上で動く
-
国産( @seratch さん )
How do I use?
-
空Zipファイルがおいてるから、それをダウンロードして試すのが速い
-
( Homebrew, YEOMANでも可 )
-
./skinny run
-
localhost:8080
-
Scaffolding
-
./skinny g scaffolding members member name:String ...
-
./skinny db:migrate
-
開発はデフォルトでh2 Database. 設定は application.conf
-
./skinny run
-
localhost:8080/members でもう出る。
中身
package controller
class RootController extends ApplicationController {
def index = {
set("name", "Scalaなんとか")
render("/root/index")
}
}
SkinnyResource
- Restful web Resource
- 変更したい箇所はoverrideして書き換えればok
- SkinnyResource を使わない CRUDサンプル in Qiita
View
<%@val name: String %>
hellow, ${name}
こんな感じ
View Tmeplate
- Scalate を使ってる
- 形式は Mustache, Scaml, Jade, SSP ( default は SSP )
- Jade は何かちょっとややこしい?
Skinny-ORM
- ScalikeJDBC Base
- SkinnyCRUDMapper Traintを継承すると使える
- Play2 でも他のフレームワークで使える
その他
- Validator, extends ValidationRule Trait
- ReverseScaffold
- Assets(Less, Sass,Scala.js...)
- FactoryGirl
- etc...
Deploy
- war ファイルにして tomcat, jetty に配置
- Heroku もサポートしたら、ScalaとHerokuの相性がいまいち( ホントはどうにかしたいらしい )
感想
-
直感で使いやすい
-
Scala の難しい文法がわからんでもとりあえず大丈夫
-
マニュアルやせらさんのブログ記事とか、Scalatraの情報などを元に割とつまらなく簡単なものは作れた
-
Scafolldingが
参考資料
全部セラさんの記事
英語とScalaと私と?
curet が skinny 製
@daisky さん
Scala祭りの再演
せっかく作ったのでもう一度(前の10人ぐらいしか聞いてなかったから)
僕は英語が苦手です ( I'm not good at English )
TOEIC Score: 300 点
日本語文献は増えてきた
トラブルシューティングだと stackoverflow とか…
- 英語の本(Functional Programming Scala)を読んでる
- 技術書の英語はパターンあるから、Google翻訳でなんとか意味がとれる
FAQ ? 参加登録時アンケートの質問に答えてみる
@kitora_naoki さん シナジーマーケティング(株)
確率統計テキストマイニング、など。
-
Haskellとどのくらい違う?
-
-> だいぶ違う
-
Haskell: 純粋関数型言語
-
Scala: 非純粋関数型言語
-
どうやって他の人に教育、学習させているのか?
-
教育らしい教育をやってません
-
しいて言えば、コードレビュー?ペアプロ
-
Java ではなく Scalaを使うことを
-
Scala使います
-
熱意と覚悟
-
Scala のいいところ
-
いろいろ
-
わるいところ
-
コンパイルが遅い
-
ヒープダンプが解析にくい
-
Java のイマイチな所を引き継いでる
-
型消去など
-
JavaとScalaの違い
-
問題の視点を切り替えた方がいい
-
データ構造が違う
-
Java:List (配列リスト)
-
Scala:List (単方向リスト)
-
関数型言語では再帰をよく使うから、単方向にしている?
PHPからScalaへ…その後
@UAdachi さん From Chatwork
Chatwork のなんとか
ビジネスチャットツール
PHP から Scalaへ
まだ Scala プロダクションは動いてませんよ。
「チャットワーク ビール」で検索
なぜ?
- 静的型付け言語を使いたい
- 合宿やったの3月終わり
- 進捗道ですか?
- 学習(5月中旬〜)
- プロジェクト発足( 7月上旬〜 )
- 社内勉強会( 8月下旬〜 )
独習時期
- PLAY で APIを作ってみる
- コップ本とか。
成果
- SCALAの文法ぐらい
Join
加藤さん @j5ik2o さん( 糖質制限、肉、、、 )がChatworkにJoinしたから、一緒に。
課題
- 簡単なデータ構造
- 数列、単語カウンター、検索?
- Akka で Map/Reduce
レビュー
プルリクしてレビュー
成果
パターンマッチ使えるように鳴った。高階関数が使えるように鳴った。
プロジェクト発足→ペアプロ
7月中旬
- リモートペパプロ
- ペアプロ:ソロ = 3:7 の時間割合
- ソロの時は見よう見まねで
成果
効率的にできた
- monadic programing へようこそ
ペアプロのいいところ
- 自然とコーディングに集中できる
ペアプロで大切なこと
- 大切なこと
- だらだらやらない
- 終了後にコードを噛み砕く時間を用意
- たまには雑談する(コンパイル中とか)
どうやってリモートで?
screenHero
- 自分のキーボードでペアプロできる
- さくさく(自分が詰まってる時に相手の画面をさくっと見せてくれる)
- エディタの設定は諦める
- Emacs派 vs Vim派(かとじゅんさん)
matome
Scalaに移行します宣言
- ビズリーチさんと勉強会できた
- 採用(かとじゅんさん)が来た
今後のChatworkに期待してください
さくさくアンドロイド
amaya @0x17E さん
LT
- ライブラリを使わない時はおとなしくJavaの方がいい
Scaloid
- XMLから開放
- ただし、Scaloid を使うので、細かい所までいじろうとしたらXMLさわるはめに…
Macroid
- Scaloid より XML から開放
- 比較的新しいので公式ドキュメント以外がない
- DSLの癖が強い
Android-sdk-plugin
Android開発用のsbtPlugin
- ビルドが遅い
ぼっち.scala
@tnoda_ さん
Scalaリア充はsbtのバグ踏んで爆発してください
Scalaぼっちの学習
ZPD概念(教育学的なアレ)
人でできるかも、と、誰かと一緒ならできるかも、のギャップの差がZPD。
効率のよい学習に必要なもの(でぼっちに(ry
-
適切なガイダンス => MOOC
-
適切なフィードバック => オンラインジャッジ
-
段階的にフィードバックがいる
-
目標が遠いと、違う方向に行ってしまう
-
適切な、ガイダンス、フィードバックがアレば順序立てていける。
ぼっちだと、圧倒的に不利よね
ぼっちでもできる学習法
MOOC
大々的にやってる基本無料で利用できる大学の講義
- http://coursera.org
- Scala で検索
- Odasky センセイの講義が出てくる
- わからんかったら、とりあえず一番上を押したらいいよ
オンラインジャッジ
わかりやすく言えば、仕様→納品→検収
- プログラミングコンテスト主演害者が公開してることが多い
- 直ぐに結果を知ることができる
- 他の人の回答を参考にすることができる
- コンテストに参加しなくてもいい
Scalaを使えるサイト
- HackerRank / Scala 2.11 (おすすめ
- Atcoder / 2.9.1 (おすすえm
- Codeforces / 2.11.2 (問題文の英語が稀に酷い
www.hackerrank.com
コンテスト。決まった課題、決まった期間で正確さなどを競う
社会人でも参加できる長い開催期間
関数プログラミング限定コンテスト
開催期間10日間、参加人数が少ない。
オンラインジャッジはいつでも使える。
難易度の幅は広い
ProjectEulerの問題採点もしてくれる
atcoder.jp
他の人の回答を見て勉強できる
初心者用の問題が用意されている
とりあえず使える sbt
@kuchitama さん
sbt
- Simple (???)
- 本家でもSimple消えた
- Scala Build Tool
0.13.5
から ver1 に向けて準備段階
.sbt or .scala
- 基本は .sbt に。
- 複雑な処理は .scala に
- 再利用できそうなら plugin
Typesafe Activator
- sbt-np plugin いらず
- scala,java,playのひな形生成
- play2,3 では標準
デモ
-
activator new
-
activator ui
: ウェブ画面で
基本の設定
- (key)(method)(setting[s])
- method:
- := キーに対して settings を更新
- += キーに Settingを追加
- など
依存ライブラリの取得
- % : Scala のバージョンを指定して依存性を解決
- Javaのライブラリを使いたいときはこっち
- groupid % artifactid % revision
- %% : Scalaのバージョンを自動的に追加して依存性
- groupid %% artifactid %% revision
- Configuration
- 使う時だけ依存性を解決させる
- groupid %% artifactid %% revision % Configuration
まとめ
- activator で簡単プロジェクト作成
- 依存ライブラリの取得は %, %%
- 基本のsbtタスクは覚えやすい