ラクス OSS LT会 vol.2
2021/08/18 nikkie
1つ挙げると『ハイキュー!!』🏐( あらすじ)
ブロッカー月島(ツッキー)のエピソードが好き
それがお前がバレーにハマる瞬間だ(木兎さん)
実は今回のタイトルも意識しました
このLT「私が初めてコードでコントリビュートしたときの話」
言い換えると、nikkieにとっての OSSにハマる瞬間 の話
初めてコードでコントリビュートした事例紹介
振り返り:なぜコントリビュートできたか
初めてコードでコントリビュートした事例紹介
振り返り:なぜコントリビュートできたか
https://github.com/mherrmann/selenium-python-helium (2600 star)
できること:ブラウザ操作自動化
Seleniumのラッパーで、 非常に簡単 に書ける!💫
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
https://github.com/mherrmann/selenium-python-helium/graphs/contributors
connpassから 参加一覧をCSV形式で 定期的にダウンロード。自動化したい
ブラウザ自動化が簡単に書けるHeliumを知っていた
Google Chromeで試したら、サクッとダウンロードできた!🙌
Chromeと同じコードでは動かない😢
ダウンロードの 確認ポップアップ のため
Seleniumでの抑制例が見つかる options.setPreference()
Heliumではどうやる? Issueを見てみる🔍
https://github.com/mherrmann/selenium-python-helium/issues/19
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.
Heliumは最新のリリース(v3.0.2)で start_chrome
関数に ChromeOptions
を提供できるようになった。おそらくFirefoxについても同様のものを加えられるんじゃないか
実装している時間がない。でも、それをするPRは喜んでマージするよ
start_chrome
のコードを見てみる(ならって start_firefox
をハックしようとした)
「 あ、これ実装できるかも 」
https://github.com/mherrmann/selenium-python-helium/pull/22/files
Helium v3.0.3 としてリリースされた
初めてコードでコントリビュートした事例紹介
振り返り:なぜコントリビュートできたか
Issueを見る習慣が付いていた
GitHubでのOSS開発フローに慣れていた
Pythonのテストに慣れていた
ちょうど実装できるIssueが開かれたばかりだった
Issueを見る習慣が付いていた
GitHubでのOSS開発フローに慣れていた
Pythonのテストに慣れていた
ちょうど実装できるIssueが開かれたばかりだった
Pythonを始めた頃に参加した勉強会(2018/03)での学び
ライブラリのドキュメントにないときは、GitHubのIssueを検索する
Issue検索で助けられた経験多数( テクニックとしてオススメしたことも)
スライド:https://www.slideshare.net/laughk/python-webapi-nextsteppythonprograming
私のメモ:https://nikkie-ftnext.hatenablog.com/entry/2018/03/08/002016
注:今回スライドを見返したところ、Issue検索は明記されておらず、どうやら質疑や懇親会で聞いたようです
Issueを見る習慣が付いていた
GitHubでのOSS開発フローに慣れていた
Pythonのテストに慣れていた
ちょうど実装できるIssueが開かれたばかりだった
vol.1でのLT「コードだけじゃない!いろいろなコントリビュート」
翻訳を通して、GitHubのIssueやPull requestに慣れた
コードを書かなかったが、 コードでコントリビュートするための準備 をしていた
Issueを見る習慣が付いていた
GitHubでのOSS開発フローに慣れていた
Pythonのテストに慣れていた
ちょうど実装できるIssueが開かれたばかりだった
Pythonは独学で始め、2019年にデータサイエンティストに転職(ユーザベース)
TDD で開発する環境( ユーザベースの例)
unittest
やモックを 猛練習 の末に、スラスラ書けるように
テストコードのどこを直すか自信を持って判断できた
start_chrome
関数では options
引数のテストがないことにならった
余談:テストが全部通らなくて、別途Issueを開きもした( #23)
Issueを見る習慣が付いていた
GitHubでのOSS開発フローに慣れていた
Pythonのテストに慣れていた
ちょうど実装できるIssueが開かれたばかりだった (運!)
Helium というPython製ライブラリに、初めてコードでコントリビュートした
なぜコントリビュートできたか、 4点 共有
Heliumのように新しめのOSSのコードを読み始めた
「そんな書き方できるのか。かっこいい!!」 もう楽しくてしょうがない
🤫 OSSのコード読んでいるだけで、生活に困らないだけのお金もらえないかな・・
普段から Issueをのぞこう
GitHubのIssueやPull requestを使って OSS開発フロー に慣れよう
テストコード に慣れよう
1〜3ができているなら、タイミングが来たら飛び込むだけ
Next, YOUR turn!
次は皆さんが、初めてコードでコントリビュートする番です!
繰り返すブラウザ操作をPythonにやらせよう (2020/05 LT)
ダウンロード、Chromeはデフォルトでポップアップが出ないので、以下を参考に指定すれば達成できました(最新のHelium v3.0.2でChromeOptionsがサポートされている)https://t.co/IeyINOhYJJ
— nikkie 📣PyCon JP 2021 スタッフ募集中! (@ftnext) May 3, 2020
Firefoxはデフォルトでポップアップが出ますが、以下を参考に抑制できそうhttps://t.co/363vPwQ3nW
本日コードでOSSに貢献という実績を解除しました!やったー
— nikkie 📣PyCon JP 2021 スタッフ募集中! (@ftnext) May 4, 2020
heliumのIssueに出ていたoptions引数をhttps://t.co/Zk8RwW48K3
Chromeの実装例をもとに実装しました(Firefoxでのダウンロードが自分に必要だったので)。
FirefoxOptionsを設定できるようになったhelium v3.0.3が近いうちにリリースです https://t.co/lEIuit5veE