1
/
5

iOSDC 2024 開催直前! Swift 社内勉強会にみる Swift への熱い想い

いよいよ iOSDC 2024 が 8/22 の前夜祭からスタートし、 2 日間、開催されます! アンドパッドは前年に続き、 iOSDC 2024 に協賛し、開催まで指折り数えて楽しみにしています。

どれだけアンドパッドが "楽しみ" にしているのか、一番表現できるものとして、アンドパッドで Swift 社内勉強会を主催する 西 悠作 と、その勉強会に真っ先に参加した 髙木 友稀 が対談した記事をお届けします!

Swift 社内勉強会を通じてわかる、アンドパッドの iOS エンジニアの Swift 熱と、 iOSDC 2024 への期待が伝われば!

(iOSDC トークンもあります!)

西 悠作 @jrsaruo_tech

iOS アプリ開発を中心に開発経験を積み、 2021 年 10 月にアンドパッドに入社。 休みの日もコードを書くほど Swift が好きな iOS エンジニア。 最近 Apple Vision Pro を衝動買いしそうになったが、あまりに高額なため冷静になり、精神を鎮めてから購入ボタンを押した。

髙木 友稀 @kiwi_yuki

大学院の情報工学専攻を修了し、新卒でモバイルエンジニアとしてモバイルゲームや家族共有写真アプリを開発する企業に入社。 以来、モバイルエンジニアとして経験を積み、 2022 年 4 月にアンドパッドに入社。 施工管理アプリ開発チームに所属。

Swift が好きな理由は 30 個以上挙がる

髙木: Wantedly に登場するのは初めてなので、まずは二人で自己紹介をしましょう。 では、西さんから!

西: はい! アンドパッドには 2021 年 10 月に入社しました。それまでは主に iOS アプリ開発に携わりつつ、 React や Vue で Web フロントエンド開発をしたり、 Python でロボットアームを動かしたりなんかもしていました。 iOS アプリ開発に絞ると 5 年くらいですね。現在は施工管理アプリの iOS チームのリーダーを務めています。

髙木: 私は西さんの入社半年後の 2022 年 4 月にアンドパッドに入社しました。 それまでは iOS アプリ開発をメインに Android アプリ開発も行っていて、学生時代は Android アプリの開発、 Rails を使ったサーバサイドの開発、 Unity でのゲーム開発など何でもやっていました。

では、 Swift 社内勉強会がテーマなので、アイスブレイクとして iOS アプリの開発をするようになった経緯から聞いていきましょうか。

西: もともと子供の頃から PC に触れる機会が多く、その方面に馴染み深かったのですが、中学生になるタイミングで両親に iPhone を買ってもらい、色々触って遊ぶなかで UI デザインに興味を持つようになりました。そんな経緯から大学では情報系に進み、プログラミングに触れ、アルバイトで iOS アプリを作り始めました。そこで UI デザインだけでなくプログラミングや Swift 言語自体にも魅了され、以来のめり込んでいます。 髙木さんはどうですか?

髙木: 学生時代に何でも開発してきたのですが、 iOS アプリ開発だけはやったことがなくて、新卒で入社した会社でそれを希望すると、そのまま配属されて、以来ずっと Swift を使っています。 その Swift ですが、西さんと言うと Swift 社内勉強会の主催しているほど Swift 愛がすごいと思っているのですが、何がそうさせるのでしょうか?

西: 以前に自分でもなぜ Swift を気に入っているのだろうと自問自答して、 30 個ほど好きな理由を挙げられたぐらいなので、たぶんここから半日は話せると思います(笑)。 無理やり一言で言うと、「読みやすく、安全で、パフォーマンスも良いコードをエレガントに書けるところ」です。 Swift は自分の考えを素直に記述できる表現力を持っていて、かつ言語設計の納得感も高いので、書いていてストレスを感じません。

髙木: Swift 愛に満ち溢れた最上級の理由ですね。

西: 髙木さんも Swift は大好きですよね。

髙木: 西さんと同じぐらいには! と言いたいところですが、私は Swift だけでなく、 CI/CD の整備など DevOps 的に iOS アプリ開発の下支えをするのも好きです。

西: そうでした、髙木さんと一緒のチームにいると、いつの間にか何かが自動化されていることが多いですね。 おかげで面倒だった作業が楽になり、とても助かっています。 なぜ、髙木さんはその下支えが好きなのですか?

