iPhoneアプリ開発
     勉強会
iPhoneアプリ開発の
基礎知識を覚えよう
はじめに
•  企画、デザイナー、プログラマーが、
   iPhoneアプリを作る際にどういった知識が
   必要なのか考えてみよう!
アプリの企画に必要なこと
•  iPhoneで出来る事、出来ないこと、してはいけ
   ないことを理解して企画や仕様を検討する必要
   がある	
  
•  サーバーやアプリの構成を考慮する必要がある	
  
•  マネタイズの方法を考慮する必要がある	
  
•  リジェクトや他サービスの連携などを採用する
   場合のリスクについて考慮する必要がある	
  
•  申請の手順や必要な項目、期間を理解する必要
   がある	
  
アプリのデザイナーに必要なこと
•  iPhoneのUI、UXについて学習する必要がある
   (やるべき表現、やってはいけない表現を覚え
   る必要がある)	
  
•  画像サイズやフォーマット、ファイルの命名規
   則などの納品形式を理解する必要がある。	
  
•  使用出来るフォントやデフォルトのパーツサイ
   ズ(ステータスバーなど)を理解する必要があ
   る	
  
アプリの開発者に必要なこと
•  開発環境の構築や申請の手順などを理解
   する必要がある	
  
•  iPhone独自のルール(イベント、アプリの
   ライフサイクル、データの保存等)を理解
   する必要がある	
  
•  iPhoneで出来る事、出来ないこと、しては
   いけないことを理解し、アプリの企画、
   デザイナーに適切にガイドラインの説明が
   できる能力が求められる	
  
アプリの基礎知識
•  アプリ作成の基礎知識を学習しよう!
iPhoneとiOS	
  
•  スマートフォンには沢山の種類がある!
   (iPhone,Android,WindowsPhoneなど)	
  
•  各端末の種類の違いは「OS」の違い!	
  
•  Appleが出してる「iOS」が動くスマート
   フォンをiPhoneといいます!	
  
•  OSが違うと、アプリは動かない!(プレ
   ステのソフトがWiiで使えないのと同じ)	
  
iPhoneとiPodTouchとiPad
•  iPhoneとiPodTouchとiPadの3種類がある!	
  
•  iPhoneとiPodTouchはアプリ的には一緒!	
  
•  iPhoneとiPadはアプリが違う!両方使えるユ
   ニバーサルもある!	
  
•  基本的には、iPhone同士、iPad同士で画面比
   率は一緒!retainaはそうじゃない奴の2倍の
   大きさになっている!	
  
•  iPhone5だけ縦長!でもiPhoneの仲間なので、
   iPhoneのアプリを作るときは、iPhone5の対
   応もしなきゃいけない・・・。	
  
iPhoneの画面サイズ	
  
•  iOSが動く端末は、画面の大きさの違いで、5種類あ
   る!主な端末はこんな感じ!	
  
•  320x480	
  
    –  iPhone	
  3G,	
  	
  iPhone	
  3GS	
  
•  640x960(retaina)	
  
    –  iPhone	
  4	
  ,	
  iPhone	
  4S	
  
•  640x1136(retaina)	
  
    –  iPhone	
  5	
  
•  768x1024	
  
    –  iPad,	
  iPad	
  mini	
  
•  1536x2048(retaina)	
  
    –  iPad3,	
  iPad4	
  
iPhoneで動くアプリの種類
•  ネイティブアプリ	
  
   –  AppStoreで売ってるやつ!普通はアプリといったらコレに
      なる!	
  
   –  iPhone専用に作る必要がある!	
  
•  Webアプリ	
  
   –  普通のホームページ!safariで開いて「ホームに保存」する
      とアイコンになってアプリみたいになる!	
  
   –  ホームページなので、Androidとかでもみれる!	
  
•  側アプリ(側ネイティブ)	
  
   –  ネイティブアプリなんだけど、実際はWebViewでWebアプ
      リを表示してるアプリ!	
  
   –  WebViewを表示するだけじゃなく、頑張って色々実装すれ
      ば、ネィティブの機能も使える!	
  
アプリの特徴
•  ネイティブアプリ	
  
   ⃝AppStoreで売れる、アプリ内課金が使える!	
  
   ⃝速度が早い、端末の機能を最大限使える	
  
   ×リリースに時間がかかる、リジェクトの可能性がある	
  
•  Webアプリ	
  
   ×AppStoreで売れない、アプリ内課金使えない	
  
   ×速度が遅い、ブラウザで対応している機能しか使えない	
  
   ⃝リリースが早い、リジェクトがない	
  
   ×サーバの用意が必要	
  
•  側アプリ(側ネイティブ)	
  
   ⃝AppStoreで売れる!アプリ内課金もがんばれば!	
  
   ×速度は遅い、端末の機能も頑張れば使えるかも!	
  
   ⃝リリースは一回しちゃえば、あとはサーバ側を変更すれば即反
   映!
開発環境
•  ネイティブのiPhoneアプリを作成するには、
   Xcodeを使用します。	
  
•  言語は、Objective-­‐Cを使います。	
  
•  ストーリーボードというGUIを使って直感的
   に画面のデザインができます。	
  
•  Webアプリを作成する場合は、通常のホーム
   ページと同様HTML5+javascriptなどで作成し
   ます。	
  
•  その他にもいろいろな開発ツールがあります。
   主に、クロスプラットフォーム開発をする場
   合に使います。	
  
クロスプラットフォーム
•  アプリを作成する場合、iPhone用とアンドロイ
   ド用の2機種に対応するには、プログラムを2
   個作らなくてはいけない。	
  
•  WindowsPhoneに対応させたい場合は、3個作る
   必要がある!他にも出てきたら・・・。	
  
•  たくさんの開発環境、言語を覚えて開発するの
   は大変!	
  
•  プログラム1個作って、それを複数の環境で動
   作させることをクロスプラットフォーム(マル
   チプラットフォーム)といいます!	
  
クロスプラットフォームの種類
•  アプリの中身をWebで作成してネイティブ
   のWebビューで表示する	
  
•  専用の開発ツールを用いて、ネイティブ用
   のコードを作成する
クロスプラットフォームのメリット

•  多くのユーザーに使ってもらえる	
  
