採択
2019/09/06 16:10〜
Track A
iOSDCルーキーズLT(5分)

日本のサマータイムに苦しめられた話

the_uhooi uhooi

みなさんは以下の4日が何の日かご存知でしょうか?
・1948年5月2日
・1949年4月3日
・1950年5月7日
・1951年5月6日

正解は「日本におけるサマータイムの開始日」です。

実は日本でも1948〜1951年の4シーズンのみ、サマータイムが実施されていたことがあります。
Appleは日本のサマータイムを忠実に再現しており、タイムゾーンをJST(日本標準時)にすることで確認できます。

実際の業務で、サマータイムの開始日の文字列が日付型に変換できず、アプリが強制終了することがありました。
原因の追求とサマータイムの仕組みの調査に苦戦したので、本セッションではそのときのできごとを実際に対応した時間軸に沿って話します。
iOSのバージョンによって挙動が異なる点も苦しめられた一つです。

※本セッションではObjective-Cのコードのみ扱います。ただし、Swiftのみ扱っている方でも理解しやすい内容となっています。

【アジェンダ】
・日本のサマータイムについて
・サマータイムによる不具合の内容
・不具合の調査結果
・対応策の検討と、実際に対応した方法

【想定する聞き手】
・日本にサマータイムが導入されていたことを知らない人
・iOSアプリ開発でサマータイムを考慮したことがない人

【ゴール】
・日本で導入されていたサマータイムの境界日時を知り、取り扱いに気をつける日時だと認識する
・iOSにおける日本のサマータイムの実装を知る

「キング・クリムゾン…1時間もの時間が消し飛び、この世には「サマータイムが発生した」という「結果」だけが残るッ!!」

採択
2019/09/06 16:15〜
Track A
iOSDCルーキーズLT(5分)

Property Delegatesがもたらす新しいSwiftプログラミング

darquro darquro

Swift 5のiOS13から使用できる機能の一つにProperty Delegates(SE-0258)というものがあります。
SwiftUIでも@StateなどすでにPropety Delegatesで実装されたものもあり、目にした方もいらっしゃると思います。

Property Delegatesはとてもユニークな機能で、これまで書いていたボイラープレートを解消できたり、アーキテクチャやコンポーネント設計を考える上でも、重要な機能の一つとなってくるのではないでしょうか?

この発表ではProperty Delegatesとはどのようなものなのかを紹介するとともに、
どのような課題を解決するのか例を踏まえて紹介します。

概要
Property Delegatesとは
実装例の紹介(State、User Defaults、Validation)
Swiftプログラミングにおける継承、抽象化、関心の分離などのこれまでの考え方などを踏まえたProperty Delegatesの役割の考察

採択
2019/09/06 16:20〜
Track A
iOSDCルーキーズLT(5分)

LLDBデバッガで不具合の原因を特定して開発速度を上げよう

Qoo_Rus クウルス

アプリ開発の経験が無く、プログラミングそのものの経験も浅い、そんな初心者の困り事の一つは、不具合の原因を特定するのに多くの時間を費やしてしまうこと。
原因特定スピードを上げるにはLLDBデバッガが有効です。
Xcode10.2から登場したvコマンドについて

  • vコマンドでわかること
  • vコマンドの操作手順
  • poコマンドとの違い
    をお話します。
    LLDBデバッガを活用した経験があまりない方や、poコマンドを普段使っていてvコマンドを使ったことがない方向けです。
採択
2019/09/06 16:25〜
Track A
iOSDCルーキーズLT(5分)

Core MLで実現する爆速のARサイズ計測

kokoheia Kohei Arai

iOS12から搭載されたAR Measureアプリは、ARKitの精度を証明するとともに、現実のものを何でもスマホで測ることができるという世界を実現しました。しかし、AR Measureの操作には慣れが必要だったり、自分でスマホを持った状態で動き回らなくてはいけないという課題が存在します。そんな課題をCore ML、すなわち「機械学習」を使って解決することができます。例えばフリマアプリなどで服を売りたい時、服の着丈、身幅、肩幅、袖丈などを載せたいと思う人がいると思います。このようにあらかじめ測定したい場所・指標が決まっている場合、機械学習でそれらを測るために必要な点群の位置を推定することができます。点群の位置さえ推定できれば、ユーザーがわざわざARで測らなくても、平面認識と深度推定によって自動的に現実物のサイズを得ることができます。つまり、機械学習で「どこを測るか」を決めて、ARで「それが現実世界でどのくらいの長さなのか」を決めます。今回はTシャツを例に、その着丈、身幅、肩幅、袖丈をARKitとCore MLを使って一瞬でサイズ測定するプロトタイプをお見せします。今回のプロトタイプを応用すれば、インテリアや人の身長など、様々なものを一瞬で測ることができるようになります。この発表では、機械学習によっていかにARのサイズ計測が簡単かつ速くなるか、というお話と、それによって実現できた精度とその改善方法、その過程で使用したモデルなど技術的な知見を共有します!

採択
2019/09/06 16:30〜
Track A
iOSDCルーキーズLT(5分)

