はじめに
こんにちは、ヤプリでiOSエンジニアをしている菅(@Nao_RandD)です
先週はtry! Swift Tokyo 2024に初めて現地参加してきました。
この記事では参加の感想とDay 1, Day2のセッションを中心にご紹介しようと思います。
(Day 3のワークショップも参加しているので、そちらは別の記事で投稿します!🎉)
僕としては、本当に参加できて良かった!”という思いで一杯です!!
なので、”現地参加はハードル高いな”という方の背中を押すことができるように、セッション内容だけでなく現地の雰囲気も感じていただけるような記事にしたいと思います!
概要
まずは簡単にtry! Swiftについてです。
try! Swift は世界中から開発者が集まる国際的なカンファレンスです。 tryswift.jp
そのため参加者も海外からの方が多く、iOSDCとはまた違った雰囲気があります。
- 開催場所: ベルサール渋谷ファースト (ガーデンじゃないよっ!、DroidKaigiに行った人は特に気をつけて!)
- 開催期間:
- カンファレンス: 2024年3月22日(金) 〜 23(土)
- ワークショップ: 2024年3月24日(日)
設備・運営に関するメモ
ここでは、try! Swift Tokyo に参加して個人的な心配事がカバーされていたことや、会場で提供されているものを紹介したいと思います。
英語のセッションも怖くない!翻訳レシーバーの提供あるよ
try! Swift は国際的なカンファレンスのため、英語のセッションも多くあります。
”技術的に高度な内容に加えて、英語になったら全くついていけない、、、!”と思った方、安心してください! 翻訳レシーバーがセッション会場で配布されており、リアルタイムでセッションの発表に合わせて翻訳を聞くことができます。
英語セッションでは日本語、日本語セッションでは英語、というようにどちらの言語でもセッションを楽しめる配慮がされています。
参加に当たって心配事などあればQ&Aもチェックすると事前に解消できるかもしれません!
これが無料で!? 美味しいコーヒーの提供あるよ
提供はヤプリでもお世話になっているAlpha Betti Cafe アルファベッティカフェ
昨日から2日間try! Swift Tokyo 2024にてケータリングでコーヒーの提供をしてまいりました🙌2日間での提供総杯数は996杯!「美味しい」の言葉を励みにスタッフ一同頑張りました💪たくさん飲んでくださった参加者のみなさんありがとうございましたー! #tryswift pic.twitter.com/B0ktHv1yaW
— Alpha Betti Cafe アルファベッティカフェ (@AlphaBettiCafe) 2024年3月23日
ひとつひとつ丁寧に淹れてもらえます✨
混雑することが予想されるので、観たいセッションが後に控えている場合にはお気を付けて!
他にもペットボトルのお水やお菓子もいただけます。 こちらはサクッとピックできるので、欲しくなったタイミングでいただいちゃいましょう!
他にも色々あるよ!
他にも企業ブースを回りながら楽しめるスタンプラリーなどコンテンツも盛りだくさんです。
そちらは同じくヤプリの西村さんが紹介している記事もぜひ参考にしていただければと思います!
セッションに関して
それではここからはセッションに関してです!
セッションの一覧は公式ページのタイムテーブルで確認できます。
セッションのタイムテーブル:https://tryswift.jp/#timetable(錚々たる顔ぶれですね。👀)
発表スライドは有志の方がまとめてくださっているので、気になるセッションはスライド公開がないかをチェックしてみてください!
それではここから、セッション内容に関していくつか紹介してみようかと思います!
Accessibility APIを使ってアプリケーションを拡張する
ヤプリとしては外せない岸川さんのセッションです!
Accessibility API から、ディスプレイに表示されているUI要素にアクセスして操作や表示を行う流れを具体的なユースケースを交えて解説されています。
📣 try! Swift Tokyo 2024 Session Start 📣
— try! Swift Tokyo (@tryswiftconf) 2024年3月23日
"Accessibility APIを使ってアプリケーションを拡張する / Enhancing Applications with the Accessibility API"
🗣️ by @kishikawakatsumi 👏 #tryswift pic.twitter.com/ZDPrcbJUeU
Accessibility APIとは?
マウスカーソルの座標やクリック、キーストロークへのアクセスには設定画面かあるいはダイアログからアプリケーションに対してユーザーからの許可が必要になります。
許可されることで表示されているUI要素にアクセスや操作をすることができます。
みなさんもmacで設定したことがあるのではないでしょうか?
ユースケース
セッションでは4つのケースが紹介されています。
マウスカーソルの位置や選択しているテキストにアクセスすることで、ここまで色んなことができるのかと非常に興味をそそられる内容でした。
1つ目のChat Assistantでは選択したテキストをOpenAIのAPIに入力してシームレスなチャットを可能にしたり、3つ目のComic Translatorではスクリーンキャプチャした漫画の内容を翻訳してくれたりなど、本当に色々なアイデアが想起されるAPIだなと感じました。
(Comic Translatorではスクリーンキャプチャした内容をOCRで文字認識して翻訳にかけるようにしている)
セッションをきっかけに知った APIでしたが、ライフハックなアプリケーションを作る土台の知識となるような内容でした。
資料・その他(合わせて要チェック ✅)
- スライド:https://speakerdeck.com/kishikawakatsumi/enhancing-applications-with-accessibility-api
- サンプルコード:https://github.com/kishikawakatsumi/tryswift2024
平和に大規模なコードベースを移行する方法
発表者のTim Condonさんは、OSSのサーバーサイドフレームワークでお馴染みのVaporのコアチームの方です。
Vaporで大規模なリファクタリングに伴い、どのように安定したAPIを提供しつつ、移行していったかを解説してくれています。
これまでの266ものリリース(2024/3/4時点)においてどのような基準を持つべきかや、どのように移行していくかをコードを交えてわかりやすく紹介されていました。
📣 try! Swift Tokyo 2024 Session Start 📣
— try! Swift Tokyo (@tryswiftconf) 2024年3月22日
"平和に大規模なコードベースを移行する方法
/ Migrating Large Codebases Without Breaking The World"
🗣️ by @0xTim 👏 #tryswift pic.twitter.com/yGxBO27rWQ
バージョンに対して持つ基準
Vaporではセマンティックバージョニングを採用しており、
- メジャーバージョン
- マイナーバージョン
- パッチバージョン
のそれぞれにどういった基準で上げていくかを解説してくれます。
「破壊的な変更を含むリリースの場合にはメジャーバージョンを上げる」など、セマンティックバージョニングの基本的な指標に対して、コードからどういった変更が該当するかを解説してもらえたことでより理解が深まりました。
どのように移行するのか?
大規模な移行時にSwiftでどのように実装すると良いかが紹介されており、いくつか抜粋してここで書いてみようかと思います。
Default Parameters
New Protocol Requirements
1. Default Parameters
Default Parametersはデフォルト引数を設定することで、新しくAPI引数が追加されても以前の呼び出しにはデフォルト値が適用され、後方互換を担保することができます。
// 移行前 public func piyo( hoge: Hoge, fuga: Fuga, ) // 移行後 public func piyo( hoge: Hoge, fuga: Fuga, logLabel: String = "code logger" ) // 既存の呼び元 piyo(hoge: hoge, fuga: fuga) // <-- logLabelがない場合はデフォルトの値が適用されエラーにならない
後方互換を担保しているのでこれは破壊的な変更ではないと思っていましたが、”Technically a Breaking Change”と紹介されており技術的には破壊的な変更に該当するみたいです🤔
発表ではメソッドではなくイニシャライザで紹介されていたので、ここで紹介した例だと破壊的な変更には該当しないかもしれません
2. New Protocol Requirements
New Protocol Requirementsはプロトコルエクステンションを利用して、新しいプロトコルメソッドの実装を任意とするものです。
protocol SomeProtocol { func doSomething() -> String func doSomethingNew() -> String // <-- 新しく追加 } extension SomeProtocol { func doSomethingNew() { doSomething().uppercased() } }
コードのようにextensionでSomeProtocolの新しいメソッドであるdoSomethingNew
の実装をしています。
これによって、既存のSomeProtocolの実装全てに対して、新しいメソッドを追加する必要がなくなります。
他にもDeprecated Functionsや、FrozenなEnumsを定義することなど実用的な例がありました。
気になる方はスライドをチェックしてみてください!
資料・その他(合わせて要チェック ✅)
まとめ
try! Swift Tokyo 2024の現地参加は"世界中の開発者とSwiftを通して繋がり、世の中をより良くしていく気持ち"を新たに認識できるような素晴らしいイベントでした
来年も絶対に現地参加したいと思います!
Day 3のワークショップに関するブログも別途投稿する予定ですのでお楽しみに😤
以上、try! Swift Tokyo 2024の参加レポートでした。ありがとうございました。
https://d.hatena.ne.jp/keyword/tryswift
何か質問やコメントがあれば、お気軽に!
この記事はtry! Swift Tokyo 2024に参加した際の個人的な感想と学びをまとめたものです。公式情報や他の参加者の意見とは異なる場合がありますので、ご了承ください。