Scalaってどんな言語なの?
Scalaが使えると年収上がるって本当?
Scalaは年収が高いプログラミング言語ランキングで上位に入った、将来性が高いプログラミング言語です。他のプログラミング言語と比べて高単価の案件が多く、また有名な企業でもScalaを採用することが増えてきており注目を集めています。
年収が高いScalaエンジニアに興味を持った他言語のエンジニアや、未経験者の方も多いのではないでしょうか?
この記事では、Scalaとはどんな言語なのか、またフリーランスScalaプログラマの需要や年収といった現状、予測される将来性などを説明していきます。
Scalaを学ぶべきか悩んでいる人やフリーランスScalaエンジニアに興味を持っている人はぜひ参考にしてみてください。
Scalaのフリーランスエンジニア状況
Scalaを使った案件には大規模な開発が多く、また最新技術を使ったシステムが多いため高いスキルが求められる傾向があります。
しかしScalaを書けるエンジニアは少なく、Scalaで十分なスキルや経験を持つ人はさらに少ないため、実務経験1年程度でもフリーランスとして高単価かつ高待遇な案件を受注できる可能性はあります。
Scalaフリーランス案件数
Scalaのフリーランス向け求人案件は、公開案件が多いエージェントで100件ほどと、他の言語と比べるとあまり多くはありません。しかし需要に対して、Scalaを使えるエンジニアが不足しているため、高単価な案件が多いのが現状です。
ただし未経験者がフリーランスとして参加できる案件はほぼないといっても過言ではなく、フリーランスのScalaエンジニアになりたい場合はまずScalaまたはJavaでの実務経験を積む必要があります。
単価や年収は実務経験年数によって左右されますが、少なくとも1年の実務経験があれば案件受注できるほどには、需要に対して供給が足りない状態です。
そのため実務年数1年程度であったり、1度でもScalaを使ったプロジェクトに参加していたり、あるいはScalaでなはなくJavaの開発経験があればOKとする案件も少なくありません。
Scalaフリーランスの年収
Scalaは、「プログラミング言語別年収ランキング2018」(求人検索エンジン「スタンバイ」調べ)で2位を獲得しました。調べによると年収中央値は600万円で、最大提示年収は1300万円でした。
またScalaエンジニアの求人案件の月額相場を見ても、Scalaは他のプログラミング言語と比べて単価が高く、最低単価が約35万円、平均単価が約94万円となっています。
ただし年収や月額相場は平均であり、実務年数によって大きく左右されます。基本的に実務経験が長いほど単価相場は高く、実務経験1年未満の月額相場は30万円前後であるのに対して、実務経験5年以上のエンジニアの相場は70万円以上です。
世界的にも国内的にも大規模開発においてScalaが採用されてきているのに対し、Scalaの開発経験のあるエンジニアや十分にScalaを使えるエンジニアが少ないのが現状です。
つまり需要に対して供給が少ないため、Scalaの実務経験や、Scalaと互換性の高いJavaの実務経験があると年収アップに繋がると考えて良いでしょう。
Scalaフリーランスの将来性
Scalaで開発された代表例としては、TwitterやLinkdinが挙げられます。TwitterはかつてRubyを使用していましたが、2011年くらいからScalaに切り替えられました。
国内で有名なものではChatWorkやSmartNewsがあります。またサイバーエージェントやドワンゴ、はてななど、ベンチャー企業や比較的若いIT企業を中心に採用されています。
国内の現場ではまだまだScalaはメジャーなプログラミング言語ではありませんが、フリーランス向け求人案件サイトを見ると、ScalaまたはPlayなどのScalaフレームワークを使用した開発案件は増えてきています。
またフレームワークなどによりJavaでも記述可能な案件もあり、Scalaの開発経験がないJavaエンジニアにも手が出しやすいため、Javaとの互換性や開発効率などを考えると、今後より多くの企業で採用される可能性が高いです。
汎用性が高く、高度な技術や複雑な処理が必要なシステム開発にも対応できるため、将来性は高いと言えるでしょう。
Scalaはフリーランスエンジニア向きの言語なのか?
フリーランスに憧れる人は、在宅で仕事することを求めていることが多い傾向にあります。しかしフリーランスScala案件の多くは常駐案件であり、在宅案件はほとんどありません。そのため、在宅案件を受注してフリーランスエンジニアになりたい場合は、Scalaは向きません。
またScalaは未経験者には難しい言語であり、プログラミング言語はトレンドの移り変わりも激しいことも合わせて、これからフリーランスを目指そうとする人にはおすすめできません。
しかしScalaの実務経験や、Scalaとの互換性が高いJava開発経験がある場合は、使える人が少ない今こそ、ScalaやJava経験者がフリーランスとして年収アップを見込めます。
Scalaの特徴
Scalaは2003年にMartin Odersky氏によって開発された、比較的新しい言語です。Odersky氏はJavaの開発経験から、Javaエンジニアが直面する問題やフラストレーションを意識しており、Javaの構文を根本から変える必要があると考えていたそうです。
そのためScalaはJavaと高い親和性がありつつも、非常に簡潔かつ読みやすいコードを書くことができ、またJavaで同じ機能を実装した時と比べて書くコードの量は半分から3分の1ほどにまで減らすことができます。
オブジェクト指向と関数型プログラミングの両方の性質を持っているのが特徴で、効率的にコードを書くことが可能です。またScalaはJavaの仮想マシン上で動作するため、Javaのライブラリや既存のアプリケーションをほぼ完全にそのまま使うことができます。
開発効率や生産性、信頼性の向上などの利点があるため、Javaを採用している多くの企業で、Scalaが採用され始めています。
Scalaで開発できるもの
一言で表すと、Javaでできることは、全てはScalaでもできます。Javaの性質を引き継いでおり、企業の業務システムからWebアプリケーション、ゲーム開発まで幅広い分野で活躍することが可能です。
そのため今までJavaで開発されていたような業務システムや、規模の大きいSNS、ソーシャルゲームの開発などに採用されています。
ただし開発できることと優位性があることは別で、例えばAIなどの機械学習ではPythonの方が、iOSアプリならSwiftでの開発が効率的です。
基本的にシンプルな機能のシステム開発には向いておらず、大規模開発や高度かつ最新の技術を用いたシステムの開発に採用されることが多いです。
求人案件を見ると、大企業の金融システムや、ビックデータを利用するシステム、ソーシャルゲームやWebアプリケーションの開発などがあり、サーバーサイドやバックエンド開発が多くなっています。
未経験者からの習得難易度
Javaと互換性がありJavaプログラマにとっては習得にあまり時間がかからないと言われるScalaですが、未経験者には少し難易度が高いと考えられています。
Scalaの習得難易度が高いと言われる理由は、
- Javaの知識が必要
- 比較的新しい言語であり、日本語の書籍や資料が少ない
- オブジェクト指向と関数型が共存しているため、概念の理解が難しい
などが挙げられます。
ScalaはJavaの後継ともいえる言語であり、Javaプログラマを対象にした講座や書籍が多いのが現状です。
そもそもJavaもプログラミング言語の中では比較的習得難易度が高い言語のため、Javaの知識を前提としたScalaも学習コストが高く難易度が高い言語になっています。
逆に言えばJavaエンジニアであれば、最初は違和感を感じるかもしれませんが、比較的楽に習得することができるでしょう。
常駐エンジニアとフリーランスエンジニア年収の違い
一般的に、どの言語のエンジニアでも、常駐エンジニアと在宅エンジニアでは、常駐エンジニアの方が高単価の傾向があります。
しかしScala案件は個人ではなくチームでの開発や、作業工程などパーツごとにいくつもの分野から大勢の人が関わる大規模開発が多く、フリーランス向けの求人案件でも常駐型が大半であるのが現状です。
よってScalaを使用した在宅案件はほぼ無く、フリーランスのScalaエンジニアの年収・月額単価として算出されているもののほとんどは常駐エンジニアのものとなっています。
ちなみにその案件のほとんどは東京都に集中しており、フリーランスエンジニアは東京都付近に求人が多く仕事しやすい地域となっています。
【結論】Scalaは学習コストが高いが、将来性が見込めるJavaの後継言語
Scalaの特徴と、フリーランスScalaプログラマの需要や年収について解説しました。ScalaはJavaと互換性があり、書くコードは半分程度で済む効率的で生産性の高い言語です。
またScalaは学習コストが高く比較的習得難易度の高いプログラミング言語ですが、その分使えるエンジニアも少なく、現在のところ実務経験のあるエンジニアは引く手あまたです。
プログラミング言語は流行り廃りが激しいため、今Scalaを使えることが年収アップに繋がっても、それが長く続くとは限りません。しかしJavaは長く現在でも多くの現場で使われており、今後もまだしばらくは使われることを考えると、Javaを土台としてからScalaを学ぶのも無駄ではないでしょう。
特にフリーランスエンジニアは、1つの言語にこだわらずいくつものプログラミング言語を使える方が年収アップや仕事の選択肢などいろいろな意味で有利です。Javaを使った経験がある人はScalaを、Java未経験ならまずはJavaを学習してみてはいかがでしょうか。