Scalaを活かせる仕事

    Scalaとは?

    Scalaの案件・業界分布について

    Scalaは、スイス・ローザンヌにあるスイス連邦工科大学の教授でJavaの開発を行っていたマーティン・オーダースキー氏によって開発されたプログラミング言語。JAVAのライブラリが利用可能で、環境を構築しやすいのが特徴です。


    Scalaについて

    Scalaでは、ビッグプロジェクトを進める際にミスや手間を減らし、共同作業の利便性を高めるための考え方として知られる「オブジェクト指向」の言語、問題を関数の組み合わせで記述するプログラミング方法である「関数型プログラミング」の言語の両方を扱うことができます。

    エラーを起こしにくいだけでなく、エラーを見つけやすいというメリットもあり、海外ではTwitterやLinkedin、国内でもChatworkやビズリーチなどがScalaを使っています。


    2017年にビズリーチが行った調査によると、国内のプログラミング言語別平均年収ランキングで、「Scala」は626万円で堂々の1位。株式会社ドワンゴ、サイバーエージェント、SmartNewsなどの有名企業をはじめ、幅広い業界で、広告システムの開発、データ分析、WEBサービスのサーバサイド開発など幅広い案件があります。


    難易度が高く、習得するまでに時間がかかりますが、幅広い使用用途と高い有用性で、需要が増え続けている「Scala」。身につけると、かなり強いスキルとなります。


    Scalaのサンプルコード


    (例)変数

    「val」=イミュータブル(変更不可)、「var」=ミュータブル(変更可)の2種類。「val」は後から変更できない変数で、副作用が起きません。


    // valはイミュータブル

    scala> val msg = "Hello, world!"

    msg: String = Hello, world!


    scala> msg = "Goodbye cruel world!"

    <console>:8: error: reassignment to val

         msg = "Goodbye cruel world!"


    // varはミュータブル

    scala> var greeting = "Hello, world!

    greeting: String = Hello, world!

    scala> greeting = "Leave me alone, world!"

    greeting: String = Hello, world!



    (例)算術演算子

    Scalaは、基本型を操作する演算子が豊富にあります。下記は算術演算子。


    scala> 1.2 + 2.3

    res: Double = 3.5


    scala> 3 - 1

    res: Int = 2


    scala> 'b' - 'a'

    res: Int = 1


    scala> 2L * 3L

    res: Long = 6


    scala> 11 / 4

    res: Int = 2


    scala> 11 % 4

    res: Int = 3


    scala> 11.0f / 4.0f

    res: Float = 2.75


    scala> 11.0 % 4.0

    res: Double = 3.0



    (例)関数

    関数には、「関数定義はdefで始まる」「関数名は慣例的にキャメルケースを使用」「引数の定義は〔変数名〕:〔データ型の形式〕」など、主な定義があります。


    // 基本形

    def max(x: Int, y: Int): Int = {

     if (x > y)

       x

     else

       y

    }


    // 省略した書き方(関数が一文のみから構成される場合)

    def max(x: Int, y: Int) = if (x > y) x else y



    (例)引数のない関数

    引数のない関数では、括弧を省略することができます。


    scala> def three() = 1 + 2

    three: ()Int


    scala> three()

    res2: Int = 3


    scala> three

    res3: Int = 3


    Scalaのフレームワーク

    Scalaの代表的なフレームワークとして知られているのは、Javaでも利用できる「Play」、Ruby系のフレームワークに影響された「Scalatra」「Skinny」、Twitterで開発された「Finagle」など。


    ■Play

    「Play」は、JavaとScalaをサポートしているフレームワーク。WEBアプリ、WEBアプリのバックエンドなどで使われ、高速で開発できることがメリットと考えられています。「Play1」のリリース後、徐々に進化をとげ、新しく開発された「Play2」は、主にScala言語によって書き換えられています。


    ■Scalatra

    「Scalatra」は、まつもとゆきひろ氏により開発されたプログラム言語「Ruby」のフレームワーク「Sinatra」に影響を受けた、Scala用のフレームワーク。シンプルでアクセスしやすく、JVWのパワーとScalaの簡潔さを組み合わせ、高性能なwebサイトとAPIを迅速に構築するのに役立ちます。

    「Skinny」は、オープンソースのソフトウエア「Ruby on Rails」に大きな影響を受けています。webサーバーで稼働するJavaプログラムであるサーブレットベースのwebアプリ開発を持続的に行うことに適しています。


    ■Finegle

    「Finegle」は、Twitter社が公開した軽量フレームワーク。JVM用の拡張可能なRPCシステムであり、高並行性サーバーの構築に使用されます。複数の通信プロトコルに対して統一されたクライアント及びサーバーAPIを装備しており、高いパフォーマンスと複数の処理を同時に行うことができるよう設計されています。


    Java Scriptと同様、さまざまな選択肢があるScalaのフレームワーク。「Play」が一番便利と言われていますが、開発要件によっては機能が過剰になることも。要件に合わせた適切なフレームワーク選びが大切です。


    最後に

    当サービスでは、Scalaの案件を豊富に取り揃えております。ぜひ魅力的なScalaの案件をお探しください。

    また、本記事で紹介したScalaのフレームワークのスキルを必要とする案件も多数ございます。こちらも合わせてお探しください。


    ■Play案件

    https://freelance.akkodis.co.jp/projects/?skill=461






    続きを見る