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
自己流OSS活動発展パターン
Search
Hirotaka Tagawa
July 17, 2021
0
1
自己流OSS活動発展パターン
23卒エンジニア志望学生LT会
Hirotaka Tagawa
July 17, 2021
Tweet
Share
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Claude Code のすすめ
schroneko
67
210k
The Invisible Side of Design
smashingmag
302
51k
Building AI with AI
inesmontani
PRO
1
660
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
320
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.5k
Ruling the World: When Life Gets Gamed
codingconduct
0
130
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
310
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
210
The SEO identity crisis: Don't let AI make you average
varn
0
58
WCS-LA-2024
lcolladotor
0
430
Transcript
自己流OSS活動発展パターン 2021年7月17日 23卒エンジニア志望学生LT会
自己紹介 ID, GitHub: wafuwafu13 所属: 同志社大学社会学部社会学科 使用言語: JavaScript/Perl
趣旨 ・断続的にOSS活動をしてるので何ができたかまとめる ・あくまで自己流で、 「発展」の定義は各々に任せます ・関連リンクはここに https://wafuwafu13.hateblo.jp/entry/wafuwafuoss ・なにかを自分で作ったわけではない
OSS活動とは ・無償で公開されているソースコードに対してアプローチをかける ・GitHubのアカウントがあればできる
OSS活動の動機 ・できたら凄そう ・個人開発のアイデアはもう思いつかないが時間はある ・得意と言える言語が欲しい
最初の一歩 ・OSS活動に関する記事を読んだ ・翻訳というよりかはコードを書きたい ・good first issue を検索できるサイトで、できそうなものを探した ・言語は JavaScript/TypeScript で検索
http://github-help-wanted.com/
・他の人がやったissueを真似すれば できそうなissueだった ・他の人がやっていたように、 オーナーにメンションしてアサインし てもらった TroyTae/game-of-life feat: P10 traffic light
hassler
TroyTae/game-of-life ・他の人のを見てPRタイトルやブランチ名を決めた ・他の人がやっていたようにコード(0,1)を書いた ・感謝されて世界と繋がった気がした feat: P10 traffic light hassler ・レポジトリの局所的な理解で十分
ドキュメント整備 ・good first issue なかなか難しい ・開発中に見にくい README.md があった ・PRの投げたことがあるので臆せず投げてみる
mochixuan/react-native-drag-sort Refactor README.md ・リストをテーブルに書き換えた ・シンタックスハイライトを効かせた ・いつも見ている MDN にもPR出せた
・解決できなくてもとりあえずissueを作ってみる ・すでにissueが立ってないか確認してから バグ・エラー報告
MoonHoghway/learning-graphql ・ 『初めてのGraphQL』のサンプルコードが動かなかった ・解決できたのでPRを出した ・マージされなくても後から見た人の参考になる Fix Cannot read property 'me'
of undefined
remotion-dev/remotion npm run build is failed because of error TS2307
・開発環境を構築できなかった ・自分が打ったコマンド/ログ/ 参考にした箇所を明記 ・details タグが便利
・PRに及ばなくても何らかのアウトプットが欲しい ・個人開発してないからブログのネタがなかった 読んでアウトプット ・書いた => Reactのコードを読む/jQueryはいかにしてDOMを取得するか ・PRできる場合もある
axios/axios Updating lib/core/README.md about Dispatching requests ・axios の adapter の仕組みが気になった
・自分の書いたブログの内容が正しいかわからなかったから 開発者向けのドキュメントに補足をしてみた ・マージされたから正しかった
できそうなissueを取る ・内部実装の開発にも踏み込みたくなった ・good first issue を検索できるサイトで探し続けたら見つけた
lirantal/npq perf: replace axios with node-fetch ・テストを書くのも難しかった ・テストのモックの仕方を変えた理由とか、自信のないところを PR上でDeepLを駆使して説明した ・書き換える場所が複数あったので、1箇所書き換えたらDraftで
投げてみた ・依存関係を少なくしたいから axios => node-fetch
テスト追加 ・good first issue 見つけるの効率悪い ・テストが不足しているOSSが結構あるらしい ・GitHubでいい感じに検索をかけてテストを見ていく stars:100..1000000 language:TypeScript
coston/react-super-responsive-table Add unique case test ・// TODO とされているテストがあった ・他のテストに沿う形で追加
zpao/qrcode.react ・テストが全くなかったので足した ・スナップショットテストをいい感じに 使えた ・マージされなくてもブログを書けば 無ではない Add Snapshot Testing
josephburnett/jd Convert array tests to TableDrivenTests ・// TODO で TableDrivenTests
にするという記述があった ・JavaScript/TypeScript だけじゃなく Go デビューした ・新しい言語・概念を習得した際のアウトプット先にもなる
TypeScript の any を潰していく ・テスト追加に飽きてきた ・any は良くないは OSS にも通じるはず ・テスト追加より母数が多そう
ospfranco/link-preview-js Use @types/cheerio ・外部ライブラリの型が any になっていた ・Definitely Typed から型をインストールして適用 ・Twitterで感謝された
DefinitelyTyped/DefinitelyTyped [ace] Improve by referring to ace.d.ts ・DefinitelyTyped の型が壊れているのに気づいた ・ajaxorg/ace
にも型の独自定義があった ・ついでにそれも改良して DefinitelyTyped に取り込んだ ・一応オーナーになった
話題のOSSに反応する ・単純に構成やコード気になるようになった ・技術的な課題も多いはず
blitz-js/blitz Add Cypress for e2e cli testing ・good first issue
があった ・チュートリアルをする動機にもなる ・インストールは good first issue だったがその先が難しい... ・コミュニティに属するのもあり
redwoodjs/redwood Add Cypress Step6 Test ・blitz に Cypress を導入する際の参考として redwood
のテスト が挙げられていた ・Cypress のいい勉強になった
企業のOSSを見にいく ・どんなプロダクトが公開されているのか ・勝手にインターンみたいな感覚?
abema/go-mp4 Improve golint coverage ・MP4ファイルのパーサー ・レビューもらえて Go の書き方の理解深まった
google/model-viewer Change Blob to File in file_modal.ts ・3DモデルをレンダリングするWebコンポーネント ・型を変えた理由を問われたのでコードと スクリーンショットを交え説明
mackereliio/mackerel-agent-plugins [plugin-aws-cloudfront]Replace label name of graph ・はてなが開発した新世代のサーバー管理・監視サービス ・サーバー周りの勉強になる ・社外の人が製品に関わっている例
継続的に関わる(機能開発、バグ解消) ・実務的にやっていきたい ・issueを解決していきたい ・オーナーの1人になれるかもしれない
axios/axios Updating `lib/core/READ.ME.md` about Dispatching requests Adding errorhandling when missing
url ・途中のまま放置されていたPRを方針を変えてテストを足して出した ・放置されている...
sindresorhus/ow Enable ESLint `explicit-function-return-type` Fix `ow.object` to return `ArgumentError` when
null or `undefined` is passed Add `ow.bigint` ・以前にコード全体に型をつけていったので全体像を把握できた ・BigInt型に対応する新機能を作れた(詳しく話します) ・バグの解消ができた
None
None
Predicate StringPredicate NumberPredicate BooleanPredicate ArrayPredicate 型バリデータ 条件バリデータ バリデータ発火
None
型バリデータ 条件バリデータ バリデータ発火
型があっているか 条件にあっているか 型バリデータ 条件バリデータ
Predicate StringPredicate NumberPredicate BooleanPredicate ArrayPredicate BigIntバリデータを 追加したい NumberPredicare クラスに 条件バリデータを追加
条件バリデータ 型バリデータでエラー(BigInt(...)はnumber型ではない) NumberPredicate
Predicate StringPredicate BigintPredicate BigIntバリデータを 追加したい NumberPredicate ArrayPredicate BooleanPredicate BigIntPredicate クラスを追加
Predicate クラスを継承
BigintPredicate
理論的に難しいことをする(したい) ・低レイヤのアウトプット ・やった => 『Go言語で作るインタプリタ』をTypeScriptで実装 ・書いた => graphql-validation-complexityから学ぶGraphQLのAST走査
自己流OSS活動発展パターン ・最初の一歩 ・ドキュメント整備 ・バグ・エラー報告 ・読んでアウトプット ・できそうなissueを取る ・テスト追加 ・TypeScriptのanyを潰していく ・話題のOSSに反応する ・企業のOSSを見にいく
・継続的に関わる(機能開発、バグ解消) ・理論的に難しいことをする(したい)
OSS活動やってみて ・単純に楽しい and 夢がある ・GitHubが豪華になった ・より深い理解ができている気がする