ここ最近、Javaの後継として注目を浴びているScala。関数型言語とオブジェクト指向の機能をスムーズに統合した、近代的な関数型プログラミング言語です。注目されている理由のひとつは、文法の拡張、マクロ的なメタプログラミング機能を必要とせず、新しいステートメント定義を行えるScalaそのものが持つエレガンスといえるでしょう。加えて時代背景も追い風になっており、その将来性についてもスポットがあたっています。
世界規模で広がるScalaの将来性
アメリカ発祥のScalaですが、その人気はいまや世界規模で広がっています。いわばScalaブームともいうべきこの状況をもたらした時代背景はどのようなものなのでしょうか。
Scalaは現在、開発現場でもっともホットな言語のひとつです。アメリカのTwitter社、LinkedIn社といったそうそうたるIT企業のほか、イギリスのガーディアンのような老舗メディアでも自社サービス開発に採用しています。
2012年にはScalaを推進するタイプセーフ社が、約11億円の資金調達に成功。フレームワークの拡充を図ったことによって、ますますスムーズな開発を実現できるようになりました。これによって、Webアプリケーションや分散処理システムの開発現場でも使用されるようになっているのです。
JavaやRubyにはない特徴
これまでの注目言語といえば、JavaやRubyでした。Scalaにそれらに取って代わろうという勢いを感じるのは理由があります。たとえば、Scalaは関数型プログラミング言語ならではの長所があり、これらはそうではないJavaやRubyにはみられないものなのです。
スピード
コードを短くできるScalaでの開発は迅速です。Javaと比較してコード行数は約5分の1、実装工程における生産性は約10倍ともいわれています。
高品質
コンパイルによるチェック機能が豊富で、バグを抑えやすくなっています。バグフィックスに手間取ることもありません。
拡張性
Scalaでつくられたアプリケーションは性能を向上させやすくなっています。複数CPUを使ったマルチコア時代のアプリケーションにも向いています。
関数型プログラミング言語としてのScala
以上のようなメリットはじつは、Scala以外の関数型プログラミング言語であるHaskell、Erlang、F#などにも共通するものであり、いずれも先進的な企業で採用が進んでいます。たとえば楽天ではErlangを採用して、容量が爆発的にふくらんでいる自社サービスストレージに、分散型ストレージを実装するソフトを開発することに成功しました。
関数型プログラミング言語は、1950年代に誕生した非常に長い歴史を持つものです。関数型プログラミング言語は高度な機能を備えてはいますが、どうしても大容量のメモリーを必要とします。これまで関数型プログラミング言語を実用化するには、非常に高額なマシンが必要でした。そのため、手続き型言語であるC言語などの隆盛が続いたのです。
しかし安いメモリーを大量に搭載できるようになったことで、関数型プログラミング言語のメリットを手軽に発揮できるようになりました。時代がようやく関数型プログラミング言語に追いついたともいえるでしょう。もちろん今後とも、関数型プログラミングの活躍の場は増えることが予測されています。Scalaで経験を積んでおくというのは、将来を見据えて大変有意義なことでもあるのです。
Scalaフリーランスエンジニアの需要
現代において大変優れた特色を持つScalaは、IT先進国アメリカだけではなく世界中に広がりつつあります。中国でも勢いを増しつつあり、Scala技術者を大量採用している企業もみられます。一方、日本でのScalaエンジニアの採用動向はどのようになっているのでしょうか。
日本でも流行の兆し
ここ最近、日本でもScalaを開発言語に採用する企業が急増しています。検索サービスを提供する某企業もそのひとつであり、「少数精鋭の開発メンバーによって、これまでにない短期間のうちに無理なくサービスを開始できた」と好評のようです。
サービス開始までの期間が短いといっても、それは無理な進行によるものではなく、あくまでもScalaの特性によって実現しています。スピーディーな開発をスムーズに進められるため、チームの人数も少なくてすみます。つまり人件費を節約できるという点でも、Scalaは多くの企業から注目を集めているのです。
一般企業でも人気上昇中
Scalaの人気はIT企業やメディア系にとどまりません。一般企業が従来の商品およびサービスをバージョンアップするのはもちろんのこと、新規事業を開発するのにも最適な言語です。新規サービスではいち早くリリースし、ニーズをみながら機能拡張を繰り返すアジャイル開発が非常に重要。そのなかで関数型プログラミング言語であるScalaは、アジャイル開発にも向いているといわれているのです。
高まる一方のScalaエンジニアのニーズ
以上のような流れのなかで、Scalaエンジニアのニーズは増す一方です。とある調査によると、ITエンジニアでもっとも給与が高いのはScalaエンジニアでした。この傾向は今後ますます強くなっていくと予想されています。
ただしScalaの需要が急増しているにも関わらず、まだまだエキスパートは少ないのが実情です。いまからでも経験をしっかりと積んでいけば、引く手あまたになる可能性は大いにあります。
とくにScalaが採用されるのはだいたい新サービス開発部門であり、フリーランスのエンジニアに依頼するケースも多くなっています。フリーランスエンジニアとして高額単価案件に出会うチャンスは、同言語であれば十分に見込めることでしょう。
Scalaフリーランスエンジニアの案件傾向
成長著しいScala市場では、求人数も増加傾向です。実際のフリーランスエンジニア向けのScala案件には、どのようなものがあるかみてみましょう。
ゲーム開発
まず取り上げられるのが、スマホ向けソーシャルアプリのサーバサイドでの開発案件です。小規模チームで動き、開発スパンが短いことが特徴のひとつ。とにかく経験を積みたいと考えるScalaエンジニアにおすすめです。単価はスキル見合いになっていることが多いようですが、おおむね高レベルで推移しています。
アドテク関連
いま話題のアドテク関連でも、Scalaフリーランスエンジニアは強く求められています。さまざまな広告系ツールを開発できる案件もあり、アドテクに関する知識を深めてエキスパートになりたいと考えているひとにおすすめです。またスクラム開発方式でアジャイル開発を行っているケースもあります。単価は70万円以上も可能など、およそ高額です。大手広告代理店など、一流企業に常駐する案件も少なくありません。
ビッグデータ関連
多くのビジネスチャンスが眠っているといわれているビッグデータ関連でも、Scalaフリーランスエンジニアの需要が急上昇中です。おもには大規模データの加工や変数作成処理などを担当します。データサイエンティストにエンジニア視点からのアドバイスなども行います。単価は80万円など、最高額クラスの案件も珍しくありません。
検索エンジン開発
Scalaは検索エンジン開発にも最適の言語です。Scalaを使用した基幹エンジン部分のチューニング、新規データの取り込み石器、スケーラビリティ確保のための分散処理開発などを行います。
Webアプリ開発
Scalaを使ったWebアプリ開発に積極的な企業は、新技術への移行に意欲的という傾向があります。そのような企業はフリーランス、正社員の区別なく意見がとおりやすい風通しのよさもあるために、新しいことにチャレンジしたい気持ちが強いフリーランスエンジニアにおすすめです。
フリーランスが高単価案件を受注するには
前項のとおり、さまざまな活躍の場があるScalaですが、フリーランスエンジニアが高額単価案件を受注するためには、どのような経験やスキルをあわせ持っていればよいのでしょうか。
ゲーム開発の経験
ゲーム開発案件では、コンシューマーゲームでもソーシャルゲームでも何らかのゲーム開発経験が必須という案件もあります。スマートフォン用のアプリケーション開発はトレンドですので、経験があれば高額単価も十分に狙えるでしょう。
サーバエンジニア
ゲーム開発やアドテク関連求人のなかでも、高額単価を期待できるのがサーバサイドでの開発です。設計からテストまでを担当するサーバエンジニアのスキルが必要とされることもあり、とくにLAMP、RoRなどでの開発経験、CMS使用経験、DBの知識などがあると高額案件につながりやすいです。
Javaの開発経験
新サービス開発が多いScala案件ですが、従来のサービスをJavaからScalaに移行するものも少なくありません。ScalaだけではなくJavaのスキルや開発経験があれば、それも長所となって高額単価案件が望めます。
ビッグデータ関連業務の経験
ビッグデータを扱う案件では、大規模データの加工処理、Rなどの統計解析言語、Hadoopに関するスキルなどが歓迎されます。同案件では大人数チームになることも多く、経験者は優遇されやすいです。またコミュニケーション能力に優れており、大人数のなかでも自主的に作業を進めることができる能力も歓迎されます。
チーム開発経験
Scala案件は大人数であれ少人数であれ、チーム開発であることがほとんどです。何らかのチーム開発の経験が必須とされることも少なくありません。プロジェクトリーダーをはじめとした管理の経験があれば、好待遇になる可能性は高いです。
独学でできる!Scalaの勉強方法
これからもニーズは上昇すると予想されるScalaですが、どのように勉強すればよいのでしょうか。すでに習得している人はさらなるスキルアップに、そしてまったくの初心者でもスムーズにスキルを身につけられる方法をご紹介します。
公式サイトを活用する
もし英語が苦手でなければ、Scala公式サイトを利用するのがひとつの方法です。Scala処理系、APIリファレンス、チュートリアルなど上級者でも役立つた情報が豊富に掲載されています。
■公式サイト
###標準ライブラリ 標準ライブラリだけでは処理できないこともありますが、悩んだときには一度は標準ライブラリを参照してみるのもよいでしょう。ただしこちらも英語サイトです。
■標準ライブラリ
http://www.scala-lang.org/api/current/index.html
標準的テスティングフレームワーク
Scalaの標準的テスティングフレームワークの公式サイトです。APIリファレンス、チュートリアル、ライブラリのjarファイルなどをダウンロード可能です。また上記と同様に英語サイトになります。
■標準的テスティングフレームワーク
日本Scalaユーザーズグループ
英語サイトばかりの紹介でしたが、Scala関連の日本語サイトもいくつかあります。たとえば日本Scalaユーザーズグループでは、翻訳記事、国内イベント情報などが掲載されているので、ナビゲーターとしても役立ちます。
■日本Scalaユーザーズグループ
刺激を求める技術者に捧げるScala講座
日経コンピュータが提供するITproのページです。Scalaの魅力から初歩的な技術まで、計24回にもわたる連載で解説しています。
■刺激を求める技術者に捧げるScala講座
http://itpro.nikkeibp.co.jp/article/COLUMN/20080613/308019/
Scala勉強会@東北
ほぼ毎週木曜日、skypeやustreamを使用して実施されていたオンライン勉強会のサイトです。東日本大震災の影響で2016年3月時点では休止していますが、これまでの勉強会の記録が残されており、一読するだけでも勉強になります。
■Scala勉強会@東北
http://sites.google.com/site/scalatohoku/
Scala勉強会in渋谷
かつては渋谷で、現在では本郷で隔週水曜日に開催されている勉強会です。初心者でも上級者でも参加できます。チャットやメーリングリストなどもあります。
■ Scala勉強会in渋谷
Scalaプログラミング入門
Scala開発者マーティン・オダースキーが推薦する書の翻訳書籍です。これからScalaをはじめてみようというひとや、ちょっと触ってみたいひとにおすすめできます。平易でわかりやすくなっていますがScala2.7までの内容という点には注意が必要です。
■ Scalaプログラミング入門
Scalaプログラミング入門 - デイビッド・ポラック
Scala逆引きレシピ
Scalaの基本構文、標準ライブラリ、ビルトツール、ユニットテスト、データベース、Webプログラミングなど、幅広いジャンルを網羅した書籍です。筆者の現場での経験に基づいた内容なので、非常に実践的。初心者でも読めないことはありませんが、どちらかといえば経験がある中級以上向けです。書名のとおり、ある場面にぶつかったときに、どのようなコードを書けば正解なのか逆引きできるので大変役立ちます。
■Scala逆引きレシピ
Scala逆引きレシピ - 竹添直樹
Scalaは公式サイトをはじめとして、オンラインコミュニティ、リアルの勉強会、書籍などさまざまな方法で学習できます。オブジェクト指向言語に関数言語型言語のメリットをバランスよくブレンドした言語であり、関数型言語畑の出身者はもちろんのこと、オブジェクト指向言語の経験しかないひとでも学びやすいプログラミング言語のひとつだといえるでしょう。
Javaエンジニアのなかには、Javaに似たところも多いにもかかわらず、Javaにはない洗練されたコードに感動したというひともいるようです。今後はScalaフリーランスエンジニアの高額単価案件がますます増加するとも予想されているので、いまのうちに知識を深めてみてはいかがでしょうか。
正社員の場合とフリーランスの場合でどれくらい違うのか。
会社勤めでフリーを考えていらっしゃる方は、正社員の場合と、フリーになった場合の収入の差が気になりますよね。
人材業界、採用、HRに関するニュースメディアのHRogのプログラミング言語別給与ランキング【2015年版】によると、なんとScalaが第一位です。求人件数は110と、他の言語に比べて少ないのですが、平均年棒は401万5,909円と唯一400万円台を超えています。この情報からも、かなりニーズが高まっているのにエンジニアの数が少ない注目の言語となっています。