弊社では様々な自動化の仕組みに取り組んでいますが、その中でiOS/Androidのライブラリ、特にAPIクライアントについて、セルフサービスで生成する仕組みについて話したいと思います。
ほぼ全てのアプリで欠かせないのがRESTを主としたAPIサーバーと対話するネットワーキングの実装だと思いますが、APIごとに毎回同じような開発をするのは非効率的です。そこで目をつけたのがOpenAPIでした。
OpenAPIとはAPI設計を行う仕様のことですが、このトークでは、OpenAPIを元にしたコード自動生成からデプロイまでを開発者が1行もコードを書かずに生成できるようにした過程を紹介します。
また、中〜大規模チームでのOpenAPI導入の背景やメリットに触れると共に、開発者の要望に応じて、生成されるコードをどうカスタマイズしたかなどもお話ししようと思います。
iOSアプリと一緒に、Androidアプリを作成することはよくあります。
2つのアプリを同時に開発すると問題がよく起きます。「iOSとAndroidで動きが違う」と。
実装するエンジニアの認識のズレ、言語仕様の違い、例えどれだけ念入りにやったとしてもこの問題はいつか必ず発生することでしょう。
そのような問題をKMM(Kotlin Multiplatform Mobile)を用いて解決します。
アプリのビジネスロジックをコードレベルから共通化し、OS間での差異が起こらないような開発ができる上に、ビジネスロジック部分の記述はKMM一つで済むようになります。
このセッションでは、基本的なKMMの概念の説明から、実際にiOSのプロジェクトへのKMM導入し動作させるまでを、弊社での取り組みを交えて解説いたします。
ビットキーは「テクノロジーの力であらゆるものを安全で、便利で、気持ちよく繋げる」をミッションに掲げるスタートアップ企業です。
自社プラットフォームからハードウェア、ソフトウェアまで開発している弊社ですが、
本セッションではReact Native製iOSアプリworkhubを取り上げます。
workhubは"働く空間において人と仕事の間のあらゆるものを繋げ、新しい働き方に即した体験を提供する"アプリです。
スタートアップにおいて求められる"機能開発のスピード感"と、決して無視できない"保守性の担保"をいかに両立するか?をテーマに、
1年半の間取り組んだNative化をご紹介します。
・スタートアップにおけるソフトウェア開発に求められるもの
・なぜReact NativeアプリをNative化するに至ったか
・Native化の方法論
・Native化により得られたもの / 難しかった点
タクシー配車アプリ「GO」では、UIKit ベースで実装しており、ViewController の数は300近くあります。
2019年の WWDC で発表された SwiftUI の機能を徐々に活用していき、2021年に iOS 12 のサポートを終了したタイミングでプロダクションに SwiftUI で作った画面を展開していきました。
本トークでは、大規模なプロジェクトにおいて、どのように SwiftUI を導入し活用しているかをご紹介します。
・SwiftUI の導入
・UIKit ベースのプロジェクトでの SwiftUI 利用
・Xcode Previews の活用
・SwiftUI 利用したことで得られたメリット
・ここが辛いよ SwiftUI
・SwiftUI 利用のこれから
現在swift-evolutionでは大量のproposalと共に長年Swift上で不便だった正規表現関連の実装を刷新する流れが続いています。実際にWWDC 22でもSwift 5.7のリリースとともにRegexBuilderと正規表現リテラルが導入されることが発表されています。
このトークではNSRegularExpressionやNSStringにおける課題がどのように解決されているかをswift-evolutionの各proposalをもとに振り返り、iOSやサーバーサイドでのアプリケーションや文字列処理が生きてくる書き捨てのスクリプト(例えばログ解析など)でどれぐらい実用的に利用できるのかをベンチマーク結果を添えて検証していきます。
特に普段Rubyなどで書くことが多い書き捨てスクリプトを置き換えるポテンシャルがあるのかどうかに個人的に興味があります!!いかに!?
このトークを通して、ドット絵を描くアプリを作ってみましょう。
ドット絵は、イメージの最小単位であるピクセルを塗ることで描くことが出来ます。
CoreGraphicsの世界を通してピクセルを見ることで、普段意識しないイメージがどのようにしてメモリ内に格納されているかを知ることもできます。
また、CGContextを直接操作することでCGContextに存在しない描画APIの開発もしてみましょう!
このトークはドット絵エディタEditormodeの開発者がお送りします。
https://apple.co/3GJyqRF
本トークでは、既存サブスクリプション商品にアップグレード・ダウングレードを追加する方法についてご説明します。
具体的には、
アップグレード・ダウングレード・クロスグレードについて
上記を公式ドキュメントを織り交ぜながらご説明します
運用しているサブスクリプションにアップグレード・ダウングレードを追加するには
導入しづらい運用ケースとは
を予定しております。
13:00-13:20 Greater Tokyo Innovation Ecosystem (GTIE)の紹介 理工学術院 教授 朝日透
13:20-13:30 Urth CEO 田中大貴
13:30-13:40 amulapo CEO 田中克明
13:40-13:50 レイワセダ CEO 畠山祥
13:50-14:05 休憩
14:05-14:15 Ubiq CEO 日野真幸
14:15-14:25 StatHack CEO 松葉亮人
14:25-14:35 EAGLYS CSO 丸山祐丞
13:00-13:20 Greater Tokyo Innovation Ecosystem (GTIE)の紹介 理工学術院 教授 朝日透
13:20-13:30 Urth CEO 田中大貴
13:30-13:40 amulapo CEO 田中克明
13:40-13:50 レイワセダ CEO 畠山祥
13:50-14:05 休憩
14:05-14:15 Ubiq CEO 日野真幸
14:15-14:25 StatHack CEO 松葉亮人
14:25-14:35 EAGLYS CSO 丸山祐丞
13:00-13:20 Greater Tokyo Innovation Ecosystem (GTIE)の紹介 理工学術院 教授 朝日透
13:20-13:30 Urth CEO 田中大貴
13:30-13:40 amulapo CEO 田中克明
13:40-13:50 レイワセダ CEO 畠山祥
13:50-14:05 休憩
14:05-14:15 Ubiq CEO 日野真幸
14:15-14:25 StatHack CEO 松葉亮人
14:25-14:35 EAGLYS CSO 丸山祐丞
SwiftUIは細かく指定しない限り簡潔にレイアウトを記述できることも多い一方で、
Auto Layoutでは簡単にできていたことが意外と難しかったり、そもそも実現が困難なケースもあります。
このトークでは、VStackやHStackで単にleadingやtopなどを指定するだけでは
実現が難しいレイアウトを攻略するために有効なAlignment Guideについて、次のステップで学ぶことができます。
想定する対象者
リアクティブプログラミングは非同期プログラミングの手段として使われることがありますが、本来は非同期データストリームをうまく扱うためのものです。Swift Concurrencyが導入された今こそ、Combineなどの具体的なライブラリから一歩距離を置いて、リアクティブプログラミングそのものを学習しておきましょう。
このトークでは、リアクティブプログラミングがデータフローの記述方式であるということを基本からおさらいします。リアクティブプログラミングを図的に理解でき、UIや通信のイベント配送設計も自在にできるようになります。
非同期はリアクティブプログラミングの外の世界と接続するときや内部実装には必要です。両者のポジションの違いを整理し、Concurrencyの機能をそのまま使うべきところと、リアクティブプログラミングでデータフローを記述すべきところが、よく分かるように説明します。
Voicyでは日々パーソナリティさんという音声投稿者による音声配信がされております。
iOSにおいて音声配信をする上で欠かせないAVFAudioを利用しております。
AVFAudioには多種多様な機能がありますが、実際サービスを扱っていく上で一体どんなことに注意し何を必要があるのか?がわからないことが多いです。
本トークでは音声配信をiOSで実装する上でどのように考え実装するべきなのかを全てと裏側という形でお伝えしたいと思います
タクシーアプリ「GO」は地図をベースとしたアプリです。地図には Google Maps SDK が利用されています。
Google Maps SDK で提供される機能を駆使して、さまざまな情報を地図上で表現しています。
その実装は難しいこともあり、あらゆる工夫を凝らして実現されているものもあります。
「GO」での実例を元に、実装上のハマりポイントや苦労して実現したところ、開発時に遭遇した不思議な現象などを紹介します。
・地図上を走るタクシーの動態表示
・近くの道路に自動的に引き込ませる機能
・ルートのグラデーション表示
・タクシーを配車できないエリアを明示する
・地図の中心点を変えずに、複数の地点が収まる形にズームレベルを調整する
・地図のパフォーマンスを下げて省電力で動作させる
・カラースキームで地図の雰囲気を変える
・Google Maps における緯度経度の不思議
etc..
13:00-13:20 Greater Tokyo Innovation Ecosystem (GTIE)の紹介 理工学術院 教授 朝日透
13:20-13:30 Urth CEO 田中大貴
13:30-13:40 amulapo CEO 田中克明
13:40-13:50 レイワセダ CEO 畠山祥
13:50-14:05 休憩
14:05-14:15 Ubiq CEO 日野真幸
14:15-14:25 StatHack CEO 松葉亮人
14:25-14:35 EAGLYS CSO 丸山祐丞
NFC とは駅・空港での自動改札機やお店での電子マネー決済、社員証や学生証をかざした入退出管理など、日常でよく見かけるアレを叶える技術です。
iPhone に搭載されている NFC を私たちの App で使うためには Core NFC を用います。これは iOS 11 から利用可能になり、iOS 13 のタイミングで大きくアップデートされました。昨今の情勢から非接触技術が注目されたり、eKYC に利用できたりと、現在進行形でさまざまな App で利用が広がっています。
私は iOS 13 のときから3年間、この Core NFC を使った App の個人開発を続け、関連する OSS も公開してきました。それによって得た iOS 固有の NFC 利用まわりの知見や、これから Swift Concurrency + Core NFC を活用する App を開発する際の流れ・例を紹介します。
SwiftUIが発表されてからすでに3年が経ちました。
しかしいまだに開発現場から採用が難しいという声が聞こえてきます。
UIKitとSwiftUIの併用も可能ですが、実際に採り入れてみるとさまざまな問題が発生しました。
このセッションではそれらの問題を解決する手法を紹介します。
皆さん多かれ少なかれ正規表現を使ったことがあると思います。
コマンドラインツールで、エディタの検索で、そしてNSRegularExpressionで。
単純な文字列検索に比べ、正規表現はとても表現力豊かでパワフルな検索を可能にします。
Swift Evolutionにも正規表現に関する多くのproposalがあり、Regex型やRegexリテラルなどが正式に実装される日も近いでしょう。
しかしこの正規表現とは一体何者なのでしょうか?
どんなものが表現でき、どんなものが表現できないのでしょうか?
多くのメタ文字や演算子記号があるためとても複雑なものと思われがちですが、実際にはたった3つの文字列の演算ルールだけで構成されています。
本トークでは状態遷移図の一種であるオートマトンからスタートして正規表現の原理を紐解きその限界を探っていきます。
13:00-13:20 Greater Tokyo Innovation Ecosystem (GTIE)の紹介 理工学術院 教授 朝日透
13:20-13:30 Urth CEO 田中大貴
13:30-13:40 amulapo CEO 田中克明
13:40-13:50 レイワセダ CEO 畠山祥
13:50-14:05 休憩
14:05-14:15 Ubiq CEO 日野真幸
14:15-14:25 StatHack CEO 松葉亮人
14:25-14:35 EAGLYS CSO 丸山祐丞
13:00-13:20 Greater Tokyo Innovation Ecosystem (GTIE)の紹介 理工学術院 教授 朝日透
13:20-13:30 Urth CEO 田中大貴
13:30-13:40 amulapo CEO 田中克明
13:40-13:50 レイワセダ CEO 畠山祥
13:50-14:05 休憩
14:05-14:15 Ubiq CEO 日野真幸
14:15-14:25 StatHack CEO 松葉亮人
14:25-14:35 EAGLYS CSO 丸山祐丞