かとじゅんの技術日誌

技術の話をするところ

Scalaでアクターではなくスレッドを操る

Scalaといえば並行処理、並行処理といえばアクター。ということだけど、そこまで大袈裟ではなくサクっとスレッドを起こしたい時はどうしたらよいか。「プログラミングScala」のP220に「9.4.1 その場限りのスレッド」にopsオブジェクトのspawnメソッドが紹介…

ビジネスモデリングで考えること ー基礎編ー

DDDとかの抽象度の高い話はなかなか分かりずらいという方もいると思うので、以下の書籍で扱っているビジネスパターンでのモデリングも併せて考えていきたいと思います。 私もまだ勉強不足というものあるし、チャレンジングな試みなので途中でヘタれるかもし…

並行処理におけるメモリの可視性保証について

並行処理プログラミングにおいてJavaのメモリモデルを深く掘り下げたことがなかったのでちょっと本気出してみます。しかし、間違っているところあるかもしれません。ツッコミいただければ適宜訂正させていただきます。 可変データへのアクセスを同期化 Java…

Java: The Good Parts を献本していただきました

Java: The Good Parts の翻訳版が発売になりました。@t_yanoさん、および関係者の皆様ありがとうございます。 まだ、内容は読めていないですが、章立てがすごくいいですね。厳選されているというか。個人的には「例外」「並行処理」とか熱そうです。最近は、…

JavaでActorっぽいものを作ってみる

前回 JavaでScalaの"アクターのようなもの"を作ろうということだったので、早速 作ってみました。目的は、Actorの概念に触れることで、並行処理プログラミングの勘所を学ぶことなので、その前提で読んでいただければと思います。 リソース共有モデルには限界…

意図に関係する大事なことがら

最近、DDDの"意図の明白なインタフェース"というパターンの章を読みなおしています。このパターンが一環して主張していることは"名前が重要"ということです。その名前の重要性について、いろいろな文献からの引用を用いて考えてみたいと思います。 名前重要 …

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

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

タスクを並行で実行するために必要なこと 〜基礎編〜

スレッドセーフの話も語ればキリがないのですが、そろそろ「タスクを並行に実行する」話題にいってみましょう。この手の記事は結構あるし、書籍の内容をまるまるというわけにいかないので、独断と偏見でポイントを絞って軽く解説する感じで書いてみます。と…

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

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

バレンタインチョコ欲しい!

バレンタインチョコ欲しい! PlayStation 3 (320GB) チャコール・ブラック (CECH-2500B)出版社/メーカー: ソニー・コンピュータエンタテインメント発売日: 2010/07/29メディア: Video Game購入: 6人 クリック: 253回この商品を含むブログ (50件) を見る

DDDのバリューオブジェクトは不変性が本質ではない

id:ryoasaiさんから紹介してもらったエントリで「バリューオブジェクトは不変性が本質ではない」ということを知って、「あれ?」っと思ったので、もう一度DDD本を読んで簡単にまとめてみました。 不変性は本質ではない DDD P97-98より引用 The system has to…

[モデリング][Java] モデリング能力を鍛えるシリーズの書籍

下の2冊は読んでない...。読んでみるかー。 他におすすめな本があれば教えてください。 Domain-Driven Design: Tackling Complexity in the Heart of Software作者: Eric Evans出版社/メーカー: Addison-Wesley Professional発売日: 2003/08/22メディア: ハ…

スレッドセーフにするために考えること 〜応用編 その3〜

