見出し画像

try! Swift Tokyo 2024 に初めて行ってきました!

try! Swift Tokyo 2024に参加してきました〜 体験内容を簡単に書こうと思います。

try! Swift Tokyo とは

try! Swift Tokyoが帰ってきました!
Swiftを使った開発のコツや最新の事例を求めて
世界中から開発者が集います。
日頃のSwiftの知識やスキルを披露し、協力しあうことを目的に、
2024年3月22日 - 24日の3日間開催します!

try! Swift Tokyo 公式ホームページより

毎年3月に開催していたイベントですが、2020年からコロナの影響により4年間ぶりの開催となりました。

開催日は3月22日(金)〜24日(日)でしたが、大学の卒業式が22日(金)にあったため、別れゆく先輩後輩を優先し23日(土)と24日(日)の参加となりました。

また、非公式で0日目のYakatabune.swiftや

RIZAP Drinkup at try! Swift Tokyo 2024といったイベントが発生しており、木金に参加できなかったのが悔しかったです😭

また、今回はtry! Swift のスカラシップを利用させていただき、
・交通費の大幅負担
・参加費無料
という待遇でカンファレンスに参加することが出来ました!
徳島から参加していたので、とても助かりました。ありがとうございました!

Day2

2日目からの参加です。
9時に徳島空港、10時に羽田空港、12時ごろに会場に着きました。

会場につくと、リコちゃんなどのポスターがお出迎え

会場は地下1階なので、エスカレーターで下がって行きます

何か意図があったんでしょうか?



何が写真をレトロたらしめるのか、Swiftを用いたその実現方法

iPhoneで撮影した写真をレトロカメラで撮影した実際の写真に、どのようにして近づけていくのかCoreImageのCIFilterを利用し、実装されていました。

レトロたらしめる原因に
・Vignette(周辺減光)
画面中心に対して周辺部分が暗くなる

・Temperature & Tint (色温度 & 色合い)
昼に撮影しても夕方のような(温かい)色合い

・Brightness & Saturation & Contrast (明るさ & 彩度 & 明暗の差)

・Highlight & Shadow (ハイライト & シャドウ)

・Exposure (露出)
カメラの画像センサーが光に晒される期間。これを調整することにより、取り込む光の量が変化し画像の明るさも変化する

・Noise (ノイズ・粒子感)
画像に現れる余分なざらつきやピクセルの乱れ

上記の設定を変更することで、レトロな画像を作ることができるそう

カメラや画像にそこまで調べたことがなかったので、それぞれのパラメータを変化させると、どう視覚的に変わるのかなど知ることができ、とても興味深い発表でした!


Swiftの型推論を学ぼう

次は、おもちメタル さんの発表でした

ハイペースで解説されており、自分は1度聞いただけでは理解することは出来ませんでした💦

まずは、Bidirectional Type Inference (双方向の型推論)について
例を元に双方向で型の情報を追いかける必要性とAlgorithm Wについての仕組みについて解説されていました。

コードをパースしてASTにします。ASTに型変数を割り当て制約を生成します。単一化と簡約化を繰り返して推論を進めます。

[スクリプト]Swiftの型推論を学ぼうより

ASTの解析には岸川さんの Swift AST Explorerが有名ですね。
SwiftソースコードのASTを視覚化するためのツールです。

ASTから制約が生成され、これらの制約集合に対して
単一化と簡約化の操作を繰り返す過程で型変数の型が判明していくんですね

func readInt() -> Int
func read<X>() -> X
func main() {
        let a = readInt()
        let b: Int = read()
}

Swiftの型推論を学ぼうより 88ページ目

let a は順方向の推論が必要で、let b は逆方向の推論が必要とのことで、自分は今までどのように推論されていたのか意識したことがありませんでした。

他にも、暗黙の型変換については、変換制約(conv)を用いて対応し、
オーバーロード(多重定義)の検知についての仕組みも、説明をされていました。

    func foo() -> String
    func foo() -> Int
    func foo() -> Bool

これってエラー起きないんですね。。。初めて知りました💦

変換制約の動きから、計算量について気になったんですが、やはり

explode in computational complexity

Swiftの型推論を学ぼう より 116ページ目

計算の複雑さが爆発的に増加するとのことで、少し納得?しました

これまでに、型推論がどのように動作していたのか意識したことがなかったので、とても勉強になりました!


