kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

2014-01-01から1年間の記事一覧

ScalaMatsuri 2014チケット販売開始しました

昨年開催し、好評の内に幕を閉じたScala Conference in Japan 2013が今年はScalaMatsuriと名前を変え、帰って来ます!今年のテーマは、「Enjoy.scala」とにかくScalaの事ならなんでもこいで楽しもうという意味を込めました。 今年は目玉ゲストとしてScala作…

Scala Days 2014 参加レポート (1) を掲載しました。

帰国後、体調不良等の事情もあって延び延びになってしまったのですが、昨日、表題の記事を dwangoエンジニアブロマガにアップロードしました。よろしければごらんください。 http://ch.nicovideo.jp/dwango-engineer/blomaga/ar553704

Scala Days 2014にドワンゴ社のエンジニアとして参加して来ます

Scala Days 2014(2014年6月16日〜2014年6月18日)に参加することは先日のエントリで書いた通りなのですが、今年は正式にドワンゴ社のエンジニアとして参加することになりました。ですので、一部の費用を除いて、必要経費のほとんどが会社から出ることになりま…

初学者向けの Scala Tips (7) - objectで名前空間を作る

たとえば、プログラミング言語のパーザを書いていて、プログラムの木構造を次のように表現したいとします。 sealed trait Expression case class Addition(lhs: Expression, rhs: Expression) extends Expression case class Subtraction(lhs: Expression, r…

初学者向けの Scala Tips (6) - 文字列リテラル中のインデントを整える

これは、気の利いたIDEであれば自動でやってくれるのであえて覚える必要はないのですが、一応。 Scalaでは、複数行に渡る文字列リテラルを次のようにして書く事ができます*1。 val foo = """ class Foo { def foo(): Unit = { println("foo") } } """ ここで…

Scala Days 2014に行ってきます

今年はドイツのベルリンで6月16日〜6月18日にかけて開催されます。去年よりも発表のバリエーションが豊かで今からどのセッションを見に行こうか と考えると非常に楽しみです。

初学者向けの Scala Tips (5) - パターンマッチと無名関数の組み合わせを簡潔に書く

Scala初学者の方が書くコードには、しばしば以下のようなものが散見されます。 list.map {x => x match { case A => case B => case _ => } } 無名関数を作るための構文である{x => ...}とexp match { case ... }を別々に考えるとこのようなコードになるのは…

初学者向けの Scala Tips (4) - 可変長引数を取る関数にSeq[T]を渡す

TipsというよりFAQの部類ですが、ときどきつまづく方がいるようなので。 Scalaで以下のような可変長引数を取る関数printAllを定義すると、 def printAll(ss: String*): Unit = { ss.foreach(println) } printAll("BAZ", "FOO", "BAR") //BAZ //FOO //BAR の…

初学者向けでない Scalaバッドノウハウ(1) - traitの初期化時にManifest型の値を取得する

ネタが尽きたわけではないが、Manifest絡みで嫌な現象に遭遇したのでメモと回避方法(現在はManifest型をつかうべきではないがそれはおいておく)。 まず、問題として、次のようなコードを書くと実行時例外(unknown error)が発生する(Scala 2.10.4)。 trait M[…

初学者向けの Scala Tips (4) - パターンマッチのcase節には複数の式が書ける

ときどきみかけるコードなのですが、パターンマッチを使ったコードで、次のようなものがあります。 exp match { case A => { expA1 expA2 ... } case B => { expB1 exbB2 ... } } Scalaでは、case節に複数の式を続けて書くことができるのでこのようなブレー…

初学者向けの Scala Tips (3) - 型に対するマッチより構造に対するマッチ

皆さんご存知の通り、Scalaにはパターンマッチという機能があります。この機能、しばしば型に対するswitch-caseとして使われていることがあるようです。 たとえば、 sealed trait class Value case class Hoge(value: Int) extends Value case class Foo(val…

初学者向けの Scala Tips (2) - nullからOptionへの変換

Scalaでnullを使っていいのは小学生までだよねー、というのは冗談ですが、Scala文化圏ではnullを使わないのが原則です(いくつか例外はありますが)。代わりに出てくるのがOption型です。しかし、Scalaでは困ったことにnullを返すJavaのメソッドを呼び出さな…

Scala 2.11.0で標準ライブラリから分離されたライブラリのjarファイル

今日のScala勉強会第124回 in 本郷で話題に出てたことの備忘録。Scala 2.11で、scala.util.parsing.combinatorとscala.xml、scala.util.continuationsが標準のライブラリから分離されたのだが、これを今まで通りに使うにはどうすればいいのか。実は、分離さ…

初学者向けの Scala Tips (1) - Option#map()を使おう

唐突に始まったScala Tipsコーナー、初学者が陥りがちなScalaのコードパターンを例にして、より良い方法を解説していきます。第一回はOptionクラスのmap()メソッドを使おうというものです。知ってる人には今更ですが、Option#map(f)は、レシーバーの値がSome…

Sonatype Nexus repositoryにライブラリをアップロードしようとしてはまった話

昨日、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(仮)の正式名称を(Twitter上等で)公募しています

内容は表題の通りです。先日のエントリで書いたScala Conference in Japan 2014(仮)のキックオフミーティングですが(リモート参加もあるよ!)、参加してくださる予定の方は20名以上になったものの、正式名称公募の話をするのを忘れていたのでした。 ルー…

Scala Conference in Japan 2014(仮) キックオフミーティングを開催します

こんばんは。早いもので、Scala Conference in Japan 2013の開催からほぼ1年が経ちました。 最近、会う人に、ときどき「今年もScala Conference in Japanやるの?」と聞かれることがあります。実はしばらく前から、今年も開催することは決まっていました。…

2ヶ月間ダイエット始めます

以前から使っていたWi-Fi体重計がうまく動かないので、乾電池の接点の辺りを色々いじっていたら無事動作するようになりました。なったのはいいのですが… 体重を計ってみると、94kg!、以前から肥満気味で、去年は体重が85kg前後を推移していましたが、94kgは…

今日の朝食

白米(茶碗1.5杯分) 納豆2パック インスタント味噌汁 カレイの開き 冷奴 カレイの開きはハナマサで買ったやつなのですが、予想以上に美味しゅうごいました。

「sbt-sonatypeプラグインを使ってScalaのライブラリをリリースしてみた」のまとめ

Togetterに全部まとめたけど、備忘録としてこっちにも貼っておく。 コマンド2回叩くだけでリリースできてとても便利なので、Sonatype OSSRHで自作Scalaライブラリをリリースしている人は、使うといいと思うよ! ちなみに、Sonatype OSSRHに自分のアカウント…