読者です 読者をやめる 読者になる 読者になる

シスアーキ in はてな

シスアーキ(自称)の技術ブログ

JJUG CCC 2016 Springに行ってきたよん!(*'▽'*) #jjug_ccc

JJUG CCC 2016 Spring に行ってきましたよ!
JJUG CCC 2016 Spring | 日本Javaユーザーグループ

朝から気合い十分、睡眠もばっちりとれて体調万全で望みました!戦いは始まる前から始まっているのです。

CCCのタイムテーブルはこちら

僕は

  • F-2 Thymeleaf 3 を使ってみよう!
  • F-3 Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA
  • CD-4 ネクストStruts/Seasar2としてのJava EEアクションベースMVC入門 – MVC 1.0、Jersey MVC、RESTEasy HTML –
  • GH-5 Spring Framework/Bootの最新情報とPivotalが進めるクラウドネイティブなアプローチ
  • E-6 大規模映像配信サービスのJava8による全面リニューアルの裏側
  • CD-7 マイクロフレームワーク enkan(とkotowari)ではじめるREPL駆動開発

のセッションを受講しました。

なお、セッション一覧はこちらで纏めてくださっています。

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

F-2 Thymeleaf 3 を使ってみよう!by 椎葉 光行

関西勢、@bufferings さんのThymeleafの発表です。すてきなTシャツを着て発表されていました。娘さんチョイスだそうです!
Thymeleafはプログラマとデザイナさんの共同作業を円滑に進めるモチベーションで作成されたテンプレートエンジンらしいです。Natural Templatesの機能は便利ですね。デザイナさんのみならず、外部設計時のお客さんとの打合せでもそのまま使えそうです。注意点としては、Natural Templatesの表示が正しく動作するかどうかをこまめにチェックしないと、すぐにプログラマが表示を壊してしまうとのこと(ありそう)。全体的によく纏まっており、これからThymeleafを始める方は目を通したほうがいいと思います。

お昼

お昼休憩です!今半で美味しいお肉食べてきました!
久しぶりにいい肉を食べた気がしますww

F-3 Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 by 倉元 貴一(株式会社エヌ・ティ・ティ・データ)

NTTデータさんが提供する「TERASOLUNA Server Framework for Java 5(以下、TERA5)」の紹介です。こちらのサイトで内容をみれますが、PDFにして2000ページ以上のボリュームです。日本語資料としては最大のSpringドキュメントでしょう。僕はその存在を以前に槙さんから教わって知っていましたが、改めて凄いです。この資料の内容は様々な環境で動作確認されており、そこで発見した不具合はOSSにフィードバックされているとのこと。全てに目を通すのは時間がかかりますが、気になった部分だけでも参考にできる良資料です。今後、多いに活用させて頂きたいと思います。

CD-4 ネクストStruts/Seasar2としてのJava EEアクションベースMVC入門 – MVC 1.0、Jersey MVC、RESTEasy HTML –

JavaEEにはコンポーネントベースMVCJSF、RESTを実現するJAX-RSがありますが、MVC1.0はJAX-RSを拡張したアクションベースのMVC仕様です。Viewからのリクエストをコントローラーが処理して、Viewを返す。従来のStrutsやSeaser2でのWeb開発に慣れた方にはおなじみのパターンですね。全体的によく纏まった資料でした。JAX-RSに慣れた方がアクションベースのMVCをやりたい場合はこちらで実現するのがオススメです。ここでもThymeleafをテンプレートエンジンに用いていました。いいですね、Thymeleaf!

GH-5 Spring Framework/Bootの最新情報とPivotalが進めるクラウドネイティブなアプローチ by 槙 俊明 (Pivotalジャパン株式会社)