髙木: 前職でモバイルエンジニアが 1 人しかいなかったので、とにかく自分が楽にならないと回らない環境だったことが影響しています。 また DevOps の効果は比較的時間などの計測がしやすく、楽になったことを実感しやすいのですよね。 それを経てアンドパッドに入社して、チームで開発していると、自分だけでなくチームのエンジニアも楽ができていることが見えるので、それがより一層好きになった理由かも知れません。 あとは、周りに比べてスマートフォンを手に入れるのが比較的早かったのですが、 3 年もすると、あっという間に誰もが持っている環境になり、技術が普及するスピード感を肌で感じました。 そこで、一つの技術ではなく、複数技術に長けていることも重要と思うようになったことも挙げられます。

(西)

今、ANDPADの iOS アプリ開発のフェーズではしっかり Swift で書けることが求められる

アンドパッドのマルチプロダクト・マルチアプリ戦略

髙木: さきほど西さんから、私と同じチームで開発していると話がありましたが、ここでアンドパッドの iOS アプリ開発についても触れましょう。 このあと話したいマルチプロダクト・マルチアプリ戦略にも関係があるので、少し時間をとって読者の皆さまに紹介します。

私と西さんが一緒にいるチームで開発しているのが、 ANDPAD施工管理 です。システム開発におけるプロジェクト管理ツールをイメージすると良いかも知れません。 メンバーを管理したり、進捗を管理したり、資料を共有したり、といった用途で使われます。 また他にも iOS アプリ開発チームが複数あり、複数のアプリを開発しています。 建設現場で沢山の会社・職人ともスピーディにコミュニケーションができるチャットでできる ANDPADチャット、 様々な建築図面をもとにコミュニケーションができる ANDPAD図面 、建造物の品質検査の実施・報告を効率的に行える ANDPAD検査 など、現場で活用できるアプリが沢山あります。 それ以外にも、経営支援として、現場で起こる沢山の受発注を、建設業法に則って簡単に管理できる ANDPAD受発注 も登場しています。

西: ユーザーによってやりたいことが異なるので、多種多様な機能が求められます。それらをマルチアプリの形で提供しているところが特徴的ですね。 そのうえで、それらのアプリ一つひとつが沢山の機能を持っています。 例えば、プロジェクト管理ツールが多様な機能を持っているように、 ANDPAD施工管理も報告機能、写真の撮影や管理(現場の写真で工事状況を報告・共有したり品質を検査したりする)、工程管理、メンバー管理、変わったところではサーマルカメラとの連携機能を持つなど、非常に多機能です。 さらに、ここがマルチアプリ戦略の肝でもありますが、ANDPAD の各アプリで一部の機能(認証、報告機能など)が共通しているため、それらをライブラリとして切り出し、アプリ間で共有しています。

髙木: ANDPAD施工管理だけでソースコードが 10 万行近くあり、とにかく規模が大きいですね。 アプリ内で影響範囲を気にしながら開発することはもちろん、ライブラリ開発時には他のアプリへの影響も考えないといけないというところも特徴です。 もちろんユーザベースが大きいので、パフォーマンスも求められます。

(髙木)

ユーザー特性と使用環境からANDPADの iOS アプリに求められていること

西: あとは建築・建設業界で働く方のうち 60 歳以上の方が 25% 以上を占めていて(*)、ユーザーの年齢層が高めです。 このため、Dynamic Types (文字サイズをユーザーの設定で変更できる機能)をサポートする、タップ数をなるべく減らすなど、文字の読みやすさや操作の簡単さには常に気を配りますね。

髙木: それもあって西さんはエンジニアだけでなくデザイナーと一緒に「 HIG を読む会」という社内勉強会も開催されてますものね。

ソフトウェアエンジニアと UI デザイナーが Apple の Human Interface Guidelines を一緒に読んだら - ANDPAD Tech Blog
とても良い感じです。 はじめまして、アンドパッドで iOS アプリ開発を担当している西 @jrsaruo_tech です。 最初は Swift の好きなところを30個挙げる記事を書こうと思ったのですが、誰が読むんだろうと冷静になれたので猫をかぶることにしました。Swift の話はまた別の機会に。 さて、アンドパッドでは日々多種多様な社内勉強会が開催されているのですが、その中に『HIG を読む会』というものがあります。 HIG とは Apple が公開している Human Interface Guideli
https://tech.andpad.co.jp/entry/2023/07/18/100000

西: 「 HIG を読む会」を開催している背景を少しだけ深堀りすると、マルチアプリであり、ユーザー層も独特なので、アンドパッドでは Tsukuri というデザインシステムを用意して、ユーザー体験の統一に取り組んでいます。 一方で iOS のガイドラインも重視すべきなので、デザイナーとエンジニアの共通理解を生むためにも開催しています。

