タグ

scalaに関するfoooomioのブックマーク (15)

  • 【Haskell や圏論が出てこない】Scala で型クラスを完全に理解した話 - Qiita

    TL;DR 結論から。 型クラスはちょっとすごいオーバーロード であり 型に対して静的にメソッドを挿入する方法 です。 この記事は Haskell や 圏論等の難しそうな知識・議論なしで型クラス概念を具体的に理解する 型クラスが実は単なるすごいオーバーロードで、ちょっとした便利なものだと実感できる 型クラスとインターフェイスの違い論争で消耗しなくなる 型クラスを知っているとなにがオトクなのかわかる Haskell 等の高度な抽象化の恩恵を Java 的な慣れ親しんだシンタックスで書ける Scala は便利でたのしいと感じる ことを目的としています。 対象読者 関数型とか型クラスとかモナドとかよく聞くけど全然わからない…でも理解したい気持ちはある 型クラスの概念はいろいろ読んでなんとなく分かるけど説明が Haskell ばかりで実感がわかない 型クラスがなんなのかはぶっちゃけどうでもいいが、

    【Haskell や圏論が出てこない】Scala で型クラスを完全に理解した話 - Qiita
  • Scalaは(便利な)オブジェクト指向言語です - Qiita

    プログラミング言語Scalaの特徴として、オブジェクト指向と関数型の融合とか、オブジェクト指向と関数型のハイブリッドといったことがよく言われます。これらの言説は間違っているわけではないものの、Scalaという言語の質的な部分をよく表していないと私は思います。 また、関数型の要素を取り込んだ、という部分によって必要以上にScalaを恐れている人もいるように見受けられます。 そこで、「正しい」Scala言語の解説を簡単に書いてみることにしました。 クラスベースのオブジェクト指向言語である object構文やその他一部を除いて、Scalaでは原則的にクラスからオブジェクトをnewしてオブジェクトを作成します。

    Scalaは(便利な)オブジェクト指向言語です - Qiita
  • 新卒3年目のHaskell好きのScala使いが、はてなでテックリードになるまでの道 - エンジニアHub|Webエンジニアのキャリアを考える!

    新卒3年目のHaskell好きのScala使いが、はてなでテックリードになるまでの道 「若手エンジニア、どんな活躍してますか?」の第7回目は、はてなが手がける、サーバー監視サービス「Mackerel」の開発エンジニアにお話を聞きました。リモートでありながら、抜群の存在感を発揮する先輩の背中を、超優秀な後輩はいかにして追いかけたのでしょうか。 はてなといえば、ブログサービス、ソーシャルブックマークサービスを展開する企業として知られていますが、サーバー監視サービス「Mackerel」も主力プロダクトのひとつ。今回お話を伺ったお2人も、Mackerelの開発メンバーです。そのうちの一人、2017年4月にMackerelのテックリードになったばかりの濵田さんは2015年入社の若手。愛知からリモートで働く、前テックリードの辻川さんの背中を、ディスプレイ越しに見ながら実績を積み上げてきました。 はてな

    新卒3年目のHaskell好きのScala使いが、はてなでテックリードになるまでの道 - エンジニアHub|Webエンジニアのキャリアを考える!
    foooomio
    foooomio 2017/06/07
    itchynyさん!!!
  • 型クラスに関するここ数日の議論

    ここ数日で型クラスに関する議論が何故かもりあがっていたので、一通りひろってまとめてみました。型クラスというお題で色々なところで議論が同時多発していた感じなので、全体の流れとかはあまりないです。

    型クラスに関するここ数日の議論
  • Scalaで型クラスを使おう! - Qiita

    はじめに 某記事で、 implicitsなんて呼ばないで、各機能ごとに適切な名称で呼ぼう。あと、重要なのは型クラスだからそれだけ注意すればOK、という趣旨のことを書きましたが、どうやって使えばいいかは投げっぱなしだったのでその導入編だけでも書こうかと思います。この記事での目的は簡単で、 Scalaのコレクションのsumメソッド(とproductメソッド)を自作の有理数クラスに適用できるようにしよう ということになります。実際のところ、sumメソッドを整数リストに対して呼び出す、たとえば でも、型クラスを「使って」はいるのですが、実際に型クラスに新しいインスタンスを追加していないので、使った実感がわかないと思います。そこで、有理数クラスです。実装が比較的簡単である上に、四則演算への対応が容易という点でこれを選ぶことにしました。 まずは、有理数クラス(Rational)の実装です。ここは、

    Scalaで型クラスを使おう! - Qiita
  • Scalaに関する誤解と事実を語る - kmizuの日記

    TL;DR 世間のScalaに関するイメージは、昔のままであることが多い 昔のままどころか、最初から間違ったイメージを持たれていることも多い 実際には、既に解決されている問題は多々あるし、改善に向かっていることも多い プロジェクト管理の問題を言語に押し付けているケースもある はじめに 自分が最初にScalaに触れたのが2005年(Scala 1からカウントした場合)、あるいは2007年(Scala 2以降からカウントした場合)と、Scalaとの付き合いも結構長くなってきましたが、その間に Typesafe社(現Lightbend社)の設立 実質標準ビルドツールとしてのsbtの確立 ライブラリのバイナリ後方互換性に関するポリシーの策定 公式ScalaイベントScala Daysのはじまり Play 2 Frameworkの登場 Scala Center発足 その他色々 がありました。この間、

    Scalaに関する誤解と事実を語る - kmizuの日記
  • ScalaMatsuri 2017 参加レポート - ぐるなびをちょっと良くするエンジニアブログ

    こんにちは。あたぎです。 今日は、先日行われたアジア最大のScalaカンファレンスであるScalaMatsuri2017の参加レポートです。 ぐるなびでは基的にPHPを用いて開発を行うことが多いですが、私の携わる レストランの検索機能を始めとしていくつかのプロジェクトでは部分的にScalaの導入を始めており、今回も検索機能に携わるメンバー数名で参加してきました。 私自身、まだそれほどScala経験豊富ではないので、若干理解が浅いところもあるかもしれませんが、以下はいくつか参加したセッションのうち、印象に残っているものの簡単なまとめと所感になります。 Readable Scala 先述の通り、ぐるなびではScalaは部分的に使い始めていますが、Scalaエンジニアの数は、PHPエンジニアに比べてはるかに少数派です。 PHPなど他言語のエンジニアと話している中で、「Scalaって、なんだか

    ScalaMatsuri 2017 参加レポート - ぐるなびをちょっと良くするエンジニアブログ
  • Scala 2.12 で変わったこと(主に書き方視点で) - Qiita

    2016年11月3日に Scala 2.12.0 がリリースされました。 Java 8 を利用することになって trait が直接 interface にできたり、無名関数が lambda になったと裏側ではいろいろ良くなっているみたいですが、記事では主に表側、すなわち Scala を利用する者として書きます。 書き終わってから思いましたが、ほぼ Future についての記事になりました。 ほぼ自学のためのチラシの裏なので、 もっと深く知りたい場合は リリースノート やその 翻訳版 を読むと良いです。 (記事でもリリースノートおよび翻訳版から一部引用させていただいています) Scala 2.11 との互換性 リリースノートによると Thanks to source compatibility, cross-building is a one-line change to most sb

    Scala 2.12 で変わったこと(主に書き方視点で) - Qiita
  • Scala の implicit parameter は型クラスの一種とはどういうことなのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    なんか型クラスとか言うと型の怖いひとたちが怖い話をワイワイしてるイメージがありますよね。わたしはあります。「で、それって何がうれしいのよ」とか、そういう話はあまりされていないような印象がありますね(あくまで印象です)。その上 "Scala の implicit parameter は型クラスの一種" とか言われると「暗黙的な引数がなんで型クラスの一種なんや!!!意味がわからん!!!!」となります。わたしはなりました。 というわけでそのへんについて勉強したので書きます。 そもそも型クラスってなんや Haskellとかにあるやつですね。アドホック多相を実現するもの、らしいです。すごい、いきなり意味がわからない。 というわけで、まずは「アドホック多相ってなんなの」という話からして行きます。 さて、まずは「多相」から行きましょう。この文脈で言う多相とは、簡単に言えば「引数にいろんな型を取れる」とい

    Scala の implicit parameter は型クラスの一種とはどういうことなのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • なぜあなたの sbt はすぐに起動しないのか - Qiita

    特に Scala 初心者だったとき、Scala を始めようとして「なかなか jar ファイルが落ちてこなくてコードが書き始められない」という問題に遭遇したことがある方も多いのではないかと思います。Advent Calendar の穴埋めのネタとして、それについて少し説明してみようと思います。 参考:下り 60Mbps での結果 http://qiita.com/seratch@github/items/0df29e637a9f9b3d7dec sbt (Scala Build Tool) まず前提として Scala のビルドツールは Gradle や Maven も利用可能ですが、Typesafe 社が開発している sbt というビルドツールが主流です。 この記事時点での最新バージョンは 0.13.9 です。 https://github.com/sbt/sbt/releases このとこ

    なぜあなたの sbt はすぐに起動しないのか - Qiita
  • フリーエンジニアのIT案件ならレバテックフリーランス

    Scalaは、オブジェクト指向と関数型の特徴を兼備するプログラミング言語です。簡潔で柔軟性の高いコーディングが行えるため、高く評価されています。採用例としては、国内ならニコニコ動画やChatwork、海外ならTwitterやLinkedIn、Foursquareといった大規模なサービスが挙げられます。 Scala関連の記事は徐々に増加していますが、人気が高いJavaなどのプログラミング言語と比較するとまだまだ情報は少ないです。そこで記事では、これからScalaを学習する方の参考になる記事やサイト、スライドをまとめて紹介します。「Scalaに興味があるけど、情報が少なくて勉強しにくい」という方は、ぜひ参考にしてください。 また、Scalaエンジニア仕事内容、年収、将来性などに興味をお持ちの方は、以下の記事もご覧ください。 関連記事 : Scalaエンジニア年収|人気や将来性、入門時に学

    フリーエンジニアのIT案件ならレバテックフリーランス
  • ExecutionContextとblockingについて調べたメモ [scala] - だいたいよくわからないブログ

    この記事の結論 globalなExecutionContextではブロックする処理をblockingで包むとスレッド数が勝手に増えるから空きスレッドが無くて実行できないといったことを防げる。 ExecutionContext.fromExecutorService(new ForkJoinPool(100)) で生成されるThreadはBlockContextトレイトを継承してないのでblockingを使ってもスレッド数を増やした方が良いという情報がスケジューラに伝わらない。 akkaのdispatcherをExecutionContextとして使うとBlockContext付きのForkJoinPoolを簡単に作れる。 ExecutionContext.fromExecutorServiceでもForkJoinPoolのコンストラクタに自前定義したThreadFactoryを渡すようにす

    ExecutionContextとblockingについて調べたメモ [scala] - だいたいよくわからないブログ
  • PlayFrameworkをただの静的型付けMVCだと思って本番稼動させると死ぬ - サナギわさわさ.json

    (3/15 : タイトル修正しました。wは小文字ですね、すみません・・・) PlayFrameworkが流行り始めてから割と経ちますので、そろそろ正式採用しようと考える方も多いのではないかと思います。 強力な静的型付けで守られたPlayは、ミッションクリティカルなシステムや数万行を超える大規模システムの構築に特に向いているような気がします。 また、Servletを使っていないのに加えてMVC構造がベースなので、今までRailsなどで開発をしていた人でもシームレスに移行できると思います。 しかし、忘れてはならないのがPlayのアーキテクチャが全ての処理が非同期で行われることを前提としているという事です。 ここを忘れてPlayをただの強力な静的型付けで守られたMVCフレームワークとだけ考えて開発を進めてしまうと、番環境で稼動させた時にパフォーマンスが上がらずに困ることになるかもしれません。今

    PlayFrameworkをただの静的型付けMVCだと思って本番稼動させると死ぬ - サナギわさわさ.json
  • Scala.js | 天下一AltJS武闘会

    あなたは、Javascript で開発をしようと思って一歩を踏み出したけれど、 まだできていないという状況ではありませんか? もしかして、 Scala は知っているけど JavaScript は使いたくない JavaScript は使っているけどメンテナンスがしんどい 型...型... ・・・このような悩みをお持ちではないでしょうか? このウェブサイトは、これらのお悩みをお持ちのあなたのために作りました。 ScalaJavaScript に変換するツールがあったら、今すぐ欲しい!とあなたがお思いなら、 この先を読む必要はありません。 こちらからお申し込みいただき、このサイトを読む時間を実装にあててください。 さて、 Scala は知っているけど JavaScript は使いたくない JavaScript は使っているけどメンテナンスがしんどい 型...型... このような理由で実装が

    Scala.js | 天下一AltJS武闘会
  • Scala 関数メモ(Hishidama's Scala Function Memo)

    概要 C言語にはクラスという概念が無いので、定義できるのは全て「関数」(と呼ぶ)。 Javaではクラス内にしか定義できないので、全て「メソッド」。 Scalaは関数型言語なので、defで定義されるものを「関数」と呼ぶ…かと言うと、そうでもない。 Scalaにはオブジェクト指向言語の特徴も含まれているので、クラス(やトレイト)内で定義されたdefは「メソッド」と呼ばれることも多いようだ。 自分は、使い方に応じて「メソッド」と「関数」を呼び分けている。 classやtraitの直下でdefで定義され、呼び出し時に「インスタンス.」(「this.」「super.」やthis省略も含む)を付けて呼び出すものは「メソッド」。 そうでないものは概ね「関数」。 Scala内部では(JavaVM上で稼動することもあって)全ての関数はメソッドとして定義されるが、表面上classやtraitに属していないもの

  • 1