SlideShare a Scribd company logo
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
2016/01/29
Tomohiro Mitsumune
DeSC Healthcare, Inc.
B2B2Cなヘルスケ
アサービスの作り方
1
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
アジェンダ
⁃ DeSCヘルスケアとは?
⁃ Webサービス
⁃ ネイティブアプリ
2
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
自己紹介
⁃ @t_mitz
⁃ DeSCヘルスケア株式会社 サービス企画開発部
⁃ 前職では新規サービス立ち上げや開発チームのマネージメントに従事
⁃ DeNAではマンガボックスやNBPFの立ち上げに参加
⁃ サーバーサイドエンジニアだったけど最近はiOSとAndroidがメイン
⁃ 齢35にして人生初のフルマラソン完走しました
3
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
DeSCヘルスケア?
4
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
DeSCヘルスケア
5
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
KenCoM
6
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Webサービス
7
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
やったこと
⁃ アプリケーションの一部の設計・実装を担当
⁃ ポータルサイト部分
⁃ CI / CD
⁃ 社内でRailsベースのCI/CD環境が無かった
⁃ 環境の制限でSaaSが利用できないため仕組みを自作
⁃ コードレビューおじさん
⁃ コンポーネント間でのデータ連係があるので設計を重点的に
⁃ Ruby書いた経験が少ない人もいたのでサポート(厳しめに)
8
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
構成
⁃ ポータルサイト
⁃ Rails4
⁃ データAPI
⁃ Rails4
⁃ grape
9
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
10
システム全体
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
セキュリティ
⁃ 要件が非常に厳しい
⁃ 厚生労働省が定めているセキュリティガイドラインに準拠
⁃ データヘルス計画における健康情報の取扱い
⁃ 匿名データの作成・提供に係わるガイドライン
⁃ 医療情報システムの安全管理に関するガイドライン
11
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
セキュリティ対策
12
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
データベース構成
⁃ 個人情報とそうでないデータでDBを分割
⁃ セキュリティ対策のため秘匿性が高い個人情報はAPI経由で取得
⁃ データの取得に必要なtokenはJWTで生成しAPIサーバーで検証
⁃ MySQLもSSL接続
13
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
データベース暗号化
⁃ 個人情報に該当するデータは全て暗号化
⁃ symmetric-encryptionというgemを利用
⁃ http://rocketjob.github.io/symmetric-encryption/
⁃ Railsから透過的にOpenSSLを使ったデータ暗号化
⁃ 環境(dev, test, prod)ごとに異なる設定
⁃ セキュリティ強度を高めるため暗号化に利用する を定期的に更新
- の生成や やIVのマスキング処理をするコマンドラインツールは
gemを自作(非公開)
14
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
CI / CD
15
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ChatOPS
IRC + Jenkins + Github Enterprise + sinatra + capistrano
16
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Q. なんでSaaSを使っていないの?
A. オンプレ環境で利用できるSaaSが無かった(当時)
⁃ またAWSやAzureはセキュリティポリシー的に利用不可
17
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Q. なんでSlackじゃなくてIRCなの?
A. Slackのアクセス元IPアドレスが固定できないため通
信元の制限がかけられなかったから
⁃ インバウンドな通信を許可するなら経路は限定
⁃ SlackはインフラがAWSなので動的IP
⁃ ダメ元でサポートにメールしてみたけどやっぱりダメでした
⁃ 将来的に固定IPにできるようにしたいけど今は無理、という回答
18
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ネイティブアプリ
19
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
はじめに
⁃ やったこと
⁃ iOSアプリ開発
⁃ Androidアプリ開発(少しだけ)
⁃ はなすこと
⁃ 主にiOS
⁃ 使っているライブラリの紹介
⁃ 開発していて気づいたこと・こまったこと
20
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ネイティブアプリの要件
⁃ あくまでメインはWebアプリ
⁃ ネイティブアプリはアドオン的な立ち位置
⁃ 導入先の健保でスマホ未所持な人が利用不可
⁃ 営業先が限定されてしまい機会損失
⁃ ネイティブアプリに期待されること
⁃ プッシュ通知で有資格者に健保からのお知らせ
⁃ バイタルデータを活用した機能
21
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
プッシュ通知
22
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Parse
23
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Parse
⁃ プッシュ通知の基盤として利用
⁃ 理由
⁃ コストに対する費用対効果が非常に高い
⁃ 開発コスト・ランニングコスト
⁃ 100万ユーザ/月までは無料
24
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Parseのメリット・デメリット
⁃ メリット
⁃ 組み込みが簡単
⁃ 管理画面の素晴らしい出来
⁃ 豊富なAPI
⁃ デメリット
⁃ 複雑なことはできないためビジネスロジックに合わないとつらい
⁃ 簡単に使えすぎてオペミスの発生確率が高そう
25
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
突然のshutdown
26
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
バイタルデータの活用
27
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
HealthKit
⁃ ヘルスケアに関するさまざまな項目を管理
⁃ iOS端末がヘルスケアデータの入れ物になるイメージ
⁃ 自動取得できるデータもあるが大半は別途入力が必要
⁃ HKStatisticsCollectionQueryを利用
⁃ ある期間内で指定したインターバルでデータ集計するAPI
⁃ 歩数グラフ作成に使っている
28
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
HealthKitでこまったこと
⁃ エラーが発生したときのデバッグ
⁃ compltionHandlerはprivateスレッドでバックグラウンド動作
⁃ closureのclosureとかで動いていたりするのでCrashlyticsで追う
のつらい。。。
⁃ 対応方法
⁃ 無駄にメモリを使わないようにいろんなところを最適化
29
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
iOS開発あれこれ
30
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
アプリ審査
⁃ HealthKitの利用
⁃ 利用用途をアプリ内で明記、が理由で数回リジェクト
⁃ レビュワーが変わる度に指摘
⁃ 細かい指摘をされるので審査依頼時に補足メッセージを添えると良い
31
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Swiftのバージョンアップ
⁃ Swift2.0で動いています
⁃ 1.1時代に開発スタート
⁃ 開発始めてすぐ1.2が出る
⁃ 実装自体もまだ小さかったのでMigrationはたいしたことなかった
⁃ WWDC2015でSwift2 + Xcode7発表
⁃ CocoaのAPIまわりはそれほど壊れなかった
⁃ Cocoapodでインストールしてるライブラリが大変
32
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
利用しているライブラリ
⁃ Alamofire
⁃ AlamofireImage
⁃ Realm
⁃ SwiftyJSON
⁃ Charts
33
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Alamofire
⁃ 1.3 → 2.0.X → 3.1.0 とバージョンアップ
⁃ 2.0からSwift 2に対応
⁃ 下位互換性の無いインターフェース変更が入った
⁃ 3.0はresponse serializationの改善をするためのリリース
⁃ 2.0をベースによりシンプルに
⁃ NSURLSessionを自前のものに差し替えたりできる
⁃ サーバーAPIをcallする処理が多かったの涙目で修正
34
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
AlamofireImage
⁃ Webから画像をダウンロード・キャッシュ
⁃ SDWebImageの代替ライブラリ
⁃ Alamofireのアドオンとして動作
Q. なんでSDWebImageを使ってないのか?
A. Pure Swiftで書かれたライブラリで統一したかったから
⁃ 画像fetchするベンチマーク結果はほぼ変わらなかった
⁃ Kingfisherも候補だったがAlamofireを導入済だったのでこちらに
35
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Realm
⁃ 0.95でConfigurationまわりの変更
⁃ Realm Javaと似た感じに
⁃ 0.96でNULLサポート
⁃ try catchのエラーハンドリングをやらないとエラー
⁃ エラーハンドリング対応のマイグレーションがめんどくさかった
⁃ Realmインスタンスを生成するところ全てで書く必要がある
36
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Charts
⁃ MPAndroidChartをiOS向けにportされたグラフライブラリ
⁃ iOSとAndroidで同じグラフが作れてべんり
⁃ githubではios-chartsという名前
⁃ 問題点
⁃ APIインターフェースの一部に互換性がない
⁃ 公式ドキュメントがAndroidのみ
⁃ ソースコードがドキュメント 😇
37
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
38
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
まとめ
39
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
まとめ
⁃ Webアプリ
⁃ セキュリティ対応は大変
⁃ セキュリティ要件を満たしてくれるgemあるので活用
⁃ ネイティブアプリ
⁃ 巨人の肩の上に立つ
⁃ Swiftライブラリは最新版を使いましょう
40
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ご静聴ありがとうございました
41

