Anzeige

iOS豆知識ver0.0.5

Software Developer um ppengotsu
11. Jan 2016
Anzeige

Más contenido relacionado

Presentaciones para ti(20)

Similar a iOS豆知識ver0.0.5(20)

Anzeige
Anzeige

iOS豆知識ver0.0.5

  1. iOS開発豆知識 佐久間 捷矢(ppengotsu) ver:0.0.5(開発途中)
  2. 私 • 佐久間 捷矢 • twitter:ppengotsu • ブログ:https://blog.ppen.info/ • iOSアプリの開発の仕事 ‣ 最近は、VRとかUnityもちょっと手を出しは じめたー。iOSはSwiftで書きたい派
  3. このスライドとは • 対象:iOSエンジニア以外も(ディレクターとか) • 内容:iOSアプリ開発について知っておいた方が いいなーと思う事 • 間違いがあったら、コメントください ‣ Twiiterでppengotsu宛でもなんでも
  4. プッシュ通知 Swift Swift Swift Swift Swift Swift Swift ATS問題 強制アップデート SearchAPI ストアリジェクト 多言語対応 開発周期 QuickAction センサ Androidとの違い
  5. Swift
  6. Swiftとは • diOSアプリを開発するために使う言語 • 古いものをObjective-Cという • 日本語と英語なぐらい違う • 現在は、バージョン2 • 公式:https://developer.apple.com/ swift/
  7. なぜ、Swift? • プログラマーには、書きやすい • AppleがObjective-CをSwiftに寄せてる。。 ‣ Objective-CからSwiftへ自動変換のため? ‣ Swiftがそろそろ生まれて2年。。 ➡ Objective-Cでの寿命も残りわずか? ➡ 突然のサポート外!! ➡ Swiftで作るしかない!!!
  8. Swiftにすると幸せ? • プログラマーはモチベ上がります • QiitaとかみるとObjective-Cの新しい記事がほ ぼない。。。 • Swiftの新しい記事は多い • 本もSwiftばっか。 • 勉強会もSwiftばっか • WWDC(Appleの発表会)もサンプルはSwift
  9. オープンソースだ • GitHubで公開された ‣ https://github.com/apple/swift
  10. オープンソースだ • Swiftがオープンソースになったぜ。 ‣ サーバ側も対応 ➡ http://www.moongift.jp/2015/12/ perfect-%E3%82%B5%E3%83%BC %E3%83%90%E3%82%B5%E3%82%A4 %E3%83%89%E3%81%A7%E5%8B %95%E4%BD%9C %E3%81%99%E3%82%8Bswift%EF%BC %81/
  11. どう変わった? • Swiftの開発に世界中から意見やソースが注がれ る ‣ どんどんよくなるはず • 今後の動きがわかる ‣ 新しいSwift3が、2016秋公開とか • サーバ側もSwiftで開発できる • MacOS X以外にもLinuxでも動く
  12. 今後の対応 • Swift2.2を2016春リリース予定 • Swift3を2016秋リリース ‣ Swift3では、破壊的変化があるので、すくな くとも半年前から対応する必要があるでしょ う。
  13. プッシュ通知
  14. プッシュ通知とは • 右みたいのみた事ありますよね? • ユーザにお知らせを出したり
 時間を通知したりできる。 ‣ ユーザにアプリの存在をアピール ➡ ユーザが戻ってくるかも ➡ アプリが継続利用されるかも SmartNewsさんの例
  15. プッシュの仕組み • 普通のプッシュ通知するとき Appleサーバユーザ あなたのサーバ 1:〇〇IDに
 プッシュ送って 2:プッシュ送信 3:画面に通知。
 音もなったり
  16. プッシュの仕組み • ローカルプッシュ通知するとき Appleサーバユーザ あなたのサーバ 2:画面に通知。
 音もなったり 1:通知送信
  17. プッシュの仕組み • サイレントプッシュ通知するとき Appleサーバユーザ あなたのサーバ 1:〇〇IDに
 プッシュ送って 2:プッシュ送信 3:画面に通知。
 音もなったり
  18. プッシュ使い分け • 普通のプッシュ ‣ お知らせなど出すときに。 ‣ サーバの状態によって出したり。 • ローカルプッシュ ‣ 端末の状態だけで決まるお知らせ。 • サイレントプッシュ+ローカルプッシュ ‣ ダウンロードが終わった時に通知したいとき
  19. プッシュ注意 • 送りすぎてはいけない。 ‣ 昔、やたらプッシュうつアプリがありました ‣ うざいのである。 ➡ ユーザがアンインストールするかも
  20. プッシュ注意 • プッシュを送る前に事前に許可を求める必要あ り 妖怪ウォッチぷにぷにさん の例
  21. プッシュ注意 • 事前の許可は、起動直後でなくてよい ‣ チュートリアル終わった後 ‣ ある程度アプリ起動されたら ➡ ユーザが、いいなと思うタイミングで許可 をもらうとスムーズかも。
  22. ATS問題
  23. ATS • iOS9から対応必須 ‣ ネット通信に制限 ➡ 通信を暗号化するものしか使えない(https) ➡ http://blog.ppen.infoみたいにhttpで始ま るものにアクセスできなくなる
  24. ATS、なにが問題? • APIは全てhttpsで通信してますか? • ブログは、httpsでアクセスできますか? • 会社のホームページは大丈夫? • Safariからも開けなくなるかも? • Google検索もhttpsじゃないと不利っぽいよ ‣ http://googlewebmastercentral- ja.blogspot.jp/2014/08/https-as-ranking- signal.html
  25. ATS対応ってええの? • httpsに対応した ‣ 通信が暗号化されます。 ‣ 指定したサーバと通信していることがだいた い保証されます。 ‣ https2やSpdyに対応できます。 ➡ 詳しくはかかないけど、webページの読み 込みが早くなったりする。
  26. ATSに対応したい • SSL証明書を入手だ • 無料も有料もあるよ ‣ 企業レベルで、存在を証明できるかどうかとか 違う。 ‣ https://www.symantec.com/ja/jp/products- solutions/families/?fid=ssl-certificatesd • http://www.websec-room.com/ 2015/11/30/2363
  27. 強制アップデート
  28. 強制アップデート? • アプリを久しぶりに起動 ‣ AppStoreに飛ばされた ‣ アップデートしろってアラートがで続ける • 上記みたいなことなかっただろうか?
  29. なぜ? • 最新のアプリをつかってほしいから • アプリとwebサイトの最大の違い ‣ アプリは、古いものをいつまでも使える ➡ バグがあってもそのまま使われちゃう
  30. なぜ? • 市場でアプリのバージョンがバラバラだとサポー トが大変!! ‣ APIをそれぞれのアプリバージョンごとに準備 するなんてくそ!! • ユーザが、手動更新してくれるなんて考えられな い
  31. どうすればええの? • アプリ起動時に、サーバのサポートアプリバージョ ンを取得するようにする • APIアクセスするときにサーバのサポ∼とアプリ バージョンみるようにするなど • 絶対強制アップデートするって必要はない ‣ プッシュと同じで、アップデート間隔が短いア プリだとうざくなってしまう
  32. SearchAPI
  33. SearchAPIって • iOS9から、SpotLightが復活 ‣ 検索対象が、アプリやwebサイ
 トになったよ COMICOさんの例
  34. 検索対象に登録 • アプリから検索対象にしたいものを登録できる ‣ アイコンやタイトル、説明などなど • 登録範囲 ‣ 端末内だけに登録 ‣ 他のユーザにも見えるように登録 ➡ 個人情報でないものは、他のユーザに見える 登録でよさそう。
  35. なにがええの? • 他のユーザに見えるように登録すると、アプリ インストールを促せる • アプリの履歴に、簡単アクセスできるようにな る。 • まだ、すごいってアプリがないので狙い目? ‣ 参考:http://qiita.com/mono0926/items/ 27af791065ed919255e0 • 今後、どんどん使われていくかも
  36. 参考 • web対応チェック ‣ 公式 ➡ https://search.developer.apple.com/ appsearch-validation-tool/
  37. ストアリジェクト
  38. Appleの審査 • Appleが提供しているストアに iOS ,AppleTV,Macでのアプリを出すには
 審査があります • 申請してから、2週間ぐらいで結果が帰ってき ます。 • リジェクト→不合格→審査→リジェクト→。。
  39. リジェクト理由 • よく聞くのを、下記に示す ‣ アプリが単純すぎる ➡ 機能が単発だと言われちゃう ‣ バグでアプリが落ちる ➡ 審査中にアプリが落ちると言われます。審査 はちょっと特殊な環境のときがあります。リ ジェクトされたときに、動作環境を聞いてみ よう
  40. リジェクト理由 • エロすぎる • ユーザの体験を邪魔する ‣ Appleのストアで、エロのは出せません。 ‣ ユーザ体験を邪魔してはいけない。 ➡ あるけどって思った? ➡ まっくろな方法がある。
  41. ストアリジェクト 真っ黒な対策
  42. 審査の抜け道 • 審査が問題 ‣ 審査を通過したい。。。 ➡ 審査の時だけ、健全な挙動すれば。。。 • 上記のように、審査中だけ健全な挙動だけすれ ば審査に通るらしい。 ‣ リリースしたあとに、不健全に!! ‣ Appleにばれるとバンされます
  43. 審査に必要なもの • 審査は、実際にアプリを使われます ‣ ライブラリを自動検索して、だめなものをつ かっているとバレます。 ‣ ログインが必要なアプリの場合は、テストアカ ウントを教えてあげましょう。 ‣ 審査までに、サーバの実装は終わっている必 要があります。
  44. 審査に必要なもの • アプリのスクリーンショットや、iTunesでの説 明文やアプリ規約文書などです • アプリの動作がわかりにくい場合は、動作中の 動画をとっておくといいですね。審査で必要って いわれるかも
  45. ストアその他 • ストアは、各国ごとにそれぞれ分かれています。 ‣ なので、各国ごとに、ダウンロードできるア プリが違います。 ➡ 例えば、アメリカのストアにAアプリあるけ ど、日本のストアにはないなど
  46. トップを狙え
  47. トップを狙えとは • AppStoreでおすすめに乗る ‣ 新しいiOSの機能を使ってい
 と選ばれやすそうに見える ‣ AppleWatchが出たときは
 Watch対応のアプリがよく
 でていたようなかんじ
  48. 乗ると • タダで、宣伝になる • 乗ると自慢できそう ‣ 僕はのったことまだない。。。 • ランキングよりうもれることがなさそう ‣ ランキングは、闇。お小遣い稼ぎアプリと か。。。ちょっとずつ浄化してるけど。。。
  49. 多言語対応
  50. 多言語対応 • iOSアプリは、コードで設定しておくと、
 端末の設定によって表示言語が変わります。 • ストアに載ってる説明も動作環境によって表示言 語が変わります。
  51. どうすればいい? • アプリは英語に基本対応 ‣ 日本語は、追加対応にしておく ➡ すると、日本語の環境では、日本語表示 ➡ その他の言語圏では、英語で表示 ➡ 上記が、一番楽な対応です。最低でも英語あ れば、なんとかなりそう。
  52. あとで多言語対応? • 1つの言語しか対応してないと後からはほぼ無 理。。。 ‣ 自分がそうでした。。。。 ‣ コードで多言語に対応するには、それようの コードを前もって書く必要がある。 ‣ 工数さえあれば、できなくないけど。。。
  53. 開発
  54. 開発 • 開発で使うツール、環境など書く
  55. 開発環境 • Mac 系列のPC ‣ 比較的新しいMacbook系がいいです ‣ MacProがいいです。 • Xcode ‣ Appleが提供するエディタ ‣ 無料 ‣ これで十分 • Swift ‣ プログミング言語。今はこれ使え。
  56. 開発環境 • Unity,UnrealEngine ‣ ゲーム作るなら使うもの ‣ 3Dや2Dのものを扱いやすくしたエディタ ‣ このごろ無料になった ‣ 有料の機能を使うともっとすごい
  57. 開発アカウント • ストアに出すには、年間約1万払って、アップル デベロッパーアカウントを取得 ‣ 実機にインストールするだけなら、このごろ無 料になった。Xcode7を使うとできる。 • 社内配布専用のデベロッパーアカウントもある ‣ 有料 ‣ ストアでなく、社内だけで配布できる ‣ テストで、社内配布するならほしいもの
  58. iOSのCI • iOSでも継続インテグレーション • CircleCI,TravisCI ‣ 自動でビルドしてくれる環境 ‣ Gitにプッシュしたら、テスト実行とか • Jenkins ‣ 自前で、ビルド、テスト実行や配布などを行え る
  59. iOSのCI • fastlane ‣ 最新のツール ‣ ビルド、テスト配布、ipa作成、アプリ申請などが 自動化 ‣ まだつかったことないです。。 ‣ 上記であげたものは、開発においてめんどうなと ころなので、自動化できるとよい! ‣ 参考:http://qiita.com/appwatcher/items/ a3280ecdef7e4d9e5e24
  60. テスト配布 • アプリをテストするために、配布する • DeployGate ‣ もともとmixiのツールだったはず ‣ インストールが簡単。Androidもできる • TestFlight ‣ Appleが買収したツール ‣ iOS対応。Android無理になった
  61. テスト配布 • Crashlytics ‣ iOS,Android対応 ‣ クラッシュレポートでも有名 ‣ 参考:http://dev.classmethod.jp/ smartphone/iphone/ios-fabric-crashlytics- beta-distribution/
  62. 新しいiOS
  63. 新しいiOS • 毎年でます • 新しいiPhoneと一緒に出ます • 毎年9月ぐらいに出ます。 • 6月ぐらいの発表会で、新しいiOSのベータが開 発者に配布されます。 ‣ 6月から9月までの間に対応する必要がありま す。
  64. 新しいiOSに対応? • 新しいXcodeを基本使います • 新しいiOSでは、今まで使えたコードが使えな い、挙動が違う問題が起きたりします。 ‣ 新しいiOSで、代わりのコードを使って修正 ‣ 新しいコードの方が、使いやすくなっていた りします
  65. 対応すると? • iOS9に対応すると ‣ SearchAPI ‣ 外部リソースダウンロード機能 ‣ QuickAction • などのユーザ体験に影響与えるものを使える。
  66. 対応しないと? • iOS9上では、互換モード動作 ‣ ATS問題なんて起きない • 基本、そのままでも動きます。 ‣ 新しい機能が使えない。 ‣ もし、端末のサイズが大きいとアプリ内の画 像がぼやけるかも
  67. 対応方法 • 6月にベータ版が、開発者に配布されます ‣ 実機にインストールしてアプリ動作確認できま す • 9月ごろに正式版が公開されます ‣ 一般のユーザに配布されます。 ‣ 最近は正式配布前に、一般ユーザにもベータ 配布っぽいのがあります。
  68. 対応方法 • 6月にベータが配布されるため、6から9月の 間にベータ対応を実地する必要があります。 ‣ ただし、仮対応となります。ベータと正式版が 同じとは限らないためです。
  69. 対応OS • 毎年新しいOSができます。 ‣ 今は、iOS9 ‣ バグや脆弱性がなおると、マイナーアップデー トがあります(iOS9だとiOS9.2が最新です。9 の後ろの番号増えたりします。) ‣ iPhone4S,5,5C,5S,6,6Plus,6S,6S Plus対応 ➡ 最新のOSに対応していても古い端末だとい ろいろ制限があったりします。
  70. 対応OS • どのバージョンに対応するか? ‣ 古いiOS(iOS7とか)の端末でもストアからアプ リをダウンロードして使えます。 ➡ ただし、開発者が設定する最低サポートOS バージョンに依存します。
  71. 対応OS • 全部に対応だ ‣ iOS6,7,8,9…………… ➡ 開発者が血を吐きます。 ➡ OSのバージョンによって実装が変わりま す。。。。 ➡ 古いOSはバグや脆弱性があって安全であり ません。。。
  72. 対応OS • 最低限サポートだ ‣ 今なら、iOS8.4以上対応がいいと思います。 ➡ 一番新しいOS(現:iOS9)と一つ古いOSの最新 マイナーバージョン(現:iOS8.4) ➡ 最近は、一般ユーザのアップデートもはやい ためです ‣ 一番新しいOS(現:iOS9)の機能をつかっているの なら一番新しいOSのみサポートもいいですね。
  73. 参考 • 公式シェア表 ‣ https://developer.apple.com/support/ app-store/ ➡ 現在はiOS9が71%らしい
  74. webとの違い
  75. webとの違い • webサイト作るのと違いを書きます。 • 僕は、フロントエンジニアではないため、推測 部分、間違っている部分がでることはご了承く ださい。
  76. 違い1:動作環境 • web ‣ ブラウザ内(FirefoxやGoogleChromeなど) ➡ Electronも中身はChromium ➡ コードはパースされて実行されます。 • アプリ ‣ それぞれのOS ➡ iOSなら、iOS用のに言語変換されて実行さ れます。
  77. 違い1:動作環境 • web ‣ ブラウザ内(FirefoxやGoogleChromeなど) ➡ Electronも中身はChromium ➡ コードはパースされて実行されます。 • アプリ ‣ それぞれのOS ➡ iOSなら、iOS用のに言語変換されて実行さ れます。 実行効率悪い。電池を大きく消費する 最適化されるため、実行効率 が良い
  78. 違い2:UI,UX • web ‣ PCかスマフォかで違う ➡ iOS,Androidで同じUIなので、ユーザがOSを行き来し ても同じ感じで使える • アプリ ‣ iOSかAndroidかで違う。 ‣ OSのバージョンによって違う ‣ 画面サイズに違う ➡ それぞれの場合に合わせたUI,UXが必要。タブレットだ からいっぱい情報を表示すればいいってものじゃない。
  79. 違い3:リリース方法 • web ‣ サーバにソースコードをおくだけ ‣ いつでも入れ替え出来ます ➡ バグがあってもすぐ対応、リリースできる • アプリ ‣ ストアにアプリデータを提出 ➡ iOSアプリは、審査あり。期間2週間ぐらい ➡ Androidは、審査なし。1日ぐらい • バグがあってもすぐに対応できない
  80. 違い4:データ管理 • web ‣ サーバ側に基本もつ(ユーザ名や生年月日など) ‣ クライアント側に、一時キーをもつのみ ➡ 一時キーを無効にすると強制的にサービス からサインアウトすることができる ➡ 新リリース時に強制的にログインしなおしが できる
  81. 違い4:データ管理 • アプリ ‣ web同様に一時キー保持 ‣ アプリ内にある程度データ保持する ➡ アプリで高速起動に表示するため ➡ アプリを終了しても同じ画面で再開 ➡ ネットワークがなくても動作することがで きる
  82. 違い5:状態 • web ‣ ユーザは、必要な時にアクセスしてwebページ をみる ‣ 前回の状態は、ログイン状態ぐらいが再現さ れる
  83. 違い5:状態 • アプリ ‣ ユーザは、使用した時にアプリ起動して使う ‣ アプリは、ユーザ使っていない時もデータの 更新などを行っている ‣ ユーザが再びアプリを起動した際は、最後の 状態が出来る限り高速で再現される
  84. Androidとの違い
  85. 違い1:開発環境 • iOS ‣ Swift,Objective-C ‣ Macパソコンが必須です。 • Android ‣ Kotlin,Java ‣ WindowsでもMacで作れます。
  86. 違い2:配布方法 • iOS ‣ Appleが提供するストアで配布 ‣ アプリを配布、更新するには、
 Appleによる審査を通過する必要があります ➡ 審査が終わるまでに2週間ぐらい ➡ ある程度機能が実装されていないリジェクト される
  87. 違い2:配布方法 • Android ‣ Googleが提供するストアで配布 ‣ 審査なくアプリを配布できます。
  88. 違い3:UI・UX • 物理ボタン ‣ iOS ➡ ホームボタン1つしかありません ➡ アプリ内でホームボタンは使えません。
  89. 違い3:UI・UX • 物理ボタン ‣ Android ➡ ボタン3つあります。 ➡ 戻る、ホーム、アプリ一覧ボタン
  90. 違い3:UI・UX • 物理ボタン ‣ Androidのみ戻るボタンが常にある状態 ➡ ユーザいつでも1つ前の動作、画面に戻る ことが可能 ‣ iOSは、戻るボタンがない ➡ 画面を戻るには、画面内戻るボタンがいる
  91. 違い3:UI・UX • 画面遷移 ‣ Android ➡ 基本、画面がかさなる遷移 ‣ iOS ➡ 画面がかさなるもの ➡ 画面が右から来てかさなるもの 12 1 2 12
  92. 違い4:機種 • Android ‣ メーカーごとにいろいろでている ➡ Xperia,Galaxy,Nexus……… ➡ 機種ごとに画面の大きさやセンサーが違う • iOS ‣ 大きく分けるとiPhone,iPad ‣ 画面の大きさの種類は、少ない。センサーの違いは ある
  93. センサー
  94. iPhone6Sの場合 • TouchID指紋センサー ‣ 指紋を読み取る。パスワード入力省略 • 気圧計 ‣ 気圧がわかります。天気予報ででるのです。 • 3軸ジャイロ ‣ iPhoneの傾きがわかります。 • 加速度センサー ‣ iPhoneをどのようにふったかわかる • 近接センサー ‣ 画面に顔を近づけたかわかります。 • 環境光センサー ‣ 画面に当たる光の強さがわかります。
  95. 3D Touch
  96. 3D Touch • 画面を強く押したことを検知できる • iPhone6s,iPhone6s Plusでのみ使えます。
  97. 動作例 • ホームボタンのアイコンを強く押すとサブメニュー がでる • アプリ内で、プレビューを出したりするのに使 える。 • 画像リンク:http://www.apple.com/jp/ iphone-6s/3d-touch/
  98. HandOff
  99. どんなの? • 現在動作中の状態を他のデバイスに引き継げます。 ‣ iPhoneからiPhoneへ ‣ iPhoneからMacBookに ‣ MacBookからiPhoneに ‣ 簡単操作で、引き継げます。 ‣ 例:マックのサファリで開くと
 iPhoneで引き継げます
  100. 外部ソースダウンロー ド
  101. どんなの? • アプリ内で使うデータを後からダウンロードで きる仕組み • Appleのサーバからダウンロードできる ‣ 今までは、自前のサーバが必要だった
  102. メリット • 自前のサーバが必要でない • アプリインストール時に、最小容量にできる ‣ ユーザが最小限の時間でアプリを起動できる ‣ ストア配布(LTE時)の容量制限にひっかかりに くくなる
  103. • 参考リンク:https://speakerdeck.com/ nolili/on-demand-resourceswoyi-shi- sita-kontentuzhi-zuo-wakuhuro
  104. ビーコン
  105. ビーコン • Bluetoothで発信機をつくったようなもの • iPhone4S以上が対応している • Bluetoothの設定がオンになっている必要あり • アプリで、大まかに一定範囲に入っているわかk ります 遠いエリアに入っ た!!
  106. おわりに
  107. • 今回のバージョンではこれまで。 • 途中飽きてしまったので。。。 • 大きな機能を載せ忘れていたら、更新します。
Anzeige