タグ

ブックマーク / kmizu.hatenablog.com (12)

  • 実践Scala入門(共著)が発売されます - kmizuの日記

    https://www.amazon.co.jp/dp/4297101416 企画自体は2015年くらいから始まっていたんですが、紆余曲折あって、約3年経ってしまいました。ともあれ、ようやく出版までこぎつけられてほっと一息です。 実際には多少遅れる可能性がありますが、10月27日から技術評論社さんから発売予定なので、この機会にScalaを勉強してみたい方は、是非予約していただければと思います。 さて、書いてる間の紆余曲折書いても意味がないので、このエントリでは、この書籍のウリを簡単に書きたいと思います。 現状の日語のScala書籍は、大半が新しいバージョンのScalaに追随できてなくて、新しくScalaに入門する人に勧められるいい書籍が ほとんどないという問題意識がありました。いわゆるコップScala書籍の中でもかなり売れていることもあってか、2.12対応の第三版まで出版されているも

    実践Scala入門(共著)が発売されます - kmizuの日記
  • Scalaスケーラブルプログラミング第3版(電子版も)が発売されます(2016/09/20) - kmizuの日記

    通称コップこと、Scalaスケーラブルプログラミングの第3版が今月下旬発売されます。今回のウリはなんといっても、Scala 2.11(2.12のSAM変換も)対応です。また、第3版なので(?)コップの数が3個に増えています。 Scala 2.11対応なので、String Interpolation、Value Classes、implicit classといったScala 2.10の機能についてもちゃんと触れられています。Scala 2.11対応の日語書籍がしばらくの間存在していなかったのですが、これでそういった状況も改善されそうです。 あと、もう一つ重要なのが電子版も発売されるということです。これは広めてしまって良いということなので書きますが、現在電子書籍版発売に向けて作業中とのことです(電子版発売はだいたい紙版と同じ時期だそうです)。これで、重いコップを持たなくても済みますね!(

    Scalaスケーラブルプログラミング第3版(電子版も)が発売されます(2016/09/20) - kmizuの日記
    j5ik2o
    j5ik2o 2016/09/09
    買う
  • ScalaとKotlin(と昔のJava)のジェネリクスが壊れている理由 - kmizuの日記

    表題の通りです。とりあえず、Kotlin版とScala版のコード貼ります。 gist.github.com gist.github.com これらのコードでは、両方とも明示的なダウンキャストやその他の抜け穴を使っていないので、実行しても決してClassCastExceptionが起きてはいけないのですが、実際に実行するとClassCastExceptionが起きてしまいます。 さて、これはコンパイラの実装のバグでもあり、言語仕様のバグでもあるのですが、ちょっと理由を説明してみたいと思います。 class B extends A with Comparable[B] { def compareTo(b: B): Int = 0 } 上記のコードをコンパイルすると、下記のコードが生成されます。ここで、int compareTo(java.lang.Object)というメソッドが 定義されている

    ScalaとKotlin(と昔のJava)のジェネリクスが壊れている理由 - kmizuの日記
  • Scala Nativeを動かしてみた(1) - kmizuの日記

    Scala Nativeはscalaのコードを(LLVMのIRを経由して)ネイティブコードにコンパイルするAOTコンパイラ(Ahead Of Time Compiler)です。その存在については、少し前にサイトができていたことで一部で話題になっていましたが、Scala Days 2016 NYCにて正式に公開されました。現在はPre-Release段階ですが、既にサンプルコードを試せるようになっていたので、環境を構築してみました(on Mac OS)。 scala-nativeのリポジトリをcloneする $ git clone git@github.com:scala-native/scala-native.git --recursive git submoduleとしてscala/scalaを持っているので、--recursiveを付けるのを忘れないようにしましょう。 llvm(cla

    Scala Nativeを動かしてみた(1) - kmizuの日記
  • Scala Days 2014にドワンゴ社のエンジニアとして参加して来ます - kmizuの日記

    Scala Days 2014(2014年6月16日〜2014年6月18日)に参加することは先日のエントリで書いた通りなのですが、今年は正式にドワンゴ社のエンジニアとして参加することになりました。ですので、一部の費用を除いて、必要経費のほとんどが会社から出ることになります。 今年はその分いつもより現地でのエンジニアとの議論や発表の視聴を初め、気合いを入れて行って来たいと思います。滞在記も書き溜めて、帰国後はドワンゴ社のエンジニアブログでScala Days 2014についてリポートする予定です。それなり以上の性能のカメラで写真も豊富に撮ってくる予定ですので、こうご期待! ○○をOdersky教授に聞いてきてもらいたい 発表者の○○さんにこんな質問をして来て欲しい といった希望もこのコメント欄で受け付けていますので、どうぞよろしくお願いします。 ドワンゴ社は、社内のプロジェクトの新規案件では

    Scala Days 2014にドワンゴ社のエンジニアとして参加して来ます - kmizuの日記
    j5ik2o
    j5ik2o 2014/06/16
    勝手な注文つけてすみませんが、Scalaエンジニアなるというのがベターな戦略だと思うので、"ドワンゴ社で本物のScalaエンジニアを目指そう"というフレーズの方がよい気がしてます。字余り。
  • 初学者向けの Scala Tips (2) - nullからOptionへの変換 - kmizuの日記

    Scalaでnullを使っていいのは小学生までだよねー、というのは冗談ですが、Scala文化圏ではnullを使わないのが原則です(いくつか例外はありますが)。代わりに出てくるのがOption型です。しかし、Scalaでは困ったことにnullを返すJavaのメソッドを呼び出さなければいけない場面がたくさんあります。 たとえば、以下のようなコードを書かなければいけない場面にはしばしば遭遇します。 val javaMap: java.util.Map[String, String] = javaObject.getMapping() val value: String = javaMap.get(key) // 型注釈はあえて付けている if(value != null) { ... } else { ... } さて、ここで困るのが、javaMap.get(key)はkeyに対応する値が入って

    初学者向けの Scala Tips (2) - nullからOptionへの変換 - kmizuの日記
    j5ik2o
    j5ik2o 2014/05/08
    値が存在するしないを値型として判定できるし、Optionが持つ高階メソッドを利用すれば、値が持つ文脈に合わせて計算を合成できる。
  • 退職します - kmizuの日記

    2014年3月末をもって、株式会社ユビレジを退職することになりました。在職期間は2年3ヶ月とそれほど長くありませんが、スタートアップ企業の顧客に近い位置で仕事をすることができて、とてもいい経験が出来たと考えています。 退職に関して 新しい職場で自分の力量を試してみたくなったことと 現在のユビレジにおいて自分が果たせる役目が一通り終わったという実感 そもそもユビレジにジョインした時点で、働き始めて2年間経ったら転職先を考えようと思っていた というのが大きな理由です。 ユビレジに入った当初~去年4月までは、駒場東大前近くにある、通称ユビハウスという一軒家の1階をオフィス用として利用していました。おかげで、 柿の木から柿を収穫(!)してべた 東大駒場キャンパスの堂で昼べた タイカレーを皆で作ってべた たこやきを皆で作ってべた といった貴重な経験をすることができました…というのは冗談

    退職します - kmizuの日記
    j5ik2o
    j5ik2o 2014/03/30
    おつかれさまでした&活躍を期待しています。そして今年は #ScalaMatsuri 成功させたいですね!
  • Scala Conference in Japan 2014(仮) キックオフミーティングを開催します - kmizuの日記

    こんばんは。早いもので、Scala Conference in Japan 2013の開催からほぼ1年が経ちました。 最近、会う人に、ときどき「今年もScala Conference in Japanやるの?」と聞かれることがあります。実はしばらく前から、今年も開催することは決まっていました。ただ、会場と招待講演者が決まっていなかったため、長い間水面下のやりとりにとどまっており、告知することができませんでした。 しかし、2月後半に入って、招待講演者と会場の両方が確定したので、イベントに向けて格始動できるようになりました。というわけで、2014年3月8日(土)10:00~12:00に Scala Conference in Japan 2014(仮) キックオフミーティング を開催します(時間帯は若干変更の可能性があります)。 つきましては、イベントのスタッフをやりたい方や興味のある方の参

    Scala Conference in Japan 2014(仮) キックオフミーティングを開催します - kmizuの日記
    j5ik2o
    j5ik2o 2014/03/04
    今年も開催します
  • ゆの in Scala - kmizuの日記

    ゆの in Ruby ゆの in Python ゆの in Smalltalk ゆの in Squeak Smalltalk その他多数 元ネタについてはよく知らんのだけど、なんか流行ってるっぽいので書いてみた。ポイントは、式の中での_がplace holderになってしまうので、通常のパラメータにはならないのをどう解決するかという所だが、implicit conversionを使うことで解決している。 object X { implicit val f :((X.type) => String) => Int = x => { println(x(X)); 0 } def /(x: X.type) = new { def /(x: X.type) = new { override def toString() = { "スケッチ" } def <(x: String): String =

    ゆの in Scala - kmizuの日記
    j5ik2o
    j5ik2o 2011/12/17
    ちょwww
  • Scala 2.9.0のscala.sys.processパッケージが便利過ぎる件について - kmizuの日記

    先日、Scala 2.9.0 RC4がリリースされ、正式リリース(final)までもうあと少しといった感じになって来ましたが、皆様、いかがお過ごしでしょうか。訓練されたScala使いはRCには手を出さないとも言われますが、私は新し物好きなので、RCにも手を出してしまいます。 それはともかくとして、Scala 2.9.0の最大の目玉は何でしょうか?世間的(どこの世間だというツッコミはおいといて)には並列コレクションではないでしょうか。Scalaの公式サイトでも新機能の紹介で真っ先に挙げられていますし、少なくとも一番注目されているのは並列コレクションでしょう。 並列コレクションは、公式サイトも含め、英語圏のブログなどあちこちで既に紹介されているので、このエントリではあえて、その陰に隠れてあまり注目されないが、なかなか便利なscala.sys.processパッケージについて紹介します。 sca

    Scala 2.9.0のscala.sys.processパッケージが便利過ぎる件について - kmizuの日記
    j5ik2o
    j5ik2o 2011/05/12
    便利すぎるなー。すばらしい。
  • Scala変態技法最速マスター - kmizuの日記

    Java変態文法最速マスターなんてのがかなりブクマされてるみたいだが、変態さならJavaなんてScalaの足元にも及ばないぜ!!ということで、Scala版を書いてみました。しかし、実はあまり変態ではないかもしれません。元ネタと違って、これを読めば何かがわかる、という意味の実用性はあまり無いでしょう。 implicit conversion編 基 Scalaのimplicit conversionは使いようによってはScalaの強力な型システムを台無しにしてしまう力を持っています。たとえば、 implicit def string2int(x: String): Int = Integer.parseInt(x) というimplicit conversionを定義してやると、"300" / 3が100になるなどというキモい挙動を実現することができます。また、さらにカスタマイズして、16進数

    Scala変態技法最速マスター - kmizuの日記
    j5ik2o
    j5ik2o 2011/02/03
    さすがだ。変態すぎる!! / Scala変態技法最速マスター - Onion開発しつつ、PEGEXを開発する日記 -
  • JavaとScalaとC#のジェネリクス機能比較表 - Onion開発しつつ、PEGEXを開発する日記

    JavaScalaとC#のジェネリクスは、いずれも継承を持ったオブジェクト指向言語においてParametric Polymorphismを実現するための手段であり、それぞれ異なった特性を持っている。というわけで、それぞれの言語においてジェネリクスがどのようにサポートされているかを比較した表を用意してみた。後で気が向いたら、各項目の説明を追加するかも。 Java(5.0以降) Scala C#(4.0) ジェネリックなクラス ○ ○ ○ ジェネリックなメソッド ○ ○ ○ 型パラメータの上限 ○ ○ ○ 型パラメータの下限 × ○ × 型パラメータの推論 ○ ○ ○ 全ての型のサブタイプ(ScalaにおけるNothing) × ○ × definition-site variance × ○ ○ use-site variance ○(Wildcard) ○(Existential Typ

    JavaとScalaとC#のジェネリクス機能比較表 - Onion開発しつつ、PEGEXを開発する日記
  • 1