【入門編】絶対押さえておくべきScalaの特徴を徹底的に解説!

  • このエントリーをはてなブックマークに追加

   

TwitterやLinkedInなど海外の有名サービスを中心にScalaが使わており、日本国内でも徐々にScalaを採用するプロジェクトが増えてきています。本記事ではこれからScala開発に携わっていきたいと考えている人向けに、必ず押さえておくべきScalaの特徴や開発環境構築手順といった、Scalaに関する入門レベルの知識を紹介します。また将来参画するであろう案件のイメージを持っていただくために、現在募集中のScala案件も掲載します。今後のScala学習をスムーズに進めていくためにも最後まで読んでみてください。

Scalaとは?

Scalaはスイス連邦工科大学 (EPFL)の教授であるMartin Odersky(専攻: 型理論と関数型プログラミング)氏によって2001年に設計され、2003年にリリースされたプログラミング言語です。「汎用言語はスケーラブルでなくてはならず、同じ概念で小さいプログラムも大きなプログラムも記述できるべきである」「スケーラビリティは関数型言語とオブジェクト指向言語の2つのプログラミングの概念を統合することで実現する」という設計理念のもとにScalaは開発されました。Scalaという名前もスケーラブル(Scalable)という言葉からきています。Scalaのメリットやデメリット、将来性については以下の記事を読んでみてください。

関連記事:Scalaの将来性・需要は?平均年収や案件数についても解説

押さえておくべきScalaの特徴

これからScalaを扱う上で押さえておくべき特徴を5つ紹介します。これらを理解することで、スムーズにScalaの学習を進めることができるでしょう。

関数型かつオブジェクト指向プログラミング言語

Scalaでは関数型プログラミングが可能です。「関数を引数や戻り値として使用できる」という性質を利用し、副作用を持たない(データの内部状態を変更しない)関数を使用してプログラムを構築できます。また、ScalaはJavaと同様オブジェクト指向型でのプログラミングもできます。クラスを使用することができ、クラスの中にフィールド(クラスの特性を表す情報)とメソッド(振る舞い)を定義しnewキーワードでインスタンス化することが可能です。Scala開発では実現したいことの性質に応じて、関数型プログラミングとオブジェクト指向型プログラミングを使い分けることができます。

関数

関数とはある値(引数)を与えると何らかの値(返り値)を返す処理のまとまりを指します。関数そのものはオブジェクト(ファーストクラスオブジェクト)として扱われます。Scalaでは関数を次のように定義します。

処理が複数行のときは、処理を{}でくくります。以下はadd関数を定義し、実行する例です。

メソッド

メソッドと関数はよく似ていますが、違いがあります。メソッドはクラスやオブジェクトの中で定義する関数を指し、thisによりクラスやオブジェクトを参照することができます。Scalaではメソッドを次のように定義します。

処理が複数行のときは関数同様、処理を{}でくくります。以下はaddメソッドを定義し、実行する例です。

トレイト

トレイトはJavaでいうインタフェースのようなものです。Javaでは2つ以上のクラスから継承(多重継承)することはできません。

ただし1つのクラスやインタフェースに、複数のインタフェースのインタフェースの実装を持つことができます。Scalaでも多重継承はできませんが、インタフェースの代わりにトレイトを使用でき、Javaのインタフェースのように扱うことができます。トレイトは自身で実装を持つことが持つことが可能です。

トレイトを作成する際は、traitキーワードを使用します。

ミックスイン

「トレイト」のところで説明した、1つのクラスやインタフェースに複数のインタフェースの実装をもたせることをミックスインといいます。トレイトをミックスインするときは以下のようにwithキーワードを使用します。

Scalaの環境構築手順

Dockerを使用した環境構築手順を示します。環境構築したあとは実際にScalaのコードを書いて動かしてみましょう。
1.Dockerをインストール
https://www.docker.com/ からダウンロード及びインストールを行いましょう。

2.Dockerイメージの取得
以下のコマンドでDockerイメージを取得しましょう。

使用したイメージはこちらです。このDockerイメージはopenjdkをもとに作られており、Scalaのビルドツールの「sbt」も含まれています。