終わったかとみえたスレッドセーフのネタですが、再浮上。 連投ものだと読むのが大変なんですが、よくぞこのエントリまでおいでくださいましたm(__)mということこで、Departmentクラスはバリューオブジェクト(不変オブジェクト)でしたが、エンティティ(可変…

結構大事なアグリゲートについてもう少し考えてみる

ちと、小難しい話になります。DDDの話なんで、コードで学ぶドメイン駆動設計入門 〜アグリゲート編〜 - じゅんいち☆かとうの技術日誌でも取り上げたアグリゲートに関する考察です。どうあるべきかはちょっと分かっていません。これを読んでこうしたらよいの…

努力する人が最後には”できる人”になる

etc

先日の2月3日で39歳になりました。社会人20年を振り返ると苦労の歴史でした。でも、それは誇らしいことでもあります。 今でこそ「できる人」というイメージが強いかもしれませんが、、駆け出しのころは全くできない子でした。 ということで、苦労話。タイト…

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

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

先に進めない時は、直感を信じて”実行”してみよう

etc

技術系のネタばかり連発するとみんな飽きてくると思うので、考え方とか価値観的な話を自重しないで書いてみます。「先に進めない時は、直感を信じて”実行”してみよう」という話。今は、何が正解かわからない混迷の時代です。正解が複数あるかもしれませんし…

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

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

[Java][並行処理] スレッドセーフにするために考えること 〜応用編 その1〜

スレッドセーフにするために考えること 〜基礎編〜 - じゅんいち☆かとうの技術日誌 基礎編では、スレッドセーフについての基本的な考え方を書きました。スレッドセーフにするには、アトミック性を保証することが必要でした。この応用編では、その点を注意し…

スレッドセーフにするために考えること 〜応用編 その2〜

スレッドセーフにするために考えること 〜応用編 その1〜 - じゅんいち☆かとうの技術日誌 では、エンティティのインスタンスを共有せずに、スレッドの振る舞いを関数型のようにするとよいという話をしました。そして、アトミックを必要とするトランザクショ…

Javaでnullを回避するために似非Option型を作ってみる

ScalaにはOption型というプログラムの世界観を変えるような魅力的な型があり、それでnullを回避することができる。*1 詳しくはこちらを参照。 ScalaのOptionステキさについてアツく語ってみる - ゆろよろ日記Javaでも、ScalaのOption型と似て非なるOption型…

スレッドセーフにするために考えること 〜基礎編〜

ええっと、リクエストされたので、今回は並行処理ネタにいってみます。 並行処理といえば、この本は必読書ですね。でも、書いてることは、かなりムズカシイデス(´・ω・`) Java並行処理プログラミング ―その「基盤」と「最新API」を究める―作者: Brian Goetz…

[Java] Java PUZZLERSを読み始めました&出題

Java Puzzlers 罠、落とし穴、コーナーケース作者: ジョシュア・ブロック,ニール・ガフター,柴田芳樹出版社/メーカー: ピアソン・エデュケーション発売日: 2005/11/14メディア: 大型本購入: 3人 クリック: 81回この商品を含むブログ (56件) を見る この本を…

nullという値は本当に必要か考えよう

今回は、nullの扱いは気をつけようねというお話。特にこれからの人に読んでもらいたい。 nullは変数を初期化する時などに、当たり前のように登場します。Javaではnullがないなんて考えられないわけです。(C#でも同様) しかし、nullの考案者のTony Hoareは「1…

JPNewTechに参加してきました

22日土曜の夜に、JPNewTech(仮名?)というイベントに参加してきました。奥様ご理解をいただきありがとうございますm(_ _)m 東京でネットワーキングイベント #jpnt : 橋本正徳の「コラボレーション」をしていく感じいつも参加するイベントはプログラマが集う勉…

[執筆][Java] 特集記事を書きました

こんばんわ。1/24日発売の日経ソフトウエア 3月号で特集記事として、特集3「現場で通用するソフトウエア設計」を書かせていただきました。 日経ソフトウエア 2011年 03月号 [雑誌]作者: 日経ソフトウエア出版社/メーカー: 日経BP社発売日: 2011/01/24メディ…

[Scala] Scalaでコードを書きたいけど、どの開発環境がいいの?

最近、Scala本が増えてきてますが、早い話こういう話になりますよね。本はわかった、コード書かせろとw 実際にコーディングするための開発環境はどれがいいのか、触ってきた感想を超簡単にレポートします。 触った開発環境は以下です。 Eclipse + Scalaプラ…

[書評] プログラミングScala

せっかく献本いただいたので、早速 書評を。 プログラミングScala作者: Dean Wampler,Alex Payne,株式会社オージス総研オブジェクトの広場編集部出版社/メーカー: オライリージャパン発売日: 2011/01/20メディア: 大型本購入: 2人 クリック: 307回この商品を…

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

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

[Scala][Wicket] ScalaでWicketを始める

Scalaで使えるウェブフレームワークはLiftやplay frameworkなどのJavaのものを含めれば、使えそうなものは山ほどありそうですが、今回はWicketをやってみようと思います。とりあえず、Maven2のarchetypeであるWicketのQuickstartを使ってプロジェクト構成を…

そりゃ、ほしい!

MacBook Air 11インチ欲しい!

地豆の関数ライブラリとobject-manipulator

先のエントリでGoogle Collectionsを使えば、Javaでも関数型ぽくできるのですが、地豆にも関数型に特化したfunctorライブラリがあります。 まぁ、かなりマニアックなネタなので、ブクマとかスターとはつかないだろうなw そんなの気にしませんw 地豆謹製の…

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

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

ScalaでDDDをはじめてみよう

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

コードで学ぶドメイン駆動設計入門 〜ファクトリ編〜

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 と続いて、このエントリはファクトリ編を解説しま…

コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 からの連投エントリ。振る舞いとサービス編です。今回もコードを使って解説したいと思います。 サービスとは、モノとして扱うと不自然なものをサ…

コードで学ぶドメイン駆動設計入門 〜アグリゲート編〜

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜ファクトリ編…

コードで学ぶドメイン駆動設計入門 〜リポジトリ編〜

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜ファクトリ編…

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜

先日、DevLOVEで発表した「コードで学ぶドメイン駆動設計入門」ですが、入門としながらも難しかったかもしれません。モデリングの話は難しい方の話題なので仕方ないのですが、できるだけわかりやすく補足するブログを書いてみたいと思います。まず、レイヤー…

DEVLOVE HangarFlight で話したスライド&ソースコード

12月18日 DEVLOVE HangarFlight - Winter Sortie -(東京都) で、「コードで学ぶドメイン駆動設計入門」と題してしゃべってきました。スライドはこちら。http://slidesha.re/h0ffOI ソースコードはこちら。https://github.com/tricreo/schema-generator休日に…

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

ちょりーす。 以前、こちらのエントリで、(((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) とすると、カンマ区切り文字列を簡単に作…

ドメイン駆動設計を始めるときにおすすめなコード例

ドメイン駆動設計で開発する時に、まずお手本となるコード例をみたいですよね。まず、これ見ましょう。 DDDSampleは、Javaで実装されたものです。*1 原書の内容と連動しているので、原書を読んでいる人にとっては分かりやすいと思います。読んでいなくても、…

DevLOVE Beautiful Develpmentに参加してきました

"Beautiful Develpment"(10/27 DevLOVE)に参加してきました。私も直近でドメイン駆動設計の記事を書かせていただいていたので、タイミングがよかったと思います。参加者も多く皆さんの関心の高さを伺えました。 9月24日発売の日経ソフトウエア 11月号の特…

Scala始めました

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