こんにちは!Sansan 技術本部 Sansan Engineering Unit Mobile Applicationグループの武田です。
Sansan・EightのiOSアプリで採用している技術の中で、iOSDC Japan 2024のSansanブース内で特に注目された10個を紹介します。 注目度は、ブース内で行なったアンケートの結果で計測します。その上位10個のSansan・Eightでの利用事例を紹介します。
注目された技術を探す前に、iOSDC Japan 2024でのSansanの活動を紹介します。
iOSDC Japan 2024でのSansanの活動の様子
スポンサーセッション
発表者:Jiro Nagasaki(zeero)
本セッションでは開発生産性の向上をキーワードに、KMP導入に向けた技術的意思決定のプロセスやKMP導入の効果を最大化するためのノウハウを紹介しました。
レギュラートーク
発表者:堤 修一(shu223)
本セッションでは地図のしくみを中心として、 MapKitのAPIでできることを大きく超えて位置情報+地図でいろんなことが実現可能であることを解説しました。
GIS入門 - 地理情報をiOSで活用する by 堤 修一 | トーク | iOSDC Japan 2024 #iosdc - fortee.jp
ブース出展の様子
SansanとEightではプロダクトの性質に合わせて異なる技術選定をしているという背景があり、その元でSansanのモバイル技術スタックボードを利用しながら来場していただいた方々とお話ししました。
【#iosdc2024 出展中】#iosdc day1もありがとうございました!
— SansanTech (@SansanTech) 2024年8月23日
day2も引き続き、2F 展示ルーム「C-1」ブースでお待ちしています。ノベルティはなくなり次第終了となりますので、お早めにお受け取りください。
また、明日のスポンサーセッションではSansanの長﨑も登壇します! pic.twitter.com/kExTqaz5qk
配布物やキャンペーンの詳細
当日は夏真っ盛りの暑い日で冷感ボディーシートはかなりの枚数を受け取っていただけました。 Eightキャンペーンと題し、参加の状況に応じて、アプリを起動せずに名刺交換ができるMy Eight Cardとマルチクリーナーをお渡ししました。 My Eight CardはNFCを利用した技術でかざすだけでデジタル名刺を交換できるカードです。来場者の方々に読み取りを試していただいたところ、そのスムーズさに驚かれる方もいらっしゃいました。
注目された技術を探す
アンケートの形式
Sansanブースの来場者にSansan・Eightの技術スタックの中で「使いこなせる!」「使っている!」「気になる!」「初耳!」の4つのシールをボードに貼り付けていただく方法を取りました。シールは一人何枚でも貼ることができるルールです。
注目された技術
注目された技術を探すに当たり、注目度の順位付けは、「気になる!」と「初耳!」が「使いこなせる!」「使っている!」「気になる!」「初耳!」の総数あたりに占める割合の高いものを上位としました。 理由としては、1人あたりが貼れるシールの枚数に上限を設けていないため、1つの技術について「使いこなせる!」「使っている!」よりも「気になる!」「初耳!」の割合が高いことが、注目度を測る上で重要であると考えたからです。 また全体のシール枚数が多いことにより、得票数が突出している技術が埋もれてしまう可能性があります。そのため「気になる!」「初耳!」が多い技術がないか、シールの総数も併せて確認しました。
上位10個の結果は、Call Directory Extension・QLPreviewController・Swinject・CoreML・Swift Macros・SkeletonView・Kotlin Multiplatform・CallKit / PushKit・MagicPod*1・NFCとなりました。 これら10個は「気になる!」「初耳!」の数が多い技術にも含まれていました。そのためこれらの注目度上位10個の技術が、iOSDC Japan 2024のSansanブースで注目されたSansan・EightのiOSアプリ採用技術だと言えます。
2024年、注目された10個のSansan・EightのiOSアプリ採用技術の利用事例
注目度上位10個のSansan・EightのiOSアプリに採用した技術の利用事例を簡単に紹介します。 過去のブログ記事があればリンクも載せますので、詳細はぜひそちらも参考にしてみてください。
Call Directory Extension
Sansanアプリには名刺に記載されている電話番号や、同僚から電話があった時に発信者名を表示する機能があります。 その機能を実現するためにCall Directory Extensionを利用しています。
記事ではより詳しくCall Directory Extensionの実装と運用改善について説明しています。Call Directory Extensionを利用して発信者名を表示する機能のメモリ使用量の改善やエラー検知の仕組みの構築、Realmを使用してデータを効率的に管理する方法についても触れています。
Sansan iOSアプリの発信者名表示機能に関する実装・運用改善について - Sansan Tech Blog
QLPreviewController
Sansan アプリには商談記録であるコンタクトを作成できる機能があり、そのコンタクトへのファイル添付と添付ファイルの閲覧を実現するために、QLPreviewControllerを利用しています。
記事ではより詳しく、PDFや画像、音声ファイルなどを簡単にプレビューできるようにする方法や、実装時の注意点について解説しています。
iOS アプリで様々なファイルをプレビューできる QLPreviewController の紹介 - Sansan Tech Blog
Swinject
Eightで8年前に、どのクラスが何に依存しているのかを明確に把握することで、開発効率を上げることを主たる目的として導入されました。 単一責務の法則を体現したVIPERアーキテクチャを実現する際にも利用されています。
ただしデメリットがないわけではありません。使い方によってはコードを絡めてしまう懸念もあり、注意が必要です。
CoreML
SansanとEightでは「スマキャプ」という名刺データ化機能を利用しています。「スマキャプ」の名刺の矩形(長方形)を抽出する処理にCoreMLを使用することによって、矩形抽出の高速化を実現しました。
記事ではより詳しく、名刺のOCR結果を即時に返す「スマキャプ」技術について説明しています。
【研究開発部の技術】第2回 SansanにおけるエッジAIの活用事例 - Sansan Tech Blog
こちらの記事ではより詳しく、TensorFlowで学習したモデルをCore MLに変換する際の手順・注意点についての説明と、変換時に発生するエラーの対処方法や、具体的なコード例も紹介しています。
【研究開発部の技術】第4回 coremltoolsを用いたCore MLモデルへの変換 - Sansan Tech Blog
Swift Macros
SansanのKotlin Multiplatformでの共通クラスをSwiftのclassにラップし利用しています。場合によりそのラップを繰り返し書くことになります。その冗長なボイラープレートを減らすために利用しています。
記事では、Swift Macrosの作成方法について、コードのボイラープレートの削減と可読性を向上させる点にフォーカスし説明しています。Swift Macrosの基礎知識から実装方法、CocoaPodsを使用したプロジェクトへの組み込み方法、具体的なコード例やエラー処理の方法についても解説しています。
Swift Macrosの作り方 - Sansan Tech Blog
SkeletonView
SansanでShimmer(シマー) を簡単に表示させるために利用しています。 SkeletonViewは、FacebookやYouTubeでよく見かけるShimmer効果を簡単に実装できるライブラリです。
記事ではより詳しく、SkeletonViewの導入方法や使用方法、実際の作業でハマったポイントとその対処法について詳しく解説しています。
ローディング画面をお洒落にする SkeletonView の使い方とハマったポイントまとめ - Sansan Tech Blog
Kotlin Multiplatform
Eightはネイティブで開発されている一方、SansanではKMPを2023年から検討し2024年の5月に導入を開始しました。2020年9月からアルファ段階に移行したKotlin Multiplatformは2023年8月に「Kotlin Multiplatform」(KMP)として正式に統一されました。Kotlin から Swift への直接エクスポートも控えており、今後も動向から目が離せません。
記事ではより詳しく、Kotlin Multiplatformを導入した効果とKMPの基本設計や採用したアーキテクチャ、エラーハンドリング、テスト方法について解説しています。
SansanアプリにおけるKotlin Multiplatform導入の効果とアーキテクチャ紹介 - Sansan Tech Blog
Kotlin Multiplatformを導入するための開発演習を実施しており、記事では演習の準備から実施、そして結果までの詳細を説明しています。
Sansan Mobile iOS/Androidエンジニア全13名でKotlin Multiplatform導入に向けた開発演習を実施しました - Sansan Tech Blog
CallKit / PushKit
Sansanで「社内通話」という同僚間でのIP通話機能において利用しています。
次の前編と後編の記事では、CallKitとPushKitを利用しIP通話を実現する上で必要な要素である「スムーズな通話体験を実現するためのUI/UXの提供」、「発信者と着信者の音声情報をつなぐバックエンド機構」をどのように実現したかを説明しています。
Sansan音声通話の裏側 【前編:CallKit/PushKit 】 - Sansan Tech Blog
Sansan音声通話の裏側 【後編:Twilio Voice SDK】 - Sansan Tech Blog
MagicPod
当時の導入の背景としては、リリースのボトルネックとなっていたリグレッションテストを自動化することで業務効率化を実現しようとしていました。その時の手段としてMagicPodを利用していました。 詳細が気になる方はブログとMagicPod公式ページをご参照ください。
Magic Podによるモバイルアプリのテスト自動化の取り組みについて - Sansan Tech Blog
NFC
Eightのタッチ入場受付機能で利用しています。 タッチ入場受付機能は、Eight主催のBusiness IT & SaaS Expo2024(以下BIS 2024)で利用しています。Eightをインストールしたスマートフォンを、NFCタグが組み込まれた受付の看板に触れさせるだけで受付が完了し、プリンターから入場証が印刷される機能です。
記事ではより詳しく、Eightのタッチ入場受付機能の開発について解説しています。Business IT & SaaS Expo 2024(BIS 2024)での実装事例を中心に、NFC技術を活用した背景や具体的な実装方法について説明しています。また、Background Tag Reading機能を利用することで、ユーザー体験を向上させる方法についても触れていますのでぜひ参考にしてみてください。
Eight iOSアプリにおけるNFCを利用したタッチ入場機能の開発 - Sansan Tech Blog
おわりに
Sansan・EightのiOSアプリで採用している2024年注目された技術10選の中で、気になった技術はあったでしょうか。もしあれば、ぜひ詳細を解説した記事も見てみてください。
iOSDC Japan 2025のSansanブースや、本社渋谷サクラステージ、各種イベントでお会いできることを楽しみにしています。
今後もSansanはモバイルコミュニティーへの貢献と、次回のiOSDCへの参加も計画しています。移転した渋谷サクラステージを生かした共催のイベントも多く企画していますので、ご参加お待ちしています! また、一緒に勉強会やイベントを開いていただける方もお待ちしています。
*1:iOSDC Japan 2024のSansanブースにご来場いただいた方がいらっしゃいましたら、お詫びをさせてください。 本ブースにて掲載していたSansan iOSでMagicPodを使って結合テストを行っていた部分は、2023年5月をもってAutifyに移行しました。 そのためiOSDC Japan 2024の時点でMagicPodはすでに利用していませんでした。Sansan Androidでは活用しています。 ブースで誤った情報をお伝えしてしまったことを、この場を借りて謝罪いたします。