Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
NativeApplication, AWS and ReactiveProgramming
Search
y_matsuwitter
March 25, 2016
Programming
2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NativeApplication, AWS and ReactiveProgramming
Retty x Gunosy Beer bash #3 での内容です。
y_matsuwitter
March 25, 2016
More Decks by y_matsuwitter
See All by y_matsuwitter
LLMと共に進化するプロセスを目指して
ymatsuwitter
14
5.6k
Building Products in the LLM Era
ymatsuwitter
11
13k
Product Utilization of Large Language Models Starting Today
ymatsuwitter
3
3.5k
経営・意思・エンジニアリング
ymatsuwitter
23
22k
LLM in 2023 and 2024
ymatsuwitter
8
6.4k
Turbulent Technological Changes and Career Strategies
ymatsuwitter
2
3.3k
LLM in toB Service and Its UX
ymatsuwitter
7
12k
Agent and small LLM validation
ymatsuwitter
7
3.1k
Information management for a culture of speed: The story of Notion and LayerX
ymatsuwitter
4
11k
Other Decks in Programming
See All in Programming
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
160
Agents on Rails - Rails at Scale 2026
irinanazarova
0
350
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
850
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
110
AWSに止められる覚悟してますか?
morizo_1984
2
520
contenteditable と日本語入力に向き合う
colorful12
0
170
SREの越境 / SRE Collaboration
y0hgi
2
300
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
450
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
190
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
130
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
140
速習iPhone Duo対応
yuukiw00w
2
970
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
590
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
My Coaching Mixtape
mlcsv
0
340
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
We Have a Design System, Now What?
morganepeng
55
8.4k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
420
Building an army of robots
kneath
307
47k
Crafting Experiences
bethany
1
380
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
320
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Transcript
ネイティブ開発とAWSと川の話 Gunosy Inc. 2016.03 @y_̲matsuwitter
2 ©Gunosy Inc. ⾃自⼰己紹介 n Gunosy Inc. – 開発本部執⾏行行役員 n
業務 – 開発全般のマネジメント – Go⾔言語布教係 – パフォーマンスチューニング – ISUCONとか好きです n 担当 – 右⼿手でiOS、左⼿手でAndroid – Web – Infrastructure(AWSのみ) n 最近の興味 – ViveとOculus製品版買いました 松本 勇気 @y_̲matsuwitter
3 ©Gunosy Inc. 今⽇日の話 n ⾃自⼰己紹介 n 背景 – 直⾯面している問題
n サーバに近づくネイティブアプリ – サーバレスアーキテクチャの話 – 変わるサーバとクライアントの境界線 – AWSとネイティブ開発 – モバイルで使えるAWSの話 n AWSの川を引く – 複雑なHTTPこそStreamを – iOS/AndroidでのAWSと川 現在の新規プロジェクトでのネイティブ開発の考え⽅方について
4 ©Gunosy Inc. <注意> ネイティブ開発の話をしますが AWSの話が沢⼭山登場します
5 ©Gunosy Inc. 背景
6 ©Gunosy Inc. 背景 新規プロジェクトとして、今できるより良良いアーキテクチャを模索索 n 2016年年夏にはサービスインの予定 – プロジェクトとしては⽐比較的⼤大規模 n
開発のコアチームは5名 – 全員が領領域超えて開発 n チームのモットー – 少⼈人数で最⼤大の成果を KDDI様との連携で新規にメディア事業プロジェクトを開始
7 ©Gunosy Inc. サーバに近づくネイティブアプリ
8 ©Gunosy Inc. サーバレスアーキテクチャについて SaaSを活⽤用しつつ、サーバを持つことなく各種のイベントを処理理する仕組み。 ⾃自社サーバ mobile client ログ収集 サーバ
DB ファイル サーバ HTTP サーバ API Gateway AWS S3など ログ収集 サービス AWS Lambda など
9 ©Gunosy Inc. クラウド事業者にスケールするための責務を渡せる 1 重要なビジネスロジックに集中 3 サービス管理理に伴う⼈人的なリソースを減らすことが可能 2 サーバレスアーキテクチャのメリット
n ユーザーの増加に対して、サーバを増強するなどの責務はクラウド事業者側。 – スケーラビリティにシビアになる場⾯面が減る。 n セキュリティなどもクラウド事業者側で担保可能。 n サーバを管理理するにもエンジニアのリソースが必要。 – インフラ管理理を減らし、少⼈人数でスケールさせる。 n ⼈人の採⽤用が組織にとって最も難しい問題 – 必要なエンジニアをより少なく保ち、開発を加速できる。 n サーバのセットアップや、⼀一般的なユーザー認証などは外部サービスで担保。 – 開発すべき重要なロジックに集中できる。 n ネイティブ開発者だけでもある程度度のロジックを担保可能。 – モバイル側のSDKも充実しており、ネイティブ側で様々なロジックを簡単に。 「少⼈人数で最⼤大の成果」という今回の⽬目標に合致 ⼈人的リソースを抑えつつ、スケールするサービスを構築できる。
10 ©Gunosy Inc. 変わるサーバとクライアントの境界線 SaaSとの連携で、クライアントサイドで処理理可能な領領域が増えている。 以前 これから サーバサイド クライアントサイド サーバサイド
クライアントサイド ユーザー 認証 データ 永続化 データ 解析 ログ収集 UI ⼊入⼒力力値 検証・送信 UI ⼊入⼒力力値 検証・送信 ユーザー 認証 ログ収集 データ 永続化 データ 解析 各リソース への認可 各リソース への認可
11 ©Gunosy Inc. AWSとネイティブアプリ 現状のプロジェクトではAWS SDKを最⼤大限活⽤用 Amazon Kinesis Amazon
Cognito Amazon SNS Cognito AWS SNS Kinesis ユーザーの認証、AWS系のサービスへの認証・認可、設定値のアプリ間同期など。 モバイル通知(APNS、GCM)のトークンを管理し、通知送信などを可能にする。 様々なイベントデータを送信、一定量をKinesisに保持し、ストリーム処理に繋げる。 Amazon Mobile Analytics MobileAnalytics AWSが提供するモバイルサービスの分析サービス。
12 ©Gunosy Inc. モバイルで使えるAWS: Cognito 認証系を代替し、設定値を保存できるCognitoを活⽤用 n 主にユーザー認証とデータ同期、認可を担当 – 個々のAWSリソースに対する認可
– クライアントから直接AWSとやり取り するために必須とも⾔言える n Cognito Identity – ユーザーの認証を担当する機能 – OpenID ConnectやTwitter, Facebook を使ってユーザー認証が可能 – 匿匿名ユーザーという権限も存在 n Cognito Sync – 同⼀一ID間でのデータ同期の仕組み – 端末間同期できるNSUserDefaultsや SharedPreferenceの様なもの ・ID ・認証キー ・データ同期 その他のAWS系 サービスとの通信
13 ©Gunosy Inc. モバイルで使えるAWS: SNS 通知のトークンの取り回しと通知送信を容易易にする。 n APNS・GCMも送信可能な通知サービス – デバイストークンを登録
– EndpointArnというトークン単位のIDで GCMとAPNSを透過的に扱える n メトリクスの確認が可能 – 送信数、失敗数などの確認 – 死んだトークンについてもログ出⼒力力可能 n 何が嬉しいか – 1000万件の通知でも安定して短時間に 送ることが可能 – デバイストークンの処理理の⾯面倒を減らせ る ・EndpointArn ・通知の送付 ・通知用トークンの 送付 ・GCM ・APNS 管理者 メトリクス
14 ©Gunosy Inc. モバイルで使えるAWS:Kinesis サービス改善で命となるログを、クライアントから直接投げる。 n ⼤大量量のログを受け取り処理理するための受け⽫皿 – 同時処理理性能を簡単に増減させられる –
24時間分のログを溜溜める n 主にStream処理理、ログの1次加⼯工に利利⽤用 – Kinesisのログを逐次その他システムで 処理理する – 例例1:ログを加⼯工してS3に永続化 – 例例2:逐次的にログ集計、短時間でサー ビスに反映する n 何が嬉しいか – ログデータの安定した配送を簡単に実現 できる – Kinesisの関連プロダクトとの連携が将 来⾒見見込める ・行動ログ ・属性ログ …etc S3に対して ログを保存 EMRからログの分析
15 ©Gunosy Inc. とはいえデメリットは? 学習コスト サービスならではのハマリポイント Native以外の領領域を知る必要性 これまで悩まなかった問題の噴出 n AWSなどの知識識を深く求められる
– Credentialとは? – SecurityGroupとは? – …etc n SDKに対する学習 – どのSDKも⽐比較的⼤大きい n AWSのハマリポイント – リソースへのアクセス許可など n イベントドリブンなシステム – ⾮非同期的なデータ処理理である前提 で対応する必要がある 新たな知識識領領域を求められることによるコストは避けられない 学習コスト、サービスならではのハマリポイントなどに苦しむ場合も。
16 ©Gunosy Inc. AWSの川を引く
17 ©Gunosy Inc. 川とは 〜~ReactiveProgrammingの話〜~ ストリームを宣⾔言していくスタイルを(⼀一部で?)川を引くと呼んでいる n イベントとイベントの関係性を定義していく ことで処理理を綴る –
イベントが流流れるストリーム同⼠士を map, merge, filterなどを通じて定義し ていく n ViewとViewModelをBindするようなMVVM 設計によく利利⽤用される n 代表的なライブラリ – Rx系(RxJava, RxSwift…etc) – その他(ReactiveKit, SwiftBond…etc) 簡単に⾔言うと、イベント同⼠士の関係を定義して記述・動作する技術スタック群 クリック イベント API通信 UI描画 必要なイベントをfilterしたり 要求に応じて複数に増やしたり
18 ©Gunosy Inc. SaaSとの連携と川の話① AWSにかぎらず、SaaSとの連携には多くのHTTPリクエスト・⾮非同期処理理 CognitoID を取得 AWSの認可 取得 MobileAnalytics
の初期化 Kinesisの 初期化 DeviceTokenの 取得 SNSにTokenを 保存 ログ送信 ⾃自社のコンテン ツ取得 UIを描画 ごくごく簡単なアプリ起動に至るフロー事例 複数のAPIリクエスト の完了了を待つ
19 ©Gunosy Inc. Observable SaaSとの連携と川の話② GunosyではiOSでReactiveKit、AndroidでRxJavaを活⽤用 CognitoID を取得 AWSの認可 取得
MobileAnalytics の初期化 Kinesisの 初期化 DeviceTokenの 取得 SNSにTokenを 保存 ログ送信 ⾃自社のコンテン ツ取得 UIを描画 n ⾮非同期処理理をObservableでWrapする n Observeしてイベントを各Observable に繋いでいく n 必要に応じてcombineLatestなどで川を まとめる
20 ©Gunosy Inc. 例例:CognitoのID 単純なIDの取得も、場合によってはHTTPリクエストが発⽣生する。
21 ©Gunosy Inc. 例例:CognitoのID ObservableでWrapしよう! ついでにNetworkOnMainThreadExceptionも避ける
22 ©Gunosy Inc. まとめ
23 ©Gunosy Inc. まとめ サーバの領領域にネイティブ開発者が積極的に関わることで新たな最適解が⾒見見 えてくるかもしれない! NativeとServerの垣根を超えて、よりよいサービスを作ろう! サーバレスアーキテクチャとNative 外部SDKの川を引く n
巨⼈人の肩に乗る – サービスのスケールやセキュリテ ィなどを巨⼈人に任せる n ネイティブ開発者も積極的に関わろう – サーバサイドは必要なロジックに 注⼒力力 – クライアントサイドの領領域は変わ りつつある n ReactiveProgrammingの恩恵 – 複雑なイベントの関係もストリー ムを使い記述しやすく n SaaSと川 – 多くのHTTPリクエストとその依 存関係を上⼿手く整理理 – イベント同⼠士の関係として記述す ることでRetryも書きやすく
24 ©Gunosy Inc. Gunosyでは、より新しい技術に挑戦しつつ ビジネス成果を上げたい! そんなエンジニアを募集しています!