今回のCCCでは、業務理由からSpring関連の話を収集しにきました。もちろん、このセッションを受講。流石の槙さんの発表、面白かったです。Spring Bootは様々なSpring素材をもとに仕上げた出来合のケーキとのこと。分かりやすい説明ですね。その後に続く謎のBunner押しwww。でも、Bunnerいいですね。僕も仕事でBoot使う時は真っ先に作ろう、仕事はテンションが大事です。
印象に残ったのは、コンストラクタインジェクションでAutowiredの指定が省略できるようになったとのこと。これにより、フィールドインジェクション vs コンストラクタインジェクションの戦いは槙さんの中ではコンストラクタの勝利となった模様です。Kotlin Bootする際も、フィールドインジェクションだとvarで宣言したりopenやlateinitつけたりと面倒だったので、僕もコンストラクタインジェクション派になりそうです。他にも、RequestMappingアノーテーションにGetやPostなどの専用のアノーテーションが出来たり、スコープのアノーテーションが分かりやすい記述になったりと、なにげに便利な機能が追加されたみたいです。

E-6 大規模映像配信サービスのJava8による全面リニューアルの裏側 by 秋穂 賢(株式会社U-NEXT)

大規模とJava8というキーワードにつられてこのセッションへ。内容としては、DBFluteの話がほとんどでした。DBFluteを選択した理由は、メインコミッタのjfluteさんのサポートが厚かったとのこと。使用技術に詳しい人が近くにいるのは確かに心強いですね。jfluteさん、24時間戦えるそうです。すごい!!
気になった点としは、ERMasterを使ってER図を管理していたこと。ERMaster、使いやすくて僕も好きなのですが、テーブル数が多くなると性能劣化が激しくて使い物にならなかった記憶があります*1。そこらへんどうしているのかな?と思っていたら、jfluteさんにメンション頂けました。

いいな、これ。僕も使おうかな?
GitHub - naoki-iwami/ermaster-b: ERMaster にダイアグラムの概念を追加して、大量のテーブルをグルーピングして扱えるようにしたものです。

ERD駆動で自動生成を駆使するところは、僕の仕事のやり方とも似ていて共感できました。

CD-7 マイクロフレームワーク enkan(とkotowari)ではじめるREPL駆動開発 by 川島 義隆

尊敬するアーキテクトの川島さんの発表です!REPL駆動開発がどんなものなのか聞きにきました。川島さん、当日は熱があったみたいでかなり辛そうでした。。
enkanのコンセプトとしては、

  • Expilicitness 明示的であること
  • Ease of development 開発がしやすいこと
  • Ease of operation 保守運用が簡単であること

であるとのこと。確かに最近のシステムは色んな技術が混じり合っていたり、宣言より規約により規約が分からないとソースコードとのつながりが分からなかったりと大変さを感じることがあります。

セッション中にこちらからデモを動かして、実際のenkanを少し体験できました。楽しかったです!
https://enkan.github.io/

懇親会

懇親会ではたくさんの人とコミュニケーション出来て楽しかったです。
なぜか利き酒 をすることになったり。普段はビールばっかり飲んでいるのにww

懇親会では槙さんとSpringSecurityのお話が出来たのがラッキーでした。JWTの疑問点やSpringSecurityの苦労話を聞いてもらえて嬉しかったです!
サンプルコードも紹介して貰えたので、参考にさせて頂きます!
GitHub - making/oauth2-sso-demo: Simple OAuth2 SSO Demo with Spring Boot + Spring Security OAuth2

その後に二次会にもいきました。もう最高


最後に

*1:なので、今はA5ERを使っています

Kotlinの勉強してきたよ(*'▽'*) in 京都 #kotlin_kansai

京都でKotlinの勉強してきました!

kanjava.connpass.com

霞は食べられない

京都に行く途中に知りました。霞って食べ物じゃなかったんですね。

以下、セッションの感想です。

SIerアーキテクト視点でみたKotlinの紹介

www.slideshare.net

僕の発表です。KotlinについてはNull安全な言語サポートに惚れて、いま一番注目している言語です。 ビジネスモデルやチーム状況により技術選定のやり方は変わってきます。 資料でも触れているとおり、新技術導入については慎重にならない状況にいるのですが、その点でもKotlinはSIerにとって、以下の点で導入しやすい言語ではないかと考えています。

  • 後方互換のサポート
  • コード / 既存資産 / 技術知識の再利用のしやすさ
  • Java技術者であれば、習得が比較的容易
  • Javaとの相互運用が容易
  • Java6バイトコードをサポート

そもそも、Javaを使い続ければいいじゃない?という意見もあるかと思いますが、Kotlinが提供するnull安全やdataクラスのような機能を導入するだけでも大きく生産性が変わってきます。

