こんにちは! モバイルデベロッパーエクスペリエンスチームのgiginetです。普段は主にLINEアプリ向けの開発環境を整えたり、ビルドシステムを構築したりしています。
3月22日〜24日にSwiftの国際カンファレンスである、try! Swift Tokyoが開催されました。
このイベントにおける弊社での取り組みは、こちらの記事をご覧ください。
try! Swift Tokyo 2024 にLINEヤフーのエンジニア3名登壇します(3/22・3/24)
その一環として、最終日の24日には「Open Source Swiftワークショップ」を開催しました。
try! Swift Tokyo 2024 Wrokshop📣Open Source Swift Workshop@giginet と @kitasuke と @ikesyoと一緒にSwiftのコンパイル過程とその部分を学びました。LLVMの基礎知識や、https://t.co/h6BzUtJqqTを使って修正すべきバグを見つけ変更を加えたビルドを作ってテストを行う方法も扱いました。#tryswift pic.twitter.com/6WTMcDXXwv
— try! Swift Tokyo (@tryswiftconf) March 24, 2024
このワークショップは、Appleが主として開発するSwiftコンパイラおよび、標準ライブラリ、その周辺ツールに貢献するための方法を学び、実践することを目的としています。
今回は、当ワークショップでインストラクターを務めた筆者から、当日の様子と参加者のコミュニティ貢献の一部をお伝えします。
※この記事は、筆者の所属会社であるLINEヤフーの技術ブログに掲載しておりますが、記事中に引用されている方の所属はさまざまであることに留意してください。
講義パート - Swift Projectと貢献方 法を学ぶ
まず、筆者から、このワークショップの概要と、Swiftプロジェクトの全体像、Appleが提唱する貢献の方法を説明しました。
この発表では、Appleが公開するコントリビューションガイドラインに触れ、当ワークショップの目的である、コントリビューションを達成するためのissueを効果的に見つける方法を紹介しました。
次に、Swiftコンパイラ(swiftc)開発の勉強会である「わいわいswiftc」のコアメンバーである@kitasukeさんから、Swiftコンパイラの構造や、ビルドパイプラインについて説明しました。
その後、Foundationのコミッターでもある@ikesyoさんからは、FoundationやApple公式のライブラリ群について紹介しました。
C++で書かれたSwiftコンパイラとは異なり、標準ライブラリや周辺ツールはSwiftで書かれています。また、多くの方にとって身近なプロダクトも多いため、コンパイラ自体への貢献に比べて親しみやすい部分も多かったと思います。
Contribution Challenge!
20分ほどで講義を終え、ここからは参加者それぞれが、実際にコントリビューションできる課題を見つけて取り組みました。
前述の3人のインストラクターのほか、Swiftコンパイラや公式のプロジェクトへの造詣が深い8名のチューターも加わり、自由に質問してもらいながら各々が作業を進めました。
弊社からは、インストラクターの@giginetのほか、@shiz, @freddiがチューターとして参加しました。
90分ほどの作業時間で、100人を超える参加者が、それぞれが自分の興味を持った領域の改善に取り組んでいました。
成果報告会
その後は成果報告会です。課題を発見した方から、この短い時間で無事にPull Requestを出した方まで、10人以上が成果報告をしてくれました。
参加者の士気は高く、会場の時間いっぱいまで発表希望の方が列を成していたのが印象的でした。
いくつかの成果をピックアップしてご紹介します。
Add missing test cases for plainText by ShotaKashihara · Pull Request #171 · apple/swift-markdown
このPRは、swift-markdownの一部のsyntaxに対してテストケースが不足していた問題を修正しています。
このようなテストケースの追加は取り組みやすく、マージもされやすいため、最初に取り組むには最適な課題と言えます。
Add an accessor macro example by rockname · Pull Request #2565 · apple/swift-syntax
このPRは、swift-syntax に新しいマクロの利用例を追加したものです。これは、ドキュメンテーションの充実の一種とも言えますが、サンプル実装やテストも含まれており、利用者に有用なものとなっています。
Fix a doc anchor is not encoded correctly by hironytic · Pull Request #867 · apple/swift-docc
このPRは、swift-doccにおいて、日本語など 非ASCII文字を含むアンカーにリンクを貼ったときの挙動を修正するものです。日本語など、マルチバイト文字における問題は、多くのプロダクトで気付かれていないケースも多く、日本で開催したワークショップならではの課題発見と言えます。
withUnsafeContinuation doesn’t inherit Actor executor during single await call · Issue #69659 · apple/swift
このissueは、Actor isolatedなメソッドに対して、特定の状況のみコンパイル時チェックが失敗してしまう問題です。
ある参加者はこの問題について調査していましたが、ちょうどこの領域のメンテナが会場にいたため、早急な修正のきっかけとなりました。このような展開も本ワークショップならではのコラボレーションで、とても興味深かったです。
総評 - はじめてコントリビューションするには
このように、時間が限られていた中、非常に多くの方がアウトプットを出していたことに驚かされました。
特にドキュメントやtypoの修正、warningの抑制、ユニットテストの追加といった課題は、取り組みやすくマージもされやすいため、貢献のとっかかりを作るのに非常にオススメです。
また、PRまで辿り着かなかった方も、issueの起票や既存の議論に対してコメントを書くなど、さまざまな貢献をしていました。
Appleのコントリビューションガイドによると、PRによるコードの変更だけがSwiftコミュニティへの貢献ではありません。自分がハマった問題をissueに起票したり、ドキュメントを直したりするだけでも立派な貢献と言えます。
ワークショッ プ終了後も何名かの方による貢献やコラボレーションが続いていました。
#tryswift open source swift workshopで、typed throwsまわりを調べてたら周辺でみつけたテストのディレクティブのところ直してみた。当日は初期ビルドが終わらなくて動作確認できないままタイムアップだったので、さっき動作確認した。https://t.co/9USYnyRwdd
— ばんじゅん🍓 (@banjun) March 26, 2024
チューターによるナイスコメント👍https://t.co/AAHlQL5JVh#tryswift
— ウホーイ (@the_uhooi) March 24, 2024
Open Source Swift ワークショップで PR 作る勇気もらって初 contribute した!https://t.co/Strf3fNGaw
— おずみん (@ozum1n) March 27, 2024
まとめ
このワークショップは、当初、実際にコードを修正する以前の課題発見を重視していました。作業時間が1時間半程度と短く、実際に課題発見から修正までを終わらせるには、あまりにも時間が短すぎるためです。
しかし、その心配とは裏腹に、非常に多くの方が短時間で素晴らしい成果を出していました。
特に、このワークショップのおかげでオープンソースに興味を持てた方、物足りずに終了後も作業を続けてくれた方もおり、とても嬉しく思いました。
おそらく参加者の中で唯一、ワークショップの2次会をしている #tryswift pic.twitter.com/FHdeREKRKN
— Sugiy(Yugo Sugiyama) (@u5_03) March 24, 2024
このワークショップが、多くのデベロッパーのコミュニティ貢献のきっかけとなっていればこれ以上になく幸いです!
2024年4月の技術系イベント予定をまとめました。
— LINEヤフー Tech (@lycorptech_jp) March 29, 2024
皆様の参加をお待ちしています。https://t.co/6D9LAwGVWO