More Related Content

PPTX
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
Toshiharu Sugiyama
 
PDF
チラシルiOSでの広告枠開発
Satoshi Takano
 
PDF
DeNAインフラの今とこれから - 今編 -
Tomoya Kabe
 
PDF
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
Yosaku Toyama
 
PDF
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
Kentaro Matsumae
 
PDF
これからの Microservices
Toru Yamaguchi
 
PDF
DeNAのゲーム開発を支える技術 (クライアントサイド編)
denatech2016
 
PPTX
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
Toshiharu Sugiyama
 
チラシルiOSでの広告枠開発
Satoshi Takano
 
DeNAインフラの今とこれから - 今編 -
Tomoya Kabe
 
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
Yosaku Toyama
 
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
Kentaro Matsumae
 
これからの Microservices
Toru Yamaguchi
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
denatech2016
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA
 

What's hot (20)

PPT
セキュリティ業務の内製とチームメンバー育成
Toshiharu Sugiyama
 
PPTX
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
Toshiharu Sugiyama
 
PPTX
DeNA private cloudのその後 #denatechcon
DeNA
 
PPTX
DeNAが取り組む Software Engineer in Test
Masaki Nakagawa
 
PPTX
Anyca におけるUIフレームワークと スマホによるドア操作の仕組み
Shuhei Kawasaki
 