なにより、技術は使わなければ身につけられません。

いつまでも古い技術にこだわると、チームの技術力そのものが負債と化してしまいます。 Kotlinのような習得が容易でモダンな言語機能を備えた技術を導入することで、チームの技術力自体が活性化することを期待しています。

Kotlinはじめてみました

きの子さん(@aa7th)の発表です。つい一週間前にKotlinを始めたそうですが、早々にKotlinでBotアプリを作成されてました。覚えた言語ですぐなにかを作るのは本当に勉強になるし、身に付きやすいですよね。見習いたいと思います。また、普段Scalaをやっている方なので、Scalaと比較した感想なども興味深かったです。 なぜかエルビス演算子がすごい気に入っていたみたいで、爆笑していました。

Java EE アプリケーションと Kotlin

nobuoka(@nobuoka) さんの発表です。KotlinでJAX-RS、MVC1.0、JPACDIを用いてサーバーサイドに取り組んだ話をして頂きました。

  • CDIやるには「lateinit修飾子」が重要
  • Kotlinはデフォルトfinalなので、openアノーテーションを忘れずに
  • MyClass::classはKClassクラスのオブジェクト、MyClass::class.javaJavaのClass

あたりが参考になりました。

発表の後でJPAまわりについての話をチラッとさせて頂いたのですが、JPAは楽だけど、色々つらい部分出てきたとおっしゃっていました。僕はSQLを駆使できるORMが好きなので、MyBatis or Doma2 でやりたいな〜と考えています。

Spring Boot + Kotlin 劇的ビフォーアフター

orekyuu(@orekyuu)さんの発表。なんと学生さん! この若さで凄いですね。強くてニューゲームしているのだと思います。 KotlinでSpring Bootを動かした話です。Bootいいですね!僕も使ってみたいです。

発表内容は以下のイメージに集約されていましたww f:id:kozake:20160405080653p:plain

orekyuu(@orekyuu)さんは就活中らしいので、優秀な学生さんを欲している企業さん、今がチャンスですよ!

KotlinとモダンなライブラリーでAndroidアプリを作る

たくじさん(@ takuji31)の発表です。Kotlin使ってAndroid開発の話です。 Android開発と言えばKotlinという選択肢が当たり前になってきていますね。 「Dagger2」や「Data Binding Library」の話をして頂きました。どちらも知らないライブラリだったのですが、「Data Binding Library」いいな〜

Kotlinというよりは、Android成分多めの話でした。 実際の開発経験を通しての、『Android開発でKotlinの選択は現実的になってきた』という言葉は重いですね。

Kotlinこんなん出ましたけど

やんくさん(@yy_yank)の発表。

Kotlinについては、逆引きKotlinっていうサイトに書いてあるらしいです。

逆引きKotlin - 逆引きKotlin

すごいな〜誰が運営しているんだろうな〜(棒) 発表で一番気になった点は、やはりKotlinのJavaScriptサポート状況です。まだ実験段階なのですが、個人的には実用的になってくれたら嬉しいと思います。フロントエンドも型安全に開発したいですからね、僕みたいなゆるふわ人間は。

Dataクラスから始めるKotlin / JetBrains行ってきたよ!

ゆうすけさん(@yusuke)の発表です。 なんと「Dataクラスから始めるKotlin」と「JetBrains行ってきたよ!」の並行発表www Twitterのタイムラインがカオスになっていましたw

Kotlinを使い始めたキッカケに、Lombokプラグインが時々壊れるとありましたが、Lombokの代わりとなり得るDataクラスは本当に便利だと思います。Lombokは便利なんですが、僕もどうも黒魔術感が好きになれなくてプロダクト採用を見送っていました。やっぱりDataクラスのように言語標準のサポートがあると安心ですね!

f:id:kozake:20160405082616p:plain

本当、これだと思います。

なお、最後に流れた動画、僕は好きです。

攻める!ラムダ式禁止おじさん

最後はたろうさん(@ngsw_taro)の発表です。 ネタ枠最高でしたww 関数参照やメソッド参照、関数に拡張関数を生やすことが出来るなど、とても勉強になりました。

