では、 Swift 社内勉強会がテーマなので、アイスブレイクとして iOS アプリの開発をするようになった経緯から聞いていきましょうか。
西: もともと子供の頃から PC に触れる機会が多く、その方面に馴染み深かったのですが、中学生になるタイミングで両親に iPhone を買ってもらい、色々触って遊ぶなかで UI デザインに興味を持つようになりました。そんな経緯から大学では情報系に進み、プログラミングに触れ、アルバイトで iOS アプリを作り始めました。そこで UI デザインだけでなくプログラミングや Swift 言語自体にも魅了され、以来のめり込んでいます。 髙木さんはどうですか?
髙木: 学生時代に何でも開発してきたのですが、 iOS アプリ開発だけはやったことがなくて、新卒で入社した会社でそれを希望すると、そのまま配属されて、以来ずっと Swift を使っています。 その Swift ですが、西さんと言うと Swift 社内勉強会の主催しているほど Swift 愛がすごいと思っているのですが、何がそうさせるのでしょうか?
西: 以前に自分でもなぜ Swift を気に入っているのだろうと自問自答して、 30 個ほど好きな理由を挙げられたぐらいなので、たぶんここから半日は話せると思います(笑)。 無理やり一言で言うと、「読みやすく、安全で、パフォーマンスも良いコードをエレガントに書けるところ」です。 Swift は自分の考えを素直に記述できる表現力を持っていて、かつ言語設計の納得感も高いので、書いていてストレスを感じません。
西: それだけに今のフェーズは、 Swift の言語機能を適切に使って安定性を向上させたり、開発規模が拡大しても意図がわかりやすいコードを書くなど、より Swift 力が求められていると言えますね。
Swift 社内勉強会
髙木: では、本題の Swift 社内勉強会についてです。 まずは企画した背景から聞かせてください。
西: 3 つの狙いがあります。
プロダクトの品質を向上させたい
Swift 好きな人がアンドパッドに興味を持つキッカケを増やしたい
単純に Swift が面白いので、その魅力を社内のエンジニアにも伝えたい
髙木: 1. の「プロダクトの品質を向上させたい」はこれまでに話してきたことに関連していますね。
西: 正直に言ってしまうと、Swift の理解が浅くても、アプリを作ろうと思えば作れます。特に昨今は AI の性能が飛躍的に伸び、ある程度のコードは AI が書いてくれる時代です。そんななかで Swift の言語機能を正しく、そして深く知ることは、 "一歩進んだモノづくり" を可能にします。強力な型システムを活用した堅牢な設計、パフォーマンスの追求、意図の伝わりやすいコードの記述など、品質向上のための打ち手が大幅に増えるのです。コンパイル時点で実装ミスを発見できれば障害を未然に防げますし、言語機能の誤用による不具合の防止にも繋がりますね。
髙木: あとは複雑なエラーメッセージを吐いて謎の挙動や問題が起こると、とても原因調査に悩むので、このあたりも言語仕様の理解が深まると生産性に寄与しそうですね。 続いての背景が、外部向けの狙い、「 Swift 好きな人に興味を持ってもらいたい」です。
西: これは言葉のとおりですね。 この記事もそうですが、今後テックブログでも積極的に発信していきたいので、 Swift 好きな人はぜひアンドパッドに!
髙木: 最後の狙いが「単純に Swift が面白いので、その魅力を社内のエンジニアにも伝えたい」ですが、これまで何度も感じてきた西さんの Swift 愛の話ですね?
西: ですね。 先にも Swift の推しポイントを挙げましたが、 Swift は安全で、表現力が高く、たくさんのパワフルな言語機能をもっているので、そうした魅力について社内の皆さんともワイワイ語り合いたいと思っています。 そんな Swift 社内勉強会に真っ先に参加表明して、こういうことをやりたいと熱意をもってくれたのが髙木さんでした。 Swift 社内勉強会のどこがお気に入りポイントだったのでしょうか?
髙木: 私も西さんと同じく Swift が好きだからですね! あとは Swift について相談できる場を設けて、暗黙的にはこう書いてるけど、こっちの方が Swift 的だよね、といった言語トークをしながら Swift 力をみんなでブラッシュアップしたかったというのがあります。
勉強の対象はSwift Forums で議論されている Swift へのプロポーザルが中心です。 プロポーザルは一人で読むにはハードルが高いのですが、みんなで眺めてみると、ワイワイ話ができてよいですね。
髙木: 最近は Swift Concurrency 、特に Actor や Sendable などをテーマに話しましたね。 Swift Concurrency が解決しようとするデータ競合問題とは何か、 Actor がそれをどうやって解決するのか、そういった核となる背景を、座談会形式だけでなく実際にみんなの手元でコードを書き動かしながら理解する実践回もありました。アンドパッドの Swift Concurrency 力がググッと上がった手応えがあります。 あとは私から ARC (Automatic Reference Counting)関連で weak と unowned の使い分けについて相談したのですが、それに対する西さんの ARC の解説をもとに、ほかの参加者が iOSDC 2024 に ARC に関するプロポーザルを提出されていたので、知識の循環がいい感じに回っています。 加えて、 Android エンジニアの方も興味をもって参加してくれているので、じっくり基礎的な話もしています。今後も幅広い話題で盛り上がれそうですね。
西: 勉強会の雰囲気があったまってきているので、引き続きプロポーザルを中心にしつつ、個人的には Swift のAPI Design Guidelines も皆で読んでみたいですね。 メソッド名や変数名をはじめとした、 Swift におけるインターフェースの設計ガイドラインをチームの共通理解にできると、コードの挙動予測性や読みやすさを向上でき、品質改善にも繋がると期待しています。
髙木: API Design Guidelines は昨年の iOSDC 2023 の非公式アフターイベントで西さんが話していたものですね。 西さんがいい顔で話していたのが、とても印象的でした。
西: 私もその発表は気になっています! あとは個人的な思いが入るのですが、「ゲームボーイアドバンスで Swift を動かそう 」 (day1 13:55) が見たいですね。 Swift は今 iOS アプリ開発以外にもサーバーや組み込み系など、 Apple プラットフォーム以外への展開がどんどん進んでいて、とてもうれしいのですが、この発表はさらに「ゲームボーイアドバンスでも動くよ」という内容です。ゲームボーイアドバンスは私が初めて親に買ってもらった思い出深いゲーム機だけに、そこで Swift を動かせるというのはとても興味を惹かれます。