1分で分かる!Scalaとは?
どうしようかなぁ…。困ったなぁ…。
ことりん君、今日も相変わらず困っているみたいだね?どうしたの?
あ、ジャバ―ド先生!さすがボクのことは何でもお見通しだね…。実はバナナ物流さんからあることで相談を受けているんだ。
どんな相談をうけているの?
バナナ物流さんって、業務で使用するアプリケーションをJavaで開発しているらしいんだ。
そういえば、たしかバナナ物流さんって前にTomcatの話をしていたよね?
そうそう!そのJavaの件なんだけど、バナナ物流の開発責任者の人がいうには、どうやらアプリケーション開発の生産性があんまり思わしくないみたいなんだ。
開発の生産性かぁ。確かに難しい問題だよね。
そう!ボクも何から改善すれば良いのか全くわからなくてさ。それ以前にもっと良い相談相手がいそうな気もするんだけど…。ジャバ―ド先生、何かいい案ない?
生産性といっても原因はプロジェクトでそれぞれ異なるから、本来はきちんと問題点を分析したほうがいいんだけどね。でも、実は先生も昔同じようなことで困った経験があるんだよ。
え、そうなの!?その時はどうしたの?
ちょっと待ってね。えっと~、確かその時は開発に使用するプログラミング言語をJavaからScala(スカラ)に変更したような気がするな。
Scala?はじめて聞いたけど、どんなプログラミング言語なの?良く分からないけど、Javaから別のプログラミング言語に変更するなんて、かなり大変な作業になるよね。
ことりん君、その点は心配無用だよ!ScalaはJavaの後継言語と言われてるほど、よく似ているんだ。もちろん、ただ似ているだけではなくて、Javaと高い互換性を持っているんだよ。そのおかげでJavaのライブラリをそのまま利用することもできるんだ。
そうなの??あ、そういえばKotlinもJavaと似ているって以前教えてもらったような…。
そうだね。Javaをベースに開発されたプログラミング言語というポジションとしては、KotlinもScalaも似たようなものといえるね。
なるほどなぁ。Javaの兄弟みたいなものってことだね。Scalaの良いところってほかにもあるの??
ScalaはJavaよりも、プログラミングを簡潔に書くことができるんだ。プログラミングの量は生産性に直結するからね。
Scalaの方が、やりたいことを少ない行数で実現できるってことだね!たしかにそれができるならバナナ物流さんの悩みも解決に近づくかもしれないね!とりあえずScalaっていうプログラミング言語があることをバナナ物流さんに説明してみるよ!
うん!気に入ってくれるといいね!
Scalaとは?Scalaの基礎知識
Scalaは2003年頃に公開された比較的新しいプログラミング言語の1つです。ドイツ出身のエンジニアであるマーティン・オーダスキーによって生み出されました。マーティン・オーダスキーは当時、Javaのあるプロジェクトに参加していましたが、その開発過程の中でJavaの限界を感じたそうです。その際もプログラミング言語を開発したそうですが、実用性が低く、日の目を見ることはありませんでした。そこで得た経験や失敗を活かして、改めてプログラミング言語として開発したのがScalaだといわれています。
Scalaを使うエンジニア
Scalaは基本的にサーバーサイドの開発時に使用されることが多いです。そのため、サーバーサイド(バックエンド)エンジニアが主に使用します。また、スマートフォンアプリなども開発できるため、ネイティブアプリエンジニア等が使用することもあります。
Scalaを使うエンジニアの特徴と在籍業界
Scalaは学習コストが高いと言われています。そのため、プログラミング言語としては難しい部類に入ります。かつて行われたある調査では、全てのプログラミング言語の中でScalaエンジニアの平均年収がトップということもありました。このような点を考えると、Scalaエンジニアとして活躍している人は、優秀な人が多いという特徴があるといえそうです。
なお、Scalaエンジニアが多く在籍する業界としては、SIer業界、Web業界などが挙げられます。
採用する時に知っておくとよいこと
Scalaは非常に優れたプログラミング言語ですが、業界からの人気はあまり高くありません。オランダのソフトウェア企業であるTIOBE Softwareが発表したプログラミング言語人気ランキングによれば、Scalaは35位となっています。また、米国電気電子学会が編集している雑誌であるIEEE Spectrumのプログラミング言語ランキングによれば、Scalaは21位となっています。
Scalaは数々の有名なサービスにも採用されているため、非常に優れたプログラミング言語であることを疑う余地はありません。ただ、前述したような学習コストの高さなどといった問題もあり、Scalaエンジニア自体が余り多くないのが現実のようです。
求人のポイント
求人を作成する時は、下記の内容を求人に入れるとよいです。
1システム(サービス)の詳細
※特にそのシステム(サービス)をなぜ作っているのかを熱量をもって記載する。
2開発環境
3現在のエンジニア組織の体制
4現行システムの課題と募集の背景
5求められる業務と期待値
6エンジニアとしてのスキルアップ支援制度の有無と詳細
7エンジニアチーム内での相互成長のための仕組み(勉強会やLT会など)の有無と詳細
8選考フロー
9待遇
10キャリアパス#豆知識
Scalaの豆知識
ここではScalaで開発された有名なサービスについてご紹介します。
Chatwork株式会社 Chatwork
Chatworkは、国産のビジネスチャットツールとして有名であり、30万社以上の企業が利用しています。このChatworkはScalaで開発されています。
株式会社ヌーラボ Backlog
プロジェクト管理ツールとして有名なBacklogは、もともとJavaで開発されていましたが、2019年にScalaへ完全移行したそうです。移行に至った背景には古いフレームワークのセキュリティに関する問題や、コードのメンテナンス性などがあったようです。
https://backlog.com/ja/blog/the-story-of-large-scale-replacement-with-play-framework-over-4-years/
株式会社はてな はてなブックマーク
株式会社はてなが運営しているソーシャルブックマークサービスであるはてなブックマークもScalaで開発されています。こちらももともとはPerlというプログラミング言語で開発されていましたが、メンテナンス性が落ちてきてしまい、Scalaへの移行を決断したそうです。
https://b.hatena.ne.jp/
## Scala関連のイベント
Scala関連のイベントとしては、ScalaMatsuriが有名です。このイベントはアジア最大級のScalaカンファレンスとうたっており、スポンサーにも有名IT企業が名を連ねています。