読者です 読者をやめる 読者になる 読者になる

かとじゅんの技術日誌

技術の話をするところ

JavaOne Tokyo 2012 : Community Panel Discussion に登壇しました。

昨日はみなさんおつかれさまでした。 私は二日目の Community Panel Discussion で日本Scalaユーザーズグループ代表*1ということで登壇しました。ありがとうございました! *1:本当の代表は水島代表(仮)です

WEB+DB PRESS Vol.64で記事を書きました

WEB+DB PRESS Vol.64作者: 柏木泰幸,松野紘明,林聖高,杉義宏,飯塚直,高橋征義,徳永拓之,Tehu(張惺),中島聡,おにたま出版社/メーカー: 技術評論社発売日: 2011/08/24メディア: 大型本購入: 17人 クリック: 708回この商品を含むブログ (16件) を見る 8月24日…

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

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

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

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

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…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

クラスローダについて

Javaでは欠かせないクラスをロードするためのクラスローダ。普段意識していないかもしれませんが、しっかりと縁の下で支えているよね。(Java言語仕様を確認しながら書いてないので間違っていたらツッコミよろしくです) クラスローダとは Javaクラスローダー…

JavaプログラマのためのObjective-C講座 その1

Objective-Cの学習を始めました。 「キモい、キモい」といっていたのですが、なんか慣れてくると「あー、見える見える」って感じです。 Javaだと普通のクラスも class Person{ private String name; private int old; public Person(String name, int old){ …

非検査例外に萌えるわけ

検査例外はアジャイルやオブジェクト指向の考えに反するという事実 - じゅんいち☆かとうの技術日誌タイトルは釣り度が強すぎかなー、、、まぁ、個人のブログなんで気にしないでくださいw ブログはカジュアルに書けばいいんですよ。タイトル付け失敗してもサ…

「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり

追記: id:Nagiseさんからエントリいただきました。 というわけで、ややしつこく感じられるかもしれないけど誤りだと思うところはツッコミを入れさせてもらいます。人に恨みがあるとかそういうわけじゃなくて、説に用事があるってところをご理解いただければ…

文字列の結合をやるからといって、すぐにStringの+をつかってはいけない

文字列の結合っていろいろなやり方があるのですが、みなさんはどんなやり方をされていますか? String firstName = "Junichi"; String lastName = "Kato"; String fullName = ""; fullName += firstName; fullName += lastName; とか、もちろんやってないで…

数値がBigDecimal型な計算式言語を作ってみた(2)

http://d.hatena.ne.jp/j5ik2o/20091107/1257598591 の続きです。まず、Calculatorのソースから。 /** * 計算式を渡すと指定した丸め方式で計算する計算機クラス。 * * @author j5ik2o * */ public class Calculator { private final EvaluateContext evalua…

数値がBigDecimal型な計算式言語を作ってみた

どもー、しげる塾 一期生のかとうです。 を見て悲しくなった。Javaってひどい。0.1は文字列で渡さないと誤差が出るってさ。泣ける。C#なら Console.WriteLine( 1.00M - 9M * .10M );でOK 「Javaってかわいそうとか、ひどい」っていわれたので、BigDecimalで…

前向きな人にコードレビュー

IT業界3年目の人で非常に前向きな方とお友達になりましたw ブログのタイトルからしてぶっ飛んでるんですがwww 勤務時間をテキスト形式で保存 コードを晒すことはすばらしいねー。適当にコードレビューしてみよう。 コマンドライン引数は1とか0ではなくてstar…

XMLとオブジェクトの変換をする方法

XMLファイルをプログラムからアクセスする方法をおさらいすると DOM SAX StAX といろいろある。 DOMとSAXとStAXと。 - 都元ダイスケ IT-PRESS このあたりを見てもらうとわかりやすい。XMLにアクセスする場合は、だいたいはモデルに変換することが多い。上記…

ジェネリック型配列は作れるか?

ごきげんうるわしゅぅ。さて、今回はジェネリックスの話題。 ジェネリックスになれてくるとうっかり書いてしまうのが、以下のコード。 public class MyArray<E>{ private E[] elements; public MyArray(int n){ elements = new E[n]; } public E get(int index)</e>…

小数点の計算をやるからといってすぐにfloatやdoubleを使ってはいけない

おつかれさまです。型を選ぶというのはプログラミングの基礎中の基礎ですが、以外に開発の現場でも注意が必要なのが、floatとdoubleの精度の問題があります。これぐらい当然と思っていたのですが、最近よく耳にしますので、あえて言及wこれらの型の目的が科…

例外の再考

愛する部下の一人がよいエントリを書いてくれたので、私も重い腰をあげてみたw Throwableについて本気出して考えてみた 2nd Season - 都元ダイスケ IT-PRESS 短時間で、ようまとめたなーwチェック例外は、Java以外の言語では聞いたことがないのですが。Java…

チェック例外がJavaにあってC#にない理由

例外の再考 - じゅんいち☆かとうの技術日誌に引き続き、チェック例外がJavaにあってC#*1になぜがないか考察してみようと思います。また、いろいろググっているとよい記事がありました。 なぜ C# の言語仕様に検査例外がないのか?という記事。 "Why doesn't …

JDKを読む 〜 ArrayList 〜

うちのスタッフの連中と昼間話題になったのでJDKのソースを少し読んでみることに。非常に基本的なことなんで諸先輩方には退屈なエントリですが、、、ここは初心に戻ってまずArrayListから。 ArrayListクラスの中 Arrayだけに内部は固定長の配列です。 余談で…

素のJdbcManagerあります

ここにあります。http://sourceforge.jp/projects/sisioh/svn/view/altair/?root=sisiohsisioh-jdbc-jpa-exampleがサンプルなんですが、 sisioh-commons sisioh-factory-enhancer sisioh-jdbc-commons sisioh-jdbc-datasource sisioh-jdbc-transaction sisio…

Serializableの飼いならし方

さて、Javaのシリアライズを改めて復習してみる。 まずこのあたりから。まぁ、よくわからん。。。 java.io インタフェース Serializable Effective Java 第2版 (The Java Series)作者: Joshua Bloch,柴田芳樹出版社/メーカー: ピアソンエデュケーション発売…