SlideShare a Scribd company logo
Kotlin導入の
状況と展望
森 洋之
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
自己紹介
・Androidアプリ黒帯
・ヤフオク!開発本部アプリ開発部
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
自己紹介
・Androidアプリ黒帯
・ヤフオク!開発本部アプリ開発部
・本配ってます
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
セッションの内容
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
セッションの内容
• Kotlinはすばらしい
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
セッションの内容
• Kotlinはすばらしい
• チーム内でのコミュニケーション大事
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
セッションの内容
• Kotlinはすばらしい
• チーム内でのコミュニケーション大事
• 社内横断的なコミュニケーションも大事
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
セッションの内容
• Kotlinはすばらしい
• チーム内でのコミュニケーション大事
• 社内横断的なコミュニケーションも大事
• Kotlinはすばらしい
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlinについて
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• 2011年7月にJetBrainsから発表されたJVM言語
• 2011年7月にJetBrainsから発表されたJVM言語
Cédric Beust 「 Five reasons why you should rejoice about Kotlin」
http://beust.com/weblog/2011/07/20/five-reasons-why-should-rejoice-about-kotlin/ (2018年1月25日)
• 2012年にオープンソース化
• AndroidとKotlinの関係もこの頃から
JetBrains「 Kotlin and Android」
https://discuss.kotlinlang.org/t/kotlin-and-android/50 (2018年1月25日)
• 2016年ごろから徐々にユーザーを伸ばし始めた
• Androidの公式開発言語になり、爆発的に利用者を増やした
JetBrains「 KotlinConf 2017 - Opening Keynote by Andrey Breslav」
https://www.youtube.com/watch?v=pjnHDXkeK-4 (2018年1月25日)
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlinの特徴
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlinの言語的思想
・実用主義
・簡潔
・安全
・相互運用性
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlinの言語的思想
・実用主義
・簡潔
・安全
・相互運用性
・特定の考え方を押し付けない
(Javaの書き方のままでも使える)
・他言語からいろんな機能をもってきた
・IDE等のツールサポートも手厚い
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlinの言語的思想
・実用主義
・簡潔
・安全
・相互運用性
・コードの意図が明確に読みとれること
・実現するための手続きではなく、
実現したいことが表現されていること
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlinの言語的思想
・実用主義
・簡潔
・安全
・相互運用性
Java public List<String> readTextFile(File file) {
List<String> contents = new ArrayList<>();
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
while(line != null) {
contents.add(line);
line = reader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return contents;
}
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlinの言語的思想
・実用主義
・簡潔
・安全
・相互運用性
Kotlin
fun readTextFile(file : File) =
BufferedReader(FileReader(file)).readLines()
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlinの言語的思想
・実用主義
・簡潔
・安全
・相互運用性
・実装コストと安全性はトレードオフ
・Javaより高い安全性を、
より低い実装コストで実現している
・NullableやSafe Castなど
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlinの言語的思想
・実用主義
・簡潔
・安全
・相互運用性
・ほぼ完全な相互運用性
・既存のJavaライブラリも問題なし
・ツールサポートも問題なし
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
導入前の検討
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
なぜKotlinを導入するか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
① desugar問題
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
desugar問題
・Androidは、Java8の機能を使用するために、
コンパイル時にdesugarを行う
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
desugar問題
・Androidは、Java8の機能を使用するために、
コンパイル時にdesugarを行う
・特定のライブラリを使用している場合、
desugarは無効化される
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
desugar問題
・Androidは、Java8の機能を使用するために、
コンパイル時にdesugarを行う
・特定のライブラリを使用している場合、
desugarは無効化される
・そのライブラリを使っている
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
desugar問題
・Androidは、Java8の機能を使用するために、
コンパイル時にdesugarを行う
・特定のライブラリを使用している場合、
desugarは無効化される
・そのライブラリを使っている
・Java7でコード書きたくない
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
② Swiftとの親和性
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Swiftとの親和性
・SwiftとKotlinのコードは似ている
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Swiftとの親和性
・SwiftとKotlinのコードは似ている
class Person {
let name:String
var age:Int
init(name: String, age: Int) {
self.name= name
self.age= age
}
func isAdult() -> Bool {
return age>=20
}
}
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Swiftとの親和性
・SwiftとKotlinのコードは似ている
class Person {
let name:String
var age:Int
init(name: String, age: Int) {
self.name= name
self.age= age
}
func isAdult() -> Bool {
return age>=20
}
}
class Person(val name: String, var age: Int) {
fun isAdult() = age >= 20
}
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Swiftとの親和性
・SwiftとKotlinのコードは似ている
class Person {
let name:String
var age:Int
init(name: String, age: Int) {
self.name= name
self.age= age
}
func isAdult() -> Bool {
return age>=20
}
}
class Person(name: String, age: Int) {
val name: String
var age: Int
init {
this.name = name
this.age = age
}
fun isAdult() : Boolean {
return age >= 20
}
}
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Swiftとの親和性
・SwiftとKotlinのコードは似ている
・弊社のほぼすべてのiOSアプリは、Swiftを導入している
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Swiftとの親和性
・SwiftとKotlinのコードは似ている
・弊社のほぼすべてのiOSアプリは、Swiftを導入している
・互いのコードが読めるようになり
お互いの仕事に興味を持つきっかけになってくれれば
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
③ 開発をもっと楽しく
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
開発をもっと楽しく
アプリ開発の主要な3要素は
・イベントハンドリング
・非同期処理
・通信処理
これらに関係するボイラープレートを大きく減らせる
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
開発をもっと楽しく
・イベントハンドリング
Java7
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SampleActivity.this, "button clicked", Toast.LENGTH_SHORT).show();
}
}
);
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
開発をもっと楽しく
・イベントハンドリング
Java7
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SampleActivity.this, "button clicked", Toast.LENGTH_SHORT).show();
}
}
);
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
開発をもっと楽しく
・イベントハンドリング
Kotlin
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
Toast.makeText(this, "button clicked", Toast.LENGTH_SHORT).show()
}
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
危惧したリスク
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
・チームの学習コスト
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
・チームの学習コスト
・ビルド時間の増加
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
・チームの学習コスト
・ビルド時間の増加
・CIパイプライン
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
・チームの学習コスト
・ビルド時間の増加
・CIパイプライン
・採用可能な人を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
導入にあたって
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
個人での学習
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
・参考書は赤べこ本を挙げる人が多かった
・個人的にはKotlinイン・アクションおすすめ
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
・Kotlin Koansは、クイズ形式で学べる
チームで楽しみながら学ぶのに良い
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
チームへの導入
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
ルール
・新規クラスはKotlinで書く
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
ルール
・新規クラスはKotlinで書く
・Kotlinに置き換えるだけのタスクは積まない
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
ルール
・新規クラスはKotlinで書く
・Kotlinに置き換えるだけのタスクは積まない
ヤフオク!アプリのアーキテクチャ担当として
見直しをしていた時期だったので、ちょうどよかった
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
1日合宿
・1日かけてTODOアプリを開発
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
1日合宿
・1日かけてTODOアプリを開発
・リスト表示、非同期処理、通信処理、
ローカルDBキャッシュなど
アプリ開発でよく使う要素をだいたい含む
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
1日合宿
・1日かけてTODOアプリを開発
・リスト表示、非同期処理、通信処理、
ローカルDBキャッシュなど
アプリ開発でよく使う要素をだいたい含む
・典型的な処理をどう書くか
コードイメージの共有ができる
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
エクストリーム・プログラミング
・ペア・プログラミングとペアのローテーションを行う
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
エクストリーム・プログラミング
・ペア・プログラミングとペアのローテーションを行う
・知見の共有と技術レベルの平準化がされる
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
エクストリーム・プログラミング
・ペア・プログラミングとペアのローテーションを行う
・知見の共有と技術レベルの平準化がされる
・16:30〜のセッションもお願いします
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
全社への普及
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
そもそも…
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANとKotlinの出会いは
2015年末 社内LT会で
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
LT会以降のコミュニティ活動
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
社内でKotlinを認知してもらう
→ キックオフセミナー
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
社内LT
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
会社の支援
・トップカンファレンス参加支援制度
KotlinConfへの参加と社内セミナー
See: https://techblog.yahoo.co.jp/advent-calendar-2017/kotlinconfdroidconsf/
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
さまざまなレイヤーでの
コミュニケーション
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
Kotlin導入状況
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
2017/09 DevFest Tokyo
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
240000
245000
250000
255000
260000
265000
270000
275000
280000
2017年1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 2018年1月
Java Kotlin
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
0
5000
10000
15000
20000
25000
2017年1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 2018年1月
Java Kotlin
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
0
5000
10000
15000
20000
25000
30000
35000
2017年1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 2018年1月
Java Kotlin
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
導入した結果
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
チームの反応
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
・みんなKotlin大好き
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• みんなKotlin大好き
• みんな読める
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• みんなKotlin大好き
• みんな読める
• 書いていて楽しい!もうJavaに戻りたくない…
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
懸念していたリスクについて
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
• ビルド時間の増加
• CIパイプラインの安定性
• 採用の幅を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
• ビルド時間の増加
• CIパイプラインの安定性
• 採用の幅を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
→ 楽しく学べた
• ビルド時間の増加
• CIパイプラインの安定性
• 採用の幅を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
→ 楽しく学べた
→ そもそも大したことない
• ビルド時間の増加
• CIパイプラインの安定性
• 採用の幅を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
→ 楽しく学べた
→ そもそも大したことない
• ビルド時間の増加
• CIパイプラインの安定性
• 採用の幅を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
→ 楽しく学べた
→ そもそも大したことない
• ビルド時間の増加
→ ほぼ変わらない※
• CIパイプラインの安定性
• 採用の幅を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
→ 楽しく学べた
→ そもそも大したことない
• ビルド時間の増加
→ ほぼ変わらない※
• CIパイプラインの安定性
• 採用の幅を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
→ 楽しく学べた
→ そもそも大したことない
• ビルド時間の増加
→ ほぼ変わらない※
• CIパイプラインの安定性
→ 何も問題ない
• 採用の幅を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
→ 楽しく学べた
→ そもそも大したことない
• ビルド時間の増加
→ ほぼ変わらない※
• CIパイプラインの安定性
→ 何も問題ない
• 採用の幅を狭めないか
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
→ 楽しく学べた
→ そもそも大したことない
• ビルド時間の増加
→ ほぼ変わらない※
• CIパイプラインの安定性
→ 何も問題ない
• 採用の幅を狭めないか
→ 皆さま次第!
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
• チームの学習コスト
→ 楽しく学べた
→ そもそも大したことない
• ビルド時間の増加
→ ほぼ変わらない※
• CIパイプラインの安定性
→ 何も問題ない
• 採用の幅を狭めないか
→ 皆さま次第!
→ Kotlin経験者で縛ってない
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
この先
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
他のサービスへの展開
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
他のサービスへの展開
・無理に強制しない
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
他のサービスへの展開
・無理に強制しない
・人の異動に合わせて、自然と広がっていく
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
他のサービスへの展開
・無理に強制しない
・人の異動に合わせて、自然と広がっていく
サーバサイドKotlin
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
他のサービスへの展開
・無理に強制しない
・人の異動に合わせて、自然と広がっていく
サーバサイドKotlin
・社内コミュニティが生まれつつある
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
他のサービスへの展開
・無理に強制しない
・人の異動に合わせて、自然と広がっていく
サーバサイドKotlin
・社内コミュニティが生まれつつある
・Spring使えるし、おすすめ
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
まとめ
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
まとめ
• Kotlinはすばらしい
• チーム内でのコミュニケーション大事
• 社内横断的なコミュニケーションも大事
• Kotlinはすばらしい
Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.

