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
OSSにコントリビュートした話
Search
yu mitsuhori
April 25, 2019
Technology
120
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OSSにコントリビュートした話
DroidKaigi2019公式アプリで初めてOSSにコントリビュートした話について社内勉強会で発表した資料です。
yu mitsuhori
April 25, 2019
More Decks by yu mitsuhori
See All by yu mitsuhori
【DroidKaigi版】ReactNativeとKotlinで叶える夢のリアルタイム音声配信
youmitsu
1
3.3k
ReactNativeとKotlinで叶える夢のリアルタイム音声配信
youmitsu
1
930
stand.fm(Android)におけるreact-native-track-playerの改善
youmitsu
1
2.3k
TargetSdkVersion29で BottomNavigationが点滅する件
youmitsu
1
1.7k
リリース前のリグレッションテストをUIテストで自動化、1年間運用した話
youmitsu
2
440
New features in RemoteConfig, Analytics at Google I/O 2019
youmitsu
1
780
FirebaseNotification,RemoteConfigでユーザセグメントごとにプッシュ通知を実装する
youmitsu
8
1.6k
Report from Google I/O 2019
youmitsu
1
120
初めて自作ViewのAARライブラリを公開した話
youmitsu
1
450
Other Decks in Technology
See All in Technology
iOSDC Japan 2026 day1 TrackC 10:50
feedtailor
1
160
絵ではじめるKubernetesセキュリティ
aoi1
3
610
おい、エージェントを使って終わらせろ
nwiizo
0
420
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
160
人間はどの意思決定を手放せるのか
kawasima
14
7k
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
8
3.4k
CLIライブラリ開発を支える技術
htnabe
0
120
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
190
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
3k
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
150
10分で知る最近のOmarchy
komagata
0
350
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.3k
Balancing Empowerment & Direction
lara
6
1.3k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
GraphQLとの向き合い方2022年版
quramy
50
15k
Thoughts on Productivity
jonyablonski
76
5.4k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Scaling GitHub
holman
464
140k
Deep Space Network (abreviated)
tonyrice
0
310
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
890
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Transcript
OSSにコントリビュートした話 テクノロジー本部 SD1部 三堀 裕
アジェンダ • この発表の目的、ゴール • OSSとは • OSSのコントリビュートをした話 • OSSのコントリビュートの仕方 •
自社サービスに活かすには〜OSS活動のメリット〜 • まとめ 2
自己紹介 • 三堀裕 • テクノロジー本部SD1部 • 3年目 • ルナルナアプリAndroid 3
今回の発表の目的、ゴール 目的 • OSSとは何か、コントリビュート方法がわかる • OSSのコントリビュート活動をしてよかったなという点の共有 ※Androidの話多めかもしれません。 ゴール • 少しでもOSS活動について、重要性、面白さを感じてもらい興味を持ってもらえる
• コントリビュートしてみよう!という方が増える 4
OSSとは~基礎知識~ 5
突然ですが、、 OSSってどんなものがあると思いますか? 6
7
OSSとは • OSS(OpenSourceSoftware) • ソースコードの改変や、再配布が認められている無償のソフトウェアのこと • 様々なライセンスがある(MIT, Apache2など) • ソフトウェア開発組織の人間でなくてもソースコードをみれたり、自分でissueを起票
したり、実装したりすることができるものもある 8
例えばこのようにGithubに公開されている (Kotlinの例) 9
コントリビュートとは Githubなどに公開されているOSSプロジェクトに対して、何かしらの活動(貢献)をする。 • PullRequestを投げる • issueを報告する 10
OSSのライセンス 複製・配布・改良を制限するために、OSSの利用にはライセンスというものが定められて いる。 1. Copyleft系ライセンス a. GNU General Public License
2. Permissive系ライセンス a. MIT License b. Apache License 2.0 11
OSSにコントリビュートした話 12
今回コントリビュートしたOSS DroidKaigi2019の公式アプリ(https://github.com/DroidKaigi/conference-app-2019) 13 Androidの方はこちらからイ ンストールできます->
DroidKaigi2019? • 国内で行われるAndroidDevloperによる年に一度のカンファレンス • 公式アプリが毎年あり、OSSでGithub上に公開されている。もちろんコントリビュート 可能 • コントリビュータはWelcome talkの時に紹介されるのでちょっと嬉しい 14
DroidKaigi2019公式アプリについて • Kotlin Multiplatform Project(Kotlin MPP) https://kotlinlang.org/docs/reference/multiplatform.html • Multi module
• Flux-based • Android JetPack(Lifecycles, LiveData, Navigation) • Kotlin coroutines 15 Android jetpack Flux-based Architecture→
コントリビュート内容 issue(PullRequest)を2件対応 1. UI編集中のプレビュー画面に表示するSampleデータを作る https://github.com/DroidKaigi/conference-app-2019/pull/359 2. スクロールによって、ツールバーにタイトルを表示させる機能追加 https://github.com/DroidKaigi/conference-app-2019/pull/525 16
1. UI編集中のプレビュー画面に表示する Sampleデータを作る 17
1. UI編集中のプレビュー画面に表示する Sampleデータを作る 18 sampledataディレクトリに jsonファイルの追加 json(サンプルデータ)作成
1. UI編集中のプレビュー画面に表示する Sampleデータを作る 19 ↑サンプルデータ (sampledata/service_session.json) item_session.xml (例)タイトル部分のxml 指定した部分の データ(sessionA)が
反映される <androidx.emoji.widget.EmojiTextView android:id="@+id/title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" … tools:text="@sample/service_session.json/data/ session_name" /> <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" > … </androidx.constraintlayout.widget.ConstraintLayout> <androidx.emoji.widget.EmojiTextView android:id="@+id/title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:fontFamily="@font/notosans_medium" android:text="@{session.title.getByLang(lang)}" android:textAlignment="viewStart" android:textAppearance="@style/TextAppearance.App.Subtitle1" app:highlightText="@{query}" app:layout_constraintEnd_toStartOf="@id/favorite" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/ongoing" tools:text="@sample/service_session.json/data/session_name" /> … </androidx.constraintlayout.widget.ConstraintLayout> </layout>
20 AndroidStudioのプレビュー画面 1. UI編集中のプレビュー画面に表示する Sampleデータを作る List系(RecyclerViewなど)の プレビュー画面の見た目がよ くなる→ sampledataが適用されているlistitem をxmlで指定
2. スクロールによって、ツールバーに タイトルを表示させる機能追加 21
22 2. スクロールによって、ツールバーに タイトルを表示させる機能追加 1. 下にスクロールすると、ヘッダーのtitle、elevation が表示される 2. 一番上までスクロールすると、ヘッダーのtitle、 elevationが消える
3. 他の画面に遷移してもヘッダーが残っている 仕様 DroidKaigi2019セッション詳細画面→
2. スクロールによって、ツールバーに タイトルを表示させる機能追加 23 多くの指摘を受けてしまい マージされるまで大変でした、、
マージされたと思いきや、、 2,3日後には実装が変わっていました、、w プロジェクト管理者の想定では、 「MotionLayout」というアニメーションを新技術を 使う想定だったらしいです 24
コントリビュートしてみよう 25
コントリビュートするためのステップ ※DroidKaigiアプリの場合 1. やりたいIssueを決める 2. Discussionで 宣言する 3. コントリビュートしたいプロジェクトをフォークし、ブランチを切って、実装する 4. PullRequestを出す
5. レビューをしてもらい、修正点があれば修正してプッシュを繰り返す 6. 問題なければマージ←祝コントリビュータ!! 26
コントリビュートしてみよう① 〜やりたいissueを決める〜 27 ①issueの中から やりたいものを選ぶ
28 コントリビュートしてみよう② 〜意思表明をする〜 ↑このissueをやろう! ② で意思表示 プロジェクト管理者の方からアサインされる ※実装方針等で不安な部分あればissueのDiscussionで聞いておく と手戻りなくて良さそう
1. 右上の からリポジトリをForkする 2. Forkしたリポジトリをクローン。作業ブランチを切る 3. issueの内容に沿って、実装やテストを書く。 4. 修正したコードをプッシュする (例:hackers_hour_testブランチ) 5.
PullRequestを親リポジトリに対して出す 29 コントリビュートしてみよう③ 〜実装してPullRequestを出す〜
コントリビュートしてみよう④ 〜PR上にてコードレビュー、修正〜 30 マージされたら、、 祝Contribute!
これで君も祝コントリビュータ!! 31
コントリビュートの注意点 • 各プロジェクトのやり方に従う ◦ github上以外で管理されているプロジェクトもある ◦ issueの意思表明の仕方 ◦ コーディング規約など •
最初に対応方針とか相談した方が良さそう 32
OSS活動を自社サービス に活かすには 33
OSS活動を自社サービスに活かすには 〜OSS活動のメリット〜 • 優秀なエンジニアのコードレビューが受けれる • 自社以外のプロジェクトの良い設計や実装を知ることで価値観が広がる。良い部分 は盗んで、自社サービスにも活かせる • 最新の技術を知れて、自社アプリのリファクタリングにも応用できるような経験がで きる
• (自分で1からOSSを作る場合) ソフトウェアとしてアプリの一機能を切り出す必要がある。モジュール分割のための 設計を考える訓練にもなる? • もし社内で共通して使えるロジックや処理などがあれば、社内OSSとして公開するこ とによって各プロジェクトごとで同じロジックを実装する必要もなくなる? 34
まとめ 35
まとめ • OSSのコントリビュート活動の一例を紹介(DroidKaigi2019公式アプリ) • OSS活動は多くのメリットがあるし、意外とすぐできる(ものもある) ◦ 有名なエンジニアのコードレビューを受けれたり、ディスカッションができる ◦ 新技術を知れる、価値観を広げられる ◦
キャリアにもプラスになる • これを機に(興味があるor自分も使っている)ようなOSSがあればコントリビュートし てみてはいかがでしょうか? 36
ご静聴ありがとうございました 37
参考資料 • オープンソースソフトウェア(OSS)ライセンスの比較・まとめ、GPLやMITは何が違う のか https://www.sbbit.jp/article/cont1/34811 • 公開ライセンスの話(Qiita) https://qiita.com/lovee/items/484ae3fc038314a64ee2 •
Kotlin Multiplatform(Kotlin Programing Language) https://kotlinlang.org/docs/reference/multiplatform.html • Android Jetpack(Android Developers) https://developer.android.com/jetpack?hl=JA 38