ドメイン駆動設計においてキモとなるのは、そのDDDの概念を元に如何にプロダクトの対象領域であるドメインをモデル化し
そしてそれをどのようにプログラム設計に落し込むかどうか、だと思います。
このセッションではまずDDDを知らない方の為にその概念を説明し、そして弊社のiOSアプリに対してどのように落とし込んでいるのかについてお話できればと思います。
「どうされましたか?」
「いろいろ頑張ってはみたんですが、うちの子全然治らないんです。顔が黄色くなったり赤くなったり、あとはいろいろ吐いてしまっていて。もうどうしたらいいのか…。」
「ふむ。デバッグ方法がわからないわけですね。症状によって見るべきポイントは異なりますし、そもそも症状は正確に判断しないといけません。私と一緒に症例とその対処方法を見てみましょう。」
キャスト
医者:私
親:開発者
子:AutoLayout
SNS系のアプリのほとんどはチャット機能を持っています。
しかし、チャット機能の実装はUXを求め始めると難しく、複雑になっていきます。
「順番が狂う」「送信完了までメッセージが表示されない」「受信されない」「重い」など
データが蓄積されていくチャットのような機能はどのように実装すべきなのかをお話しします。
巷で噂となっているPinterestによって開発されている、UIが猛烈に高速化されるTexture(AsyncDisplayKit)ですが、
非常に巨大なフレームワークであり、UIKitをラップする形でAPIが提供されています。
既存のアプリで「UIが重い!Textureを入れて速くしたい!」「でも途中から導入できるものなの?」という問題に対し、
実際のところ、導入は可能なのか?どのように?についてお話しします。
ReactNative流行ってますね
ところで,覚えてますか?
金属っぽい名前のクロスプラットフォームアプリがJSで作れるぜ!って言っていた開発環境
以前Zaimアプリはそれで書かれていました.そして,昨年3月Swiftに完全移行しました
なぜ,移行を決心したのか.いかに苦しみ苦しみ抜いてリリースしたのか.果たしてZaimのエンジニアはSwiftにして幸せになれたのか
移行や改善をしていく上で得られた知見を発表します
Swiftが発表されてその言語仕様を知ったとき、これを使えば理想の画像ライブラリを作れると思いました。その理想を詰め込んで作ったのがEasyImagyです。画像周りはややこしいことが多いですが、EasyImagyを使えば驚くほど簡単に、Swiftyに画像を編集することができます。この1年でGitHubのスターも200を超えたので、初歩的な使い方から作者だけが知る便利な新機能まで、30分かけてEasyImagyの魅力を語り倒します。
長い間サービスを運用するとコードには旧時代のプラクティス、意図のわからない仕様、統一されていないアーキテクチャなど様々な課題が積み上がっていきます。
リリースしてから8年が経過し巨大になったじゃらんアプリも例外ではなく、生産性をあげるべく様々な取り組みを行ってきました。
このセッションでは事業の制約と技術的な課題の中でどのようなことを行ってきた(もしくは行っている)かをお話したいと思います。
創業2年の新潟のWeb会社に転職し、同時にアプリ事業を持ち込みました。社会人2年目のペーペーが転職と同時にアプリ文化を持ち込んだとき...いわゆる”不毛”と言われる環境下でのスタートでした。
その中でこっそり自社Webメディアを両OSアプリ化した話や、アプリ文化が無い会社組織との付き合い方、アプリに対する相場感やスキル難易度によるギャップなど、新潟のiOSエンジニアならではの苦悩を題材に地方アプリ市場の現状や未来についてお話しします。
ARKitが登場してから早くも1年以上が経過しました。今ではAppStoreには数多くのARKit搭載アプリがリリースされています。
さらにWWDC2018ではARKit2が登場し、AppleもARに関してかなり注力していることが伺えます。
今日iOSエンジニアを名乗るのであれば、ARKitを扱えて当然の世代になりつつあります。
本セッションではARKitの基本からどのようなことが実現可能かをわかりやすく解説します。
MVCやMVVMといったViewとModelをいい感じに設計する方法が流行っています
モバイルアプリ開発では,VとMの関係性と同じくらいかそれ以上に,VとVの関係性,画面遷移の管理が大切です.何も考えずに開発するとVCやVMなどに画面遷移のコードを書いてしまい,コードは肥大化し,メンテナンス性が低下していきます.そこでCoordinatorという設計パターンを導入し,画面遷移をいい感じに管理していく手法について説明します
僕らの組織では複数のプロジェクトチームがひとつのアプリに機能を追加・修正するという体制で開発を行っており、リリース日程や実装機能の調整など、コミュニケーションにどうしても時間がかかっていました。この問題を解決するためにfastlaneを使ったタスクの自動化だけでなく、機械的なペースに合わせるリリースフローを実現しようとしているので紹介します。(発表する頃にはうまくいってるはず…)
アプリの開発中にビルドしたアプリをCrashlyticsBetaやDeployGateなどにアップロードし、手元で動作確認できるようにしているチームは多いと思います。僕たちもそういったサービスを使ってきましたが、様々な課題が出てきたため自分たちの使い方にあったシステムを新しく作りました。どういった課題がありどういうツールを用意したのか、そしてどうリリースフローが改善されたか話します。
プロジェクトが大規模化していくと、さまざまな業務を自動化したくなってきます。同時にロジックが増え、特定の人しかメンテできなくなったFastfileにお悩みの方も多いでしょう。
このトークでは、実際の活用事例を交えながら、大規模プロジェクトにおける効果的なFastfileの書き方、プロジェクトの雑務自動化についてをお話しします。
そのほか、fastlaneコミッターによる明日から使える実践的なtipsも数多くお伝えします。
Swift、特にRxSwiftでの状態管理、コンポーネントへの情報の伝播に徐々に慣れた頃、React Nativeでアプリを作った僕は、宣言的に状態管理を行わず、コンポーネントが更新される様子を見て、状態管理への捉え方を変えざるを得ませんでした。
クロスプラットフォームの特性ではなく、あくまでiOS開発の側面で、React Nativeはマインドセットをどう変えていくのかというテーマで発表したいと思います。
iOSでは曲を再生する方法としてAVAudioPlayerやMediaPlayerなどがあります。しかし、それぞれのplayerごとに再生キューやライフサイクルを持っており、player間を跨いで連続再生をするのは直感的には実装できません。今回は上記2つ加えてyoutube iframe player・SpotifyPlayerのplayer間を跨いで連続再生できるmusic playerをprotocolを利用して実装した話をします。
ネイティブアプリとWebアプリの両方の利点を持ち、お互いのギャップを埋めることができる技術として WPA (Progressive Web Apps) が注目されています。AWS Amplifyを利用するとPWAのService Workersを簡単に登録し、利用することができます。このセッションでは、AWS Amplifyを利用してPWAを実装する手順を分かりやすくデモを交えながら解説します。
Swift for TensorFlowはTensorFlowに関連したプロジェクトの中でも異彩を放つものです。そこではTensorFlowではなく、Swiftの開発が行われていました。このトークではそうなった経緯について、「機械学習に必要なものはなにか」という問への真正面からの取り組みと、Graph Program Extractionを含むその問への解答を中心に扱います。
単純にプッシュを打つだけでは意味がありません。カスタマーエンゲージを目指すならばカスタマーの分析を行う必要があり、さらに言うならばリアルタイム性の高い情報を使った分析が必要となります。Amazon Pinpointを利用するとEvent Streamを利用して簡単にリアルタイム分析を行えます。本セッションではリアルタイムな分析を行うためのアーキテクチャとそれを使ったマーケティングを行うためのベストプラクティスを紹介します。
iOS App市場は飽和しつつあります。アプリがダウンロードされたとしても80%はアクティブユーザーにならない。80-90%のアプリは一度使われただけで削除されてしまう、などアクティブユーザー獲得の難易度はあがってきています。本セッションではカスタマーの情報をリアルタイムに分析し最適なマーケティングを行うためのアーキテクチャを紹介します。
私の現在担当しているアプリケーションはファーストリリースから早5年が経過しようとしています。
しかし、ユーザの求めるサービス、そして何よりUI/UXへの期待値は5年前とは比べ物にならないくらいに上がりました。
ユーザの期待を裏切らない為に、我々iOSチームがfpsを一つの指標に置いてUI/UX改善の為に行っている事、またこれから改善していきたい事についてお話します。