ラベル java-ja の投稿を表示しています。 すべての投稿を表示
ラベル java-ja の投稿を表示しています。 すべての投稿を表示

2012年6月30日土曜日

LOG.debug("nice catch!") に参加してきました #java_ja

LOG.debug("nice catch!")
http://connpass.com/event/607/

2012/06/27 java-ja 『LOG.debug("nice catch!")』#java_ja #javaja
http://togetter.com/li/328035

前回の温泉回に引き続いて、通常回(?)に参加しました。

きっかけ


今回の主催者である@yamashiroさんのtweetからたどってまず目に入った以下の内容。
try {
    java-jaで例外とロギングについて勉強します
    話していただくのは
    俺たちのt-wadaこと和田さんと
    PFIの田中英行さん
    歩く萌え要素こと西尾泰和さん
    歩くモヒカン太一
    です
    try {
         LT.add(ヨシオリ)
         LT.add(crexista, 'クライアント側でナイスキャッチ')
         LT.add(@shomah4a, 'PyconJPのCfPの宣伝')
    } catch (LTTimeoutException lte) {
        LOG.debug(ドラ)
    }
    try {
        他にも発表いただくかもです
        あとLTやりたい人連絡ください
        発表、LTしていただける方は、人数が埋まっていても参加可能です。
    } catch (Exception e) {
        //OK
    }
    例のごとく懇親会をそのまま会場でビアバッシュ形式でやりたいと思います。
    2000円の予定です
} catch (Exception e) {
    //nice catch
}
今回のテーマに相応しいjavaらしい告知なので即、登録しました。

@t_wadaさんの講演は昨年のTDDBC横浜以来なので、約半年ぶりになります。
前回の温泉回でお世話になった方々の話が聞けるというのも、楽しみでした。

資料

[勉強会][Java]java-ja『LOG.debug("nice catch!")』に参加してきた #java_ja
@shinyaa31さんのブログに詳細な資料があるので、そちらを参照してください。
(@shinyaa31さんありがとうございます)

例外設計における大罪

「契約による設計」は、一番印象に残った内容でした。
実装していく上で呼び出し側と呼ばれた側の関係のそれぞれの役割を考えていないと、それぞれで同じような処理を書いてしまいがちです。
青いレンガについては、ジュンク堂あたりで探して見たいと思います。
Effective Javaを読んでいても活かしきれていないと実感しました。
特に「例外状態の時だけ例外を使用する」については、技術的例外とビジネス例外の振り分けを考えていないとJTAを利用して例外発生時にロールバックが発生するようにしたい・させたくないといったことができなくなります。
そのインターフェースのメソッドにthrow句がついていないのはなぜかということを意識して、実装していかないと非チェック例外でラップして無理やり投げて、呼び出し側でcatchしたり、nice catchして握りつぶしたりしてしまいます。また、インターフェースを作る場合もそれを考えて投げなければいけない例外を投げるようにしなければと感じました。

ログ、その時の為に。

ロギングポリシーが曖昧だと必要な場合に限って欲しいログがないということがありがちです。
すでに運用しているシステムの場合、足りないことのほうが多いのも関わらず増やす手段を取るのを忌避されてしまいます。
ログ系のミドルウェアとの連携を考慮して他のインターフェースとの境界を厚めにするというのは、意識していきたいと思います。

SLF4JのMarkerの話があって早速やって使ってみたのですが、同じクラス内の処理でも処理の境界がはっきり見えてくるので、ソースを追わなくても流れをつかむことができます。
出来ればAOPでも使えるようになるとさらにいいと思いました。
SLF4J + logbackは、他のロギングライブラリに比べて使いやすいし、他のロギングライブラリのブリッジも充実しているので、是非新規の場合は利用しましょう。

エラー処理の抽象化

「すごいH本」こと「すごいHaskellたのしく学ぼう!」の翻訳者のかたが基調講演をしてくださいました。
戻り値に処理結果とエラー結果を入れて返すということをやったことありますが、受け取り側で状態ごとで分岐しなければいけないので、めんどくさいですね。
Haskellではモナドというものを使えばできるそうですが、javaにおける例外処理抽象化ライブラリってどんな感じになるんでしょうか。
「すごいH本」に興味が湧いたので読んでみたいと思います。

最後に

LTでは、クライアント側での例外処理はユーザのこと考えてやろうね。とか運用から見たログについてとかLTじゃもったいない内容が多かったという印象を受けました。
今後DevOpsが増えていくのであれば、地味な印象を受けてしまうログが一番重要なのではないかと思うのでそういった観点での勉強会とかセミナーとか面白そうだと思いました。
fluentdは名前しか知らなかったので、実際にどうやって使っていけばいいのかとか調べてみたいと思います。

主催してくださったjava-jaの皆さん、登壇者の方々、会場を提供して下さったGREE様ありがとうございました。

GREEさんパネェな!

2012年3月25日日曜日

第貳拾伍回チキチキjava-ja温泉に参加しました #javaja

第貳拾伍回チキチキjava-ja温泉
http://partake.in/events/bb602334-f14c-4482-8f5e-31f764ce05fe


熱海へ温泉に入って来ました。

java-jaのイベントは初参加です。

今回の目的は、

  • javaのイベントでいろんな人に出会う
  • Jenkinsの本を読破すること
でした。

Jenkinsの本は5章までしか読めませんでした。
残りは、通勤途中にでも読もうと思います。

コードとしては、

  • playframework2.0でjavaのチュートリアルの写経
  • cloud9ideでnode.jsのチュートリアルの写経
  • githubのマークダウン記法の写経
をやってました。

java書いている人のほうが少なかったですね。
scala、python、node、js、Dart等と多種多彩な言語でやってたみたいです。

あと、playframeworkでscala書いてる人がいて、
playをチェックしている人がいることが嬉しかったです。

それぞれ己の課題に取り組みながら、温泉に入ったり、ゲームしたりと
やることは違っていましたが、ゆったりした雰囲気でとても楽しい空間でした。

なかなか体験できないこういう環境でコード書けるっていいなと思いました。

最後に参加された皆様、幹事の@tokibitoさん、@yamashiroさんお世話になりました。

次回のjava-jaのイベントも是非参加したいと思います。
ありがとうございました。