Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kotlin向けOSSに貢献してきて感じたアレコレ
Search
wrongwrong
January 20, 2023
Programming
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kotlin向けOSSに貢献してきて感じたアレコレ
wrongwrong
January 20, 2023
More Decks by wrongwrong
See All by wrongwrong
関数呼び出しに対してコード生成したい!
k163377
1
150
スター1.1kリポジトリのメンテナやってたら確定申告が確定した話
k163377
1
200
jackson-module-kotlin 2.19の新機能とJackson 3.0に向けた取組
k163377
1
190
jackson-module-kotlin 2.15 リリースノート解説
k163377
0
540
jackson-module-kogeraの紹介
k163377
0
480
jackson-module-kotlinを読もう!
k163377
0
2k
Java Reflectionから見たvalue class
k163377
0
790
Other Decks in Programming
See All in Programming
Event is what happens
moro
2
2.6k
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
250
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
110
Kotlinの15年とServer-Side Kotlin
n_takehata
1
190
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
300
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
180
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
160
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.3k
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
150
AI Augmentation Techniques with Liberty
ivargrimstad
0
230
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
330
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
600
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
640
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
320
Designing Experiences People Love
moore
143
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Darren the Foodie - Storyboard
khoart
PRO
4
4.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
550
Amusing Abliteration
ianozsvald
1
370
Facilitating Awesome Meetings
lara
57
7.2k
Producing Creativity
orderedlist
PRO
348
41k
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