PPTX
革新的ブラウザゲームを支えるプラットフォーム技術
Toru Yamaguchi
 
PDF
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNA
 
PDF
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
DeNA
 
PPTX
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
DeNA
 
PPTX
DeNAのプログラミング教育の取り組み #denatechcon
DeNA
 
PDF
サービスの成長を支えるフロントエンド開発 #denatechcon
DeNA
 
PPTX
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNA
 
PPTX
AndApp開発における全て #denatechcon
DeNA
 
PDF
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
DeNA
 
PDF
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
dena_study
 
PPTX
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
 
PDF
DeNAのゲーム開発を支える Game Backend as a Service
Makoto Haruyama
 
PDF
DeNAの分析を支える分析基盤
Kenshin Yamada
 
PDF
DeNAのAIとは #denatechcon
DeNA
 
PDF
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
Recruit Technologies
 
セキュリティ業務の内製とチームメンバー育成
Toshiharu Sugiyama
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
Toshiharu Sugiyama
 
DeNA private cloudのその後 #denatechcon
DeNA
 
DeNAが取り組む Software Engineer in Test
Masaki Nakagawa
 
Anyca におけるUIフレームワークと スマホによるドア操作の仕組み
Shuhei Kawasaki
 
革新的ブラウザゲームを支えるプラットフォーム技術
Toru Yamaguchi
 
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNA
 
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
DeNA
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
DeNA
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNA
 
サービスの成長を支えるフロントエンド開発 #denatechcon
DeNA
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNA
 
AndApp開発における全て #denatechcon
DeNA
 
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
DeNA
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
dena_study
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
 
DeNAのゲーム開発を支える Game Backend as a Service
Makoto Haruyama
 
DeNAの分析を支える分析基盤
Kenshin Yamada
 
DeNAのAIとは #denatechcon
DeNA
 
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
Recruit Technologies
 
Ad

Viewers also liked (17)

PDF
メディアドゥが描く電子書籍配信ビジネスの未来
Japan Electronic Publishing Association
 
PDF
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Toru Kawamura
 
PDF
SmartNews Ads System - AWS Summit Tokyo 2015
SmartNews, Inc.
 
PPTX
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
Kazuho Oku
 
PDF
Webエンジニアが学ぶ自動運転を支える技術
Hideo Kimura
 
