私が初めてコードでコントリビュートしたときの話

Event

ラクス OSS LT会 vol.2

Presented

2021/08/18 nikkie

お前、誰よ

  • Python大好き にっきー @ftnext / @ftnext

  • Python歴3年半。データサイエンティストにしてNLPer

Python Conference JP 2021 座長🇨🇭

2月の vol.1 でもLTしました⚡️

アニメも好きです😍

  • 1つ挙げると『ハイキュー!!』🏐( あらすじ

  • ブロッカー月島(ツッキー)のエピソードが好き

TODO:イチ推しのツッキーのエピソードはYouTubeで見られます!!

ツッキーが言われるセリフ

それがお前がバレーにハマる瞬間だ(木兎さん)

実は今回のタイトルも意識しました

それがお前がバレーにハマる瞬間だ✨

  • このLT「私が初めてコードでコントリビュートしたときの話」

  • 言い換えると、nikkieにとっての OSSにハマる瞬間 の話

お品書き

  • 初めてコードでコントリビュートした事例紹介

  • 振り返り:なぜコントリビュートできたか

LT:私が初めてコードでコントリビュートしたときの話

  • 初めてコードでコントリビュートした事例紹介

  • 振り返り:なぜコントリビュートできたか

質問:Pythonライブラリ Helium を知っていますか?

Helium

こんなに簡単です🍰


from helium import *
start_chrome("google.com")
write("helium selenium github")
press(ENTER)
click("mherrmann/helium")
go_to("github.com/login")
write("username", into="Username")
write("password", into="Password")
click("Sign in")
kill_browser()

https://github.com/mherrmann/selenium-python-helium/blob/master/docs/cheatsheet.md

It's me!😎

../_images/202108helium_contributor_nikkie.png

https://github.com/mherrmann/selenium-python-helium/graphs/contributors

経緯:ときは2020年5月

  • connpassから 参加一覧をCSV形式で 定期的にダウンロード。自動化したい

  • ブラウザ自動化が簡単に書けるHeliumを知っていた

  • Google Chromeで試したら、サクッとダウンロードできた!🙌

普段使いはFirefox

  • Chromeと同じコードでは動かない😢

  • ダウンロードの 確認ポップアップ のため

これのことです、Firefoxの確認ポップアップ

../_images/202108firefox_download_popup.png

確認ポップアップ抑制したい

Ability to set download directory and disable download or open popup using Firefox

https://github.com/mherrmann/selenium-python-helium/issues/19

Ownerのコメント

Helium lets you supply ChromeOptions to start_chrome since the last release. Maybe something similar could be added for Firefox?

I won't have time to implement this. But I will be happy to merge a PR that does it.

Ownerのコメント意訳

  • Heliumは最新のリリース(v3.0.2)で start_chrome 関数に ChromeOptions を提供できるようになった。おそらくFirefoxについても同様のものを加えられるんじゃないか

  • 実装している時間がない。でも、それをするPRは喜んでマージするよ

手元のFirefoxでだけでも動かせれば!

  • start_chrome のコードを見てみる(ならって start_firefox をハックしようとした)

  • あ、これ実装できるかも

(環境構築でハマりつつも)できた!🙌

LT:私が初めてコードでコントリビュートしたときの話

  • 初めてコードでコントリビュートした事例紹介

  • 振り返り:なぜコントリビュートできたか

振り返り:なぜコントリビュートできたか

  1. Issueを見る習慣が付いていた

  2. GitHubでのOSS開発フローに慣れていた

  3. Pythonのテストに慣れていた

  4. ちょうど実装できるIssueが開かれたばかりだった

振り返り:なぜコントリビュートできたか

  1. Issueを見る習慣が付いていた

  2. GitHubでのOSS開発フローに慣れていた

  3. Pythonのテストに慣れていた

  4. ちょうど実装できるIssueが開かれたばかりだった

1.Issueを見る習慣が付いていた

  • Pythonを始めた頃に参加した勉強会(2018/03)での学び

  • ライブラリのドキュメントにないときは、GitHubのIssueを検索する

  • Issue検索で助けられた経験多数( テクニックとしてオススメしたことも

参考:「入門書を読み終わったらなにしよう?」

振り返り:なぜコントリビュートできたか

  1. Issueを見る習慣が付いていた

  2. GitHubでのOSS開発フローに慣れていた

  3. Pythonのテストに慣れていた

  4. ちょうど実装できるIssueが開かれたばかりだった

2.GitHubでのOSS開発フローに慣れていた

  • vol.1でのLT「コードだけじゃない!いろいろなコントリビュート」

  • 翻訳を通して、GitHubのIssueやPull requestに慣れた

  • コードを書かなかったが、 コードでコントリビュートするための準備 をしていた

振り返り:なぜコントリビュートできたか

  1. Issueを見る習慣が付いていた

  2. GitHubでのOSS開発フローに慣れていた

  3. Pythonのテストに慣れていた

  4. ちょうど実装できるIssueが開かれたばかりだった

3.Pythonのテストに慣れていた

  • Pythonは独学で始め、2019年にデータサイエンティストに転職(ユーザベース)

  • TDD で開発する環境( ユーザベースの例

  • unittest やモックを 猛練習 の末に、スラスラ書けるように

Heliumのコードを直した際

  • テストコードのどこを直すか自信を持って判断できた

    • start_chrome 関数では options 引数のテストがないことにならった

  • 余談:テストが全部通らなくて、別途Issueを開きもした( #23

振り返り:なぜコントリビュートできたか

  1. Issueを見る習慣が付いていた

  2. GitHubでのOSS開発フローに慣れていた

  3. Pythonのテストに慣れていた

  4. ちょうど実装できるIssueが開かれたばかりだった (運!)

まとめ🌯:私が初めてコードでコントリビュートしたときの話

  • Helium というPython製ライブラリに、初めてコードでコントリビュートした

  • なぜコントリビュートできたか、 4点 共有

OSSにハマった瞬間の先

  • Heliumのように新しめのOSSのコードを読み始めた

  • 「そんな書き方できるのか。かっこいい!!」 もう楽しくてしょうがない

  • 🤫 OSSのコード読んでいるだけで、生活に困らないだけのお金もらえないかな・・

コードでコントリビュートしてみたい方へ

  1. 普段から Issueをのぞこう

  2. GitHubのIssueやPull requestを使って OSS開発フロー に慣れよう

  3. テストコード に慣れよう

  4. 1〜3ができているなら、タイミングが来たら飛び込むだけ

ご清聴ありがとうございました

  • Next, YOUR turn!

  • 次は皆さんが、初めてコードでコントリビュートする番です!

Appendix

過去のHelium関連のアウトプット

Heliumにコントリビュートした際のTwitterログ 1/2

Heliumにコントリビュートした際のTwitterログ 2/2

EOF