32
Copyright (C) 2014 くくくくく All Rights Reserved. くくくくくく Java くくくくくくくく くくく Stream API くくくくくくくくくくくく @ くくく (@kuwaccho0711) 2014.8.22 JJUG くくくくくくく

Jjug ナイト・セミナー くわっちょ 20140822

  • Upload
    -

  • View
    2.430

  • Download
    4

Embed Size (px)

DESCRIPTION

20140822 JJUGナイト・セミナー資料

Citation preview

Page 1: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

レガシー脳な Java システム担当者が改めて Stream API に挑戦してみた。

くわっちょ @ 社畜犬 (@kuwaccho0711)

2014.8.22 JJUG ナイトセミナー

Page 2: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

くわっちょ

青森出身の犬。新卒で SI の世界に入って現在 SE7 年目。 Java 歴は通算 4 年くらい。

渋谷の某グループにある SIer で Web システム開発や運用保守やってます。

と書けば聞こえはいいけど最近はレガシーコード ( 後述 ) 相手が多い気がする

Twitter : @kuwaccho0711

アイコンは右下の犬。 Twiiter 上でほねっこあげると喜びます。わん。

社畜ネタ多いけど実際はそんなに激務じゃないし真面目でもない。

  

あんた誰?

Page 3: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

7( もともとは 1.5)66( マイナーバージョン違い )1. 4 <= New !!

仕事で使っている JAVA は?

Page 4: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

8の案件は?

仕事で使っている JAVA は?

Page 5: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

仕事で使っている JAVA は?

Page 6: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

そんな中こんなニュースが

とびこんできたニュース

Page 7: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

Java 9 が 1.5 以前のソースコードのコンパイルを非サポートに

(http://www.infoq.com/jp/news/2013/07/java-jep182)

とびこんできたニュース

Page 8: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

( 抜粋 )> 変化はすでに始まっている。> Java 8 では、 jsr14 と 1.4 のターゲットはもはやで受け入れられていない。> 1.5 を使用すると警告を出す。> Java 9 がリリースされるときに、 1.5 のサポートは削除され、 1.6 に対しては警告を上げる。

とびこんできたニュース

Page 9: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

これはいけない。

とびこんできたニュース

Page 10: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

レガシーシステムのリプレイスの嵐が待っている

とびこんできたニュース

Page 11: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

とびこんできたニュース

Page 12: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

しかし

しかし…

Page 13: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

・ switch で文字列・安全な再スロー・二進リテラル( 0b ) ・数値リテラルに「 _ 」 ・ダイアモンド演算子( <> )・リソース付き try 文・例外のマルチキャッチ( 参照: http://www.ne.jp/asahi/hishidama/home/tech/java/uptodate.html#JDK1.7)

JAVA7 での新機能

Page 14: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

これらすらまだ使いこなせてないよ!( try-with-resources 文見たことすらない

よ!)

しかし…

Page 15: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

そんな状態で既存ソースを Java8や 9 に移行しようとする。

しかし…

Page 16: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

ドはまり確定です。

しかし…

Page 17: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

「 for 文禁止を禁止します」がコーディングルールにしないためにも。

レガシー脳の改革が必要だ。

しかし…

Page 18: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

「とりあえず」 for 文でまわせばいいんじゃね?

「とりあえず」 if 文書いとけばいいんじゃね?

拡張 for 文?何それ? Map ?何それ? ArrayList ?何それ? よくわかんないから「とりあえず」使わない。

配列の中身よくわかんないからエラーになったら「とりあえず」キャストしてる

「とりあえず」ステップ数稼ぐために冗長な書き方にしてる

「とりあえず」レベル低い人でもわかるように簡単な書き方にしろと言われたからしてる

「とりあえず」コンパイルエラーになるからコンパイルのバージョン下げたよ ( !?)

とりあえずビール

レガシー脳の「とりあえず」という恐怖

Page 19: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

結果 (※ フィクションです )

Page 20: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

これはひどい。

(※ あくまでもフィクションです )

Page 21: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

StreamAPI 使うために「とりあえず」以下を意識しよう

「とりあえず」 for 文使うな

「とりあえず」 if 文追加すればいいはよくない。 If を少なくする設計に。

「とりあえず」リストとか適切に使うようにしよう

「とりあえず」キャストはバグだから型を意識して無駄なキャスは減らそう ( 当たり前だ! )

「とりあえず」ステップ数でお金は増えないからスッキリかっこよく書こう。

「とりあえず」レベルが低い人が見るかもしれないからこそスッキリした書き方にしよう。

「とりあえず」非推奨な書き方はしない。非推奨になったライブラリは置き換えだ!!

とりあえずハイボール

とりあえずが大好きなレガシー脳の「とりあえず」革命

Page 22: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

置き換えた結果 (※ フィクションです )

Page 23: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

もうちょい置き換えた結果 (※ フィクションです )

Page 24: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

少しはスッキリ。

(※正直微妙だけど )

Page 25: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

if 文多いつくりはどうにかできないの?

そもそも論だけど

Page 26: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

駄犬には無理です。( 設計思想そのものを見直しましょう )

そもそも論だけど

Page 27: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

for 文の中で if を使わないようにする方がスッキリする でないと例示したような微妙なコードができあがる とりあえずリストをとってきて加工するのではなく、リストを取る段階でどのように後処理で使うか意識が必要

だらだらとした for 文を書く必要がなくなったのでストレスは減る

if で処理分けたいときは関数でできるものとできないものを意識しないといけない

if 文多いレガジーなコードを全部置き換えられるか正直微妙 この辺りは正直怖い人たちの意見も伺いたいところ

レガシー脳が使ってみて思った事

Page 28: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

昔の Java で書かれたシステムを今のモダンな Java関連で動かすには

レガシー脳の改造だけでなく具体的な移行策も必要

今後に向けて

Page 29: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

なので古いコードを具体的にどうすればモダンな Java環境で動かせるかを検証していく

※誰得ですか?俺得です。※渋谷 Java でやれればいーな

今後に向けて

Page 30: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

そもそも Java8 で 1 から開発しなおせばいいんじゃないの?

今後に向けて

Page 31: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

1 から作る費用や時間は?

Page 32: Jjug ナイト・セミナー くわっちょ 20140822

Copyright (C) 2014 くわっちょ All Rights Reserved.

ご清聴、ありがとうございました