Scalaとは? 人気の秘密や勉強方法までまとめて解説


プログラミングを勉強しようと検索したらScalaがあるみたい……
Scalaってどんな言語で、なにができるんだろう?
Javaと関係あるみたいだけど、JavaよりもScalaを勉強するべきなの?

こんにちは。文系から自力でなんとかプログラマをやってきて、早8年目に突入した佐藤です。皆さんは「Scala」というプログラミング言語をご存知ですか?

どんな言語なのかよく知らない方も多いのではないでしょうか。実は、Scalaはいま非常に注目されている言語の一つなんです。

この記事ではScalaについてまったく知らない方や、次の言語にScalaを選ぼうかなと思っている方へ向けて、「Scalaとはなにか?」をわかりやすく解説していきます。後半ではこのスキルの市場価値や、学習するための書籍などを紹介します。

Scalaは知っていて損はない言語です。全く知らなかった方も、少しだけ興味がある方も是非この記事をご覧になってください。

まずは、「Scala」とはどのようなものなのか解説していきます。さっそく一緒に見ていきましょう!

目次

Scalaとは

この章ではScalaの成り立ちや将来性について、Javaとの関係性も合わせて解説していきます。ここで、Scalaとはどんなものなのかを把握しましょう。

「Scala」は2003年ごろに開発されたプログラミング言語です。Javaは1995年ごろから多く使われるようになったので、わりと最近に開発された言語なのがわかります。

また、ウィキペディアなどでは、

オブジェクト指向言語と関数型言語の特徴を統合したプログラミング言語

引用元:ウィキペディア https://ja.wikipedia.org/wiki/Scala

と特徴付けされることが多いです。

オブジェクト指向プログラミングの中でも、関数型の機能などが使える珍しい言語といえます。また、Javaと互換性を保つよう開発された言語なので、JavaのライブラリをScalaから使うことが可能で、効率的に開発できることも特徴の一つです。

さて、難しい言葉が並んでしまいました。次の項目では「超」簡単に説明していきますので、全然わからなかった方も安心して次をご覧ください!

Scalaの特徴

良いところ取りのハイブリット言語

Scalaは、オブジェクト指向+関数型の機能も使える、ハイブリットな言語です!

オブジェクト指向についてはご存知の方も多いかもしれません。クラスなどの部品を作って、それを組み合わせて作るプログラミングです。

詳しく知りたいと思った方は、ぜひ次の記事をご覧ください。

関数型プログラミングは、関数を組み上げてつくるプログラミングです。代表的な関数型言語としては「Haskell」などがあります。

この関数型の考えとオブジェクト指向の考えを取った、いわば良いトコ取りな言語ということですね。

Javaとの互換性が非常に高い! 便利な機能も簡単に使えちゃう

ScalaはJavaとの互換性が非常に高いと言われています。その理由は、

  • Javaの環境を利用できる
  • JavaからScalaを呼び出せる
  • JavaのライブラリをScalaでも使える

またScalaはコードがシンプルなため、Javaよりもコードの記述量が少なくて済んだり、Javaの不足部分を補足できたりする特徴があります。このように、Javaとの互換性が高いため、Javaの後継言語だと言われています。

国内の需要が高まっている

現在も、アメリカでScalaのトレンドが続いています。その流行の波が日本にも訪れつつあり、年々人気が上がってきている言語です。

Scalaは非常に効率よく開発することができるため、今までにない速度で開発することが可能です。日本企業でも取り入れる企業が増えてきており、国内でも需要がどんどん高まっています。

また「Javaの後継になるのでは?」という噂もあり、今後もさらに需要が伸びることが予想されています。これらを見越して今からScalaを勉強すれば、のちのち非常に有利になる可能性がありますね。

Scalaを習得したいと思っているエンジニアが増えている

このような理由から、Scalaを習得したいと思っているエンジニアが増えています。米HackerRank社が実施した「2020 Developer Skills Report」(2020年版 エンジニアのスキル調査)によれば、Scalaは今後学びたい言語ランキングで6位でした。

