• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Beginners Scala in FAN 20121023
 

Beginners Scala in FAN 20121023

on

  • 1,737 views

第3回初心者Scala in F@N での発表資料。

第3回初心者Scala in F@N での発表資料。

Statistics

Views

Total Views
1,737
Views on SlideShare
1,018
Embed Views
719

Actions

Likes
0
Downloads
4
Comments
0

5 Embeds 719

http://control.blog.fc2.com 585
http://makopi23.blog.fc2.com 121
https://twitter.com 11
http://twicli.neocat.jp 1
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Beginners Scala in FAN 20121023 Beginners Scala in FAN 20121023 Presentation Transcript

  • 第3回 初心者Scalaひとりではじめる Scala 2012/10/09 @shitai246_
  • 自己紹介❖ シラトリタイスケ ๏ Twitter: @shitai246_ ๏ Blog: http://a4p.me/❖ エンジニア ๏ Java歴8年・Scala歴1年・JoJo歴18年 ๏ Webサービスとかアドテクノロジーとか❖ マネージャー ๏ 管理しないこともひとつの管理手法です❖ ㈱ファンコミュニケーションズではエンジニアを募集しています ๏ 成果報酬型のアフィリエイト、A8.net/Moba8.netを開発・運用・保守するお仕事。 ๏ Javaがメイン、ところによりPerl、稀にC。もれなくレガシー。Scalaは積極採用中。
  • ひとりではじめるScala❖ 仕事でScalaを使う上での障害 ๏ 会社や上司の理解が得られない/説得できない ๏ Scalaを書ける同僚が少ない/居ない ๏ Scalaでコードを書いた経験が少なく、自信が持てない
  • どうする?❖ ちょっとした処理をScalaで書いてみる ๏ 1回しかやらない ๏ 処理する量は多い(手作業でやるのはだるいor不可能) ๏ 他の言語(JavaとかPerlとか)だとめんどい ๏ コードにバグがあってもすぐわかるorトラブルに発展しない ๏ etc...❖ メリット ๏ ひとりではじめられる ๏ 実際にScalaを使ってみて「Scala る」と周りに言える
  • Case1. 画像ファイルの縦横幅を取得する❖ 背景 ๏ 数万くらいある画像ファイルの横幅・縦幅を取得する必要があった ๏ 画像ファイルは全てWebから取得可能、且つURLは全てデータ化できていた❖ Scalaを使った理由 ๏ 僕のスキルセット的にJavaかScalaかしか選択肢がなかった ๏ 既にJavaのコードを書くとイライラする病を発病していたためScalaで書いた
  • Case1. 画像ファイルの縦横幅を取得する❖ 実際に書いたコード ※ 大人の事情で多少変更しています。 import javax.imageio.ImageIO import java.net.URL import scala.io.Source object Main { def main(args : Array[String]) : Unit = { val source = Source.fromFile(“/tmp/banner_url.txt”) val lines = source.getLines lines.foreach(getBannerSize) } def getBannerSize(url : String) : Unit = { try { val image = ImageIO.read(new URL(url)) println(url + “,” + image.getWidth + “,” + image.getHeight) } catch { case e:Exception => Thread.sleep(100); getBannerSize(url) } } }
  • Case2. Xmlを解析する❖ 背景 ๏ 8月にAmazonアソシエイトで特定カテゴリの商品の紹介料率が変わった ๏ 弊社でもAmazonアソシエイトと連携する部分があり、改修が必要になった ๏ 事前調査のため、APIから返却されるXmlのデータの一部を確認したかった ๏ APIの返却値がXMLで数百レコードもあり、手作業でやるのは不可能だった❖ Scalaを使った理由 ๏ ScalaはXmlがファーストクラスで扱えるため、やりたいことがシンプルに実現できた
  • Case2. Xmlを解析する❖ 実際に書いたコード import scala.io.Source import java.io.File import scala.xml.XML object Main { def main(args : Array[String]) : Unit = { val xml = XML.loadFile(new File(“./amazon/orders.xml”)) val items = xml “Item” val tag = items “@Tag” tag.foreach(println) } }
  • やってみよう❖ REPLでXmlを解析してみる scala> val xml = | <list> | <recode> | <id>1</id><data value="data1" /> | </recode> | <recode> | <id>2</id><data value="data2" /> | </recode> | <recode2> | <id>3</id><data value="data3" /> | </recode2> | </list> scala> println(xml "recode" "id") <id>1</id><id>2</id> scala> println(xml "id") <id>1</id><id>2</id><id>3</id> scala> (xml "@value").foreach(println) data1 data2 data3 scala>
  • さいごに❖ 書いたコードは共有しよう ๏ みんなから見えるところにコードと実行結果を置くと興味を持つ人がいるかもしれない ๏ 僕の場合は Trac のチケットにコードをそのまま載せている ๏ 過剰な期待はしないこと❖ どうしてもプロダクトコードをScalaで書きたい人は… ๏ ㈱ファンコミュニケーションズではエンジニアを募集しています