Scala勉強会 初心者向けハンズオン前編
Upcoming SlideShare
Loading in...5
×
 

Scala勉強会 初心者向けハンズオン前編

on

  • 2,091 views

外部向け勉強会 ipros tech meet up で行ったscalaハンズオンの資料です。

外部向け勉強会 ipros tech meet up で行ったscalaハンズオンの資料です。
内容はscala触ったことがない、かなり初心者向けとなっています。

Statistics

Views

Total Views
2,091
Views on SlideShare
733
Embed Views
1,358

Actions

Likes
2
Downloads
2
Comments
0

4 Embeds 1,358

http://ipros-creators.tumblr.com 1326
http://assets.txmblr.com 23
https://assets.txmblr.com 8
https://cybozulive.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

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

Scala勉強会 初心者向けハンズオン前編 Scala勉強会 初心者向けハンズオン前編 Presentation Transcript

  • Scala 勉強会 at ipros ハンズオン前編 株式会社イプロス カイゼンチームリーダー 竹内孝志
  • 自己紹介 • • • • • • • • • • 竹内 孝志(たけうち たかし) 1985年12月18日生まれ SIerで3年間金融系システムの保守・運用 現在はイプロスにWEBエンジニアとして勤務 業務はイプロスサイトの改善と機能拡張 Scalaは最近始めたばかりで初心者 アジャイル開発を極めるため修行中 Railsでサービスを作ろうと目論んでる 趣味はオンラインゲーム 実況動画にハマってる
  • Scalaハンズオン 前編 目的 Scalaを触ったことない人が・・・ 文法を理解して、 Scalaのコードを書いて実行できる
  • 前編の流れ • Scala概要 • 変数宣言、型、キャスト • 関数、ループ • 例外処理、制御式 • まとめ ※赤字の箇所はハンズオンを行います
  • Scala概要 Java仮想マシン(JVM)上で動作するプログラ ミング言語の一つ。 オブジェクト指向言語と関数型言語の両方 の特徴を取り入れた設計。 ScalaはJavaのクラスライブラリなどそのま ま利用できるため利便性が高い。 簡潔に並列処理を記述するための機能が用 意されている。
  • 関数型言語とは コードを逐次実行しながら副作用を起こ す命令型のコードをなるべく排除したプ ログラミングができる言語。 このため並列処理に向いている。 関数自身を引数に取ることができる高階 関数、データ型の型推論、遅延評価など の機能が用意されている。
  • Scala構成 ソース *.java ソース *.scala テキスト javaコンパイラ (JDK) テキスト バイトコード (*.class) Scala コンパイラ 中間コード Java(JVM) JRE
  • Scalaと他の言語比較 Scala Java Ruby 関数型 ◯ − − 生産性 − − ◯ 処理速度 ◯ ◯ − 学習コスト − ◯ ◯ 技術者の数 − ◯ ◯ IDE ◯ ◯ −
  • 環境構築 こちらを参考にしてください http://atnd.org/events/46137
  • Scalaハンズオン ここからは実際に手を動かします
  • 前編のハンズオン • 変数(宣言、キャスト) • 関数(宣言、引き渡し、ループ)
  • ハンズオン環境の紹介 REPL環境とスクリプトとしての実行の両方を行います。 1.REPR環境 Read-Eval-Print-Roopの略。 読み込み-評価-表示を繰り返す対話型の環境。 2.スクリプト実行環境 rubyやperl同様ファイルを読み込ませて 1行1行実行していく。
  • REPL環境の使い方 ダウンロードしたbinにあるscalaを実行してください $ scala-2.10.3/bin/scala Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64Bit Server VM, Java 1.7.0_17). Type in expressions to have them evaluated. Type :help for more information. scala>
  • 文字の出力 Scala println(“Hello World”) Java system.out.println(“Hello World”);
  • 変数の宣言 Scala var str = “Hello World” val str = “Hello World” Java String str = “Hello World” final String str = “Hello World”
  • 型の省略(型推論) Scala var a = 1 var b = 1.0 var c = “abc” var d = list(“A”,”B”) Java int a = 1; doble b = 1.0; String c = “abc”; List<String> list = newList(“A”,”B”);
  • 型階層
  • キャスト Scala val obj: Any = “abc” val str: String = obj.asInstanceOf[String] Java Object obj = “abc”; String str = (String) obj;
  • 演習 • valとvarの違いを確認する • 型推論を確認する • キャストを確認する
  • 演習 : valとvarの違いを確認 >var str1 = "cat" >str1 = "dog" >println(str1); >val str2 = "cat" >str2 = "dog" >println(str2)
  • 演習 : 型推論を確認 >var str = “Cat” >str >str = 5 ⬅ ここでエラー >var list = List(1,2,3,4,5) >list >list = List() ⬅ ここでエラー
  • 演習 : キャストを確認 >val obj: Any = “abc” >obj >val str: String = obj.asInstanceOf[String] >str >obj = str.asInstanceOf[Any] >obj
  • 関数の宣言 Scala def getMessage(name: String): String = { "My name is " + name } Java String getName(String name) { return "My name is " + name; }
  • 関数に関数を渡す Scala def getMessageMyname(name: String): String = { "My name is " + name } def printCatByMessage(f:(String) => String ) = { println(f("Cat")) } printCatByMessage(getMessageMyname)
  • ループ Scala def printMyname(name: String) = { println("My name is " + name) } var array = Array("Cat","Dog","Pig","Egg”) array.foreach(printMyname(_)) Java void printMyname(name: String){ system.out.println(); } String array[] = {"Cat","Dog","Pig","Egg"}; for (String name : array) { printMyname(name); }
  • 演習 • 関数に関数を渡してみる • foreachを使ってループする
  • スクリプトの実行方法 Scala実行時にファイル名を指定してください $ scala-2.10.3/bin/scala sample.scala
  • 演習 : 関数に関数を渡す //関数を定義する def getMessageMyname(name: String): String = { "My name is " + name } //関数を引数として関数を定義する def printCatByMessage(f:(String) => String ) = { println(f("Cat")) } //関数に関数を渡して実行する printCatByMessage(getMessageMyname)
  • 演習 : foreachを使ってループ //関数を定義する def printMyname(name: String) = { println("My name is " + name) } //ループ用にデータ配列を用意する var array = Array("Cat","Dog","Pig","Egg”) //データの要素を一つずつ取り出して関数を実行 array.foreach(printMyname(_))
  • 例外処理 Scala try catchを書かなくてもエスカレーションされる。 処理の中断をしたくない場合は例外処理を書く必要がある。 Java try { // 処理 } catch (Exception e) { e.printStackTrace(); } finally { // 処理 }
  • 例外処理をScalaで書くなら Scala try { // 処理 } catch { case e: Exception => { e.printStackTrace } } finally { // 処理 }
  • 制御式 Scala String str = “Cat” if (“Cat” === str) { } Java String str = “Cat”; if (“Cat”.equals(str)) { }
  • Scalaでハマったところ • 文法がjavaと異なる • MapやListのメソッドがjavaと異なる • オブジェクトの構造
  • まとめ ScalaはJVM上で動作する言語の1つ。 Javaのライブラリを使用することが可能。 Javaとは文法が異なる。 関数型言語の特徴を持っている。
  • ご清聴ありがとうございまし た。