2016/12/04 このエントリーをはてなブックマークに追加 はてなブックマーク - JJUG CCC 2016 Fall でJVM言語とJava話をしたりしました #jjug_ccc

JJUG CCC 2016 Fall でJVM言語とJava話をしたりしました #jjug_ccc

カテゴリ: , , ,


2016/12/03に行われたJJUG CCC 2016 Fallに参加してきました。
50分1コマもらって発表もしてきました。


皆さん、楽しかったですお疲れ様です。


参加セッションと自分のセッションの説明補足などをしようと思います。


JJUG CCC 2016 Fall
2016-12-03(土)10:00 - 22:00


公式サイト


  • 実録 Blue-Green Deployment 導入記
  • SIerもはじめる、わたしたちのDevOps
  • Event Driven Microservices with Spring Cloud Stream
  • GitBucketを支えるJava技術とグローバルで使われるOSSの作り方
  • JVMのトラブル解決のためにやったこと~メモリー/スレッド
  • Featherweight JavaやGroovyの漸進的型付けについて

JVM言語とJava、切っても切れないその関係

2016/11/09 このエントリーをはてなブックマークに追加 はてなブックマーク - JavaでQRコードを作る。ついでにKotlinでも

JavaでQRコードを作る。ついでにKotlinでも

カテゴリ: ,




今日お昼ごはん食べてた時になんかこんなことやって遊んでたなーって話をして思い出した。
そういえば昔、JavaでQRコードを書きたくなったことがあったのでした。



そして、ブログを書こうとしていてずっと眠らせていたので何年か前のブログの書き損じを公開してみます。



ZXing ("zebra crossing") はオープンソースのmulti-format 1D/2DバーコードイメージのJava実装ライブラリで他の言語でも利用できるようです。
https://github.com/zxing/zxing










2016/11/06 このエントリーをはてなブックマークに追加 はてなブックマーク - [Java]Payara MicroProfileでぱやぱやする

[Java]Payara MicroProfileでぱやぱやする

カテゴリ: , ,







Payara Microがなんだか存在だけ知っていて気になっていたので、
勢いつけてブログ書きつつ導入してみる。
と思ったのだけど、Payara MicroProfileというものがあったのでそっちの方を選んで導入してみる。

今後Paraya MicroProfileを使いつつ、Java EEで遊びたいものがあれば試してみようかという目的もある。

2016/09/25 このエントリーをはてなブックマークに追加 はてなブックマーク - Seasar Conference 2016 Finalに行ってきました

Seasar Conference 2016 Finalに行ってきました

カテゴリ: , ,



Seasar Conference 2016 Finalに行ってきました。



https://event.seasarfoundation.org/sc2016/


Seasar Conference 2016 Final





そういえば、EOLについて触れておいたほうが良いですね。




Seasarプロジェクトが提供するプロダクトの多くは 2016年9月26日 をもって EOL (End of Life) となります。

EOLとなるのは以下を除いた全プロダクトです。

DBFlute
DBFlute.NET
Doma
Emecha
Mayaa
S2Container.NET
S2Dao.NET
上記以外のプロダクトは全て2016年9月26日をもってEOLとなり、 Seasarプロジェクトによるメンテナンスおよびサポートは終了となります。

EOLとなった後も、以下は引き続き提供されます。

各プロダクトのドキュメントサイトは引き続き公開されたままとなります。
各プロダクトのソースコードはGitHubにて引き続き公開されたままとなります。
Mavenリポジトリからのダウンロードは引き続き可能です。



詳しくはhttp://www.seasar.org/を参照。

2016/09/01 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Java】定数クラスをどうしたものかと改めて考える

【Java】定数クラスをどうしたものかと改めて考える

カテゴリ:

いや、大した話じゃないんですけど
みんなどうしてるのかなって思って。



Javaの定数クラス。皆さんの使用状況はこんな感じだろうか。

  • なにそれ?
  • 知ってるけど使ってない
  • 全部propertiesファイルとかxmlとかに持ってるから使わない
  • 使ってる


使うとすればどのように使うのが良いかなとか。
わざわざ考えたりしないような気がするので、あえて考える。


2016/07/23 このエントリーをはてなブックマークに追加 はてなブックマーク - 第十六回 #渋谷java にいってLTとかしました

第十六回 #渋谷java にいってLTとかしました

カテゴリ: ,






渋谷javaに行ってきました。
第十六回 #渋谷java



前々から存在は認識していて、一回行ってみたいなーというがあり参加してみたのでした。

