ConQATを利用してソースコードの品質をチェックする

ある程度プログラマーとして経験を積めば、ソースコードを読んだときに、そのソースコードの良し悪しというものは、嗅覚を使って直感的に嗅ぎ分けることができるものです。実際、そのように体の感覚を使ってこのコードは不吉だと感じるところは実際大いにあ…

Javaプログラミング能力認定試験の問題がかなり改善されていました

以前、本ブログでJavaプログラミング能力認定試験の1級のサンプルプログラムがあまりにも旧態依然とした設計でひどいという指摘をさせていただきました。 SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラ…

こだわりのある職人プログラマーほど、無駄なコードを少なくしたいものという事実を理解してほしい

ちょっと興味深いエントリが目に留まりました。「プログラミングへのこだわり」を方向づける: 設計者の発言基本的に、この方自身もプログラマーや開発者をされているようですし、他のエントリを読んでも「プログラマーの地位向上をすべき」ということで、私…

Clojure言語基本の「き」(その2)

前回Clojure言語基本の「き」 - 達人プログラマーを目指してに引き続き、Clojure言語を新しく覚える際にポイントとなる事柄をまとめていきたいと思います。 逐次実行 (do 式1 式2 ... 式n)の形式を使うことで、処理を逐次実行させることができます。最終的に…

JavaEE標準の進化から最近の業務アプリケーション開発手法の変遷について考える

昨日まとめの記事EJBコンテナが分散コンポーネントモデルから軽量なDIコンテナに変化してきた歴史を振り返る - 達人プログラマーを目指してを書いてみて、この10年間でエンタープライズJava開発の生産性がいかに向上してきたということをあらためて思い出し…

EJBコンテナが分散コンポーネントモデルから軽量なDIコンテナに変化してきた歴史を振り返る

十年一昔といいますが、文字通り一昔前の書籍ではJ2EEのEJBコンポーネントはプロセスが分散化されたリモート呼び出しにより処理を行う分散コンポーネントとして説明されています。そして、残念ながら現状Java EE関連の日本語の書籍はこうした古い時代に書か…

Java EEサーバーが重くてテスト不能というイメージはもう過去の話かもしれない

Java EE 5まではいろいろな面で生産性が低かったと言わざるを得ないところがあった 今まで仕事上、Java EEのサーバーを実行基盤として用いるさまざまなシステムの開発に関わってきましたが、JavaEE(古くはJ2EE)のサーバーというと経験上 xmlの設定ファイル…

Clojure言語基本の「き」

ふと思い立ってClojureの勉強を始めることにしました。 - 達人プログラマーを目指してで書いたように、10日前にClojureの勉強を始めました。まだ勉強を始めたばかりのということもあり、他人に上手く正確に説明できる段階ではないかと思いますが、自分自身超…

JavaをSEとEEに分類するのは今では無意味になってきている?

ご存知のとおり、かなり以前からJavaプラットフォームはJava SEとJava EEとに分かれています。Java EEはJava SEを含んだ拡張APIを含み、エンタープライズ開発向けのプラットフォームということで一般的にはなんとなく理解されていますが、よくよく調べてみる…

Spring MVCのJson変換機能で@DateTimeFormatが無視される件の対処方法

以前に、Spring MVCのJson変換機能について紹介しました。 Spring MVCでJSONデータを返すための手順 - 達人プログラマーを目指して また、Springの型変換サービスについても以下で紹介しました。 SpringのJavaBeansアクセスAPIと型変換サービスは単独で利用…

JBoss AS5.1上でJPAを完全にSpring駆動で実行させる方法

JPAプロバイダーを起動するしくみがJavaEE5対応のアプリケーションサーバに組み込まれているため、JPAの仕様に従って、META-DATA/persistence.xmlファイルが格納されていると、アプリケーションサーバーによって読み込まれて処理されます。読み込まれたJPAの…

ふと思い立ってClojureの勉強を始めることにしました。

最近は並行プログラミングの必要性から、関数型言語の人気が以前にもまして高まってきているという話はいろいろなところで耳にするようになったのですが、普段はJavaしか書かない私のような普通の業務プログラマーにとっては、正直なところHaskellやScalaと…

SpringのJavaBeansアクセスAPIと型変換サービスは単独で利用しても利用価値が高いという事実

Spring Frameworkはもともと、面倒なJavaEE環境における開発を簡易化する軽量のDIコンテナーとして有名になったので、あまり、そういうイメージがないのですが、実は、JavaSEのAPIを簡易化するためのライブラリーとしてもかなり良く設計されていると思います…

実はJUnit4のassertThat()ってしっくりこないんです!(特に、メタプログラミングするレイヤでは)

私のように昔からJUnitのコードを書くことが習慣となっていると、値の検証はassertEquals(期待値, 実際値)メソッドで行うというというのがずっと常識となっていました。しかし、4年ほど前にリリースされたJUnit4.4以降では、長年親しんできたassertEquals()…

O/Rマッピングで緩和されるインピーダンスミスマッチには静的と動的の側面がある