•  特定のプラットフォームに依存しない(ユー
   ザー展開、ブランド展開)	
  
•  1個作れば2個に対応できる!ので、開発工
   数を削減できる	
  
•  ソースが1個なので保守性が高い!	
  
•  ゲーム系の場合、ゲームエンジンが用意され
   ているため、ゲームの開発が安易	
  
•  言語の習得が1種類でいい	
  
クロスプラットフォームのデメリット
•    ネイティブに比べて、処理が遅くなることも	
  
•    開発時に、コンパイルなどで手間や時間がかかる 
•    サードパーティ製のため、技術的な情報が少ない感じ	
  
•    プラットフォーム特有の機能(カメラ、傾き、GPS、電話帳など)
     や固有のUI、デザインなどがつかえない場合がある(全プラット
     フォーム共通の事しかできない)	
  
•    新しいバージョンへの対応が微妙(タイムラグ、未対応など)	
  
•    日本語対応に難がある場合も	
  
•    将来的なサポートの不安	
  
•    ネイティブの開発ノウハウがつかえない	
  
•    細かいことをするには、ネイティブの知識やプラットフォーム別の
     対応が必要	
  
•    開発環境の構築が難しいケースも。	
  
•    ハイブリットアプリケーションはリジェクトの恐れあり><(Apple
     にWebでやれっていわれる)	
  
クロスプラットフォームの開発環境

•  Phone	
  Gap	
  
•  Titanium	
  Mobile	
  
•  UNITY	
  
•  cocos2d-­‐x	
  
•  corona	
  
•  flash	
  	
  
※こんな感じで、いろいろある!	
  
アプリ申請に必要なもの①	
  
•  AppleID	
  
    –  Apple	
  storeから無料で取得できるいつものやつ。住所氏名
       など全て英語で登録しないと文字化けして以降の申請がう
       まくいかない時があるので注意。	
  
•  iOS	
  Developer	
  Program	
  
    –  年間参加費 ¥8,400かかる。クレジットカードと毎年更新が
       必要。コレがないと実機にアプリを転送したり、AppStore
       でアプリを販売できない。	
  
    –  個人または企業で登録が可能。企業の場合は、申請時にい
       ろいろ書類がいるので時間がかかるから注意。特に、D-­‐U-­‐
       N-­‐S	
  Numberの申請に時間がかかる。その代わり複数ユー
       ザーで開発ができる。	
  
    –  上記の他組織内の社員やメンバーにアプリを配るための
       iOS	
  Developer	
  Enterprise	
  Program	
  ¥24,800もある。	
  
アプリ申請に必要なもの②	
  
•  mac	
  +	
  Xcode	
  
    –  開発や申請にXcodeが必要。Xcodeは昔のOSに
       対応していないので古いmacだと開発できな
       いかも。	
  
•  テスト用の実機	
  
    –  xcodeにシュミレータがついてくる!とはいえ、
         実機とは実行速度がちがったり、カメラや
         GPSなど、いろいろ違うので実機を用意する
         といいかも。	
  
    	
  
アプリ申請の手順①
•  iPhone	
  Developer	
  Programの登録	
  
   –  開発機の証明書を作る	
  
   –  Certificatesに証明書を登録してファイルをダウン
      ロード	
  
   –  Deviceに自分の端末のIDを登録(100台までし
      か登録できないし、削除したり整理するタイミン
      グが年に1回の更新時しかないので注意!)	
  
   –  App	
  IDsにアプリのIDを作成(間違えて作っても削
      除できないから注意!)	
  
   –  Bundle	
  Identifierを決める	
  
   –  Provisioningにprofileを作ってダウンロード	
  
アプリ申請の手順②
•  XCODEの設定	
  
  –  Bundle	
  Identifierの指定。灰色になってうまくいか
     ない場合は、plistを編集するといい。	
  
  –  開発用Provisioning、リリース用Provisioningを設定	
  
  –  設定がうまくいくと、実機にアプリを転送できる
     ようになる!(Deviceに登録してあるやつだけ)	
  
  –  Version	
  Numberを設定する。1.0以上じゃないとリ
     ジェクトされる。iTunesConnectに設定したのと同
     じじゃないと申請できない。	
  
アプリ申請の手順③
•  iTunes	
  Connectの設定①	
  
  –  アプリの説明文などを設定する	
  
  –  とりあえず、全部埋めないと設定が終わらないの
     で事前にファイルを準備しておく	
  
  –  アイコン画像(1024x1024)、説明画像(640x960
     と640x1136の2種類が最低必要)	
  
  –  バイナリ申請後は変更できない項目が結構あるの
     で注意(画像とかカテゴリとかキーワドとか)	
  
  –  Default	
  language	
  
     •    英語を指定すること。日本語にすると外国のストアに
          も日本語が表示される。	
  
アプリ申請の手順④
•  iTunes	
  Connectの設定②	
  
   –    App	
  Name	
  
        •      1度登録されると同じものは作れない。自分で登録したアプリを消し
               て再度登録できないので注意。使えない文字がある。★とかつかえな
               い。	
  
   –    SKU	
  Number	
  
        •      何でもいいけど連番とかにするとわかりづらいからアプリ名が分かる
               感じにするといい	
  
   –    Primary	
  category/	
  Secondary	
  category	
  
        •      セカンドカテゴリを指定しておくとそのカテゴリで検索した時に、ア
               プリが表示されるようになる。	
  
   –    Bundle	
  Identifier	
  
             •  アプリにつけるIDみたいなもの。ドメイン名を逆から書くjavaみたいな
                感じの命名にするのが一般的(com.tonosamart.gameappとか)	
  
             •  テスト用にワイルドカード(*)が使えるけど、リリース時には使えない	
  
アプリの価格
•  アプリの価格は2種類から選べる	
  
 –  有料	
  
 –  無料	
  
•  有料にした場合、価格をテーブルから選べ
     る。例えばTier1なら85円とか予め決まって
     いる。ときどき円高とかで変動する(過去1
     度だけ105円→85円になったことがある)	
  
•  上記に加えて、アプリ内でプロダクトに対
     して課金できるアプリ内課金がある。	
  
	
  
アプリ内課金①
•  アプリ本体の価格(有料、無料)の他に、
     アプリ内で課金することができる。	
  
