タグ

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

  • Spring MVCでコントローラーのリクエストハンドラメソッドのメタ情報を記録する方法 - 達人プログラマーを目指して

    正攻法でアクションハンドラメソッドのメタ情報を取得することは困難 開発で利用するフレームワークを作成する際には、実行対象となるオブジェクトの型やメソッドに付けられたアノテーションなどのメタ情報を利用したい場合が多くあります。特に、Spring MVCを拡張してさまざまなことを裏でやらせたい場合には、現在実行中のクラスやメソッドのメタ情報(ClassクラスやMethodクラスのインスタンス)をスレッドごとにグローバルにアクセス可能なコンテキストオブジェクト内に記録しておくと便利です。なぜなら、Springの場合ViewResolverやViewなど独自に拡張可能なインターフェースが多数提供されているものの、通常の手段では実行中のクラスやメソッドの情報をパラメーターなどから簡単に取得できないことが多いからです。 たとえば、Spring MVCでセッション属性のキーをコントローラーごとに別々にす

    Spring MVCでコントローラーのリクエストハンドラメソッドのメタ情報を記録する方法 - 達人プログラマーを目指して
  • Spring MVCのススメ - 達人プログラマーを目指して

    先日、Struts1に代わるWebフレームワークの選択 - 達人プログラマーを目指してにて、現状アクションベースのMVCフレームワークとしてはSpring MVCが有望ということを書いたのですが、今までStrutsの影に隠れてあまり人気がないようですね。*1これから何が流行りそうかというマーケティング上の問題はおいておくとして、純粋に技術的な観点から、私がSpring MVCで気に入っているいくつかの点について説明します。 インターフェースに対するコーディングの徹底による拡張性の高さ Spring MVCはDIコンテナーとしてのSpringのコア機能に隠れてあまり有名でないかもしれませんが、実は、Springが開発された当時から存在するコンポーネントです。ですから歴史的には意外に古く2003年くらいから存在しているということになります。(その原型は実践J2EEシステムデザインのサンプルコー

    Spring MVCのススメ - 達人プログラマーを目指して
    gologo13
    gologo13 2016/05/30
    結構前だけど良い資料
  • アーキテクト向けのパターン本 - 達人プログラマーを目指して

    ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系 作者: F.ブッシュマン,H.ローネルト,M.スタル,R.ムニエ,P.ゾンメルラード,Frank Buschmann,Hans Rohnert,Michael Stal,Regine Meunier,Peter Sommerlad,金沢典子,桜井麻里,千葉寛之,水野貴之,関富登志出版社/メーカー: 近代科学社発売日: 2000/12メディア: 単行購入: 15人 クリック: 448回この商品を含むブログ (54件) を見るPattern-Oriented Software Architecture, A System of Patterns (Wiley Software Patterns Series) 作者: Frank Buschmann,Regine Meunier,Hans Rohnert,Peter Somme

    アーキテクト向けのパターン本 - 達人プログラマーを目指して
  • EJBコンテナが分散コンポーネントモデルから軽量なDIコンテナに変化してきた歴史を振り返る - 達人プログラマーを目指して

    十年一昔といいますが、文字通り一昔前の書籍ではJ2EEのEJBコンポーネントはプロセスが分散化されたリモート呼び出しにより処理を行う分散コンポーネントとして説明されています。そして、残念ながら現状Java EE関連の日語の書籍はこうした古い時代に書かれたものがほとんどとなっています。それゆえ、 開発効率がきわめて悪い 実行性能が悪い*1 仕様がきわめて複雑で理解が大変 といった悪いイメージが定着してしまっているのではないかと思います。しかしながら、最新バージョンのJava EE6では、Spring、Guice、SeamなどのOSSの軽量コンテナのアイデアを取り込むことにより、以前とは比較にならないくらい開発効率が改善されているという事実があります。 ここでは、Hello WorldのEJBの書き方を以前の古いバージョンから順次振り返りながら比較してみることで、EJBのプログラミングモデル

    EJBコンテナが分散コンポーネントモデルから軽量なDIコンテナに変化してきた歴史を振り返る - 達人プログラマーを目指して
    gologo13
    gologo13 2016/05/29
    EJBのことはわからんが、Springが軽量FWと呼ばれていることにジェネギャを感じる
  • アーキテクトもプログラミングするべきか? - 達人プログラマーを目指して

    プログラミングと設計は来切り離せないものなのでは - 達人プログラマーを目指して で以下のようなコメントをいただきました。 アプリケーションのアーキテクトという役割についてちょっと理解が曖昧だったのがこのエントリ読んでだいぶスッキリした。今度の開発系の勉強会のネタにとりあげようかな アーキテクトの働き方の参考に。 そもそもオブジェクト指向を当に理解していてプログラミングも得意なアーキテクトがどれくらい居るのやら。 全体の設計がちゃんと推敲されていて、きちんと疎結合が達成されているなら、後の修正にも耐えられる。 アーキテクトが何をどこまで責任持つのか、という認識が整合されてないんじゃないの 現代的アーキテクトの仕事 このようなコメントから、「アーキテクト」という仕事の内容については、実はよくわからないと考えている方が多いように感じられます。実は、私自身も「アーキテクトという役割で仕事をす

    アーキテクトもプログラミングするべきか? - 達人プログラマーを目指して
    gologo13
    gologo13 2016/05/29
    同意。FWやライブラリ、DBの詳細を知らないと本当は使えるという意思決定はできないはず
  • プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して

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

    プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して
  • 開発コストや技術リスクを考えない「上流設計」がシステムの複雑化と大規模な障害の原因となっているのでは? - 達人プログラマーを目指して

    皆さん、明けましておめでとうございます。昨年の後半は私自身SI業界からWeb業界へ転職したことなど仕事環境の変化があり、ブログの更新頻度も鈍りがちになってしまっていましたが、年もどうぞよろしくお願いいたします。 さて、ちょうど、一年前のお正月にはグルーポンのおせち料理事件が話題になっていましたが、私はおせち料理の品質とIT業界における品質の問題を絡めて、以下の記事を書きました。 グルーポンのおせち事件を受けてSI業界が当に教訓とすべきこと - 達人プログラマーを目指して この記事では、一般にSIerによって開発される日のシステムはあの事件おせち料理のように、低い品質に甘んじているが、多くの場合、社内システムなどではそういった品質の問題が公に明らかにされることが少ないのではということを指摘しました。ただ、その時は私の希望も込めて 最近はOSSやクラウドなどの影響で社内システムもどんど

    開発コストや技術リスクを考えない「上流設計」がシステムの複雑化と大規模な障害の原因となっているのでは? - 達人プログラマーを目指して
    gologo13
    gologo13 2016/05/29
  • こだわりのある職人プログラマーほど、無駄なコードを少なくしたいものという事実を理解してほしい - 達人プログラマーを目指して

    ちょっと興味深いエントリが目に留まりました。「プログラミングへのこだわり」を方向づける: 設計者の発言基的に、この方自身もプログラマーや開発者をされているようですし、他のエントリを読んでも「プログラマーの地位向上をすべき」ということで、私にとっても非常に共感することをおっしゃっているのです。それでも、ちょっとこのエントリの内容については疑問に思うところがあったので、勝手ながら私の意見を書かせていただきたいと思います。 業務システムの生産性や保守性を高めるための基は「コードを1行でも減らす」である。なぜなら、コーディングとこれにともなうテスティングこそが、開発作業の中でもっとも人手のかかる作業だからだ。個別案件においては、良いコードだろうが悪いコードだろうが少なければ少ないほどよい。 これは、まさにおっしゃる通りですね。もちろん、可読性ということもあるため、厳密には最少のコードが最良とい

    こだわりのある職人プログラマーほど、無駄なコードを少なくしたいものという事実を理解してほしい - 達人プログラマーを目指して
    gologo13
    gologo13 2016/05/29
  • OSS Javaフレームワークはどんどん高度化している - 達人プログラマーを目指して

    以前、いつまでStruts1を使い続けるの?という記事を書きました。技術から離れているSEの方は、いまだにJavaのオープンソースフレームワークと聞くとStrutsくらいしか思い浮かばないという人も多いと聞きますが、その記事では、Strutsの問題点をあげて、そろそろ新しいフレームワークを使いましょうという話をしました。 しかし、単にSpring MVCに移行しましょうということではなくて、OSSを利用したエンタープライズJava開発の世界*1では、もっと根的なレベルで進化が起こっているのではないかということを最近考えます。単純にOSSのJavaフレームワークといっても、時代によって考え方が大きく変わってきているという事実があるのです。この点についてちょっとまとめてみたいと思います。 第1世代(2000年〜2003年) いわゆるStrutsとかHibernateといったフレームワークで、

    OSS Javaフレームワークはどんどん高度化している - 達人プログラマーを目指して
  • 開発チームにアーキテクトがいないなと感じてしまうような、残念なコードスメルの例 - 達人プログラマーを目指して

    まったく個人的なモチベーションの問題から、前回の最終更新から2年以上が経過してしまい、多くの読者のみなさんにはご心配をおかけいたしました。「プログラミングに関して調べたことや日々感じたことをメモとして残していきたいと思います。」というもともとの原点に立ち返って、あまり気負わずに、また今後も時々更新していけたらと思います。今までこのブログの主なテーマとして、JavaEEやSpringといったような、いわゆる業務開発で使われるような技術を中心としてきたわけですが、最近Springを使ったJavaの開発に(アーキテクトではなく)プログラマーとしてちょっと参加する機会があったので、その時気づいたこと、感じたことを書いてみたいと思います。 さて、皆さんはアーキテクチャやアーキテクトという言葉に対してはどのようなものをイメージするでしょうか。システムのセキュリティを確保するための方式であったり、大量の

    開発チームにアーキテクトがいないなと感じてしまうような、残念なコードスメルの例 - 達人プログラマーを目指して
    gologo13
    gologo13 2016/05/29
    いい内容 / コードスメル(code smell) の定番パターン、高凝集と低結合を意識する、Utilはビジネスロジックに依存しないコードが凝集されていればOK(JSON,String,etc)
  • ConQATを利用してソースコードの品質をチェックする - 達人プログラマーを目指して

    ある程度プログラマーとして経験を積めば、ソースコードを読んだときに、そのソースコードの良し悪しというものは、嗅覚を使って直感的に嗅ぎ分けることができるものです。実際、そのように体の感覚を使ってこのコードは不吉だと感じるところは実際大いにあり、コードの臭い(code smell)として知られています。 コードの臭い - リファクタリングの必要性を示す兆候 これはファウラーの名著 リファクタリング―プログラムの体質改善テクニック (Object Technology Series) 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史出版社/メーカー: ピアソンエデュケーション発売日: 2000/05メディア: 単行購入: 94人 クリック: 3,091回この商品を含むブログ (312件) を見るでも紹介されており、こういった不吉な部分を適切に嗅ぎ分け

    ConQATを利用してソースコードの品質をチェックする - 達人プログラマーを目指して
    gologo13
    gologo13 2016/05/29
    メトリクス, Metrics
  • Spring MVCの設定でContextLoaderListenerを使う必要があるケース - 達人プログラマーを目指して

    従来のSpring開発者の常識では、web.xmlにて ContextLoaderListenerを設定してWebアプリケーションで共通のコンテキストを読み込む DispatcherServletを設定して、サーブレットごとのコンテキストを読み込む というように2階層のアプリケーションコンテキストを読み込ませることが普通でした。この構成ではちょっとわかりにくいのですが、DispatcherServletの読み込んだコンテキストがContextLoaderListenerの読み込んだグローバルなコンテキストの子供として階層化されます。子供のコンテキストは親コンテキストにアクセス可能ですが、その逆は不可能ということにより、通常はコントローラーやDispatcherServlet固有の各種オブジェクトの設定を子供のコンテキスト側で読み込ませ、サービス層などその他のクラス親のコンテキストで読み込ま

    Spring MVCの設定でContextLoaderListenerを使う必要があるケース - 達人プログラマーを目指して
  • Spring MVCでフラッシュスコープの機能を簡単に実装する方法 - 達人プログラマーを目指して

    JSF2.0やSeamなど、新しいフレームワークではフラッシュスコープという機能を利用することができます。これはもともとRuby on Railsで有名になった処理方式だと考えられますが、フラッシュにデータを登録しておくと一回のHTTPリダイレクトの最中のみデータが保持され、次回以降のリクエスト時までに自動的に削除されます。従来こうした仕掛けをHTTPセッションを使ってアプリロジック中で毎回個別に実現するのは結構面倒で、またデータが正しくクリアされずに残存するなどのバグも簡単に発生しがちでした。 以前はあまり知られていませんでしたが、2重送信の問題を回避するために、最近はPRG(Post/Redirect/Get)パターンというのがよく知られるようになっています。*1このパターンでは、POSTリクエストで画面遷移する場合は、間にリダイレクトとGETをはさむことでURLバーのアドレス表示と実

    Spring MVCでフラッシュスコープの機能を簡単に実装する方法 - 達人プログラマーを目指して
  • JavaをSEとEEに分類するのは今では無意味になってきている? - 達人プログラマーを目指して

    ご存知のとおり、かなり以前からJavaプラットフォームはJava SEとJava EEとに分かれています。Java EEはJava SEを含んだ拡張APIを含み、エンタープライズ開発向けのプラットフォームということで一般的にはなんとなく理解されていますが、よくよく調べてみると両者の境界線はかなりあいまいで、人によってさまざまな解釈の違いや混乱があるようです。 一応、Java SEとJava EEのJava DOCを調べてみると主なものとして以下のようなAPIが含まれていることがわかります。 プラットフォーム API Java SE 基言語ライブラリー、通信ライブラリー、 GUI関連ライブラリー、JDBC、JNDI、RMI、Java IDL(CORBA)、JMX Java EE サーブレット、JSP、JSF、EJB、JPA、JMS、JTA、JCA Webサービス関連ライブラリー、Java

    JavaをSEとEEに分類するのは今では無意味になってきている? - 達人プログラマーを目指して
  • アマゾンにおけるソフトウェア開発の仕事について感じたこと - 達人プログラマーを目指して

    ちょうど、先日アマゾンのオープンハウスというイベントでお話をさせていただく機会があったのですが、開発者向けの20日のセクションだけで90名近くの方々にご参加いただきました。平日にもかかわらず、多数の方々にご参加いただき、どうもありがとうございました。 私自身は、昨年秋にSIerからアマゾンに転職してまだ半年ですが、この機会にアマゾンにおけるソフトウェア開発の文化や考え方について、ブログでご紹介できる範囲でまとめてみたいと思います。 私は、ずっとブログに書いてきたようにSI業界からの転職だったのですが、一般的なSIerにおけるソフトウェア開発の考え方や手法といろいろな面で違っているということは予想していたというか、もともと覚悟の上での転職でした。それでもやはり最初のうちはあまりにも大きな変化に自分の仕事のスタイルを合わせるのにいろいろと苦労しました。基的には転職したての頃に抱いた感想(転職

    アマゾンにおけるソフトウェア開発の仕事について感じたこと - 達人プログラマーを目指して
  • 1