There are many difficulties and fun when providing on code base of iOS app to serve for many countries with different features, and communicating with colleagues in different locales...
オートフォーカスや手振れ補正、ホワイトバランス、後からフォーカスを合わせるなど一眼レフや高機能カメラにありがちな機能をiOSアプリで真似して実装してみます。
設計パターンを明確にすることには多くのメリットがありますが、プロダクトに対してどの設計パターンが最適なのかを決定付ける絶対的な条件はありません。それ故に、経験の浅い初学者からすると、どの設計パターンを利用してよいのか迷うことが常だと思います。
そこで、私がプロダクトの再設計時に整理した、設計パターンに迷ったらこういう点を見直してみようという意見を、個人的な独断と偏見でお伝えします。
Apple Human Interface Guideline (HIG) では、iOS App をデザインする上での考え方を学ぶことができます。それ以外にも Apple がデザインをした標準アプリから知れることが数多くあります。このトークでは、Large Title や 新しいモーダルビューなど HIG を読むだけでは分からない具体的な UI の考え方についてご紹介します。
Swiftにおけるパッケージ管理ツールとして、Swift Package Manager(以下、SPM)が存在します。
しかし、SPMはCLI(Command Line Interface)ツールの開発にも利用することができます。
本トークではライブコーディングを交えながら、SPMでCLIツール開発を始める手順について説明します。
日頃のちょっとした手作業を自動化するツールをSwiftで作ってみるのも面白いのではないでしょうか?
iOS界隈にもリアクティブプログラミングが浸透してきてはや数年。多くの人がRxSwiftなどを当たり前のように使っている時代になりました。ですが、まだまだ「なんとなく書いているけど本当のところあまりよくわかっていない」というな声をよく聞くことも事実です。本セッションではリアクティブプログラミングについて1から確認していき、自信を持ってリアクティブプログラミングを使える状態を目指します。
UIKitのアニメーション表現は、UIViewPropertyAnimatorの登場により自由度が向上しました。UIViewPropertyAnimatorを画面遷移のアニメーションに応用することで、インタラクティブなアニメーションが実現できるだけでなく、複数のアニメーションを連動させることも可能となります。このトークでは、UIViewPropertyAnimatorを利用した画面遷移のアニメーションの実装例をご紹介しします。
開発してて、Xcodeにはないちょっとした機能を使いたくなることはありませんか?
他のアプリを起動して、作業するのも面倒ですよねー😞
そんなときは、Xcode Source Editor Extension を使うのです。
このトークでは、 Xcode Source Editor Extension を使って機能開発した実例を発表します。
FeatureFlagsの機能を使うための社内SDKをSwiftで実装しました。そこにはいくつもの関門と調査と発見がありました。
SDKを作るにはどうするのか、考慮すべき点とは、苦労した点とは、解決した課題は。
完成に至るまでの物語と知見を是非聞いてください。
わかりやすいプログラムを書くために、命名はもっとも重要な要素のひとつです。
本セッションでは、Swift言語の生みの親の思想や、ドメイン駆動開発の話を交えつつ、国内のiOSアプリ開発において、現代においても一般的な英数字のみの命名にこだわる必要があるのか?という点について考察します。
また個人的に日本語命名を採用して半年ほどアプリ開発した際に、感じたメリットや、逆に予想外につらかった部分などについてご紹介します。
近年、動画サービスが盛り上がりを見せています。
単に動画を再生するだけなら簡単ですが、なめらかなUI/UXの実現や複数動画再生の制御、エラーハンドリングなど
実際のサービスでは考慮すべきことが多々あります。
iOSでAVPlayerを使った動画再生の知見についてお話したいと思います。
tvOSアプリはUIKitを利用してiOSアプリと同じ感覚で実装できます。ただ、実際に実装していくとフォーカスの考え方など、tvOSアプリ独自の概念を考慮しつつUI設計を進めていかならければならないことがわかってきます。そのあたり、実際に業務としてtvOSアプリを作りながら得られた知見を、WWDC 2018で発表されたtvOS 12で加わったTVUIKitなどを絡めて紹介できればと思います。
XCODEのデバッグ機能は便利で、スタックトレースとpoコマンドの入力だけでもゴリゴリとデバッグできる方が多くいらっしゃると思いますが、
それらはLLDBの機能の氷山の一角です。
不具合の原因検知、修正だけでなく、
リビルドせずにコンソールからUIを変更するなど新規コーディングでも活用できる方法を発表致します。
仕様変更に対応するため、部品を移動したら制約がすべて壊れてしまった…といった経験はありませんか?
StoryboardやIB(Interface Builder)は強力なツールですが、やや扱いづらい部分もあります。
本セッションでは、IBのつらさを軽減するTipsのほか、IBを使わないレイアウト方法、IBを使わずにStoryboardを編集する方法などに触れつつ、快適に、変更に強いUIを作るためにやっていることについてご紹介します。
APIの実装で、Swaggerの定義レビューを導入して、アプリ側・サーバー側の認識を一致させることで手戻りを少なくした話。
導入する前のダメだったところから、導入してどこが変わったのかといったところをアプリエンジニア視点でお話できればと思います。
多くのサービスは縦や横に固定したアプリではないでしょうか。
iOS8から「Adaptive User Interface」という考え方が取り入れられ、
解像度の異なるデバイスや画面の向きによって最適なレイアウト対応が推奨されています。
iPhoneでの画面回転に対するニーズはそこまで多くないかもしれませんが、iPadの対応にも応用できます。
Adaptive UIへの対応と知見についてお話したいと思います。
「コメントは3ヶ月後の自分へ」とあるように、Gitのコミットログでも同じことが言えます。
「○○のバグに対応」「△△の処理を消す」といったコミットログを見た経験があるはずです。
PRを見ている時は何も問題のないコミットログでしょう。
しかし、未来の自分がコミットログを見返して「なぜ・どんな対応したのか」を読み解くことは可能でしょうか?
このトークでは、コミットログの書き方を変えたことで、改善できたあれこれを発表します。
モーダル遷移、プッシュ遷移のどちらを利用すべきか明確に説明できますか?モードについての考え方は、OSアプリを構成する重要な要素です。デバイスの大画面化やApp上のタスクの複雑化に合わせて、標準アプリも新しいモーダルデザインが導入されています。このトークでは、モードについての基礎的な考え方から、昨今の進化したモーダル/モードレスデザインについて「Wantedly Visit」での実例を交えながらご紹介します。
先日任天堂から発表されたマリオパーティーのゲーム内で実装されている、複数のSwitchを並べた時にディプレイ間の位置を調整する素晴らしい機能を、iOSでも実装した結果を発表します。
リリースするアプリでこの技術を使おうとすると既に任天堂が特許を持っているので注意が必要です。
UITextViewを使わずにUITextViewのようなViewを作ることで縦書きテキストエディタを作った話。
UITextViewのあの機能が実はUITextInput由来だったりといった話や、IME周りの挙動をAndroidやUWP, Windows / macOS / Gtkで同様の縦書きエディタを作った経験を交えてお話しします。