iOSDC Japan 2020 プロポーザル一覧

他イベントOK レギュラートーク(40分)

「iOSエンジニアだし、Androidアプリも作れるでしょ?」

あかつき akatsuki174
もしもこんなことを言われたら「何言ってんだ、できねぇよ」と言うと思います。
しかしながら双方似ている部分があり、とっつきやすいのも事実です。iOSエンジニアの皆さん、Androidアプリも作ってみたくありませんか?

このトークでは、私がiOSエンジニアからAndroidエンジニアに転身した経験を活かし、iOSエンジニアにとってわかりやすい形でAndroidアプリ開発について説明してみたいと思います。もちろん40分ですべて熟知してもらうのは難しいです。なので、Androidアプリを作る上で要になる部分の解説や、躓いたときに自力で原因を探るためのデバッグ手法の説明に重点を置き、自走できる状態へ導きたいと思います。

目次

・Swiftと比較しつつKotlinを学ぼう
・基礎の基礎、Activity、Fragmentを理解しよう
・ConstraintLayoutでUIが組めるようになろう
・よく使うListViewとRecyclerViewを知ろう
・最低限のデバッグができるようになろう
3
他イベントOK LT(5分)

xcresulttoolコメントを用いて.xcresultファイルの中身取得について

林浩智 chichilam86
Xcode11から.xcresultの結果リソース(スクリンショット画像ファイルなど)が1つのファイルとして集約されるようになりました。
昔はそれぞれの結果リソースが独立したファイルとして出力されていて、.xcresultを開けば簡単に結果リソースを確認できましたが、
Xcode11からすべての結果リソースがDataフォルダーに集約され、バイナリフォーマットのファイルになってしまい、そのまま中身を確認できません。
ここはxcresulttoolコマンドの登場です。
xcresulttoolコマンドを利用すれば、Xcode経由せずに、.xcresultの中身を解析することが可能です。

今回は、xcresulttoolコマンドを利用して、UIテストで撮ったスクリンショットを.xcresultから抽出する例を通して、
xcresulttoolコマンドの使い方を紹介します。
・.xcresultをjsonフォーマットに変換したら注目すべきポイント
・.xcresultのツリー構造を解析して、取得したいリソースにたどり着く手順

xcresulttoolコマンドの使い方を身につけて、テスト結果の解析の自由度を上げましょう!
2
他イベントOK LT(5分)

ダークモード対応とAutoLayoutアニメーションと私

Abebe
「iOS13のダークモード対応?Asset CatalogのColor Setが使えれば、そんなに手間掛からないでしょ。
…………そんなふうに考えていた時期が俺にもありました。」
しかし、私が仕事で関わったアプリには1つ落とし穴がありました。
それは入力状態の変化に沿って動くUIアニメーションをAutoLayoutで制御していた事です。

このLTでは
- AutoLayoutアニメーションとダークモードが組み合わさると何が落とし穴なのか
- 実際の対応方法(traitCollectionDidChangeやupdateViewConstraintsを用いて制約を再設定)
を簡単なサンプルアプリを交えて共有できればと思います。
2
他イベントOK LT(5分)

iOSアプリ開発でTDD!

ゆちろう yuchiro22
ソフトウェア開発の分野でTDD(Test-Driven Development)を実践しているサービスも増えているのではないでしょうか。
iOSアプリ開発においても、テストコードの重要性は認識されるようになっています。

ただ、私自身の経験として、iOSアプリ開発のテストは、テストアプリを配布して目視で変更分を確認するテストのみを行う場合も多かったです。

また、フロントネイティブの開発においては、ビジネスロジックをあまり持たない場合もあり、単体テストや結合テストを書かない、もしくは実装後に書くこともしばしばありました。

更には、仕様変更やアップデートによりテストコードが陳腐化し、動かない前提のテストコードが存在してしまったり、テストコードを書くのをやめてしまったこともありました…。

