かとじゅんの技術日誌

技術の話をするところ

Scala

トレイトで契約を表現してみる

Javaで契約をサポートする Googleが開発したJavaデバッグを簡単にする新技術「cofoja」 は記憶に新しいところですが、 まぁ、そこまでこだわるところでもないのですが、アノテーションに記述する事前条件や事後条件が文字列なのでちょっと残念かなと。Scala…

副作用を最小限に抑えるために必要なこと

若干、難しい話ですが、設計力を上げたいプログラマ向けなエントリ。私も道半ばです。一緒に考えていただければ幸いです。 堅牢なアプリケーションを実現する上で「副作用を最小限に抑える」という設計思想は、非常に重要な示唆を含んでいます。 その「副作…

JMockitは理想的なモックフレームワーク

テストを書いているとモックオブジェクトを使う機会が多いと思います。そのモックオブジェクトは自前で作るよりは、JMockやMockito*1などのフレームワークを利用した方が楽でしょう。今回は機能的に、ほぼ最強と思われるJMockitを紹介します。 これが、他の…

Scala IDE for Eclipse の 出来が良くなった件

重くて固まると定評のあったScala IDE for Eclipseですが、最新版を入れてみたらできがよくったようで、普通に使えました。 Scala IDE for Eclipse既存のEclipseがあるからそれを壊したくなかったので、Scala用にEclipse環境をコピーして作りました。Javaの…

「プログラミングScala」を献本していただきました

非常に嬉しいことに、「プログラミングScala」を献本していただきました。@yyamanoさん、お声がけありがとうございました。 訳者の方、オライリー・ジャパン様、ありがとうございます。とても嬉しいです!!ノートとScalaバッチまで同梱というスペシャルなパ…

ScalaとGoogle Collectionsで関数オブジェクト

あけましておめでとうございます。 年末年始はいかがでしたか?私は大晦日から実家の兵庫に向かう道中、滋賀で大雪に見舞われまして、10時間ぐらい立ち往生して車中泊という幸先悪い年越しでしたorzさて、今日は関数オブジェクトの話です。関数オブジェクト…

ScalaでDDDをはじめてみよう

2010年も今日で終わりですが、皆様におかれましてはどのような年でしたか。 私は、この一年で「新しい技術の価値観」と「人との出会い」の二つの機会が恵まれた年でした。仕事に、コミュニティ活動に、お世話になった皆様、本当にありがとうございました。20…

パーサーコンビネータで遊んでみた

ちょりーす。 以前、こちらのエントリで、(((1 + -2)*-3)/4)+5のような計算式を渡して、BigDecimalで計算結果を求める簡単な言語を作ったわけですが、 数値がBigDecimal型な計算式言語を作ってみた - じゅんいち☆かとうの技術日誌これと同じものをScalaでや…

Scalaのジェネリックスを学ぶ

Scalaのジェネリックスを少し学んでみました。(なんか違うんじゃね?とかあれば、ツッコミお願いしますm(_ _)m) Javaのジェネリックスでは、型パラメータは共変/反変ではない Javaでこんなコードを書いてコンパイラに怒られたことないですか。 public interf…

JavaプログラマがScalaを学習するときに参考になる本

とりあえず、ひとり Scalaに感染させますた。 scalaを始めたんですね。前々からやろうと思っていましたが、id:j5ik2o氏に触発されて本格的に。 ということで、JavaプログラマがScalaを始める時に参考になる本とか、列挙します。Javaとの対比で書かれているの…

ScalaにAOPをやらせてみる

今回は、AOPをScalaでやるには?ってテーマです。JavaだとAOPのライブラリを使って黒魔術的にごにょるワケですが、Scalaの場合はトレイトを使ったミックスインで実現できます。 trait Login { def login(userName:String,password:String) } trait LoggableL…

Scalaのカリー化について学ぶ

Scalaでカリー化。「カリーか」って聞くと、あれしか想像できなかったのですが、なんとなく理解したというエントリ。まず、このエントリを読む。 Scalaの関数部分適用とカリー化 - kyabの日記関数型プログラミングの世界は奇妙な世界ですね。慣れてくると好…

今日のScala

とりあえず、リストの宣言 scala> var list = List(1,2,3,4,5) list: List[Int] = List(1, 2, 3, 4, 5)繰り返し処理をかいてみる。 scala> list.foreach(println) 1 2 3 4 5これも同じことができる。 scala> for( i <- list ) println(i) 1 2 3 4 5戻り値は…

今日のScala

Scalaの記事も面白いと思うので、気分転換に読んでみてくださいませw本日書いたScalaコードはこちら。 val strList = List("K","A","T","O") val join = strList.reduceLeft((x,y) => x + ", " + y) println(join) とすると、カンマ区切り文字列を簡単に作…

Scala始めました

今からでも遅くないということで、私もScalaを始めました。去年ぐらいにも耳に入っていたのですが、なんか小難しい言語だなーと思っていました。まぁ、でも食わず嫌いはよくないということで、まずやってみようと本を何冊かを買い込んで勉強してます。やって…

Cross Commnunity Conferenceに参加してきました。

途中参加でしたが、Cross Commnunity Conferenceに行ってきました。http://www.java-users.jp/contents/events/ccc2008spring/ Android SIProp 今村さん(私の古くからのお友達です)のAndroidのデモ残念ながら動作しませんでしたが、Androidの可能性のお話を…