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
88
jackson-module-kotlin 2.19の新機能とJackson 3.0に向けた取組
k163377
1
59
jackson-module-kotlin 2.15 リリースノート解説
k163377
0
370
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
CI改善もDatadogとともに
taumu
0
190
自力でTTSモデルを作った話
zgock999
0
100
Serverless Rust: Your Low-Risk Entry Point to Rust in Production (and the benefits are huge)
lmammino
1
150
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
160
From the Wild into the Clouds - Laravel Meetup Talk
neverything
0
120
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
220
Grafana Loki によるサーバログのコスト削減
mot_techtalk
1
150
sappoRo.R #12 初心者セッション
kosugitti
0
270
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
220
CDKを使ったPagerDuty連携インフラのテンプレート化
shibuya_shogo
0
100
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
240
Datadog Workflow Automation で圧倒的価値提供
showwin
1
160
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Six Lessons from altMBA
skipperchong
27
3.6k
Building Your Own Lightsaber
phodgson
104
6.2k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Documentation Writing (for coders)
carmenintech
67
4.6k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
BBQ
matthewcrist
87
9.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
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