見出し画像

RIZAP がtry! Swift Tokyo 2024にも初参戦!【各講演のレポート集】

RIZAP、try! Swift Tokyo 2024にも初参戦!
Swiftを使った開発のコツや最新の事例を求めて世界中から開発者が集う「try! Swift Tokyo」。5年ぶりの開催となるこちらのイベントが2024年3月、東京・渋谷で開催され、われわれRIZAPも初めて参戦してきました! こちらの記事では、会期中に開催された講演(セッション)についてメンバーがまとめた感想をお届けします。

↓↓↓ 現場レポートはこちら ↓↓↓





PM・遠藤崇史の感想まとめ

⒈ AIによる言語学習の変革:DuolingoのAIチューターを深掘る

DuolingoのXingyu Wangさんによる、同社のAIチューター機能の開発に関するセッションでした。ChatGPTを活用したロールプレイ機能の実装について、実際の開発経験に基づく知見が共有されました。レスポンス速度の問題から、GPT-4ではなくGPT-3をカスタマイズすることで機能を実現するなど、実践的な内容が盛り込まれていました。また、サービス全体でシンプルな状態を維持するためにバックエンド側をステートレスにするなど、開発者ならではの工夫も紹介されました。

【感想】
AIを活用した言語学習アプリの開発における現実的な課題と解決策を知ることができる、非常に興味深い内容でした。特にChatGPTを実際のサービスに組み込む際の技術的な工夫については、弊社においてAI機能開発に取り組む上で有用な情報だと感じました。中でもレスポンス速度の問題に対する対策や、バックエンドの設計に関する知見は、実際の開発経験に基づくものであり、AI機能開発の難しさと重要性を目の当たりにしました。今後、さらに多くのサービスでAIの活用が進む中で、このようなリアルな開発事例を学ぶ機会は非常に価値があると思います。


⒉ Swiftで次世代のウェブサイトを構築しよう

Paul Hudsonさんによる「Swiftで次世代のウェブサイトを構築しよう」というセッションでした。 Swiftの活用範囲をウェブ開発にまで広げる可能性を探られており、SwiftのResult Builderを利用してHTMLを生成する方法を紹介し、それを基盤としてSwiftで完全なウェブサイトを構築する方法について解説されていました。

セッションの最後には、Hudsonさんが開発したSwift製のHTMLジェネレーター「Ignite」がオープンソースとして発表され、会場を驚かせていました。Swiftがサーバーサイド開発やAndroidアプリ開発にも使われ始めている中で、ウェブ領域までカバーできる可能性を示す内容でした。

【感想】
個人的にはHTML、CSSから入った人間でもあったので、あえてSwiftで実現しようという見解には同意しかねるのですが、Swiftで全部できるようにするという世界観にこだわりと執念を感じて、いかにもエンジニアらしいという印象を受けました。
実際にオープンソース提供までされており、今回の明瞭で魅力的なプレゼンテーションスタイルも印象的で、見ていて楽しいセッションでした。


⒊ アプリローカライゼーションの自動化

奈良在住のインディーデベロッパー、Chris Vasselliさんによる、自身のアプリ「Nihongo」と「Nihongo Lessons」の多言語対応における自動化手法が紹介されたセッションでした。ローカライゼーションによってアプリの売上がアップした事例を示し、スクリーンショット、翻訳、リリースノートの生成に自動化を活用する方法が解説されました。

プロの翻訳者に依頼する形ではなく、Crowdinのようなプラットフォームを利用し、GitHubリポジトリ上のstringsファイルを自動的に翻訳する仕組みが紹介されました。また、ストーリーボードから言語ごとのstringsファイルを生成する手法や、アプリ説明文の自動生成についても言及されました。単純なものはAppleの定義するcommon systemを使うのが良いとのアドバイスや、fastlaneを使って、10のスクリーンショットを8言語分、計320個生成する自動化も実演されました。セッションのまとめとして、ローカライゼーションの多くの部分が自動化できることが強調された内容でした。

【感想】
私を含めた個人開発を営む者にとっては、非常に実践的で有益な内容だったと感じました。また奈良に住む外国人ならではの知見と経験が語られ、大変説得力がありました。
特にローカライゼーションによるアプリの売上アップは、多言語対応の重要性を改めて認識させるものでしたし、何よりビジネス観点で語られている部分が見受けられたのは個人的に面白かったです。