PDF
勉強会のすすめ
Tomohiro MITSUMUNE
 
PDF
About Haystack
Tomohiro MITSUMUNE
 
PDF
はじめてのSymfony2
Tomohiro MITSUMUNE
 
PPTX
DeNA Programming education
DeNA_pr
 
PPTX
Bajaj Auto Co Introduction
Praful Metange
 
PDF
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
Eli Hurvitz
 
PDF
Boletín IV enero 2016
Nueva Canarias-BC
 
PDF
Carrot City: The impact of food on the design of cities and buildings - Mark ...
SBCBreakfastSessions
 
PPTX
Η αγαπημένη μου πόλη
droula_
 
PPT
Pirkanmaan toisen asteen tvt-suunnitelma ITK2014
Riikka Lehto (Vanninen)
 
PPTX
Engaging Students Virtually Throughout the Enrollment Cycle
Marty Bennett
 
PDF
Populaarikulttuuri ja mainonta
dynamo&son
 
メディアドゥが描く電子書籍配信ビジネスの未来
Japan Electronic Publishing Association
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Toru Kawamura
 
SmartNews Ads System - AWS Summit Tokyo 2015
SmartNews, Inc.
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
Kazuho Oku
 
Webエンジニアが学ぶ自動運転を支える技術
Hideo Kimura
 
勉強会のすすめ
Tomohiro MITSUMUNE
 
About Haystack
Tomohiro MITSUMUNE
 
はじめてのSymfony2
Tomohiro MITSUMUNE
 
DeNA Programming education
DeNA_pr
 
Bajaj Auto Co Introduction
Praful Metange
 
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
Eli Hurvitz
 
Boletín IV enero 2016
Nueva Canarias-BC
 
Carrot City: The impact of food on the design of cities and buildings - Mark ...
SBCBreakfastSessions
 
Η αγαπημένη μου πόλη
droula_
 
Pirkanmaan toisen asteen tvt-suunnitelma ITK2014
Riikka Lehto (Vanninen)
 
Engaging Students Virtually Throughout the Enrollment Cycle
Marty Bennett
 
Populaarikulttuuri ja mainonta
dynamo&son
 
Ad

Similar to B2B2Cなヘルスケアサービスの作り方 (20)

PDF
電通国際情報サービス_AIテクノロジー部の研究開発と製品開発事例_191213
小川 雄太郎
 
PPT
アドテク案件入門講座
伊藤 孝
 
PDF
SHANON Marketing Conference 2017_シャノンも選んだTableauがあなたの会社のデータを語らせます
Nanae Matsushima
 
PDF
AWSでの金融系システム構築・運用勘所
ナレッジコミュニケーション
 
PDF
Base 20141011 1_for_slideshre
正善 大島
 
PPTX
ソフトウェアのように〇〇を作る
Taku Unno
 
PDF
サービスを成長させる為の開発について
tatsuya mazaki
 
PDF
リクルートにおけるPaaS活用事例
Recruit Technologies
 
PPTX
チーム開発におけるDevとOpsのプラクティス
Tsubasa Hirota
 
PDF
【SoftLayer事例】アップクロス株式会社
softlayerjp
 
PDF
Cloud Technologies and AI in IoT Era
Osaka University
 
PPTX
株式会社リブセンス会社説明資料(転職エージェント企業様向け)
Taku Unno
 
PDF
It業界理解
Jun Chiba
 
PDF
【15-A-5】ゲーミフィケーションエバンジェリストが説く、アプリ開発で見落としがちな「おもてなし」とは~面白さを伝える × 面白く魅せる~
Developers Summit
 
PDF
「レバレジーズ×ビズリーチ」マーケツール連携の裏側全部語ります。
Ken Kurahashi
 
PPTX
resin-dataに関する障害について
NTTDATA INTRAMART
 
PPTX
アプリ向け エラー・クラッシュ検知ツールの 運用品質について@Ques13th
Hiroki Nakai
 
PDF
Nci 2021recruit
YujiAwara
 
PDF
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~
Masanori Kaneko
 
