プログラミング言語Scalaに関する日本最大のカンファレンス「ScalaMatsuri 2020」が、2020年10月17~18日の2日間にわたって開催され、レバレジーズは大名スポンサーとして協賛しました。
2日間でたくさんの講演が行われ、18日にはレバテック開発部から竹下も登壇しました。竹下は基幹サービスのマイクロサービス化に従事する傍ら、採用関連業務も担当。一般社団法人Japan Scala Associationの理事も務めています。
ここでは、レバレジーズメディア企画部 大島の取材による、ノウハウ、最新動向、転職市場といった3つの観点でピックアップした講演レポートをお届けするとともに、ScalaMatsuri座長・麻植(おえ)氏のインタビューをまとめて紹介します。
- 1. 講演詳細①「Scala無双: フロントエンドもバックエンドも全てScalaでなぎ倒せ」
- 2. 講演詳細②「第1級の型レベルプログラミング」
- 3. 講演詳細③「Scalaの転職市場動向 ~Scala使うと年収上がるって本当?」
- 4. 座長・麻植(おえ)氏インタビュー
- 5. 大島から参加してみての感想
- Scala入門コラム
1. レポート①「Scala無双: フロントエンドもバックエンドも全てScalaでなぎ倒せ」
トレジャーデータ株式会社斉藤氏の「Scala無双: フロントエンドもバックエンドも全てScalaでなぎ倒せ」では、Scalaのみを用いてシステム構築する方法についてのお話を聴くことができました。
サーバー・クライアントを構築する際、フロントエンドとバックエンドはネットワーク経由でつなぐ必要があります。そのためにはRPC(Remote Procedure Call)の実装が不可欠になりますが、RPCを学ぶには高い学習コストが必要になります。今回の発表では、Scalaのみを用いてRPCを実装することで、RPCに多くの学習コストを割かずにフロントエンドとバックエンドをつなぐ方法を知ることができました。
前提として、フロントエンドの開発はScala.jsで行い、バックエンドの開発はScalaで行います。
Scalaファーストでフロントエンドとバックエンドをつなぐためのキーは「Airframe」というツールです。AirframeはOSSのフレームワークで、Scalaの特徴である「オブジェクト指向言語」と「関数型言語」を最大限活用できます。実際にトレジャーデータ社でもAirframeが用いられており、例えば、同社が提供するApache SparkをサポートするためのサービスはScalaとAirframeが採用されています。斉藤氏が所属しているチームで使用している、Prestoのクエリ監視ツールもScala.jsで開発されており、フロントエンドでもScalaがフル活用されていました。
私はScalaはバックエンドでよく用いられる印象があり、フロントエンドではあまり導入されているイメージがなかったので、斉藤氏の話を聴いてScalaがフロントエンドで活用される新たな可能性を感じました。
※2020年2月にScala.js 1.0.0がリリースされ、最初のバージョンから7年ぶりのバージョンアップが行われており、大幅に機能更新が行われました(現バージョンは1.3.0)。
最後に、斉藤氏は実際にAirframeにインターフェースする際のプログラミングの具体例を見せてくれました。このように実際にプログラムについて説明してもらえると、Scalaの特徴である関数型であり静的型付けオブジェクト指向でもある特性が、RPCへのインターフェースに適していることがよく分かります。
今回の講演で、Airframeを用いることでフロントエンドからバックエンドまでScala中心のアプリケーション開発が可能であることが分かりました。実際にトレジャーデータ社における具体的な活用事例を知ることで、今まで知らなかったScalaのフロントエンドでの可能性や、バックエンドでの高性能な機能を知ることができました。また、RPCのインターフェースはScalaの特性をフル活用して行うため、プログラムはシンプルであり、初学者も取り組みやすいかもしれません。フロントエンドからバックエンド、さらにはそのインターフェースまですべてを開発できるScalaに、今後も要注目です。
2. レポート②「第1級の型レベルプログラミング」
続いて、Georg Schmid氏とOlivier Blanvillain氏の「第1級の型レベルプログラミング」を聴講しました。両氏はScala発祥の地、スイス連邦工科大学 (EPFL) のエンジニアであり、最先端のScala開発事情について話してくれました。
2人の登壇はスイスからのオンライン講演であり言語も外国語でしたが、ScalaMatsuriが用意した同時通訳者の方々のおかげで、ほぼ違和感なく講演を聴くことができました。
現在のScalaのバージョンであるScala 2では、型レベルプログラミングの機能は実装されていますが、あまり使いやすくないと言われています。Scala 3はそういった状況を改善するべく開発され、今回の講演では具体的な改善内容の説明が行われました。Scala 3は2020年内にリリースを予定しており、その際に「マッチ型」という型レベルプログラミングを導入します。講演の前半は「マッチ型」の型レベルプログラミングについて、後半では「依存型」という、EPFLで鋭意研究中の型レベルプログラミングについて話を聴くことができました。
講演はZoomで行われたのですが、別でDiscordも用意され、視聴者は聴講に並行してDiscordでチャットを行うことができました。発表は非常に専門的な内容であり、理解に苦しむ場面があったので、他の視聴者がどういった反応をしているのか気になりチャットを覗いてみました。チャットでは「凄くマニアックで、まだ入ってない機能の話なので、ついてこれている人が少なそう」「これ理解できなくてもScala 3を使うには困らないので、皆さん安心してください」といった書き込みがあり、少しホッとしました。また「transparentはwhitebox macroみたいに型をより正確にするものです」といった追記の説明をしてくれる方もおり、内容の理解が進みました。
オフラインのカンファレンスでは講演中に話をすることは許されませんし、分からないことを他の参加者に質問することは一定のハードルを感じる方も多いでしょう。今回のScalaMatsuriでは視聴者がDiscordで補足をしてくれたり、講演内容のレベル感を説明してくれたりと、視聴者同士のコミュニケーションが活発に行われ、オンラインカンファレンスならではの魅力を知ることができました。
3. レポート③「Scalaの転職市場動向 ~Scala使うと年収上がるって本当?」(レバテック所属竹下の発表)
18日のアンカンファレンスDayは、レバテック株式会社のエンジニア、竹下が登壇しました。
タイトルは「Scalaの転職市場動向 ~Scala使うと年収上がるって本当?」といった、キャリアについて考えているエンジニアなら誰もが関心を持つものでした。
竹下は前職でScalaを用いた開発に携わっていたためScalaに詳しく、実体験が伴うお話を提供しました。
今回竹下が発表した資料は、レバテックが保有する正社員求人とフリーランス案件のデータをもとにまとめたものであり、その発表内容からScala転職市場の傾向を知ることができます。
まず、Scalaに関する求人はどういった分野の求人が多いか、という話から始まりました。竹下がScala求人・案件からキーワードを抽出、分析したところ、主にサーバーサイドの開発で用いられており、フロントエンドではあまり用いられていないことが分かりました。
次に、Scalaを用いる仕事に転職する際、どれくらいのScala経験が求められるのか、そして、給与が上がるのかについてです。レバテックが扱う正社員求人ではなんと、未経験可が100%、フリーランス案件では未経験可が約4分の3を占め、Scalaを用いる仕事に転職する場合、半数の方の給与が上がったとのことです。各プログラミング言語の平均給与を算出したところ、Scalaの平均給与はトップ3に入っていたことから、Scala未経験でもScalaを用いる企業への転職が可能であり、かつ、給与を上げるチャンスが十分にあることがわかります。
最後に、求人の募集要件においてScalaが必須スキル、または推奨スキルである場合の平均年収についてです。エンジニアがScalaを使用できる場合、レバテックの求人の年収上限の平均は約840万円で、年収下限の平均は約430万円、全体の平均は約636万円でした。これらの数字は、Scalaと比較されることが多いKotlinのいずれの平均額をも上回っています。
以上、発表全体をまとめます。
・サーバーサイドの開発を通して基盤の開発に携わることができる
・Scala未経験でもScalaを用いる仕事に転職ができる(企業からはScalaに適応できるか、成長できるかがチェックされる)
・給与アップのチャンスがある
・平均給与が高い
・Scalaを扱えることがスキルの証明につながる
全体を通して、転職市場におけるScalaの需要や、収入アップのチャンスについて知ることができました。現在、Scalaを採用している会社で教育に力を入れている会社は、未経験者の採用を積極的に行っていることが多いため、思い切ってScalaに挑戦するチャンスかもしれません。竹下は前職でScalaエンジニアをしている際に採用担当も兼ねていましたが、やはり未経験者の採用が中心だったそうです。
発表終了後の質疑応答では、実際に未経験からScalaを用いる企業に転職した方や、Scalaを習得しているため好待遇で転職できた方、Scalaを用いる職種の採用に携わっている方々による活発な意見交換が行われました。そこでは、Scalaを扱えることがスキル証明につながる理由について「Javaはジェネリクスを使えない人が多いが、Scala開発者はジェネリクスを扱える」といった推論が行われました。登壇、意見交換を通して、転職市場におけるScalaの立ち位置を肌で感じることができました。
竹下コメント
Scalaは個人的に一番好きな言語なので、ぜひ使う人が増えてほしいと思っています。Scalaはとっつきにくい印象のある言語かもしれませんが、今回の発表でScalaを使うことでスキルアップに繋がり転職時にも好印象をもたれやすいことが示せたと思うので、これを機に使って見ようと思う人が増えてくれるとうれしいです。
4. 座長・麻植(おえ)氏インタビュー
──今年度の開催を終えてみての感想をお願いします。
ScalaMatsuri2020の実施を最初に告知をしたときは、開催用の会場を借りる予定でスポンサーさんやスピーカーさん、スタッフの皆さんも応募してくれていました。ただ、コロナ禍の影響でオフライン開催ができなくなり、オンラインでの実施となることで、期中に様々な変更や修正が発生しとても苦労しました。来年度の開催については特に決まっていませんが、そういった変更が入るのは避けたいとは思っていますね。
ただ、今回初めてのオンライン開催でも、盛り上がるカンファレンスを作れた感触があります。幾つかの面については、オンライン開催になってむしろ良くなった面を感じました。例えば、セッション中でも他の参加者とチャットができたり、他の参加者のチャットを見ながら理解を深めることができる点です。ほかにも、オフラインでは座る席によって発表スライドの見えやすさが違いますが、オンラインではディスプレイを見るため見えやすさの問題が発生しません。
内容面では、本年度からScalaビギナーというScala歴1年くらいまでの初学者を対象にしたセッションを7つご用意しました。ビギナー向けセッションをしてくれるスピーカが多数応募してくれたことで、Scala初心者が楽しめるプログラム構成にすることができたと思います。
──今後Scalaコミュニティに期待するものはなんでしょうか。
Scalaコミュニティが、よりいっそう門戸を開くことで、コミュニティが広がっていってほしいですね。Scalaは大学の研究室で生まれた言語であり、多くのユーザー企業やコミュニティと共同して、今も大学や付属の機関が開発に関与しています。今回のScalaMatsuriでも、Scala 3関連のセッションが幾つかありましたが、あのような新しい概念や研究成果が取り入れられやすいことが、Scalaのメリットや魅力にもつながっています。僕自身を含めて、Scala好きはそういった特徴に惹かれ、難しい概念を理解することに楽しさを見出す人も多くいるように感じています。
ひょっとするとそういった特徴から、全てを理解しなければScalaを使いこなせないと誤解し、Scalaそのものに近寄りがたさを感じている人がまだいるかもしれません。実際のScalaは実用志向で、一部の難しい概念を理解しなくても、ユーザーが十分うまく扱えるように設計されている、便利な言語です。また、昔に比べて初学者向けのドキュメントや書籍も増え、Scala関連ツールの進化にともなって環境設定が楽になったり、コンパイルが早くなったりと、Scalaに取り組みやすい環境が整ってきていると思います。
また、Scala 3のリリースが近づいてきています。Scala 3ではScala 2系の使いづらいさやバグの解消だけでなく、Scalaの型システムについても、正確さ、表現力の両面で改善をします。昔Scalaに触ってみて使いづらいと感じてしまった方たちも、今回のScala 3のリリースをきっかけに戻ってきてくれることを願っています。また、TypeScriptなどの言語を使っている方々で「静的型の言語が使いやすいな」と感じている方たちも、これを機にScalaを触ってみてほしいと思います。
5. 大島から参加してみての感想
今回のScalaMatsuriを通して、まず感じたのはScalaコミュニティがとても開かれたコミュニティだということです。ScalaMatsuriのチャットは気軽に質問できる雰囲気があり、プログラムは初学者でも理解できるものや、興味を持てるものがたくさん用意されていました。実際、私のようなScala未経験者でも二日間楽しんで参加することができました。
紹介したプログラム以外にも、初学者向けや玄人向けのプログラムがたくさんありましたし、アンカンファレンスDayには「ひどいScalaコード選手権」といったくだけた内容の講演が開催されるなど、内容はバラエティに富んでいました。
ScalaMatsuriはオンラインで行われたのですが、運営の会場はレバレジーズ株式会社の本社でした。そこで、運営の皆様の熱意を肌で感じたり、オンラインでのやり取りを拝見したりすることで、Scalaコミュニティの懐の深さを感じることができました。来年のカンファレンスではScalaがどのように進化しているのか、今から楽しみです。
本イベントのほかの参加者レポートについて気になる方は、下記内容も合わせてご確認ください。
関連内容:ScalaMatsuri2020に参加した同期からScalaの話を聞いたら面白そうだったのでまとめてみました!
文・大島広嵩(レバレジーズ株式会社メディア企画部)
大学で情報工学を専攻し、卒業後は大手酒造メーカーで社内システムエンジニアを経験。SAPの改修や運用、EDIシステムやミドルウェアの開発を行う。現在は、レバレジーズ株式会社のメディア企画部に所属。専門的なエンジニア向けコンテンツの制作に取り組んでいる。
Scala入門コラム
Scala とは
Scalaとは、オブジェクト指向言語と関数型言語の特徴をあわせ持ったマルチパラダイムプログラミング言語です。JVM(Java virtual machine)上で作動でき、Javaのライブラリーなどの資産を活用することで、Webサービスや業務アプリケーションのバックエンドの開発に広く利用されています。
Scala.jsとは
Scala.jsとは、ScalaをJavaScriptに変換するツールです。2020年2月にScala.js 1.0.0が公開され、最初にリリースされたバージョンから大幅な機能更新が行われました。Scala.jsの活躍によって、バックエンドサイドのみならず、フロントエンドの開発においても、Scalaの活躍の場が広がっています。
Scala 将来性
Scalaは2001年にMartin Oderskyによって設計され、2004年に公開リリースされた比較的新しい言語です。Javaと類似した用途で活躍しているため、その将来性について検討する際に、「ScalaはJavaの後継言語になれるか」と話題にされてきました。
しかし、Scala自体も優れた型関連機能が備わっているなど、Javaにはないメリットを持っています。また、2020年内に大きなアップデートが伴うScala 3のリリースが予定されているなど、プログラミング言語として進化を続けています。さらに、転職市場においてもScalaの開発スキルを持っているエンジニアは比較的高収入を得ているなど、将来の活躍が期待されている言語だと言えるでしょう。
ITエンジニア・Webクリエイターの転職ならレバテックキャリア
レバテックキャリアはIT・Web業界のエンジニア・クリエイターを専門とする転職エージェントです。最新の技術情報や業界動向に精通したキャリアアドバイザーが、年収・技術志向・今後のキャリアパス・ワークライフバランスなど、一人ひとりの希望に寄り添いながら転職活動をサポートします。一般公開されていない大手企業や優良企業の非公開求人も多数保有していますので、まずは一度カウンセリングにお越しください。
転職支援サービスに申し込む
また、「初めての転職で、何から始めていいかわからない」「まだ転職するかどうか迷っている」など、転職活動に何らかの不安を抱えている方には、無料の個別相談会も実施しています。キャリアアドバイザーが一対一で、これからのあなたのキャリアを一緒に考えます。お気軽にご相談ください。
「個別相談会」に申し込む