スライドショー

Scalaとは? いま注目度急上昇中のプログラミング言語を解説


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

こんにちは。文系から自力でなんとかプログラマをやってきて早8年目に突入した佐藤です。

皆さんは「Scala」というプログラミング言語をご存知ですか? どんな言語なのかよく知らない方も多いのではないでしょうか。実は、Scalaはいま非常に注目されている言語の一つなんです。

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

Scalaは知っていて損はない言語です。全く知らなかった方も、少しだけ興味がある方も是非この記事をご覧になってください。まずは「Scala」とはどのようなものなのか解説していきます。さっそく一緒に見ていきましょう!

Scalaとは

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

オブジェクト指向言語と関数型言語を融合した言語

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

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

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

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

超簡単に特徴を説明すると……

前の項目では、ちょっとわかりにくかった特徴を超簡単にまとめてみます。Scalaは、オブジェクト指向+関数型の機能も使える、ハイブリットな言語です! オブジェクト指向についてはご存知の方も多いかもしれません。クラスなどの部品を作って、それを組み合わせて作るプログラミングです。

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

関数型プログラミングは、関数を組み上げてつくるプログラミングです。代表的な関数型言語としては「Haskell」などがあります。この関数型の考えとオブジェクト指向の考えの、いわば良いトコ取りな言語ということですね。

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

Javaで用意されている「よく使う機能の集まり(ライブラリ)」がScalaでも普通に使えます。他にもJavaで使えるものがScalaでも共通して使うことが出来ます。特徴をなんとなく掴む出来たでしょうか? 次は、どうしていま注目されているのかを簡単に解説していきます。

いま注目されている理由と将来性

現在もアメリカでScalaのトレンドが続いています。その流行の波が、日本にも訪れつつあり年々人気が上がってきている言語です。Scalaは非常に効率よく開発することができるため、今までにない速度で開発することが可能です。日本企業でも取り入れる企業が増えてきており、国内でも需要がどんどん高まっています

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

さて、次はJavaとScalaの関係性について解説していきます。いったいどんな関係があるのでしょうか? また、どんな違いがあるのでしょうか?

Javaとの関係性と違い

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で作れるものはとても幅広いので、求人も豊富に募集されています。実際の求人サイトの情報を少し見てみましょう。レバテックフリーランスで「Scala」と入力して検索してみました。

画像:レバテックフリーランス https://freelance.levtech.jp/

現在(2019/4)では33件の求人がヒットしました。気になる内容を何個かあげてみます、まずはECサイト開発のお仕事です。Javaの経験等があれば、Scalaの経験がそこまで長くなくても月最高95万円のお仕事に就くこともできます。

URL:https://freelance.levtech.jp/project/detail/31030/

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

URL:https://freelance.levtech.jp/project/detail/30088/

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

気になる年収

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


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

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

Scalaを勉強してみたいと思ったら

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

環境設定をしてみよう

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

URL:https://www.oracle.com/technetwork/java/javase/downloads/index.html

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

URL:https://www.scala-lang.org/download/

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

URL:https://www.jetbrains.com/idea/

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

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

実際に動かしてみよう

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

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

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

このような感じでScalaを始めることができます。さっそくお勧めの勉強用書籍・サイトを使って学習していきましょう。次の項目で紹介していきます。

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

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

「ゼロから学ぶScala」

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

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

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

「Javaの開発経験がある」「他の言語の開発経験がある」「基礎的な学は終了している」そんな方には次の一冊をお勧めします。実践的な内容で、さらにスキルアップするために適した書籍です。必読書といっても過言ではありません。通称「コップ本」と呼ばれています。

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

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

次は、おすすめのチュートリアルサイトの紹介です。

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

公式サイトにもチュートリアルがもちろん存在します。英語が苦手でなければ、ぜひこちらを実践してみることをお勧めします。

Scala公式チュートリアル

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

入門編
「EclipseでScalaプログラミングを始めるための基礎知識」

入門編の勉強が終わったら
「ドワンゴオリジナル研修資料」

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

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

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

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

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

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

まとめ

いま注目のプログラミング言語「Scala」についてご紹介しました。これからの将来性も考えると夢のある言語ですよね。学習コストは高いかもしれませんが、その分マスターすればエンジニアとしてかなり成長出来ること間違いなしです。

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

佐藤

佐藤

文系大学出身、なんとか自力で頑張りプログラマー歴今年で8年目。
自力で頑張って勉強した経験を生かし、読者の皆様に分かりやすく親しみやすい記事を書けるよう日々邁進中です。
出来る言語はC#,VB,Java,Delphiなどなど、幅広く触っています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説