こんにちは。侍エンジニアブログ編集部の中川です。
最近、少しづつ人気が高まっているプログラミング言語「Scala」ですが、
Scalaにはどんな特徴があるんだろう?
といった事が気になる方も多いのではないでしょうか。比較的新しいプログラミング言語なので、あまり詳しくない方も多いですよね。
そこでこの記事では、
- Scalaでできること
- Scalaの特徴
- Scalaの活用事例
などを分かりやすく解説していきます。
Scalaとは
Scalaは2001年にスイス連邦工科大学のマーティン・オーダスキー教授が開発した比較的新しいプログラミング言語です。
Javaととても関係の深い言語で、後述する性質によってJavaのライブラリをほぼ全て使用することができます。そのため、Javaの後継言語としていま注目されている言語のひとつといえます。
Scalaの基本的な内容についてはこちらにまとめてあります。ぜひご覧ください。
Scalaの特徴
2つの性質を持っている
最初に少し述べましたが、Scalaはオブジェクト指向言語と関数型言語、2つの特性があるハイブリッドな言語です。
簡潔にいうと、
- オブジェクト指向:モノを組み立てるように表現して、コンピュータに動作をさせる
- 関数型言語:関数のイメージでデータに何かしらの処理をして答えを取得するように動作する
という特徴があり、Scalaは両方の特性を持っているため、それぞれのメリットを活かすことができるんです。
オブジェクト指向について詳しく知りたい方は、以下の記事をご覧ください。
JVMで動作できる
ScalaはJVM(Java Virtual Machine )と呼ばれるJavaを動かすためのシステム上で動作することができます。
JVMで動作することによって、Javaのライブラリをほぼ全て使用することができるんです。そのため、Javaで開発できるものは何でもScalaで開発することができます。
JVMについて詳しく知りたい方は以下の記事をご覧ください。
Scalaでできること
Scalaは基本的にJavaの上位互換といえるため、ほとんど全ての開発を行うことができます。
ですので、ここではScalaで一般的に開発を行っている、
- Webサービス開発
- スマホアプリ開発
- 業務システム開発
この3種類に絞って解説していきます。
Webサービス開発
WEBサービス開発によく使用される言語はJavaが多かったですが、最近ではScalaで開発されたWebサービスも増えています。
特にWEBサービスは大規模なものほど、スピードや堅牢性が求められます。Javaの上位互換といえるScalaは実行スピードが早く堅牢性が高いので、大規模なWEBサービス開発に向いているといえます。
Scalaで作られた有名なWEBサービスには
- Linkdin
などがあります。
どちらもシェア率の高いSNSで、スピードが求められます。実行速度と堅牢性が高いScalaはこういったSNSサービスなどと相性がいい言語ですね。
スマホアプリ開発
スマートフォンのAndroidアプリは、ほとんどがJavaで作られていますが、同様のアプリをScalaでも開発することができます。
最近でいえば、
- Line
- SmartNews
といった有名アプリにもScalaが用いられていますよ。まだまだAndroidアプリはJavaが主流となっていますが、これからの躍進に期待ですね。
業務システム開発
「業務システム開発」とは、企業の業務効率化を図るシステムや、銀行など金融機関の金銭面を管理するシステムなど、業務で使用されるシステムを指します。
企業は堅牢性や保守を重視して、確実に稼働を続けるシステムを採用するためします。そのため、安定性と実行速度が強みのScalaは多くの企業で採用されています。
実際に、
- ドワンゴ
- ビズリーチ
- サイバーエージェント
などの大企業もScalaを採用していますよ。
Scalaの需要
Scalaは多様性が高く、とても人気のある言語です。
毎年、検索エンジン「スタンバイ」が公表しているプログラミング言語ランキングによると、
2018年のランキングで「Scala」は2位にランクインしています。年収は最高値で1,300万円・平均で600万円ととても高いことが分かりますね。また、求人数も約1,500件と比較的新しい言語の中ではかなり豊富です。
Javaの後継言語ということで需要が高いですが、新しい言語なためか扱えるエンジニアがまだ少ないので、好条件での転職を狙うことができるでしょう。
Scalaはこんな人におすすめ
- オブジェクト指向と関数型プログラミングを理解できている
- Javaを扱うことができる
- エンジニアとしてステップアップしたい
言い方を変えれば、オブジェクト指向や関数型プログラミングを理解出来ていない方にはScalaはおすすめとは言えません。
ほとんどJavaの上位互換であるので、扱うことができればほぼ全ての開発を行うことができます。しかし初学者にとって学習コストの掛かる難しい言語です。
未経験者の方は、はじめにJavaの学習から始めることをおすすめします。
初学者がScalaを学ぶなら…
先程もお伝えしたとおり、Scalaは学習コストの高い言語なので、未経験者がはじめて学ぶ言語として適しているとは言えません。
Scalaの学習にはオブジェクト指向や関数型プログラミングを理解出来ていることが大前提であり、これらの仕組みを理解するのはとても難しいのです。
しかし、
と聞かれると、そういう訳ではありません。
Javaに熟練した指導者がいれば、初学者であってもScalaを習得することはできるでしょう。あなたの周りに、Javaに精通した方がいらっしゃるのであれば、ぜひ教えてもらいましょう。
あなたの周りに、そういった環境がないのであれば「プログラミングスクール」をオススメします。スクールを受講することで、環境を整えて効率的に学習を進めることができますよ。
弊社「侍エンジニア」では、あなたの目的にあわせて最適な講師をアサインし、フルオーダーメイドでカリキュラムを作成いたします。そのため、Scala習得に必要なスキルだけを最短距離で学ぶことが可能です。
しかし、いきなりプログラミングスクールに通うことは不安ですよね。
そんな時は、弊社の無料カウンセリングでサービス内容や学習に対する不安などをご相談ください。専属コンサルタントがあなたの質問に包み隠さずお答えいたします。
下記カレンダーから1分程でご予約いただけるので、お気軽にご利用ください。(オンラインでも受講いただけます。)
お急ぎの方はこちらからお問い合わせください。
読み込みに失敗しました。
大変お手数ですが、本ページを再度読み込んでください。
再度読み込んでも、読み込み失敗が起こる場合は
こちらからお問い合わせください。
カウンセリングはオンラインにて実施しております。
※予約完了後に、カウンセリングのためのURLやIDなどをメールにてご案内します
1.ご希望の日時を選択してください
2.必須事項を入力してください
ご予約ありがとうございます!
予約が完了しました。ご予約情報とご参加前の準備をご確認ください。
【ご予約情報】○月○日(△) ○○:○○〜
カウンセリング参加に向けてのご準備
※記入いただいたメールアドレスに確認用メールをお送りしておりますのでご確認ください。
※オンラインカウンセリングはGoogle Meetにて実施します。URLが発行したら別途ご案内いたします。
※メールが届かない場合は、SAMURAI ENGINEERサポート(support@sejuku.net)までご連絡ください。
まとめ
Scalaは学習コストが高い以外に目立ったデメリットのないとても優秀な言語です。習得することができれば、あらゆる開発現場で活躍できるエンジニアになれるでしょう。
この記事からScalaについて興味を持っていただけたら幸いです。