More Related Content

What's hot

Serving Engine as a Service at Yahoo! JAPAN #SolrJP
Serving Engine as a Service at Yahoo! JAPAN #SolrJPServing Engine as a Service at Yahoo! JAPAN #SolrJP
Serving Engine as a Service at Yahoo! JAPAN #SolrJP
Yahoo!デベロッパーネットワーク
 
ヤフーにおけるHadoop Operations #tdtech
ヤフーにおけるHadoop Operations #tdtechヤフーにおけるHadoop Operations #tdtech
ヤフーにおけるHadoop Operations #tdtech
Yahoo!デベロッパーネットワーク
 
Bonfire API #1 生体認証のAPI化
Bonfire API #1 生体認証のAPI化Bonfire API #1 生体認証のAPI化
Bonfire API #1 生体認証のAPI化
Yahoo!デベロッパーネットワーク
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
 
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
Yahoo!デベロッパーネットワーク
 
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumiYahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo!デベロッパーネットワーク
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
gree_tech
 
Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!デベロッパーネットワーク
 
YJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組みYJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組み
Yahoo!デベロッパーネットワーク
 
ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩
Yahoo!デベロッパーネットワーク
 
RPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoFRPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoF
gree_tech
 
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
gree_tech
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Yahoo!デベロッパーネットワーク
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!デベロッパーネットワーク
 
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjpGo + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
Yahoo!デベロッパーネットワーク
 