今後、海外のエンジニアの影響を受け、国内でもScalaを習得したいエンジニアが増えていくと予測できます。もし今、Scalaを学びたいと思っているならチャンスかもしれませんね。

JVMの経験が活かせる

ScalaはJavaの機能が使用できるよう、互換性を第一に考えて作られた言語です。ライブラリの使用はもちろん、JVMで動作するためJavaの知識やJVMの経験が活きる言語です。

JVMってなんだろう?

と思った方は、次の記事で詳しく解説していますのでぜひご覧ください。

それならJavaだけ勉強すればいいんじゃない? なんて思われるかもしれません。

ですが、先ほども紹介したようにScalaはとても効率よく開発することができ、処理も早い言語です。また、Javaでは不足していた部分もScalaでは補完されていたりします。

Javaの便利な機能を使えて、今までにない速度で開発できる言語としてScalaは、Javaの後継になり得ると注目されています。片方だけではなく、どちらの言語も知っていることが、Scalaをマスターするための近道になるかもしれませんね。

以上で、Scalaの基礎について紹介しました。次は、そのScalaでなにを作れるのか簡単に紹介してきます。

Scalaで作れるもの

実は、Scalaで作られているものは皆さんの身近にあるんです。海外企業であれば、SNSのTwitterの一部はScalaで作られていますし、PayPalなどにも使用されています。

日本企業でも使用している企業がどんどん増えていて、「ニコニコ動画」で有名なドワンゴやChatWork、フリューなどのゲーム業界などでも使用されています。

Scalaを使用している企業例

  • 株式会社ドワンゴ
  • 株式会社はてな
  • SmartNews
  • ChatWork株式会社
  • 株式会社ビズリーチ
  • グリー株式会社
  • フリュー株式会社
  • Twitter
  • Tumblr
  • PayPal
  • FourSquare
    ……etc.

このように、Scalaで作れるものは無限にあるといっても過言ではありません。Javaで作れるものは、すべてScalaでも作ることができます。

具体的には

  • アプリ開発
  • Webサービス開発
  • ゲーム開発
  • Webサイト開発
  • データ分析

などなど、本当に幅広くいろんなところで活躍できる言語なんです。Scalaでできることに関しては、こちらの記事でも紹介しているため参考にしてくださいね。

Scalaのメリット・デメリット

Scalaはこの記事中に何度も出てきているように、効率的に開発できる言語です。理由はコードの記述量にあります。

なんと、Javaで20行書かないといけない部分がScalaだと1行で済んでしまう時もあります。書く内容が少なければ、不具合の原因も減りますよね。また、様々な処理を同時にできる能力が強く、動作が早いのもメリットの一つです。

ですが、Scalaにもデメリットがあります。Scalaは学習コストが高い言語と言われています。使いこなせるようになるまでに時間がかかる、ちょっと難しめの言語ということです。

規約が複雑で多かったり、関数型プログラミングとオブジェクト指向の両方を知っていないとScalaの良さを最大限に生かせないという点で、難易度が高めの言語になっています。

また、IDE(統合開発環境)の機能がJavaと比べてまだ充実しておらず、コンパイル速度も少し遅めという点もデメリットとして挙げられています。上記で挙げたScalaのメリット・デメリットを表にまとめてみました。

メリットデメリット
コードの記述量が少ないちょっと難しくて学習コストが高い
同時にたくさん処理できるIDE(統合開発環境)の機能がまだ充実しきっていない
Javaの便利な機能が使える(ライブラリ、JVMなど)コンパイル速度が遅め
便利なフレームワークも用意されている

学習コストが高い以外はデメリットがあまりない言語なので、すでに何かの言語を習得している方には非常におすすめの言語です。

このように、学習コストが高いのに需要が増えているため、Scalaを扱えるエンジニアがまだまだ足りていません。

そんなScalaエンジニアの市場価値はどのようになっているのでしょうか? こちらも気になる方が多いと思いますので、さっそく見ていきましょう。

Scalaエンジニアの市場価値

この章では、Scalaを使った実際の求人や、収入について紹介していきます。

