SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Downloaden Sie, um offline zu lesen
#ccc_g11
Copyright 2017 Hiroyuki Onaka
この作品は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。
#ccc_l5
Java8移行は怖くない
~エンタープライズ案件でのJava8移
行事例について~
2017/5/20 JJUG CCC 2017 Spring
大中浩行
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
今日はJJUG CCCですね!
技術トレンドは当然Java SE9! Project Jigsaw
がアツい!
LambdaやDate and Time APIは使いこなして
当たり前!
#ccc_g11
Copyright 2017 Hiroyuki Onaka
はたしてそうなの?
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
• Javaとサポート
• 事例紹介
• 技術的なポイント
• Java SE 8 導入のポイント
• まとめ
#ccc_g11
Copyright 2017 Hiroyuki Onaka
Javaとサポー
ト
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
「Java SE7はサポートが終了したため、最新の
バージョンに移行する必要があります。」
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
Java SEの「サポート」
とは...?
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
Java SEのメジャー・リリースは、次のセクション
で説明するように、一般提供の開始日(GA日)か
ら最低3年間保守されます。つまりJava SEではバ
グ修正、セキュリティ問題の修正、およびその他の
細かいアップデートなどに対するアップデートが、
パブリック・アップデートの終了(EoPU)に達す
るまで、少なくとも3年にわたって提供されます。
http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
商用サポートを受けている場合は
Java SE 6のEOLは2018年12月、Java SE 7の
EOLは2022年7月
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
だがしかししかし
『2014年に公開された「Java SE 7」が影響を
受ける脆弱性対策情報は111件で、このうち、
レベル3は48件あり、全体の43%を占めていま
した。公式アップデート終了後にも、「Java
SE 7」の脆弱性が新たに発見される可能性があ
り、その悪用によるウイルスの流布、更に情報
漏えいの発生が懸念されます。 』
https://www.ipa.go.jp/security/announce/java7_eol.html
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
Java SE 8を使用しないことで得られない恩恵
• Lambda
• Streaming API
• Date and Time API
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5Java SE 8 を使用しないと言うことは、以
下のライブラリーも使えない
• Doma2
• Spring5.0
• JUnit5
• Selenide
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
一つの仮説
「技術的に新しいことに取り組まなくなった組
織は緩やかに衰退していく」
それはなぜか
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
自分の体験談
関係者としての総括としては、Seasarのコミュ
ニティーとユーザーが総意としてJ2SE1.4の
コードベースにこだわったのは、コミュニ
ティーの持続可能性の観点から判断ミスだった
と考えています。
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
組織のエンジニアリングする能力を維持するた
めに、Java SEのバージョンアップに踏み切っ
たチームの話
#ccc_g11
Copyright 2017 Hiroyuki Onaka
事例紹介
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
• 通信事業者の法人向けサービス基盤
• 開発プロセスはスクラム
• 日本と海外拠点での並行開発(同一コード
ベース)
• サービスインしてまもなく3年
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5以前のJJUG CCCで発表した内容の続きに
なります
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
私の立場
• 案件立ち上げ時、開発メンバーとしてTDDの
導入、自動化の立ち上げ
• 後にインフラチームに移動
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
• 開発開始は2014年
→ちょうどJava SE 8がリリースされたころ
(2014年3月)
• 選定したミドルウェアがJava SE 8に対応し
ていなかったので、開発にはJava SE 7を選
択
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
• サービスイン後、一度Java SE 8に移行でき
ないかの検証を行った
• 結論として見送り
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
Java8見送りの理由
テストコードの修正やミドルウェアのバージョ
ンアップが必要があるなどの理由はあったもの
の、今から振り返ると「なんとなく」雰囲気で
決めたとしたとしかいいようがない。
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
「雰囲気」とは
• Java SE 7で開発していても困らない
• 商用サポートも検討したが…
• Java SE 9 もうすぐ出るんでしょ?
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
だがしかし
• 一世代前のJavaを使っていることに対する停滞
感
• Java SE 9いつ出るの
• 「ラムダというものが使える世界があるらし
い」
• 愛の国ガンダーラ
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
ちょうどそのとき
年度末に、案件の隙間が発生
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
開発「やりましょう」
インフラ「やりますか」
「アップデートが提供されないバージョンから
の移行」という大義名分
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
ついていた(1)
• テストコードの修正が必要
→静的解析の改善のための修正の中で、ライブ
ラリーのバージョンアップおよびテストコード
を修正していた
• ミドルウェアがJava8に対応していない
→運用上の理由で、ミドルウェアをJava8に対応
しているバージョンにアップデートしていた
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
ついていた(2)
↑今回はは
Java SE 7
のまま
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
ついていた(2)
Java SE 8
Java SE 7
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
インフラチーム側からの見方(その1)
• アトラシアン製品の環境
(JIRA/Confluence/Bitbucket/Bamboo)の
運用で、Java SE 8の移行へのノウハウが
あった
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
インフラチーム側からの見方(その2)
Blue-Green Deploymentの導入や、NoSQL
サーバーの無停止アップデートに比べると、
JavaのRuntimeのバージョンアップは相対的に
小規模
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
そしてリリース
• 特に大きなトラブルなく稼働中
• 120時間連続長期安定試験とかもやったので
すが、インフラ観点からすると拍子抜けの結
果に
#ccc_g11
Copyright 2017 Hiroyuki Onaka
技術的なポイ
ント
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
• 移行ステップ
• ブランチ毎の移行プラン
• CI環境上でのJDK切り替え
• JREに対するカスタマイズ箇所の洗い出し
• ServerSpecによるインフラ構成のテスト
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
移行ステップ
(1)ソースコードおよび実行バイナリーはそのまま
のベースで、サーバーのランタイムをJDK8にアッ
プデート
(2)機能的には同等で、JDK8でリビルドしたアプリ
ケーションをデプロイ
(3)JDK8で新機能を開発したバージョンをデプロイ
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
ブランチ毎の移行プラン
• git-flowモデル
• 開発環境の準備が済んだから作成する
featureブランチはJDK8で開発する。
• Java8で開発しているfeatureブランチを
developブランチにマージした時点で、オー
プンしているブランチもJDK8に移行する。
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
なので、移行している期間(1ヶ月強)は、JDK7
でビルドするブランチとJDK8でビルドするブラ
ンチが共存していた。
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
新規に作られたブランチは、JDK8でビルドする
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5JDK8でビルドしたブランチが、
developにマージされる
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5developにマージされたタイミングで、
動いているfeatureブランチもJDK8に移行する
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
masterブランチにマージして移行完了
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5CI(継続的インテグレーション)環境上での
段階的なJDK切り替え
• Jenkinsfileを使用しないJenkins
• Bamboo
• 上記のようなバージョン管理とビルドが統合
されていないスタイルのCIサーバーで、ブラ
ンチにより使用するJDKを切り替える場合は、
一工夫がいります。
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
例:$HOME/.mavenrc
if [ "${bamboo_build_jdk_version}" = "JDK8" ];
then
export JAVA_HOME="/usr/java/jdk1.8.0_131"
fi
if [ "${bamboo_build_jdk_version}" = "JDK7" ];
then
export JAVA_HOME="/usr/java/default"
fi
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
JREに対するカスタマイズ箇所の洗い出し
• JCE (Java Cryptography Extension)
• サーバーのルート証明書
• 和暦設定ファイル(calendars.properties)
等については、バージョンアップごとにマイグ
レーションが必要
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
ServerSpecによるインフラ構成のテスト
ServerSpecによる、インフラ観点からの構成テ
ストの実施
→ステージング環境で1件カスタマイズ箇所の移
行漏れが発覚
#ccc_g11
Copyright 2017 Hiroyuki Onaka
Java SE 8導入
の評価
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
こんなエピソード
お客様の企画サイドの偉い方が現場見学に来た
時の出来事
お客様「Java8にするとどんなメリットがある
ますか?」
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
私「エンジニアのモチベーションがあがりま
す!」
→納得して帰って行った
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
海外からも喜びの声が!
LambdaやStream APIを一番積極的に使用して
いるのが、オフショアの開発メンバーという事
実
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
今のところ、Javaをバージョンアップしたこと
の波及としての組織の活性化が最大のメリット。
#ccc_g11
Copyright 2017 Hiroyuki Onaka
まとめ
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
移行が成功したポイント(1)
ライブラリー、ミドルウェアのバージョンアッ
プが済んでいた
→移行前から、コードベースやインフラがこま
めにメンテナンスされていた
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
移行が成功したポイント(2)
インフラチームにJava8導入のノウハウがあっ
た
→CI(継続的インテグレーション)環境等、イン
パクトの少ない環境でノウハウが蓄積されてい
た
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
この二つをまとめると
開発、インフラとも、ビッグバンリリースを避
け、こまめにコードベースと環境がメンテナン
スされていたことが移行が成功した要因です。
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
SIerにとっての最新の環境に追従する意味
SIerのミッションは、「エンジニアリングを通
して継続的に顧客に価値を提供すること」
継続的なサービス開発を維持していくためには、
組織の持続可能性は、今後ますます無視できな
いファクターになってくる。
#ccc_g11
Copyright 2017 Hiroyuki Onaka
「動くコードに触れるな」と戦う
和田卓人「レガーシーコードの触り方」
https://speakerdeck.com/twada/working-effectively-with-legacy-code
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
• 「動くコードに手をいれられる」のが強い組
織
• バージョン管理や自動化など、技術的な支え
は揃ってきた
• その延長線上に、Javaランタイムのバージョ
ンアップもあります。
#ccc_g11
Copyright 2017 Hiroyuki Onaka
#ccc_l5
ありがとうございました!
• 大中浩行(Onaka,Hiroyuki)
• @setoazusa
• グロースエクスパートナーズ株式会社
アーキテクチャソリューション部
テクニカルリード
• http://hiroyuki.fieldnotes.jp/

