2023/05/26(金) クラスメソッド x フォージビジョン x Fusic【AWS勉強会】 でお話しした資料となります。
クラスメソッド x フォージビジョン x Fusic AWS事業本部 コンサルティング部 1AWSに関するOSS活動で得た貢献までの壁を越えるコツ 2023 5/26 今泉大樹
View Slide
2早速ですが今日のメッセージですOSS貢献に壁なんてなかった
3自己紹介今泉大樹(Taiki Imaizumi) (bun913)• クラスメソッド株式会社• 2023 Japan AWS Top Engineer (Services)• 2023 Japan AWS All Certifications Engineer• 好きな技術領域• アプリとインフラの中間あたり• ダイの大冒険ガチ勢@bun76235104
4タイトルのとおりOSS活動(AWS関連も含む)お話をします
5OSSとは• 詳細な定義には触れません• 今回は以下のように、ふわっとした意味で話させていただきます• ソースコードが公開されている• (規定されているライセンスに則って)利用、改変、再配布ができる• これらOSSコードやドキュメントに寄与することを「貢献」とか「コントリビュート」などと表現します
6そもそも・・・OSSに貢献すると何が嬉しいのか
7OSS貢献は何が嬉しいのか(後でも紹介します)• GitHubが強く見える• 仕事ほどプレッシャーを感じずに、世界中で使われ得るプロダクトに携われる• 有名なOSSだと特に以下のようなメリットも• 世界中のすごい人からレビューをもらえる・コードを見れる• プロダクト特性に応じたCI/CDの流れなどを学習できる• (おまけ)エンジニアスキル可視化サービスのスコアアップなど
8でも・・・やり方がよく分からないんです(半年前くらいの私)
9基本的にはこれだけ(ほぼ一般的な開発と同じ)
10でもやっぱりOSSって強い人しかできないんでしょう?ソンナコトナイヨ
11ここからは実際に私がしていた勘違いを見ていきます
12• よくある(?)勘違い• OSSのコードはツヨツヨエンジニアが作っているので、凡庸なエンジニアでは理解できないのでは?• クリーンアーキテクチャーが〜• ドメイン駆動設計が〜• 片方向の依存性が〜• 手を加える何てもってのほか• 美しい作品に手を加えられるのか・・・!?幻想1: OSSのプログラマーはツヨツヨしかいない
13ここでAWS CDKのコードを見てください
14コードが何をしているかは分からないけど• パッと見てわかるイケてなさそうな箇所• if文のネストが深い• if文にダラダラ複数の条件が書かれている• 本当のことを言っているのか分からないコメント• そもそもコメントでコードを取り繕おうとしている?• etc• リファクタリングしたくてムズムズしませんか?
15リファクタリングするだけでも貢献です!
16幻想2: 深く理解しているサービスじゃないとダメ?「良く分からんけど貢献したい」でも大丈夫です!
17貢献するOSSの探し方• 自分が仕事で関わっている領域で探す• GItHubのOrganizationを眺めてみるだけでも楽しい• 例 「Amazon Web Services GitHub」 「HashiCorp GitHub」• 自分の好きな言語・初心者向けのIssueを探す• Good First Issueというサービスでも探せます• 自分が好きなツールで探す• 私の場合、Raycastというツールが大好きです• 既存で便利ツールないから作っちゃえパターンも• 新しく作る必要なし。既存のサービスを組み合わせてもOK
18とはいえ・・・• 「詳しくなくても良い」ので自分の好きなツール・触ったことのあるツールがおすすめです• 感情面の理由• 単純にモチベーションが湧く• Pull Requestがマージされた時の充実感がすごい• 技術面の理由• ディレクトリを眺めてコードの場所にあたりをつけられる• 変数名や関数名にもアイディアが湧く(ドメイン知識がある)
19幻想3: 英語ができないとやり取りも大変私もできないけど大丈夫です!!(断言)
20今は無料で使える翻訳ツールがすごいですし• Google翻訳のChrome拡張• DeepLのChrome拡張• 最近だとAIサービスも非常に良いです!• ChatGPTに英語のお知らせタイトルを書いてもらったら一瞬でネイティブっぽいのができた• ChatGPTを使って英語学習をしてみました• 私「”あなたのアイディアは最高です!改善してみます!”という言葉を英語ネイティブの友達に伝える感じに翻訳して」
21細かいニュアンスが分からなくても大丈夫です• レビュワー「My eyeballs thank you for this refactor.」• 私「いえーす!!OKぇぇぇ!!」眼球がありがとうって言うの?
22なんか大丈夫な気がしてきませんか?実際なんとかなるんですよ
23これらを乗り越えてPull Requestがマージされると
24コントリビュートへのご褒美は知識だけではない
25(おまけ)AWS CDKの場合
26最後に・・・AWS CDKへの貢献のTIPS 1/2• AWS CDKとは• よく知ったプログラミング言語で書けるIaCツール• TypeScript / Python / Go / Java / C#• 型がある言語であれば当然型の補完も有効• 短い記述でAWSのベストプラクティスを意識した構築ができる
27AWS CDKへの貢献のTIPS 2/2• コントリビュートへの流れ• CONTRIBUTING.mdに流れがよくまとまっています• 重要な点を抜粋• jsiiという仕組みでTypeScriptから他の言語へと変換• コントリビュートする際はTypeScriptのリポジトリだけでOK• ※ 生成された各言語のコードは「らしくない」コードになっているかもしれませんが、怒らない• リファクタリングも結構歓迎されます• Issue立ててさっさとPull Requestを作ってしまえば案外
28ということで(再掲)OSS貢献に壁なんてなかった
29ご清聴ありがとうございました!!