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
320
Kotlin向けOSSに貢献してきて感じたアレコレ
wrongwrong
January 20, 2023
Tweet
Share
More Decks by wrongwrong
See All by wrongwrong
スター1.1kリポジトリのメンテナやってたら確定申告が確定した話
k163377
1
120
jackson-module-kotlin 2.19の新機能とJackson 3.0に向けた取組
k163377
1
96
jackson-module-kotlin 2.15 リリースノート解説
k163377
0
420
jackson-module-kogeraの紹介
k163377
0
400
jackson-module-kotlinを読もう!
k163377
0
1.7k
Java Reflectionから見たvalue class
k163377
0
670
Other Decks in Programming
See All in Programming
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
150
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
120
Startups on Rails in Past, Present and Future–Irina Nazarova, RailsConf 2025
irinanazarova
0
100
効率的な開発手段として VRTを活用する
ishkawa
0
140
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
270
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
150
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
470
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
110
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
320
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
190
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
21
4k
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
12
4.4k
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Agile that works and the tools we love
rasmusluckow
329
21k
The Language of Interfaces
destraynor
158
25k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
How to Ace a Technical Interview
jacobian
278
23k
GraphQLとの向き合い方2022年版
quramy
49
14k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
It's Worth the Effort
3n
185
28k
KATA
mclloyd
30
14k
RailsConf 2023
tenderlove
30
1.1k
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