•  アプリ内課金の価格もテーブルから選ぶ方
     式。	
  
•  アップルのサーバとアプリが通信を行い購
     入処理を行う。その時にレシートが発行
     される。	
  
	
  
アプリ内課金②
•  アプリ内課金は以下の5種類がある。	
  
 –  Consumable(消耗型)	
  
    •  一回使ったらなくなる奴。魔法石とか。	
  
    •  たくさん買える。購入数は自分で管理する
 –  Non-­‐consumable(非消耗型)	
  
    •  買ったらずっと使える奴。追加マップとか	
  
    •  1個しか買えない。リストアが出来る。
 –  Auto-­‐renewable	
  subscriptions(自動更新購読)	
  
    •  定期購読(毎回自動更新)	
  
 –  Free	
  subscriptions(無料購読)	
  
    •  無料の定期購読
 –  Non-­‐renewing	
  subscriptions(非更新購読)	
  
    •  一定期間使えるようにするやつ
アプリ内課金③
•  アプリ内課金にはガイドラインがある。	
  
 –  電子商品または電子サービス以外の販売禁止(実際
    の商品やサービスの支払に使えない)	
  
 –  中間通貨のようなアイテムを提供することはできない。
    (といいつつ、魔法石とかは使える・・・)	
  
 –  ポルノ、誹謗中傷などは禁止	
  
•  StoreKitGuideに書いてあるガイドラインの他にも、
   定期購読は本にしか使えないなど決まりがあった
   んだけど、そのわりにAKB48のアプリは昔から定
   期購読可能で謎だった。最近ルールが変わったら
   しく東京いい店というアプリが定期購読を採用し
   ている。	
  
アプリのステータス①
•  ストアに登録したアプリの状態はステータスで表
   示される。主なステータスは以下のとおり。	
  
•  Prepare	
  for	
  Upload	
  
    –  最初の状態
•  Waiting	
  For	
  Upload	
  
    –  Ready	
  to	
  Upload	
  Binaryを押すとこれになる。バイナリ
       をアップできる状態。	
  
•  Upload	
  Received	
  
    –  アプリがアップされたらこれになる。
•  Waiting	
  For	
  Review	
  
    –  レビュー待ち。Upload	
  Receivedのあとしばらくすると
       なる。
アプリのステータス②
•  In	
  Review	
  
     –  レビュー中。
•  Processing	
  for	
  App	
  Store	
  
     –  ストア公開中。レビューが終わったらコレになる。こ
        の状態だとストアで検索できたり出来なかったりする。
        あと、ストアにあるけどダウンロード出来ない時もあ
        る。
•  Ready	
  for	
  Sale	
  
     –  ストアに公開可能な状態。コレになったら、公開完了。
•  Rejected	
  
     –  リジェクト
アプリ申請にかかる時間	
  
•  アプリの申請にかかる時間は不明。だい
   たい10日くらいかかる。	
  
•  申請のパターンは大きく分けて2種類	
  
 –  すぐにIn	
  Revew→10日後くらいにOK	
  
 –  9日待ったあとにIn	
  Revew→1日後にOK	
  
•  リジェクトされると最初から申請やり直し
   になる。	
  
アプリの公開日
•  アプリは公開日を指定できる。レビューが終わっ
   たら即公開の設定もある。	
  
•  公開日を指定しておけば、その日に公開されるけ
   ど、レビューOKの日が発売日になるっぽいので、
   AppStoreの新着の後ろの方に表示される(今は新
   着ないから気にしなくて良さそう)	
  
•  公開日を未来にしておいて、レビューが終わって
   から今日の日付にすると、その日に公開できる。
   ただ、ストアの反映には時間がかかるので、プレ
   スリリースの前日に公開しておいたほうがいい。
リジェクト
•  アップルに審査を出しても、ガイドライン
   に従っていないとリジェクトされる	
  
•  審査の基準は結構謎で、他のアプリが審査
   を通っていても自分のアプリが通るとは限
   らない	
  
•  逆に言うと、審査が通ったらストアから消
   されることはあまりない(エロ系、著作
   権侵害、裏技系は消される)	
  
アプリの審査基準
•  審査基準は追加変更がたまにあります。	
  
•  基準を守っていなくてもリジェクトされな
   いケース多数あり。	
  
•  逆に、基準を守っていてもリジェクトされ
   る場合もあります。	
  
•  審査をずるして回避しようとしたら開発者
   登録抹消	
  
広告、リワード広告
•  広告主となって自分のアプリを宣伝できる	
  
•  媒体となって自分のアプリ内に広告をいれる事ができる	
  
•  基本は320x50のバナー広告だが、大きいサイズのものなど種類があ
   る	
  
•  基本的には、広告をクリックしたら報酬がもらえる(表示しただけ
   ではもらえない)	
  
•  通常の広告の他に、リワード広告がある。媒体に広告を置くときに、
   インストールするとプレゼント(コイン、カードなど)がもらえる
   ようにしてインストール率をあげる仕組み	
  
•  広告を出稿する場合は、特にアプリの改造は不要だが、媒体となっ
   て広告を掲載する場合は、各社の出しているSDKを組み込む必要が
   ある	
  
•  リワード広告の場合や、インストール報酬だけでなくチュートリア
   ル終了報酬などを与える場合は、出稿側のアプリにもSDKを入れる
   必要がある。インストール確認だけなら、URLスキームを使う場合
   も多い。	
  
ブーストとブーストメディア
•  広告(通常はリワード広告)を短期間に大量に出稿して、
   AppStoreのランキングをあげる作戦をブーストという	
  
•  ランキング上位にはいると、人の目につくため、ダウン
   ロードされる確率が高くなる。そのため、ブーストでラ
   ンキングを上げて、ストアからのダウンロード(自然流
   入)を狙う	
  
•  ブーストの広告を得意とするメディアをブーストメディ
   アという。アプリをインストールすることでポイントや
   プレゼントがもらえるアプリなどがある	
  
URLスキーム
•  http://だとインターネットのアドレスになるが、この部
   分をアプリ独自に定義してアプリを呼び出す仕組みを
   URLスキームといいます。	
  
•  アプリ内に独自で設定ができる。他のアプリとかぶると
   困るため、通常はドメインの逆(com.tonosamart.xxxと
   か)を指定する	
  
