メニューを閉じる

テクノデジタルグループ

メニューを開く

2016.03.16

プログラミング

トレンドな言語 Scalaの魅力をご紹介

はじめまして、入社2年目のRTです。

さて、先日3月3日に社内でScalaの勉強会を行いました。
弊社社員のKSさんが講師となり、Scalaの入門・魅力について語ってくれました!

IMG_0631

Scalaとは?

最近、トレンドとしてよく耳にします。
私はScalaを初めて触りますが、オブジェクト指向型と関数型を融合させたような、そんな言語なのだとか。
Javaの豊富なライブラリも使用でき「ポストJava」として定評があるようです。
エンジニアにとって見逃せない言語ですね。

Scalaを導入してみる

導入は非常に簡単でした。
以下、macでの導入方法を紹介します。

まずはjdkが必要なので公式サイトよりダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
そしてインストール。

01

次に公式サイトより、Scala本体最新版をダウンロードします。
http://www.scala-lang.org/download/

解凍し、任意のディレクトリに格納します。
すると以下のような構成になっています。

02

フォルダ名にバージョンが入っていると少し気持ち悪いので、「scala」とします。

mv scala-2.11.7 scala

binディレクトリのPATHも通します。

vim ~/.bash_profile
export PATH=$PATH:scala/bin

「scala」と入力し、以下のように実行できればOK!

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を比較

勉強会では、JavaとScalaを比較していきながらScalaの便利さに触れていただきました。

例えば・・・、
Javaではおなじみのカプセル化。

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では以下で実装できちゃいます。

class Sample(var hoge: Int, var fuga: String)

簡単すぎますね~。

val s = new Sample(100, "abc")
println(s.hoge)

とかで簡単に出力できます。

また、↑のコードからもわかる通り、セミコロンも省略できちゃうんですね~。

そう考えると、セミコロン付けていたり付けていなかったり…
コーディング規約があれば別ですが、ソースコードの統一感がなくなってしまったり、
潜在的なバグが出てしまうのではないか…などなど不安になったりしそうですが、
しっかりとチーム内で共有していくことで回避していきたい感じですね。
また、案件によっては開発はスピード勝負!なところもあるので、Javaで煩雑なコードを書くよりはScalaでサクッと書けたほうがメリットが大きい部分がありそうです。

他にも、
戻り値に複数の値を戻したい。。というときがありますが、Javaではこんな感じで実装したりします。

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ではこれだけ!

def Sample(i: Int) {
    (i * 10, i * 20)
}

このように、他にも便利な構文がたくさんあります。

興味がある人は、どんな便利な構文・手法があるか調べてみるといかがでしょう?

テクノモバイルでは、このようなトレンドな情報・知識を蓄積していくために勉強会を随時開催しています。
勉強会は毎回好評で、エンジニアとしてのスキルもどんどんアップしています。
これからもこの調子で成長を続けていきたいですね~。

それでは、また素敵な情報を掴んだ日にお会いしましょう!


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事