4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Scala 関西勉強会

Posted at

2014/09/20

Skinny Scala祭りとか

@aa7th? さん

  • 学習曲線の話とか聞けた
  • 言語設計者の方の思想を聞けた

関西も盛り上げていこうと思った

  • 東京は「もういいよね」感なので。
  • 関西待ってるだけじゃヤバイ

SkinnyFramework

  • Scala製ふるすたっく web フレームワーク

  • Scala on Rails

  • Scalatraベース(超シンプルなフレームワーク)

  • Servletコンテナ上で動く

  • 国産( @seratch さん )

How do I use?

  • http://skinny-framework.org/

  • 空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...)
  • Mail
  • 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 へようこそ

ペアプロのいいところ

  • 自然とコーディングに集中できる

ペアプロで大切なこと

  1. 大切なこと
  • だらだらやらない
  • 終了後にコードを噛み砕く時間を用意
  • たまには雑談する(コンパイル中とか)

どうやってリモートで?

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 センセイの講義が出てくる
  • わからんかったら、とりあえず一番上を押したらいいよ

オンラインジャッジ

わかりやすく言えば、仕様→納品→検収

  1. プログラミングコンテスト主演害者が公開してることが多い
  2. 直ぐに結果を知ることができる
  3. 他の人の回答を参考にすることができる
  4. コンテストに参加しなくてもいい

Scalaを使えるサイト

  1. HackerRank / Scala 2.11 (おすすめ
  2. Atcoder / 2.9.1 (おすすえm
  3. 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タスクは覚えやすい
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?