T.(A) -> Rは、(T, A) -> Rでもある

って話は、「へー!」となりました。

結論 ラムダ式を使いましょう

最後に

楽しかったです!またKotlin勉強会やりたいな

・゜゚・:.。..。.:・'(゚▽゚)'・:.。. .。.:・゜゚・

2015 in Action

今年もいよいよあと少し。今年はどんな年だったかな?
振り返ってみたいと思います。

1、2月

情報処理のセキュリティの勉強をしていたように思います。あとはAndroidの勉強。ちょうどお仕事ではAndroidプロジェクトの開発立ち上げで四苦八苦していました。
その後決まったJJUG CCCの資料づくりで、情報処理の勉強は断念したのですがw。来年はきちんと受けないとね。

3月

Spring Bootの勉強会に参加してました。
kanjava.connpass.com
Spring は、お仕事含めてあまり関わりがなかったのですが、Bootをキッカケに気になる存在です。来年はなにか縁があるかな?
その後開かれた懇親会で、JJUG CCCの当選が決まったことを知って、目眩いがしたのを覚えていますw

4月

JJUG CCC 2015 Springで発表しました!
Sessions / JJUG CCC 2015 Spring(4月11日開催) | 日本Javaユーザーグループ


スライドはこちらです!
www.slideshare.net
いや〜、緊張しましたね。人前で話すの苦手なんですよ。
ちなみに、このスライドで紹介したプロジェクトの方式設計リーダー兼プロジェクトサブリーダを努めましたが、無事に成功を納めることが出来ました!今年の仕事「ベスト嬉しかったで賞」は、やはりこのプロジェクトの成功です。色んな人と協力して仕上げる仕事は面白いです!

5月

お仕事忙しくてわたわたしていました。不具合やスケジュールとの戦い。ストレスフルな日々でしたね。

6月

GS Collectionsのハンズオンなどのイベントに参加しました。
kanjava.connpass.com
今はEclipse Collectionsですね。Eclipse Collectionsいいですね!どこかお仕事で使ってみたいです。

7月

Java 8徹底再入門のハンズオンイベントに参加していました。
kanjava.connpass.com
やっぱりハンズオンみたいな参加形式イベントは好きです!来年も積極的に参加したいです。

8月

なにしてたっけ?ww
仕事が落ち着いて、わりと遊んでいた気がします。

9月

DevLOVE関西「現場のアーキテクチャの話をしてみませんか?」でアーキテクチャに関する発表をしました。
devlove-kansai.doorkeeper.jp
スライドはこちらです。

www.slideshare.net
すごいシスアーキに囲まれて緊張しましたw
来年はもう少し立派なシスアーキになれるよう精進したいです。

10月

お別れの月でした。仕事が落ち着いて、去っていくメンバーの送別会しました。
この業界、仕方のないことですが、メンバとの別れはいつも切ないです。

11月

JJUG CCC 2015 Fallに参加しました。
JJUG CCC 2015 Fall(11月28日開催) | 日本Javaユーザーグループ
凄い人達の刺激を受けました。来年も行きたいです!

12月

システムエンジニア Advent Calendar 2015に1日だけ参加させて貰いました!
qiita.com
いやあ、凄い記事ばかりですね。僕もこういう立派なアーキになりたいです。
ちなみに僕は12/20に参加させて頂きました。記事はこちらです!
システム間連携 - 他システムとのデータベース連携について - Qiita

あとはこんな事もしていましたw
朝は意識高く、夜は心を癒して。朝活は来年も続けて行きたいと思います。
www.adventar.org
www.adventar.org

総論

お仕事でビックプロジェクトを成功出来たのは本当によかったです。プロジェクトの成功に密かにコミットしていましたので。
ただ、自分自身としてはいろんなことが中途半端だったと思います。
今年の反省を胸に来年を頑張りたいと思います!

いろんな人に支えられて今年もどうにかやってこれた一年でした。
これからも好きな人、大切な人達と楽しい時間を過ごせますように。。

