タグ

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

  • ドワンゴを退職しました - かとじゅんの技術日誌

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

    ドワンゴを退職しました - かとじゅんの技術日誌
    daisuke-m
    daisuke-m 2013/03/01
    乙っした!
  • 転職活動を始めました - かとじゅんの技術日誌

    トライクレオという会社で、SI業務の業の傍ら、部下(id:daisuke-m)と研究開発を果敢に取り組んで、試験運用寸前まできましたが、研究開発業務自体が継続できない状況になりました。SI業務の利益をやりくりして研究開発に回していたのですが、、SI疲弊の影響は無視できなくなりました。 おとなしく、全員でSIの現場に出ればよいわけですが、ムー大陸的な様相というか、このままやっても先はないでしょうねと。*1 というわけで、SI以外の次の進路を考えてみることにしました。実は、SI以外の進路は選んだことはありますが、そこがSIより楽園かというとそうでもないです。結構 過酷だったりしますが、キャリアとしてポートフォリオが組める転職をしたいと思っています。 現職は、今月末で離れることになります*2。いずれにしても、SI業界に居ながら仕事で研究に割く時間をもらっていたので、今の会社には感謝しています。

    転職活動を始めました - かとじゅんの技術日誌
    daisuke-m
    daisuke-m 2011/07/05
    お互い、頑張りましょう。
  • WEB+DB PRESSでJavaの連載を担当することになりました - かとじゅんの技術日誌

    6/24発売 の WEB+DB PRESS vol63 より Javaの連載を担当することになりました。 WEB+DB PRESS Vol.63 作者: 竹迫良範,和田卓人,じゅんいち☆かとう,太田昌吾,小野修司,ミック,嶋田裕二,個々一番,みやけん,清水亮,おにたま,中島聡,角田直行,はまちや2,上谷隆宏,青木俊介,大塚知洋,生尾剛士,大和田純,WEB+DB PRESS編集部出版社/メーカー: 技術評論社発売日: 2011/06/24メディア: 大型購入: 19人 クリック: 428回この商品を含むブログ (22件) を見る 「え、ScalaじゃなくJavaなの?」と思う方もいると思いますが、Javaもしっかり勉強しておきましょうね、ということで*1。まぁ、Javaは目新しい話題が少ないという説もありますが、なるべく現場の目線で面白いネタを提供できたらと思っています。どうぞよろしくお願

    WEB+DB PRESSでJavaの連載を担当することになりました - かとじゅんの技術日誌
    daisuke-m
    daisuke-m 2011/06/22
    上司++
  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌

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

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌
    daisuke-m
    daisuke-m 2011/02/25
    相変わらず果てしないな…orz
  • 並行処理におけるメモリの可視性保証について - かとじゅんの技術日誌

    並行処理プログラミングにおいてJavaのメモリモデルを深く掘り下げたことがなかったのでちょっと気出してみます。しかし、間違っているところあるかもしれません。ツッコミいただければ適宜訂正させていただきます。 可変データへのアクセスを同期化 JavaでActorっぽいものを作ってみるで使っていた、canceledフラグはvolatileという修飾子を付けて宣言しています。 簡単にいうとと固有ロックを使わずに、フィールドを読み込むスレッドが、最後に書きこまれた値を見えるようにするためのvolatile修飾子です。 と、あまりに簡単に説明しているので、もう少し具体的に理解するために、まず、volatile修飾子を付けない通常の変数では、どうなるのかEffective Java第二版の「項目66 共有された可変データへのアクセスを同期する」の例で考えてみたいと思います。 Effective Jav

    並行処理におけるメモリの可視性保証について - かとじゅんの技術日誌
    daisuke-m
    daisuke-m 2011/02/21
    深すぎて面食らうなぁ…w
  • タスクを並行で実行するために必要なこと 〜基礎編〜 - かとじゅんの技術日誌

    スレッドセーフの話も語ればキリがないのですが、そろそろ「タスクを並行に実行する」話題にいってみましょう。この手の記事は結構あるし、書籍の内容をまるまるというわけにいかないので、独断と偏見でポイントを絞って軽く解説する感じで書いてみます。とりあえず、ThreadクラスとExecutorクラスあたりから。 この書籍のP129あたりです。 Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行購入: 24人 クリック: 419回この商品を含むブログ (163件) を見る 並行処理のアプリケーションには、「良いスループット」と「良い応答性」の両方が必要と書かれています。スループットは、単位時間あたりの処理能力のこ

    タスクを並行で実行するために必要なこと 〜基礎編〜 - かとじゅんの技術日誌
  • 結構大事なアグリゲートについてもう少し考えてみる - かとじゅんの技術日誌

    ちと、小難しい話になります。DDDの話なんで、 コードで学ぶドメイン駆動設計入門 〜アグリゲート編〜 - じゅんいち☆かとうの技術日誌 でも取り上げたアグリゲートに関する考察です。どうあるべきかはちょっと分かっていません。これを読んでこうしたらよいのでは?と思う方、意見歓迎です。インターネットって一方だと面白くないので議論したいですね。 アグリゲートってライフサイクルの境界を扱うための設計パターンです。ライフサイクルで思い出すのはリポジトリとファクトリ。この二つのオブジェクトが扱うのがアグリゲートです。ライフサイクルは至るところに出てくるので、結構大事で、設計の根幹に影響するオブジェクトのひとつではないかと思います。 アグリゲートは、内部のエンティティやバリューオブジェクトを集約している境界で、その境界はエンティティであり、ルートエンティティと呼ばれる。 グローバルな同一性を持つエンティテ

    結構大事なアグリゲートについてもう少し考えてみる - かとじゅんの技術日誌
    daisuke-m
    daisuke-m 2011/02/07
    これが難しいんだよなー。DDD本にも明記がない。Jiemamyでは、carを永続化した時、engineも永続化するようになってる。
  • スレッドセーフにするために考えること 〜応用編 その2〜 - かとじゅんの技術日誌

    スレッドセーフにするために考えること 〜応用編 その1〜 - じゅんいち☆かとうの技術日誌 では、エンティティのインスタンスを共有せずに、スレッドの振る舞いを関数型のようにするとよいという話をしました。そして、アトミックを必要とするトランザクション操作は、リポジトリの責務にしました。 エンティティのインスタンスを共有しない場合はよいが、どうしても共有しなければならない場合はどうしたらよか という点はまだ解決できていません。それをこのエントリで考えていきましょう。 スレッドセーフに対するエンティティとバリューオブジェクトの違い まず、エンティティとバリューオブジェクトで共有した時の影響が異なる点について説明しておきます。 前エントリでも説明したようにEmployeeなどのエンティティは、同一インスタンスで状態を変更できる可変オブジェクトです。スレッドセーフにするときに工夫が必要なのは可変オブ

    スレッドセーフにするために考えること 〜応用編 その2〜 - かとじゅんの技術日誌
  • [Java][並行処理] スレッドセーフにするために考えること 〜応用編 その1〜 - かとじゅんの技術日誌

    スレッドセーフにするために考えること 〜基礎編〜 - じゅんいち☆かとうの技術日誌 基礎編では、スレッドセーフについての基的な考え方を書きました。 スレッドセーフにするには、アトミック性を保証することが必要でした。この応用編では、その点を注意しながら、実際にドメイン層の振る舞いを持つドメインモデルでどのようなことを気をつければスレッドセーフになるか考えてみたいと思います。考えながら、書いてるのでちょっとおかしいところがあるかも。ご容赦をw モデルオブジェクトを複数のスレッドで共有して操作してみる とりあえず、典型的なサンプルとして従業員と部署。。もうやだ〜このサンプル〜。とか言わないのw 以下の従業員は名前と役職、所属部署(複数可)を保持します。スレッドとか気にせずとりあえず適当にモデリング。toStringはデバッグ用にcommons-langのToStringBuilderを使います

    [Java][並行処理] スレッドセーフにするために考えること 〜応用編 その1〜 - かとじゅんの技術日誌
  • スレッドセーフにするために考えること 〜基礎編〜 - かとじゅんの技術日誌

    ええっと、リクエストされたので、今回は並行処理ネタにいってみます。 並行処理といえば、このは必読書ですね。でも、書いてることは、かなりムズカシイデス(´・ω・`) Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行購入: 24人 クリック: 419回この商品を含むブログ (163件) を見る ということで、並行処理について、もうちょっと優しく分かりやすく解説できないか考えて書いてみます。 スレッドセーフにするには 今回は、プログラムをスレッドセーフにするためにどんなことを考えればよいか。そういうテーマです。 アンスレッドセーフなコードから このの最初の方に、"スレッドのリスク"という章で、スレッド

    スレッドセーフにするために考えること 〜基礎編〜 - かとじゅんの技術日誌
  • [Java] Java PUZZLERSを読み始めました&出題 - かとじゅんの技術日誌

    Java Puzzlers 罠、落とし穴、コーナーケース 作者: ジョシュア・ブロック,ニール・ガフター,柴田芳樹出版社/メーカー: ピアソン・エデュケーション発売日: 2005/11/14メディア: 大型購入: 3人 クリック: 81回この商品を含むブログ (56件) を見る このを入手しました。今更ですが...。 Effective Java 第2版 (The Java Series) 作者: Joshua Bloch,柴田芳樹出版社/メーカー: ピアソンエデュケーション発売日: 2008/11/27メディア: 単行(ソフトカバー)購入: 66人 クリック: 831回この商品を含むブログ (256件) を見る Effective Javaで登場する多くの教訓がパズル形式で登場します。面白いですよ〜。 というわけで、このからの問題。 このプログラムは何を表示するでしょうか?コンパ

    [Java] Java PUZZLERSを読み始めました&出題 - かとじゅんの技術日誌
    daisuke-m
    daisuke-m 2011/01/28
    Java Puzzlersは面白そうなんだよな…。ただ、どうしても「あれは遊び」風な受け止め方になっちゃって、優先度が低いw
  • JavaプログラマがScalaを学習するときに参考になる本 - かとじゅんの技術日誌

    とりあえず、ひとり Scalaに感染させますた。 scalaを始めたんですね。前々からやろうと思っていましたが、id:j5ik2o氏に触発されて格的に。 ということで、JavaプログラマがScalaを始める時に参考になるとか、列挙します。 Javaとの対比で書かれているので理解しやすい。REPL(Read Eval Print Loop)を使っての写経にはもってこいです。一番おすすめしたいScalaプログラミング入門 作者: デイビッド・ポラック,羽生田栄一,大塚庸史出版社/メーカー: 日経BP社発売日: 2010/03/18メディア: 大型購入: 10人 クリック: 227回この商品を含むブログ (29件) を見る Scalaの文法は巨大です。なのでそういう時は、網羅的なよりポイントが絞られているから、まず読んでみることをおすすめします。Javaの話も出てくるので読みや

    JavaプログラマがScalaを学習するときに参考になる本 - かとじゅんの技術日誌
  • ドメイン駆動設計を始めるときにおすすめな教材&情報源 - かとじゅんの技術日誌

    ドメイン駆動設計(DDD)を始めるときにおすすめな教材&情報源を順不同で紹介します。 まずは、EvansのDDD。洋書ですが、原書にしか書いてないことがあるので、はやりこれです。 Domain-Driven Design: Tackling Complexity in the Heart of Software 作者: Eric Evans出版社/メーカー: Addison-Wesley Professional発売日: 2003/08/22メディア: ハードカバー購入: 4人 クリック: 109回この商品を含むブログ (89件) を見る 英語が得意でないけど、気合いで読みたい方は、電子辞書やALCなどで武装して翻訳してみるとかw。たぶん、文中の太字の部分だけでも読むと感覚がつかめます。 日語じゃなきゃだめだという方は、こちら。ダイジェスト版ですがかなり核心部分に触れているのでおすす

    ドメイン駆動設計を始めるときにおすすめな教材&情報源 - かとじゅんの技術日誌
  • 「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり - かとじゅんの技術日誌

    追記: id:Nagiseさんからエントリいただきました。 というわけで、ややしつこく感じられるかもしれないけど誤りだと思うところはツッコミを入れさせてもらいます。人に恨みがあるとかそういうわけじゃなくて、説に用事があるってところをご理解いただければ幸いです。 こちらも建設的な議論をしたいと思っているので、もちろん、そのつもりです。 中間のクラスが〜という話題は、開放閉鎖原則を破って境界面に変更を加えた場合に話であって、検査例外が開放閉鎖原則を破るわけじゃない。 なるほど。よくわかりました。 目的と手段で分離してみた場合、「開放閉鎖原則」を「検査例外」を使って破っているだけであって「検査例外」自体の存在が「開放閉鎖原則」を破っているわけでない。「開放閉鎖原則」を破るのは「非検査例外」でもできるわけで、直接の因果関係は成立しないということですね。これは、私の論じ方に問題あったようです。ここに

    「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり - かとじゅんの技術日誌
    daisuke-m
    daisuke-m 2010/01/16
    ツッコミ完了。
  • 第1回 Jiemamy インサイドに参加しました - かとじゅんの技術日誌

    お疲れ様です.今週は盛りだくさんで投稿が遅れましたw twitterで軽くid:daisuke-mにJiemamy盛り上げようぜっていったら,まんまと引っ掛かったのでwよかったですw で,第1回Jiemamyインサイド(通称:地豆会)に参加してきました. 参加者はどれぐらいでしょうか?15名ぐらいはいましたか.大盛況だったと思います. DBリファクタリングについて皆さんの関心が高いんだなと感じました. いずれにしても最初の回なんで,導入部分ですので比較的話は聞きやすかったし,苦労している点など垣間見ることができました. うんで,モデルのシリアライズ問題(特に循環参照を解決してシリアライズすること)が最初の大きなテーマかと思います.(これは結構汎用的に使える技術となるので,Jiemamyの中というよりは別プロダクトに切り出して考えたいところです.) 妄想もあって,Jiemamy上でテーブルや

    第1回 Jiemamy インサイドに参加しました - かとじゅんの技術日誌
  • SMART deployに対応させてみる - かとじゅんの技術日誌

    DIの実用例を考えていたのですが,よいものが思いつかないので少し違う視点で書きなぐりますw ダイちゃんの以下のエントリにコンポーネントの自動登録がでてきましたね.ComponentAutoRegisterは実はS2.3で登場した機能です. 私の方では,Seasar2.4からの新機能であるSMART deployについて書いてみます. これは「jp.xet.tutorial.s2.converterパッケージにある、.*という名前(正規表現だから、全ての名前)のクラスは、勝手にコンテナに登録しとけやゴルァ」という指示。MySQLConverterとPostgreSQLConverterは、そういえばこのパッケージに置いてある。ということで、勝手に登録されたんですね。 では、そのコンポーネントの名前は? ここも空気を読むSeasar2、のターン。「クラス名の最初を小文字にした名前で、登録しとく

    SMART deployに対応させてみる - かとじゅんの技術日誌
    daisuke-m
    daisuke-m 2008/05/14
    分かりやすいまとめ解説。
  • 1