イベントレポートこんにちは、teratail運営チームの髙橋です!大好きな金木犀の季節はとうに過ぎ去り、今年も冬に近づきつつある、そんな日であります。本日は、ScalaMatsuri2020のイベントレポートのような内容をお届けする回になります!今年はオンライン開催だったScalaMatsuriですが、スタッフ用運営ルームとして弊社のセミナールームを貸し出しておりました。筆者は当日予定が合わず不参加だったので、実際にイベントに参加した同期の古賀くんに聞いた参加の感想と筆者によるScalaの簡単な紹介になります。以下、古賀くんの感想の要約になりますオブジェクト指向や関数型といったパラダイムや型クラスなどの概念は知っていましたが、完成するサービスが同じなら、どんな言語で書いても同じだと思っていました。Matsuriに参加して、言語の特徴によってサービスの向き不向きがあると知りました。Saasのように長期運用が前提でバグの少なさが求められるサービスには、型安全性を担保できるScalaが向いています。反対に、toC向けのリリース速度が求められるサービスならRailsなどが向いているなど。自分が使っている言語とScalaとの比較からそれぞれの良し悪しや、自分が将来、サービスの技術選定する上できっかけとなる知識を今回のイベントで得られたな、と感じています。「ふむふむ、なるほど」と、普段使用している言語との違いを認識することができました。自分でも少し調べてみたいなと思ったので、以下に簡単にまとめてみました!Scalaってどんな言語?関数型でありオブジェクト指向のマルチパラダイムJavaの後継言語である静的型付けの言語であるいろいろと記事を見てみましたが、大体こんな特徴を紹介していたので、これらについて簡単に紹介できたらと思います。関数型とオブジェクト指向のマルチパラダイムScalaは関数型言語とオブジェクト指向言語の両方の特徴のいいとこ取りをしたハイブリットな言語となっています。オブジェクト指向言語は、JavaやPHP、C++など様々なプログラミング言語で採用されているパラダイムで、設計図にあたるクラスを定義し、そのクラスから実際のモノであるインスタンスを作成し実行する言語です。大きなプログラムもクラス単位に機能を分割して実装していけるため大規模な開発にも対応可能で、現在の開発の現場において主要なパラダイムとなっています。関数型言語は、例えば、HaskellやLisp、OCamlなどがあります。「関数型」はモノではなく機能に焦点をあて、関数を中心としてプログラムを書くことができる言語です。副作用が無い純粋関数ということが関数型言語を使う上で重要なキーワードとなります。「副作用がない」とはあまり耳慣れないと思いますが、プログラムにおける「副作用」とは、関数を実行した際になんらかの状態の変化をもたらす事を指し、同じ入力でも実行するたびに出力が変わり得ます。副作用がなければ、ある値を入力した時、その時の状態に影響されなく常に決まった出力がされることになるため、テストがしやすくなることや、並列化が安全に行えるという利点があります。これら二つを掛け合わせているハイブリッドな言語がScalaで、大規模な開発にも向き、開発効率や実行速度も向上させることが出来ます。対して、ハイブリッドな言語だからこそ、両方の知識を持っていないとその強みを十分に発揮できないことから、どうしても学習コストが嵩んでしまいます。勉強すべき箇所が多いので勉強が大好きな人にはうってつけの言語かもしれませんが。いうこともあり、今のところ使用ユーザーが少ないみたいです。Javaの後継言語であるScalaは、コンパイルされるとJava仮想マシン上で動くバイナリになり、Javaが動く環境ならどこでも実行でき、またJavaのライブラリを使用することも可能ですので、「JavaでできることはScalaでもできる!」と言えます。Javaで開発している会社であれば、これまでの資産やノウハウを引き継いだままScalaに移行することができます。静的型付け言語であるScalaは静的型付け言語であるので、変数や関数など全てに型が付いておりコンパイル時にチェックされます。SaaSのように長期運用が前提で、バグの少なさが求められるサービスには、型安全性を担保できるScalaは向いています。PHPなどの動的型付け言語では、Date型を期待する変数にstring型が渡されるなど意図しないデータをバリデーションで実行時に防いでいましたがScalaではコンパイル時に型がチェックされるので実行前に防げます。93.0%やはりJavaやPHPのような、一般的に利用者の多い言語と比べると全体的に数値が低いですね。回答率は悪くないので、Scalaを勉強してみてわからないことがあったらteratailで質問してみてください!終わりに本日はScalaMatsuri2020に参加した古賀くんの感想と筆者が調べた簡単なScalaの紹介でした。Scala、何やら良さそうな雰囲気でした!筆者がよく使用するTwitterでもScalaが採用されているみたいで、調べてみるとScalaを使ったサービスというのは身の回りに多いのかもしれないな、と感じました。自分が使用しているサービスがどんな言語でできているのかを調べると、知らない言語と遭遇できて運命の出会いが待っているのかもしれません。気軽に意見交換しよう!こんにちは!teratail運営チームです。プレゼントキャンペーンの告知と機能紹介【teratail】こんにちは、teratail運営チームです。...2017-05-29GoogleがKotlinによるAndroid開発をサポートしたのでJavaから移行するためのTip...こんにちは。teratail開発チームの草間(@tkow39)です。teratailのエンジニアになって3ヶ月。blog引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。