iOSにおけるIn-App Purchase(アプリ内課金)はiOS 3から利用可能であり、その歴史は10年以上に及びます。
この長い歴史の中で、Ask to BuyやUpgrade / Downgrade、お試しオファーなどの多くの仕組みが追加され、やれることが格段に増えました。
アプリ内課金をサポートするための仕組みも、Store Kit 2による実装方法の変更やアプリ内での返金機能をはじめ、Server NotificationsやTransaction Receiptのフォーマットの変更など、新しいものが次々にリリースされたり、StoreKit Testingによって自動テストが出来たりSandbox環境がアップデートされたりなど、課金のテストにまつわる状況も大きく変わりました。
本トークでは、5分間でIn-App Purchaseの激動の歴史を爆速で振り返っていきます。
iOSにおけるIn-App Purchase(アプリ内課金)はiOS 3から利用可能であり、その歴史は10年以上に及びます。
この長い歴史の中で、Ask to BuyやUpgrade / Downgrade、お試しオファーなどの多くの仕組みが追加され、やれることが格段に増えました。
アプリ内課金をサポートするための仕組みも、Store Kit 2による実装方法の変更やアプリ内での返金機能をはじめ、Server NotificationsやTransaction Receiptのフォーマットの変更など、新しいものが次々にリリースされたり、StoreKit Testingによって自動テストが出来たりSandbox環境がアップデートされたりなど、課金のテストにまつわる状況も大きく変わりました。
本トークでは、20分間でIn-App Purchaseの激動の歴史をじっくり振り返っていきます。
Xcodeの複数バージョンを使い分けようとしたらDockに同じアイコンが並んでどれがどうだかもうわからない!
_人人人人人人_
> もう嫌だ! <
 ̄Y^Y^Y^Y^Y ̄
アプリのアイコンを自由に変更できるmacOSの素晴らしい仕組みを使って、俺得なCLIツールをSwiftで開発しました。
しかもアイコンのテンプレートはみんな大好きSwiftUIで作れるようにしました。
Xcodeの複数バージョンを使い分けようとしたらDockに同じアイコンが並んでどれがどうだかもうわからない!
_人人人人人人_
> もう嫌だ! <
 ̄Y^Y^Y^Y^Y ̄