Scalaを使えるようになると、どんな仕事につけるのでしょうか? まずはそこから説明していきます。

Scalaエンジニアが活躍できる業界

ScalaはTwitterやChatWork、PayPalなどあらゆるものに使用されています。そのため、Scalaエンジニアが活躍できる業界は、

  • Web業界(SNS、Eコマース)
  • ソフトウェア業界(アプリ、ゲーム)
  • 通信、金融業界(システム開発)

このようにScalaは作れるものが多いため、幅広い業界で活躍できる可能性があります。

Scalaが使えるとできる仕事

Scalaが使えるとどのような仕事があるのか具体的にみていくために、レバテックキャリアで「Scala」と入力して検索して調査しました。

引用元:レバテックフリーランス https://freelance.levtech.jp/

現在(2020/5)では152件の求人がヒットしました。気になる内容を何個かあげてみます。

サーバーサイドの設計及び開発業務ができれば、年収1,000万円を狙うことが可能です。

そして、機械学習に関する仕事にも携わることも可能なんです。

Scalaを習得していれば、AIなど最先端の技術を使った仕事にも携わることができます。エンジニアの数自体も少ないので単価も非常に高くなっています。

またITコンサルタントの仕事も狙えます。

このようにScalaを習得することで高単価の求人を狙うことが可能になるため、収入アップが期待できますね。

気になる年収

先程の求人を見て頂ければなんとなく予想がつくと思いますが、Scalaエンジニアの年収の最大額は1300万という調査結果(2018年)もあり、平均でも年収600万円との調査結果が出ています。安定している収入を得られると言われるJavaエンジニアの年収中央値は500万円なので、比較的はっきりと年収が高くなっています。


引用元:【求人検索エンジン「スタンバイ」調べ】
https://www.bizreach.co.jp/pressroom/pressrelease/2018/0807.html

今後もますます求人が増えると予測されるので、来年にはGo言語を超えて1位になるかもしれませんね。エンジニアとしてスキルアップしていきたいと考えている方には、メリットの大きい言語だといえます。

基本的なScalaの入門

この章では、Scalaを勉強してみたい! と思った方へ、簡単な準備の方法とおすすめの書籍やサイトを紹介していきます。

開発環境の作り方

まずは動かせる環境を作っていきましょう。最初にOracleのサイトからJDKをダウンロードします。

⇒参考:Oracle https://www.oracle.com/technetwork/java/javase/downloads/index.html

もし、すでにJava8JDKがインストールされていればスキップして次に行きます。次に、公式サイトからScalaとIDEをダウンロードしましょう。

こから「Download IntelliJ」を選び、その先で「Download」を選びます。

引用元:IntelliJ IDEA https://www.jetbrains.com/idea/

無償版のCommunity版を選んで、ダウンロードが完了するまで待ちましょう。ダウンロードが完了したら、実行し指示に従ってインストールして初回起動を行います。

公式のヘルプ(初回起動についてScalaセットアップについて)もあるので、こちらも参考にしてください。ここまでできてIDEが起動したら早速動かしてみましょう。

Hello Worldを表示してみよう

ここでは、簡単にコンソール画面にHello Worldを表示してみます。

object test {
  def main(args: Array[String]): Unit = {
    println("Hello World")
  }
}
Hello World

Javaをご存知の方は、馴染みのある見た目かもしれませんね。ちなみに開発中の画面はこうなっています。

このような感じでScalaを始めることができます。

さっそくおすすめの勉強用書籍・サイトを使って学習していきましょう。次の項目で紹介していきます。

Scalaの学習方法

Scalaを学ぶための3つのステップ

Scalaを学ぶための学習ステップは次の通りです。

  • ステップ1 Scalaの開発環境構築
  • ステップ2 書籍や学習サイトによる独学
  • ステップ3 実際にシステムを開発する

Scalaの開発環境構築については、解説済みのため、次は参考書籍や学習サイトを紹介していきます。

現役Scalaエンジニアがおすすめする参考書籍

Scalaに関する書籍で日本語で書かれているものも増えてきましたが、初学者であればこの一冊をおすすめします。

