かとじゅんの技術日誌

技術の話をするところ

言語だけでなく文化も学ぶ

『プログラマが知るべき97のこと』の 『26 言語だけでなく文化も学ぶ』P52 には プログラマが知るべき97のこと作者: 和田卓人,Kevlin Henney,夏目大出版社/メーカー: オライリージャパン発売日: 2010/12/18メディア: 単行本(ソフトカバー)購入: 57人 クリ…

[life] Interviews

I've been looking for another job since the beginning of this month. I said I'll quit my current job on my blog two days ago. Then many people made contact with me and I've got twenty offers so far. I really appreciate their offers. And I'…

転職活動を始めました

トライクレオという会社で、SI業務の本業の傍ら、部下(id:daisuke-m)と研究開発を果敢に取り組んで、試験運用寸前まできましたが、研究開発業務自体が継続できない状況になりました。SI業務の利益をやりくりして研究開発に回していたのですが、、SI疲弊の影…

Baseunits for Scala を 作ってみました。

Scalaで初プロダクトということで、日常的に使うものからということで、以下のBaseunitsのScala版を作ってみました。Baseunits Library - 都元ダイスケ IT-PRESSScalaはJavaの資産が使えるので、普通に考えるとBaseunitsのJava版を使えばよいわけです。しか…

WEB+DB PRESSでJavaの連載を担当することになりました

6/24発売 の WEB+DB PRESS vol63 より Javaの連載を担当することになりました。 WEB+DB PRESS Vol.63作者: 竹迫良範,和田卓人,じゅんいち☆かとう,太田昌吾,小野修司,ミック,嶋田裕二,個々一番,みやけん,清水亮,おにたま,中島聡,角田直行,はまちや2,上谷隆宏,…

Javaの列挙型っぽいもの

私は、ScalaのEnumerationは好みではないので、以下のようなJavaの列挙型っぽい実装を使っています。みなさん具体的にどんな実装にしてますかね?

日経ソフトウエア 2011年6月号でScalaの特集記事を書きました

こんばんわ。 ブログの記事が滞っているときは執筆中だったりするわけですが、今回はScalaの記事を書きました。 日経ソフトウエア 2011年 06月号 [雑誌]作者: 日経ソフトウエア出版社/メーカー: 日経BP社発売日: 2011/04/23メディア: 雑誌購入: 3人 クリック…

「エリック・エヴァンスのドメイン駆動設計」 を献本していただきました

嬉しいことに「エリック・エヴァンスのドメイン駆動設計」 を献本していただきました! 訳者の和智さん、関係者の方々、翔泳社さん ありがとうございます。おめでとうございます!Tシャツまでもらった!! 実は、私とid:daisuke-mは、この翻訳版の実装編のレ…

日経ソフトウエアの特集がムックになりました

まず、 3月11日の「東北地方太平洋沖地震」で、被害にあわれた皆様に心よりお見舞い申し上げるとともに、犠牲になられた方々とご遺族の皆様に対し、心よりお悔やみを申し上げます。 私も関西出身で阪神大震災の酷さを体験している人間でもありますし、気を負…

ScalaでBrainf*ckインタープリタを実装してみた

ScalaでBrainf*ckのインタプリタを書いてみたよ - 都元ダイスケ IT-PRESS Scalaを頑張っておるようなので、私もBrainf*ckのインタープリタをなんとなく実装してみた。BrainfuckRuntimeと、Expression系のクラスが関数型らしくないのでなんとかしたいな...。 …

Scalaの統一アクセス(プロパティ構文)がなかなかイカしてる件

今回は統一アクセス(プロパティ構文)がなかなかイカしてる件について。C#とかRuby,Pythonやってる人からすると何を今頃という感じなのですが。 Scalaで統一アクセス(プロパティ構文)を使う Scalaでフィールドを宣言する場合は以下のような書き方になります。…

ScalaのシングルトンをJavaの視点で読み解く

Scalaでシングルトンといえば、object型でしょう。実は、「はい それで終わり」ではありません。今日はそんな話。 object Singleton { println("Construct") val name = "SINGLETON" } println(Singleton.name) jadるとこんな感じ。 public final class Sing…

ScalaのクラスをJavaの視点で解剖する

Scalaのクラスをちょっと解剖して、なぜそうなっているか読み取ってみようと思います。 ScalaのクラスをJavaのクラスに変換してみる まず、こんなScalaのクラスを作ってみた。コンストラクタに氏と名のフィールドを二つ取る単純な人名クラスです。 class Per…

生成だけではなく複製もファクトリに任せたほうがよい

DDDで設計を始めると不変条件を維持するために、エンティティなどの可変オブジェクトの複製を行うことがよくあります。 Javaの場合は、Cloneableインターフェイスを実装して、実装型に応じた複製インスタンスを返すcloneメソッドを作る。以下のような感じ。 …

シングルトンパターンの遅延初期化をスレッドセーフにするには

前回、前々回と割とヘビーな仕様の話だったので、今回は若干実用的なネタとして、シングルトンパターンの遅延初期化をメモリモデルの視点から、どのようにすればスレッドセーフになるか考えてみたいと思います。 そのシングルトンの遅延初期化はスレッドセー…

マルチコア時代に備えて本気でメモリモデルを理解しておこう - メモリバリア編 -

このエントリを読む前提条件として、マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - じゅんいち☆かとうの技術日誌を読んで、リオーダーとは何かを理解していることとします。 前回のおさらいをすると、 …

マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 -

長い文章になってしまったので、概要だけ先に書きます。 以下のJavaプログラムは、常に上から下に順番に命令が実行されると思いますか?つまり、aに1が格納された後に、bに2が格納されると思いますか? 実は場合によってはこの実行順序が入れ替わる場合があ…

並行処理プログラミングを究めるシリーズの書

並行処理プログラミングを究めるシリーズの書 とりあえず以下を読んでます。他に何かよいのがあれば教えてください。 Java言語仕様 第3版 (The Java Series)作者: ジェームズゴスリン,ガイスティール,ビルジョイ,ギッラードブラーハ,James Gosling,Guy Steel…

Stringの連結はそう簡単なものではない

追記: 指摘の通りで、現実的な連結回数での計測でもないですし、統計手法を用いた分析をしていないので、このエントリの計測値は当てにしないでください。なので以下のブログを参考にしてください。 currentTimeMillis()で計測しておいて plusTime:14780, c…

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…