アプリのアイコンを自由に変更できるmacOSの素晴らしい仕組みを使って、俺得なCLIツールをSwiftで開発しました。
しかもアイコンのテンプレートはみんな大好きSwiftUIで作れるようにしました。
SwiftUIが発表されてからすでに3年が経ちました。
しかしいまだに開発現場から採用が難しいという声が聞こえてきます。
UIKitとSwiftUIの併用も可能ですが、実際に採り入れてみるとさまざまな問題が発生しました。
このセッションではそれらの問題を解決する手法を紹介します。
SwiftUIが発表されてからすでに3年が経ちました。
しかしいまだに開発現場から採用が難しいという声が聞こえてきます。
UIKitとSwiftUIの併用も可能ですが、実際に採り入れてみるとさまざまな問題が発生しました。
このセッションではそれらの問題を解決する手法を紹介します。
近年、Human computer interaction(HCI)の研究分野では機械学習を利用しスマートフォンのインタラクションをより豊かにする研究が多く行われています。
・音声認識を利用しスマホで叩いた物体を認識
・画像認識を利用しApple Pencilの機能を拡張
・イヤホンのセンサを活用した行動認識
これらの研究を応用することで例えば、スマホで欲しい物を叩くだけでECサイトでその物を注文できるようになったり、非接触でモバイル端末の操作ができたりと今までのアプリに無いようなインタラクションを実現できます。本セッションではそのような研究事例を紹介し、実際にCreateML/CoreMLでモデル構築、デモアプリの実装を行います。CreateML/CoreMLや機械学習に興味がある方、既存のアプリにはない面白い機能を実装したい方などに興味を持っていただける内容です。
近年、Human computer interaction(HCI)の研究分野では機械学習を利用しスマートフォンのインタラクションをより豊かにする研究が多く行われています。
・音声認識を利用しスマホで叩いた物体を認識
・画像認識を利用しApple Pencilの機能を拡張
・イヤホンのセンサを活用した行動認識
これらの研究を応用することで例えば、スマホで欲しい物を叩くだけでECサイトでその物を注文できるようになったり、非接触でモバイル端末の操作ができたりと今までのアプリに無いようなインタラクションを実現できます。本セッションではそのような研究事例を紹介し、実際にCreateML/CoreMLで機械学習を使った面白いインタラクションをいくつか実装してみます。
昨年から、iPadのSwift PlaygroundsでiOSアプリの開発ができるようになりました。この際、従来のプロジェクト形式とは異なる「.swiftpm」拡張子のプロジェクト形式が使われるのはご存じでしょうか。実はこの「.swiftpm」は、Xcode 13.2以降で「Swift Playground App」としてXcodeでも作成できるようになっています。
この新しいプロジェクト形式は、どのようなもので、何ができるのでしょうか。従来のプロジェクト形式とは何が違うのでしょうか。
「Swift Playground App」の具体的な情報はあまり公開されていませんが、私が手探りながら調査した知見をご紹介します。
Swift-DocCは、Swiftフレームワークやパッケージのためのドキュメント作成ツールです。Swift-DocCの面白い特徴に、チュートリアルを作成できるという点があります。
このチュートリアルの作成方法の詳細は、今回のパンフレット記事に掲載します。
https://fortee.jp/iosdc-japan-2022/proposal/dfd8c56c-468a-4115-804c-d1ca103eed62
本トークでは、具体的なチュートリアルの作成過程をライブコーディングで紹介します。
パンフレット記事とともに実際のチュートリアルの動きを見ることで、より理解を深められます。
iOSアプリ開発にSwift Package Manager(SwiftPM)を活用するパターンを見かけるようになってきました。アプリ内のモジュール分割をSwift Packageを使って実現するパターンです。
この際、Swift 5.5以前のSwiftPMはビルド時に(SwiftGenなどで)コード生成する、などの処理を記述できませんでした。そのため、Xcodeプロジェクトのビルドスクリプト機能を使う必要がありました。
しかし、Swift 5.6でSwiftPMにプラグイン機能が追加されたことで、Xcodeのビルドスクリプト機能に頼る必要がなくなりました。
本トークでは、SwiftPMのプラグイン機能について解説し、iOSアプリ開発でSwiftPMをより一層活用するためのプラクティスをお話しします。
0.01秒が結果を左右する陸上競技の世界ではタイムはとても大切なものであり、日々の練習でもストップウォッチは欠かせません。
iPhoneにもストップウォッチがありますが、陸上競技の現場では画面上にあるボタンを押すことの難しさが致命的な欠点となり、実用に耐えないのが現状です。
そんな問題を解決するために音量ボタンで制御可能なストップウォッチアプリを作成したところ、App Store Reviewガイドライン違反で公開が停止…
どうすれば物理ボタンを使わずに全力疾走中でも使えるストップウォッチが作れるのか?
ストップウォッチのUXを最大限に高めるために検証した様々な対策を陸上競技歴15年の私が紹介します。
目次(予定)
・なぜ物理ボタンを使ってはいけないのか?
・実際に作ってみた
a.近接センサーを使う
b.加速度センサーを使う
c.音を使う
d.etc
・結果:一番良いインタラクションは?
React NativeやFlutterなどを使ったマルチプラットフォームアプリ開発は、1つの言語でiOSとAndroidの両方を同時に開発できるとても魅力的なアプリ開発の選択肢です。
しかし、UIデザインの視点から見るとそう簡単にはいきません。それぞれのOSはそれぞれのUIガイドラインを持っており、開発者はそれに沿ったデザインの実装が求められます。
本セッションでは、マルチプラットフォーム開発におけるUIデザインの違いを踏まえた各OSでの実装のポイントや落とし穴をいくつかご紹介します。
目次(予定)
Human Interface Guidelinesとマテリアルデザイン
デザイン実装におけるポイント・落とし穴
・そのアイコン、マテリアルデザイン?
・3ボタンナビゲーションを忘れるな
・ここまで違うの?DateTimePicker
・それぞれのOSで効果的な通知を!
WWDC2021にて簡潔かつ堅牢に並行処理を記述できるSwift Concurrencyが発表されました。
WWDCのセッションを通してSwift Concurrencyを学ぶことができますが、実世界の問題に対してどうこの技術が使えるかという文献はまだ少ないのではないでしょうか。
このセッションではSwift Concurrencyを用いて実装された実プロダクトで利用されているLoggerの実装を基に、どのように技術を適応したかを紹介します。
また、Swift Concurrencyに触れたことがない人でも理解できるように適宜Swift Concurrencyについての説明も行う予定です。
なお引用する予定のコードはすべてOSSとして公開中しています。
https://github.com/k-kohey/Parchment-swift
DAppとはビジネスロジックやストレージが分散されたアプリケーションです。
ブロックチェーンを使って実装されることが多く、DAppには下記のような利点があります。
このDAppをiOSアプリで構築する際には下記の点が障壁となります。
このセッションではこの障壁を減らすべく、iOSエンジニアの視点からEthereumを使ったDAppの開発に必要な知識と作り方を紹介します。
なお、DAppを作ったことがない人・業務でブロックチェーンを使っていない人を聞き手に想定しています。
2年連続で完全オンライン開催となっていたWWDCですが、今年は1日限定のスペシャルイベントがApple Parkで開催されることになりました。
本LTでは、そんなスペシャルイベントに奇跡的に当選した私が、新卒で海外未経験、初WWDCというフレッシュな目線に立ちながらWWDC22に現地参加したことで見られたもの、得られたものを(NDAに抵触しない範囲で)紹介します。
目次(予定)
・コロナ禍における海外渡航で必要だった社内手続き
・Developer Centerではどんな経験ができたのか
・基調講演ライブビューイング中の現地での様子
・Apple Parkで出会った人たちとコミュニケーションをとってわかったこと
・スペシャルイベントにはまだ続きが…? ”so much more…”の正体
・WWDC22が僕をどう変えたか
タクシーアプリ「GO」は地図をベースとしたアプリです。地図には Google Maps SDK が利用されています。
Google Maps SDK で提供される機能を駆使して、さまざまな情報を地図上で表現しています。
その実装は難しいこともあり、あらゆる工夫を凝らして実現されているものもあります。
「GO」での実例を元に、実装上のハマりポイントや苦労して実現したところ、開発時に遭遇した不思議な現象などを紹介します。
・地図上を走るタクシーの動態表示
・近くの道路に自動的に引き込ませる機能
・ルートのグラデーション表示
・タクシーを配車できないエリアを明示する
・地図の中心点を変えずに、複数の地点が収まる形にズームレベルを調整する
・地図のパフォーマンスを下げて省電力で動作させる
・カラースキームで地図の雰囲気を変える
・Google Maps における緯度経度の不思議
etc..
・プロダクトオーナー「こういう画面を実現したい!」
・エンジニア「できます。。。」
・エンジニア(心の声:HIGに違反しているんだよなー)
・エンジニア(心の声:これ全部満たすと実装コスト跳ね上がるんだよなー)
・エンジニア(心の声:保守性もさがるしなー)
・エンジニア(心の声:でも、言ってもしょうがないし、やるか)
これを実現したプロダクトは、プロダクトオーナーが望む結果は得られていますが、HIGや、実装コスト、保守性を考慮した仕様になっていません。
あるべきとしては、実現したい目的を共に理解し、その上で、HIG、実装難度、保守性を考慮した調整を行った上での実装仕様を、エンジニアの方と一緒に決めていきたいという話をしたいと思います。
abceedアプリにおけるiPad対応の経緯と現在の方針について詳らかにします。
abceedは学習アプリとしてtoB向けにも展開していますので通常よりもiPadユーザーの割合が多く、広い画面で気持ちよく学習できるようデザインの最適化を積極的に行っています。
今回は私からアダプティブレイアウトのひとつのやり方としていろいろなトピックを共有し、みなさんのなにか議論のきっかけとなれば嬉しいと思っています!
以下のようなことを話す予定です。
チームリーダーになってしまって困ってしまった開発者はいませんか?元々リーダーシップの訓練も受けてないし経験もないのに任命されてしまって困ったことはないですか?
ここでは、(クセのある)開発者と長年仕事をしてきたプロジェクトマネージャーが経験に基づいて、これだけは最低限実行していけばリーダーとしてチームを回せる以下の5ヵ条を紹介します!
・チームビルディング
・役割分担
・デイリーのポイント
・振り返り
・心が折れないために