プログラミングを勉強しようと検索したら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の特徴
良いところ取りのハイブリット言語
Scalaは、オブジェクト指向+関数型の機能も使える、ハイブリットな言語です!
オブジェクト指向についてはご存知の方も多いかもしれません。クラスなどの部品を作って、それを組み合わせて作るプログラミングです。
詳しく知りたいと思った方は、ぜひ次の記事をご覧ください。
関数型プログラミングは、関数を組み上げてつくるプログラミングです。代表的な関数型言語としては「Haskell」などがあります。
この関数型の考えとオブジェクト指向の考えを取った、いわば良いトコ取りな言語ということですね。
Javaとの互換性が非常に高い! 便利な機能も簡単に使えちゃう
ScalaはJavaとの互換性が非常に高いと言われています。その理由は、
また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の経験が活きる言語です。
と思った方は、次の記事で詳しく解説していますのでぜひご覧ください。
それならJavaだけ勉強すればいいんじゃない? なんて思われるかもしれません。
ですが、先ほども紹介したようにScalaはとても効率よく開発することができ、処理も早い言語です。また、Javaでは不足していた部分もScalaでは補完されていたりします。
Javaの便利な機能を使えて、今までにない速度で開発できる言語としてScalaは、Javaの後継になり得ると注目されています。片方だけではなく、どちらの言語も知っていることが、Scalaをマスターするための近道になるかもしれませんね。
以上で、Scalaの基礎について紹介しました。次は、そのScalaでなにを作れるのか簡単に紹介してきます。
Scalaで作れるもの
実は、Scalaで作られているものは皆さんの身近にあるんです。海外企業であれば、SNSのTwitterの一部はScalaで作られていますし、PayPalなどにも使用されています。
日本企業でも使用している企業がどんどん増えていて、「ニコニコ動画」で有名なドワンゴやChatWork、フリューなどのゲーム業界などでも使用されています。
Scalaを使用している企業例
- 株式会社ドワンゴ
- 株式会社はてな
- SmartNews
- ChatWork株式会社
- 株式会社ビズリーチ
- グリー株式会社
- フリュー株式会社
- 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エンジニアが活躍できる業界は、
このようにScalaは作れるものが多いため、幅広い業界で活躍できる可能性があります。
Scalaが使えるとできる仕事
Scalaが使えるとどのような仕事があるのか具体的にみていくために、レバテックキャリアで「Scala」と入力して検索して調査しました。
現在(2020/5)では152件の求人がヒットしました。気になる内容を何個かあげてみます。
サーバーサイドの設計及び開発業務ができれば、年収1,000万円を狙うことが可能です。
そして、機械学習に関する仕事にも携わることも可能なんです。
Scalaを習得していれば、AIなど最先端の技術を使った仕事にも携わることができます。エンジニアの数自体も少ないので単価も非常に高くなっています。
またITコンサルタントの仕事も狙えます。
このようにScalaを習得することで高単価の求人を狙うことが可能になるため、収入アップが期待できますね。
気になる年収
先程の求人を見て頂ければなんとなく予想がつくと思いますが、Scalaエンジニアの年収の最大額は1300万という調査結果(2018年)もあり、平均でも年収600万円との調査結果が出ています。安定している収入を得られると言われるJavaエンジニアの年収中央値は500万円なので、比較的はっきりと年収が高くなっています。
今後もますます求人が増えると予測されるので、来年にはGo言語を超えて1位になるかもしれませんね。エンジニアとしてスキルアップしていきたいと考えている方には、メリットの大きい言語だといえます。
基本的なScalaの入門
この章では、Scalaを勉強してみたい! と思った方へ、簡単な準備の方法とおすすめの書籍やサイトを紹介していきます。
開発環境の作り方
まずは動かせる環境を作っていきましょう。最初にOracleのサイトからJDKをダウンロードします。
⇒参考:Oracle https://www.oracle.com/technetwork/java/javase/downloads/index.html
もし、すでにJava8JDKがインストールされていればスキップして次に行きます。次に、公式サイトからScalaとIDEをダウンロードしましょう。
こから「Download IntelliJ」を選び、その先で「Download」を選びます。
無償版の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を学ぶための学習ステップは次の通りです。
Scalaの開発環境構築については、解説済みのため、次は参考書籍や学習サイトを紹介していきます。
現役Scalaエンジニアがおすすめする参考書籍
Scalaに関する書籍で日本語で書かれているものも増えてきましたが、初学者であればこの一冊をおすすめします。
こちらはプログラミング未経験者でもScalaを勉強できるように、非常に易しく説明・解説を行ってくれている書籍です。すでに他の言語が使える方にとっては、少し簡単すぎるかもしれません。
基礎的な学習を終えた方には次の書籍をおすすめします。ほかの言語も扱えるけど、いきなり難しい本を読むのは……とお考えの方にもおすすめです。
「Javaの開発経験がある」「他の言語の開発経験がある」「基礎的な学習は終了している」そんな方には次の一冊をおすすめします。実践的な内容で、さらにスキルアップするために適した書籍です。
必読書といっても過言ではありません。通称「コップ本」と呼ばれています。
また、Scalaおすすめの書籍を紹介した記事があります。もっといろいろ知りたいと思った方はぜひこちらもご覧ください。
Scalaが学べるチュートリアルサイト
Scala公式サイトのチュートリアルでも学ぶことができます。学べる内容は下記の通りです。
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入門では動画レッスンが36レッスン公開されているため、一度利用して見るといいでしょう。
⇒参考:ドットインストール https://dotinstall.com/lessons/basic_scala
また、有料ですがUdemyやN予備校でもScalaのオンライン講座が開催されています。Udemyでは、初級者向けから上級者向けの講座が開催されているため、興味がある講座がないか探してみてくださいね。
また、N予備校ではプログラミング完全未経験者向けのコースや、Scalaを学べる大規模開発アプリコースなど複数のコースがあります。
⇒参考:Udemy https://www.udemy.com/
⇒参考:N予備校 https://www.nnn.ed.nico/pages/programming/
チェックしておきたいScalaのスーパーエンジニア
エンジニアの方々のブログで、Scalaに関する最新情報や技術についてウォッチすることもおすすめします!
@xuwei_kさん
実際にお仕事でScalaを使われていたエンジニアの方です。ブログでも精力的に活動されています。
書いたhttps://t.co/tkn0jnYelZ
“sbtで指定されたプロジェクトのtaskのみを並列に実行する”やりたいこととしては、そんな大したことしてないと思うのだけど、探しても見つからなかったので
— Kenji Yoshida (@xuwei_k) 2019年2月7日
@j5ik2oさん
国内Scalaエンジニアの方です。イベントなどに参加され、技術的な内容を多く発表しています。
明日の Scala関西Summit2018 で話す資料です。
Scalaでのドメインモデリングのやりかた https://t.co/cHUeAVaspz
— かとじゅん (@j5ik2o) 2018年11月9日
実は他にもたくさんのエンジニアの方がいらっしゃいます!
ウォッチすべきエンジニアをまとめているページもありますので、興味がある方はこちらもご覧ください。
⇒参考:ウォッチすべきScalaエンジニア(海外/日本人)のTwitterアカウント https://gist.github.com/kmizu/1257395
まとめ
いま注目のプログラミング言語「Scala」についてご紹介しました。これからの将来性も考えると夢のある言語ですよね。
学習コストは高いかもしれませんが、その分マスターすればエンジニアとしてかなり成長出来ること間違いなしです。
この記事をよんで興味が湧いた方や、さらにやる気が湧いた方はぜひ書籍やサイトを参考に実践して学習していきましょう! それでは、また次の解説で!