本トークでは、上記のような、iOSアプリ開発において私自身が経験したテストコードを書く際の懸念点をできるだけ解消しようと考え、TDDで開発を行った際の知見を話したいと思います。

【トークプラン】
- TDDとは
- テストがあると何が良いのか?
- iOSアプリ開発におけるTDD実践法
- メリットとデメリット
2
他イベントOK レギュラートーク(20分)

組織構造の力学を操作して、アプリ開発プロセスを最大化させる

Masato Ishigaki i35_267
アプリ開発における組織力学の話をします。

iOSアプリを構築する過程で、バックエンドAPIとの連携、デザインとの連携など様々なレイヤーとの相互作用が発生します。
そこには必ず人やチームが存在するため、必然的に「組織構造をどうするか」「どういう開発の流れを作っていくか」という組織構造の設計や、その中を流れる開発プロセスを同時に思考していく必要があります
アジャイル型の開発だとしても、各レイヤーの構築スピードが異なるため、結合のタイミングやMVPリリースのタイミングを計ったり、各レイヤー同士がどこまでレビューに介入するべきかなどを設計しないと、生産性のバランス崩れや意思決定の遅延、開発リードタイムにも大幅な影響を与えてしまいます。

ここを解決するためには、個々が対応するのではなく大規模な組織開発になればなるほど、根本的な組織構造から生まれる力学(バリューストリーム)を丁寧に作り上げる必要があります。
今回は、iOSアプリを開発する中で見えてきた、生産性のバランス可視化や意思決定プロセスの構築、開発体制の整備などあらゆる課題を解決するために行った取り組みについて事例を交えながらお話できればと思います。
1
他イベントOK LT(5分)

あなたのアプリ、✨リブランディング✨できますか?

monoqlo monoqlo
リブランディング。

良い響きですね。
時代の流れにあったデザインへのアップデート、ブランド価値向上、ブランドの再定義、などなど、目的は様々ですが、様々なアプリがリブランディングする様子を我々は目にしてきました。

これは、とあるアプリが通ったリブランディングを伴う複数回に及ぶリニューアルのお話。

「色をほとんど全部変えたいんですが…」
「画像もほとんど全部差し替えたいんですが…(サイズも変わるかも…)」
「UIもこんな感じに変更したいんですが…」

想像してください。

目の前には、リブランディングなんて全く想定しておらず無邪気につくられた150以上のStoryboardやxib。
ひとつひとつカスタム色として手動設定された温かみのある色の数々。
Asset Catalogで色管理していたとしても、一括で色置換してくれないXcodeセンパイ。

なぜか重複している画像たち。
余白の違いやサイズ違いで複数管理されている同じような画像の数々。
Asset Catalogで画像管理していたとしても、名前を変更したらもちろん一括で置換してくれないXcodeセンパイ。

このトークでは、どんな工夫をして立ち向かい、どんな点を諦めたのか、そしてどんな結果が得られたのかお話します。

リブランディングに耐えられるアプリをつくりたい方、
これからリブランディングを控えているのに同じような状況で頭を抱えている方、
ぜひお聞きください。
2
レギュラートーク(20分)

テレワーク時代のiOSデバイスマネジメント

Noritaka Kamiya nolili
テレワークの呼びかけが引き続き続いており、自宅などでの作業を続けられている方も多いのではないでしょうか。
Webの開発などではラップトップがあれば完結することも多いですが、iOSアプリの開発では実機でのテストが欠かせません。

開発・テスト用デバイスをどう扱うか?どう管理するか?開発用ネットワークにはどうつなげるのか?
今までは保管庫に入れるだけ、というマネジメントをしていませんでしたか?

このトークではケーススタディを交えながら、分散チームでのiOSデバイスの管理方法やよくあるトラブル、ベストプラクティスなどを紹介します。
4
他イベントOK LT(5分)

静的解析ツールを使ってプログラミング言語を効率よくキャッチアップしよう!