1ヶ月半でプッシュ通知許諾率を17%から40%にあげた話

sky_83325 akutsu

マーケチームから来る「あくつ〜。プッシュ通知許諾率あげてくれないとリテンション施策打てないよ〜」という声。

平均30%と言われる承諾率だが、何故か僕たちのアプリは17%・・。

プッシュ通知承諾パネルを表示するタイミングは、熟考された上に以下の2つのタイミング。

  • お気に入りにアイテムを追加した時(新しくお気に入り商品が投稿された事を通知するため)
  • 商品の購入が完了し、取引が始まった時(取引のリマインドのための通知を送りたいため)

何が悪いのかさっぱりでしたが、意外なことで解決しました。
ある1つのことをしただけで、プッシュ通知許諾率が全体平均17%から40%にあがったワケとは!?
拘りの強いiOSエンジニア(デザイナー)が陥りやすい罠についてサクッと話します。

採択
2019/09/06 16:35〜
Track A
iOSDCルーキーズLT(5分)

完全に同じ開発環境を素早く用意できる(もしくはできない)技術

Solti Hiroyuki Aoki

開発環境の構築って面倒ですよね。
Xcodeのインストールは時間がかかるし、その他いろんなツールに関して手順書を用意しておいても、ちょっと違うバージョンがうっかり入っちゃうとかよくあります。

このLTでは、毎月数十台のMacをセットアップし続けてきた経験から、Appleの提供する標準機能だけで全く同じ構成のmacOS環境を準備するために行ってきたいくつかの方法と、それぞれの特徴についてお話しします。
また、Sierra -> High Sierra -> Mojaveと毎年バージョンアップされるに伴って利用できる技術が変わっており、現在進行形で困っていることについても話します。

採択
2019/09/06 16:55〜
Track A
iOSDCルーキーズLT(5分)

もし文系卒の女子エンジニアが 5年もののiOSアプリにユニットテストを導入しようとしたら

Ni5_21maimai Matsui Mai

登場人物
文系卒の女子エンジニア
・エンジニア歴=社会人歴のiOSエンジニア
・一部機能追加くらいはSwiftで開発できるようになった
・テストは業務で全く書いたこと無し

5年もののiOSアプリ
・2013年リリースで、リリース当時のコードも現役でバリバリ稼働中
・リリース当時はフルObjective-C、現在は一部Swift化
・テストコードは1行も無し

このLTではテストを書いたことないエンジニアが、年季の入ったアプリにユニットテストを導入するまでの格闘をテスト初心者視点から語ります。

まだテストを書いたことがない方、うちのアプリはレガシーすぎてテストなんて書けないと思っている方が、
テストを書いてみよう!と思ってくれることを目標としています。

採択
2019/09/06 16:55〜
Track B
iOSDCルーキーズLT(5分)

簡単なアプリを作れるようになった!からその先に進むために

66nylon_y ろく

入門書を読み終わり、簡単なアプリが作れるようになった!
でもこの後はどうしたらいい?とりあえずアプリを作ったらいいの?

こんなことを思った時期が少なくとも私にはありました
コードをたくさん書くこともとても重要ですが、iOSアプリ開発の世界の広げ方はこれだけではないようです

Swift上級者のコードを覗く、設計について考えてみる、技術書典で技術書を買って読んでみる、有名なライブラリやツールを導入して使ってみる、レビューをもらう、勉強会に参加する、勉強会運営にJOINしてみる、カンファレンスにスタッフとして参加してみる、などなど…

この一年間でSwift初級から中級くらいになるために私がやってきたことや、そこからどのような知見が得られたのかを素直に紹介していきたいと思います
iOSアプリ開発の世界にJOINしたばかりの方々の世界が広がると嬉しいです!

採択
2019/09/06 17:00〜
Track A
iOSDCルーキーズLT(5分)

AR Quick Lookを家具ECサイトに導入した話

nesskazu NESS

iOS12からAR Quick Look機能が搭載されました。
AR Quick LookはUSDZファイルを設置するだけでSafari等のアプリで3DモデルをAR表示することが出来ます。
ハードウェアやARKitの進化によりARの体験も確実に向上しています。
USDZファイルをサイトに設置することでその恩恵を受けつつユーザー体験やコンバージョンを向上させましょう。
このトークでは、家具ECサイトに導入した事例を元にAR Quick Lookの概要、3Dモデリング、Tips、効果等を紹介します。

採択
2019/09/06 17:00〜
Track B
iOSDCルーキーズLT(5分)

tvOS 13にちょっと注目してみる

redryerye redryerye

WWDC19、一番始めの発表はtvOS 13でした。
マルチユーザ やコントローラーの対応で一見要点をおさえた気になりがちですが、待ってください。

TVServicesを含むフレームワークのアップデートにより、tvOS 13では、従来に比べてより充実したユーザエクスペリエンスを実装することが求められています。

このセッションでは、以下のような項目でtvOS 13の新たな機能の勘所をおさえ、より”immersive”な体験の実装手段をご紹介します。

  • ストリーミングデバイス(Apple TV)の動向
  • TVServices frameworkで何が変わったのか( ex. Top Shelf extension, Carousel , etc.)
  • tvOS 13 でのUXのベストプラクティスとは
