Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kotlin向けOSSに貢献してきて感じたアレコレ
Search
wrongwrong
January 20, 2023
Programming
0
280
Kotlin向けOSSに貢献してきて感じたアレコレ
wrongwrong
January 20, 2023
Tweet
Share
More Decks by wrongwrong
See All by wrongwrong
スター1.1kリポジトリのメンテナやってたら確定申告が確定した話
k163377
1
90
jackson-module-kotlin 2.19の新機能とJackson 3.0に向けた取組
k163377
1
61
jackson-module-kotlin 2.15 リリースノート解説
k163377
0
380
jackson-module-kogeraの紹介
k163377
0
370
jackson-module-kotlinを読もう!
k163377
0
1.6k
Java Reflectionから見たvalue class
k163377
0
620
Other Decks in Programming
See All in Programming
推しメソッドsource_locationのしくみを探る - はじめてRubyのコードを読んでみた
nobu09
2
330
バッチを作らなきゃとなったときに考えること
irof
2
530
データベースのオペレーターであるCloudNativePGがStatefulSetを使わない理由に迫る
nnaka2992
0
240
生成AIで加速するテスト実装 - ロリポップ for Gamersの事例と 生成AIエディタの活用
kinosuke01
0
130
[JAWS DAYS 2025] 最近の DB の競合解決の仕組みが分かった気になってみた
maroon1st
0
130
技術を改善し続ける
gumioji
0
130
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
1.1k
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
9
2.5k
Kotlinの開発でも AIをいい感じに使いたい / Making the Most of AI in Kotlin Development
kohii00
5
1.4k
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.6k
新宿駅構内を三人称視点で探索してみる
satoshi7190
2
120
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1.2k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Writing Fast Ruby
sferik
628
61k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
A designer walks into a library…
pauljervisheath
205
24k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
The Language of Interfaces
destraynor
156
24k
Optimizing for Happiness
mojombo
376
70k
Adopting Sorbet at Scale
ufuk
74
9.2k
Making Projects Easy
brettharned
116
6k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Transcript
Kotlin 向け OSS に貢献してきて感じたアレコレ 1
お詫び 月曜から体調を崩しており、まだ咳・鼻水が残っています (先に資料作っといて良かった……!) お聞き苦しい所が有るかも知れませんがご容赦下さいm(_ _)m 2
自己紹介 宮田 木織 株式会社justInCaseTechnorogiesバックエンドエンジニア 業務ではここ1年程 Kotlin で Spring WebFlux している
アウトプットしているアカウント Qiita: @wrongwrong GitHub: k163377 3
OSS への Kontribute 歴 外部 OSS への貢献を強く意識するようになったのは大体2020年末から Kotlin 関係を中心に取り組んでいる Kotlin
引数に value class を含む関数の Reflection 呼び出し時のエラー修正 この問題のせいで kotlin-reflect は実質 value class 非対応だった 上記のためのテストケース追加(3,000行弱) KCallable.callBy の高速化 kotlin-reflect でデフォルト引数を有効にして関数呼び出しする機能 最大5倍弱高速化した 他コードで貢献したリポジトリ: jackson-module-kotlin , moshi , ktlint など 4
宣伝 jackson-module-kotlin のリライトプロジェクト始めました ProjectMapK/jackson-module-kogera jackson-module-kotlin 2.16 になるかも?(最新は 2.14 ) 現時点で以下のような利点が有ります
kotlin-reflect 無しで軽量 デシリアライズ処理が高速 value class のデシリアライズが可能(条件付き) 興味の有る方は是非使ってみて下さい スター・バグ報告もお待ちしています 1/24の Kotlin 愛好会で詳しい話をする予定です 5
今日話すこと OSS 活動を始めたきっかけ OSS 活動をやっていて感じたこと 貢献を続けるモチベーションの話 6
OSS 活動を始めたきっかけ 7
自作 OSS の開発 元々は職場に Kotlin を導入した際の Java ツールの代替として作ったもの 内容は kotlin-reflect
を使ったマッピングツール 公開後、1年弱の間改良にハマった 高速化、機能追加、etc... 取り組む内に kotlin-reflect や他諸々への理解が深まった kotlin-reflect の機能と裏側の仕組み、抱える課題 gradle 周り、 JMH によるベンチマーク作成 etc... コロナ禍に入ったことも有り余計に力が入った 8
いつの間にか有名 OSS にも貢献できるスキルを得ていた 自作 OSS の開発で得た知見で多くの有名 OSS も改良できそうなことに気付いた 特に kotlin-reflect
を使う処理の高速化 元々有名 OSS に貢献してみたいという意欲は有った 何度か挫折していたので、できそうと分かってからは頑張って取り組めた いくつかのリポジトリにPRを送る内に慣れていった moshi ( reflection 版)のデシリアライズ高速化 jackson-module-kotlin のデシリアライズ高速化や機能追加など etc... 9
OSS 活動をやっていて感じたこと 10
自分で作り込んでみる経験は全方面に役立つ 関連するありとあらゆる技能が伸びる コーディング・コードリーディング力 IDE や周辺ツールの操作力 特定ライブラリや機能を扱うノウハウ etc... 得られる知識は業務に役立てられるものも多い 環境構築など、業務では鍛えにくい部分も伸びる 11
ある程度フックが無いと有名 OSS に貢献するのは難しい 自分も有名 OSS に貢献しようとして挫折していた 最初はまず問題点・改善点の探し方が分からなかった 修正の仕方も当然思いつかなかった "専門分野"ができた途端に多くのリポジトリに貢献できるようになった 自分は特に
kotlin-reflect を使い込んでノウハウや課題を把握したこと 自分にとって解決可能かつ意義の有る課題に出会えるかは運も絡む 何かを自作してみたり、使い込んで行く程チャンスは増える 12
余談: OSS 活動目指すなら Kotlin x Reflection がオススメ! Reflection は業務から入る形で取り組みやすい ボイラープレートを消せるような付加価値の高いコードを作れる
数百行書くだけで今後の数千行とバグを無くせる 自作→ OSS 化というルートが取りやすい 他 OSS への貢献にも繋げやすい印象有り value class のせいで Java Reflection を使うライブラリが Kotlin 互換失いがち Kotlin を書ける人口も言うほど多くはないためチャンスは沢山あるはず 13
「完璧」じゃなくてもなんとかなる 有名 OSS に貢献しているのは分野全体に精通した超人ばかりと思ったが違った 必要なのは狭くても深い知見 全知じゃなくとも一点さえ突破できればPRを出せる 攻略法を一つ見出せれば色々なリポジトリに貢献できる 英語力はそんなに要らない 機械翻訳を多少直すだけで十分やっていける 必要だったのは
DeepL と正しいコードだけ 14
貢献を続けるモチベーションの話 15
外部 OSS への貢献で直接的に得をすることはあまり無い気がする 時間はかなり使うのに金にならず、感謝されることも少ない 翻訳やエビデンスの用意でコミュニケーションコストも結構かかる 貢献によって直接業務に適用できるスキルが得られるとは限らない 例えば Kotlin だけやってても AWS
を使えるようにはならない 対応が既知の範囲で完結してしまい、勉強にならないことも有る 副業した方が報酬有りで市場価値を上げられる気がする 特定のことが超できるより広範囲を一定やった経験の方が評価されそう(偏見) 16
有名 OSS への貢献を始める・継続するハードルは結構高い それなりに高いスキルが求められる割に外部から報われることは少ない 誰に教えてもらえるでも、やる義務がある訳でもない 意外とメンタルに来ることもある 対応されないまま数ヶ月待つこともザラ 待っている間に不安になってしまうことも このPRには価値が無かった? プロジェクトに設定されたプロトコルを守れてる?
不慣れな英語で無礼なコミュニケーションになっていない? モチベ的なハードルはそれなりに高い 17
自分が OSS への貢献を続ける理由 優れたコードを書けると楽しい コードが綺麗になったり、問題を解決することで大きな達成感が有る 特にベンチマークで優れた結果が出た時は非常に嬉しい PCだけで世界に影響できるのはとても面白い 「PC・スマホに触れる全員が自分のコードから利益を得てる」と言える 「世界中で自分だけが解決できた」という達成感がある 自分の名前とコードは上手いこと行けば自分の死後も残り続ける
他の何をやってもこういった気分は味わえない Kotlin を使わない理由が減ってくれると嬉しい!! 18
OSS に関する個人的なスタンス 何事も初めてやったり挑戦する時に得るものは多い OSS を作ったり軽く貢献することに挑戦するのはオススメ 自分が困った時、コードから問題を深掘りしてみるのもオススメ ただし、深入りし過ぎるのは一般にオススメしない 使う時間に比べて名誉以外のリターンが小さくなる どれだけの成果を出しても見合ったお金にはならない それでも作りたいので自分はやってます
19
We are hiring! ジャストインケースグループでは、さまざまな職種を採用中です Kotlin x Spring Webflux で保険 API
サーバーを開発しませんか? ご興味がある方はぜひ、採用ページよりお気軽にご応募ください! 採用全般 エンジニア求人一覧 20