Swiftの動向とアツさを追う try! Swift参加レポート

try! Swift 3日目 参加レポート

この記事を読むのに必要な時間:およそ 5 分

Jesse Squires氏 - Contributing to Open Source Swift(オープンソースSwiftへの貢献)

JSQMessagesViewControllerの作者としても知られる,Instagram社のiOSエンジニアであるJesse Squire氏@jesse_squiresの発表を紹介します。

Squires氏はまず以下を順に解説しました。

  • LLVMのコンパイラアーキテクチャ
  • Clangのパイプライン
  • Swiftのコンパイル時のパイプライン

例えばSwiftのコンパイル時のパイプラインは以下のようになることを述べました。

  1. Swiftで書かれたコードをパースしAST(Abstract Syntax Tree)を生成
  2. 意味解析によってAST*を生成
  3. SILGenでraw SIL(Swift Intermediate Language)を生成
  4. 最適化によりcanonical なSIL*を生成
  5. IRGenによってLLVM IR(Intermediate Representation)を生成
  6. LLVMによって最終的なバイナリを生成

実際にシンプルなコードに対し,swiftcコマンドを利用してAST, SILなどの各ステップの生成物を出力する例を紹介した上で,このパイプラインの各ステップがSwiftのレポジトリのどの部分に該当するのか,ということを紹介しました。例として,上記のステップ1, 2については以下のような対応関係があります。

画像

こういったことを説明した上で,Swiftを取り巻くコンポーネント毎のContributeのしやすさを紹介しました。

Swift core
  • コアの部分。コンパイラなどはC++の知識が必要で,難易度が高い
    • Compiler
    • stdlib
    • SourceKit
INFRA
  • 深い知識が必要で,Contributeするのが難しい部分
  • もうある程度固まったもので,開発が活発でない
Parckage Manager
Core libs
Evolution

try! contribute()

我々は具体的にどのようにContributeしたら良いのでしょうか。氏は次のように説明しました。

  • ディスカッションはメーリングリストでスタート
  • レベルに関係なく意見を言う
  • 困ったら助けを求める
  • Pull RequestについてはCONTRIBUTING.mdを守り,ベストプラクティスに従う
  • たとえPull RequestがRejectされてもそこで落ち込まず,Contributeをそこでやめるべきではない
  • コアチームはすべての人に参加してほしいと思っている

Pull Requestに関しては,英語話者ではない場合にはTypoがあるだけで理解が大変になることもあるため,Typo fixも大事であると述べました。Chris Lattnerの次の言葉を引用していたのも特徴的でした。

Making small improvements is the way everyone starts getting involved!

最後に以下のような熱いメッセージを残し,このセッションを閉じました。

  • Swiftの成功が我々開発者にとっての成功であるのだから,Contributeすべき
  • コードだけではなくアイデアもContribute
  • Swiftは単なる言語ではなくコミュニティ

著者プロフィール

後藤慎一(ごとうしんいち)

Wantedly, Inc.のソフトウェアエンジニア。

インフラエンジニアとしてサービスを支える仕事をしていたが、プログラマとしての能力を高めたくなり転職。現在はObjective-CでのiOSアプリ開発やRailsでのサーバサイド開発に従事。ヒマがあればSwiftと戯れて生きている。

Twitter:@_shingt