地球の裏側アルゼンチンのiOS技術カンファレンス Swiftable 2023 参加レポート (DAY 2)

2023.12.03

はじめに

多くのクラスメソッドの社員さんはアメリカ・ラスベガスのAWS re:Invent 2023に参加していた中、一人だけアメリカ大陸を南下したリルオッサです。

この度、アルゼンチンのブエノスアイレスで開催されるiOS技術カンファレンス Swiftable 2023に提出したプロポーザルが採択されたのでスピーカーとして現地に行きました。

アルゼンチンで開催と言っても、スピーカーや参加者の方の国籍は多種多様でスペイン、ドイツ、オランダ、ウクライナ、アメリカ、メキシコ、ウルグアイ、ブラジル、ペルー等といった国際的なカンファレンスになっています。

Day 1の記事は地球の裏側アルゼンチンのiOS技術カンファレンス Swiftable 2023 参加レポート (前夜祭 ~ DAY 1)

Day 1の雰囲気はこんな感じでした。

Swiftable 2023 Day 2

Swiftableの面白い試み

パックマンルール

このカンファレンスでは、パックマンルールというものがあり、一人の人がいたら積極的にその人もグループに巻き込んで大きい輪にしようというものです。素敵な試みですね。

ウォールペーパーを探せ

全部で6つの壁紙をイベントのスピーカー、オーガナイザー、スタッフ、スポンサーの誰かが持っています。それを話しかけてゲットしようというものです。先着順で景品をゲット出来ます。私もその一人に任命されたことで色んな人に話しかけられました。このお陰もあり、有意義に過ごせたと思っております。オーガナイザーの粋な計らいに感謝です🙏

トーク

Harnessing the Potential: Swift Macros in Action

SwiftLeeブログでお馴染み@twannlさんのトークです。

Swiftで新しく導入されたSwift Macrosを導入することでどんな良いことがあるのか、どうやって導入するのかを紹介されていました。

分かりやすいところでいうと、@Observastionや@Model、#Previewでもマクロが活用されているとのことでした。実際にどのような内容になっているかは対象のコードを右クリックして、Expand Macroを押すと展開され見ることが出来ます。

オススメのMacro Packageとして紹介されていたのが、

Swift Macroについては全然追えていないので自作するなりして活用方法も含めて少しずつ理解していきたいと思います。

Adopting GraphQL

Netflixのエンジニア @_Caro_Nさんのトークです。

Netflixのようなアプリでは一つの画面から複数のサービスを呼び出す必要があり、それが原因でデータ取得が遅くなることが想定されます。

そこで、NetflixではGrarphQLとApolloを活用している話でした。

OSや画面サイズに応じて適切なデータサイズで取得する、必要なデータとのみ取得してユーザーを待たせないように心掛けましょう。

下記に合致する場合は、GraphQLを使用するべきプロダクトである可能性があると言えるとのことです。

  • 複数のソースから複雑で入れ子になったデータを取得する必要がある場合
  • Web、モバイル、テレビなど各クライアントに対して必要なデータを正確にリクエストする必要がある場合
  • アジャイル開発やプロトタイプ開発。サーバーを変更せずにクエリ変更をすることができる為

今回の長い飛行機の旅でもNetflixにとてもお世話になったので、そんなアプリの内側を少し知れて面白かったです。

Searching for Aliens

モバイル開発支援ツール Emerge Toolsの設立者の一人 @sond813さんのトークです。

最初は本当にコミニュケーション文明を持つ惑星の数の算出の仕方の説明をされていて、何の話?と言う感じだったのですが最終的には温暖化の話や惑星の数の話などに見立ててアプリを改善する方法を紹介されていました。

  • ダウンロードバイトを減らす
  • 数百万行の大規模なコードベースのアプリ(例えばUberのようなアプリ)だと各行の処理を0.001秒改善するだけで1秒の性能向上に繋がる
  • 1000行あたり、10~20のバグがあるというMicrosoftのデータがあり、コードの簡素化と量を減らすことはアプリ改善の重要なポイント
  • プロダクトコードより沢山テストコードを書く
  • コードカバレッジを満たす為だけの無意味なテストコードを書かない
  • 使用されていないコードは削除

これらを意識することでアプリの品質は向上するとのこと。意識していきたいですね。

Managing OSS libraries at scale

Auth0 モバイルSDKをメンテナンスしている@Widcketさんのトークです。

実際にAuth0のライブラリを管理している知見を共有するトークでした。

  • ライブラリに対して、何かしらのアクションがあったらSlackボットに流れるようにする
  • 頻繁にIssueやプルリクエストをレビューする
  • デベロッパーがサポート、貢献しやすい様にドキュメンテーションを読みやすく理解しやすいものに常に更新する