PDF
仮想化・クラウド環境利用メリットを最大化する運用管理とは
Hinemos
 
電通国際情報サービス_AIテクノロジー部の研究開発と製品開発事例_191213
小川 雄太郎
 
アドテク案件入門講座
伊藤 孝
 
SHANON Marketing Conference 2017_シャノンも選んだTableauがあなたの会社のデータを語らせます
Nanae Matsushima
 
AWSでの金融系システム構築・運用勘所
ナレッジコミュニケーション
 
Base 20141011 1_for_slideshre
正善 大島
 
ソフトウェアのように〇〇を作る
Taku Unno
 
サービスを成長させる為の開発について
tatsuya mazaki
 
リクルートにおけるPaaS活用事例
Recruit Technologies
 
チーム開発におけるDevとOpsのプラクティス
Tsubasa Hirota
 
【SoftLayer事例】アップクロス株式会社
softlayerjp
 
Cloud Technologies and AI in IoT Era
Osaka University
 
株式会社リブセンス会社説明資料(転職エージェント企業様向け)
Taku Unno
 
It業界理解
Jun Chiba
 
【15-A-5】ゲーミフィケーションエバンジェリストが説く、アプリ開発で見落としがちな「おもてなし」とは~面白さを伝える × 面白く魅せる~
Developers Summit
 
「レバレジーズ×ビズリーチ」マーケツール連携の裏側全部語ります。
Ken Kurahashi
 
resin-dataに関する障害について
NTTDATA INTRAMART
 
アプリ向け エラー・クラッシュ検知ツールの 運用品質について@Ques13th
Hiroki Nakai
 
Nci 2021recruit
YujiAwara
 
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~
Masanori Kaneko
 
仮想化・クラウド環境利用メリットを最大化する運用管理とは
Hinemos
 

More from Tomohiro MITSUMUNE (7)

PDF
symfonyイントロダクション
Tomohiro MITSUMUNE
 
PDF
jQueryチュートリアル
Tomohiro MITSUMUNE
 
PDF
symfonyイントロダクション
Tomohiro MITSUMUNE
 
PDF
macbookについてみんなが誤解していること
Tomohiro MITSUMUNE
 
PPT
Linuxにおける開発環境
Tomohiro MITSUMUNE
 
PPT
15分でわかる分散バージョン管理システムgit
Tomohiro MITSUMUNE
 
PPT
DOM Scripting ことはじめ
Tomohiro MITSUMUNE
 
symfonyイントロダクション
Tomohiro MITSUMUNE
 
jQueryチュートリアル
Tomohiro MITSUMUNE
 
symfonyイントロダクション
Tomohiro MITSUMUNE
 
macbookについてみんなが誤解していること
Tomohiro MITSUMUNE
 
Linuxにおける開発環境
Tomohiro MITSUMUNE
 
15分でわかる分散バージョン管理システムgit
Tomohiro MITSUMUNE
 
DOM Scripting ことはじめ
Tomohiro MITSUMUNE
 