uhooi the_uhooi
静的解析[せいてきかいせき]
意味: コードを実行せずに解析すること

プログラマーウホーイ曰く
「未経験の言語を最も効率よく学ぶ方法は、静的解析ツールを導入することである」

---

みなさんは静的解析ツールを導入していますか?
導入している人は、どのような目的で使っていますか?

「コードを自動できれいにするため」
△間違いではありませんが、毎回自動で修正されると、いつまで経っても正しい文法を覚えません。
(不要なスペースの削除など、自動で行ったほうが効率いいこともあります)

「その言語の文法を覚えるため」
◎静的解析ツールに怒られることで、その言語の正しい文法が強制的に身につきます。

未経験の言語を扱う際にまず行うことは、静的解析ツールの導入、および使い方とルールを覚えることだと私は考えています。
もっというと、導入しなくてもルールを読み込むだけでその言語の勉強になります。

※本トークではSwiftの静的解析ツールである「SwiftLint」を使って説明します。
しかし、それ以外の静的解析ツールやプログラミング言語にも適用できる内容になっています。

【アジェンダ】
・静的解析ツール導入のメリットと目的
・まずはデフォルトの設定でIDEに怒られよう
・次にルールを読み込んで設定ファイルを作ろう
・●既存プロジェクトへ導入する際の注意点
・●CIに組み込むメリット
●は時間があれば話します

まだ静的解析ツールを導入していない人も、この機会に導入してルールを読み込み、プログラミング言語を効率よくキャッチアップしましょう!
3
他イベントOK LT(5分)

手動証明書管理からの卒業 〜fastlane match〜

ぼぶ BOBG1018Vi
iOSエンジニアにおいて,証明書は避けて通れない壁だと考えております

証明書を手動管理していると...
1. 1年に1度,証明書を手動で更新する必要がある
2. 開発メンバーや開発PCを追加する度に,Certificatesを作りProvisioningProfilesを更新する必要がある

上記による課題は何か
1. 手動で更新する時間と手間がかかる.また,ヒューマンエラーが起こる可能性がある
2. オンボーディングに時間がかかってしまう.特にインターン生にとっては,本質的ではない箇所に時間を割く必要がある

今回はこの壁(課題)について,プロダクトへ導入する際の課題・解決方法・導入手順をお話できればと思います
解決手段は,fastalne matchです

年1業務の簡略化や,新規メンバーのオンボーディング負担を軽減してみませんか?
2
他イベントOK レギュラートーク(20分)

スマートホームをもっと身近にHomekit

Sam Akada sam_akada
スマートホームを操作するHomeKitは、大幅に機能強化され、GoogleやAmzonなどのとアライアンスを結成して、各メーカーの機器をスムーズに動作するように相互運用を強化しています。
しかし、Apple HomeKitに対応した機器が少ないのが現状です。
ハードウェアの知識が無くても、スマートホームの機器を作れる方法を紹介します。
実際にPhoneまたはiPadのホームアプリを使って、コントロールするHomeKitアクセサリ機器を作成しましょう!
1
他イベントOK LT(5分)

初心者iOS(Objective-C)エンジニアの小さな奮闘記

log5 log5
iOS開発に用いる言語といえば Swift といわれる昨今、Objective-C が主役のプロジェクトはそれなりに少なくなったかと思います。
一方で、主に歴史が長いプロジェクトにおいては、諸般の事情から未経験ながら Objective-C を書く、なんて状況が少なからず存在するようです。
私もかつてはそのような状況に置かれた一人で、 かつその時はiOS開発初心者でもあったので、 Objective-C を学習する過程ではそこそこ苦労をしました。

今回は私がこれまでに Objective-C のプロジェクトをこなすにあたり、困ったこと、工夫してきたことを少し紹介できればと思います。
Swift が iOS開発のほぼ標準となった今でも、どこかで Objective-C のプロジェクトに悩む方の小さな手助けとなれば幸いです。
2
他イベントOK レギュラートーク(20分)