3.Dockerコンテナの起動
以下のコマンドでScala開発環境が整ったコンテナを動かすことができます。-vオプションで、ローカルのディレクトリとコンテナ内のディレクトリを紐付けることができます。

4.実際にソースコードを書く
どのエディタでも良いので、Scalaのソースコードを書いて作業ディレクトリ内に保存しましょう。試しに以下のようなコードを書き、ファイル名を「hello.scala」とします。

5.ソースコードを動かす
コンテナ内で以下のコマンドをたたきましょう。

初回は環境構築で実行結果が出るまでにかなりの時間がかかりますが、待ちましょう。最終的にはビルドが完了し、実行されて「Hello World」の文字が表示されます。

FAworksで現在募集中のScala案件

FAworksでは保有するScala案件数が増えてきており、現在募集中のScala案件が40件あります。その中から3つのScala案件をご紹介します。リンクを押していただくと、案件詳細の確認や案件への応募ができます。

大規模金融系アプリ開発案件

Fintech系スタートアップ企業での開発案件です。立ち上げから間もないプロジェクトに参画していただき、Scalaでの開発だけでなくサービス要件を詰めていく業務にも携わることができます。ビジネス志向の強いエンジニアにおすすめの案件です。

詳細はこちら

顧客管理パッケージカスタマイズ案件

業務でScala使用経験がない方でも応募可能な案件です。リファクタリングや新規機能追加が主な作業です。これからScalaエンジニアとしてキャリアを積んでいきたいエンジニアにおすすめの案件です。

詳細はこちら

広告配信システム開発案件

広告配信システムは消費財ではなく生産財のため、日常生活でみることはほとんどないでしょう。普段分からないインターネット広告の裏側を覗くことができる点で、知的好奇心旺盛な方におすすめです。既に稼働している広告配信システムの新規機能追加がメインです。

詳細はこちら

その他Scalaの案件が気になる方は案件一覧からご覧ください。

Scalaの
案件一覧はこちらから

 -プログラミング

  関連記事

R言語とPythonの違いとは?R言語の特徴やできることについて解説

ビッグデータが注目され始めたことにより、データアナリティストやデータサイエンティストのような職種の需

【入門編】絶対押さえておくべきGo言語の特徴を徹底的に解説!

YouTubeやNetflixなど有名サービスを中心にGo言語が使わており、日本国内でもメルカリやA

【入門編】絶対押さえておくべきTypeScript特徴を徹底的に解説!

近年のフロントエンド開発は主役がJavaScriptからTypeScriptに移ってきています。本記

Swift フリーランス案件・求人の最新情報 2022年

iOSアプリの開発をしている企業の多くはiOSエンジニアが不足しています。フリーランス市場においてi

Javaアプリケーションのパフォーマンスを(ほぼ)自動的に上げる方法

Javaアプリケーションのパフォーマンスを(ほぼ)自動的に上げる方法

コードを書き換えずに簡単な手順をいくつか踏むだけで、複雑なJavaアプリケーションを10%以上スピー

Kotlin フリーランス案件・求人の最新情報 2022年

フリーランス市場で需要の高い言語の1つがKotlinです。Kotlinはネイティブアプリケーション開

【2022年】Javaフレームワーク7選!メリット、需要をエージェント目線で解説

フリーランス市場で最も案件数が多いプログラミング言語はJavaです。FAworksでは、2022年2

Node vs. Go : Roadomatic の実装における比較

目次 概要 サーバ運用 ラウンド1: リクエスト処理 UDPソケット リクエストの検証 ラウンド2:

V8はどうやってJavaScriptコードを最適化しているのか?

僕の過去記事で、NodeJSがなぜ速いかについて話した。今日は、V8について話したいと思う。 多分、

継続的デリバリがもたらす効果と価値とは~ソフトウェア業界全体の「対応力を高める」トレンドを追え~

継続的デリバリがもたらす効果と価値 ~ソフトウェア業界全体のトレンド “React” を追え~

あなたが「リリース」という言葉を聞いた時、どのような感情が呼び起こされるだろうか?安堵?高揚感?ある