•  この仕組を利用して、アプリが呼び出せるかどうかを
   チェックし、そのアプリがインストールされているかど
   うかを検出できる	
  
•  リワード広告のインストール確認などに利用される	
  
マルチタスク
•  iPhoneのアプリはマルチタスクで複数起動
   できる。とはいえ、バックグラウンドで
   の動作には制限がある(ずっと起動できな
   い、出来る処理に決まりがある)	
  
•  Androidとの大きな違いがバックグラウン
   ド実行で、常時ログを出力したり、起動
   しっぱなしで特定のタイミングでアクショ
   ンを起こすようなアプリは作れない。
iOSのバージョンと機能
•  iOSのバージョンで使える機能に差がある。例えば、
   UIActivityやPassKitはiOS6からしか使えない。	
  
•  基本的にiPhoneユーザーはOSを最新にする傾向があるの
   で最新OSのみの対応で問題はないと思うが、昔の機種の
   ユーザーやOSを最新にしないユーザへの対応をどうする
   かは、事前に検討する必要がある	
  
画面サイズと素材
•  基本的にアプリに使う画像は2種類用意する。一つは、
   通常の解像度用、もうひとつはretina用で倍の大きさ
   のものを用意する。さらに、iPhone5に対応するため
   には、retina用で大きさの違う画像が必要になる。	
  
•  Xcodeを使うと、retina対応を自動的に行なってくれる。
   ファイル名をxxx.png、xxx@2x.pngという用に命名す
   る	
  
•  アプリの容量を抑えるため、画像リソースの軽量化を
   行う必要がある	
  
•  1枚の画像でも、2種類以上の書き出しが必要なため
   特に外注を使う場合は契約をきちんとしておこう	
  
画像の大きさと画面のぼやけ
•  画像の表示の際に、中心座標を元に座標
   を指定するため、画像サイズが奇数だと
   表示座標が小数になるためぼやける	
  
•  これを防ぐには、すべての画像の縦横の長
   さを偶数にする必要がある。	
  
•  デザインおよび画像の切り出し時に考慮す
   る必要がある(特に、ドロップシャドウ付
   きの画像)
画像リソース軽量化
•  UXの向上やリッチな表現に画像は必須!
•  retainaディスプレイ採用や、複数解像度の
   対応により、画像リソースが多く使われる
   ように!	
  
•  端末の容量や転送量には制限があるため、
   画像リソースを軽量化する必要性がでてき
   た!	
  
不要な情報の削除
•  JPEGのEXIF情報、Fireworksの編集情報な
   ど不要な情報をファイルから削除しよう	
  
•  Photoshopなら「web用に保存」など、大
   抵のソフトにコマンドがあるので使お
   う!	
  
適切な縮小とトリミング
•  機種ごとの解像度に対応したり、マルチプ
   ラットフォームに対応する場合、適切な縮
   小とトリミングが必要	
  
•  特に縮小処理は、ソフトによって差が出
   るので、綺麗に縮小できるソフトを使お
   う!
フォーマットの最適化
•  同じPNGフォーマットでも、保存形式によっ
   て容量が変わってくる	
  
•  透明部分がない場合はアルファを保存しない、
   色数が少ない場合はインデックスカラーを用
   いるなど、最適なフォーマットを選ぶことが
   必要	
  
•  PVRはテクスチャ生成が4倍速い!使用でき
   る場合は、採用を検討しよう(そのまま使う
   とファイルサイズが大きいので圧縮され
   た.pvr.cczなどを使う)	
  
•  jpegの圧縮率もうまく調整しよう!	
  
減色処理
•  画像の見た目が変わらない程度に、色数
   を少なくして、インデックスカラーで保存
   する作戦!	
  
•  めんどくさいけど、効果が抜群!なので、
   余裕があったらやった方がいい。	
  
•  減色のアルゴリズムは、ソフトでかなり差
   が出る!うまくいかなかったらあきらめ
   るしかないかも・・・。
アップルの日本語ドキュメント
•  アップルのドキュメントは基本的に英語しかな
   いし英語が最新	
  
•  とはいえ、日本語ドキュメントも存在する!少
   なくとも日本語のドキュメントはひと通り目を
   通しておこう	
  
•  https://developer.apple.com/jp/devcenter/ios/
   library/japanese.html	
  
HIG
•  ガイドラインに違反するとリジェクトされ
   るため、アプリを作る上で絶対読む必要
   がある。	
  
•  画面サイズの説明や、ボタンの意味、最低
   限必要なサイズなど色々なガイドライン
   が書いてある。	
  
•  デザイナーや企画がこれを読んでないと確
   実にハマるので注意。リジェクトされるた
   め、最悪デザインやり直しになる。
アプリとサーバ
•  アプリ単体では実装できない機能がある場合は、サーバを用
   意する必要があります	
  
•  サーバがないと実装できない機能の例	
  
 –    ほかのユーザとの連携	
  
 –    情報の更新、ダウンロード	
  
 –    データの改竄防止	
  
 –    WEBページ(側ネイティブ含む)	
  
 –    お知らせ、通知など	
  
•  サーバを用意する場合は、維持費が必要です。売り切りのア
   プリの場合はサーバの維持をどうするかなど事前検討が必要
   です。	
  
•  アプリのバージョンアップ後に古いアプリを使ってる人が
   サーバに接続した場合の処理なども事前に入れておく必要が
   あります。	
  
レベニュー、使用料
•    アプリに著作物(版権物のキャラ、音楽等)を使う場合、使用料を決めま
     すが注意が必要です。	
  
•    アプリ内課金はTierで決められているため、細かい値段設定ができません。	
  
•    Tierは変動するため、値段の10%といった決め方をしないとハマります。
     (過去に¥105→¥85になったことがある)	
  
•    アイテムが1個売れるごとに何円支払うといった契約だと、魔法石の購入数
     による割引や、無料キャンペーンの負担などでハマります。	
  
•    どういう形態で課金するかを最初に決めて、問題や矛盾のない契約にしま
     しょう!
ライブラリ、ゲームエンジンの利用    	
  

•  バーコードやJSONなど基本的な機能につ
   いてはライブラリが存在するので、有効に
   使おう!	
  
•  ゲームを作る場合はゲームエンジンの採用
   を検討しよう!	
  