2016/07/16 このエントリーをはてなブックマークに追加 はてなブックマーク - Java(jdk)のバグレポートの書き方

Java(jdk)のバグレポートの書き方

カテゴリ:

コンパイラのバグレポート書いた話。



趣味プログラミングをしていたら、Javaコンパイラのバグを踏んでしまいました。

コンパイラで例外が発生しました(1.8.0_25)。Bug Paradeで重複がないかをご確認のうえ、Java Developer Connection (http://java.sun.com/webapps/bugreport)でbugの登録をお願いいたします。レポートには、そのプログラムと下記の診断内容を含めてください。ご協力ありがとうございます。
java.lang.ClassCastException: com.sun.tools.javac.code.Type$UnionClassType cannot be cast to com.sun.tools.javac.code.Type$IntersectionClassType
    at com.sun.tools.javac.code.Types$8.visitClassType(Types.java:1540)
    at com.sun.tools.javac.code.Types$8.visitClassType(Types.java:1497)
    at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:778)
    at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4451)

こんな感じ。

今回は、このコンパイラのエラーメッセージにレポート送ってね、と書いてあったので送った話。
とその書き方を書きます。

これで皆さんも安心してjdkのバグが踏めますね!!(めったに起きるものではない)

2016/07/10 このエントリーをはてなブックマークに追加 はてなブックマーク - 【7/9(土)】Doma勉強会 in 東京でLTしてきました #doma_tokyo

【7/9(土)】Doma勉強会 in 東京でLTしてきました #doma_tokyo

カテゴリ: , , ,

Doma 勉強会に行ってきました!!

http://eventdots.jp/event/592052


あと、LTしてきました(KotlinがDoma2でサポートされると聞いて)
※まぁ、ボクのポジション的にKotlinの発表しとくかー、と

2016/05/23 このエントリーをはてなブックマークに追加 はてなブックマーク - JJUG CCC 2016 Spring参加してLTとかしました #jjug_ccc

JJUG CCC 2016 Spring参加してLTとかしました #jjug_ccc

カテゴリ: , , ,

JJUGの開催するカンファレンスJJUG CCC 2016 Springに行ってきました。

今回もたくさんのセッションがあり、自分の身体を分身させて複数みたい気持ちが高まりました。
なので、見なかったやつもホント苦渋の決断という感じで。
しーばさんのやつとかmakingさんのやつとかぜろゆさんのやつとかおれきゅーさんのやつとか若者のやつとかじゅくちょうさんのやつとかきつねさんのやつとか。
つまり、全部見たかったですね、で、実際見たのは以下のセッションでした。


それぞれの方のスライドは毎度のことながらyujiさんがまとめてらっしゃるのでこちら参照でw