髙木: デザインシステムという点では、 ANDPAD のアプリが使用される環境では直射日光を浴びることが多いので、色のコントラストも重視していますよね。

西: アンドパッドのデザイナーの四倉さんがご自身の note で書いた「カラーパレットのコントラスト比を揃えるのにOKLCHカラースペースが便利だった」という記事にもある通り、 WCAG2.0 準拠のカラーパレットにするなど、並々ならぬコントラスト比へのこだわりがあります。

拡張のしやすさ、パフォーマンスが課題に

髙木: 読者の方にもアンドパッドの iOS アプリ開発の特徴を知ってもらったところで、 Swift 社内勉強会の企画にも絡む、現在の開発の課題についても話しましょう。 先ほども挙げましたが、まずは規模の大きさから生じる課題ですね。

西: 他のアプリへの影響を考えるので、なるべく "疎" につくることが求められていることと、とにかくユーザベースが拡大し続けているので、パフォーマンスの問題も現れるようになりましたね。

髙木: それに加えて、特にユーザー数が伸び、大規模な現場での利用が増えたことに伴って、安定して動作することや沢山の要望に応えうる機能の追加・改修のしやすさもテーマになってきました。

西: それだけに今のフェーズは、 Swift の言語機能を適切に使って安定性を向上させたり、開発規模が拡大しても意図がわかりやすいコードを書くなど、より Swift 力が求められていると言えますね。

Swift 社内勉強会

髙木: では、本題の Swift 社内勉強会についてです。 まずは企画した背景から聞かせてください。

西: 3 つの狙いがあります。

  1. プロダクトの品質を向上させたい
  2. Swift 好きな人がアンドパッドに興味を持つキッカケを増やしたい
  3. 単純に Swift が面白いので、その魅力を社内のエンジニアにも伝えたい

髙木: 1. の「プロダクトの品質を向上させたい」はこれまでに話してきたことに関連していますね。

西: 正直に言ってしまうと、Swift の理解が浅くても、アプリを作ろうと思えば作れます。特に昨今は AI の性能が飛躍的に伸び、ある程度のコードは AI が書いてくれる時代です。そんななかで Swift の言語機能を正しく、そして深く知ることは、 "一歩進んだモノづくり" を可能にします。強力な型システムを活用した堅牢な設計、パフォーマンスの追求、意図の伝わりやすいコードの記述など、品質向上のための打ち手が大幅に増えるのです。コンパイル時点で実装ミスを発見できれば障害を未然に防げますし、言語機能の誤用による不具合の防止にも繋がりますね。

髙木: あとは複雑なエラーメッセージを吐いて謎の挙動や問題が起こると、とても原因調査に悩むので、このあたりも言語仕様の理解が深まると生産性に寄与しそうですね。 続いての背景が、外部向けの狙い、「 Swift 好きな人に興味を持ってもらいたい」です。

西: これは言葉のとおりですね。 この記事もそうですが、今後テックブログでも積極的に発信していきたいので、 Swift 好きな人はぜひアンドパッドに!

髙木: 最後の狙いが「単純に Swift が面白いので、その魅力を社内のエンジニアにも伝えたい」ですが、これまで何度も感じてきた西さんの Swift 愛の話ですね?

西: ですね。 先にも Swift の推しポイントを挙げましたが、 Swift は安全で、表現力が高く、たくさんのパワフルな言語機能をもっているので、そうした魅力について社内の皆さんともワイワイ語り合いたいと思っています。 そんな Swift 社内勉強会に真っ先に参加表明して、こういうことをやりたいと熱意をもってくれたのが髙木さんでした。 Swift 社内勉強会のどこがお気に入りポイントだったのでしょうか?

髙木: 私も西さんと同じく Swift が好きだからですね! あとは Swift について相談できる場を設けて、暗黙的にはこう書いてるけど、こっちの方が Swift 的だよね、といった言語トークをしながら Swift 力をみんなでブラッシュアップしたかったというのがあります。

西: まさにやりたかったことなので、そういった思いをもって参加いただいているのはとても嬉しいですね。勉強会を企画してよかったです!

髙木: 参加者をどんどん増やして、もっと盛り上げたいですね! 参加者が増えている要因に勉強会の内容があるのですが、読者の皆さんにもアンドパッドに興味を持ってもらえるように、その内容を紹介しましょう。

西: 普段は週 1 回 30 分で開催していて、 1 回の内容は主に 3 つに分かれています。

  • Swift に関する Q&A
  • 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 愛にあふれる 2 人が語る iOSDC 2024 の見どころ

