2023.03.09
CloudFront+Lambda@EdgeでHTTPリダイレクト
2016.03.16
プログラミングトレンドな言語 Scalaの魅力をご紹介
はじめまして、入社2年目のRTです。
さて、先日3月3日に社内でScalaの勉強会を行いました。
弊社社員のKSさんが講師となり、Scalaの入門・魅力について語ってくれました!
最近、トレンドとしてよく耳にします。
私はScalaを初めて触りますが、オブジェクト指向型と関数型を融合させたような、そんな言語なのだとか。
Javaの豊富なライブラリも使用でき「ポストJava」として定評があるようです。
エンジニアにとって見逃せない言語ですね。
導入は非常に簡単でした。
以下、macでの導入方法を紹介します。
まずはjdkが必要なので公式サイトよりダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
そしてインストール。
次に公式サイトより、Scala本体最新版をダウンロードします。
http://www.scala-lang.org/download/
解凍し、任意のディレクトリに格納します。
すると以下のような構成になっています。
フォルダ名にバージョンが入っていると少し気持ち悪いので、「scala」とします。
1 |
mv scala-2.11.7 scala |
binディレクトリのPATHも通します。
1 2 |
vim ~/.bash_profile export PATH=$PATH:scala/bin |
「scala」と入力し、以下のように実行できればOK!
1 2 3 4 5 6 |
scala Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_73). Type in expressions to have them evaluated. Type :help for more information. scala> |
勉強会では、JavaとScalaを比較していきながらScalaの便利さに触れていただきました。
例えば・・・、
Javaではおなじみのカプセル化。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Sample { private int hoge; private String fuga; public Sample(int hoge, String fuga) { this.hoge = hoge; this.fuga = fuga; } public int getHoge() { return hoge; } public void setHoge(int hoge) { this.hoge = hoge; } public String getFuga() { return fuga; } public void setFuga(String fuga) { this.fuga = fuga; } } |
Scalaでは以下で実装できちゃいます。
1 |
class Sample(var hoge: Int, var fuga: String) |
簡単すぎますね~。
1 2 |
val s = new Sample(100, "abc") println(s.hoge) |
とかで簡単に出力できます。
また、↑のコードからもわかる通り、セミコロンも省略できちゃうんですね~。
そう考えると、セミコロン付けていたり付けていなかったり…
コーディング規約があれば別ですが、ソースコードの統一感がなくなってしまったり、
潜在的なバグが出てしまうのではないか…などなど不安になったりしそうですが、
しっかりとチーム内で共有していくことで回避していきたい感じですね。
また、案件によっては開発はスピード勝負!なところもあるので、Javaで煩雑なコードを書くよりはScalaでサクッと書けたほうがメリットが大きい部分がありそうです。
他にも、
戻り値に複数の値を戻したい。。というときがありますが、Javaではこんな感じで実装したりします。
1 2 3 4 5 6 7 8 9 10 11 |
public class Sample { int x; int y; public Sample(int x, int y) { this.x = x; this.y = y; } public Sample getObj(int i) { return new Sample(i * 10, i * 20); } } |
Scalaではこれだけ!
1 2 3 |
def Sample(i: Int) { (i * 10, i * 20) } |
このように、他にも便利な構文がたくさんあります。
興味がある人は、どんな便利な構文・手法があるか調べてみるといかがでしょう?
テクノモバイルでは、このようなトレンドな情報・知識を蓄積していくために勉強会を随時開催しています。
勉強会は毎回好評で、エンジニアとしてのスキルもどんどんアップしています。
これからもこの調子で成長を続けていきたいですね~。
それでは、また素敵な情報を掴んだ日にお会いしましょう!
【テクノモバイルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
最近の記事
タグ検索
SNS共有