Swiftで始める静的解析!

まつじ mtj_j
皆さんはSwiftで書かれたソースコードを解析したことがありますか?

SwiftではSwfitLintが静的解析ツールとして有名です。
SwiftLintを導入しているプロジェクトも多いと思います。
しかし、決してSwiftLintだけが静的解析ツールではありません。

Java向けのIDEであるIntelliJはこの静的解析の技術をフルに活用しています。
IntelliJで開発をしたことがある人は、この技術がいかに我々の開発を効率化させるか実感したことだと思います。
様々な静的解析を用いたツールが提案されていますが、その恩恵の多くはJavaなど他の言語を対象にしているものが多く、Swiftを対象にした静的解析ツールはまだまだ少ないです。

この発表ではSwiftのソースコードを解析するSwiftSyntaxを用いて、実際に静的解析ツールを実装し、解説していきます。
静的解析の技術を身に付け、より発展的な静的解析に挑戦してみませんか?
3
他イベントOK LT(5分)

DroidKaigiの公式アプリで始めるiOSアプリのOSSコミッターへの道

遠藤拓弥 entaku_0818
開発者にとって、多くの開発者と同じプロダクト/リポジトリで開発することは特別なことではありません。
iOSアプリ開発者にとっても例外ではありません。
しかし、突然OSSにコントリビュートすることは勇気がいることだと思います。
今回のLTでは私がOSSにコントリビュートした時の経験を通して複数人で開発する楽しさ難しさを通じて学んだことを共有することで、みなさんのOSSコミッターへの一歩に貢献できればと思います。

- 実装するissueの選び方
- GitHub上でのコミュニケーション
- 実装方法
- コミットメントの範囲
- Pull Requestの出し方
- まとめ
4
他イベントOK レギュラートーク(40分)

iOS端末でGANを利用して画像を生成する

だいすけ JackdeS11
機械学習の「画像生成」モデルもモバイルアプリ(iOS)にのせられます。これによりAI画像生成アプリをつくれます。例えばアニメキャラクターを生成したり、自撮り写真を西洋絵画に変換したりできます。
DCGAN、Pix2Pix、CycleGAN、UGATIT、これらはGANという画像生成技術の応用です。このトークでは上記モデルをモバイル用CoreML形式に変換し、iOS端末上で画像を生成する為の方法を紹介します。本番ではスムースに変換するためのTipsを盛り沢山でお話します。GANのコードを完全に理解している必要はありません。勘所をつかめば、TensorFlowやPytorchといったPythonベースのモデルをCoreML形式に変換して、アプリに組み込むことができます。
変換手順
1, トレーニング済みモデルを用意しよう
GitHubに多くの生成モデルが利用しやすいライセンスで公開されています。今回は、GoogleチュートリアルやGitHubのモデルを紹介し変換します。
2, 「Generator」を見つけよう
GANはGenerator(生成する)とDiscriminator(判別する)で構成されており、アプリで使用するのはGeneratorです。
何百行に渡るGANコードを全て理解する必要はなく、この「Generator」をソースコード内でうまく見つけるのが変換作業の勘所となります。そのコツを説明します。
3, CoreMLToolsで変換しよう
変換スクリプトはシンプルです。ただし変換オプションの指定も必要なので、元のモデルから必要なオプションを特定する方法を説明します。
4, アプリで使おう
Visionフレームワークを使用します。
画像形式の出力を取得するには、OSSを利用するか、モデル形式を少し変更する作業が必要です。その方法を説明します。
3
レギュラートーク(20分)

AVAudioEngineでリアルタイムレンダリング

八十嶋祐樹 yaso_san
AVAudioEngineが登場してから長らく、C言語のAudioUnitのAPIのように入出力のそのままのデータをダイレクトに扱うことができませんでした。それゆえにいまだにC言語のAPIを使っているままの方も多いと思います。

