Swift3とバックエンドサービスを使ったサーバーレスな企業向けiOSアプリの開発手法 / Swift3 iOS App Development Method

635fdadd58a5f4ebb4369a1d9fade025?s=47 AppPot
January 20, 2017

Swift3とバックエンドサービスを使ったサーバーレスな企業向けiOSアプリの開発手法 / Swift3 iOS App Development Method

635fdadd58a5f4ebb4369a1d9fade025?s=128

AppPot

January 20, 2017
Tweet

Transcript

  1. Swift3とバックエンドサービスを使った、 サーバーレスな企業向けiOSアプリの開発⼿法 2017೥1݄20೔ NCσβΠϯˍίϯαϧςΟϯάגࣜձࣾ

  2. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 内容 所要時間 企業向けアプリ開発の現状と課題 10分 AppPotの概要説明 20分 Demo 40分 Demo 1 アプリの登録(管理画⾯) Demo 2 SDKの導⼊と初期化 Demo 3 モデルの作成と操作(ローカル、サーバー) Demo 4 その他の機能の紹介 Q&A 10分  予備 10分 アジェンダ
  3. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 企業向けアプリ開発の現場と課題
  4. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 企業のスマートデバイス活⽤における課題 n  アプリを多数作成したいが、コストがかかってしまう ü  アプリごとにサーバーを構築・運⽤している ü  アプリごとに同じような機能を重複して開発している n  アプリ開発のスピードが業務ニーズに追いついていない ü  アプリ以外にもサーバーの構築、開発が必要 ü  デザインのいいものがなかなか難しい n  タブレットを導⼊したが、カタログなど ごく⼀部に活⽤範囲が制限されている ü  業務で使⽤するデータのセキュリティ確保や、 既存システムとの連携の⼿法が確⽴されていない
  5. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 企業のスマートデバイス活⽤における課題 n  アプリを多数作成したいが、コストがかかってしまう ü  アプリごとにサーバーを構築・運⽤している ü  アプリごとに同じような機能を重複して開発している n  アプリ開発のスピードが業務ニーズに追いついていない ü  アプリ以外にもサーバーの構築、開発が必要 ü  デザインのいいものがなかなか難しい n  タブレットを導⼊したが、カタログなど ごく⼀部に活⽤範囲が制限されている ü  業務で使⽤するデータのセキュリティ確保や、 既存システムとの連携の⼿法が確⽴されていない しかし現状は どうだろう?
  6. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 企業向けアプリ開発の現場と課題 〜技術的観点〜
  7. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 全体システムでのアプリの位置付け 7 ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼンテー ション レイヤー Web Server Web PC / Smart Device 既存システムの概念図
  8. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 全体システムでのアプリの位置付け 8 ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼンテー ション レイヤー Web Server Web PC / Smart Device App Smart Device アプリが追加されたシステムの概念図
  9. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 既存システムに対する影響度 9 ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼンテー ション レイヤー Web Server Web PC / Smart Device App Smart Device アプリが追加されたシステムの概念図 影響の 度合い 影響の 度合い 影響の 度合い 影響の 度合い
  10. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. アプリという新しい要素の追加による影響 10 ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼンテー ション レイヤー Web Server Web PC / Smart Device App Smart Device アプリが追加されたシステムの概念図 影響の 度合い • iOS/Androidという新しい技術 • 膨⼤なライブラリー(Swiftよりこちらの知識がもっと ⼤事かも?) • 不慣れな設計パラダイム • 変化の速度が速い • 経験豊富な⼈材が少ない(特に、SIの経験者とアプリ 開発者は重ならない場合が多い) • 設計・⽂書・協業に対するベストプラクティスの不在 • 動画・⾳声・画像など、マルチメディアファイルを取 り扱うことが多い。 • 多様な端末環境 • 端末のセンサーとのやりとりが必要が場合が多い。
  11. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. プレゼンテーションレイヤーに対する影響 11 ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼンテー ション レイヤー Web Server Web PC / Smart Device App Smart Device アプリが追加されたシステムの概念図 影響の 度合い • JSON、Restなど、⽐較新しい技術の採⽤ (Webサービス等、既存のAPIの使⽤も可能) • 既存のWebアプリとの共存問題が⽣じる(I/F の粒度が異なる場合がある) • 認証⽅式・セッションの有効期間などの設定 が異なる場合がある
  12. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ビジネスロジック・ストレージに対する影響 12 ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼンテー ション レイヤー Web Server Web PC / Smart Device App Smart Device アプリが追加されたシステムの概念図 影響の 度合い • Restなど、⽐較新しい技術の採⽤ (Webサービス等、既存のAPIの使⽤も 可能) • 既存のWebアプリとの共存問題が⽣じ る(I/Fの粒度が異なる場合がある) • セッションの有効期間などの設定が異 なる場合がある • I/Fの粒度の差による修正が⽣じ る • アプリ運⽤に関するデータが追加 される
  13. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 追加で考慮が必要な要素(パッケージと外部サービス) 13 ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼンテー ション レイヤー Web Server App Smart Device MDM APNS APNS AppStore 企業システム 外部連携 審査ガイドライン及び審査期間の考慮 iTunes Connect Apple Developer Program MAM •  端末の保護 •  通信の保護 •  データの保護
  14. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 追加で考慮が必要な要素(パッケージと外部サービス) 14 ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼンテー ション レイヤー Web Server App Smart Device MDM APNS APNS AppStore 企業システム 外部連携 審査ガイドライン及び審査期間の考慮 iTunes Connect Apple Developer Program MAM •  端末の保護 •  通信の保護 •  データの保護 複数のアプリが 必要になったら?
  15. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 追加で考慮が必要な要素(パッケージと外部サービス) 15 APNS AppStore iTunes Connect ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼン テーション レイヤー Web Server App APNS 複数のアプリが あるシステム MDM MAM 企業システム ビジネス ロジック レイヤー データ ストア DBMS NonSQL M/W プレゼン テーション レイヤー Web Server App APNS
  16. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. アプリ バックエンド サーバー アプリを含む企業システムの理想的なアーキテクチャー 16 APNS AppStore iTunes Connect App MDM MAM 企業システム App App 既存システム アプリ 専⽤DB アプリ共通機能 アプリ共通機能 アプリ共通機能 既存システム 既存システム 外部システム
  17. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. アプリの基本的なアーキテクチャー アプリ View Controller Model いわば、MVCモデル
  18. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. しかし現実は・・・ アプリ View Controller Model Networ king Keychain Local Storage APNS 受信 データ 保護 データ キャッシュ エラー 処理 認証・認可 データ 同期 オフライン 対応 フォーマット 変換 サーバー ⾊々
  19. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. それで、もしこれらの殆どを無視することができれば? アプリ View Controller Model Networ king Keychain Local Storage APNS 受信 データ 保護 データ キャッシュ エラー 処理 認証・認可 データ 同期 オフライン 対応 型 変換 サーバー ⾊々
  20. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. それで、もしこれらの殆どを無視することができれば? アプリ View Controller Model Networ king Keychain Local Storage APNS 受信 データ 保護 データ キャッシュ エラー 処理 認証・認可 データ 同期 オフライン 対応 型 変換 サーバー ⾊々 できます!!
  21. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. それで、もしこれらの殆どを無視することができれば? アプリ View Controller Model Networ king Keychain Local Storage APNS 受信 データ 保護 データ キャッシュ エラー 処理 認証・認可 データ 同期 オフライン 対応 型 変換 サーバー ⾊々 ちなみに、なんで ここは残しているか?
  22. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotとは
  23. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 特徴③ 特徴② AppPotとは 企業のスマートデバイス活⽤を⽀援する モバイルアプリの開発/運⽤プラットフォームです 既存の社内システムとの 連携が容易 サーバー開発不要 企業で必要な機能を 実装済み 特徴① ίετ࡟ݮº։ൃظؒ୹ॖ
  24. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotが提供する主な機能 ①  企業単位のグループ、ユーザー及びアプリの権限管理 ②  ログイン/ログアウトなどの認証 (LDAP / Active Directory / Google Apps連携も可能) ③  端末とサーバー間のデータの同期 ④  アプリの使⽤状況、エラーの情報収集 ⑤  端末内のデータの暗号化 ⑥  プッシュメッセージの送受信(対象・時間指定可能) ⑦  アプリからのEメールの送受信 ⑧  ファイルの送受信 ⑨  他システムとの連携(データベース、Webサービス他)
  25. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotの導⼊効果 サーバー開発が不要でモバイルアプリの導⼊のリードタイム、コスト削減 ユーザー 部門 IT部門 モバイルアプリ エンジニア サーバーアプリ エンジニア インフラ エンジニア アプリ作成依頼 作業依頼 データセンター を借りなきゃ! セキュリティの設計は 時間がかかる。 どうやって基幹システ ムに接続するか 画⾯は早くできたん だけど・・・ 2ヶ⽉以内に マーケティング⽤ のアプリが必要! 2ヶ⽉は 無理です ユーザー部門 IT部門 モバイルアプリ エンジニア アプリ作成依頼 作業依頼 画⾯だけの開発 であれば、すぐ できます 2ヶ⽉以内に マーケティング⽤の アプリが必要! OKです 従来型のアプリ開発 AppPotを使⽤したアプリ開発
  26. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. クラウド AppPotの概要アーキテクチャ AppPotサーバー Systems 既存システム群 Systems 他システム データ コネク ター         認証・認可 データ管理 プッシュ メッセージ ロギング 管理コンソール データベース、 Webサービス等 アプリ配布 デバイス管理 AppPot DB Client Application SDK Client Application SDK Client Application SDK Client Application AppPot SDK AppPot機能 提供範囲 AppPot機能 提供範囲外 スマートフォン/タブレット システム連 携 システム連携 API MDM 凡例 ユーザー管理 アプリ管理
  27. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 企業向けに特化したバックエンドサービス 企業システムとの連携 ActiveDirectoryや Googleアカウントとの 認証の連携、既存のDB やWebサービスなど他 システム連携など企業 システムで必要な機能 が⽤意されている DBはNoSQLではなく あえてRDBMSを採⽤ 複雑なJoinなど業務シ ステムのデータを扱う のに⼗分な機能がある クラウドでもオンプレ ミスでも企業のポリ シーに合わせて選択可 能 オンプレミスからクラ ウドへの移⾏も可能
  28. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotデモ 管理画面でアプリを登録
  29. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. アプリ開発の前の準備 ①  アカウントの登録 •  http://apppot.jpから申し込む ②  ユーザーグループ、ユーザーの登録 •  LDAP、ActiveDirectoryと連携可能 ③  アプリの登録 •  appId, Versionなどの情報を登録 •  必要に応じてAPNS⽤の証明書をアップロード •  アプリを使⽤できるユーザーグループの指定 n  デモ •  管理画⾯を参照 •  各メニューの紹介
  30. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotデモ AppPotのSDKを導入
  31. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPot SDK for Swiftを導⼊ ①  新しいプロジェクトを作成し、あるいは既存プロジェクトにSDK を追加する •  「AppPotSDKforSwift.framework」をプロジェクトターゲットのGeneralタブの Embedded Binaryに追加する。
  32. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPot SDK for Swiftを導⼊ ②  ターゲットのCapibilitiesタブにて下図のようにKeyChain Sharingをオンに設定する ここ!
  33. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ③  AppPotの機能を使いたいコードの先頭にてAppPotSDKforSwift をimportする AppPot SDK for Swiftを導⼊ ここ!
  34. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ③  AppPotの機能を使いたいコードの先頭にてAppPotSDKforSwift をimportする AppPot SDK for Swiftを導⼊ ここ! 終了!
  35. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. n  もし、SSLを使⽤しないなら、特定URLに対して⾮SSL通信を許可 する設定をする •  Info.plistに下記の設定を追加する <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>trial.apppot.net</key> <dict> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict> 参考:その他の設定
  36. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotデモ AppPot SDKを利用した開発
  37. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. n  アプリはいつでも修正・機能追加ができます n  サーバー側の開発は不要です 開発の基本的な流れ ①アプリの 初期設定 ②モデルクラス の定義 ③アプリとサー バーの初期化 ④アプリの実装 必要に応じて修正 リリース
  38. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ①アプリの初期設定 n  AppDelegate.swiftに下記のコードを追加する 管理画⾯で登録した アプリの情報を設定 その他、アプリで使 う機能を指定
  39. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ②モデルクラスの定義 n  全てのモデルクラスはAPObjectを継承 n  各クラスを定義する際にクラスの振る舞いも定義する •  configureModelというファンクションの中で必要な振る舞いを指定 n  つまり、クラス定義をしておけばその後はモデルの詳細を気にせず使 うことができる n  モデルクラスに指定できる項⽬ •  データの保存場所:ローカル、サーバー、両⽅ •  データの権限:ユーザー、グループ、全体 •  排他制御の有無 •  ⾃動更新の有無と更新間隔、⾃動更新対象データの範囲 •  データ保持期間 •  暗号化の有無と暗号化対象の属性
  40. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ②モデルクラスの定義 ここ!
  41. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ③アプリとサーバーの初期化 n  recreateDatabaseのパラメーターをtrueにしてprepareToUse関 数を呼び出す(その後はfalseに変える) ここ!
  42. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ③アプリとサーバーの初期化 n  初期化作業の詳細 AppPot サーバー DB DB
  43. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ③アプリとサーバーの初期化 n  モデルクラスを変更したらrecreateDatabaseのパラメーターを trueにしてもう⼀回実⾏するだけ! ここ!
  44. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ④アプリの実装 アプリ View Controller Model Networ king Keychain Local Storage APNS 受信 データ 保護 データ キャッシュ エラー 処理 認証・認可 データ 同期 オフライン 対応 型 変換 サーバー ⾊々
  45. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotデモ 実はすごい、モデルクラスの力!!
  46. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ②モデルクラスの定義 ここ!
  47. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. n  persistentType = APPersistentServerOnly •  ⽣成したデータはサーバーだけに保存される 参考:モデルクラス定義の意味 AppPot サーバー Task
  48. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. n  persistentType = APPersistentLocalOnly •  ⽣成したデータは端末だけに保存される 参考:モデルクラス定義の意味 AppPot サーバー Task
  49. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. n  persistentType = APPersistentLocalAndServer •  ⽣成したデータは端末とサーバーの両⽅に保存される 参考:モデルクラス定義の意味 AppPot サーバー Task Task
  50. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. n  persistentType = APPersistentLocalAndServer n  autoRefresh = true •  ⽣成したデータは端末とサーバーの両⽅に保存される •  サーバーと端末の情報が⾃動的に同期される 参考:モデルクラス定義の意味 AppPot サーバー Task Task 同期
  51. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. n  オフライン対応① •  オフラインの場合は端末に保持したキャッシュデータを使⽤する 参考:モデルクラス定義の意味 AppPot サーバー Task Task オフライン データの同期 オンライン キャッシュの使用
  52. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. キュー n  オフライン対応② •  サーバーに保存すべきデータを適切にサーバーに送信できなかった場合、 失敗したメッセージはアプリ内に保持され、定期的に再送される 参考:モデルクラス定義の意味 AppPot サーバー Task Task Task
  53. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. モデルクラスによってカーバーできる機能 n  サーバーとのやりとり •  ネットワーク処理 •  JSONとオブジェクト間の変換処理 •  オフライン時の対応 n  ローカルデータベースのハンドリング n  エラー処理、失敗時のリトライ n  データの同期 n  データの暗号化・復号化処理 n  データの排他制御・トランザクション管理 n  権限管理 n  ライフサイクル管理
  54. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 参考:モデルクラスに対するクエリ実⾏ n  APQueryというクラスでほぼSQLと同様の機能を提供 n  端末やサーバーというデータの保存場所を気にせず同じ書き⽅でデータ の取得が可能 n  ページング、データキャッシュー、取得件数指定、グルーピング、ソー ティングなどの機能でパフォーマンス向上
  55. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotデモ モデルクラス以外の便利な必須機能
  56. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPot SDKが提供する機能 n  ログイン・ログアウト n  APNS受信のためのデバイス登録 n  動的に変更可能なモニタリン グ・ローギング n  ユーザーグループ管理 n  ユーザー管理 n  権限⼀覧取得 n  ファイル送受信 n  プッシュ〜メッセージ送信 n  メール送信 n  データベース作成・再作成
  57. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. サマリー
  58. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. アプリ開発をより⾼速・簡単に、しかしUXは最⾼に!! アプリ View Controller Model Networ king Keychain Local Storage APNS 受信 データ 保護 データ キャッシュ エラー 処理 認証・認可 データ 同期 オフライン 対応 型 変換 サーバー ⾊々
  59. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. 企業向けだけではない!:⼀般的なアプリの開発サイクル 59 企画 デザイン 実装 リリース 1〜3ヶ月 分析 破棄 体制: 企画者1名、デザイナー1名、 開発者1〜2名
  60. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ⼀般的なアプリの開発サイクル 60 企画 デザイン 実装 リリース 1〜2ヶ月 分析 破棄 体制: 企画者1名、デザイナー1名、 開発者1〜2名 こんなもの
  61. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ⼀般的なアプリの開発サイクル 61 企画 デザイン 実装 リリース 1〜3ヶ月 分析 破棄 体制: 企画者1名、デザイナー1名、 開発者1〜2名 密なコラボ ワンチーム 密なコラボ、 ワンチーム
  62. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ⼀般的なアプリの開発サイクル 62 企画 デザイン 実装 リリース 1〜2ヶ月 分析 破棄 体制: 企画者1名、デザイナー1名、 開発者1〜2名 •  完成度よりはスピード •  Try & Error •  反復
  63. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. ⼀般的なアプリの開発サイクル 63 企画 デザイン 実装 リリース 1〜3ヶ月 分析 破棄 体制: 企画者1名、デザイナー1名、 開発者1〜2名 •  反応分析 •  フィードバック •  改善 or 破棄
  64. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotがあればこのプロセスもより⾼速にできます! 64 企画 デザイン 実装 リリース 1〜3ヶ月 分析 破棄 体制: 企画者1名、デザイナー1名、 開発者1〜2名 AppPot 全対サイクルをより ⾼速に!!!
  65. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. Q&A
  66. Copyright ©2016, NC Design & Consulting Co., Ltd. All rights

    reserved. AppPotの情報をフォローしてください! @app_pot @royskimJP @NextConceptDC セミナーの情報や、AppPotの新機能のアナウンスなどSNSを使って ⾏っています。ぜひフォローしてください!
  67. お問合わせ info@ncdc.co.jp