「ゼロから学ぶScala」

こちらはプログラミング未経験者でもScalaを勉強できるように、非常に易しく説明・解説を行ってくれている書籍です。すでに他の言語が使える方にとっては、少し簡単すぎるかもしれません。

基礎的な学習を終えた方には次の書籍をおすすめします。ほかの言語も扱えるけど、いきなり難しい本を読むのは……とお考えの方にもおすすめです。

「オープンソース徹底活用Scala実践プログラミング」

「Javaの開発経験がある」「他の言語の開発経験がある」「基礎的な学習は終了している」そんな方には次の一冊をおすすめします。実践的な内容で、さらにスキルアップするために適した書籍です。

必読書といっても過言ではありません。通称「コップ本」と呼ばれています。

「Scalaスケーラブルプログラミング第3版」

また、Scalaおすすめの書籍を紹介した記事があります。もっといろいろ知りたいと思った方はぜひこちらもご覧ください。

Scalaが学べるチュートリアルサイト

Scala公式サイトのチュートリアルでも学ぶことができます。学べる内容は下記の通りです。

  • Scala入門(セットアップ方法)
  • Scalaツアー(Scalaの基本)
  • JAVAプログラマー向けのチュートリアル

Scala公式サイトでは、初心者から上級者向けまで学習できる内容になっているため、ぜひ活用してくださいね。

⇒参考:Scala公式チュートリアル https://docs.scala-lang.org/ja/

Scala日本のユーザーグループのサイトでは、最新情報やITイベントなどの情報が公開されているので参考ししてくださいね。

⇒参考:Scalajp http://jp.scala-users.org/communities.html

そのほか、日本語のサイトで勉強したいときには下記のサイトがおすすめです。

⇒参考:「ドワンゴオリジナル研修資料」 http://dwango.github.io/scala_text/

この他、Scalaについて紹介しているサイトは増えてきています。書籍と合わせてサイトでも学習し、理解を深めていきましょう!

Scalaが学べるオンライン講座

無料のオンライン講座でScalaを学びたい場合は、「ドットインストール」がオススメです、ドットインストールでは下記の内容が学べます。

  • Scalaのインストール方法
  • MyApp.scalaの作成方法
  • 変数の使い方

ドットインストールのScala入門では動画レッスンが36レッスン公開されているため、一度利用して見るといいでしょう。

⇒参考:ドットインストール https://dotinstall.com/lessons/basic_scala

また、有料ですがUdemyN予備校でもScalaのオンライン講座が開催されています。Udemyでは、初級者向けから上級者向けの講座が開催されているため、興味がある講座がないか探してみてくださいね。

また、N予備校ではプログラミング完全未経験者向けのコースや、Scalaを学べる大規模開発アプリコースなど複数のコースがあります。

⇒参考:Udemy https://www.udemy.com/

⇒参考:N予備校 https://www.nnn.ed.nico/pages/programming/

チェックしておきたいScalaのスーパーエンジニア

エンジニアの方々のブログで、Scalaに関する最新情報や技術についてウォッチすることもおすすめします!

@xuwei_kさん
実際にお仕事でScalaを使われていたエンジニアの方です。ブログでも精力的に活動されています。

@j5ik2oさん
国内Scalaエンジニアの方です。イベントなどに参加され、技術的な内容を多く発表しています。

実は他にもたくさんのエンジニアの方がいらっしゃいます!

ウォッチすべきエンジニアをまとめているページもありますので、興味がある方はこちらもご覧ください。

⇒参考:ウォッチすべきScalaエンジニア(海外/日本人)のTwitterアカウント  https://gist.github.com/kmizu/1257395

まとめ

いま注目のプログラミング言語「Scala」についてご紹介しました。これからの将来性も考えると夢のある言語ですよね。

学習コストは高いかもしれませんが、その分マスターすればエンジニアとしてかなり成長出来ること間違いなしです。

この記事をよんで興味が湧いた方や、さらにやる気が湧いた方はぜひ書籍やサイトを参考に実践して学習していきましょう! それでは、また次の解説で!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次