質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

Q&A

解決済

4回答

2477閲覧

Scalaに注目が集まる理由

退会済みユーザー

退会済みユーザー

総合スコア0

Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

1グッド

9クリップ

投稿2015/08/11 10:53

最近のWeb開発だとScalaの採用事例がとても増えています。
Scalaを使われている方、ぜひその使い心地を回答していただけますか?
使ったことのあるプログラミング言語と、Scalaを使うようになって何がうれしいか、回答いただけますと嬉しいです。

mobaroid👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

1つ目は、やはり、関数型プログラミングでしょう。

Scalaは、関数しか許されない世界と比べると、とっつきやすいんだと思います。
特にJava経験者にとっては、Javaとほとんど同じようにも書けるし、部分的に関数型プログラミングで書くこともできます。

2つ目は、 ** Apache Spark** が話題になったことに関係しているのではと思います。Sparkのことは説明できるほど知らないので、Googleにお任せします。
Apache Spark とは - Google 検索

個人的には、 Better Java としてScalaが気に入っています。

私はJava歴が長いのですが、以前、他の言語と比べて「Javaも、せめてこの機能だけでもあったらなあ」と思った機能がいくつかありました。Java8までにだいぶ改善されてきましたけどね。この機能には、いわゆるJavaバッドパーツとして知られているものを含みます。

ある日Scalaについて学んでみたら、Javaユーザーにとって親しみやすい上に、その欲しいと思っていた機能がほとんどScalaに備わっていることが分かったのです。

コンパイルが遅いのだけは残念です。

投稿2015/08/12 12:08

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/08/12 14:20

コメントありがとうございます。 実はScalaは触ってみてコンパイルが遅くて萎えてGroovyに走った口でして。Java8も悪くない感じですが、Scala熱がすごいんですよね。
退会済みユーザー

退会済みユーザー

2015/08/19 16:38

1週間たってこちらの答えが一番しっくり来ました。ありがとうございます!
guest

0

ScalaはJavaと互換性があり、Javaに比べコード量が少なくなることが特徴で、それに加えてPlay Frameworkの登場が注目を集める理由になっていると思います。

Javaよりもコード量を少なくするために、関数型言語の機能や文法が取り入れられていますが、関数型であることよりもコード量が少ないというところが重要です。

Javaと互換性がありコード量が少ないだけなら、Groovyでも同じことが言えますが、Play FrameworkによってScalaの方が優位になっていると思います。つまり、Scalaの方が実用的であるということです。

Web開発でのJavaのシェアは大きいですが、Scalaはそれを置き換えるだけの力があると考えられているのだと思います。
もし、置き換えられればコード量が少なくなる分、開発工数も減ると考えられますので、そこが注目を集める大きな理由なのだと思います。

投稿2015/08/12 14:33

Stripe

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/08/12 14:45

PlayFramework2も試したことあるんですが、Railsほど楽ではない印象です。マイグレーション周りのサポートが弱いように感じました。 最近のWeb開発でScalaに移行しているのは「はてな(Perl)」だったり「ChatWorks(PHP)」だったりJVM系言語ではない環境から移行している印象があります。 Javaを使っている場合は、Java8が出たので、Java8でいいじゃん、となりそうな気がしてますが、Scalaに移行されている例もしってます。元々JavaでWebサービスを開発されているぬーらぼさんです。TypetalkはScalaで実装されているそうです。中の方に聞いたらScalaで書くのは気持ちいいから離れられないとおっしゃってました。
Stripe

2015/08/12 14:57

その「Scalaで書くのは気持ちいい」というのは、コード量が少ないことと関係があると思います。 また、Scalaはコンパイラがしっかりしているので、コンパイルでエラーが出なければ、実行時でもあまり変なエラーが出ないという安心感もあります。その辺が、GroovyやRubyなどのスクリプト言語に対する優位性なのかなと思います。まあ、スクリプト言語に比べると柔軟性は劣ると思いますが。
guest

0

