Slide 1

Slide 1 text

クラスメソッド x フォージビジョン x Fusic 
 
 
 AWS事業本部 コンサルティング部
 1 AWSに関するOSS活動で得た貢献までの壁を越えるコツ
 2023 5/26
 今泉大樹


Slide 2

Slide 2 text

2 早速ですが今日のメッセージです OSS貢献に壁なんてなかった

Slide 3

Slide 3 text

3 自己紹介 今泉大樹(Taiki Imaizumi) (bun913) • クラスメソッド株式会社 • 2023 Japan AWS Top Engineer (Services) • 2023 Japan AWS All Certifications Engineer • 好きな技術領域 • アプリとインフラの中間あたり • ダイの大冒険ガチ勢 @bun76235104

Slide 4

Slide 4 text

4 タイトルのとおり OSS活動(AWS関連も含む)お話をします

Slide 5

Slide 5 text

5 OSSとは • 詳細な定義には触れません • 今回は以下のように、ふわっとした意味で話させていただきま す • ソースコードが公開されている • (規定されているライセンスに則って)利用、改変、再配布ができる • これらOSSコードやドキュメントに寄与することを「貢献」とか「コ ントリビュート」などと表現します

Slide 6

Slide 6 text

6 そもそも・・・ OSSに貢献すると何が嬉しいのか

Slide 7

Slide 7 text

7 OSS貢献は何が嬉しいのか(後でも紹介します) • GitHubが強く見える • 仕事ほどプレッシャーを感じずに、世界中で使われ得るプロダク トに携われる • 有名なOSSだと特に以下のようなメリットも • 世界中のすごい人からレビューをもらえる・コードを見れる • プロダクト特性に応じたCI/CDの流れなどを学習できる • (おまけ)エンジニアスキル可視化サービスのスコアアップなど

Slide 8

Slide 8 text

8 でも・・・ やり方がよく分からないんです (半年前くらいの私)

Slide 9

Slide 9 text

9 基本的にはこれだけ(ほぼ一般的な開発と同じ)

Slide 10

Slide 10 text

10 でもやっぱり OSSって強い人しかできないんでしょう? ソンナコトナイヨ

Slide 11

Slide 11 text

11 ここからは 実際に私がしていた勘違いを見ていきます

Slide 12

Slide 12 text

12 • よくある(?)勘違い • OSSのコードはツヨツヨエンジニアが作っているので、凡庸なエンジニ アでは理解できないのでは? • クリーンアーキテクチャーが〜 • ドメイン駆動設計が〜 • 片方向の依存性が〜 • 手を加える何てもってのほか • 美しい作品に手を加えられるのか・・・!? 幻想1: OSSのプログラマーはツヨツヨしかいない

Slide 13

Slide 13 text

13 ここでAWS CDKのコードを見てください

Slide 14

Slide 14 text

14 コードが何をしているかは分からないけど • パッと見てわかるイケてなさそうな箇所 • if文のネストが深い • if文にダラダラ複数の条件が書かれている • 本当のことを言っているのか分からないコメント • そもそもコメントでコードを取り繕おうとしている? • etc • リファクタリングしたくてムズムズしませんか?

Slide 15

Slide 15 text

15 リファクタリングするだけでも貢献です!

Slide 16

Slide 16 text

16 幻想2: 深く理解しているサービスじゃないとダメ? 「良く分からんけど貢献したい」 でも大丈夫です!

Slide 17

Slide 17 text

17 貢献するOSSの探し方 • 自分が仕事で関わっている領域で探す • GItHubのOrganizationを眺めてみるだけでも楽しい • 例 「Amazon Web Services GitHub」 「HashiCorp GitHub」 • 自分の好きな言語・初心者向けのIssueを探す • Good First Issueというサービスでも探せます • 自分が好きなツールで探す • 私の場合、Raycastというツールが大好きです • 既存で便利ツールないから作っちゃえパターンも • 新しく作る必要なし。既存のサービスを組み合わせてもOK

Slide 18

Slide 18 text

18 とはいえ・・・ • 「詳しくなくても良い」ので自分の好きなツール・触ったことのあ るツールがおすすめです • 感情面の理由 • 単純にモチベーションが湧く • Pull Requestがマージされた時の充実感がすごい • 技術面の理由 • ディレクトリを眺めてコードの場所にあたりをつけられる • 変数名や関数名にもアイディアが湧く(ドメイン知識がある)

Slide 19

Slide 19 text

19 幻想3: 英語ができないとやり取りも大変 私もできないけど大丈夫です!!(断言)

Slide 20

Slide 20 text

20 今は無料で使える翻訳ツールがすごいですし • Google翻訳のChrome拡張 • DeepLのChrome拡張 • 最近だとAIサービスも非常に良いです! • ChatGPTに英語のお知らせタイトルを書いてもらったら一瞬でネイ ティブっぽいのができた • ChatGPTを使って英語学習をしてみました • 私「”あなたのアイディアは最高です!改善してみます!”という言葉 を英語ネイティブの友達に伝える感じに翻訳して」

Slide 21

Slide 21 text

21 細かいニュアンスが分からなくても大丈夫です • レビュワー「My eyeballs thank you for this refactor.」 • 私「いえーす!!OKぇぇぇ!!」 眼球がありがとうって言うの?

Slide 22

Slide 22 text

22 なんか大丈夫な気がしてきませんか? 実際なんとかなるんですよ

Slide 23

Slide 23 text

23 これらを乗り越えてPull Requestがマージされると

Slide 24

Slide 24 text

24 コントリビュートへのご褒美は知識だけではない

Slide 25

Slide 25 text

25 (おまけ)AWS CDKの場合

Slide 26

Slide 26 text

26 最後に・・・AWS CDKへの貢献のTIPS 1/2 • AWS CDKとは • よく知ったプログラミング言語で書けるIaCツール • TypeScript / Python / Go / Java / C# • 型がある言語であれば当然型の補完も有効 • 短い記述でAWSのベストプラクティスを意識した構築ができる

Slide 27

Slide 27 text

27 AWS CDKへの貢献のTIPS 2/2 • コントリビュートへの流れ • CONTRIBUTING.mdに流れがよくまとまっています • 重要な点を抜粋 • jsiiという仕組みでTypeScriptから他の言語へと変換 • コントリビュートする際はTypeScriptのリポジトリだけでOK • ※ 生成された各言語のコードは「らしくない」コードになっているかも しれませんが、怒らない • リファクタリングも結構歓迎されます • Issue立ててさっさとPull Requestを作ってしまえば案外

Slide 28

Slide 28 text

28 ということで(再掲) OSS貢献に壁なんてなかった

Slide 29

Slide 29 text

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