Jesse Squires
InstagramでiOSアプリを開発しているソフトウェアエンジニアです。jessesquires.comにてSwiftやObjective-Cに関するブログを書いています。Github上で多くのオープンソースプロジェクトにコントリビュートしています。走ることと新しいことを学ぶのが好きで、主にブラックコーヒーとブラックメタルによって元気になります。
Swiftに貢献したいですか?どのように、また、どこから取り掛かればいいか分かりませんか?パッと見て圧倒されるかもしれません。この講演では、さまざまなSwiftのプロジェクトがどのように関係しているかを見て、貢献し始めるために必要なスキルを議論し、あなたが行うであろう最初の変更が承認されるためのベストな方法を学びます。
セッションビデオ公開済み
DIAMONDスポンサーのRealm様より、セッションを録画したビデオが公開されています。
LLVMについて。どんなスキルが必要か。Swiftがこの話しのあとはとっつきやすくなると嬉しい
Appleにはおどろかされましたね、沢山あります。
誰でも参加できそうなものがある、コンパイラエキスパートである必要はありません。
どれがいいか分からない?
概観すればどこにコントリビュート出来るかわかってくると思います。
コンパイルすると何が起きるのか
SwfitはLLVM上で構築されています。クリスラトナーという人が作りましたね
コンパイラが実行可能バイナリにするわけです。
フロントから見ましょう、フロントでパースして、中間表現IR(アーキテクチャ非依存のアセンブリのようなもの)になって、Optimizerに渡されてコードを改善し、バックエンドに送られ、マシンコードが作られます
LLVMはモジュラー化されています。言語、パースを切り離している。実際にバイナリを作るところと切り離しています。LLVM IRの真ん中の部分ですね。
CやObcはClangがあります。
CあるいはObjective-Cから初めて、パーシして、ASTに変える、抽象文法木ですね。ASTは意味解析され最適化され、修正されたASTがコード生成のステージに入り、IRが作られます。そしてLVMに渡され先ほどのパイプラインに入ります。
そしてその他にブランチが作られて、追加解析機能が使われます
Clangアーキテクチャはパースと意味解析が組み合わさっていて重複が起きる。
SwiftPipelineはClangからの学びを取り入れました。
パース、意味解析でASTに、パースされたASTを型チェクした完全なASTに、意味上の問題があればこの段階でWarningが出ることになる、そしてLLVM IRに似たSILが出来る、raw SILを作ります、これが解析と最適化の段階にまた入ります、沢山の最適化をここで行います、ARC、Swift固有の最適化を行います。それからカノニカルSILが生成され、IR生成フェーズに渡されます。そして先程のように完了します。
ここにはどのようにCやObjCと互換性を保つかという問題が有り、ASTの段階でClangImporterにモジュールマップを渡します。
これらは専門的な領域ですね?エキスパートにとってもそう。パイプライン毎に専門領域が有ります。
もっと具体的なレベルに落とし込みましょうシンプルなHello worldです。
ネームマンドリング?
LLVMIR
Assembly
あまりこれで圧倒されないで下さい
ハイレベルで理解しておくことは有益だと思います。
ではパイプラインはそれぞれどのプロジェクトに該当するでしょうか? そして難しい点は?参入障壁は?
パイプラインの各フェーズで個々の分野があります。何処を見たらいいかのマッピングになっていると思って下さい。
Swiftコアについて、こちらに関してまずはコンパイラだが、難易度で言うとハードです。C++が入るしコンパイラはC++です。Githubでもアクティイティが多いです。
C++経験はよく見るものではないと思います。使ったことのない人には難しいと思います。Swiftの方がよりニュアンスっぽいです。また非定義の振る舞いを扱おうとしています。
スタンダードライブラリは普通のSwiftとは少し違います、ビルドライブラリへのアクセスが有ります。
SourceKitはXcodeシンタックスハイライトニングに使われていたりします、クラッシュなんてしません(笑い)
Swiftのインフラ
Swift特有の変更が入っています。コントリビューションが難しいところになります。非常に深い知識が必要で、リポジトリはほとんど活動がありませんん。Swift3までは安定していると思います。
またライセンスルールやコーディング規約などによって統治されており、Swiftプロジェクトてきな統治ではないです。
パッケージマネージャ
SPM:Swiftで参入しやすいです、しかしCライブラリのラップが沢山あり、馴染みがない人もいるかもしれません
Core Libs
Objective-Cから馴染んでいる人も多いでしょう
時々Cなどで書かれていることも有ります。Objective-CかコアファンデーションをラップするということがSwiftでも行われます。
Evolution
基本的Swiftの変化が行われていきます。誰でもプロポーサルは書けます。リリーススケジュールで予定がわかったり何をするつもりがないのか分かる。プロポーサルは考えぬいて、メーリングリストで議論したりしてください。
機能がほしい理由をコミュニティに提示するように議論してください。
貢献の仕方
議論はメーリングリストで。事象はJIRAで、Github上ではない。 ガイドラインにそってやりましょう。
ドキュメントの翻訳、メーリングリストに名を連ね、どのレベルでも意見をいうこと(それは20年の経験も20日も関係ない)が大事です。
クリスラトナーはこう言っています。「ビギナーにとっても使いやすい言語にしたい」
TypoFixもよく言われますが、Typoなのか分からなければ読みにくくなる。Typoだと分かったらすぐPullRequestを出してください。
メーリングリストですが、反対の意見もあるかもしれません。テキストなので誤解を招かないように優しく接してください。
困ったら助けを求めることが出来ます。
PRを出すときはベストプラクティスであることを確認してください。そのほうがレビューもしやすくなります。
ベストプラクティスで規約にそって。それがやりやすくするやり方です。
リジェクトされてもがっかりしないでください。タイミングが悪かったとかもあり得ます。
みなさんの人格を否定しているわけではないのです、今じゃない、あるいはSwiftに取って層ではなかったというだけです。コミュニティのトップのコントリビューターでもリジェクトはありうることです。
CODE_OWNERファイルでどのチームの範囲なのかが分かります。PullRequestをレビューすべき人が分かる。
すべての面におけるエキスパートは居ない、つまり質問してもいいんです。Coreチーム、あるいはコントリビュータは皆さんに参加して欲しいと願っています。PullRequestもAcceptedしやすいように前向きに考えます。
この人達はAppleの人ではないが素晴らしい活躍をしている。自分の専門分野を見つけている。
どの分野で情熱を注げるか、見つけてください。この人達は、必ずしも初日から素晴らしいコントリビュータだったわけではありません。
全ては小さな改善から始まります。
これはコアチームにとって重要な事です。コミュニティの参加にSwiftの成功がかかっています。
じゃあ何故コントリビュートするべきなのでしょうか。
Appleは膨大な投資をSwiftにしました。直ぐになくなることはありません。Swiftは私たちの望む方向に進むと思います。我々がほしい言語にSwiftを向かわせるということです。ディスカッションに参加するだけで影響力を行使することが出来ます。
より多くのプラットフォームをSwiftがサポートできるようにすること、我々のスキルを活用できるようにすることが、皆にとっての成功となるわけです。
きのうダニエルがCoreDataの話をしました。長い間バグフィックスを経て安定してきました。Swiftは誕生したばかりです。今後10年何処を目指すべきか自問自答していくべきだと思います。Swiftについて我々は方向性を決めるということが出来ます。どうやってSwiftを描くのか、ベストプラクティスを考えるだけでも暗黙的に貢献に繋がります。
単なる言語ではありません、コミュニティです
素晴らしいことをしようとする人たちの集まりです。
ベストを尽くしましょう、ありがとうございます!
My slides from #tryswiftconf 🤓🇯🇵 Thanks to everyone for listening! https://t.co/QuSiKNzJ83
— Jesse Squires (@jesse_squires) March 4, 2016
いい話だった〜 #tryswiftconf
— Motohiro Takayama (@mootoh) March 4, 2016
最後めっちゃいい話だった。 #tryswiftconf
— iida (@iida_0213) March 4, 2016
#tryswiftconf すごいエネルギーもらう
— ヒラノ風ドリア(Get back ~) (@hiraraanon) March 4, 2016
このカンファレンスによってSwiftに対するcontributorが増えてそう #tryswiftconf
— もりし (@m_orishi) March 4, 2016
Swiftのメーリングリスト購読してメールボックスが埋まるの気になる人は、専用クライアントのHirundoってやつが良いかも https://t.co/T6NUhdaxSb #tryswiftconf
— すらいむ (@horimislime) March 4, 2016
「全ては小さな改善から オープンソースSwift貢献への道 #tryswiftconf」をトゥギャりました。 https://t.co/tPUNHsRnCQ
— トゥギャッター開発まとめ (@tg__dev) March 4, 2016
気に入った記事は はてなブックマーク
はてなブックマークアプリiOS開発チームから来ました! はてなブックマークにはSwift特集があります! 良い記事を見逃さないように、ご利用ください! http://b.hatena.ne.jp/hotentry/it/Swift
そして良いまとめ記事があったらはてなブックマークでブックマークしましょう! try! Swift の記事で盛り上がると嬉しいです!