昼ごはん

お昼ご飯は確か4種類ありました。ハラールお弁当もあり、国際的なカンファレンスだなと改めて感じました笑

お弁当が余っていたようなので、日頃甘やかしてるお腹を鍛えるために二つ目をもらいに行きました。

とてもおいしかったです😊

スポンサーブースを散策

インターンでお世話になった方と偶然出会い、一緒に散策させて頂きました!

RevenueCatをゲットしに。。。
積み上げられたRevenueCat達

RevenueCatが可愛すぎて、ルーレット時にI want this!!と連呼していると、ルーレットでは当てる事ができませんでしたが、持っていっていいよ♪と言ってくださり、頂くことができました😭

みんなでゲット「やったぜ!」
こちらもインターンでお世話になりました!
ばんじゅんさんと学生達でワイワイ

ZOZOブースでikkouさんのVision Proを体験させて頂きました!

セットアップ時に両手を差し出す指示が

Vision Proを初めて体験させてもらいましたが、本当に感動でした。

5~10分程度の体験でしたが、感じたことを書くと、
・重さは気にならなかった(興奮&短時間なので参考にならないかもです)
・光漏れはなく、肌触りも良く、付け心地は最高でした
・月面上を再現した全方位モードは、正直現実に戻れるのか恐怖を感じるぐらいの没入感でした。
・空間に出てくるキーボード操作も何もないところを押すのは違和感あり慣れが必要そうでしたが、問題なく操作することができました。
・目線がカーソルとなって右手でつまむクリック操作も思いのままでした。

想像以上にVison Proの操作が思い通りに動き、とても感動しました!!



なぜSwiftで「1+1=2」になるのか

この発表では、

let a = 1
let b = 1
let c = a + b

の時、なんでcは2になるんでしょうかといった興味深い話でした。

+ のオペレーター部分を見ると

public static func +(lhs: Int, rhs: Int) -> Int {
        var lhs = lhs
        lhs += rhs
        return lhs
}

Why 1 + 1 = 2 in Swift? より 9枚目

「 + 」って「 += 」をしてるだけなんですね〜

次に += のオペレーター部分を見ると
(引数のキーワードにinoutってのがあるんですね〜 参照渡しをできるようで知らなかった!)

どうやら「Builtin.sadd_with_overflow_Int64」によって足し算されているぞと判明

じゃあなぜ「Builtin.sadd_with_overflow_Int64」によって計算できているのか、Swiftのコンパイラはどうなっているのか
LLVMからアセンブリまで解説されていました😊

ちょうど、Turing Complete(CPU自作シミュレーター)でCPUを作ったり、アセンブリについて学んだりしているタイミングだったので、とても面白く聞くことができました!!


コード署名を楽しく乗り切る方法

証明書関連に苦手意識を持っていた自分からすると、各種証明書の関連の複雑さを視覚的にわかりやすく表しており、よく笑いも起きる面白い発表でした!(パズルで表していたのは、わかりやすかった!!)



クロージング

発表してくださった方々が壇上に!

1日目は参加できず、発表を見ることはできませんでしたが、スライドは見返します!

Day3

Day1とDay2が発表形式でDay3は手を動かして学ぶワークショップ形式で、マルチスレッドで開催されていました。
全て面白そうだったのですが、Vision Pro体験以降Vision Proに興味があった私は、下のワークショップに参加しました!


Apple Vision Proならでは!空間アプリ開発の始め方

天気体感アプリSunnyTuneを作ってみようといったワークショップでした

ここで残念だったのが、自分のMacBookがIntelチップだったため、VisionOSのシミュレーターが動かず、急遽隣の方(log5さん)に画面を見せていただき、一緒に進めるといった形でワークショップをやらせていただきました🙇‍♂️

一連を通したモデリングの勉強といった感じで新鮮な体験をさせていただきました😊

終わりに

今回で、大きなカンファレンスに参加するのが2回目(1回目がiOSDC)で、すごく新鮮な体験ばかりでした!
参加して他の方と意見交流したり、年代の近い学生エンジニア同士と雑談して、とても楽しく新たにやりたい事が見つかるなど、とても良い経験をさせて頂きました!

以上がtry! Swift Tokyo 2024の参加体験記でした!
スタッフの皆さんありがとうございました!!

また来年もよろしくお願いします!👋


この記事が気に入ったらサポートをしてみませんか?