一般的な業務アプリケーションではデータを永続化するために、RDBMS(関係データベース管理システム)を利用します。RDBMSでは大量のデータを効率的に検索したり、集約してレポートを作ったりすることが得意ですし、一般的に業務システムで求められるトラン…

普通のSI会社では評価されにくいのだけど、多くのシステムは研究熱心な技術者の小さな発見と工夫の積み重ねによって支えられているのでは?

昨晩遅く、id:backpaper0さんの以下のツイートが目にとまりました。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = i…

SpringのTypeDescriptorを使うと型パラメーターを簡単に取得できる

以前に、Java5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる - 達人プログラマーを目指してで、Java5からリフレクションAPIで総称型を扱うために導入されたTypeインターフェースについて説明しました。復習しておくと、 Cla…

普通の業務系Java PGでなくても一度はハマる?JavaScriptのthisの奇妙な振る舞い

先日書いた普通の業務系PGには意外と知られていないJavaとJavaScriptの相違点10選 - 達人プログラマーを目指してでは、これからJavaScriptを本格的に勉強する層のプログラマーの人を対象に、JavaとJavaScriptの違いを理解する上で重要な10個のポイントにつ…

普通の業務系PGには意外と知られていないJavaとJavaScriptの相違点10選

以前はJava EEの普通のWebアプリケーションで、JavaScriptはあくまでも利便性のために補助的に使うものという認識がありましたが、さすがに最近では普通の業務系のSI案件でもテーブル表示や入力補助などで高度なAjaxライブラリーの使用が当たり前のように求…

DDDの読書記録(第4章、ドメインを隔離する)

DDDのモデル駆動設計では、在庫管理、注文管理といったドメインから生じる問題を解決するのに特化した部分に焦点を当てます。そして、ドメインの問題を他の問題から明確に切り離すことを設計上の至上命令としています。 これは夜空に星座を見つけ出そうとす…

DDDの読書記録(第3章、モデルと実装を結びつける)

DDDの第3章では、モデルと実装との結びつきについて書かれていますが、この章はこの本の中でも私のもっともお気に入りの内容が書かれている章の一つです。従来、モデルやモデル駆動というと、コーディングとは対極にあるもの、アジャイルの思想と相容れない…

DDDの読書記録(第2章、コミュニケーションと言語の使い方)

アジャイルプロセスのXPでもコミュニケーションに重点が置かれますが、その考え方に影響を受けているDDDでも業務担当者とプログラマーとの間のコミュニケーションを重視しているようです。しかし、これは「報連相」「根回し」「場の空気を読む」といった、い…

DDDの読書記録(第1章、知識のかみ砕き)

引き続き、DDDの読書記録です。あまり詳しく書きすぎるとネタバレになって本が売れなくなってしまうといけないので、読んでいて特に気になったポイントにしぼって書いていこうと思います。 第1章とびら(PCBエンジニアとの会話、P7) 第1章の最初の部分でプ…

DDDの読書記録(第1部序章、ドメインモデルを機能させる)

先日開催されたQCon Tokyoにて、翔泳社さんのブースでエリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)をTシャツ付きで購入しました。そして、Twitterにて翔泳社の岩切さんと window.twttr = (function(d, s, id) { …

DevLoveのBeautiful Development(DDD勉強会)に参加してきました

昨日、DevLoveの主催するBeautiful Development(ソフトウェアの核心にある複雑さに立ち向かう)という勉強会に参加してきました。 https://sites.google.com/a/devlove.org/development/past-beneficiaries/devlove_ddd2 今回は、Domain-Driven Design(DDD…

IT業界における「技術力」の意味するものは、日進月歩の勢いで変化しているということを理解してほしい

前回のエントリー日本のSI業界でこそ、専門の技術者の必要性がもっと見直されるべきではないのか? - 達人プログラマーを目指してで、「技術の専門家」という言葉を用いたのですが、人によってこの言葉に対してイメージするものが結構違うのではないかと思い…

日本のSI業界でこそ、専門の技術者の必要性がもっと見直されるべきではないのか?

Twitterでフォローさせていただいている@chok12jaさんのつぶやき window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; …

Spring MVCでフラッシュスコープの機能を簡単に実装する方法

JSF2.0やSeamなど、新しいフレームワークではフラッシュスコープという機能を利用することができます。これはもともとRuby on Railsで有名になった処理方式だと考えられますが、フラッシュにデータを登録しておくと一回のHTTPリダイレクトの最中のみデータが…

Java言語のClassクラスが持つちょっと不思議な性質について

前回のエントリーJava5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる - 達人プログラマーを目指してで、Javaの型システムが総称型の導入によりJava5から大きく拡張されたということを説明しました。ポイントは 総称型により…

Java5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる

Java5における総称型(generics)の導入に伴い、Javaの型システムは以前と比べて高機能になった反面、理解するためのハードルが高くなっています。もちろん、Javaの型についてきちんと理解するためには言語仕様を勉強すればよいのですが、手っ取り早く理解す…