JJUG CCC 2016 Spring ( #jjug_ccc ) - セッション資料の一覧 - 地平線に行く


2016/05/17 このエントリーをはてなブックマークに追加 はてなブックマーク - [Java]BigDecimalというやつ、意外と知らないから見つめなおす

[Java]BigDecimalというやつ、意外と知らないから見つめなおす

カテゴリ:


java.math.BigDecimalは、扱う場面になればなるほど
「あれ、なんだっけ?」とか「そうだったのか…」とか新たな発見があります。僕は。


ごめん、BigDecimalのこと全然知らんかったわ…と毎回思うので、BigDecimalのソースを呼んだりしてみた。

Oracleのjdk1.80_51です。


2016/01/17 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】BooleanフィールドはisXXXという命名が推奨されている

【Kotlin】BooleanフィールドはisXXXという命名が推奨されている

カテゴリ: ,




らしいです。
元々はKotlinのbooleanのアクセスって変じゃない?って話で。

Kotlinの勉強会に行ってきて、その時の懇親会でJetBrainsの@yanex_ruさんと@ngsw_taroさんの間でそういう話が繰り広げられました。
(勉強会のレポはまた別で書こうかな)




@yanex_ruさんはJetBrainsでKotlinコンパイラとKotlinのAndroid対応をやっているそうです。




話題として、Kotlinのbooleanのプロパティアクセス変じゃない?ってなってたのは2点です。

1.JavaのbooleanのクラスフィールドがKotlinからisXxxというプロパティとしてアクセスされる

JavaとKotlinでフィールド名が変わっちゃうのは違和感ありますよ、って主張ですね。


ソースで言うと、こういうことです。

Java
public class JavaBooleanSample {


    private boolean hoge;
    private boolean fuga;

    public boolean isHoge() {
        return hoge;
    }

    public void setHoge(boolean hoge) {
        this.hoge = hoge;
    }
}


Kotlin
    val sample = JavaBooleanSample()
    // setterアクセス
    sample.isHoge = false
    // getterアクセス
    sample.isHoge


2.KotlinのbooleanプロパティはJavaからgetXxx、setXxxと見える

KotlinでbooleanのフィールドはisXxxになって欲しいのにsetXxx、getXxxになっちゃうよって話です。
ソースで言うと、こんな感じです。

Kotlin
class KotlinBooleanSample {
    var hoge  = true
}

Java
public class AccessToKotlinBooleanAccessor {
    public static void main(String... args) {
        KotlinBooleanSample sample = new KotlinBooleanSample();

        // Kotlinではvar hoge = true
        sample.getHoge();
        sample.setHoge(true);
    }

}






こういうことなんだそうです。

Kotlin
class KotlinBooleanSample {
    var isFuga = true
}


Java
public class AccessToKotlinBooleanAccessor {
    public static void main(String... args) {
        KotlinBooleanSample sample = new KotlinBooleanSample();

        // Kotlinではvar isFuga = true
        sample.isFuga();
        sample.setFuga(true);
}





つまり、Kotlinではbooleanのフィールド変数は
isXxxと宣言するのが正しい。
そしてJavaのフィールドのxxxはKotlinからはisXxxとしてアクセスされる、という仕様らしいです。




@yanex_ruさんによると
・isXxxというアクセスが英語の文法的に自然
・Javaとの相互互換性を考えると、やりやすい

といった理由らしいです。(懇親会でさらっと聞いたので間違ってたらすみません)


確かに、よくよく考えてみるとJavaがbooleanのアクセサメソッドの命名規約を特別扱いしてるとも考えられますもんね。
と考えるとKotlinがこういった対応をとるのは自然なのかなぁとか思いました。




一応作って検証しました。




ちなみにですが、こんなことをすると競合するのかコンパイルエラーになりました

class KotlinBooleanSample {
    var isFuga = true  // コンパイルエラー
    var fuga = true  // コンパイルエラー
}




今まで、KotlinはなんでJavaから見る時にbooleanのアクセサをgetXxx、setXxxって
しちゃうのかなぁと思ってたんですが、謎が解けてスッキリしました。

他の言語でもこういうアプローチとってたりするらしいですね。

言語を作ってる人の話を聞くのは貴重でした。
楽しい勉強会でした!






2015/11/29 このエントリーをはてなブックマークに追加 はてなブックマーク - JJUG CCC Fall 2015でなんだか登壇させていただきました

JJUG CCC Fall 2015でなんだか登壇させていただきました

カテゴリ: , , ,




JJUG CCC Fall 2015に行ってきました!
JJUG CCC Fall 2015


そして、登壇までしてしまいました。
ホント今すごいですよ、開放感。もう年末の紅白見てこたつゴロゴロしてる気分。




ぼくの資料はこちらです。







資料レビュー

ここ1〜2週間ぐらい@irofさんや@backpaper0さん、@s_kozakeさんに資料のレビューをしていただきました。
本当に助かりました!!!

皆さんレビューの指摘が的確だし、コミュニケーションの取り方が親切だし、相手を尊重してる。
ホントにレビューというプロセス一つとっても学びがあるというかありがたいというか、、という感じで。

贅沢以外のなにものでもないなぁーと思いました。



発表練習

リハーサルは五回ぐらいしました。自分の家で。

発表内容が6章立てだったのですが、
章単位で区切ってムービーで録画、振り返りとして動画を確認、という作業を延々と繰り返しました。



多分独り言の激しい危ない奴と隣の部屋の人には思われたかもしれません。
自分の発表している姿をムービーに撮ったわけですが、色々ショック受けますよね。


・思った以上に滑舌が悪い
・ロックフラワーばりにクネクネしている



ロックフラワー知らない人はこんな感じです。




こんなクネクネしてる人の話誰も聞いてくれないがな…!!


ということで、なるべく身体の軸を安定させてフラフラしないように意識して練習しました。


あと、さくらばさんがポスチャーが大事、とTwitterで言ってたのをみて、なるべく 手で示すようにしたり表現するようにしたりを意識しました。…にしても不慣れすぎてもうひどかった。




・午前中
せろてぃーさんのすべらな〜い、基調講演見たかったんですが、




という感じで、目覚めたら11時でした。本当に申し訳ない。


・午後

午後から見たセッションはこんな感じです!
ホントに見たいのばかりで苦しいというか分身の術が使えるなら今すぐにでも!という気持ちいっぱいでした。



CD-1 苦手克服!例外スタックトレースから読み解くバグ
by 山本 裕介
#ccc_cd1


スタックトレース。まぁ普段読みはしますけど、
そこまで熟知出来ているかといえば自信が無い。
ということで、お話を聞きに行きました。


構成としては例外とエラーの違い、スタックトレースの見方
スレッドダンプの見方みたいな流れで、大体僕の想定通りでした。

スレッドダンプに関して、しっかり聞く機会が無かったので大変勉強になりました。
あと、IntelliJ IDEAでのライブコーディングが軽やかでした。


EF-2 How to speed up your application using JCache[通訳有]
by gregrluck
#ccc_ef2


JCacheのお話。というか、キャッシュという仕組みの話と言うか。
キャッシュって、僕の知ってる知識がいかに古いかというのを再確認出来ました。


・キャッシュは使った方が絶対に良い
・スケールアップ出来る
・スケールアウト出来る
・パフォーマンスがあがる

などなどのお話がありました。
特にRDBと比べたときのスループットの話や
JCacheの軽ーい話があり、詳しい話は時間切れ…という感じだった。。。



CD-3 よくある業務開発の自動化事情
by irof
#ccc_cd3


いろふさんの発表。
このお話、どうしてもいろふさん本人から聞きたくなり行ってみました。

リアルな自動化事情と落としどころ、綺麗めな解決策など
最近のトレンドと折衷案みたいなのが聞けて良かったです!




AB-5 Javaエンジニアに知ってほしい PostgreSQLアンチパターン
by 曽根 壮大
#ccc_ab5


正直この時間頭真っ白ですw
JSON型はテーブル設計が不定なプロトを作るときには有効で
仕様が固まってから正規化。というのはなるほどなぁと思いました。
あと、マテビューは安易に使うな見たいな話とか。
削除フラグの話とか。







正直ですね、そーだいさんの発表がほとんど頭に入ってきておらず、
気を紛らわすためにKotlinを書いて平静を装っていました。


そしていざ、壇上にあがり、HDMI端子をMacにつなぐと







リブート。








開始1分前。








大丈夫だ、まだ慌てる時間じゃない。
(いろふさんいわく、よっぽど焦ってたらしいです、ぼく)








ということで、たまたまに見に来てくださってたいろふさんのPCをお借りして
スライドを映しながらの発表となりました。


マジ死ぬかと思いましたね、ええ。


事前に準備しておくはずだった水と、ストップウォッチは
焦りすぎて発表前に用意出来ず。


JJUGの幹事の@miyakawa_takuさんの発表時間終了10分前、5分前のカンペは、ほとんど見る余裕無しというw(ごめんなさい)


色々ひっくるめて、反省材料がたくさん出来ました。





まぁ、放心状態ですよね。

発表したあとのビール美味しかった。

あと、あんなしょうもない発表でも興味持ってくれたというか、
「良かったよ」と声かけてくれる人が複数人いて。
本当にやったかいがありましたし、嬉しいなと思いました。ありがとうございます。


でも、僕はホンマはひしだまさんを見に行きたかった


壇上に立つからには来てくれた人に大して失礼の無いと言うか
面白いもの、ある程度意味のあるものにしたいと、一応頑張りました。


それにしても、本当、周りの方に助けられてなんとか発表が出来たと思っています。

圧倒的感謝ですよ、もう。ほんとに。
いろふさんいなかったらマジ死んでたし。



EF-7 コミュニティディスカッション~みんなもやろうコミュニティ運営~
by まーや&たろう
#ccc_ef7


そして、ぼーっとしながら、こちらのセッションに。
関Javaやテクブ、Java女子部、JKUG、django Girlとかだったかな?
色んなコミュニティの人がパネラーとしてパネルディスカッションが行われました。

ゆるくて、ワイワイ出来てなんか、見ている人と発表者が一緒に考えているような雰囲気が
心地よかったです!!とにかく楽しかった。


てらだよしおの赤裸裸タイムも気になったw





いつも通り、色んな方とお酒飲みつつお話が出来て楽しかった!!




LTも楽しかったです。


@mike_neckさんの話はLTじゃなくてもっとがっつり聞きたかったし、
Clojureの宣伝を果敢にしているあやぴーさんはたくましいなと思ったし
@zero_uさんはめっちゃ努力してるなぁとか思ったし

あと、@YujiSoftware さんが本当に僕のツボですwww
@miyakawa_takuさんとのマサカリに対するやり取り含め面白かったです。






本当に、来てくれた方ありがとうございます、という感じで。
いま、自分の考えてる事のほとんどがそれなので、
もうちょっと余裕が持てれば色んなセッションを楽しむ余裕が出てくるのかなぁと思います。
ということで、精進が足りない。精進します!!


たくさんの方とお会いして、お話し出来て、刺激をもらえて楽しかったです。
また春のJJUG CCCを楽しみにしてます!!




2015/11/14 このエントリーをはてなブックマークに追加 はてなブックマーク - JavaOne 2015 報告会 @ 東京に行ってきました #j1jp #jjug

JavaOne 2015 報告会 @ 東京に行ってきました #j1jp #jjug

カテゴリ: , ,



※懇親会でTシャツもらいました!!わーい




Java One 2015報告会に行ってきました! JavaOne 2015 報告会 @ 東京

2015/10/05 このエントリーをはてなブックマークに追加 はてなブックマーク - Javaの10進数からN進数変換はどうやったらスマートか

Javaの10進数からN進数変換はどうやったらスマートか

カテゴリ:







最近、進数変換が実装として必要な場面がありました。
10進数からN進数への変換。


みんなどうしてるの?

ということで解決策を考えてみます。


2015/09/12 このエントリーをはてなブックマークに追加 はてなブックマーク - Java SE 8をジンワリ布教した

Java SE 8をジンワリ布教した

カテゴリ:





さて、来年にはJava SE 9が出るらしいですが。
最近、僕のプロジェクトもJava SE 8になりまして、
普段嬉々としてlambdaとかメソッド参照とか使いたがっている今日このごろです。


そんな中、ちょっとStream APIの布教活動したよーという話。


2015/08/29 このエントリーをはてなブックマークに追加 はてなブックマーク - [Java]とりあえずResultSet#getStringした時のPostgreSQLのjdbcドライバの挙動

[Java]とりあえずResultSet#getStringした時のPostgreSQLのjdbcドライバの挙動

カテゴリ: , ,








いやぁ、夏なのに肌寒い日が続きますね。
そんな日はResultSet#getStringの挙動が気になりますよね。


JDBCの仕様に沿って、各ベンダーがjdbc実装をしているから、そりゃ挙動も変わってきます。
なぜかPostgreSQLの数値型をgetStringした場合の挙動を調べたのでメモがてらブログ書きます。




2015/07/12 このエントリーをはてなブックマークに追加 はてなブックマーク - 神クラスにどう向き合うか考えてみる

神クラスにどう向き合うか考えてみる




最近、仕事で今見ているソースコードが
めっちゃHogeUtilとかFugaUtilとかだらけで、
ドメインのプレフィックス + Utilつけりゃなんでも良いのかよ…とか思って考えてます。

そんで、これはいわゆる神クラスというやつだなぁと。
そこに立ち向かうにはどうしたら良いのか、
(どうリファクタリングしたら良いのか、クラス設計したら良いのか)
みたいなことを考えてみます。




2015/07/05 このエントリーをはてなブックマークに追加 はてなブックマーク - [Java]JUnitのTest用Visitorのメモ

[Java]JUnitのTest用Visitorのメモ

カテゴリ: , ,



なんだかいつの日か、JUnitで使うテスト用のFileVisitorを作ってメモってたので、
ブログとして残しておく。

(イマドキはこういうのはgistとかにさっと書いてメモるもんなのかなぁ…)


大体、JUnitでのテストでネックとなるのが

・どうでもいいファイルをテストの間だけ作成する
・画像ダウンロードとかファイル出力とかのロジックで出来たファイルの検証がややこしい
・どうでもいいファイルをテストが終わったら削除する


とかだと思ってる。


今回はどうでもいいファイルを削除することと、
検証の方法の1つとして、生成されたファイル数をカウントするという
雑なVisitorを作ってみた。


2015/06/12 このエントリーをはてなブックマークに追加 はてなブックマーク - JavaのREPL、project kullaがスッゴイ便利!

JavaのREPL、project kullaがスッゴイ便利!

カテゴリ:






※注意

本記事は2015/06/12現在のproject kullaに関する情報です。
今後のJava SE 9のリリースやproject kullaの開発状況によっては内容が変わる可能性もありますのでご了承ください。




Java SE 9ではJavaにREPLが入る予定となっています。

その名もproject kulla!!


とある記事を読み、リリース前ですが今でも使えることを知りました。
これは使ってみたい!ということでトライしてみました。



GA