Crowdinを活用したGitHubリポジトリ上のstringsファイルの自動翻訳や、fastlaneを使ったスクリーンショットの大量生成など、具体的な自動化手法は、多くの開発者にとって参考になるものだったと思います。プロの翻訳者に依頼する以外の選択肢を与えてもらえたことで、品質と効率のバランスを取る判断にも繋がると感じました。


iOSエンジニア・山野井陽一の感想まとめ

 ⒋ 良いアプリケーションをデザインするための感覚の持ち方

デザイナーとエンジニアを経験されている usagimaru さんによる、デザインに関するセッションでした。macOS native という組織を運営されているとのことです。我々の身の回りのユーザーインタフェースから始まり、ハードウェアとソフトウェア、iOSとmacOSの違いを話されていて、MotionやAnimationなどiOSらしさとは何かを追求されていました。
また、日本語の縦読み文化と英語の横読み文化の違いと、日本語の縦読みの文化をアプリに反映させたときの苦労話をされていました。

【感想】
iOSではなかなか縦読みの文化をサポートしてくれないという話をされていて、システムがサポートしないから文化を否定すると文化が廃れていってしまうという話がすごく印象的でした。文化・らしさの継承は意識しないと廃れていってしまうので、システムがサポートしていないなら我々がどのようにして文化をサポートするかと考えさせられるセッションでした。Pull to refresh が公式ではなくクライアントが考案したものだというのには驚きました。

 

⒌ SwiftでvisionOSのアプリをつくろう

visionOS のプロダクト開発の先駆者であるサイバーエージェントの服部智さんによる、SwiftでVisionProOSのアプリを開発されたアプリを実際にデモをするセッションでした。タッチエリアの画面をタップするとタイマーオブジェクトを出現させてタイマーを起動できるといったものでした。

【感想】
基本的には chocoZAPの開発でも使っている SwiftUI のとても馴染みのあるコードと、あまり触ったことがないAR開発で使われる RealityKitのコードが混在して開発が楽しそうでした。オブジェクトを配置するためにアンカーといったものが必要だったり、タイマーオブジェクトを出現するにはイベントのトリガーが必要で、そのためにタップエリアを用意してタップするといったことが必要だったりと、非常にわかりやすい説明だったので内容が理解しやすかったです。個人的にもApple VisionProを手に入れて実装にチャレンジしてみたいな思いました。

 

⒍ マクロをテストする

Swiftのマクロについて説明し、マクロのテスト方法を詳しく解説しています。マクロを自作すると少量のコードで多くのコードが生成できますが、そのテストは大変です。このセッションでは、 Appleが提供する assertMacroExpansion の紹介とその欠点、 Point-Freeが開発したswift-macro-testingライブラリの紹介とデモを行いました。

【感想】
chocoZAPのiOSアプリで使っている、The Composable Architecture(TCA) を提供している Point-FreeのBrandon WilliamsさんとStephen Celisさんのセッションでした。
Apple が提供するassertMacroExpansionではマクロが展開された時に期待されるコードを手書きする必要があり、ちょっとした空白でもエラーになってしまいますが、swift-macro-testingライブラリは実際にマクロが展開された時に期待されるコードが自動で生成されて、すごく便利そうでした!

また、こちらのセッションと3日目のワークショップは、実際にコードを書きながら進行していくライブコーディング形式だったのが印象的でした。ワークショップのときに体感したのですが、コーディングがあまりにも早く、追いつくのをあきらめじっとながめていました(笑)。

ショートカットの使い方がすごくうまく参考になりました。コーディングしながらトークして進めるのはすごいなぁ。

 

⒎ アプリローカライゼーションの自動化

日本語学習アプリ「Nihongo」と「Nihongo Lessons」の開発者である Chris Vasselli さんのセッションです。アプリをローカライズする重要性と自動化するにあたって必要なフローを順番に説明されていました。

【感想】
アプリのローカライズに関しては、全く収益のでなかった国がローカライズによって+100%以上の利益をあげているという話をされていて、市場が増えるという意味でものすごく価値を感じました。Fastlaneを使って10個のスクリーンショットを4デバイス分、8言語に対応したものを生成しているのはすごい自動化だなと思いました! 320ファイル!


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

fastlaneのmaintainerのJosh Holtzさんのセッションです。開発で避けられないコード署名の問題を、4つのピースのパズルに例えてわかりやすく説明するセッションでした。

【感想】
アプリの開発でXcodeには「automatically manage signing」という自動でコード署名を管理する超便利な設定があるのですが、これをやめて手動で管理するとものすごく複雑で管理が大変! これを4つのピースのパズルにたとえて説明するのが非常にわかりやすかったです!
何かエラーが出ていれば、ピースがあっていないという表現がしっくりきました。
スライドもところどころユーモアに溢れていて、セッション自体、とても面白かったです^^


