タグ

ブックマーク / blog.j5ik2o.me (9)

  • 努力する人が最後には”できる人”になる - かとじゅんの技術日誌

    先日の2月3日で39歳になりました。社会人20年を振り返ると苦労の歴史でした。でも、それは誇らしいことでもあります。 今でこそ「できる人」というイメージが強いかもしれませんが、、駆け出しのころは全くできない子でした。 ということで、苦労話。タイトルがありきたりですが、でも難しいことなんであえてつけてみた。押し付ける気も全くないですけど、できるやつが何 後付でカッコつけてんだよ!とか、非論理的だなって言われると思います。それは否定しません。そんなことは承知の上で、以下 おやじのうんちくをたれます。 限界を超えた努力 初めてのプログラミングは10歳の時にBASICでプログラムです。なんか難しいこと簡単にやらせてみたい欲求があって、PCというのは難しいけど楽しいかもしれないと思った。その頃の「好き」のレベルはまだ淡い幻想です。 それ以来、社会人になるまでPCゲーム機でしたが、社会人になってC言

    努力する人が最後には”できる人”になる - かとじゅんの技術日誌
    syanbi
    syanbi 2013/06/20
    2013年6月になってから読みました
  • ウェブアプリケーションの構造について - かとじゅんの技術日誌

    日経ソフトウエア 11月号の特集2で「最新Eclipseで良いJavaプログラムを書こう」に関連する話題として、さらに視野を広げて実用的なウェブアプリケーションでのレイヤー構造とかドメインオブジェクトの関係はどうなるのか?という点について解説してみたいと思います。(まだ日経ソフトウエア11月号を手にしていない方はぜひ買ってくださいw) 結論から先に出しますが、ドメイン駆動設計では一般論として下図のようなレイヤー構造やオブジェクトの関連が提唱されています。 ドメイン層のオブジェクトについては変わりないのですが、ドメイン以外のレイヤーに新しく2つのサービスが登場しているので、まずそこから簡単に説明します。 ドメイン層以外のサービス 実はサービスはドメイン層だけではなく、アプリケーション層とインフラストラクチャ層にも存在する場合があります。その役割を以下にまとめてみました。 レイヤー オブジェク

    ウェブアプリケーションの構造について - かとじゅんの技術日誌
  • コードで学ぶドメイン駆動設計入門 〜アグリゲート編〜 - かとじゅんの技術日誌

    コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜ファクトリ編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜リポジトリ編〜 - じゅんいち☆かとうの技術日誌 引き続き連投エントリ。次はアグリゲート。 実は最近まで「アグリゲートってなんだろう、、ライフサイクルの話題なのか」なって誤認識してたのですが、もう一度原書を読みなおして、やっと理解。まぁ、このパターンはすでに実施していたので、改めてこれはアグリゲートという名前かと知ったという次第。 つまるところ、アグリゲートとは、簡単にいうとライフサイクルを取り扱う境界のことですね。そもそも、Aggregateとは集約という意味があって

    コードで学ぶドメイン駆動設計入門 〜アグリゲート編〜 - かとじゅんの技術日誌
  • コードで学ぶドメイン駆動設計入門 〜リポジトリ編〜 - かとじゅんの技術日誌

    コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜ファクトリ編〜 - じゅんいち☆かとうの技術日誌 引き続き連投エントリ。私も来年で39歳になります。そして息子が7歳。いいおやじですが、脳は衰えないと言われています。鍛えれば鍛えたほど進化できると信じます。 ということで、リポジトリ編に入ります。 リポジトリ リポジトリは、ライフサイクルの途中から最後にフォーカスし、オブジェクトの永続化と永続化されたそのオブジェクトを検索する手段を提供するオブジェクトです。このように説明すると、DAOに近い印象を持つかもしれませんが、DAOはRDBMSSQLなどのインフラストラクチャ層の関心事を含んでいるので、ここでは

    コードで学ぶドメイン駆動設計入門 〜リポジトリ編〜 - かとじゅんの技術日誌
  • コードで学ぶドメイン駆動設計入門 〜ファクトリ編〜 - かとじゅんの技術日誌

    コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 と続いて、このエントリはファクトリ編を解説します。 ドメインオブジェクトのライフサイクル これまで紹介したエンティティやバリューオブジェクト、サービス(以下、これらをドメインオブジェクトと呼ぶことにします)はライフサイクルを持っています。 ライフサイクルと聞くと、newされてからGCされるまでの間を想像します。しかし、一般的なアプリケーションでは、実際はVMのライフサイクルを超えるライフサイクルを扱うことが多いと思います。たとえば、テキストエディタで編集したデータを永続化する場合などです。テキストエディタのデータは単なるバイト配列と捉えるのではなく、ドメインモデルとして捉えることができます

    コードで学ぶドメイン駆動設計入門 〜ファクトリ編〜 - かとじゅんの技術日誌
  • コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - かとじゅんの技術日誌

    先日、DevLOVEで発表した「コードで学ぶドメイン駆動設計入門」ですが、入門としながらも難しかったかもしれません。モデリングの話は難しい方の話題なので仕方ないのですが、できるだけわかりやすく補足するブログを書いてみたいと思います。 まず、レイヤードアーキテクチャの話ですが、こちらのスライドを参照してください。 DEVLOVE HangarFlight で話したスライド&ソースコード - じゅんいち☆かとうの技術日誌 平たく言うと、そのアプリケーションが解決する問題の領域がドメインです。ドメインとそれ以外のものをごっちゃにしないようにしたのが、ドメイン駆動設計だと考えればよいと思います。 一般的に業務システムでは、対象業務がドメインに成り得ますので、ドメインは業務に準えて語られることが多いと思います。ドメインに登場する概念をユビキタス言語*1として定義し、モデルに落としこむというのが設計の

    コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - かとじゅんの技術日誌
  • ドワンゴを退職しました - かとじゅんの技術日誌

    2/28日付けでドワンゴを退職しました。お世話になった会社なのでちゃんとお礼をいっておこうと思います。 初めてのコンシューマ向けウェブサービスでした。とてもよい経験をさせてもらいました。ありがとうございました。 一番大きいところは、ScalaとDDDを採用したサービスを開発してリリースしたってことですね。そのあたりの詳しい話は Scala Conference 2013 で聞けると思います*1。 Scalaで開発した感想ですが、よく話題になる習得コストはそれほどかからなかったように思います。ある程度先にScalaをやっている人がいれば、その人を軸に最初は命令型(var)で書いて言語仕様も部分的な理解でも問題なかったですね。慣れてきたらvalのコードに挑戦するとよいですね。valでコードが書けるとより関数型スタイルになるので、コードが理解しやすくなります。 こういう風に段階的に学習して、プロ

    ドワンゴを退職しました - かとじゅんの技術日誌
    syanbi
    syanbi 2013/03/01
    お疲れ様でした!
  • Scalaのジェネリックスを学ぶ - かとじゅんの技術日誌

    Scalaのジェネリックスを少し学んでみました。(なんか違うんじゃね?とかあれば、ツッコミお願いしますm(_ _)m) Javaのジェネリックスでは、型パラメータは共変/反変ではない Javaでこんなコードを書いてコンパイラに怒られたことないですか。 public interface Animal { } public class Dog implements Animal{ } public class App { public static void main(String[] args) { ArrayList<Animal> animals = new ArrayList<Dog>(); } } ArrayList<Animal> animals = new ArrayList<Dog>(); とすると、型がミスマッチとなります。 つまり、ArrayListのサブ型として、Arra

    Scalaのジェネリックスを学ぶ - かとじゅんの技術日誌
    syanbi
    syanbi 2011/10/27
    読みます
  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌

    長い文章になってしまったので、概要だけ先に書きます。 以下のJavaプログラムは、常に上から下に順番に命令が実行されると思いますか?つまり、aに1が格納された後に、bに2が格納されると思いますか? 実は場合によってはこの実行順序が入れ替わる場合があります。これはJavaの言語仕様として定義されていることです。これを考慮しないと信頼性のある並行処理は実装できません。 気になる人は以下を読んでみてください。 a = 1; b = 2; すでにインターネットは社会インフラ化しています。ソーシャルネットワークで多くの人とコミュケーションやコラボレーションできる時代で、個人が情報を作り消費することは当たり前になってきています。そして、インターネット上のコンテンツは増加の一途を辿っています。「情報爆発」なんて言葉も耳慣れた言葉になりましたが、その問題解決のためにMapReduceなどの分散処理技術に注

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌
  • 1