しかし、iOS13ではAVAudioEngineにAVAudioSinkNodeとAVAudioSourceNodeというNodeが追加されました。これらはダイレクトにオーディオデータを扱うことのできるものです。もうレガシーなC言語のAPIを使い続ける理由は無くなりました。

そしてC言語のAPIはDeprecatedになっています。AVAudioEngineに乗り換えなくてはいけないのは時間の問題です。

このトークではこれらの新しく追加された機能の使い方を解説します。後々慌てることのないよう早めに対応していく手助けとなれば幸いです。
6
他イベントOK レギュラートーク(40分)

一石二鳥: マルチモジュール化, ビルド速度快適化

Saryong Kang justfaceit_kr
TL;DR
Googlerが解説するgoogle/bazelを活用したビルド速度の最適化と, その前提になるマルチモジュールの実践ガイドになります。

1. 実践マルチモージュル編
「iOSプロジェクトをマルチモジュール化するとビルド速度が速くなるよ」という話はよく聞こえるが, 意外と実務に適用するには難関があります。マルチモジュール化を最小限の努力で実現するコツ, ファイルが分けてしまってgitから履歴が見えなくなった時の対処方法等を話ます。

2. ビルド編 - google/bazel
マルチモジュール化されたプロジェクトだとbazelの恩恵を十分もらうことができます。LINEアプリ等が採用しているbazelの用いて既存の2倍以上のビルド速度を目指しましょう。

3. テスト編
マルチモジュール化すると嬉しい所の一つがレイヤ毎にカバレッジが一目瞭然になること。ですが, 以前問題なかったはずの単体テストが動かなかったりする問題もあります。単体テストのトラブルシュートとテスト実行を速くするtipをシェアします。
8
他イベントOK レギュラートーク(20分)

実践!「みてね」における自動生成活用例

佐藤俊輔 ushisantoasobu
1年前ほど前に観たUberのエンジニアによる"Code Generation"(以後「自動生成」と記す)に関するセッションに影響を受け、みてねのiOS開発でも自動生成(Sourcery + Stencil)を取り入れました。
まずユニットテストを効率良く書けるようにするための「テストデータ」の自動生成というものを行いました。
これが思ったよりもチーム内で受け入れられて、今ではなくてはならないものになりました。
その後、チームの他のメンバーが「DI」まわりで自動生成を用いた素晴らしいアウトプットを出してくれました。
他にもまだまだ自動生成したいものがたくさんあります。

このようにみてねのiOS開発ではチームとして自動生成を絶賛活用中なので、その知見を以下のような項目で話せればと思っています。

- 実際の活用例(テスト、DI)
- 実装方法
- 1年ほど運用してみて(ハマったことや、チーム内における知見の共有など)
- 自動生成のpros/cons(例えば外部ライブラリを利用するという選択肢との比較)

* みてね = 子供の写真や動画を家族内で共有するアプリ
4
他イベントOK レギュラートーク(20分)

iOSアプリは「感情」を宿すのか?AIとアプリの未来について