B2B2Cなヘルスケアサービスの作り方

  • 1. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 2016/01/29 Tomohiro Mitsumune DeSC Healthcare, Inc. B2B2Cなヘルスケ アサービスの作り方 1
  • 2. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. アジェンダ ⁃ DeSCヘルスケアとは? ⁃ Webサービス ⁃ ネイティブアプリ 2
  • 3. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 自己紹介 ⁃ @t_mitz ⁃ DeSCヘルスケア株式会社 サービス企画開発部 ⁃ 前職では新規サービス立ち上げや開発チームのマネージメントに従事 ⁃ DeNAではマンガボックスやNBPFの立ち上げに参加 ⁃ サーバーサイドエンジニアだったけど最近はiOSとAndroidがメイン ⁃ 齢35にして人生初のフルマラソン完走しました 3
  • 4. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. DeSCヘルスケア? 4
  • 5. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. DeSCヘルスケア 5
  • 6. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. KenCoM 6
  • 7. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Webサービス 7
  • 8. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. やったこと ⁃ アプリケーションの一部の設計・実装を担当 ⁃ ポータルサイト部分 ⁃ CI / CD ⁃ 社内でRailsベースのCI/CD環境が無かった ⁃ 環境の制限でSaaSが利用できないため仕組みを自作 ⁃ コードレビューおじさん ⁃ コンポーネント間でのデータ連係があるので設計を重点的に ⁃ Ruby書いた経験が少ない人もいたのでサポート(厳しめに) 8
  • 9. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 構成 ⁃ ポータルサイト ⁃ Rails4 ⁃ データAPI ⁃ Rails4 ⁃ grape 9
  • 10. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 10 システム全体
  • 11. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. セキュリティ ⁃ 要件が非常に厳しい ⁃ 厚生労働省が定めているセキュリティガイドラインに準拠 ⁃ データヘルス計画における健康情報の取扱い ⁃ 匿名データの作成・提供に係わるガイドライン ⁃ 医療情報システムの安全管理に関するガイドライン 11
  • 12. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. セキュリティ対策 12
  • 13. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. データベース構成 ⁃ 個人情報とそうでないデータでDBを分割 ⁃ セキュリティ対策のため秘匿性が高い個人情報はAPI経由で取得 ⁃ データの取得に必要なtokenはJWTで生成しAPIサーバーで検証 ⁃ MySQLもSSL接続 13
  • 14. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. データベース暗号化 ⁃ 個人情報に該当するデータは全て暗号化 ⁃ symmetric-encryptionというgemを利用 ⁃ http://rocketjob.github.io/symmetric-encryption/ ⁃ Railsから透過的にOpenSSLを使ったデータ暗号化 ⁃ 環境(dev, test, prod)ごとに異なる設定 ⁃ セキュリティ強度を高めるため暗号化に利用する を定期的に更新 - の生成や やIVのマスキング処理をするコマンドラインツールは gemを自作(非公開) 14
  • 15. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. CI / CD 15
  • 16. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ChatOPS IRC + Jenkins + Github Enterprise + sinatra + capistrano 16
  • 17. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Q. なんでSaaSを使っていないの? A. オンプレ環境で利用できるSaaSが無かった(当時) ⁃ またAWSやAzureはセキュリティポリシー的に利用不可 17
  • 18. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Q. なんでSlackじゃなくてIRCなの? A. Slackのアクセス元IPアドレスが固定できないため通 信元の制限がかけられなかったから ⁃ インバウンドな通信を許可するなら経路は限定 ⁃ SlackはインフラがAWSなので動的IP ⁃ ダメ元でサポートにメールしてみたけどやっぱりダメでした ⁃ 将来的に固定IPにできるようにしたいけど今は無理、という回答 18
  • 19. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ネイティブアプリ 19
  • 20. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. はじめに ⁃ やったこと ⁃ iOSアプリ開発 ⁃ Androidアプリ開発(少しだけ) ⁃ はなすこと ⁃ 主にiOS ⁃ 使っているライブラリの紹介 ⁃ 開発していて気づいたこと・こまったこと 20
  • 21. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ネイティブアプリの要件 ⁃ あくまでメインはWebアプリ ⁃ ネイティブアプリはアドオン的な立ち位置 ⁃ 導入先の健保でスマホ未所持な人が利用不可 ⁃ 営業先が限定されてしまい機会損失 ⁃ ネイティブアプリに期待されること ⁃ プッシュ通知で有資格者に健保からのお知らせ ⁃ バイタルデータを活用した機能 21
  • 22. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. プッシュ通知 22
  • 23. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Parse 23
  • 24. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Parse ⁃ プッシュ通知の基盤として利用 ⁃ 理由 ⁃ コストに対する費用対効果が非常に高い ⁃ 開発コスト・ランニングコスト ⁃ 100万ユーザ/月までは無料 24
  • 25. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Parseのメリット・デメリット ⁃ メリット ⁃ 組み込みが簡単 ⁃ 管理画面の素晴らしい出来 ⁃ 豊富なAPI ⁃ デメリット ⁃ 複雑なことはできないためビジネスロジックに合わないとつらい ⁃ 簡単に使えすぎてオペミスの発生確率が高そう 25
  • 26. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 突然のshutdown 26
  • 27. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. バイタルデータの活用 27
  • 28. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. HealthKit ⁃ ヘルスケアに関するさまざまな項目を管理 ⁃ iOS端末がヘルスケアデータの入れ物になるイメージ ⁃ 自動取得できるデータもあるが大半は別途入力が必要 ⁃ HKStatisticsCollectionQueryを利用 ⁃ ある期間内で指定したインターバルでデータ集計するAPI ⁃ 歩数グラフ作成に使っている 28
  • 29. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. HealthKitでこまったこと ⁃ エラーが発生したときのデバッグ ⁃ compltionHandlerはprivateスレッドでバックグラウンド動作 ⁃ closureのclosureとかで動いていたりするのでCrashlyticsで追う のつらい。。。 ⁃ 対応方法 ⁃ 無駄にメモリを使わないようにいろんなところを最適化 29
  • 30. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. iOS開発あれこれ 30
  • 31. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. アプリ審査 ⁃ HealthKitの利用 ⁃ 利用用途をアプリ内で明記、が理由で数回リジェクト ⁃ レビュワーが変わる度に指摘 ⁃ 細かい指摘をされるので審査依頼時に補足メッセージを添えると良い 31
  • 32. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Swiftのバージョンアップ ⁃ Swift2.0で動いています ⁃ 1.1時代に開発スタート ⁃ 開発始めてすぐ1.2が出る ⁃ 実装自体もまだ小さかったのでMigrationはたいしたことなかった ⁃ WWDC2015でSwift2 + Xcode7発表 ⁃ CocoaのAPIまわりはそれほど壊れなかった ⁃ Cocoapodでインストールしてるライブラリが大変 32
  • 33. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 利用しているライブラリ ⁃ Alamofire ⁃ AlamofireImage ⁃ Realm ⁃ SwiftyJSON ⁃ Charts 33
  • 34. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Alamofire ⁃ 1.3 → 2.0.X → 3.1.0 とバージョンアップ ⁃ 2.0からSwift 2に対応 ⁃ 下位互換性の無いインターフェース変更が入った ⁃ 3.0はresponse serializationの改善をするためのリリース ⁃ 2.0をベースによりシンプルに ⁃ NSURLSessionを自前のものに差し替えたりできる ⁃ サーバーAPIをcallする処理が多かったの涙目で修正 34
  • 35. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. AlamofireImage ⁃ Webから画像をダウンロード・キャッシュ ⁃ SDWebImageの代替ライブラリ ⁃ Alamofireのアドオンとして動作 Q. なんでSDWebImageを使ってないのか? A. Pure Swiftで書かれたライブラリで統一したかったから ⁃ 画像fetchするベンチマーク結果はほぼ変わらなかった ⁃ Kingfisherも候補だったがAlamofireを導入済だったのでこちらに 35
  • 36. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Realm ⁃ 0.95でConfigurationまわりの変更 ⁃ Realm Javaと似た感じに ⁃ 0.96でNULLサポート ⁃ try catchのエラーハンドリングをやらないとエラー ⁃ エラーハンドリング対応のマイグレーションがめんどくさかった ⁃ Realmインスタンスを生成するところ全てで書く必要がある 36
  • 37. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Charts ⁃ MPAndroidChartをiOS向けにportされたグラフライブラリ ⁃ iOSとAndroidで同じグラフが作れてべんり ⁃ githubではios-chartsという名前 ⁃ 問題点 ⁃ APIインターフェースの一部に互換性がない ⁃ 公式ドキュメントがAndroidのみ ⁃ ソースコードがドキュメント 😇 37
  • 38. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 38
  • 39. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. まとめ 39
  • 40. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. まとめ ⁃ Webアプリ ⁃ セキュリティ対応は大変 ⁃ セキュリティ要件を満たしてくれるgemあるので活用 ⁃ ネイティブアプリ ⁃ 巨人の肩の上に立つ ⁃ Swiftライブラリは最新版を使いましょう 40
  • 41. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ご静聴ありがとうございました 41