デベロッパーがサポート、貢献しやすい様にドキュメンテーションを読みやすく理解しやすいものに常に更新するという観点は非常に面白く、自分がライブラリを選定する際もドキュメントの充実度具合も判断基準に入れると良さそうと感じました。

Automating Audible's iOS Release Process

Audibleのエンジニア @CharlesP000さんのトークです。

Audibleで実際に行っているリリースプロセスの紹介でした。Audibleでは2週間スプリントを行っており、必ず指定された期日でコードをFixし、指定された期日でアプリリリースを行っているとのことでした。もし、間に合わなかった場合、期日をずらすことは無く次のスプリントに持ち越しになるとのこと。この方法を取ることでより期日を意識出来そうですね。

一番面白かった箇所は、App Storeのメタ情報はMetadeta Repositoryを作成し管理しているとのことで、マーケティング部門がこのリポジトリーをGitHubで実際に操作してプルリクエストを出したり、マージしているとのことでした。

Charlesさん曰く、「GitHubはただのツールです。ちょっとのトレーニングをすれば誰でも使えるようになります」とのこと。

GitHubは開発者の為だけのツールという勝手な偏見がありましたが、言われてみるとただのツールなので必要であればそのような使い方も出来るのだと勉強になりました。

ランチ

ランチも美味しくいただきました。立食なので食べながら色んな方とのコミニュケーションが取れるのが良いですね。

Emerge Toolsのブースに行くとTシャツとトートバックをもらえました。

Swift Unit Testing: Best Practices and Design Principles

アルゼンチンのエンジニア @marcelobusicoさんのトークです。

  • この実装が機能要件を満たしているだろうか?
  • 他の機能を壊してしまうのではないか?
  • 誰かの書いたコードを更新することになった場合、意図していない挙動になったりしないだろうか?

そんな問題を解決してくれるのがテストコードです。そんなテストコードのベストプラクティスについての共有でした。

テストが失敗した時の為、テストメソッドの名前は、どのメソッドのテストか、どういう条件のテストか、どのような結果を期待しているのかを記載しましょうとのことでした。

また、プロダクトコードを書く前にテストコードを書くことを推奨しており、プロダクトコードが要件を満たしているのか確認することが出来るとのことでした。要件について質問があれば、そのテストコードの段階で質問することができる為、プロダクトコードを修正するという必要が無くなる為です。

アプリの品質向上だけではなく、要件を確実に掴むためにもユニットテストは有効な手段ということを知れました。

mPOS evolution, pain points and wins

カナダのエンジニア @jmanuelmossoさんのトークです。

lululemonというブランドのアプリを開発しており、ユーザーが実際に使う側のアプリとスタッフが在庫を確認したりする為の2つのアプリが存在しており、各デバイスから同じPOSデータ保存先を参照しており、トラフィックが非常に多かった課題を解決していった話でした。

Demystifying App Intents

@SPRSLEPRさんのトークです。

AppIntentsの仕組みや使い方を開発者にとって理解しやすくなるように説明するというテーマで、トーク内容が若干被っていて終始ドキドキしていました。ただ、SiriKitでの活用方法の言及もあり、安心しました。

SiriKit触ったことないので、新たなアイデア発掘の為に触ってみたいと思います。

A journey into your PR reviews

アルゼンチンのエンジニア @iNahuelZapataさんのトークです。去年はSwiftableのMCを務めた方らしいです。

プルリクエストを行う上で大事なポイントを紹介していました。

  • プルリクエストは知識を共有する場
  • ユニットテストを書いてもらう
  • PRテンプレートを使用する
  • 自分のエゴを優先しない
  • 共感する、親切な対応を取る、尊敬する
  • 言葉使いに気をつける、絵文字を使う
  • 失敗は誰でもするので自信を持ってプルリクエストを出す

トークの最後には、このSwiftableに登壇することが夢だったと語り、感極まる場面もありました。

とても勉強になるトークでした。

アフターパーティ

カンファレンス終了後はみんなでアフターパーティ会場に行って、楽しみました。ここでももちろん参加者はフードや食べ物は無料です。

Swiftable特製のハンバーガーが配布される。

おわりに

初めての海外登壇の感想は、「え?こんなに楽しいの?」です。参加者として国際カンファレンスに参加することももちろん良いですが、スピーカーとして出席することで話かけられるキッカケが出来たことで色んな方とのコミニュケーションに繋がったと思います。

また、色んな方が話かけてくれたからこそ楽しいカンファレンスになったと思うので、自分が出席する立場だったとしてもスピーカーに話かけるアクションが出来るようになりたいと感じました。

英語のスピーチについては、終始カンニングペーパーを見るという奥義を使ってしまったので次はカンニングペーパー無しで挑みたいです。

Swiftableのオーガナイザー、スピーカー、参加した全ての皆さんのおかげで最高の思い出になりました。ありがとうございました!