decode17
decode17decode17
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
Yahoo!デベロッパーネットワーク
 
タブブラウザSDKを作った話 #yjcamp
タブブラウザSDKを作った話 #yjcampタブブラウザSDKを作った話 #yjcamp
タブブラウザSDKを作った話 #yjcamp
Yahoo!デベロッパーネットワーク
 

What's hot (20)

Serving Engine as a Service at Yahoo! JAPAN #SolrJP
Serving Engine as a Service at Yahoo! JAPAN #SolrJPServing Engine as a Service at Yahoo! JAPAN #SolrJP
Serving Engine as a Service at Yahoo! JAPAN #SolrJP
 
ヤフーにおけるHadoop Operations #tdtech
ヤフーにおけるHadoop Operations #tdtechヤフーにおけるHadoop Operations #tdtech
ヤフーにおけるHadoop Operations #tdtech
 
Bonfire API #1 生体認証のAPI化
Bonfire API #1 生体認証のAPI化Bonfire API #1 生体認証のAPI化
Bonfire API #1 生体認証のAPI化
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~ Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
 
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
 
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumiYahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
 
Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化
 
YJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組みYJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組み
 
ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩
 
RPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoFRPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoF
 
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
 
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjpGo + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
 
decode17
decode17decode17
decode17
 
Prestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnightPrestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnight
 
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
 
タブブラウザSDKを作った話 #yjcamp
タブブラウザSDKを作った話 #yjcampタブブラウザSDKを作った話 #yjcamp
タブブラウザSDKを作った話 #yjcamp
 

Similar to YJTC18 C-1 Kotlin導入の状況と展望

ヤフーにおけるkotlinとのかかわり #kotlinfest
ヤフーにおけるkotlinとのかかわり #kotlinfestヤフーにおけるkotlinとのかかわり #kotlinfest
ヤフーにおけるkotlinとのかかわり #kotlinfest
Yahoo!デベロッパーネットワーク
 
誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発
Namito Satoyama
 
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!デベロッパーネットワーク
 
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
虎の穴 開発室
 
Androidエンジニアになってからの1年間の感想と振り返り
Androidエンジニアになってからの1年間の感想と振り返りAndroidエンジニアになってからの1年間の感想と振り返り
Androidエンジニアになってからの1年間の感想と振り返り
ichirokato5
 
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
虎の穴 開発室
 
Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -
Hirokazu Egashira
 
Kubernetes Cluster Adminやってました #con_rider
Kubernetes Cluster Adminやってました #con_riderKubernetes Cluster Adminやってました #con_rider
Kubernetes Cluster Adminやってました #con_rider
Yahoo!デベロッパーネットワーク
 
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyoGitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
Yahoo!デベロッパーネットワーク
 
サーバサイドKotlinへの入門 Ktor編
サーバサイドKotlinへの入門 Ktor編サーバサイドKotlinへの入門 Ktor編
サーバサイドKotlinへの入門 Ktor編
虎の穴 開発室
 
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
虎の穴 開発室
 
JupyterLabを中心とした快適な分析生活
JupyterLabを中心とした快適な分析生活JupyterLabを中心とした快適な分析生活
JupyterLabを中心とした快適な分析生活
Classi.corp
 
Yahoo!ニュースにおける開発手法の取り組み
Yahoo!ニュースにおける開発手法の取り組みYahoo!ニュースにおける開発手法の取り組み
Yahoo!ニュースにおける開発手法の取り組み
Yahoo!デベロッパーネットワーク
 
【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL
虎の穴 開発室
 
Graal を Solr で使ってみた #SolrJP
Graal を Solr で使ってみた #SolrJPGraal を Solr で使ってみた #SolrJP
Graal を Solr で使ってみた #SolrJP
Yahoo!デベロッパーネットワーク
 
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
Kotaro Ogino
 
ああ、素晴らしきTDD ~アプリとエンジニアの心に安寧を~
ああ、素晴らしきTDD  ~アプリとエンジニアの心に安寧を~ああ、素晴らしきTDD  ~アプリとエンジニアの心に安寧を~
ああ、素晴らしきTDD ~アプリとエンジニアの心に安寧を~
Saiki Iijima
 
DBエンジニアの育成法~再現可能なサイエンスとアート~
DBエンジニアの育成法~再現可能なサイエンスとアート~DBエンジニアの育成法~再現可能なサイエンスとアート~
DBエンジニアの育成法~再現可能なサイエンスとアート~
Hirokazu Yatsunami
 
GitLab で実現する Ansible コードの管理
GitLab で実現する Ansible コードの管理GitLab で実現する Ansible コードの管理
GitLab で実現する Ansible コードの管理
裕貴 荒井
 

Similar to YJTC18 C-1 Kotlin導入の状況と展望 (20)

ヤフーにおけるkotlinとのかかわり #kotlinfest
ヤフーにおけるkotlinとのかかわり #kotlinfestヤフーにおけるkotlinとのかかわり #kotlinfest
ヤフーにおけるkotlinとのかかわり #kotlinfest
 
誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発
 
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
 
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
 
Kinect kihonnoki
Kinect kihonnokiKinect kihonnoki
Kinect kihonnoki
 
Androidエンジニアになってからの1年間の感想と振り返り
Androidエンジニアになってからの1年間の感想と振り返りAndroidエンジニアになってからの1年間の感想と振り返り
Androidエンジニアになってからの1年間の感想と振り返り
 
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
 
Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -
 