我妻幸長 yuky_az
人工知能技術の発展、および端末の性能向上の発展により、物体の判別や自然言語処理などiOSの様々な可能性が広がってきました。これらの技術の延長線として、我々が備えているものと同等の知能をいつかiOSアプリは宿すのでしょうか?
ヒトなどの動物が備える天然の知能にあって、現状のAIに欠けているものを2つ挙げるとすると「自律性」と「汎用性」が考えられます。
自律性についてですが、現状のAIは特定の問題をヒトが設定し解決するためのツールとしての使い方が主流です。それに対して、我々動物が持つ知能は環境から独立し、相互作用する自律性を備えています。
汎用性に関してですが、限られた状況においてのみ高い能力を発揮するのが、現状のAIです。砂漠から北極圏、都市での生活まで広く適応可能なヒトの知能には、まだまだ遠く及びません。例えばクジラの消化管にのみ適応した寄生虫のように環境を限定することで生き残った動物もいますが、高度に進化した動物の知能は、様々な環境に適応できる汎用性を備えています。
iOSアプリがこのような自律性と汎用性を兼ね備えるためには、何が必要なのでしょうか。1つ考えられるのは、「内部世界」です。我々の脳は常に情報が循環し複雑に流れる内部世界を持っています。iOSDC2019ではこのような複雑な流れを簡単にシミュレートするプログラムを公開しました。もう1つ考えられるのは、「感情」です。動物は、美味しい、美しい、心地よいなどのポジティブな感情を多く得られるように、痛い、醜い、苦しいなどのネガティブな感情を避けるように行動します。AIが自律性を備えるためには行動の指針が必要なのですが、この感情のような仕組みを模倣できればそのような指針になるでしょう。今回の発表では前回の「内部世界」のシミュレーションを踏まえ、アプリへ感情のようなもの?を導入しようとする試みについて話します。
3
他イベントOK レギュラートーク(40分)

XCUITestのつらさを乗り越えて、iOSアプリにUITestを導入する

佐藤剛士 hatakenokakashi
プロダクトが成長するにつれて、アプリ品質向上とリリーススピードを高めることは難しくなっていきます。機能や画面が増えるにつれてマニュアルテストを続けるのは時間的なコストが上昇し、リリーススピードが落ちてしまいます。そこでE2EテストとしてUITestを導入し、テストを自動化する方法が考えられます。Apple標準UITestフレームワーク、XCUITestを検討する方も多いのではないでしょうか?
しかし、やみくもに大量の画面によるテストケースをコード化しても再利用性のないテストになることは明白です。また、XCUITestフレームワークの特性を理解し、適切にUIコンポーネントを操作するにはちょっとしたノウハウが必要です。

方法の一つとして、PageObjectデザインパターンを導入しテストコードと画面構成を切り分けましょう。実装方針をチームで話し合うのも重要です。一般に参照系のテストは実装が容易ですが、ユーザー状態を変更するUITestは実装が難しい場合があります。プロジェクトの性質によって適切な優先順位をつける必要があります。
このトークでは自社アプリにXCUITestによるUITestを導入した経験をもとにUITestの実装ノウハウを共有します。またUITest実装を進めるにあたってXCUITestのトリッキーな挙動もわかって来ました。

- Accessibility Identifier場合やLabel重複の適切なQuery方法
- UIView.setAnimationsEnabledをfalseにするとポップアップが表示されない問題
- iOS 13とiOS 12でView階層が異なる問題

これらの問題の解決方法も合わせて共有できればと思います。

UITest導入と戦略と実践が学べ、UITest導入を検討している方にぴったりのトークです。
3
他イベントOK レギュラートーク(20分)

計算グラフのJITコンパイラをLLVM on C++で作ろう

Yuichi Yoshida sonson_twit
iOSのメイン開発言語として盤石になってきたSwift.
そのSwiftを支える最も重要なコンポーネントがコンパイラ開発基盤LLVMです.
また,LLVMは,Swiftだけでなく,多くのソフトウェアにとって欠かすことができないソフトウェアとなってきました.
このトークでは,計算グラフをC++上で実装し,LLVMによるJITコンパイルで,動的にバイナリを生成し,内部的にそれを実行するソースをベースにLLVMの中身を解説します.
ほとんど解説書がなく,とっつきにくいLLVMではありますが,実際にコードを書いていくと,その技術のおもしろさが随所に感じられてきます.
LLVMを学び始めて,半年の初心者ならではの視点で,LLVMのおもしろさをお伝えできればと考えています.

みなさんも,LLVMにレッツトライ!
2019 スポンサー 2019〆切後 資料請求
オンライン対応未決定 削除予定 オンライン対応検討中 要ロゴ 要PR 要支払
仮採択 採択しない スピーカー採択
仮採択(原稿) 採択済 採択しない 仮採択 要審議 ニッチ企画? LT向き加点