0
第3回            初心者Scalaひとりではじめる Scala              2012/10/09              @shitai246_
自己紹介❖   シラトリタイスケ    ๏ Twitter: @shitai246_    ๏ Blog: http://a4p.me/❖   エンジニア    ๏ Java歴8年・Scala歴1年・JoJo歴18年    ๏ Webサービスと...
ひとりではじめるScala❖   仕事でScalaを使う上での障害    ๏ 会社や上司の理解が得られない/説得できない    ๏ Scalaを書ける同僚が少ない/居ない    ๏ Scalaでコードを書いた経験が少なく、自信が持てない
どうする?❖   ちょっとした処理をScalaで書いてみる    ๏ 1回しかやらない    ๏ 処理する量は多い(手作業でやるのはだるいor不可能)    ๏ 他の言語(JavaとかPerlとか)だとめんどい    ๏ コードにバグがあっても...
Case1. 画像ファイルの縦横幅を取得する❖   背景    ๏ 数万くらいある画像ファイルの横幅・縦幅を取得する必要があった    ๏ 画像ファイルは全てWebから取得可能、且つURLは全てデータ化できていた❖   Scalaを使った理由 ...
Case1. 画像ファイルの縦横幅を取得する❖   実際に書いたコード    ※ 大人の事情で多少変更しています。     import javax.imageio.ImageIO     import java.net.URL     imp...
Case2. Xmlを解析する❖   背景    ๏ 8月にAmazonアソシエイトで特定カテゴリの商品の紹介料率が変わった    ๏ 弊社でもAmazonアソシエイトと連携する部分があり、改修が必要になった    ๏ 事前調査のため、APIか...
Case2. Xmlを解析する❖   実際に書いたコード    import scala.io.Source    import java.io.File    import scala.xml.XML    object Main {    ...
やってみよう❖   REPLでXmlを解析してみる    scala> val xml =       | <list>       | <recode>       |    <id>1</id><data value="data1" /> ...
さいごに❖   書いたコードは共有しよう    ๏ みんなから見えるところにコードと実行結果を置くと興味を持つ人がいるかもしれない    ๏ 僕の場合は Trac のチケットにコードをそのまま載せている    ๏ 過剰な期待はしないこと❖   ...
Upcoming SlideShare
Loading in...5
×

Beginners Scala in FAN 20121023

1,616

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,616
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "Beginners Scala in FAN 20121023"

    1. 1. 第3回 初心者Scalaひとりではじめる Scala 2012/10/09 @shitai246_
    2. 2. 自己紹介❖ シラトリタイスケ ๏ Twitter: @shitai246_ ๏ Blog: http://a4p.me/❖ エンジニア ๏ Java歴8年・Scala歴1年・JoJo歴18年 ๏ Webサービスとかアドテクノロジーとか❖ マネージャー ๏ 管理しないこともひとつの管理手法です❖ ㈱ファンコミュニケーションズではエンジニアを募集しています ๏ 成果報酬型のアフィリエイト、A8.net/Moba8.netを開発・運用・保守するお仕事。 ๏ Javaがメイン、ところによりPerl、稀にC。もれなくレガシー。Scalaは積極採用中。
    3. 3. ひとりではじめるScala❖ 仕事でScalaを使う上での障害 ๏ 会社や上司の理解が得られない/説得できない ๏ Scalaを書ける同僚が少ない/居ない ๏ Scalaでコードを書いた経験が少なく、自信が持てない
    4. 4. どうする?❖ ちょっとした処理をScalaで書いてみる ๏ 1回しかやらない ๏ 処理する量は多い(手作業でやるのはだるいor不可能) ๏ 他の言語(JavaとかPerlとか)だとめんどい ๏ コードにバグがあってもすぐわかるorトラブルに発展しない ๏ etc...❖ メリット ๏ ひとりではじめられる ๏ 実際にScalaを使ってみて「Scala る」と周りに言える
    5. 5. Case1. 画像ファイルの縦横幅を取得する❖ 背景 ๏ 数万くらいある画像ファイルの横幅・縦幅を取得する必要があった ๏ 画像ファイルは全てWebから取得可能、且つURLは全てデータ化できていた❖ Scalaを使った理由 ๏ 僕のスキルセット的にJavaかScalaかしか選択肢がなかった ๏ 既にJavaのコードを書くとイライラする病を発病していたためScalaで書いた
    6. 6. 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) } } }
    7. 7. Case2. Xmlを解析する❖ 背景 ๏ 8月にAmazonアソシエイトで特定カテゴリの商品の紹介料率が変わった ๏ 弊社でもAmazonアソシエイトと連携する部分があり、改修が必要になった ๏ 事前調査のため、APIから返却されるXmlのデータの一部を確認したかった ๏ APIの返却値がXMLで数百レコードもあり、手作業でやるのは不可能だった❖ Scalaを使った理由 ๏ ScalaはXmlがファーストクラスで扱えるため、やりたいことがシンプルに実現できた
    8. 8. 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) } }
    9. 9. やってみよう❖ 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>
    10. 10. さいごに❖ 書いたコードは共有しよう ๏ みんなから見えるところにコードと実行結果を置くと興味を持つ人がいるかもしれない ๏ 僕の場合は Trac のチケットにコードをそのまま載せている ๏ 過剰な期待はしないこと❖ どうしてもプロダクトコードをScalaで書きたい人は… ๏ ㈱ファンコミュニケーションズではエンジニアを募集しています
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×