採択
2019/09/06 17:05〜
Track A
iOSDCルーキーズLT(5分)

個人開発のアプリが輝くために

ahiru_starrr ahiru_starrr

AppStoreを見渡すと、数え切れないほどの膨大な数のアプリが存在する。
しかしながら私たちがよく使うアプリというのはその中のほんの一部に限らている。例えば、Twitter、Instagramなど、ほとんどが大企業の開発したものだ。

それでは個人デベロッパーが開発したアプリが陽の光を浴びることはないのだろうか?

このセッションでは私が個人開発したアプリが100万DLされるまでの取り組みや改善などを中心に、プロモーションにお金を費やすことのできない個人開発のアプリをより多くの人に利用してもらうための手法やアイディアについてお伝えします。
あなたが作ったアプリをもっと多くの人たちに利用してもらい開発へのモチベーションを高めていきましょう!

  • AppStore内の検索ロジック
  • 今日のAppの仕組み
  • 効果的なASO
  • ランキングロジックの考察
  • WWDC - App Store Labで得た知見
採択
2019/09/06 17:05〜
Track B
iOSDCルーキーズLT(5分)

iOSエンジニアでもできるIoTガジェット作成、基板発注もう何も怖くない

takoikatakotako Jumpei Ono

iOSエンジニアなら一度は憧れるスマホ連携IoTガジェット。
iOSとの連携が簡単なマイコンや、簡単に基板を設計、発注する方法をご紹介します。
自分だけのオリジナルIoTガジェットを作る楽しみが広がると嬉しいです!

採択
2019/09/06 17:10〜
Track A
iOSDCルーキーズLT(5分)

GitLabRunnerで始める自前CI環境

ikichiemon i.terasaka

みなさんCI環境はどうされていますか?

最近ではBitriseを使う方が多くなってきていますね!

弊社ではコード管理をGitLabで行なっているため、
GitLabRunnerをiMacで動かしてCI環境を構築しています。

・CIサービス使いたいけどお金かかるから...
・弊社はGitLabじゃないけどBamboo使ってRunner回してる!

などといった方に参考となるお話をさせていただきたいです。

・GitLabRunnerでどんな風にCIを回しているのか
 ・マージリクエストを出したらテストが回る
 ・ボタンポチで環境ごとにDeployGate配信
 ・Releaseタスクではappstoreconnectへのアップロードを自動化
 など
・どういう設定しているか、.gitlab-ci.ymlを一部公開
・自前CIのつらみ

採択
2019/09/06 17:10〜
Track B
iOSDCルーキーズLT(5分)

CallKitを実装してはまったところをお話します

k191k アマゾネスいけばた

EightでiOSアプリを開発しているアマゾネスです。
iOS10から公開されたCallKit。自分のアプリのDBを使用し、着信電話表示を実現するためのAPIです。
Eightは名刺情報の管理をするアプリということもあり、CallKitとの相性は抜群。
実装しようという運びになったのですが、実装者はなぜEightに入ってして二ヶ月目の私。
「データの扱いどうやればいいの泣」「設定画面のぐるぐるが消えないんだけど泣」「突然の機能停止泣」
等、苦労したところをお話させていただこうと思います。

採択
2019/09/06 17:15〜
Track A
iOSDCルーキーズLT(5分)

Swiftでつくるファミコンエミュレータのススメ

zetta1985 thara

低レイヤーを触ってみたいと思いつつも今まで手が出すことができていなかった私が、今現在Swiftでファミコンエミュレータを作っています(現在進行形)
このトークでは、Swiftを使ってファミコンエミュレータを開発することの楽しさをお伝えします。
ファミコンエミュレータ開発の第一歩がなかなか踏み出せない方の背中を押すことができたら幸いです。

採択
2019/09/06 17:15〜
Track B
iOSDCルーキーズLT(5分)

値オブジェクトへのCodable対応

maguhiro maguhiro

「API通信のデータをJSONで受け取ってEntityに変換する」、みなさんもそういったご経験はあるかと思います。
Swift4でCodableが登場してから、このようなJSONデータをより簡単に変換できるようになりました。

一方で、例えばEntityにユーザーIDや写真IDといった一意に識別する値を単純なInt型やString型で定義してしまうと、引数にユーザーIDを渡すべき関数で誤って同じ型である写真IDを渡してしまう恐れがあります。
ドメイン駆動設計(DDD)における値オブジェクト(Value Object)という戦術的設計を導入し、それぞれ異なる型として定義することで誤った代入を防ぐことができます。

しかしながら、Codableと値オブジェクトの相性は悪く、対応するには工夫が必要となります。
このトークでは、簡単なJSONデータを用いて値オブジェクトを含むEntityへのCodable対応についてお話します。

■アジェンダ
・単純な型を利用した場合のCodable対応
・単純な型を利用した場合の課題
・値オブジェクトとは?
・値オブジェクトとCodableの課題
・値オブジェクトへのCodable対応方法