2014-01-01から1年間の記事一覧
昨年開催し、好評の内に幕を閉じたScala Conference in Japan 2013が今年はScalaMatsuriと名前を変え、帰って来ます!今年のテーマは、「Enjoy.scala」とにかくScalaの事ならなんでもこいで楽しもうという意味を込めました。 今年は目玉ゲストとしてScala作…
帰国後、体調不良等の事情もあって延び延びになってしまったのですが、昨日、表題の記事を dwangoエンジニアブロマガにアップロードしました。よろしければごらんください。 http://ch.nicovideo.jp/dwango-engineer/blomaga/ar553704
Scala Days 2014(2014年6月16日〜2014年6月18日)に参加することは先日のエントリで書いた通りなのですが、今年は正式にドワンゴ社のエンジニアとして参加することになりました。ですので、一部の費用を除いて、必要経費のほとんどが会社から出ることになりま…
たとえば、プログラミング言語のパーザを書いていて、プログラムの木構造を次のように表現したいとします。 sealed trait Expression case class Addition(lhs: Expression, rhs: Expression) extends Expression case class Subtraction(lhs: Expression, r…
これは、気の利いたIDEであれば自動でやってくれるのであえて覚える必要はないのですが、一応。 Scalaでは、複数行に渡る文字列リテラルを次のようにして書く事ができます*1。 val foo = """ class Foo { def foo(): Unit = { println("foo") } } """ ここで…
今年はドイツのベルリンで6月16日〜6月18日にかけて開催されます。去年よりも発表のバリエーションが豊かで今からどのセッションを見に行こうか と考えると非常に楽しみです。
Scala初学者の方が書くコードには、しばしば以下のようなものが散見されます。 list.map {x => x match { case A => case B => case _ => } } 無名関数を作るための構文である{x => ...}とexp match { case ... }を別々に考えるとこのようなコードになるのは…
TipsというよりFAQの部類ですが、ときどきつまづく方がいるようなので。 Scalaで以下のような可変長引数を取る関数printAllを定義すると、 def printAll(ss: String*): Unit = { ss.foreach(println) } printAll("BAZ", "FOO", "BAR") //BAZ //FOO //BAR の…
ネタが尽きたわけではないが、Manifest絡みで嫌な現象に遭遇したのでメモと回避方法(現在はManifest型をつかうべきではないがそれはおいておく)。 まず、問題として、次のようなコードを書くと実行時例外(unknown error)が発生する(Scala 2.10.4)。 trait M[…
ときどきみかけるコードなのですが、パターンマッチを使ったコードで、次のようなものがあります。 exp match { case A => { expA1 expA2 ... } case B => { expB1 exbB2 ... } } Scalaでは、case節に複数の式を続けて書くことができるのでこのようなブレー…
皆さんご存知の通り、Scalaにはパターンマッチという機能があります。この機能、しばしば型に対するswitch-caseとして使われていることがあるようです。 たとえば、 sealed trait class Value case class Hoge(value: Int) extends Value case class Foo(val…
Scalaでnullを使っていいのは小学生までだよねー、というのは冗談ですが、Scala文化圏ではnullを使わないのが原則です(いくつか例外はありますが)。代わりに出てくるのがOption型です。しかし、Scalaでは困ったことにnullを返すJavaのメソッドを呼び出さな…
今日のScala勉強会第124回 in 本郷で話題に出てたことの備忘録。Scala 2.11で、scala.util.parsing.combinatorとscala.xml、scala.util.continuationsが標準のライブラリから分離されたのだが、これを今まで通りに使うにはどうすればいいのか。実は、分離さ…
唐突に始まったScala Tipsコーナー、初学者が陥りがちなScalaのコードパターンを例にして、より良い方法を解説していきます。第一回はOptionクラスのmap()メソッドを使おうというものです。知ってる人には今更ですが、Option#map(f)は、レシーバーの値がSome…
昨日、Scala 2.11.0がリリースされたということで、自分(たち)がメンテしているライブラリnscala-timeのScala 2.11.0対応版をSonatype Nexus Repository(これ、正式名称は何なのだろうか未だに悩んでいる)にアップロードしようとしていたのだが、 な感じ…
何を当たり前のことを、と言われそうだが、最近の静的型付き言語のIDEには、「名前変更」のリファクタリングを自動的に行ってくれる機能があり(リフレクションなどIDEが追跡可能な範囲を超える場合を除いて)、後から簡単に名前を変更することができる。こ…
ドワンゴに入社して最初のエントリなのにとてもくだらないことだが、入社してから7日目の今日、初めて女子マネ弁当に参加してきた。 最初、勝手が全くわからなかったので、同じチームの同僚に聞いたところ、それぞれの席についていたら10時30分からその場で…
2014年3月末をもって、株式会社ユビレジを退職することになりました。在職期間は2年3ヶ月とそれほど長くありませんが、スタートアップ企業の顧客に近い位置で仕事をすることができて、とてもいい経験が出来たと考えています。 退職に関して 新しい職場で自分…
内容は表題の通りです。先日のエントリで書いたScala Conference in Japan 2014(仮)のキックオフミーティングですが(リモート参加もあるよ!)、参加してくださる予定の方は20名以上になったものの、正式名称公募の話をするのを忘れていたのでした。 ルー…
こんばんは。早いもので、Scala Conference in Japan 2013の開催からほぼ1年が経ちました。 最近、会う人に、ときどき「今年もScala Conference in Japanやるの?」と聞かれることがあります。実はしばらく前から、今年も開催することは決まっていました。…
以前から使っていたWi-Fi体重計がうまく動かないので、乾電池の接点の辺りを色々いじっていたら無事動作するようになりました。なったのはいいのですが… 体重を計ってみると、94kg!、以前から肥満気味で、去年は体重が85kg前後を推移していましたが、94kgは…
白米(茶碗1.5杯分) 納豆2パック インスタント味噌汁 カレイの開き 冷奴 カレイの開きはハナマサで買ったやつなのですが、予想以上に美味しゅうごいました。
Togetterに全部まとめたけど、備忘録としてこっちにも貼っておく。 コマンド2回叩くだけでリリースできてとても便利なので、Sonatype OSSRHで自作Scalaライブラリをリリースしている人は、使うといいと思うよ! ちなみに、Sonatype OSSRHに自分のアカウント…