•  規約がまちまちなので、注意が必要(特に
   商用利用や受注したアプリ)	
  
デザイナーとの協業
•  デザイナー自身でデザインを実機確認でき
   る環境を作る	
  
•  画面イメージを実機で確認できるようにし
   て、実際のサイズや発色を確認する
   (dropboxおすすめ)	
  
•  xcodeをインストールし簡単な使い方を理
   解してもらい、利用できるフォントや影の
   付け方の検討に利用してもらう	
  
まとめ
•  いろんなことを知らないと、iPhoneアプ
   リは作れない!
•  プログラマーだけじゃなく、企画やデザイ
   ナーも知らなきゃいけないことがたくさ
   んある!
とのさまラボ!
•  勉強会に参加した人どうしのコミニュティがほしい!
   勉強会の開催日時の告知がほしい!

 という意見をみなさまからいただいたので、
 コミニュティを作成しました!

 ぜひ「いいね!」をお願いします!




https://www.facebook.com/TonosamaLabo	
  
おわり
主催(共同開催):
株式会社 gooya
http://www.gooya.co.jp/
メドレー株式会社
http://www.medley.co.jp/

講師:西田 寛輔 (Tonosamart)
http://www.facebook.com/tonosamart

㉙iPhoneアプリ開発の基礎知識を覚えよう

  • 1.
    iPhoneアプリ開発 勉強会 iPhoneアプリ開発の 基礎知識を覚えよう
  • 2.
    はじめに •  企画、デザイナー、プログラマーが、 iPhoneアプリを作る際にどういった知識が 必要なのか考えてみよう!
  • 3.
    アプリの企画に必要なこと •  iPhoneで出来る事、出来ないこと、してはいけ ないことを理解して企画や仕様を検討する必要 がある   •  サーバーやアプリの構成を考慮する必要がある   •  マネタイズの方法を考慮する必要がある   •  リジェクトや他サービスの連携などを採用する 場合のリスクについて考慮する必要がある   •  申請の手順や必要な項目、期間を理解する必要 がある  
  • 4.
    アプリのデザイナーに必要なこと •  iPhoneのUI、UXについて学習する必要がある (やるべき表現、やってはいけない表現を覚え る必要がある)   •  画像サイズやフォーマット、ファイルの命名規 則などの納品形式を理解する必要がある。   •  使用出来るフォントやデフォルトのパーツサイ ズ(ステータスバーなど)を理解する必要があ る  
  • 5.
    アプリの開発者に必要なこと •  開発環境の構築や申請の手順などを理解 する必要がある   •  iPhone独自のルール(イベント、アプリの ライフサイクル、データの保存等)を理解 する必要がある   •  iPhoneで出来る事、出来ないこと、しては いけないことを理解し、アプリの企画、 デザイナーに適切にガイドラインの説明が できる能力が求められる  
  • 6.
  • 7.
    iPhoneとiOS   •  スマートフォンには沢山の種類がある! (iPhone,Android,WindowsPhoneなど)   •  各端末の種類の違いは「OS」の違い!   •  Appleが出してる「iOS」が動くスマート フォンをiPhoneといいます!   •  OSが違うと、アプリは動かない!(プレ ステのソフトがWiiで使えないのと同じ)  
  • 8.
    iPhoneとiPodTouchとiPad •  iPhoneとiPodTouchとiPadの3種類がある!   • iPhoneとiPodTouchはアプリ的には一緒!   •  iPhoneとiPadはアプリが違う!両方使えるユ ニバーサルもある!   •  基本的には、iPhone同士、iPad同士で画面比 率は一緒!retainaはそうじゃない奴の2倍の 大きさになっている!   •  iPhone5だけ縦長!でもiPhoneの仲間なので、 iPhoneのアプリを作るときは、iPhone5の対 応もしなきゃいけない・・・。  
  • 9.
    iPhoneの画面サイズ   •  iOSが動く端末は、画面の大きさの違いで、5種類あ る!主な端末はこんな感じ!   •  320x480   –  iPhone  3G,    iPhone  3GS   •  640x960(retaina)   –  iPhone  4  ,  iPhone  4S   •  640x1136(retaina)   –  iPhone  5   •  768x1024   –  iPad,  iPad  mini   •  1536x2048(retaina)   –  iPad3,  iPad4  
  • 10.
    iPhoneで動くアプリの種類 •  ネイティブアプリ   –  AppStoreで売ってるやつ!普通はアプリといったらコレに なる!   –  iPhone専用に作る必要がある!   •  Webアプリ   –  普通のホームページ!safariで開いて「ホームに保存」する とアイコンになってアプリみたいになる!   –  ホームページなので、Androidとかでもみれる!   •  側アプリ(側ネイティブ)   –  ネイティブアプリなんだけど、実際はWebViewでWebアプ リを表示してるアプリ!   –  WebViewを表示するだけじゃなく、頑張って色々実装すれ ば、ネィティブの機能も使える!  
  • 11.
    アプリの特徴 •  ネイティブアプリ   ⃝AppStoreで売れる、アプリ内課金が使える!   ⃝速度が早い、端末の機能を最大限使える   ×リリースに時間がかかる、リジェクトの可能性がある   •  Webアプリ   ×AppStoreで売れない、アプリ内課金使えない   ×速度が遅い、ブラウザで対応している機能しか使えない   ⃝リリースが早い、リジェクトがない   ×サーバの用意が必要   •  側アプリ(側ネイティブ)   ⃝AppStoreで売れる!アプリ内課金もがんばれば!   ×速度は遅い、端末の機能も頑張れば使えるかも!   ⃝リリースは一回しちゃえば、あとはサーバ側を変更すれば即反 映!
  • 12.
    開発環境 •  ネイティブのiPhoneアプリを作成するには、 Xcodeを使用します。   •  言語は、Objective-­‐Cを使います。   •  ストーリーボードというGUIを使って直感的 に画面のデザインができます。   •  Webアプリを作成する場合は、通常のホーム ページと同様HTML5+javascriptなどで作成し ます。   •  その他にもいろいろな開発ツールがあります。 主に、クロスプラットフォーム開発をする場 合に使います。  
  • 13.
    クロスプラットフォーム •  アプリを作成する場合、iPhone用とアンドロイ ド用の2機種に対応するには、プログラムを2 個作らなくてはいけない。   •  WindowsPhoneに対応させたい場合は、3個作る 必要がある!他にも出てきたら・・・。   •  たくさんの開発環境、言語を覚えて開発するの は大変!   •  プログラム1個作って、それを複数の環境で動 作させることをクロスプラットフォーム(マル チプラットフォーム)といいます!  
  • 14.
    クロスプラットフォームの種類 •  アプリの中身をWebで作成してネイティブ のWebビューで表示する   •  専用の開発ツールを用いて、ネイティブ用 のコードを作成する
  • 15.
    クロスプラットフォームのメリット •  多くのユーザーに使ってもらえる   • 特定のプラットフォームに依存しない(ユー ザー展開、ブランド展開)   •  1個作れば2個に対応できる!ので、開発工 数を削減できる   •  ソースが1個なので保守性が高い!   •  ゲーム系の場合、ゲームエンジンが用意され ているため、ゲームの開発が安易   •  言語の習得が1種類でいい  
  • 16.
    クロスプラットフォームのデメリット •  ネイティブに比べて、処理が遅くなることも   •  開発時に、コンパイルなどで手間や時間がかかる  •  サードパーティ製のため、技術的な情報が少ない感じ   •  プラットフォーム特有の機能(カメラ、傾き、GPS、電話帳など) や固有のUI、デザインなどがつかえない場合がある(全プラット フォーム共通の事しかできない)   •  新しいバージョンへの対応が微妙(タイムラグ、未対応など)   •  日本語対応に難がある場合も   •  将来的なサポートの不安   •  ネイティブの開発ノウハウがつかえない   •  細かいことをするには、ネイティブの知識やプラットフォーム別の 対応が必要   •  開発環境の構築が難しいケースも。   •  ハイブリットアプリケーションはリジェクトの恐れあり><(Apple にWebでやれっていわれる)  
  • 17.
    クロスプラットフォームの開発環境 •  Phone  Gap   •  Titanium  Mobile   •  UNITY   •  cocos2d-­‐x   •  corona   •  flash     ※こんな感じで、いろいろある!  
  • 18.
    アプリ申請に必要なもの①   •  AppleID   –  Apple  storeから無料で取得できるいつものやつ。住所氏名 など全て英語で登録しないと文字化けして以降の申請がう まくいかない時があるので注意。   •  iOS  Developer  Program   –  年間参加費 ¥8,400かかる。クレジットカードと毎年更新が 必要。コレがないと実機にアプリを転送したり、AppStore でアプリを販売できない。   –  個人または企業で登録が可能。企業の場合は、申請時にい ろいろ書類がいるので時間がかかるから注意。特に、D-­‐U-­‐ N-­‐S  Numberの申請に時間がかかる。その代わり複数ユー ザーで開発ができる。   –  上記の他組織内の社員やメンバーにアプリを配るための iOS  Developer  Enterprise  Program  ¥24,800もある。  
  • 19.
    アプリ申請に必要なもの②   •  mac  +  Xcode   –  開発や申請にXcodeが必要。Xcodeは昔のOSに 対応していないので古いmacだと開発できな いかも。   •  テスト用の実機   –  xcodeにシュミレータがついてくる!とはいえ、 実機とは実行速度がちがったり、カメラや GPSなど、いろいろ違うので実機を用意する といいかも。    
  • 20.
    アプリ申請の手順① •  iPhone  Developer  Programの登録   –  開発機の証明書を作る   –  Certificatesに証明書を登録してファイルをダウン ロード   –  Deviceに自分の端末のIDを登録(100台までし か登録できないし、削除したり整理するタイミン グが年に1回の更新時しかないので注意!)   –  App  IDsにアプリのIDを作成(間違えて作っても削 除できないから注意!)   –  Bundle  Identifierを決める   –  Provisioningにprofileを作ってダウンロード  
  • 21.
    アプリ申請の手順② •  XCODEの設定   –  Bundle  Identifierの指定。灰色になってうまくいか ない場合は、plistを編集するといい。   –  開発用Provisioning、リリース用Provisioningを設定   –  設定がうまくいくと、実機にアプリを転送できる ようになる!(Deviceに登録してあるやつだけ)   –  Version  Numberを設定する。1.0以上じゃないとリ ジェクトされる。iTunesConnectに設定したのと同 じじゃないと申請できない。  
  • 22.
    アプリ申請の手順③ •  iTunes  Connectの設定①   –  アプリの説明文などを設定する   –  とりあえず、全部埋めないと設定が終わらないの で事前にファイルを準備しておく   –  アイコン画像(1024x1024)、説明画像(640x960 と640x1136の2種類が最低必要)   –  バイナリ申請後は変更できない項目が結構あるの で注意(画像とかカテゴリとかキーワドとか)   –  Default  language   •  英語を指定すること。日本語にすると外国のストアに も日本語が表示される。  
  • 23.
    アプリ申請の手順④ •  iTunes  Connectの設定②   –  App  Name   •  1度登録されると同じものは作れない。自分で登録したアプリを消し て再度登録できないので注意。使えない文字がある。★とかつかえな い。   –  SKU  Number   •  何でもいいけど連番とかにするとわかりづらいからアプリ名が分かる 感じにするといい   –  Primary  category/  Secondary  category   •  セカンドカテゴリを指定しておくとそのカテゴリで検索した時に、ア プリが表示されるようになる。   –  Bundle  Identifier   •  アプリにつけるIDみたいなもの。ドメイン名を逆から書くjavaみたいな 感じの命名にするのが一般的(com.tonosamart.gameappとか)   •  テスト用にワイルドカード(*)が使えるけど、リリース時には使えない  
  • 24.
    アプリの価格 •  アプリの価格は2種類から選べる   –  有料   –  無料   •  有料にした場合、価格をテーブルから選べ る。例えばTier1なら85円とか予め決まって いる。ときどき円高とかで変動する(過去1 度だけ105円→85円になったことがある)   •  上記に加えて、アプリ内でプロダクトに対 して課金できるアプリ内課金がある。    
  • 25.
    アプリ内課金① •  アプリ本体の価格(有料、無料)の他に、 アプリ内で課金することができる。   •  アプリ内課金の価格もテーブルから選ぶ方 式。   •  アップルのサーバとアプリが通信を行い購 入処理を行う。その時にレシートが発行 される。    
  • 26.
    アプリ内課金② •  アプリ内課金は以下の5種類がある。   –  Consumable(消耗型)   •  一回使ったらなくなる奴。魔法石とか。   •  たくさん買える。購入数は自分で管理する –  Non-­‐consumable(非消耗型)   •  買ったらずっと使える奴。追加マップとか   •  1個しか買えない。リストアが出来る。 –  Auto-­‐renewable  subscriptions(自動更新購読)   •  定期購読(毎回自動更新)   –  Free  subscriptions(無料購読)   •  無料の定期購読 –  Non-­‐renewing  subscriptions(非更新購読)   •  一定期間使えるようにするやつ
  • 27.
    アプリ内課金③ •  アプリ内課金にはガイドラインがある。   –  電子商品または電子サービス以外の販売禁止(実際 の商品やサービスの支払に使えない)   –  中間通貨のようなアイテムを提供することはできない。 (といいつつ、魔法石とかは使える・・・)   –  ポルノ、誹謗中傷などは禁止   •  StoreKitGuideに書いてあるガイドラインの他にも、 定期購読は本にしか使えないなど決まりがあった んだけど、そのわりにAKB48のアプリは昔から定 期購読可能で謎だった。最近ルールが変わったら しく東京いい店というアプリが定期購読を採用し ている。  
  • 28.
    アプリのステータス① •  ストアに登録したアプリの状態はステータスで表 示される。主なステータスは以下のとおり。   •  Prepare  for  Upload   –  最初の状態 •  Waiting  For  Upload   –  Ready  to  Upload  Binaryを押すとこれになる。バイナリ をアップできる状態。   •  Upload  Received   –  アプリがアップされたらこれになる。 •  Waiting  For  Review   –  レビュー待ち。Upload  Receivedのあとしばらくすると なる。
  • 29.
    アプリのステータス② •  In  Review   –  レビュー中。 •  Processing  for  App  Store   –  ストア公開中。レビューが終わったらコレになる。こ の状態だとストアで検索できたり出来なかったりする。 あと、ストアにあるけどダウンロード出来ない時もあ る。 •  Ready  for  Sale   –  ストアに公開可能な状態。コレになったら、公開完了。 •  Rejected   –  リジェクト
  • 30.
    アプリ申請にかかる時間   •  アプリの申請にかかる時間は不明。だい たい10日くらいかかる。   •  申請のパターンは大きく分けて2種類   –  すぐにIn  Revew→10日後くらいにOK   –  9日待ったあとにIn  Revew→1日後にOK   •  リジェクトされると最初から申請やり直し になる。  
  • 31.
    アプリの公開日 •  アプリは公開日を指定できる。レビューが終わっ たら即公開の設定もある。   •  公開日を指定しておけば、その日に公開されるけ ど、レビューOKの日が発売日になるっぽいので、 AppStoreの新着の後ろの方に表示される(今は新 着ないから気にしなくて良さそう)   •  公開日を未来にしておいて、レビューが終わって から今日の日付にすると、その日に公開できる。 ただ、ストアの反映には時間がかかるので、プレ スリリースの前日に公開しておいたほうがいい。
  • 32.
    リジェクト •  アップルに審査を出しても、ガイドライン に従っていないとリジェクトされる   •  審査の基準は結構謎で、他のアプリが審査 を通っていても自分のアプリが通るとは限 らない   •  逆に言うと、審査が通ったらストアから消 されることはあまりない(エロ系、著作 権侵害、裏技系は消される)  
  • 33.
    アプリの審査基準 •  審査基準は追加変更がたまにあります。   • 基準を守っていなくてもリジェクトされな いケース多数あり。   •  逆に、基準を守っていてもリジェクトされ る場合もあります。   •  審査をずるして回避しようとしたら開発者 登録抹消  
  • 34.
    広告、リワード広告 •  広告主となって自分のアプリを宣伝できる   • 媒体となって自分のアプリ内に広告をいれる事ができる   •  基本は320x50のバナー広告だが、大きいサイズのものなど種類があ る   •  基本的には、広告をクリックしたら報酬がもらえる(表示しただけ ではもらえない)   •  通常の広告の他に、リワード広告がある。媒体に広告を置くときに、 インストールするとプレゼント(コイン、カードなど)がもらえる ようにしてインストール率をあげる仕組み   •  広告を出稿する場合は、特にアプリの改造は不要だが、媒体となっ て広告を掲載する場合は、各社の出しているSDKを組み込む必要が ある   •  リワード広告の場合や、インストール報酬だけでなくチュートリア ル終了報酬などを与える場合は、出稿側のアプリにもSDKを入れる 必要がある。インストール確認だけなら、URLスキームを使う場合 も多い。  
  • 35.
    ブーストとブーストメディア •  広告(通常はリワード広告)を短期間に大量に出稿して、 AppStoreのランキングをあげる作戦をブーストという   •  ランキング上位にはいると、人の目につくため、ダウン ロードされる確率が高くなる。そのため、ブーストでラ ンキングを上げて、ストアからのダウンロード(自然流 入)を狙う   •  ブーストの広告を得意とするメディアをブーストメディ アという。アプリをインストールすることでポイントや プレゼントがもらえるアプリなどがある  
  • 36.
    URLスキーム •  http://だとインターネットのアドレスになるが、この部 分をアプリ独自に定義してアプリを呼び出す仕組みを URLスキームといいます。   •  アプリ内に独自で設定ができる。他のアプリとかぶると 困るため、通常はドメインの逆(com.tonosamart.xxxと か)を指定する   •  この仕組を利用して、アプリが呼び出せるかどうかを チェックし、そのアプリがインストールされているかど うかを検出できる   •  リワード広告のインストール確認などに利用される  
  • 37.
    マルチタスク •  iPhoneのアプリはマルチタスクで複数起動 できる。とはいえ、バックグラウンドで の動作には制限がある(ずっと起動できな い、出来る処理に決まりがある)   •  Androidとの大きな違いがバックグラウン ド実行で、常時ログを出力したり、起動 しっぱなしで特定のタイミングでアクショ ンを起こすようなアプリは作れない。
  • 38.
    iOSのバージョンと機能 •  iOSのバージョンで使える機能に差がある。例えば、 UIActivityやPassKitはiOS6からしか使えない。   •  基本的にiPhoneユーザーはOSを最新にする傾向があるの で最新OSのみの対応で問題はないと思うが、昔の機種の ユーザーやOSを最新にしないユーザへの対応をどうする かは、事前に検討する必要がある  
  • 39.
    画面サイズと素材 •  基本的にアプリに使う画像は2種類用意する。一つは、 通常の解像度用、もうひとつはretina用で倍の大きさ のものを用意する。さらに、iPhone5に対応するため には、retina用で大きさの違う画像が必要になる。   •  Xcodeを使うと、retina対応を自動的に行なってくれる。 ファイル名をxxx.png、xxx@2x.pngという用に命名す る   •  アプリの容量を抑えるため、画像リソースの軽量化を 行う必要がある   •  1枚の画像でも、2種類以上の書き出しが必要なため 特に外注を使う場合は契約をきちんとしておこう  
  • 40.
    画像の大きさと画面のぼやけ •  画像の表示の際に、中心座標を元に座標 を指定するため、画像サイズが奇数だと 表示座標が小数になるためぼやける   •  これを防ぐには、すべての画像の縦横の長 さを偶数にする必要がある。   •  デザインおよび画像の切り出し時に考慮す る必要がある(特に、ドロップシャドウ付 きの画像)
  • 41.
    画像リソース軽量化 •  UXの向上やリッチな表現に画像は必須! •  retainaディスプレイ採用や、複数解像度の 対応により、画像リソースが多く使われる ように!   •  端末の容量や転送量には制限があるため、 画像リソースを軽量化する必要性がでてき た!  
  • 42.
    不要な情報の削除 •  JPEGのEXIF情報、Fireworksの編集情報な ど不要な情報をファイルから削除しよう   •  Photoshopなら「web用に保存」など、大 抵のソフトにコマンドがあるので使お う!  
  • 43.
    適切な縮小とトリミング •  機種ごとの解像度に対応したり、マルチプ ラットフォームに対応する場合、適切な縮 小とトリミングが必要   •  特に縮小処理は、ソフトによって差が出 るので、綺麗に縮小できるソフトを使お う!
  • 44.
    フォーマットの最適化 •  同じPNGフォーマットでも、保存形式によっ て容量が変わってくる   •  透明部分がない場合はアルファを保存しない、 色数が少ない場合はインデックスカラーを用 いるなど、最適なフォーマットを選ぶことが 必要   •  PVRはテクスチャ生成が4倍速い!使用でき る場合は、採用を検討しよう(そのまま使う とファイルサイズが大きいので圧縮され た.pvr.cczなどを使う)   •  jpegの圧縮率もうまく調整しよう!  
  • 45.
    減色処理 •  画像の見た目が変わらない程度に、色数 を少なくして、インデックスカラーで保存 する作戦!   •  めんどくさいけど、効果が抜群!なので、 余裕があったらやった方がいい。   •  減色のアルゴリズムは、ソフトでかなり差 が出る!うまくいかなかったらあきらめ るしかないかも・・・。
  • 46.
    アップルの日本語ドキュメント •  アップルのドキュメントは基本的に英語しかな いし英語が最新   •  とはいえ、日本語ドキュメントも存在する!少 なくとも日本語のドキュメントはひと通り目を 通しておこう   •  https://developer.apple.com/jp/devcenter/ios/ library/japanese.html  
  • 47.
    HIG •  ガイドラインに違反するとリジェクトされ るため、アプリを作る上で絶対読む必要 がある。   •  画面サイズの説明や、ボタンの意味、最低 限必要なサイズなど色々なガイドライン が書いてある。   •  デザイナーや企画がこれを読んでないと確 実にハマるので注意。リジェクトされるた め、最悪デザインやり直しになる。
  • 48.
    アプリとサーバ •  アプリ単体では実装できない機能がある場合は、サーバを用 意する必要があります   •  サーバがないと実装できない機能の例   –  ほかのユーザとの連携   –  情報の更新、ダウンロード   –  データの改竄防止   –  WEBページ(側ネイティブ含む)   –  お知らせ、通知など   •  サーバを用意する場合は、維持費が必要です。売り切りのア プリの場合はサーバの維持をどうするかなど事前検討が必要 です。   •  アプリのバージョンアップ後に古いアプリを使ってる人が サーバに接続した場合の処理なども事前に入れておく必要が あります。  
  • 49.
    レベニュー、使用料 •  アプリに著作物(版権物のキャラ、音楽等)を使う場合、使用料を決めま すが注意が必要です。   •  アプリ内課金はTierで決められているため、細かい値段設定ができません。   •  Tierは変動するため、値段の10%といった決め方をしないとハマります。 (過去に¥105→¥85になったことがある)   •  アイテムが1個売れるごとに何円支払うといった契約だと、魔法石の購入数 による割引や、無料キャンペーンの負担などでハマります。   •  どういう形態で課金するかを最初に決めて、問題や矛盾のない契約にしま しょう!
  • 50.
    ライブラリ、ゲームエンジンの利用   •  バーコードやJSONなど基本的な機能につ いてはライブラリが存在するので、有効に 使おう!   •  ゲームを作る場合はゲームエンジンの採用 を検討しよう!   •  規約がまちまちなので、注意が必要(特に 商用利用や受注したアプリ)  
  • 51.
    デザイナーとの協業 •  デザイナー自身でデザインを実機確認でき る環境を作る   •  画面イメージを実機で確認できるようにし て、実際のサイズや発色を確認する (dropboxおすすめ)   •  xcodeをインストールし簡単な使い方を理 解してもらい、利用できるフォントや影の 付け方の検討に利用してもらう  
  • 52.
    まとめ •  いろんなことを知らないと、iPhoneアプ リは作れない! •  プログラマーだけじゃなく、企画やデザイ ナーも知らなきゃいけないことがたくさ んある!
  • 53.
    とのさまラボ! •  勉強会に参加した人どうしのコミニュティがほしい! 勉強会の開催日時の告知がほしい! という意見をみなさまからいただいたので、 コミニュティを作成しました! ぜひ「いいね!」をお願いします! https://www.facebook.com/TonosamaLabo  
  • 54.