try! Swift Tokyo 2020の開催中止について
新型コロナウィルス感染症(COVID-19)の感染拡大を主な理由として、try! Swift Tokyo 2020の開催はキャンセルする運びとなりました。また次回の開催でまたお会いしましょう。
try! SwiftはSwift開発者のための国際コミュニティです。世界中から参加者が集まり、最先端のSwiftの情報や、高度な知識・テクニックを共有し、協力しあうことを目的としています。
Twitter @tryswiftconf から、最新情報をお届けします!
私たちは、参加者、スピーカー、ボランティア全員に安全な空間を提供することを約束しています。行動規範は、ここで全文を読むことができます
スピーカー
Yonas Kolb
iOS Developer
Yonas Kolb
YonasはSwiftやアーキテクチャ、UX、そして開発者ツールに情熱をもったiOS開発者で、XcodeGenやMintといった有名なオープンソースのSwift製ツールの作者です。趣味はアウトドアです。
Olivier Halligon
Mobile Tooling Engineer at Babylon Health
Olivier Halligon
OlivierはSwiftやツール、自動化、教育や知識の共有に情熱を持ったiOSエンジニアです。OSSコミュニティに貢献するのも好きで、SwiftGenやOHHTTPStubs、Reusableの作者であり、SourceryのContributorです。以前はCocoaPodsやFastlaneのCore Contributorをしていました。今はフランス西部に住んでおり、イギリスのロンドンにあるBabylon Healthでリモートワークをしながら、プラットフォームやCI、ツールの仕事をしています。Doctor WhoやSherlock, ジブリそして食べ物が大好きで、特にたこ焼きが大好きです。
Manabu Ueno
Design Consultant at Sociomedia
Manabu Ueno
大規模エンタープライズシステム、基幹系業務アプリケーション、産業用アプリケーション、専門職種向けアプリケーション、各種ウェブアプリケーション、モバイルアプリケーション、デスクトップアプリケーション、その他の様々なインタラクティブメディアのヒューマンインターフェース設計およびユーザビリティコンサルティングを数多く経験。デザインコンサルタント/インタラクションデザイナー/インターフェースデザイナー/グラフィックデザイナー/ユーザビリティエンジニア/プログラマー。 ソシオメディア株式会社においてデザインコンサルティングメソッド開発を担う。執筆、講演など多数。HCD-Net 人間中心設計認定専門家。
omochimetaru
Swift lover
omochimetaru
株式会社コンセプトの業務でiOS, macOS, サーバサイド向けにSwiftを書いています。Swiftの型の喜びを知ってからSwiftガチ恋勢になりました。コンパイラ内部についてやSwift時代のデザインパターンについて、多くのトークや記事を発表しています。
Janina Kutyn
Lead iOS Developer at adidas
Janina Kutyn
国際的なバックグラウンドを持つアムステルダムに拠点を置くiOSエンジニアです。彼女はブリティッシュコロンビア大学でコンピューターエンジニアリングを学び、アムステルダムに来る前にバンクーバー、ロンドン、シリコンバレーで働いていました。 Appleにいたころは、Apple Musicを立ち上げたチームの一員でした。
Vincent Pradeilles
iOS @ Worldline
Vincent Pradeilles
Vincentは2011年にiOSアプリの開発に着手しました。ここ数年、彼はWorldlineで働いており、フランスの主要銀行向けの優れたアプリの開発に貢献しています。彼はSwiftが大好きで、インターネットでの知識の共有を楽しんでいます。最も注目すべきは、データ操作用のSQLのような構文を実装するフレームワークKeyPathKitを構築したことです。@ios_memesの中の人でもあります。
Josh Garnham
Senior iOS Engineer at Monzo Bank
Josh Garnham
iCloudチームで働いていた元AppleエンジニアのJosh Garnhamは、現在Monzoに銀行を設立しています。彼は技術に情熱を傾けており、リバースエンジニアリングや手を動かすことで物事の仕組みを理解し、テクノロジーを限界まで押し上げます。それは彼の一種の楽しみです。
Frank Courville
Swift and iOS trainer at iOSCoachFrank
Frank Courville
フランクは、背景がフェルトだった時代からiOSアプリを構築してきました。現在、フルタイムのSwiftとiOSの教育者として働いており、チームがiOS開発の最先端を走り続けることを支援しています。彼は自分のウェブサイトでiOSについて書いたり、ポッドキャストで生産性について話したり、誰にでもとりあえずトランスフォーマーの話しをするのが好きです。
Ellie Shin
Sr. iOS Engineer @Uber
Ellie Shin
Ellieは、UberのモバイルプラットフォームチームのシニアiOSエンジニアです。彼女はUberのライダーアプリやコードジェネレーター、重複コード検出器などのツールの構築に取り組んできました。iOSアプリとフレームワークを大規模に最適化することに深く関心を持っています。以前はSpotifyとMicrosoftで主にiOSのチームで働いていました。UIKonf、NSSpain、およびその他のカンファレンスでは、iOSアプリのバイナリサイズの最適化、効率的なコード生成、Swift Stringのパフォーマンスについて講演しました。
Soroush Khanlou
iOS Developer
Soroush Khanlou
Soroush Khanlouは、ニューヨークに拠点を置くiOSコンサルタントです。彼は、Betterment、New Yorker、Rap Genius、およびUrban Archiveなどの非営利団体向けのアプリに取り組んでいます。プログラミングについてkhanlou.comでブログを書いています。暇な時は、走ったり、パンとペストリーを焼いたり、スーツケースを集めたりしています。
Carola Nitz
Senior Software Developer at Netflix
Carola Nitz
CarolaはNetflixのシニアソフトウェアエンジニアであり、長年さまざまなiOSアプリを作ってきました。彼女は、Apple MapsやVLC for iOSなどの大きな複雑なプロジェクトに時間を費やし、成熟したプロジェクトをレガシーコードでナビゲートすることを学びました。彼女はデバッグに関するトークやツイートで知られるようになりましたが、彼女の情熱はオープンソースに注がれており、多様なチームで働き、知識を共有することを楽しんでいます。
Abizer Nasir
iOS / macOS Contract Developer
Abizer Nasir
Abizerはロンドンに住んでおり、様々な契約形態でmacOSの仕事をしたり、iOSのプロジェクトに関わってきました。過去5年間、Swiftに専念し、最近はSwiftUIを使っています。関数型プログラミングを優先して、最新で保守可能なコードを書くことに重点を置いています。彼はGo(いご)でSDKに到達することを目指しています。
Fabio Milano
Software Engineer
Fabio Milano
ネイティブUIフレームワークチームのソフトウェアエンジニアであるFabioは、ほとんどの時間をツリーの走査、ノードの比較、メインスレッドからのレイアウトの計算に費やしています。複雑なユーザーインターフェイスを構築するAPIを記述し、プロダクトチームが最優先 (in `.userInteractive` QoS) でUIパフォーマンスの目標を達成できるようサポートします。
Alaina Kafkes
iOS Engineer at Medium
Alaina Kafkes
Alaina KafkesはMediumのソフトウェアエンジニアで、主にiOSの開発と他人の犬とのふれあいに取り組んでいます。技術と人文科学の共通部分について広く話し、記事を書いています。今の趣味は、水泳や書店巡りです。
Khanh LeViet
AI Advocate @ Google
Khanh LeViet
Khanh LeVietはGoogleのTensorFlowのDeveloper Advocateであり、APACの開発者がAIでよりスマートな製品を構築するのを支援しています。彼は技術カンファレンスで講演し、GitHubでサンプルコードを書いて公開しています。 AIを担当する前は、KhanhはAndroidとiOSの両方に取り組んでいるモバイル開発者でした。
Curtis Colly
Indie Web and iOS Developer
Curtis Colly
Curtis Collyは、フルスタックのWebアプリ開発と。無数のWeb言語でさまざまなコンシューマ向けWebアプリを構築した彼は、静的型付け言語であるSwiftが提供する安全性と効率性を高く評価しています。コードを関数型で、耐久性があり、スケーラブルにするよう努めています。また、隠された真実を探し求めています。その結果、彼は良い会話、異なる文化を体験し、現実世界で革新的なアイデアをテストすることを高く評価しています。現在、人々がさまざまなトピックについて有意義な考えを共有するためのビデオアプリの開発に取り組んでいます。
Roxana Jula
Mobile Developer at Nodes
Roxana Jula
Roxanaは、ドバイに拠点を置くルーマニアのモバイル開発者であり、ARへの情熱を持っています。彼女は13歳のときにコーディングを始め、これまでスカンジナビア最大のデジタル公共サービスアプリの1つを含む20以上のアプリの開発チームの一員でした。彼女はオンライン(instagram.com/coderox/)とオフラインの両方で地元のイベントで技術コミュニティに参加しています。Women in techのAdvocateとして、女性がテクノロジーの世界に参加することを奨励しています。
Anat Gilboa
Product Engineer
Anat Gilboa
Anatは、ソフトウェアエンジニアあがりのプロダクトマネージャーです。Blue ApronのiOSチームで2年半働いており、主にここ数ヶ月のプロダクトマネジメントに集中しています。 Blue Apronに入社する前は、American Expressでモバイルバンキングアプリを開発していました。 コードを書いていないときは、言語の学習と旅行が好きです。
Shai Mishali
iOS Tech Lead @ Gett
Shai Mishali
Shaiは、オンデマンドモビリティ企業であるGettのiOS Tech Leadであり、空き時間にいくつかのオープンソースプロジェクト(主にRxSwiftCommunityおよびRxSwiftプロジェクト、および国際スピーカー)に関与しています。 raywenderlich.comからこれから出版されるCombine本の著者であり、ハッカソン中毒者であり、BattleHack World Finals 2014で1位の受賞者です。GitHubとTwitterで@freak4pcとして活動しています。
Suyeol Jeon
Lead iOS engineer at StyleShare
Suyeol Jeon
Suyeolは、より少ないコードを書くために多くのコードを書く怠惰な開発者を自称しています。彼はオープンソースコミュニティへの貢献を楽しんでいます。また、ReactorKit、Then、URLNavigatorなどの有名なオープンソースライブラリの著者でもあります。
Katsumi Kishikawa
Software engineer
Katsumi Kishikawa
Software engineer. Creator of KeychainAccess, IBPCollectionViewCompositionalLayout, SpreadsheetView, etc. Love to build tools for developers.
Yuki Aki
Engineer at LINE Fukuoka
Yuki Aki
YukiはLINE Fukuokaのエンジニアであり、福岡のCommunityであるHAKATA.swiftの主催でもあります。Swiftコンパイラのような不思議なことを学ぶのが大好きで、学んだことを共有することも大好きです。趣味はオリジナルの猫の絵を描くことで、SNSには彼の今の気持ちを表現した猫の絵をよく上げたりしています。
Alex Karp
Senior App Engineering Manager at Wayfair
Alex Karp
Alex KarpはWayfairのシニアアプリエンジニアリングマネージャーであり、彼のチームはiOSおよびAndroidアプリのコンバージョンファンネルの一番下の部分、つまり精算プロセス、出荷情報、ロイヤルティプログラムおよびファイナンスプログラムに注力しています。 ボストンの近くにガールフレンドと愛らしい若いコカプーと住んでいます。 暇な時は、ダンスとリンディホップを教えることへの愛を通して1920年代を呼び戻しています。
Kentaro Matsumae
iOS Developer at merpay
Kentaro Matsumae
Kentaro は Merpay でiOS開発者として働いています。try! Swift Tokyo 2018 と NYC2018 で CoreML について話しましたが、彼の関心は純粋なモバイルアプリ開発に戻ります。 最近はiOS SDKと同様にFlutterを使用してモバイルアプリを構築するのにハマっています。
Soaurabh Kakkar
Principal iOS Engineer at Tokopedia
Soaurabh Kakkar
Soaurabh Kakkarは、インドネシアのテクノロジーユニコーンであるTokopediaのプリンシパルiOSエンジニアです。大規模なコンシューマ向けアプリへの貢献とは別に、彼は実験し、Google特許で読むことができるセキュリティアルゴリズムを共同で発明しました。彼は以前、HLSの詳細、アプリケーションアーキテクチャに関する神話、Swift India Conferenceでの関数型パラダイム、全社的な講演などのトピックについて講演しました。プログラミングをしていないときは、クリケットを見て、XboxでMortal Kombatをプレイしています。
タイムテーブル
3月18日
9:00 - 受付・朝食
10:00 - 開会
10:15 - SwiftUIを構成するもの
SwiftUIを構成するもの
SwiftUIのView、VStack、Listなどのクロージャーがどのように連携して実際のインターフェースを構築するのか疑問に思ったことはありませんか?さて、これはそんなあなたのためのセッションです。Function Builderやこれらの型の背後に存在する魔法を調べ、SwiftUI内だけでなく、私たち自身の利益のためにそれらをどのように使用できるかを見ていきましょう。
10:40 - Swiftのstructを分析する
Swiftのstructを分析する
標準ライブラリの型のほとんどはstructで記述されており、Appleもパフォーマンス上の理由からclassよりもstruct使用することを推奨しています。しかし、マイナス面は何でしょうか?その1つは、バイナリサイズへの影響です。このトークでは、Swiftのstructを分析について説明します。動作の詳細と、strucのサイズがコンパイラの最適化のいくつかとその理由に限定的な影響を与える方法について説明します。また、独自のコードを記述するときに、structとclassどちらを選択すればよいか、そのタイミングについても説明します。
11:05 - 休憩
11:35 - Swiftの型推論の流れ
Swiftの型推論の流れ
私はSwiftを触り始めたころから型推論の仕組みに興味を持ちました。Swift2が出た頃にHindley-Milner型推論(HM型推論)を勉強し、自分で実装してみたことがあります。しかし、HM型推論では、Swiftが持つ高度な推論を実現することができず、どのように拡張するとSwiftのような言語が実現できるのか気になっていました。 この一年ほど、Swiftコンパイラの勉強会への参加を通し、少しずつコンパイラの内部を読み解いたり、型推論の発表を行ったりしてきました。 このような経験を踏まえ、このトークでは、Swiftの型推論の流れの全体像と、推論処理の中身を解説します。 私の発表を通して、初級者が型推論に入門する良いとっかかりとなり、Swiftコミュニティに型推論を理解している開発者が増えることを望みます。
12:10 - Collectionを作ろう
Collectionを作ろう
Swiftに備えられたCollectionは、ほとんどの利用シーンで十分な役割を果たすでしょう。ほとんどの型は配列と辞書に保持されます。Setやタプルを使うこともあるでしょう。あなたはすでに独自の型を作ることが出来ると思いますが、そのうち独自のCollectionを作りたい日がきっと来ると思います。その時にはこのトークを聞いておいて良かったと思うことでしょう。私と一緒にスクラッチからCollectionを作る方法を学びましょう。Collectionを新しく作るために満たすべき条件や約束事についてお話し、protocolについての理解を強化し、実際にメソッドを使ってみましょう。
12:35 - Sign in With Appleへの挑戦
Sign in With Appleへの挑戦
Sign in with Appleは、不明瞭なタイムライン、ドキュメントの不足、多数のユーザープロファイルの統合という悲惨な事態を引き起こし、チームに独自の実装や、UXの疑問を残しました。このトークでは、我々が行った議論や、この機能を実装する過程で行った意思決定を紹介します。
13:00 - ランチ
14:30 - モードレスネスとは何か
モードレスネスとは何か
20年間のデザインコンサルタントとしての経験から、私は「モードレスネス」が最も根源的なユーザーインターフェースデザインの原則だと信じています。モードレスなユーザーインターフェースのコンセプトを理解することは、真に使いやすくパワーを与えるアプリを開発するのを助けます。 デザインメソッドには銀の弾丸はありません - アプリをモードレスにすることを除けば。私が見る限り、ビジネスアプリの90%は、機能的なモードで構成されていることによるユーザビリティ上の深刻な問題を抱えています。モードを取り除くことによって、あなたは製品を劇的に改善または革新することができるのです。 このプレゼンテーションでは、あなたの製品をもっとずっと意味深くするモードレスデザインの思想とテクニックについて話します。
14:55 - ⚡️ Swiftコンパイラによる「最適化と診断」を体感する
Swiftコンパイラによる「最適化と診断」を体感する
本トークを通じて、Swiftコンパイラの特に面白いフェーズである、コンパイラが私達のコードに行う「最適化と診断」について深く知ることができます。 いままでのtry! Swiftではコンパイラに関するたくさんのことを学びました。例えば、Tokyo 2018では、Swift Intermediate Language(SIL)の読み歩き方を学び、私達のSwiftコードがどのようにコンパイラに取り扱われるかを学びましたね (https://www.youtube.com/watch?v=sT0SNp-Tw-8)。 では、SILを読めるようになっただけで終わりでしょうか? いいえ、SILを読めるようになった次の大きなステップとして、SwiftコンパイラがSILに対して行っている「最適化と診断」について学ぶことができます。 また、私達はSwiftコンパイラの「最適化と診断」を学ぶことを通じて、 診断によって私達のプログラムはどのように安全が保証されていくのか しかし、最適化は一歩間違えるとどのように危険になるか。これは例えばiPhone アプリケーションのReleaseビルドなど、最適化が様々な場面で起こりうることです。 を知ることができます。 本トークでは、Swiftコンパイラの興味深いフェーズである「最適化と診断」について、簡単に入門します。 私達のSILに変換されたSwiftのプログラムは、どのようにして最適化されているのか、そして、私達の身近にあるけど、意識してないコンパイラによる「診断」について解説します。 実際にコンパイラを使ったデモンストレーションを通じて、私達が意識しない「最適化と診断」を深く体感することができます。 もちろん、トークの冒頭では、Swiftコンパイラのオーバービューや最低限のSILの復習をしますので、お気軽に聞いてください。
15:10 - Continuous visual regression testing
Continuous visual regression testing
開発の規模が大きくなるほど時間とともにリグレッションが伴いますが、これをQA/QCで保守するのは大変なコストがかかります。 この問題を解決するために、Webアプリ開発におけるStorybookのように、コンポーネントのカタログアプリを生成し配布しつつ、Snapshot testでUIの差分でassertするだけではなく、実装者が意図しない変更が生じていないかCIからpull requestに対してレポートで可視化できるようにするVisual regression testを紹介します。
15:35 - TensorFlowとSwiftを使った機械学習への招待
TensorFlowとSwiftを使った機械学習への招待
機械学習の新しいパラダイムと、if/thenで実装されたようなコードではなくモデルでロジックを実装する方法を学びましょう。このセッションでは、ニューロンやトレーニングループ損失関数のような、まだあまり知られていない機械学習の新しいコンセプトをご紹介します。TensorFlowでモデルをトレーニングする方法と、慣れ親しんだSwiftを使いTensorFlow Liteに変換しiOSアプリケーションに変換する方法を学びます。
16:00 - 休憩
16:30 - 不動産のAR
不動産のAR
未来を受け入れ、拡張現実を使用して、不動産と対話する新しい方法をもたらします。このセッションでは、ARを活用した便利なアプリを作成する方法について説明します。ピープルオクルージョン、ARコーチングUI、USDZファイルを使用したAR Quicklookなどがカバーされます。
16:55 - ⚡️ 自信を持って面接に臨もう
自信を持って面接に臨もう
面接にはストレスがつきものです。質問は難しく、あなたは神経質になりつつも、何がなんでも答えを急いで探し出します。面接官はまるであなたが失敗することを応援しているかのようです。本当でしょうか?自信を持って次の面接に参加するためにはどうしたらいいのか考えてみましょう。
17:10 - ⚡️ Build Swift Web Playground for Fun and Profit
Build Swift Web Playground for Fun and Profit
Playgroundはプログラミング言語を理解するためのツールとしてもっとも有用なものの一つです。 Swiftは非常に使いやすいPlaygroundが提供されていて私たちはSwiftコードをとても簡単に試して実行結果を確認できます。 他のプログラミング言語に目を向けてみると、最近の言語は何かしらのPlayground の仕組みを備えています。さらにWebのPlaygroundが提供されている言語も多くあります。 WebのPlaygroundはさらにさまざまな応用ができます。 手元に環境がなくても実行できるのでiPhoneでちょっとアイデアを試したり、議論のために問題のあるコードと実行結果を人と共有したり、ドキュメントなどに載せるサンプルコードが実行できる、いわゆる「動くドキュメント」を提供することもできます。 残念ながら公式のSwiftのWeb Playgroundはまだ提供されていませんが、SwiftとWebの技術を使ってWebで動くSwift Playgroundを自分で作ることができます! こちらが私の作ったSwiftのWeb Playgroundです=> https://swift-playground.kishikawakatsumi.com/ Web APIを備えているので、応用として、Discordを利用したSwiftのコミュニティ内で、コードを投稿すると実行結果が表示されるという議論のための便利なツールとして積極的に利用されています。 私の作ったライブラリの動作をセットアップ不要で試せる環境として利用することもあります。 このように、PlaygroundをWebの世界に持っていくと、とても強力で応用力があるツールになります。 現在、私は汎用的でないものも含めて5つのPlaygroundを利用可能な形で公開しています。 既存の技術の組み合わせて作られているので、難しいことは何もありませんが、DockerやLinuxサーバーのセットアップなど、広い範囲の技術に触れることができるので、このような仕組みを作ることはとても楽しいです。 いろいろなSwift Web Playgroundがたくさん作られてほしいと思っていますので、私の経験から、SwiftをWebで実行する(しているように見える)ために何が必要か、どのような技術をどう使って実現しているのか、気をつけることは何か、ということをお伝えします。
17:25 - かっこいいボタンをつくる
かっこいいボタンをつくる
ボタン、ボタン、ボタン!ボタンは、iOSアプリの重要なコンポーネントです。アプリのボタンをかっこよく見せて、ユーザーを引き付けるさまざまな方法について説明しましょう。画像から形、アニメーションまで、これらのボタンをポップにしましょう!
17:50 - どうして失敗するのか
どうして失敗するのか
コードとプロセスが失敗する原因は何でしょう?複雑なシステムは複雑な方法で失敗します。私が壊滅的な障害の例、それらを引き起こした原因、および将来それらを回避する方法を説明します。
18:15 - Closing / Announcements
3月19日
9:00 - 受付・朝食
9:45 - 開会
10:00 - Xcodeプロジェクトの生成
10:25 - ⚡️ Xcode Preview でUIKitベースのアプリ開発を効率化する
Xcode Preview でUIKitベースのアプリ開発を効率化する
iOSアプリ開発の大部分の時間はViewの実装に費やされます。Viewはアプリの状態によって表示内容やレイアウトが動的に変わります。そのためViewの開発中は、頻繁にiOS Simualtorを起動し、実際にアプリを操作して期待通りの表示内容になっているかを確認する必要があります。また、小さい画面の端末での表示時、ダークモード有効時、Dynamic Typeで文字を大きくした際などに、レイアウトが崩れてないかを確認する作業も面倒なものです。何か変更するたびにiOS Simulatorを起動して動作確認する必要があるので非常に大変です。 この問題を解決してくれるのが、Xcode11で導入されたXcode Previewです。Xcode Previewは、様々な状況下におけるViewの表示結果をエディタ上でプレビュー表示する機能です。Viewの実装を変更すると即座にプレビューに反映されるため、確認のためにiOS simulatorを何度も起動する必要はありません。 そして、Xcode PreviewといえばSwiftUIのための開発支援機能というイメージがありますが、実は従来のUIKitベースのアプリ開発にも使うことができます!あなたの既存のアプリ開発を効率化するための道具として、今日からXcode Previewを使い始めることができるのです。SwiftUIの普及を待つ必要はありません。 このトークでは既存のUIKitベースのアプリ開発にXcode Previewを導入する方法とその活用方法を、デモを交えながら紹介します。
10:40 - (TBD)
11:05 - 休憩
11:35 - Property Wrappers、あるいはSwiftがJavaのようになることを決めたこと 🙃
Property Wrappers、あるいはSwiftがJavaのようになることを決めたこと 🙃
Swift 5.1では、言語に新しい構成要素であるProperty Wrappersが導入されました。たとえば、SwiftUIは、@State、@EnvironmentObjectsなどのアノテーションを介してデータバインディングのシステムを提供するために、これに大きく依存しています。 他の言語の改善、たとえばCodableとは異なり、Appleはこの新機能の使用を独自のフレームワークに制限していません。コードベースはそれを自由に活用して、独自の特定のニーズに合うカスタムプロパティ属性を実装できます。 これはプロジェクト全体の一般的な動作を分解する絶好の機会ですが、長期的にはコードの可読性と予測可能性を損なうことはないでしょうか?コードを短くすることは良いことですが、難解な注釈のコレクションによって達成された場合、元の意図に反する可能性があります。 この講演では、Property Wrappersの概要を説明し、Property Wrappersを活用する方法の例を示し、使うべきタイミング、使うべきではないタイミングについてガイドラインを示します。
12:10 - レガシーコードにおける実践Dependency Injection
レガシーコードにおける実践Dependency Injection
依存性を注入 (Dependency Injection) するとはどういうことかすでにご存知かと思いますが、我々は普段使いません。なぜなら、現実世界はレガシーコードに満ち溢れているからです。このトークではiOSのプロジェクトに依存性を注入するための実践的なやり方をご紹介します。
12:35 - 単方向データフローについてのあれこれ
単方向データフローについてのあれこれ
WWDC '19にてAppleはSwift UIを発表し、新しいUIフレームワークによって、全てのAppleプラットフォーム上でUIが簡単に構築できる方法を紹介しました。Swiftの強力なAPIと内部構造だけでなく、業界とオープンソースコミュニティでデザインされてきた革新的で知名度のある、効率的でスケーラブルなプログラミングパラダイムを踏襲しています。今回ご紹介するのはそのようなパラダイムと、Swift UIとメジャーなUIフレームワークの思想、トレードオフや課題、そして技術選定のためのスキルの構築についてお話しします。
13:00 - ランチ
14:30 - パターンマッチの超能力
パターンマッチの超能力
Swift開発者である我々は、Swiftを書くときに毎回パターンマッチングを使います。たとえば、 `switch` と `if let`についてはすべて知っています。しかし、パターンマッチはこれよりもはるかに強力であり、自分でパターンマッチを拡張できることをご存知ですか? Swiftのパターンマッチ構文を深く掘り下げて、それがどこまで行けるのか、どれだけ強力なのかを発見し、独自のカスタムマッチングロジックを作成して `switch` やその他のパターンマッチ式にさらなる超能力を与える方法を学びます。
14:55 - ⚡️ 超音波通信 〜バスのチケットを例に〜
超音波通信 〜バスのチケットを例に〜
私たちは普段インターネットを介してデータを交換していますが、インターネット接続が信頼できない場合はどうしましょう?超音波通信は、人間の耳には聞こえない音波を介してデータを確実にやり取りできます。これは実質的にハードウェアに依存せず、マイクとスピーカーのみで実現できます。音声によるバスチケットを解決するための概念、実装、実際の使用例、および私たちが何に取り組んだかを説明します。
15:10 - 離れていてもより良く働く
離れていてもより良く働く
小さなスタートアップのメリットとして、iOSエンジニアをひとつのチームで維持できることがあります。しかし、グロースによって、最も緊密なiOSチームでさえも解散させられます。これにより、多くの場合、iOSエンジニアを隔離し、マルチプラットフォームのプロダクトチームでiOSコードベースの整合性を維持するための努力を強いられます。このトークでは、iOSエンジニアのチームメイトと、1つのチームで一緒に作業していたフェーズから、共有インフラプロジェクトの先頭に立って、複数のチーム間で効果的にコミュニケーションを行う体制へ移行する方法をご紹介します。
15:35 - (TBD)
16:05 - 休憩
16:35 - Getting Started with Combine
Getting Started with Combine
前回のWWDCで、Appleはついに値を宣言的に処理するための独自のフレームワークをリリースしました。これにより、リアクティブプログラミングのスキルがツールセットに必須になります。しかし、それは実際には何を意味し、なぜ開発者にとって役に立つのでしょうか? Appleが開発者である我々に提供するツールや構成はどんなものでしょうか? このトークでは次のことを学びます。 - リアクティブプログラミングとは何か - Combineは他のリアクティブ宣言的フレームワークと何が異なるのか - 基本的な構成要素:Publisher, Subscriber, Subscription, Subjectなど - Combineイベントの構造とライフサイクル - Combineに登場する単語:Operators - Combineのチェーンを構成する単語 - Combine&Foundation:Appleが提供するAPIにより、Combineおよび既存のSwift APIを使用した日々の開発を容易にする - SwiftUIにおけるCombineの役割 - Backpressureとはなにか - その他
17:10 - A/Bテストにおける学び、落とし穴、そして重要性
A/Bテストにおける学び、落とし穴、そして重要性
この業界で、A/Bテストは仮説の検証をするためになくてはならないものです。新しいバージョンのアプリを過去のバージョンと比較する場合に、あまり深く考えることなくA/Bテストされてきたと思います。このトークでは様々なA/Bテスト手法、結果の読み解き方、そして、よくある落とし穴にはまらないための方法を学びます。
17:35 - 学習の科学
学習の科学
WWDCのトークを見たことがありますが、数日後、それが何であったか覚えていないことはありませんか?なぜこんなことが起こるのでしょう?このトークでは、大人の人間が新しいことを学ぶ方法と、これを職場に適用する方法について見ていきます。チーム内で新しい情報を送信するために自由に使用できるさまざまな手法と、それらが互いに積み重なる方法を調査します。
18:00 - Closing / Announcements
18:30 - 🎉Party
3月20日
9:30 - ワークショップ受付
10:00 - iOSの動画プレーヤーを自作しよう
iOSの動画プレーヤーを自作しよう
iOSではAVFoundationを使って、簡単に動画を再生することが出来ます。
このワークショップでは、AVFoundationがどんな仕組みの組み合わせで動画を再生しているのかを理解し、あなただけの動画プレーヤーを開発する方法を紹介します。
用意するもの:
Xcode 11がインストールされたPC、 iPhone、 Lightning ケーブル
10:00 - iOSアクセシビリティ入門
iOSアクセシビリティ入門
アプリのアクセシビリティを向上させたいけれど、どこから始めれば良いのか分からない経験はありませんか? このワークショップでは、iOSのさまざまなアクセシビリティ機能、自由に使えるツール、誰もがアプリを使用できるようにするために使用できるAPIについて学びます。 ほんの少しの労力で、アプリで優れたアクセシビリティエクスペリエンスを作成できることにすぐに気付くでしょう。
用意するもの:
最新バージョンのXcodeがインストールされたPC
10:00 - KeyPathsを最大限に活用しよう
KeyPathsを最大限に活用しよう
KeyPathsは、短くて読みやすいカスタム構文の作成する際にとても便利です。
このワークショップでは、プロジェクトでKeyPathsを使用して、データ操作、データバインディング、単体テストなどのタスクを実行する方法を紹介します。
用意するもの:
最新の安定バージョンのXcodeがインストールされたPC
10:00 - 型推論実装ワークショップ
型推論実装ワークショップ
omochimetaru & Iceman & kateinoigakukun
アルゴリズムを学ぶときは、実際にコードを書くとよく理解できます。このワークショップでは、型推論への理解を深めるため、簡単なSwiftの型推論器を実装します。事前に用意された虫食いコードを、テストケースを通過するように修正していく形式なので、短時間で完成させることができます。コードはもちろん皆さんの慣れ親しんでいるSwiftで書かれていて、しかも本物のSwiftコンパイラのコードにある程度対応しているので、コンパイラへのコントリビューションに取り組むきっかけにもなるでしょう。
用意するもの:
- 最新の安定バージョンのXcodeがインストールされたPC
- カンファレンスの Swiftの型推論の流れ のトークを聞いてください。
10:00 - XcodeGenへの移行
XcodeGenへの移行
XcodeプロジェクトをXcodeGen仕様に移行し、gitから削除する方法を学びましょう! 開始方法のほか、高度なヒントと設定オプションについて学習します。
用意するもの:
XcodeGen に移行したい個人や業務のプロジェクトを持って来てください。
10:00 - オープンソースSwiftワークショップ
オープンソースSwiftワークショップ
Yusuke Kita & Sho Ikeda & giginet
このワークショップでは、Swiftのコンパイルプロセスとそれらの部分を見て、LLVMについて少し学び、bugs.swift.orgを使用して作業するバグを見つけて、変更とテストを実行してビルドを作成します。 プルリクエストのマージはこのワークショップの目標ではありませんが、このワークショップに参加した後は、始めるために十分な知識があり、さらに学ぶためにどこを調べるべきかを知っていることでしょう。 すぐにSwiftコンパイラの使用を開始してください。 C ++の知識がなくても、Swift標準ライブラリまたはSwiftSyntaxは、ほとんどがSwiftとpython / swiftハイブリッド '.gyb'ファイルで記述されています。
用意するもの:
- 最新の安定バージョンの Xcode がインストールされたPC
- Swiftコンパイラーをビルドすることをお勧めします。 事前に方法をお伝えします。
10:00 - ホームアプリ対応のHomekitアクセサリを自作しよう!
ホームアプリ対応のHomekitアクセサリを自作しよう!
このワークショップでは、ハードウェア設計者でなくても、HomeKitアクセサリを作れる方法を学びます。実際にiPhoneまたはiPadのホームアプリを使って、アクセサリー機器をコントロールする簡単な入出力のHomeKitアクセサリを作ります。オンリーワンなHomeKitアクセサリーを増やしましょう!
用意するもの:
- Xcode11インストール済みMac
- iPhoneまたはiPad
10:00 - FirestoreとSwiftUIの宣言的UI
FirestoreとSwiftUIの宣言的UI
このワークショップでは、Cloud FirestoreとSwiftを使用して宣言的UIを構築する方法を調べます。効果的なFirestoreコードをステートレスUIから分離し、FirestoreからUIレイヤーに変更を伝播する際の複雑さを管理するための戦略に焦点を当てます。
用意するもの:
Xcode 11以降、CocoaPods 1.8.0以降(標準iOS toolchain)
12:30 - ワークショップ終了
================
13:30 - ピアラボ受付
14:00 - ピアラボ(もくもく会)
ピアラボ(もくもく会)
ピアラボ(もくもく会)はtry! Swift のプレゼンテーションから学んだことやスピーカーと議論した問題に取り組む場所です。他の人と仲良くなったり、オープンソースプロジェクトに取り組んだり、即興でLTをはじめたりなどの絶好の機会です!ピアラボには決まった形はなく、オープンです。同じ会場にいる仲間と一緒に作り上げていきます。最初にお互いに自己紹介をしてから、質問しあったり、興味のあるプロジェクトに一緒に取り組んだりしてみましょう。
17:00 - ピアラボ終了
ワークショップ
iOSの動画プレーヤーを自作しよう
Tomoya Hirano (noppe)
iOSではAVFoundationを使って、簡単に動画を再生することが出来ます。
このワークショップでは、AVFoundationがどんな仕組みの組み合わせで動画を再生しているのかを理解し、あなただけの動画プレーヤーを開発する方法を紹介します。
用意するもの:
Xcode 11がインストールされたPC、 iPhone、 Lightning ケーブル
Frank Courville
フランクは、背景がフェルトだった時代からiOSアプリを構築してきました。現在、フルタイムのSwiftとiOSの教育者として働いており、チームがiOS開発の最先端を走り続けることを支援しています。彼は自分のウェブサイトでiOSについて書いたり、ポッドキャストで生産性について話したり、誰にでもとりあえずトランスフォーマーの話しをするのが好きです。
iOSアクセシビリティ入門
Frank Courville
アプリのアクセシビリティを向上させたいけれど、どこから始めれば良いのか分からない経験はありませんか? このワークショップでは、iOSのさまざまなアクセシビリティ機能、自由に使えるツール、誰もがアプリを使用できるようにするために使用できるAPIについて学びます。 ほんの少しの労力で、アプリで優れたアクセシビリティエクスペリエンスを作成できることにすぐに気付くでしょう。
用意するもの:
最新バージョンのXcodeがインストールされたPC
Vincent Pradeilles
Vincentは2011年にiOSアプリの開発に着手しました。ここ数年、彼はWorldlineで働いており、フランスの主要銀行向けの優れたアプリの開発に貢献しています。彼はSwiftが大好きで、インターネットでの知識の共有を楽しんでいます。最も注目すべきは、データ操作用のSQLのような構文を実装するフレームワークKeyPathKitを構築したことです。@ios_memesの中の人でもあります。
KeyPathsを最大限に活用しよう
Vincent Pradeilles
KeyPathsは、短くて読みやすいカスタム構文の作成する際にとても便利です。
このワークショップでは、プロジェクトでKeyPathsを使用して、データ操作、データバインディング、単体テストなどのタスクを実行する方法を紹介します。
用意するもの:
最新の安定バージョンのXcodeがインストールされたPC
omochimetaru, Iceman, kateinoigakukun
Omochiは、株式会社コンセプトの業務でiOS, macOS, サーバサイド向けにSwiftを書いています。Swiftの型の喜びを知ってからSwiftガチ恋勢になりました。コンパイラ内部についてやSwift時代のデザインパターンについて、多くのトークや記事を発表しています。
Kenta(Iceman)はクックパッドでiOSエンジニアをしています。UIがなめらかに動くアプリを作ることを常に目指しています。cocos2d-xが好きです
Yuta(kateinoigakukun)はメルペイのエキスパートチームでインターンとしてSwiftコミュニティにコントリビュートしています。最近はSwiftのWebAssembly対応を進めています。
型推論実装ワークショップ
omochimetaru, Iceman, kateinoigakukun
アルゴリズムを学ぶときは、実際にコードを書くとよく理解できます。このワークショップでは、型推論への理解を深めるため、簡単なSwiftの型推論器を実装します。事前に用意された虫食いコードを、テストケースを通過するように修正していく形式なので、短時間で完成させることができます。コードはもちろん皆さんの慣れ親しんでいるSwiftで書かれていて、しかも本物のSwiftコンパイラのコードにある程度対応しているので、コンパイラへのコントリビューションに取り組むきっかけにもなるでしょう。
用意するもの:
- 最新の安定バージョンのXcodeがインストールされたPC
- カンファレンスの Swiftの型推論の流れ のトークを聞いてください。
Yonas Kolb
YonasはSwiftやアーキテクチャ、UX、そして開発者ツールに情熱をもったiOS開発者で、XcodeGenやMintといった有名なオープンソースのSwift製ツールの作者です。趣味はアウトドアです。
XcodeGenへの移行
Yonas Kolb
XcodeプロジェクトをXcodeGen仕様に移行し、gitから削除する方法を学びましょう! 開始方法のほか、高度なヒントと設定オプションについて学習します。
用意するもの:
XcodeGen に移行したい個人や業務のプロジェクトを持って来てください。
Yusuke Kita, Sho Ikeda, giginet
Yusukeは10Xのソフトウェアエンジニアであり、フロントエンドとバックエンドのチームで働いてきました。 最近はSwiftコンパイラの新しい技術を学ぶことに夢中です。コーディング以外では、サイクリングをしてます。
ShoはSwift (corelibs-foundation)のコントリビュータであり、Carthage, ReactiveSwift, Quick, Nimbleのメンテナーでもあります。京都のはてなでiOS/Android/React Nativeアプリの開発をしています。
Kohki(giginet)はクックパッドでiOS基盤開発をしています。
オープンソースSwiftワークショップ
Yusuke Kita, Sho Ikeda, giginet
このワークショップでは、Swiftのコンパイルプロセスとそれらの部分を見て、LLVMについて少し学び、bugs.swift.orgを使用して作業するバグを見つけて、変更とテストを実行してビルドを作成します。 プルリクエストのマージはこのワークショップの目標ではありませんが、このワークショップに参加した後は、始めるために十分な知識があり、さらに学ぶためにどこを調べるべきかを知っていることでしょう。 すぐにSwiftコンパイラの使用を開始してください。 C ++の知識がなくても、Swift標準ライブラリまたはSwiftSyntaxは、ほとんどがSwiftとpython / swiftハイブリッド '.gyb'ファイルで記述されています。
用意するもの:
- 最新の安定バージョンの Xcode がインストールされたPC
- Swiftコンパイラーをビルドすることをお勧めします。 事前に方法をお伝えします。
ホームアプリ対応のHomekitアクセサリを自作しよう!
Sam Akada
このワークショップでは、ハードウェア設計者でなくても、HomeKitアクセサリを作れる方法を学びます。実際にiPhoneまたはiPadのホームアプリを使って、アクセサリー機器をコントロールする簡単な入出力のHomeKitアクセサリを作ります。オンリーワンなHomeKitアクセサリーを増やしましょう!
用意するもの:
- Xcode11インストール済みMac
- iPhoneまたはiPad
Morgan Chen
MorganはGoogleのソフトウェアエンジニアであり、Firebaseのクライアントサイドライブラリ、オープンソースリポジトリ、ドキュメント、開発者ツールに取り組んでいます。 過去にはiOSでの音楽ストリーミングや、主要なワークショップやハッカソンでの指導など、さまざまな教育活動にも取り組んできました。 休日はロッククライミングとハイキングを楽しんでおり、夜にB-Pumpにいることもあります。
FirestoreとSwiftUIの宣言的UI
Morgan Chen
このワークショップでは、Cloud FirestoreとSwiftを使用して宣言的UIを構築する方法を調べます。効果的なFirestoreコードをステートレスUIから分離し、FirestoreからUIレイヤーに変更を伝播する際の複雑さを管理するための戦略に焦点を当てます。
用意するもの:
Xcode 11以降、CocoaPods 1.8.0以降(標準iOS toolchain)
ピアラボ(もくもく会)
You!
ピアラボ(もくもく会)はtry! Swift のプレゼンテーションから学んだことやスピーカーと議論した問題に取り組む場所です。他の人と仲良くなったり、オープンソースプロジェクトに取り組んだり、即興でLTをはじめたりなどの絶好の機会です!ピアラボには決まった形はなく、オープンです。同じ会場にいる仲間と一緒に作り上げていきます。最初にお互いに自己紹介をしてから、質問しあったり、興味のあるプロジェクトに一緒に取り組んだりしてみましょう。
参加者の声
主催者
Natasha Murashev
Founder of try! Swift
Natasha Murashev
昼間はiOSデベロッパ、夜はロボットです。natashatherobot.comでSwiftやwatchOS、iOS開発に関するブログを書いています。急成長中の週刊Swiftニュースレター、This Week in Swiftや(今回を含めて)世界中で try! Swift カンファレンスを運営しています。現在は@NatashaTheNomadとしてデジタルノマド生活を送っています。
Daiki Matsudate
Software Engineer / Onsen Lover
Daiki Matsudate
iOS Developerとして、さまざまな会社でiOSアプリの開発に8年従事。Swift言語そのものをはじめ、様々なOSSに貢献する他、国内唯一のGoogle Developers Expert for Firebaseとして、Firebaseの啓蒙に努めています。国内の大型カンファレンスや、try! Swift NYC, AltConf, Swift Indiaをはじめとした海外カンファレンスで登壇しています。好きなものはとんかつと餃子🥟と寿司🍣と温泉♨️です。著書「iOSアプリ設計パターン入門」(PEAKS)
Hideyuki Nanashima
Swift Lover
Hideyuki Nanashima
Swift愛好会会長です。みんなでもっとSwiftを楽しめるようなネタを探してます。かんぱいやー(勉強会で乾杯をする人)としても知られていて、乾杯の力でSwift好きの輪を広めています。
Nino Sakuma
Designer / iOS Developer
Nino Sakuma
フリーランスのイラストレーター兼デザイナー。アップル製品好きがこうじてiOSデベロッパーにもなりました。初心者向けiOSアプリ開発講座「 アプリ道場(アプリクリエイター道場)」の講師。Apple イラストブログ 「 もっと知りたいリンゴあれこれ(リンあれ)」。try! Swiftのマスコットキャラクターの「Riko」のデザインを担当しています。
Yutaro Muta
Mobile Application Developer at Hatena
Yutaro Muta
株式会社はてなのApplication Developer。京都在住。Swiftが好きだけど、GoもPythonもKotlinでもなんでも使います。好きなものは日本酒、一緒に飲みに行きましょう!
Takashi Kinjo
Mobile Application Developer at CyberAgent
Takashi Kinjo
株式会社サイバーエージェントで働くモバイルアプリケーションエンジニア。 iOS / Android / Web 向けの広告システム開発を経て、現在は CATS で新規事業の Android アプリケーション開発を担当しています。
Satoru Ohguchi
Engineer
Satoru Ohguchi
SAP Technical Consultant、AWS Solution Architect として働いています。趣味で、Swiftプログラミングやハード工作をしています。そのほか、音楽鑑賞、演劇鑑賞、スポーツ観戦にも行きます。
Akihito Kumakura
Software Engineer
Akihito Kumakura
メーカーでソフトウェアエンジニアとして働くかたわら、キーボードアプリMojicoをフルSwiftで開発しています
Kazumasa Kumamoto
Software Engineer
Kazumasa Kumamoto
ヤフーでiOS/Androidアプリの開発や、勉強会運営などをしています。プログラミング、インターネットカルチャー、音楽、イラストなどが好きです。
Alvin Varghese
Founder of Swift India
Alvin Varghese
Alvin Vargheseは、文化と伝統の国インド、ケララ州のiOS&macOS開発者です。彼は20代前半で、非常に高いエネルギーを持っていて、眠っていると死んでしまいそうです。iOSの開発と技術にとても情熱を持っており、彼のSwift愛好者、iOS開発者となりました。彼がどんなプロジェクトにも取り組んでいないとき、彼は本を読んだり、旅行しています。彼は学習と探求に生涯のこだわりを持っています。今日、Swift India Developer Community の運営に多くの時間を費やしています。