髙木: iOSDC の話題がでたので、間もなく開催される iOSDC 2024 の見どころをワイワイ話しますか。 では、西さんから!

西: Swift 6 が間もなくやってくるので、 座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」 (day1 13:00) はとても気になっています。 現時点で Strict Concurrency の警告はたくさん出ていますし、読者の方の多くも避けては通れないのではないでしょうか。 Swift 6への移行に備えて、少しでも多くの情報に触れておきたいですね。

あとは「 Swift 6 の Typed throws と Swift におけるエラーハンドリングの全体像を学ぶ 」(day2 10:30) とかも。

髙木: それは私も聞きたい発表ですね! いよいよ長年議論されていた Typed throws が Swift 6 で導入されるので注目しています。 また Swift のエラーハンドリングの設計思想についてもおさらいできそうです。

西: そうなんですよね。 スピーカーの koher さんが 7 年前に書かれた 「Swift のエラー 4 分類が素晴らしすぎるのでみんなに知ってほしい」 という記事に当時感銘を受けたので、エラーハンドリングについてあらためて考えられる、とても良い機会になると思ってます。

髙木: あとは「 Mastering AsyncSequence - 使う・作る・他のデザインパターン(クロージャ、Delegate など)から移行する 」 (day2 13:00) ですね。 Delegate 、RxSwift などのこれまでのデザインパターンから AsyncSequence へどう移行するとよいか、悩ましいところなので、そのメリット・デメリットを聞けそうだと期待しています。

西: 私もその発表は気になっています! あとは個人的な思いが入るのですが、「 ゲームボーイアドバンスで Swift を動かそう 」 (day1 13:55) が見たいですね。 Swift は今 iOS アプリ開発以外にもサーバーや組み込み系など、 Apple プラットフォーム以外への展開がどんどん進んでいて、とてもうれしいのですが、この発表はさらに「ゲームボーイアドバンスでも動くよ」という内容です。ゲームボーイアドバンスは私が初めて親に買ってもらった思い出深いゲーム機だけに、そこで Swift を動かせるというのはとても興味を惹かれます。

iOSDC 2024 のアンドパッドブースでアプリをレビューすると日常で大活躍するノベルティが当たる!

髙木: iOSDC 2024 は発表もさることながら、各社のブースも特徴的で面白いですよね。 アンドパッドも前年に続き、 2024 でもゴールドスポンサーとして協賛し、ブースも出展します!

西: 今回も iOS エンジニアでワイワイ、ネタを練りましたね!

髙木: では、ブースの見どころを紹介しましょう! アンドパッドは建築・建設業界向けに特化して iOS アプリを開発していますが、なかなか普段の生活とは馴染みがないものです。 そこで今回のブースでは、 ANDPAD アプリを操作して、開発者目線でレビューをすると、話題のノベルティが当たる おみくじ が引ける! という企画を行います。

西: もう遠慮なしに、「この挙動はよくないよ」などなど辛口レビューもいただきたいですね。

髙木: どんどん欲しいですよね! それだけでなく、 SwiftUI や Storyboard などの技術テーマや「このあたり実装しにくいですよね」など iOS アプリ開発トークで盛り上がりたい。

そのブースだけでなく、アンドパッドのスポンサーセッションも注目して欲しいところです。 建築・建設業界向けアプリの独特の面白さを伝えるため、スポンサーセッションでは「 ANDPAD黒板のオフラインモード機能 リリースまでの軌跡 」を発表します。 前年 2023 でもオフライン化の取り組みを紹介しましたが、今回は前年とは全く異なった仕様・設計・開発フローで取り組んだ、アンドパッド独自のオフラインモード機能の開発について紹介します。

西: 機能が独特なこともさることながら、 Swift 6 の Data race safety も見据えた設計にもしているので、技術観点でも見どころ十分です。 またタイトな開発スケジュールの中、どうやって開発当初からアクセル全開で進められたのか、チーム開発 Tips にも触れます。

髙木: 少しでもアンドパッドの iOS 開発に興味を持ってもらいたいですね! 西さん、今日は対談ありがとうございました!

西: こちらこそ、ありがとうございました!

Swift 熱と愛に満ち溢れた 2 人の対談はいかがだったでしょうか? iOSDC 2024 に向けて、アンドパッドの iOS エンジニアが心から楽しみにしていることが伝われば幸いです!

iOSDC 2024 のアンドパッドブースならびにスポンサーセッションでお会いしましょう!

(トークン) #ANDPAD_iOSDC2024

株式会社アンドパッドでは一緒に働く仲間を募集しています
13 いいね!
13 いいね!

同じタグの記事

今週のランキング