タウンワークiOSアプリは、10年以上開発が続いています。度重なる機能追加や仕様変更によって、プロダクトは徐々に複雑に、レガシーになっていきました。そのため、Clean Architectureの導入によるレガシーからの脱却を図りました。
Clean Architectureに則りドメイン層を分離してみましたが、いくつか不明な点があり、技術顧問の和田卓人氏に相談したところ、そもそも我々のモデリングにたくさんの改善点があることがわかりました。
そこから、チームの中で既存コードからドメインモデルを発掘し、再設計する旅が始まりました。
このセッションでは、ドメイン層が何をするかよくわからない、設計に困っている人に向けて、アプリにとってのドメインとは何か、どのように見つけ出し設計すればよいか、そして評価の方法について私たちの経験を交えてお話します。
AirインボイスのiOS開発チームは、AirインボイスiOSアプリをSwiftUIで開発しています。
WWDC2022でiOS16が発表され、iOS14以上をサポートとすることができるアプリが増えたことで、本格的にSwiftUIの導入を検討している方も多いと思います。しかし、最新のOSのみをサポートするのではなく、iOS14系や15系もサポートするとなると、そこには数多くのハマりどころが存在します。また、要件によってはSwiftUIでの実現に工夫が必要なポイントも数多く存在します。
本トークでは、iOS14以上を対象としたAirインボイスiOSアプリにおいてSwiftUIを用いてさまざまな要件を実現するにあたり、はまったポイントやそれらをどのように回避したかを共有します。
Wantedly では、「デザインの生産性を向上させ、デザイナ - エンジニア 間コミュニケーションを改善することで、ユーザに価値を届ける速度を向上させる」ことを目的として UI デザインシステムを作っています。
今回は現場で運用されているデザインシステムと iOS 実装の成功と失敗について以下の内容を話します。
昨今やっとマイナンバーカードが普及してきており、マイナンバーカードを読み取って本人確認を行ったり、確定申告の電子申告を行ったりするサービスが増えてきました。
今後も(政府が頑張れば)マイナンバーカードは色んな情報を取得するのに使われていくでしょう。
今回では実際にマイナンバーカードの読み取りをプロダクトに組み込んだときの話を織り交ぜながら、マイナンバーカード読み取り機能の実装方法を紹介していきます。
[Target]
・今後マイナンバーカード読み取り機能を開発予定の方
・マイナンバーカードの読み取り方法について興味がある方
・マイナンバーカード読み取り機能をプロダクトに入れたときの苦労話を聞きたい方
[Goal]
・マイナンバーカード読み取り機能を実装する際に障壁無く実装出来るようになっている
・マイナンバーカード読み取りをプロダクトに導入するには何が必要なのか知っている状態
WWDC21の発表にあったように、iOS15でURLSessionのHTTP/3対応が実装されました。
あれからもうすぐ1年経ちますが、2022年6月7日現在HTTP/3対応はデベロッパオプションとして提供されている段階で、大半のiOSデバイスにおいて有効化されてはいません。
しかし、通信のパフォーマンスとセキュリティがより重要になってきていることを考えると、全てのデバイスでHTTP/3のサポートが有効になる日はそう遠くないかと思います。
このトークでは、「そもそもHTTP/3って何?QUICとどう違うの?」「どういう状況でメリットがあるの?」などの疑問にお答えしつつ、運用しているサービスの大半のWebAPIを事前にHTTP/3に対応させた事例から、HTTP/3対応の際に考慮すべき事項や、対応リリース後のモニタリングの想定など、来るべき日に備えた準備の知見をお話しします。
みなさん、AirPlay使いこなしていますか?
AirPlayはAppleのデバイスから映像や音楽をApple TVや対応スマートテレビ・スピーカーで再生できる機能です。発表当初から複雑な設定なしで直感的に使えるようにAppleらしい設計が行われ、ユーザーにその裏側で何が起きているのかを意識させることがほとんどないようにデザインされています。2018年にAirPlay 2が発表されて以降は対応デバイスも増え、またSiri連携や接続先デバイスの学習によりますます使いやすくなって来ました。
本トークではAirPlayで可能になる体験やアプリへの組み込み方法、他のキャスト技術との比較といった内容の他、その仕組みの裏でどんな通信が行われているのか?まで踏み込んでお話しできればと思います。
ソフトウェア開発において、チームのパフォーマンス改善は皆さんが継続的に取り組んでいる課題の1つだと思います。
チームのパフォーマンスを定量的に評価する代表的な指標として、GoogleのDORAという研究チームが確立したFour Keysがあり、これらの指標を使ってチームをそのパフォーマンスに応じてエリート、高、中、低に分類することができます。
iOSのチーム開発においても、デリバリーフローやオブザーバビリティを改善していくことでエリートチームを目指すことができます。
このトークでは、まずFour Keysとその定義を紹介し、計測方法について整理します。次に、iOSアプリ開発におけるボトルネックと、Four Keysに取り組む上での難しさについて解説します。また、私達のチームでの具体的な取り組みを紹介し、みなさんのプロジェクトでも明日からエリートチームを目指せるようにしたいと思います。
Swift向けのコードテンプレートを作成できるStencilを知っていますか?
実はSwiftGen, Kitura, Sourceryといった著名なOSSでも使用されている面白い言語です。
用意されたコマンドを用いることで、OSSでは簡単にコードを生成することができますが、自分でカスタマイズすることも可能です。
このセッションでは、どのようにしてStencilを使っているのか紐解いていきます。
また、Xcode templateやSnippetといった既存の言語テンプレートとの比較も交えて、どのように使っていくのかをご紹介していきます。
参考文献
Stencil: https://github.com/stencilproject/Stencil
StencilSwiftKit: https://github.com/SwiftGen/StencilSwiftKit
UIStackViewとても可愛いですよね!SwiftUI時代になれば使わなくなると思いますが、現状はまだまだUIStackViewを活用する機会は多くあると思います。
このLTでは、私が愛してやまないUIStackViewについて、こんなケースではUIStackViewでどう解決する?というのを逆引きレシピ形式で紹介できればと思います。
SharePlayとはiOS 15で登場した、FaceTime通話中に離れた場所の友達とアプリのコンテンツを共有する機能です。
iOS 16ではこのSharePlayは付加機能というよりはiOSの基幹機能へと進化を遂げたという印象を持ちました。
このLTではSharePlay / Group Activitiesについて5分でまとめて紹介します。
もちろん、iOS 16でのアップデート内容をメインに添えて!
みなさんはswift-format使っていますか?
コードを書きながらリアルタイムでswift-formatでチェックするだけでなく、最後の砦としてGitHubにpushされたコードをswift-formatでチェック・整形してもらうのとても便利ですよね。
このLTでは、GitHub Actionsでswift-formatを自動実行するまでに行なった以下の試行錯誤を共有して、より良い方法などみなさまにも相談できればと思います。
記号論 (記号学) という言葉を聞いたことはあるでしょうか。近代言語学の父と言われるソシュールにより基礎が築かれたとされ、彼は記号モデルについて二元論を唱道しています。これは「りんご」という言葉を考えたときに、実世界の“りんご”に「りんご」というラベルをつけているものであり、記号というのはラベルが対象の事物を指し示すことと言えます。記号論 (記号学) ではこれを足がかりとしその恣意性など記号に関する学問領域を指すものです。
田中久美子氏の名著「記号と再帰」(2010)は、記号とプログラミング言語の対応を特に再帰について探求したものです。1例を挙げると、関数型プログラムの識別子とその内容は先の「りんご」と “りんご” にあたるというような具合です。
本発表では5分で不動点関数と記号の再帰的定義を例にあげ、「記号と再帰」という本について興味をもってもらい、手にとってもらうことが目的です。
子育て4年目。
3年以上前、Apple純正ロンパースを着ていた小さな👶はすくすく育ち、
今ではiPadを自由自在に操れるようになり、幼児向けアプリに限らずいろんなアプリを楽しめるようになってきた。
一方で「なるほど、こういうUIだとわからなくなって泣いちゃうのか」という場面に遭遇することも。
そんな日々微笑ましく感じていたのも束の間、
ペアレンタルコントロールの重要性と偉大さに気づく日がやってきた。
子育ては十人十色。正解も失敗もないかもしれない。
でもだからこそ一例として伝えたい。
こうすればよかった、こうしてよかった。
2歳3歳が夢中になるコンテンツとは。
任天堂はすごい。
子ども向けアプリを開発するならこうして欲しい、こうすれば儲かりそう。
直接開発には関係ないけれど、これから子育てが控えているエンジニアの参考になれば…
そんなエピソードをお届けします。
みなさんが初めて参加したiOSDCはいつでしょうか。
私が初めて参加したiOSDCは2018年のものでした。
初参加の2018年からiOS・Swift界隈のトレンドや新しい技術は目まぐるしく変化し、私が初めて参加した年からは想像もできないような進化を遂げています。
ところで、iOSDCにはYouTube公式チャンネルがあり、iOSDC2016からのセッション動画をなんと無料で視聴することができます。
このトークではiOSDCチャンネルにあげられている458本の動画を踏まえ、これまで6年分のiOSDCを5分に凝縮し、オフライン開催が戻ってきた今だからこそ、神速で振り返りを行っていきたいと思っています。
このトークを聞くことで、iOS・Swift界隈のトレンドを振り返るとともに、6年分のiOSDCの思い出を一気に蘇らせることを約束します。
ネイティブではもう無理だと 諦めていたのにどうしたの?
あの頃 僕達はさ 何でもできる気がしてた
2軸で表を描いては たくさん点を打ったね
でも見てよ今の僕を クズになった僕を
Chart.jsをWebViewで見せても 何も感じ取れなくてさ
別にChartを求めてないけど 急に出されると思い出す
ラインチャート(折れ線グラフ)&バーチャート(棒グラフ)の そのグーラフのせいだよ
このトークでは、WWDC22で発表されたSwift Chartsフレームワークについて話します。
まだ発表直後でベータ版ですが、できる限り様々なチャートを触り、見た目や使い方などを紹介します。
正直なところ Core Animation は私にとって、何度も解説を見聞きしたのに、理解した気になれない技術でした。
iOS歴10年目に入ろうという昨年末、私はAppleの公式ドキュメントと対峙することが出来ました。
この技術と決着をつけるためです。
時間の許す限り調査し検証した結果である記事「詳しく知りたいCore Animation レイヤー編」「アニメーション編」を
自身のブログをに公開したところ、ツイッターなどで「わかりやすい」などのリアクションを頂くことが出来ました。
この発表では、Core Animation 紙面上の都合で記事からカットした部分、SwiftUIやUIViewでのAPIとの比較、基礎知識や応用例など、よりブラッシュアップした内容をお届けしたいと思います。
おかわりは自由です。
既にOSSで公開されているライブラリや、実装済みの機能を使わずに自前で実装することを車輪の再発明と言います。
それはしばしば時間の無駄と思われがちですが、どんなに使い込まれたライブラリでもメンテナンスされなくなったら終わりです。
本LTでは、2年ほどメンテナンスが放置されたライブラリを捨てる為に自前でライブラリを再実装した際の知見をお話します。
Firebaseには、NoSQL DBのCloud Firestoreやバックエンドコードを実行可能なCloud Functionsといった機能を備えており、インフラのことをほぼ意識せずとも、サーバーレスなアプリを立ち上げられる他、クライアントに提供されているSDKを利用し、クライアント間でのデータ同期や、オフラインデータの永続性といったアプリの体験に寄り添った機能を享受できます。
一方、DBはスキーマレスであることや、クライアントから直接DBにアクセスするなど、馴染みがない仕組みも多く、仕様や特徴を踏まえた開発を行わないと、セキュリティやユーザー体験に悪影響を及ぼしたり、負債となる要因になり得ます。
本セッションでは、クライアントエンジニアのみのチームでサーバーレス開発を行う中で見えてきた、効果的にFirebaseを利用する方法を事例と合わせて紹介します。
CombineはiOS13から登場した時間変化による値の変化を処理するための宣言的なAPIを提供するフレームワークです。
今秋にはiOS16が登場し、iOS14以上をサポートできるアプリも多くなった昨今。
Combineは新しい技術ではなく、当たり前の技術となりました。
一方コミュニティを見回すと、当たり前のようにCombineを使いこなす層とまだまだCombineの勘所を得ることができない層との間に断絶があるように感じます。
SwiftUIとも密接な関係があり、せっかくのApple標準のフレームワークであるCombineを覚えないのはもったいない!
ということで、興味がある方みんながCombineに入門できるようなトークをしたいと思います。
本トークでは概念を頭で理解するというより、ちょっとずつステップを踏むことで「手を動かしていったら自然に理解が進んだ」を目指します。
多くのプログラミング言語に備わる機能 "String Interpolation" は、一般的には変数をプレースホルダーに展開する機能です。
しかし、Swiftでは、ある秘密が隠されていたのです!
そう、Swift実装では開発者に拡張手段が提供されていて、高度で静的な文字列操作を可能にします。
さらに、SwuiftUI.Textの機能が充実したことで、近年では単純なStringとしての表現を超え、活躍の幅は広がっています。
このトークでは、文字列操作としての典型的な使用方法から説明し、SwiftUI.Textと組み合わせた便利な活用方法を紹介します!