みなさん、来年もよろしくお願いします!
2015年、バイナリ〜( ´ ▽ ` )ノ

移管完了おめ!Eclipse Collections!!(((o(*゚▽゚*)o)))

この記事は続・AndroidでJavaFXを動かしてみたよ! - シスアーキ in はてなの追記です!
kozake.hatenablog.com
12/24 に Eclipse Collectionsが移管されました!!
クリスマスプレゼントに間に合いましたね!
早速試してみましょう!!

dependenciesをeclipse-collectionsに修正して、

subprojects {
            :
            :
    dependencies {
//        compile 'com.goldmansachs:gs-collections:7.0.0'
        compile 'org.eclipse.collections:eclipse-collections:7.0.0'
    }
}

HelloWorld:androidInstallタスクをターン*1

ビルドエラーぁ。。orz

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':HelloWorld:apkDebug'.
 com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK LICENSE-EDL-1.0.txt
       :
       :

なんか踏んだみたいです。
javafxports / javafxmobile-plugin / issues / #6 - Building a android apk with maven dependencies seams to add them more than once — Bitbucket

packagingOptionsを追加しましょう!

jfxmobile {
    ios {
        forceLinkClasses = [ 'org.javafxports.**.*' ]
    }
    // ここにandroidの環境を定義
    android {
        packagingOptions {
            exclude 'LICENSE-EDL-1.0.txt'
            exclude 'LICENSE-EPL-1.0.txt'
        }
        applicationPackage = 
            "org.javafxports.${project.name.toLowerCase()}"
        androidSdk = '/Applications/adt-bundle-mac-x86/sdk'
    }
}

HelloWorld:androidInstallタスクをぽちっと(恐る恐る

おお!ビルドが成功しました!もちろん、きちんと動きましたよ!!
移管完了おめでとうございます!!(((o(*゚▽゚*)o)))

*1:かっこよくエンターキーを押そうな!

続・AndroidでJavaFXを動かしてみたよ!

JavaFXアドベントカレンダーの23日目です!
qiita.com

みなさ〜ん、今日もJavaFXですか〜!!

JavaFXは僕の好きな技術*1ですが、イマイチ現場で使われている感がありません。その理由はずばり、スマートフォンタブレットなどのモバイル端末への対応の遅れだと感じております。Javaと言ったら「Write once, run anywhere」!やっぱり、モバイル端末上でも動いてほしい!!
去年、
AndroidでJavaFXを動かしてみたよ! - シスアーキ in はてな
という記事でJavaFXアドベントカレンダーに投稿しましたが、今回もその続編で行きたいと思います!

JavaFXPorts とは

JavaFXPorts はGluonでメンテナンスされているOSSです。Gluonといえば、Scene Builderのバイナリを配布してくれていることで有名ですね。JavaFXPortsを用いることで、JavaFXをモバイル端末や組み込みハードウェアで実行させることができます。JavaFXPortsのコンセプトは次の図に一番あらわれています。
f:id:kozake:20151223101709p:plain

使ってみよう!

では、JavaFXPortsを使ってみましょう!JavaFXPortsをAndroidで使う上で必要な環境は次の通りです。

必要環境

Hello World

JavaFXPortsのサンプルが用意されているので、bitbucketからクローンを作成します。

hg clone https://bitbucket.org/javafxports/samples

samplesというプロジェクトが出来ましたね!
Androidの場合はandroid用の定義が必要です。jfxmobileに以下の定義を追加します。androidSdkに、自分の環境のAndroid SDKのパスを定義してください。

jfxmobile {
    ios {
        forceLinkClasses = [ 'org.javafxports.**.*' ]
    }
    // ここにandroidの環境を定義
    android {
        applicationPackage = 
            "org.javafxports.${project.name.toLowerCase()}"
        androidSdk = '/Applications/adt-bundle-mac-x86/sdk'
    }
}

Android端末をUSB接続して*2、クローンしたプロジェクトのディレクトリで以下のコマンドを実行します。

./gradlew HelloWorld:androidInstall

「HelloWorld」というアプリが出来ましたね!起動してみると、
f:id:kozake:20151223111626p:plain
はい、起動できました!!

なにが起きたの?

JavaFXPortsにはJavaFXMobileプラグインが用意されています。そのプラグインを用いることで、AppleのAppStoreやAndroid Play Storeにアップロードできるパッケージが作成できます。JavaFXPortsを動作させるにはJavaFXSDKが必要となるのですが、それもこのプラグインがダウンロードして勝手にインストールしてくれます。androidInstallはJavaFXMobileプラグインが用意するタスクの1つで、その実行のなかでSDKのダウンロードから様々なことをやってくれたんですね*3

Androidでラムダっちゃ♡

では、HelloWorldのソースを見てみましょう!
ソースは、

  • /samples/HelloWorld/src/main/java/org/javafxports/helloworld/Main.java

にあります。

public class Main extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Rectangle2D visualBounds =
                Screen.getPrimary().getVisualBounds();
        double width = visualBounds.getWidth();
        double height = visualBounds.getHeight();

        Label label = new Label("Click the button.");
        label.setTranslateY(30);

        Button button = new Button("Hello JavaFXPorts");
        button.setOnAction(e ->
                label.setText("You clicked the button!"));

        Rectangle rectangle =
                new Rectangle(width - 20, height - 20);
        rectangle.setFill(Color.LIGHTBLUE);
        rectangle.setArcHeight(6);
        rectangle.setArcWidth(6);

        StackPane stackPane = new StackPane();
        stackPane.getChildren().addAll(
                rectangle, button, label);

        Scene scene = new Scene
                (stackPane,
                visualBounds.getWidth(),
                visualBounds.getHeight());

        stage.setScene(scene);
        stage.show();
    }
}

お気づきいただけたでしょうか...

        button.setOnAction(e ->
                label.setText("You clicked the button!"));

ラムダ!そう、ラムダです。なんとAndroidでラムダが使えている!なんで?Dalvik VMJava SE 7ランタイムみたいなVM*4じゃなかったの!?はい、JavaFXPortsを使うと、ラムダが使えるんですね。なぜかというと、RetroLambdaというツー ルで、ラムダ式が(バイトコード・レベルで)変換できるからなのです。RetroLambdaはクラス・ファイルを調査して、す べ ての invokedynamic呼出しを、Java SE 7で サポートされるinvoke呼出しに置き換えてくれます。

やったぜ、父さん!これでStreamも使い放題だね♡!

Streamを使ってみる。

        button.setOnAction(e ->
                label.setText(Stream.of("Hello", "Lambda")
                        .collect(Collectors.joining(" "))));

と書き換えて、HelloWorld:androidInstallタスクをターン*5!よし、インストールできたぜ!
ボタンをポチっとな!

はい、落ちました。。orz

java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/stream/Stream;
at org.javafxports.helloworld.Main.lambda$start$0(Main.java:31)
at org.javafxports.helloworld.Main.access$lambda$0(Main.java)
       :
       :

AndroidおよびiOSJava ランタイム環境は、現時点ではJava 8 固有のAPIをサポートしていません。ですので、Java 8固有のAPIを利用できないのです。これでは、ラムダの実力半減ですね。。

そこでGS Collectionsですよ!

GS Collectionsとは、ゴールドマン・サックスの開発したオープンソースコレクションフレームワークです。GS CollectionsはStream APIも使え、さらに便利な機能を備えています。なんとJava 5からサポートされています!詳しくはこちらをご覧下さい。現在は、Eclipse Collectionsに移管中みたいなので、GS Collectionsを用いてみます!
12/24 に Eclipse Collectionsが移管されました!!(((o(*゚▽゚*)o)))。
詳細はこちら

dependenciesにgs-collectionsを加えて、

subprojects {
            :
            :
    dependencies {
        compile 'com.goldmansachs:gs-collections:7.0.0'
    }
}

GS Collectionsを使った形に修正!

        button.setOnAction(e ->
                label.setText(
                        Lists.immutable.of("Hello", "Lambda")
                            .makeString(" ")));

ボタンをポチっ(恐る恐る

f:id:kozake:20151223124705p:plain

おお!動きましたね!!

javafxmobile-plugin-ensembleを動かす!

また、面白いサンプルとしてはjavafxmobile-plugin-ensembleがあります。こちらを動かしてみましょう!

hg clone https://bitbucket.org/javafxports/javafxmobile-plugin-ensemble

先ほどと同様にjfxmobileのandroidSdkに自分の環境のAndroid SDKのパスを定義してからインストール。

./gradlew androidInstall

f:id:kozake:20151223143648p:plain

おお!EnsembleがAndroidで動いている!!

まとめ

どうだったでしょうか。なかなか去年から比べてよくなっているようにおもいます。
これなら業務にも使えそうですね!え、なに?テキストに日本語が入力できない?バックキーがきかない?そんなの運用でカバーすればいいんですよ*6

*1:出来るとは言ってない

*2:開発者向けオプションでUSBデバッグを有効にしておいてくださいね

*3:すごいよ、Gradle!

*4:言い回しには気を使っております、はい

*5:かっこよくエンターキーを押そうな!

*6:つらい

JJUG CCC 2015 Fallに参加してきました!!(((o(*゚▽゚*)o)))

JJUG CCC 2015 Fallに参加してきました!!

JJUG CCC 2015 Fall(11月28日開催) | 日本Javaユーザーグループ

最高に楽しかったです。やっぱり自分はJavaとそのコミュニティが好きなんだな〜と再認識しました。

keynote-1 基調講演1 : Javaは守りに入らない、これが今のJavaだ

@cero_tさんによる基調講演です。


さすが@cero_t さん、とても会場を湧かす発表でした!本日の発表を一つ一つ魅力的かつ丁寧に紹介してくれました。この時点でどれに参加するか決めかねていた僕は、もう迷いまくりですw。今回は魅力的なセッションが多すぎたと思います。

keynote-2 基調講演2:Java EE 8 – Work in Progress

Java EE 8のお話です。英語セッションでしたが通訳の方が頑張ってくれて、英語が苦手な僕にも優しいセッションでした。JAX-RSでServer Sent Events(SSE)が出来るようになったり、JAX-RSの仕組みでMVCが実装されたりと、最初は仕様が小さかったJAX-RSがどんどん肥大化していくんだな〜という感想です。JAX-RSは僕の好きな技術の一つですが、「出来るだけシンプルであってほしい」という想いと、「色々と出来ることが欲しい」という想いが双方あります。ともあれ、今後の動向に注目です。

お昼

エビスの飲めるお店を発見(((o(*゚▽゚*)o))) !!スタウト美味しかったよ〜*・゜゚・*:.。..。.:*・'(*゚▽゚*)'・*:.。. .。.:*・゜゚・*

GH-1 JAX-RS入門および実践

うらがみさんの発表です。
発表資料はこちら。
JAX-RS入門および実践

JAX-RSの入門と実践の両方について、とてもボリュームのある発表です。今からJAX-RSを仕事で使う方は、かならず目を通しておいたほうがいいかと思います。うらがみさんは大舞台でも落ち着いて話していて、流石だな〜と思いました。個人的には、「JSR 339 - Appendix C Processing Pipeline」の図を交えて説明してくれている部分がとても良かったです。僕がJAX-RSを始めた時にこの資料があったら、もっと早く理解が進んだのにな〜wと思いました。

EF-1エバンジェリスト直伝!Kotlinを既存プロダクトで使う!

たろうさんの発表です。
発表資料はこちら。
エバンジェリスト直伝!Kotlinを既存プロダクトで使う #jjug_ccc #jjug #jkug // Speaker Deck

うらがみさんの資料は事前にレビューに参加させて頂いていたので、途中からたろうさんの発表にも参加しました。今年はAdvent Calendarが速攻で埋まるとか、Kotlinはとても勢いがあります。Android開発ではもう普通に使って問題なさそうですね。Androidのベース言語がこのままJavaのままかどうかという話しも含め、今後の動向に注目です。
Reified type parametersをinline関数と一緒に使う事で、型の情報が保持できるなどの話しが感心しました。

EF-3 Reactive Webアプリケーション – そしてSpring 5へ

@making さんの発表です。
発表資料はこちら。
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3

凄いボリュームですww。正直、この人全部話すつもりないだろうwwって思ってました。時間がない割に、小ネタも挟んでくるしw。しかしながら、とてもスムーズかつ分かりやすい説明で最後まで説明して頂けました。Reactiveについてはまだまだ理解できていないことが多いですが、この発表でだいぶと理解が進んだように思います。さすが、周りより1年早く先を行くmakingさんの発表ですね。

GH-4 GS CollectionsからEclipse Collectionsへ - 機能豊富なオープンソースJavaコレクションフレームワーク

伊藤さんの発表です。
発表資料はこちら。
http://www.goldmansachs.com/gs-collections/documents/2015-11-28_JJUG_CCC.pdf

伊藤さんには以前に関ジャバでもハンズオンを開催していただくなど、お世話になりました!
GS Collections 道場[ハンズオン][OSS コレクションフレームワーク] - connpass
今回は、GS CollectionsがEclipse Collectionsになるということで、もう一度復習したい気持ちがあって参加させて頂きました。


Eclipseという名前に変わっただけで、現場への導入障壁が格段にさがったように思います。機会があれば、業務に導入したいと考えています。Eclipse Collectionsの機能はGS Collections 7.0と同一。「我々としては、Javaの標準に入ってもいいくらい優れたフレームワークだと考えている。Eclipse傘下になることで、標準化への道が開ける、かも。」とありますが、僕もJavaの標準に入ってくれると嬉しいライブラリです。資料の問題がボリュームあったので、家で復習したいと思います。

EF-5 これからのコンピューティングの変化とJava

きしださんの発表です。

コンピュータの今の課題とそれに対するJavaの変化をスムーズに解説して頂けました。「CPUのクロックは頭打ち、でもコア数は今後どんどん増える。今までは黙っていてもコンピュータがどんどん早くなっていったけれど、今後は物理的に限界がある。」という話しから始まり、今までのノイマン型コンピュータとは異なる非ノイマン型コンピュータ技術の説明。そしてJava技術への話しへと、つながりのある話しで理解しやすかったです。僕的には、Java言語からHDLソースが生成されるのが驚愕で面白かったですね。また、Pointクラスの説明もつながりがあって理解しやすかったです。

AB-6 【こっそり始める】Javaプログラマコーディングマイグレーション

やんくさんの発表です。
発表資料はこちら。
【こっそり始める】Javaプログラマコーディングマイグレーション

とてもやんくさんらしい発表でした。開発現場の現状とそれに対するアクション。やんくさんの人柄や経験が素直に資料にでていて共感できる資料だと感じました。古いバージョンのJava知識から抜け出せない現場を改善したい方にとって、とても参考になる発表だったと思います。

GH-6 Java8 Stream APIとApache SparkとAsakusa Frameworkの類似点・相違点

やんくさんの資料も事前にレビューさせて頂いていたので、途中からひしだまさんの発表に参加しました。
発表資料はこちら。
Java8 Stream APIとApache SparkとAsakusa Frameworkの類似点・相違点

動機はもちろん、生ひしだまさんを見たかったにつきます。ひしだまさんは存在したんだ!!(失礼)
Asakusa Frameworkの話しです。僕も最近はバッチ処理は並列処理を前提で設計するので、このようなフレームワークの知識も取り入れないといけないなと感じています。途中参加で話についていけなかったので、家でゆっくり資料を拝見したいと思います。
なお、ひしだまさんへの質問コーナーで拍手喝采がありました。


さすがはひしだまさんです。DQ10のフレンド募集中とのことです。

EF-7 コミュニティディスカッション~みんなもやろうコミュニティ運営~

コミュニティディスカッションです。最近、コミュニティ活動もする僕としても凄く気になる議論です。東京と地方で抱える課題の違いや同じ課題、それに対する取り組みや意見など面白かったです。一番感じたのは、女性はピザはあまり好ましくないとのことです^^;.そうなのか〜(><)。宴会部長としては気をつけます^^;


懇親会

懇親会、色々な人と話せて楽しかったです!
ちょっとLTくらいしたいなと当日にふと思って、新幹線で急遽LT準備をして挑んだのですが、見事にデモが失敗(><)
準備不足ですね^^; どこかでリベンジしたいです。っていうか、LTのレベルがみんな高すぎです。

まとめ

本当に刺激満載の楽しいイベントでした!!
それと共に、まだまだ頑張らないといけないな〜と感じました。よ〜し、おじさんまだまだ若い子には負けないぞ!!!(既に負けている気がするが)。