残念ながら、自分は全くの初心者なので、個人的な経験をお伝えできないのですが、深く関心を持っておりますので、ちょっとだけコメントします。

自分の関わっている案件では、学習コストの高い Scala を敢えて採用するような要件はないので、どうしても個人的に触ってみる程度の域を脱し切れません。

argiusさん、Stripeさん が回答されているように、純粋な関数型プログラミングができる上にJavaとも互換性があるので、特にJava使いの皆様にとっては入って行きやすいのだと思います。

ただ、(初学者なので持論を展開できるようなベースがないのですけれども)Java的なアプローチを超えたところに、本当の『旨味』があるのだろうと想像しつつ学習に励んでいるところです。

まだ理解できない部分が多いのですが、とても興味深い記事があったので、ご参考までにリンクを貼り付けておきます。

Scala採用を決めて一年たった、CTOの雑感
Java 8とScala ‐アプローチの違いと相互イノベーション
私がScalaを選んだ理由

投稿2015/08/12 19:45

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/08/18 14:58

サイトの紹介ありがとうございます!自分の手で動かしてみないとわからんことだらけだと思うのでやってみます!
guest

0

ちゃんと学んだ訳ではないですが、使っている感じとしてメリットに上げられるのは、
1.関数型
2.静的型付け
3.オブジェクト指向
4.javaとの互換性
5.処理速度
の5つですね。

それぞれ簡単に説明すると(もっと詳しい人、間違ってたらご指摘ください)
1.関数型
関数型で無い言語でプログラミングしていると、
メソッドの中で変数の値が書き換わったり、見えない副作用があるので、
メソッドの中身を細かく理解していないと怖くて使えないことがあります。
実際は副作用がないメソッドでも、その可能性があるだけで実装作業の負荷になります。
関数型言語だと、基本は変数の中身を書き換えること不可としているため、
その辺りのケアが大分楽になります。
#scalaは厳密な関数型言語ではないので、一部そのルールを破れてしまうところがあるのですが、
#基本的には関数型となっています。

2.静的型付け
動的型付け言語は、実行時に変数の型が決まり、
静的型付け言語は、コンパイル時に変数の型が決まる言語です。(だと思っています)

静的型付けだと、型を適当に実装して動いてくれる可能性もあるのですが、
実行時に型が合わないエラーを引き起こす可能性もあります。
また、そのエラーが起きないことを確認するために、諸々のテストが必要になります。

静的型付け言語は、コンパイル時に型が決まる=コンパイラーが型をチェックしてくれる、ので
型が間違っている事によるバグが起こらず、
テストの手間が大幅に減ります。

3.オブジェクト指向
scalaは関数型言語でありながら、オブジェクト指向言語でもあります。
オブジェクト指向のメリットについてはご存知だと思います。
この両面の良さがミックスインされているのは大きいですね。

4.javaとの互換性
scalaはjavaの資産を流用でき、
scalaで欲しいライブラリが見つからない時なども、javaのライブラリを使うことで代用できたりします。
このjavaとの互換性は、まだまだscala人口が少ない昨今では重宝します。

また、言語仕様もjavaに近いので、java経験者ならそれなりに取っ付き易いという点も挙げられます。

5.処理速度
処理速度については比較しているブログや文献が多々あるのでご存知だと思いますが、
scalaはほぼjavaと同じぐらいの処理速度があります。(若干劣りますが。)

RubyやPythonなどに比べると処理速度は桁違いなので、
即応性が求められるシステムなどにも使えます。

あとは、実際開発していて、開発スピードは早くなった実感があります。

Ruby等より最初に学ぶことが多く、イニシャルコストは掛かりますが、
慣れると良い言語ですね。

投稿2015/08/18 04:27

Sakaeda1112

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/08/18 14:56

ありがとうございます!「関数型プログラミングというプログラミングスタイルはあっても関数型言語なんてものは存在しないのじゃ」と誰かから言われた気もします…。関数型プログラミングスタイルになれたいですね。某方面から「それGrooovyで…」ともツッコまれそうですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問