Kubernetes Cluster Adminやってました #con_rider
Kubernetes Cluster Adminやってました #con_riderKubernetes Cluster Adminやってました #con_rider
Kubernetes Cluster Adminやってました #con_rider
 
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyoGitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
 
サーバサイドKotlinへの入門 Ktor編
サーバサイドKotlinへの入門 Ktor編サーバサイドKotlinへの入門 Ktor編
サーバサイドKotlinへの入門 Ktor編
 
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
 
JupyterLabを中心とした快適な分析生活
JupyterLabを中心とした快適な分析生活JupyterLabを中心とした快適な分析生活
JupyterLabを中心とした快適な分析生活
 
Yahoo!ニュースにおける開発手法の取り組み
Yahoo!ニュースにおける開発手法の取り組みYahoo!ニュースにおける開発手法の取り組み
Yahoo!ニュースにおける開発手法の取り組み
 
【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL
 
Graal を Solr で使ってみた #SolrJP
Graal を Solr で使ってみた #SolrJPGraal を Solr で使ってみた #SolrJP
Graal を Solr で使ってみた #SolrJP
 
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
 
ああ、素晴らしきTDD ~アプリとエンジニアの心に安寧を~
ああ、素晴らしきTDD  ~アプリとエンジニアの心に安寧を~ああ、素晴らしきTDD  ~アプリとエンジニアの心に安寧を~
ああ、素晴らしきTDD ~アプリとエンジニアの心に安寧を~
 
DBエンジニアの育成法~再現可能なサイエンスとアート~
DBエンジニアの育成法~再現可能なサイエンスとアート~DBエンジニアの育成法~再現可能なサイエンスとアート~
DBエンジニアの育成法~再現可能なサイエンスとアート~
 
GitLab で実現する Ansible コードの管理
GitLab で実現する Ansible コードの管理GitLab で実現する Ansible コードの管理
GitLab で実現する Ansible コードの管理
 

More from Yahoo!デベロッパーネットワーク

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
Yahoo!デベロッパーネットワーク
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
Yahoo!デベロッパーネットワーク
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
Yahoo!デベロッパーネットワーク
 
LakeTahoe
LakeTahoeLakeTahoe
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Yahoo!デベロッパーネットワーク
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
Yahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
Yahoo!デベロッパーネットワーク
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
Yahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo!デベロッパーネットワーク
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
Yahoo!デベロッパーネットワーク
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
Yahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
Yahoo!デベロッパーネットワーク
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
Yahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
Yahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
Yahoo!デベロッパーネットワーク
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
Yahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
Yahoo!デベロッパーネットワーク
 

More from Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Recently uploaded

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 

Recently uploaded (10)

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 

