タグ

ブックマーク / ryoasai.hatenadiary.org (17)

  • Javaの型パラメーターに対してstaticメソッドを呼び出した場合の挙動 - 達人プログラマーを目指して

    以前にJavaの配列関連で調べたことがあったのですが、Javaの総称型は型消去によって直感的でない挙動をする場合があります。 Java言語のClassクラスが持つちょっと不思議な性質について - 達人プログラマーを目指して Java5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる - 達人プログラマーを目指して 特に、総称型の型パラメーターTについては以下はコンパイルできないという制約があります。 new T() new T[配列サイズ] catch (T ... extends T T.class instanceof T また、staticメソッドやstatic初期化ブロック内でクラスの型パラメータを使えないという制約もあります。 AngelikaLanger.com - Java Generics FAQs - Type Parameters - An

    Javaの型パラメーターに対してstaticメソッドを呼び出した場合の挙動 - 達人プログラマーを目指して
  • SIerにはコード記述の自動化からビルド・デリバリの自動化へのトレンドの変化を理解してほしい - 達人プログラマーを目指して

    ちょっと前にTogetterで作成したまとめに対して大きな反響をいただきました。 SIerは自動化する対象が違っているのでは? - Togetter これは、私が Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler)) 作者: Jez Humble,David Farley出版社/メーカー: Addison-Wesley Professional発売日: 2010/07/27メディア: ハードカバー購入: 3人 クリック: 141回この商品を含むブログ (23件) を見るを読み始めて、ふとつぶやいた をきっかけに始まったTL上での議論をまとめたものです。このは、7月に行わ

    SIerにはコード記述の自動化からビルド・デリバリの自動化へのトレンドの変化を理解してほしい - 達人プログラマーを目指して
  • https://ryoasai.hatenadiary.org/entry/20110321/1300696942

  • JavaのFileクラスは不変(immutable)クラスという点に関する注意点 - 達人プログラマーを目指して

    長年Javaを書いてきた人間としてはちょっと情けないことに、先日、会社で自分の書いたコードが原因でちょっとしたバグを出してしまいました。きちんとテストファーストで単体試験は書いていたのですがテストが不十分でしたね。 バグの原因は、Fileクラスの仕様をちょっと勘違いして使っていたことが原因でした。FileクラスにはrenameTo()というメソッドがあって、このメソッドの呼び出しにより、操作が成功すればもともとFileクラスのオブジェクトに対応していたファイルの名前がファイルシステム上で変更されます。ここで、うっかり、Fileクラスが可変なクラスだと勘違いしてしまっていたのですが、実は、Java Docにも明記されている通り、Fileクラスは不変(immutable)なクラスであり、一度生成したら状態が決して変更されることがない設計となっています。これは、以下のテストケースを見ると確認でき

    JavaのFileクラスは不変(immutable)クラスという点に関する注意点 - 達人プログラマーを目指して
  • SpringのJavaBeansアクセスAPIと型変換サービスは単独で利用しても利用価値が高いという事実 - 達人プログラマーを目指して

    Spring Frameworkはもともと、面倒なJavaEE環境における開発を簡易化する軽量のDIコンテナーとして有名になったので、あまり、そういうイメージがないのですが、実は、JavaSEのAPIを簡易化するためのライブラリーとしてもかなり良く設計されていると思います。実際、Springは低結合性、高凝集性、インターフェースに対するコーディングなどオブジェクト指向の設計がかなり徹底されているため、部分的な部品のつまみいも比較的容易なのです。ここでは、意外に知られていないSpring FrameworkのJavaSE簡易化機能についていくつか紹介したいと思います。これらの機能を流用して使いこなすことで、Webアプリケーションに限らず、さまざまなプログラムでJava言語を使った開発の生産性を向上させることができると思います。 JavaBeansに対するプロパティアクセスの簡易化 Spri

    SpringのJavaBeansアクセスAPIと型変換サービスは単独で利用しても利用価値が高いという事実 - 達人プログラマーを目指して
    j5ik2o
    j5ik2o 2011/05/06
    UI層とドメイン層のミスマッチを解消できそう。
  • Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して

    Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラリを自分で正しく定義することは非常にスキルがいるが、事前に定義されたクラスを使うだけであれば、それほど難しくないとされています。しかし、Java言語の総称型はエントリで説明するように特殊なところがあり、単に利用するだけでも他の言語に比べて遥かに難しいところがあるというのも事実です。特に総称型をパラメータ化する際に指定するワイルドカード型(List<? extends Serializable>など)の意味を正しく理解して使いこなすことは簡単なことではありません。その結果、昔のJDK1.4までのように型パラメーターのない

    Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して
  • クラウドが昔ながらのSIerの仕事を奪うようになってきてはいるけれど - 達人プログラマーを目指して

    Salesforceといえば、ちょうど最近行われたSalesforce Developers | Developer Eventsというイベントに参加された方もSI業界では多くいらっしゃるのではないかと思います。私はそのイベントには参加していませんでしたが、先日会社でSalesforceのSE*1の方からお話を伺う機会がありました。 Salesforceの提供するForce.comのようなパブリッククラウド上での開発を最初からなんとなく敬遠してしまう組織もあるかもしれませんが、多くの業務システム開発に対しては開発生産性がJavaや.NETの5倍という宣伝文句は決して大げさでないケースが多いと考えます。実際この5倍という数字は日における実績というよりワールドワイドでの実績に基づくものと思われますが、海外ではそもそもSalesforceが対象とするような領域ではもともと生産性の高いフレームワ

    クラウドが昔ながらのSIerの仕事を奪うようになってきてはいるけれど - 達人プログラマーを目指して
  • SI業界の改革には責任者に対するショック療法が有効かもしれない - 達人プログラマーを目指して

    私の直属の上司ではないのですが、会社の大先輩がインドに1ヶ月程滞在し、現地のSIerの開発現場を視察してきました。現地での研修を提供している会社は、あのデータさんの子会社になっているみたいです。 http://www.vertexsoft.co.jp/services/learning-in-india.html そこで、実際にインドのプログラマーアジャイルプロセスを使って開発をしている現場を目の当たりにし、いい意味ですっかり洗脳されて帰っておいでになりました。 1週間ごとに追加機能をリリース スタンドアップミーティングによるタスクの割り当て 徹底的に自動化された進捗管理*1 徹底的に自動化されたテスト きわめて計画的で少ない残業時間 プログラマーの地位の高さと優秀さ やはり、百聞は一見に如かずといいますが、日のSI業界の開発手法が20年も遅れていると言われても、何十年も開発の現場から

    SI業界の改革には責任者に対するショック療法が有効かもしれない - 達人プログラマーを目指して
    j5ik2o
    j5ik2o 2011/03/07
    真摯に学ぶ姿勢は重要。
  • 業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して

    Java: The Good Partsののタイトルに触発されて、逆にJava言語の使いにくい部分をいくつかピックアップしてみました。Java EEなどの業務系のアプリケーションプログラマーの視点で書いていますので、別の立場ではここで指摘している事項が必ずしもBad Partではないという指摘もあるかもしれませんし、他にもいろいろなポイントがあると思いますが、とりあえず、私の独断で思いついたものを10個説明したいと思います。 1.標準APIのチェック例外が扱いにくい Java言語のチェック例外は当にGood Partなのか? - 達人プログラマーを目指してでも取り上げましたが、Bad Partの第一番目として標準APIのチェック例外が扱いにくいという点を指摘させていただきたいと思います。チェック例外については、理屈上コンパイラーによって例外の処理をプログラマーに強制させることができるす

    業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して
  • RMIのサーバーオブジェクトはスレッドセーフでなくてはならない - 達人プログラマーを目指して

    RMIのAPIJava Docに書かれていないようなので見落としがちなことですが、RMIのサーバーオブジェクト(Remoteの実装クラス)は、複数のスレッドから同時に呼び出される(可能性がある)ようです。このことは、 Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行購入: 30人 クリック: 442回この商品を含むブログ (174件) を見るJava Concurrency in Practice 作者: Brian Goetz,Tim Peierls,Joshua Bloch,Joseph Bowbeer,David Holmes,Doug Lea出版社/メーカー: Addison-Wesley

    RMIのサーバーオブジェクトはスレッドセーフでなくてはならない - 達人プログラマーを目指して
  • Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指して

    デブサミ2011会場のオライリーのブースで目に入ったため、以下のを購入しました。 Java: The Good Parts 作者: Jim Waldo,矢野勉,笹井崇司出版社/メーカー: オライリージャパン発売日: 2011/02/24メディア: 大型購入: 3人 クリック: 148回この商品を含むブログ (37件) を見る180ページほどの薄いですし、各章は独立して気軽に読むことができます。早速、気になるいくつかの章から読んでみました。ただし、監訳者のid:t_yano氏も前書きで 書が、みなさんにとってJava以外の言語についても考えるようになり、みなさんのプログラミングの世界がさらに豊かになることを望みます。 と書かれているように、このから直接Javaのプログラミングのテクニックや知識を得るというよりも、ベテランの上級者がJavaについて考え直すきっかけ作りとして読むのが良

    Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指して
  • 自分の定めた目標に向かって努力するということ - 達人プログラマーを目指して

    最近id:j5ik2oさんの努力する人が最後には”できる人”になる - じゅんいち☆かとうの技術日誌というエントリーを読んだことがきっかけで、エンジニアとして「努力する」ということについてちょっと考えてみました。 努力と目標設定 普段意識していなかったのですが、もともと努力という言葉にはある目的に向かってがんばるという意味が込められているようですね。 努力 - Wikipedia 英語のeffortとかendeavorといった単語にも似たような意味がこめられています。だから、来、努力とは、ある目的に向かっていろいろ試行錯誤するということが質的なのであり、そう考えると2011-02-08で書かれていることも来の意味での努力ということを否定しているものではないのかなと思います。ただ、日常では決まった目標もなく無駄に「あくせく努力する」などという否定的な使われ方もしますし、根性論 - Wi

    自分の定めた目標に向かって努力するということ - 達人プログラマーを目指して
    j5ik2o
    j5ik2o 2011/02/12
    素晴らしい。理屈だけでも感情だけでもだめその両面で考えて行動することが大事。それが伝わるエントリ。
  • プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して

    最近はアーキテクトという役割で客先に常駐し、フレームワークの選定をしたり、事前に共通部品を設計したりする役割を担う仕事を引き受けることが結構あります。そこで運よくお客様のマネージャーがオブジェクト指向開発の経験が十分にある方だと、IDEなどの開発環境やインターネット接続環境を当然のように用意してくれるので最初から仕事がスムーズにできるのですが、そうでないとMS Officeしか入っていないロースペックのノートPCを渡されて、要件定義フェーズの期間中、フレームワークの設計をお願いしますとか、私としてはちょっと首をかしげてしまうような困ったことを言われてしまう場合があります。開発フェーズが始まる半年後まではコーディングは基的に不要という考え方です。アプリケーションのアーキテクトという役割では少なくともコーディング規約を考えたり、ツールやフレームワークの選定をしたりする必要がありますし、プロジ

    プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して
    j5ik2o
    j5ik2o 2011/02/07
    同意。切り離せませんね
  • 次世代のモックフレームワークであるJMockitの基本的な使い方 - 達人プログラマーを目指して

    以前のモックフレームワークの技術的制約 今まで私が担当してきたプロジェクトにおいては、モックオブジェクトを使ったJUnitの単体試験はjMockとEasyMockのいずれかのフレームワークを利用して行ってきました。しかし、これらのフレームワークはJavaプラットフォームにおけるコード自動生成の考え方の変遷で説明したように動的プロキシーに基づいているため、以下のような制約がありました。 モック化する対象の型はインターフェースを実装しているか、継承可能なクラスであること モック化するメソッドはfinal、static、privateでないこと*1 モック化するロジックはコンストラクターの呼び出しではないこと モックオブジェクトをテスト対象クラスにDIかパラメーター経由で引き渡すことが可能であること モック化する場合はクラス全体をモック化する必要があること(getterやsetterなどは物の

    次世代のモックフレームワークであるJMockitの基本的な使い方 - 達人プログラマーを目指して
    j5ik2o
    j5ik2o 2011/02/05
    モックのためにある程度設計を歪めることを当然という感覚もあるけど、本来はテストの仕組み側で吸収したい。そういう意味ではJMockitは理想に近い。
  • 想像以上にガラパゴス化した日本のIT業界? - 達人プログラマーを目指して

    出版されている技術書のタイトルやネット上での情報を元に、なんとなくシステム開発で使われる技術が国によって差があるように感じるということを、これまでいろいろな記事で書いてきたのですが、はたして実際のところはどうなのでしょうか?300年前なら、Manningのin actionシリーズの表紙に描かれている人物*1のように国ごとにいろいろな衣装があって多様な文化が存在していたのでしょうけれど、文明化された現代では、服装もべ物もそれほど違いがないというところがあります。IT業界は文字通り情報を扱う産業なのですから、世界中の最新の情報が集まってきてしかるべきなわけであり、どの国でも大差がないはずという推測もできないわけではありません。 あくまでも目安なのですが、Google Insights for Searchというサービスを利用すると、単語の検索回数を地域ごとに集計することで、各地域でどういっ

    想像以上にガラパゴス化した日本のIT業界? - 達人プログラマーを目指して
  • Java EEのearファイル形式はMavenの天敵 - 達人プログラマーを目指して

    Ant + Ivy vs Maven - 達人プログラマーを目指して で、AntとMavenの比較を行いました。そこではビルド要件の複雑度からAntが有利な場合とMavenが有利な場合について分析しています。それに関連して、最近Maven地獄に陥っているプロジェクトに関わることになり、pomのリファクタリングを行っているのですが、その作業をしていてひとつ気づいた点としてJava EEのearファイル形式はMavenの天敵であるという点があったので紹介しておきます。 earファイル形式は、Java EEの最初のころからあった形式ですし、Mavenでもしっかりとサポートしてくれて当然という期待があるのですが、意外にも現状サポートが不十分で、いろいろと問題があるということがわかりました。 ear内のモジュール間でのjarファイルの共有が困難 まず、第一にear内に複数のwarやrarなどのモジュ

    Java EEのearファイル形式はMavenの天敵 - 達人プログラマーを目指して
  • やはり、私は今後もSI業界で達人プログラマーを目指したい - 達人プログラマーを目指して

    SI業界(日)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている?に対して、実に多くの方々からコメントやトラックバックをいただきました。中でも、id:higayasuoさんのSI業界からはさっさと抜けだしたほうがいいの記事は、私としては非常にセンセーショナルかつショッキングな内容でした。私の頭の中の時計が2年前の状態で止まっていたというところあるかと思いますが、id:higayasuoさんは大手SIerにいながらSeasar2などのすばらしいフレームワークを開発され、業界でも珍しい私の憧れのプログラマー、理想像に近い仕事をされている方のように考えていたため、余計に衝撃が大きかったのだと思います。 もっといえば、プログラマも良いコードを書いていればいいという時代は終わった。これからは、プログラムをいかに金に変えるかどうかをプログラマが真剣に考える時代です。 新しいビジネス

    やはり、私は今後もSI業界で達人プログラマーを目指したい - 達人プログラマーを目指して
  • 1