LINEヤフー Tech Blog

LINEヤフー株式会社のサービスを支える、技術・開発文化を発信しています。

try! Swift TokyoでOpen Source Swiftワークショップのインストラクターをしました

慣れない英語で登壇する筆者

こんにちは! モバイルデベロッパーエクスペリエンスチームのgiginetです。普段は主にLINEアプリ向けの開発環境を整えたり、ビルドシステムを構築したりしています。

3月22日〜24日にSwiftの国際カンファレンスである、try! Swift Tokyoが開催されました。

このイベントにおける弊社での取り組みは、こちらの記事をご覧ください。

try! Swift Tokyo 2024 にLINEヤフーのエンジニア3名登壇します(3/22・3/24)

try! Swift Tokyo 参加レポート

その一環として、最終日の24日には「Open Source Swiftワークショップ」を開催しました。

このワークショップは、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と参加者

弊社からは、インストラクターの@giginetのほか、@shiz, @freddiがチューターとして参加しました。

チューターの@shizと参加者

インストラクターの@ikesyo, チューターの@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に起票したり、ドキュメントを直したりするだけでも立派な貢献と言えます。

ワークショップ終了後も何名かの方による貢献やコラボレーションが続いていました。

まとめ

このワークショップは、当初、実際にコードを修正する以前の課題発見を重視していました。作業時間が1時間半程度と短く、実際に課題発見から修正までを終わらせるには、あまりにも時間が短すぎるためです。

しかし、その心配とは裏腹に、非常に多くの方が短時間で素晴らしい成果を出していました。

特に、このワークショップのおかげでオープンソースに興味を持てた方、物足りずに終了後も作業を続けてくれた方もおり、とても嬉しく思いました。

このワークショップが、多くのデベロッパーのコミュニティ貢献のきっかけとなっていればこれ以上になく幸いです!

<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>