YJTC18 C-1 Kotlin導入の状況と展望

  • 1. Kotlin導入の 状況と展望 森 洋之 Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
  • 2. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 自己紹介 ・Androidアプリ黒帯 ・ヤフオク!開発本部アプリ開発部
  • 3. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 自己紹介 ・Androidアプリ黒帯 ・ヤフオク!開発本部アプリ開発部 ・本配ってます
  • 4. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. セッションの内容
  • 5. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. セッションの内容 • Kotlinはすばらしい
  • 6. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. セッションの内容 • Kotlinはすばらしい • チーム内でのコミュニケーション大事
  • 7. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. セッションの内容 • Kotlinはすばらしい • チーム内でのコミュニケーション大事 • 社内横断的なコミュニケーションも大事
  • 8. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. セッションの内容 • Kotlinはすばらしい • チーム内でのコミュニケーション大事 • 社内横断的なコミュニケーションも大事 • Kotlinはすばらしい
  • 9. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlinについて
  • 10. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • 2011年7月にJetBrainsから発表されたJVM言語
  • 11. • 2011年7月にJetBrainsから発表されたJVM言語 Cédric Beust 「 Five reasons why you should rejoice about Kotlin」 http://beust.com/weblog/2011/07/20/five-reasons-why-should-rejoice-about-kotlin/ (2018年1月25日)
  • 12. • 2012年にオープンソース化 • AndroidとKotlinの関係もこの頃から JetBrains「 Kotlin and Android」 https://discuss.kotlinlang.org/t/kotlin-and-android/50 (2018年1月25日)
  • 13. • 2016年ごろから徐々にユーザーを伸ばし始めた • Androidの公式開発言語になり、爆発的に利用者を増やした JetBrains「 KotlinConf 2017 - Opening Keynote by Andrey Breslav」 https://www.youtube.com/watch?v=pjnHDXkeK-4 (2018年1月25日)
  • 14. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlinの特徴
  • 15. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlinの言語的思想 ・実用主義 ・簡潔 ・安全 ・相互運用性
  • 16. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlinの言語的思想 ・実用主義 ・簡潔 ・安全 ・相互運用性 ・特定の考え方を押し付けない (Javaの書き方のままでも使える) ・他言語からいろんな機能をもってきた ・IDE等のツールサポートも手厚い
  • 17. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlinの言語的思想 ・実用主義 ・簡潔 ・安全 ・相互運用性 ・コードの意図が明確に読みとれること ・実現するための手続きではなく、 実現したいことが表現されていること
  • 18. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlinの言語的思想 ・実用主義 ・簡潔 ・安全 ・相互運用性 Java public List<String> readTextFile(File file) { List<String> contents = new ArrayList<>(); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); String line = reader.readLine(); while(line != null) { contents.add(line); line = reader.readLine(); } } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return contents; }
  • 19. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlinの言語的思想 ・実用主義 ・簡潔 ・安全 ・相互運用性 Kotlin fun readTextFile(file : File) = BufferedReader(FileReader(file)).readLines()
  • 20. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlinの言語的思想 ・実用主義 ・簡潔 ・安全 ・相互運用性 ・実装コストと安全性はトレードオフ ・Javaより高い安全性を、 より低い実装コストで実現している ・NullableやSafe Castなど
  • 21. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlinの言語的思想 ・実用主義 ・簡潔 ・安全 ・相互運用性 ・ほぼ完全な相互運用性 ・既存のJavaライブラリも問題なし ・ツールサポートも問題なし
  • 22. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 導入前の検討
  • 23. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. なぜKotlinを導入するか
  • 24. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ① desugar問題
  • 25. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. desugar問題 ・Androidは、Java8の機能を使用するために、 コンパイル時にdesugarを行う
  • 26. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. desugar問題 ・Androidは、Java8の機能を使用するために、 コンパイル時にdesugarを行う ・特定のライブラリを使用している場合、 desugarは無効化される
  • 27. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. desugar問題 ・Androidは、Java8の機能を使用するために、 コンパイル時にdesugarを行う ・特定のライブラリを使用している場合、 desugarは無効化される ・そのライブラリを使っている
  • 28. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. desugar問題 ・Androidは、Java8の機能を使用するために、 コンパイル時にdesugarを行う ・特定のライブラリを使用している場合、 desugarは無効化される ・そのライブラリを使っている ・Java7でコード書きたくない
  • 29. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ② Swiftとの親和性
  • 30. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Swiftとの親和性 ・SwiftとKotlinのコードは似ている
  • 31. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Swiftとの親和性 ・SwiftとKotlinのコードは似ている class Person { let name:String var age:Int init(name: String, age: Int) { self.name= name self.age= age } func isAdult() -> Bool { return age>=20 } }
  • 32. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Swiftとの親和性 ・SwiftとKotlinのコードは似ている class Person { let name:String var age:Int init(name: String, age: Int) { self.name= name self.age= age } func isAdult() -> Bool { return age>=20 } } class Person(val name: String, var age: Int) { fun isAdult() = age >= 20 }
  • 33. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Swiftとの親和性 ・SwiftとKotlinのコードは似ている class Person { let name:String var age:Int init(name: String, age: Int) { self.name= name self.age= age } func isAdult() -> Bool { return age>=20 } } class Person(name: String, age: Int) { val name: String var age: Int init { this.name = name this.age = age } fun isAdult() : Boolean { return age >= 20 } }
  • 34. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Swiftとの親和性 ・SwiftとKotlinのコードは似ている ・弊社のほぼすべてのiOSアプリは、Swiftを導入している
  • 35. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Swiftとの親和性 ・SwiftとKotlinのコードは似ている ・弊社のほぼすべてのiOSアプリは、Swiftを導入している ・互いのコードが読めるようになり お互いの仕事に興味を持つきっかけになってくれれば
  • 36. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ③ 開発をもっと楽しく
  • 37. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 開発をもっと楽しく アプリ開発の主要な3要素は ・イベントハンドリング ・非同期処理 ・通信処理 これらに関係するボイラープレートを大きく減らせる
  • 38. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 開発をもっと楽しく ・イベントハンドリング Java7 Button button = (Button)findViewById(R.id.button); button.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SampleActivity.this, "button clicked", Toast.LENGTH_SHORT).show(); } } );
  • 39. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 開発をもっと楽しく ・イベントハンドリング Java7 Button button = (Button)findViewById(R.id.button); button.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SampleActivity.this, "button clicked", Toast.LENGTH_SHORT).show(); } } );
  • 40. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 開発をもっと楽しく ・イベントハンドリング Kotlin val button = findViewById<Button>(R.id.button) button.setOnClickListener { Toast.makeText(this, "button clicked", Toast.LENGTH_SHORT).show() }
  • 41. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 危惧したリスク
  • 42. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ・チームの学習コスト
  • 43. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ・チームの学習コスト ・ビルド時間の増加
  • 44. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ・チームの学習コスト ・ビルド時間の増加 ・CIパイプライン
  • 45. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ・チームの学習コスト ・ビルド時間の増加 ・CIパイプライン ・採用可能な人を狭めないか
  • 46. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 導入にあたって
  • 47. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 個人での学習
  • 48. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ・参考書は赤べこ本を挙げる人が多かった ・個人的にはKotlinイン・アクションおすすめ
  • 49. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ・Kotlin Koansは、クイズ形式で学べる チームで楽しみながら学ぶのに良い
  • 50. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. チームへの導入
  • 51. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ルール ・新規クラスはKotlinで書く
  • 52. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ルール ・新規クラスはKotlinで書く ・Kotlinに置き換えるだけのタスクは積まない
  • 53. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ルール ・新規クラスはKotlinで書く ・Kotlinに置き換えるだけのタスクは積まない ヤフオク!アプリのアーキテクチャ担当として 見直しをしていた時期だったので、ちょうどよかった
  • 54. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 1日合宿 ・1日かけてTODOアプリを開発
  • 55. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 1日合宿 ・1日かけてTODOアプリを開発 ・リスト表示、非同期処理、通信処理、 ローカルDBキャッシュなど アプリ開発でよく使う要素をだいたい含む
  • 56. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 1日合宿 ・1日かけてTODOアプリを開発 ・リスト表示、非同期処理、通信処理、 ローカルDBキャッシュなど アプリ開発でよく使う要素をだいたい含む ・典型的な処理をどう書くか コードイメージの共有ができる
  • 57. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. エクストリーム・プログラミング ・ペア・プログラミングとペアのローテーションを行う
  • 58. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. エクストリーム・プログラミング ・ペア・プログラミングとペアのローテーションを行う ・知見の共有と技術レベルの平準化がされる
  • 59. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. エクストリーム・プログラミング ・ペア・プログラミングとペアのローテーションを行う ・知見の共有と技術レベルの平準化がされる ・16:30〜のセッションもお願いします
  • 60. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 全社への普及
  • 61. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. そもそも…
  • 62. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANとKotlinの出会いは 2015年末 社内LT会で
  • 63. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. LT会以降のコミュニティ活動
  • 64. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 社内でKotlinを認知してもらう → キックオフセミナー
  • 65. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 社内LT
  • 66. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 会社の支援 ・トップカンファレンス参加支援制度 KotlinConfへの参加と社内セミナー See: https://techblog.yahoo.co.jp/advent-calendar-2017/kotlinconfdroidconsf/
  • 67. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. さまざまなレイヤーでの コミュニケーション
  • 68. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
  • 69. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
  • 70. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
  • 71. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.
  • 72. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. Kotlin導入状況
  • 73. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 2017/09 DevFest Tokyo
  • 74. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 240000 245000 250000 255000 260000 265000 270000 275000 280000 2017年1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 2018年1月 Java Kotlin
  • 75. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 0 5000 10000 15000 20000 25000 2017年1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 2018年1月 Java Kotlin
  • 76. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 0 5000 10000 15000 20000 25000 30000 35000 2017年1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 2018年1月 Java Kotlin
  • 77. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 導入した結果
  • 78. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. チームの反応
  • 79. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. ・みんなKotlin大好き
  • 80. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • みんなKotlin大好き • みんな読める
  • 81. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • みんなKotlin大好き • みんな読める • 書いていて楽しい!もうJavaに戻りたくない…
  • 82. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 懸念していたリスクについて
  • 83. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト • ビルド時間の増加 • CIパイプラインの安定性 • 採用の幅を狭めないか
  • 84. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト • ビルド時間の増加 • CIパイプラインの安定性 • 採用の幅を狭めないか
  • 85. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト → 楽しく学べた • ビルド時間の増加 • CIパイプラインの安定性 • 採用の幅を狭めないか
  • 86. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト → 楽しく学べた → そもそも大したことない • ビルド時間の増加 • CIパイプラインの安定性 • 採用の幅を狭めないか
  • 87. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト → 楽しく学べた → そもそも大したことない • ビルド時間の増加 • CIパイプラインの安定性 • 採用の幅を狭めないか
  • 88. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト → 楽しく学べた → そもそも大したことない • ビルド時間の増加 → ほぼ変わらない※ • CIパイプラインの安定性 • 採用の幅を狭めないか
  • 89. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト → 楽しく学べた → そもそも大したことない • ビルド時間の増加 → ほぼ変わらない※ • CIパイプラインの安定性 • 採用の幅を狭めないか
  • 90. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト → 楽しく学べた → そもそも大したことない • ビルド時間の増加 → ほぼ変わらない※ • CIパイプラインの安定性 → 何も問題ない • 採用の幅を狭めないか
  • 91. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト → 楽しく学べた → そもそも大したことない • ビルド時間の増加 → ほぼ変わらない※ • CIパイプラインの安定性 → 何も問題ない • 採用の幅を狭めないか
  • 92. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト → 楽しく学べた → そもそも大したことない • ビルド時間の増加 → ほぼ変わらない※ • CIパイプラインの安定性 → 何も問題ない • 採用の幅を狭めないか → 皆さま次第!
  • 93. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. • チームの学習コスト → 楽しく学べた → そもそも大したことない • ビルド時間の増加 → ほぼ変わらない※ • CIパイプラインの安定性 → 何も問題ない • 採用の幅を狭めないか → 皆さま次第! → Kotlin経験者で縛ってない
  • 94. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. この先
  • 95. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 他のサービスへの展開
  • 96. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 他のサービスへの展開 ・無理に強制しない
  • 97. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 他のサービスへの展開 ・無理に強制しない ・人の異動に合わせて、自然と広がっていく
  • 98. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 他のサービスへの展開 ・無理に強制しない ・人の異動に合わせて、自然と広がっていく サーバサイドKotlin
  • 99. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 他のサービスへの展開 ・無理に強制しない ・人の異動に合わせて、自然と広がっていく サーバサイドKotlin ・社内コミュニティが生まれつつある
  • 100. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. 他のサービスへの展開 ・無理に強制しない ・人の異動に合わせて、自然と広がっていく サーバサイドKotlin ・社内コミュニティが生まれつつある ・Spring使えるし、おすすめ
  • 101. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. まとめ
  • 102. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved. まとめ • Kotlinはすばらしい • チーム内でのコミュニケーション大事 • 社内横断的なコミュニケーションも大事 • Kotlinはすばらしい
  • 103. Copyright 2018 Yahoo Japan Corporation. All Rights Reserved.