PM・河合千晶の感想まとめ

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

学生時代に写真部に所属していたこともあり、フィルムカメラで撮影していた経験もあるため、Swiftで実現する方法に興味を持ちこのセッションを聴講しました。
登壇者もフィルムカメラが好きな方ということで、SwiftのCIFilterを活用して、iPhoneのカメラで撮影した写真をフィルムカメラのそれに近づけるチューニング方法を説明してくださいました。
Vignetteで四隅を暗くしたり、Temperature&Tintで黄色っぽい色合いを足したり、Noiseでフィルムカメラのざらざらした粒子感を足していくなど7〜8種類のfilterを組み合わせて、「フィルムカメラっぽさ」を再現していきます。filterを適用したあとの写真はたしかにフィルムカメラっぽさがあり、会場でもおおっという歓声があがりました。

【感想】
登壇者の方は「いじったfilterの値が毎回すべての写真に適用できるというわけではなく、どういう写真を撮ったかによってチューニングは必要」とおっしゃっていました。
とはいえ、「フィルムカメラの良さってなんだろう?」ということを改めて定義してfilterに落とし込んでいくことで、フィルムカメラの要素が整理されて面白かったです。
普段の業務でプログラミングをやる機会はないのですが、こういった自分の趣味の領域からでもプログラミングにチャレンジできたらなと刺激をもらったスピーチでした。

そもそも私のメイン業務は企画とエンジニアの橋渡しであるため、「自分がiOSエンジニアの集まるイベントに参加して大丈夫かな?」と不安だったのですが、実際にはエンジニア同士の熱い思いに触れられ、大変貴重な経験になりました。


Androidエンジニア・藤井賢太郎の感想まとめ

10. 良いアプリケーションをデザインするための感覚の持ち方

macOS nativeというコミュニティを運営されているusagimaruさんによるセッション。自身の体験からマウスなどのインターフェースにどのような思いを馳せていたか、UI DesignやMotionに関して、Appleプラットフォームの「らしさ」をどのような点に感じているか、その「らしさ」を継承しつつ生み出す新たなUXにはどのようなものがあったか、などを話されていました。

【感想】
お話の中で出てきた「調和と型破り」というキーワードが印象的でした。
プラットフォームとしてユーザへ体験してもらいたい「らしさ」の考えはありつつも、それでいて違和感なく受け入れられるような新たな体験を提供していけると、良いUXに繋がるのだと感じました。


11. 平和に大規模なコードベースを移行する方法

Tim Condon さんによるセッション。破壊的変更の定義に始まり、いかにしてその影響を抑えていくか、そのテクニックを紹介されていました。
小さなリリースを行う、デフォルトパラメータを使う、protocol extensionを使う、availableアノテーションを使用するといった話から、Swift 6に関してもお話しされていました。

【感想】
availableアノテーションがシンプルで良いなと思いました。このアノテーションを付与したメソッドは、どのプラットフォームでいつから非推奨になるのかを示すことや、代替手段などの情報をメッセージなどで添えることもできるため、OSSやフレームワークの開発においては使い手へ与える余計なストレスを軽減することができる点が良いと感じました。


12. TextKitの理解を深めよう

Marcin Krzyzanowski さんによるセッションです。TextKit2の中身を、図で示しながらわかりやすく説明されていました。主にDisplay、Layout、Storageの3点とそれぞれで使われるManagerなどの話から、カスタマイズするときのDelegateの話をされていました。

【感想】
TextKit2の中身をしっかりと理解されているなあという印象が大きい発表でした。また、一見、ただテキストを扱うだけのようでいて中身はMVCのような作りであることから、やはりテキスト表示を制御するのは簡単ではないのだなと実感させてもらいました。


13. Swiftの型推論を学ぼう

omochimetaru さんによるセッションです。
Swift Compilerのcommitterとのこと。すごい。
型推論は双方向に行われるという話から、AST(Abstract Syntax Tree)、eq/call制約、単一化や簡略化といった話を型推論の流れとして示しつつ、さらにSwiftの型推論はそこから拡張されてconv制約があることなどを話されていました。

【感想】
日頃の開発へ反映できる内容ではありませんでしたが、まるで数学の証明や論理パズルのように型が定まっていくのが楽しい発表でした。普段使用している型推論がどのような流れで行われているかを知ることで、コンパイラの気持ちが理解できそうです。



               (了)

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