Weitere ähnliche Inhalte

Was ist angesagt?

Snowflakeって実際どうなの?数多のDBを使い倒した猛者が語る
Snowflakeって実際どうなの?数多のDBを使い倒した猛者が語るSnowflakeって実際どうなの?数多のDBを使い倒した猛者が語る
Snowflakeって実際どうなの?数多のDBを使い倒した猛者が語るRyota Shibuya
 
開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリングAmazon Web Services Japan
 
オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルのデータベースセキュリティへの取り組み [2021年2月版]オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルのデータベースセキュリティへの取り組み [2021年2月版]オラクルエンジニア通信
 
SQL Server のロック概要
SQL Server のロック概要SQL Server のロック概要
SQL Server のロック概要Oda Shinsuke
 
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift UpdateAmazon Web Services Japan
 
REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門Keisuke Tsukagoshi
 
DDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについてDDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについてBIGLOBE Inc.
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at FlickrJohn Allspaw
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用QlikPresalesJapan
 
Oracle GoldenGate for Big Data 12.2 セットアップガイド
Oracle GoldenGate for Big Data 12.2 セットアップガイドOracle GoldenGate for Big Data 12.2 セットアップガイド
Oracle GoldenGate for Big Data 12.2 セットアップガイドオラクルエンジニア通信
 
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!Etsuji Nakai
 