Editor's Notes

  1. こんにちは。森といいます。 私からは、弊社AndroidアプリのKotlin導入状況と、今後の展開についてお話させていただきます。 よろしくお願いします。
  2. ヤフーには、黒帯という、こういう場でお話したり、社内の技術課題の解決をしたりする制度があるのですが、 私は、Android分野で黒帯をしております。 そのほか、ヤフオクでiOSやAndroidアプリのアーキテクチャについて担当しています。
  3. それと、自分が書いた本を、今日10冊くらい配っていると聞いています。 もうずいぶん内容が古いので、おすすめはできません。
  4. 最初に、このセッションの内容を要約します。 このセッションでは、次のような話をします。
  5. Kotlinはすばらしい
  6. 新しい言語を導入するときには、チーム内でのコミュニケーションが重要になる
  7. 同時に、社内横断的なコミュニケーションも大事になる。 社員が多いと、全員で一斉に同じ方向に進むのは難しくなりますが、せっかく人が多いわけですから、 チームごとに
  8. 最後に、Kotlinはすばらしい。ざっくりこのようなことを、お話いたします。 それでは始めていきます。 ・2017年、Kotlinの導入を進めてきました ・Kotlinを導入した経験を共有することを通して、  当社のカルチャーも紹介します ・Kotlinの導入を考えている方の参考になれば幸いです
  9. まずKotlinについて、概要を押さえておきましょう。
  10. Kotlinは、 2011年にJetBrainsという、いろいろな言語向けに統合開発環境をつくっている会社が発表した、JVM言語です。 JVMが動作する環境なら、PF問わず使うことができます。 実はKotlinは、発表当初から、これは筋が良いんじゃないかと評価の高い言語でした。
  11. この画像は、Googleでシニアエンジニアをされていたセドリックさんのブログです。 JetBrainsがKotlinを発表したその日のうちに、あなたがKotlinを喜ぶべき5つの理由というエントリを公開しています。 日本でも、6日後にはKotlinの公式ドキュメントの一部が和訳され、紹介されています。
  12. 私はAndroidエンジニアですが、AndroidアプリをKotlinで開発する試みは、2012年ごろから始まっています。 2012年のはじめ頃といえば、Android 4.0の頃です。 画像はJetBrainsのフォーラムで、「理論的には、KotlinでAndroidアプリを開発できるんですよね?」というような質問がされているところです。
  13. まあ筋が良いといっても、出たばかりの言語をいきなり仕事に取り入れる人はあまりいません。 これはGitHubでのコード行数などのグラフで、JetBrainsが発表したものです。 しばらく、使う人がほとんどいない状況でしたが、2015年から16年ごろにかけて徐々にユーザーを増やし、 昨年のGoogle I/OでAndroidの公式開発言語に採用されてからは、爆発的に利用者を伸ばしています。 この頃にKotlinを知ったという人も多いのではないでしょうか。
  14. Kotlinがなぜ筋が良いと言われるのか、それはコンセプトにあります。
  15. Kotlinのコンセプトは、この4つです。
  16. 実用主義というのは、特定の考え方を押し付けず、Javaのままの書きかたでも使えるということです。 そうでなければ、習熟するまでKotlinを使うことができないことになり、Javaからの移行のコストが高くなってしまいます。 Kotlinには、Javaにはない機能も多くありますが、どれも他の言語からもってきたもので、Kotlin独自といえるものはほとんどありません。 このため、その機能の有用性は保証されています。 IDEのツールサポートも手厚くなっています。Kotlinのコンパイラと、IDE向けのプラグインは、同じリポジトリに含まれています。 Kotlinに新機能を追加するときには、IDEプラグインも対応しないとリリースできないということです。 そういうわけで、言語的には新しいけどツールが追いついていないということもありません。
  17. 次に、Kotlinではコードを簡潔に表現することができます。 コードが簡潔であるというのは、実現したい意図がコードに明確に表現されていることを指しています。 コードが短いという意味ではありません。
  18. たとえばこれは、Javaでの典型的なテキストファイルの読み込みコードです。 メソッドの大半が、何をしたいかというよりも、そのために必要な手続きのためのコードで埋まっています。 バッファードリーダーで、テキストファイルを行ごとに読み取っていく、というのは、このコードでは伝わりません。
  19. Kotlinならこうです。 readLines()は自動的にcloseしてくれます。 バッファードリーダーで、行ごとに読み込む、と書いてありますね。意図通りです。 例外のキャッチを省略していますが、まあ本当はやったほうがいいでしょうね。
  20. つぎに、安全です。 プログラミング言語の安全性と、実装コストはトレードオフの関係にあります。 より安全にしようとするなら、コンパイラにたいして、何をしたいか細かく情報を伝えないといけないからです。 Kotlinでは、Java以上の安全性を、より低い実装コストで実現しています。 特にNull安全や、型安全性に対していえます。
  21. 最後に、Javaとの高いレベルでの相互運用性です。 ほぼ完全な相互運用性を持っています。 既存のJavaライブラリもほぼすべて問題なく使うことができます。 ツールサポートも問題ありません。
  22. さて、このように素晴らしいKotlinですが、だからといって考えなしに導入を進めるわけにもいきません。 Kotlin導入前に検討したことをお話します。
  23. まずなんでKotlinを導入するか。理由は3つあります。
  24. その1、desugar問題
  25. Androidは、ラムダ式などのJava8の言語機能に対応するために、コンパイル時にdesugarというバイトコード変換ステップをはさみます。
  26. ところで、特定のライブラリを使っていると、desugarは無効化されます。
  27. そして、そのライブラリを使っています。これは外せません。
  28. なので、このままではJava7でコードを書き続ける羽目になります。 そんなことはしたくありません。
  29. 次に、Swiftとの親和性です。
  30. SwiftとKotlinのコードはけっこう似ています
  31. これはSwiftで書いたコードです。 名前と年齢のフィールドがあって、成人しているか判定するメソッドがあります。
  32. Kotlinではこうです。 これだと似てないですけど
  33. こう書くと似ていますね。 Swiftのコードは、Kotlinでいろいろ、省略せずに書いた場合のコードに似ています。 だから、Kotlinに慣れていると、Swiftのコードも読むことができます。
  34. 弊社のiOSアプリはほぼすべて、Swiftを導入済みです。
  35. iOSのエンジニアも、Androidのエンジニアも、互いのコード、互いの仕事に興味をもって コミュニケーションするきっかけになればなーという理由です。
  36. 3つ目の理由は、開発をもっと楽しくしたいということです。
  37. 多くのアプリで共通して必要になる、主要な3要素は、 イベントのハンドリング、非同期処理、通信処理です。 これらに関わるボイラープレートを大きく減らせます。 手続きみたいなコードをいっぱい書くよりも、実現したいことだけを簡潔に書ければ、 開発はもっとずっと楽しくなります。
  38. たとえばこれはJava7で書いた、ボタンを押したらトーストを表示するというコードです。
  39. ですけど、コードの意図に関わる部分はこれだけです。 ボタンを押したら、トーストを表示する
  40. Kotlinならこのように、コードの意図通りに、簡潔に表現できます。 Kotlinは、書いていて楽しい。 これが3つ目の理由です。
  41. 一方で、リスクについても検討しました。
  42. まず学習コスト。これは、Kotlinの導入を決めた直後のチームのふりかえりの内容です。 P、Problemのなかに、Kotlinがあって、メンバー全員が票をいれています。 Kotlinにたいする不安が伺えます。
  43. 次に、ビルド時間が増えるんじゃないか。 KotlinはJavaとは別にビルドされるので、そのぶんビルド時間が増えるのではないかということです。
  44. それから、CIパイプラインがこれまで通り使えるかという点
  45. 最後に、Kotlinの経験のある人がまだ少なかったので、採用の幅を狭めないかについても不安でした。 これらの点が不安ではありましたが、とりあえずやってみようということで、はじめました。
  46. 導入を決めたあと、実際にチームに展開するために行ったことをお話します。
  47. 個人レベルでの学習では、
  48. なにで学習したかを社内で聞くと、Kotlinスタートブックを挙げる人が多かったです。 個人的には、Kotlin in actionがおすすめです。かなり詳しくなれます。
  49. Try KotlinというWebサイトでは、Kotlinでコードを書いてすぐに実行して試すことができるんですが、 そこにKotlin Koansという、Kotlinをクイズ形式で学ぶことができるコンテンツがあります。 これは楽しみながら学べます。
  50. ヤフオクのAndroidチームに展開したときには、
  51. まずルールをつくりました。 その1,新規クラスはKotlinでかく。テストもです。
  52. その2,JavaをKotlinに置き換えるだけのタスクは積まない。 アプリがJavaで書かれてようが、Kotlinで書かれてようが、ユーザーはどっちでもいいわけです。 何も嬉しくない。だからKotlinに置き換えるだけのタスクはNGとしました。
  53. その頃、ヤフオクアプリのアーキテクチャ担当として、見直していた時期だったので、 Kotlinを導入するのにちょうどよかったです。
  54. こうしたルールとともに、Kotlinで書き始める前に、1日合宿をおこないました。 TODOアプリを、1日かけてKotlinでみんなで書くと。
  55. TODOアプリだと、サーバからデータを取ってきて、リストを表示する。 リスト表示、非同期処理、通信処理、ローカルキャッシュなどの、アプリでよく使う要素はだいたい含んでいるので、 テンプレートとして適しているからです。
  56. こういう典型的な処理を書いて、みんなでレビューすることで、 Kotlinではどう書いていくか、コードイメージの共有をすることができました。
  57. 続いて、エクストリーム・プログラミングです。 ヤフオクアプリでは、iOSもAndroidも、開発手法としてエクストリーム・プログラミングを取り入れています。 そのため、開発はペアで行われます。ペアを組む相手も、毎日ローテーションしています。
  58. ペアを組み、ローテーションする理由は、チームメンバーの知見を平準化するためです。 話しながらコードを書くなかで、知らなかったことを教えてもらったり、良くないコードを指摘するなどが行われて、 チーム全体のKotlinへの習熟が進んでいきます。
  59. 16:30〜のセッションでは、ヤフオクiOSチームの山下がより詳しく、エクストリームプログラミングについてお話します。 よろしくお願い致します。
  60. チームに導入する一方で、黒帯として全社への展開も行いました
  61. そもそもですが、
  62. 弊社のアプリがKotlinを入れ始めたのは、2015年末ごろからです。 これは、社内で使われているスラック的なチャットツールですが、 社内のLT会がきっかけとなって、社内にKotlinが紹介され始めました
  63. それ以降、主に有志で技術コミュニティが作られ、Kotlinの導入が進められてきました。
  64. まず社内の人にもっとKotlinを認知してもらうため、キックオフセミナーを開きました。
  65. Kotlinに特化したLT会も開かれるようになりました。だいたい月1ペースで行われています。
  66. 会社からの支援もありました。弊社にはトップカンファレンス参加支援制度といって、海外のカンファレンスに参加する費用を全額だしてくれる制度があるのですが、 それをつかってKotlinConfというKotlin初のグローバルカンファレンスに参加しました。 帰国後は社内セミナーを通じて、学んだことを広めています。
  67. 弊社にはだいたい5,000人の社員がいて、数多くのサービスがあり、それぞれ組織がわかれています。 Kotlinが良さそうだぞ、としても、5,000人でKotlinに突撃じゃー!と向かっていくのは危険です。
  68. ところで、弊社では業務中でも、先に挙げたチャットツールなどで会社横断で情報を共有したり、話し合ったり、雑談をしたり、する文化があります。 えんえんと猫の写真が共有される部屋もあれば、社長と雑談するための部屋もあります。 こうした環境のから、自然と会社横断的なコミュニティが生まれます。 これはエンジニアに限らず、デザイナーなども同じです。 Kotlinコミュニティもこうしたなかで生まれました。
  69. コミュニティを中心としてセミナーを開いたり、LT会を開いたりするなかで、 メンバー間で知見が共有され、蓄積されていきます。
  70. こうして得られた知見は、ペアプログラミングやチーム内の勉強会を通じて、チーム内に展開されます。 いろんな人が、いろんなコミュニティにゆるやかに属していて、各レイヤーでのコミュニケーションを通じて、全体に広がっていきます。 そういうわけで、会社もコミュニティ活動をゆるく支援しています。
  71. こうした活動を通じて、どのように変化してきたかですが、
  72. まずこれは、昨年9月にDevFestで発表したときの資料です 大半のアプリは10%もない、という状況でした。
  73. ヤフオクは、Kotlinのコードが3,000ほどになりました。 ただ、全体で27万行もあるので、まだまだKotlin化する余地が大いにあります。
  74. Sports naviは徐々にKotlin化が進んできていて、今では27%ほどになっています。
  75. GYAOは、ほぼフルKotlinのAndroid TV版と、まだまだなスマートフォン版があります。 これはまだまだなほうです。まだまだですが、順調にKotlin化されてきています。
  76. Kotlinを導入した結果、どうなったか
  77. 導入前は不安を感じていたチームメンバーの反応ですが、
  78. 導入直後から、みんなKotlinが好きになりました。 これはふりかえりの「よかったこと」ですが、全員がKotlinを挙げています。 やらせじゃないですよ、僕はその場にいなかったので。
  79. iOSのコードも、Androidのコードも、互いに互いのコードを読めるようになりました。 前に、iOSアプリで不具合が発生したことがあって、そのときiOSメンバーが全員帰宅済みだったんですが、 Androidのメンバーが原因を特定したことがありました。 もうiOSのコードも問題なく読むことができるようになりました。
  80. 最後に、書いていて楽しいです。 ヤフオクに限らず、GYAOや別のチームに聞いても、口を揃えて楽しいといいます。
  81. 導入前、懸念していたリスクが実際導入してみてどうだったかについても、 振り返ってみたいと思います
  82. 導入前には、これらのリスクを懸念していました。
  83. まず学習コスト
  84. 合宿で楽しく学べました
  85. あとそもそも、チームとしては1日合宿したくらいで、 大したコストじゃありませんでした
  86. 続いて、ビルド時間の増加については
  87. ほぼ変わりませんでした。 Kaptってアノテーションプロセッサは遅い、と言われていますが、 ヤフオクはKaptを使ってないので、問題になりませんでした
  88. CIパイプラインは
  89. 何事もなく、今日も平和に動いています
  90. 最後に、採用の幅を狭めないかという点ですが、 これは
  91. 皆さま次第でございます
  92. まあそれは置いといて、そもそもKotlinは難しくありませんから、 Kotlin経験者縛りで募集をかけていません。 この点も、問題になりませんでした。
  93. 最後に、Kotlinはすばらしい。ざっくりこのようなことを、お話いたします。 それでは始めていきます。 ・2017年、Kotlinの導入を進めてきました ・Kotlinを導入した経験を共有することを通して、  当社のカルチャーも紹介します ・Kotlinの導入を考えている方の参考になれば幸いです