Oracle Cloud is Best for Oracle Database - High Availability
Oracle Cloud is Best for Oracle Database - High AvailabilityOracle Cloud is Best for Oracle Database - High Availability
Oracle Cloud is Best for Oracle Database - High AvailabilityMarkus Michalewicz
 
20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect UpdateAmazon Web Services Japan
 
S13 Oracle Database を Microsoft Azure 上で運用する為に~基本事項とベストプラクティス
S13 Oracle Database を Microsoft Azure 上で運用する為に~基本事項とベストプラクティスS13 Oracle Database を Microsoft Azure 上で運用する為に~基本事項とベストプラクティス
S13 Oracle Database を Microsoft Azure 上で運用する為に~基本事項とベストプラクティスMicrosoft Azure Japan
 
Oci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ssOci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ssKenichi Sonoda
 
自宅サーバーの世界へようこそ LT版
自宅サーバーの世界へようこそ LT版自宅サーバーの世界へようこそ LT版
自宅サーバーの世界へようこそ LT版ProjectDC-01
 
AWS Media Day- AWS Media Tailor를 사용한 서버 사이드 광고 삽입으로 컨텐츠 수익화 (Mark Cousins통합 시...
AWS Media Day- AWS Media Tailor를 사용한 서버 사이드 광고 삽입으로 컨텐츠 수익화 (Mark Cousins통합 시...AWS Media Day- AWS Media Tailor를 사용한 서버 사이드 광고 삽입으로 컨텐츠 수익화 (Mark Cousins통합 시...
AWS Media Day- AWS Media Tailor를 사용한 서버 사이드 광고 삽입으로 컨텐츠 수익화 (Mark Cousins통합 시...Amazon Web Services Korea
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 

Was ist angesagt? (20)

Snowflakeって実際どうなの?数多のDBを使い倒した猛者が語る
Snowflakeって実際どうなの?数多のDBを使い倒した猛者が語るSnowflakeって実際どうなの?数多のDBを使い倒した猛者が語る
Snowflakeって実際どうなの?数多のDBを使い倒した猛者が語る
 
開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング
 
オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルのデータベースセキュリティへの取り組み [2021年2月版]オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルのデータベースセキュリティへの取り組み [2021年2月版]
 
SQL Server のロック概要
SQL Server のロック概要SQL Server のロック概要
SQL Server のロック概要
 
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
 
REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門
 
DDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについてDDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについて
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用
 
Oracle GoldenGate for Big Data 12.2 セットアップガイド
Oracle GoldenGate for Big Data 12.2 セットアップガイドOracle GoldenGate for Big Data 12.2 セットアップガイド
Oracle GoldenGate for Big Data 12.2 セットアップガイド
 
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!
 
Oracle Cloud is Best for Oracle Database - High Availability
Oracle Cloud is Best for Oracle Database - High AvailabilityOracle Cloud is Best for Oracle Database - High Availability
Oracle Cloud is Best for Oracle Database - High Availability
 
20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update
 
S13 Oracle Database を Microsoft Azure 上で運用する為に~基本事項とベストプラクティス
S13 Oracle Database を Microsoft Azure 上で運用する為に~基本事項とベストプラクティスS13 Oracle Database を Microsoft Azure 上で運用する為に~基本事項とベストプラクティス
S13 Oracle Database を Microsoft Azure 上で運用する為に~基本事項とベストプラクティス
 
Oci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ssOci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ss
 
JDK: 新しいリリースモデル解説(ver.2.1)
JDK: 新しいリリースモデル解説(ver.2.1)JDK: 新しいリリースモデル解説(ver.2.1)
JDK: 新しいリリースモデル解説(ver.2.1)
 
自宅サーバーの世界へようこそ LT版
自宅サーバーの世界へようこそ LT版自宅サーバーの世界へようこそ LT版
自宅サーバーの世界へようこそ LT版
 
AWS Media Day- AWS Media Tailor를 사용한 서버 사이드 광고 삽입으로 컨텐츠 수익화 (Mark Cousins통합 시...
AWS Media Day- AWS Media Tailor를 사용한 서버 사이드 광고 삽입으로 컨텐츠 수익화 (Mark Cousins통합 시...AWS Media Day- AWS Media Tailor를 사용한 서버 사이드 광고 삽입으로 컨텐츠 수익화 (Mark Cousins통합 시...
AWS Media Day- AWS Media Tailor를 사용한 서버 사이드 광고 삽입으로 컨텐츠 수익화 (Mark Cousins통합 시...
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 

Andere mochten auch

Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.JustSystems Corporation
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求hajime funaki
 
Java libraries you can't afford to miss
Java libraries you can't afford to missJava libraries you can't afford to miss
Java libraries you can't afford to missAndres Almiray
 
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMVMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMyy yank
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Kosuke Kida
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)Ikuru Kanuma
 
2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2Kazuhiro Wada
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善Works Applications
 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Logico
 
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~Yoshio Kajikuri
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門Masaya Dake
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8y_taka_23
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...なおき きしだ
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたKoichi Sakata
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 Hiroshi Ito
 
Introduction of Project Jigsaw
Introduction of Project JigsawIntroduction of Project Jigsaw
Introduction of Project JigsawYuichi Sakuraba
 

Andere mochten auch (20)

Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
 
Java libraries you can't afford to miss
Java libraries you can't afford to missJava libraries you can't afford to miss
Java libraries you can't afford to miss
 
Jjug ccc
Jjug cccJjug ccc
Jjug ccc
 
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMVMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
 
2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
 
日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug 日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 
Introduction of Project Jigsaw
Introduction of Project JigsawIntroduction of Project Jigsaw
Introduction of Project Jigsaw
 

Ähnlich wie Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~

静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携Masaru Horioka
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1Y Watanabe
 
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!Kazkuki Oakamoto
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜bitbank, Inc. Tokyo, Japan
 
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」Hiroyuki Ohnaka
 
JDBCで繋がるクラウドDB・NoSQL連携
JDBCで繋がるクラウドDB・NoSQL連携JDBCで繋がるクラウドDB・NoSQL連携
JDBCで繋がるクラウドDB・NoSQL連携CData Software Japan
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 
QAファンネル振り返り術
QAファンネル振り返り術QAファンネル振り返り術
QAファンネル振り返り術JumpeiIto2
 
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめTetsutaro Watanabe
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話JustSystems Corporation
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」Hiroyuki Ohnaka
 
20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money FowardNaoki Shimizu
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニーTokuhiro Eto
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるのYoshitaka Seo
 
ABEJAの映像解析を支える仕組みとRancher - Japan Container Days v18.12
ABEJAの映像解析を支える仕組みとRancher - Japan Container Days v18.12ABEJAの映像解析を支える仕組みとRancher - Japan Container Days v18.12
ABEJAの映像解析を支える仕組みとRancher - Japan Container Days v18.12紘之 大田黒
 
「TDDはじめて物語」 #tddbc
「TDDはじめて物語」 #tddbc「TDDはじめて物語」 #tddbc
「TDDはじめて物語」 #tddbcHiroyuki Ohnaka
 

Ähnlich wie Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~ (20)

静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
 
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
 
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
 
JDBCで繋がるクラウドDB・NoSQL連携
JDBCで繋がるクラウドDB・NoSQL連携JDBCで繋がるクラウドDB・NoSQL連携
JDBCで繋がるクラウドDB・NoSQL連携
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
QAファンネル振り返り術
QAファンネル振り返り術QAファンネル振り返り術
QAファンネル振り返り術
 
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」
 
20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるの
 
JDBCで繋がるSaas連携
JDBCで繋がるSaas連携JDBCで繋がるSaas連携
JDBCで繋がるSaas連携
 
Techcircle chef
Techcircle chefTechcircle chef
Techcircle chef
 
ABEJAの映像解析を支える仕組みとRancher - Japan Container Days v18.12
ABEJAの映像解析を支える仕組みとRancher - Japan Container Days v18.12ABEJAの映像解析を支える仕組みとRancher - Japan Container Days v18.12
ABEJAの映像解析を支える仕組みとRancher - Japan Container Days v18.12
 
「TDDはじめて物語」 #tddbc
「TDDはじめて物語」 #tddbc「TDDはじめて物語」 #tddbc
「TDDはじめて物語」 #tddbc
 

Mehr von Hiroyuki Ohnaka

remote Docker over SSHが熱い
remote Docker over SSHが熱いremote Docker over SSHが熱い
remote Docker over SSHが熱いHiroyuki Ohnaka
 
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験Hiroyuki Ohnaka
 
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...Hiroyuki Ohnaka
 
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話Hiroyuki Ohnaka
 
「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプルHiroyuki Ohnaka
 
Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Hiroyuki Ohnaka
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescriptHiroyuki Ohnaka
 
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版Hiroyuki Ohnaka
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版Hiroyuki Ohnaka
 
仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~Hiroyuki Ohnaka
 
錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘いHiroyuki Ohnaka
 
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Hiroyuki Ohnaka
 
TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)Hiroyuki Ohnaka
 
TDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbcTDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbcHiroyuki Ohnaka
 
XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)Hiroyuki Ohnaka
 
JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!Hiroyuki Ohnaka
 
「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまでHiroyuki Ohnaka
 
pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約Hiroyuki Ohnaka
 
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記Hiroyuki Ohnaka
 

Mehr von Hiroyuki Ohnaka (20)

remote Docker over SSHが熱い
remote Docker over SSHが熱いremote Docker over SSHが熱い
remote Docker over SSHが熱い
 
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
 
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...
 
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
 
「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル
 
Mackerelの薄い本
Mackerelの薄い本Mackerelの薄い本
Mackerelの薄い本
 
Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Microsoft DocsにContributeした話
Microsoft DocsにContributeした話
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescript
 
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
 
仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~
 
錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い
 
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視
 
TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)
 
TDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbcTDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbc
 
XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)
 
JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!
 
「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで
 
pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約
 
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記
 

Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~

  • 1. #ccc_g11 Copyright 2017 Hiroyuki Onaka この作品は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。 #ccc_l5 Java8移行は怖くない ~エンタープライズ案件でのJava8移 行事例について~ 2017/5/20 JJUG CCC 2017 Spring 大中浩行
  • 2. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 今日はJJUG CCCですね! 技術トレンドは当然Java SE9! Project Jigsaw がアツい! LambdaやDate and Time APIは使いこなして 当たり前!
  • 3. #ccc_g11 Copyright 2017 Hiroyuki Onaka はたしてそうなの?
  • 4. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 • Javaとサポート • 事例紹介 • 技術的なポイント • Java SE 8 導入のポイント • まとめ
  • 5. #ccc_g11 Copyright 2017 Hiroyuki Onaka Javaとサポー ト
  • 6. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 「Java SE7はサポートが終了したため、最新の バージョンに移行する必要があります。」
  • 7. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 Java SEの「サポート」 とは...?
  • 8. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 Java SEのメジャー・リリースは、次のセクション で説明するように、一般提供の開始日(GA日)か ら最低3年間保守されます。つまりJava SEではバ グ修正、セキュリティ問題の修正、およびその他の 細かいアップデートなどに対するアップデートが、 パブリック・アップデートの終了(EoPU)に達す るまで、少なくとも3年にわたって提供されます。 http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
  • 9. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 商用サポートを受けている場合は Java SE 6のEOLは2018年12月、Java SE 7の EOLは2022年7月
  • 10. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 だがしかししかし 『2014年に公開された「Java SE 7」が影響を 受ける脆弱性対策情報は111件で、このうち、 レベル3は48件あり、全体の43%を占めていま した。公式アップデート終了後にも、「Java SE 7」の脆弱性が新たに発見される可能性があ り、その悪用によるウイルスの流布、更に情報 漏えいの発生が懸念されます。 』 https://www.ipa.go.jp/security/announce/java7_eol.html
  • 11. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 Java SE 8を使用しないことで得られない恩恵 • Lambda • Streaming API • Date and Time API
  • 12. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5Java SE 8 を使用しないと言うことは、以 下のライブラリーも使えない • Doma2 • Spring5.0 • JUnit5 • Selenide
  • 13. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 一つの仮説 「技術的に新しいことに取り組まなくなった組 織は緩やかに衰退していく」 それはなぜか
  • 14. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 自分の体験談 関係者としての総括としては、Seasarのコミュ ニティーとユーザーが総意としてJ2SE1.4の コードベースにこだわったのは、コミュニ ティーの持続可能性の観点から判断ミスだった と考えています。
  • 15. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 組織のエンジニアリングする能力を維持するた めに、Java SEのバージョンアップに踏み切っ たチームの話
  • 16. #ccc_g11 Copyright 2017 Hiroyuki Onaka 事例紹介
  • 17. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 • 通信事業者の法人向けサービス基盤 • 開発プロセスはスクラム • 日本と海外拠点での並行開発(同一コード ベース) • サービスインしてまもなく3年
  • 18. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5以前のJJUG CCCで発表した内容の続きに なります
  • 19. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 私の立場 • 案件立ち上げ時、開発メンバーとしてTDDの 導入、自動化の立ち上げ • 後にインフラチームに移動
  • 20. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 • 開発開始は2014年 →ちょうどJava SE 8がリリースされたころ (2014年3月) • 選定したミドルウェアがJava SE 8に対応し ていなかったので、開発にはJava SE 7を選 択
  • 21. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 • サービスイン後、一度Java SE 8に移行でき ないかの検証を行った • 結論として見送り
  • 22. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 Java8見送りの理由 テストコードの修正やミドルウェアのバージョ ンアップが必要があるなどの理由はあったもの の、今から振り返ると「なんとなく」雰囲気で 決めたとしたとしかいいようがない。
  • 23. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 「雰囲気」とは • Java SE 7で開発していても困らない • 商用サポートも検討したが… • Java SE 9 もうすぐ出るんでしょ?
  • 24. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 だがしかし • 一世代前のJavaを使っていることに対する停滞 感 • Java SE 9いつ出るの • 「ラムダというものが使える世界があるらし い」 • 愛の国ガンダーラ
  • 25. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 ちょうどそのとき 年度末に、案件の隙間が発生
  • 26. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 開発「やりましょう」 インフラ「やりますか」 「アップデートが提供されないバージョンから の移行」という大義名分
  • 27. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 ついていた(1) • テストコードの修正が必要 →静的解析の改善のための修正の中で、ライブ ラリーのバージョンアップおよびテストコード を修正していた • ミドルウェアがJava8に対応していない →運用上の理由で、ミドルウェアをJava8に対応 しているバージョンにアップデートしていた
  • 28. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 ついていた(2) ↑今回はは Java SE 7 のまま
  • 29. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 ついていた(2) Java SE 8 Java SE 7
  • 30. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 インフラチーム側からの見方(その1) • アトラシアン製品の環境 (JIRA/Confluence/Bitbucket/Bamboo)の 運用で、Java SE 8の移行へのノウハウが あった
  • 31. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 インフラチーム側からの見方(その2) Blue-Green Deploymentの導入や、NoSQL サーバーの無停止アップデートに比べると、 JavaのRuntimeのバージョンアップは相対的に 小規模
  • 32. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 そしてリリース • 特に大きなトラブルなく稼働中 • 120時間連続長期安定試験とかもやったので すが、インフラ観点からすると拍子抜けの結 果に
  • 33. #ccc_g11 Copyright 2017 Hiroyuki Onaka 技術的なポイ ント
  • 34. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 • 移行ステップ • ブランチ毎の移行プラン • CI環境上でのJDK切り替え • JREに対するカスタマイズ箇所の洗い出し • ServerSpecによるインフラ構成のテスト
  • 35. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 移行ステップ (1)ソースコードおよび実行バイナリーはそのまま のベースで、サーバーのランタイムをJDK8にアッ プデート (2)機能的には同等で、JDK8でリビルドしたアプリ ケーションをデプロイ (3)JDK8で新機能を開発したバージョンをデプロイ
  • 36. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 ブランチ毎の移行プラン • git-flowモデル • 開発環境の準備が済んだから作成する featureブランチはJDK8で開発する。 • Java8で開発しているfeatureブランチを developブランチにマージした時点で、オー プンしているブランチもJDK8に移行する。
  • 37. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 なので、移行している期間(1ヶ月強)は、JDK7 でビルドするブランチとJDK8でビルドするブラ ンチが共存していた。
  • 39. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 新規に作られたブランチは、JDK8でビルドする
  • 40. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5JDK8でビルドしたブランチが、 developにマージされる
  • 41. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5developにマージされたタイミングで、 動いているfeatureブランチもJDK8に移行する
  • 42. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 masterブランチにマージして移行完了
  • 43. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5CI(継続的インテグレーション)環境上での 段階的なJDK切り替え • Jenkinsfileを使用しないJenkins • Bamboo • 上記のようなバージョン管理とビルドが統合 されていないスタイルのCIサーバーで、ブラ ンチにより使用するJDKを切り替える場合は、 一工夫がいります。
  • 44. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 例:$HOME/.mavenrc if [ "${bamboo_build_jdk_version}" = "JDK8" ]; then export JAVA_HOME="/usr/java/jdk1.8.0_131" fi if [ "${bamboo_build_jdk_version}" = "JDK7" ]; then export JAVA_HOME="/usr/java/default" fi
  • 45. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 JREに対するカスタマイズ箇所の洗い出し • JCE (Java Cryptography Extension) • サーバーのルート証明書 • 和暦設定ファイル(calendars.properties) 等については、バージョンアップごとにマイグ レーションが必要
  • 46. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 ServerSpecによるインフラ構成のテスト ServerSpecによる、インフラ観点からの構成テ ストの実施 →ステージング環境で1件カスタマイズ箇所の移 行漏れが発覚
  • 47. #ccc_g11 Copyright 2017 Hiroyuki Onaka Java SE 8導入 の評価
  • 48. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 こんなエピソード お客様の企画サイドの偉い方が現場見学に来た 時の出来事 お客様「Java8にするとどんなメリットがある ますか?」
  • 49. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 私「エンジニアのモチベーションがあがりま す!」 →納得して帰って行った
  • 50. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 海外からも喜びの声が! LambdaやStream APIを一番積極的に使用して いるのが、オフショアの開発メンバーという事 実
  • 51. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 今のところ、Javaをバージョンアップしたこと の波及としての組織の活性化が最大のメリット。
  • 53. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 移行が成功したポイント(1) ライブラリー、ミドルウェアのバージョンアッ プが済んでいた →移行前から、コードベースやインフラがこま めにメンテナンスされていた
  • 54. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 移行が成功したポイント(2) インフラチームにJava8導入のノウハウがあっ た →CI(継続的インテグレーション)環境等、イン パクトの少ない環境でノウハウが蓄積されてい た
  • 55. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 この二つをまとめると 開発、インフラとも、ビッグバンリリースを避 け、こまめにコードベースと環境がメンテナン スされていたことが移行が成功した要因です。
  • 56. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 SIerにとっての最新の環境に追従する意味 SIerのミッションは、「エンジニアリングを通 して継続的に顧客に価値を提供すること」 継続的なサービス開発を維持していくためには、 組織の持続可能性は、今後ますます無視できな いファクターになってくる。
  • 57. #ccc_g11 Copyright 2017 Hiroyuki Onaka 「動くコードに触れるな」と戦う 和田卓人「レガーシーコードの触り方」 https://speakerdeck.com/twada/working-effectively-with-legacy-code
  • 58. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 • 「動くコードに手をいれられる」のが強い組 織 • バージョン管理や自動化など、技術的な支え は揃ってきた • その延長線上に、Javaランタイムのバージョ ンアップもあります。
  • 59. #ccc_g11 Copyright 2017 Hiroyuki Onaka #ccc_l5 ありがとうございました! • 大中浩行(Onaka,Hiroyuki) • @setoazusa • グロースエクスパートナーズ株式会社 アーキテクチャソリューション部 テクニカルリード • http://hiroyuki.fieldnotes.jp/