みゆっき☆think#4 「こんどはiphoneに触ってみるよ!」

61
iPhone ニコニコ事業本部 企画開発部 後藤 哲志

Upload: techtalkdwango

Post on 04-Jul-2015

3.951 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iPhone

ニコニコ事業本部 企画開発部後藤 哲志

Page 2: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

自己紹介• 後藤 哲志

• ニコニコ事業本部 企画開発部

• ニコニコiPhoneチーム

• 2010年4月入社(新卒2年目)

• twitter @mtgto

Page 3: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

アジェンダ

• iPhoneの紹介

• アプリの作り方

• アプリの公開

Page 4: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iPhoneの紹介

Page 5: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iPhoneの話をしよう

Page 6: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iPhone 4

Page 7: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iPhone 4 仕様 (外見)

• 115.2 mm x 58.6 mm x 9.3 mm

• 137 g

• 960x640 pixels (326 ppi)

• カメラ2つ(外向き、内向き)

• 音量調節、ミュート、ホームボタン

Page 8: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

日本での発売の歴史• 2007/7 iPhone初代

• 2008/7 iPhone3G

• 2009/6 iPhone3GS

• 2010/6 iPhone4

• 2011/6 iPhone5 ???

Page 9: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iPhone 5 でるのかな

http://smart-style.up.seesaa.net/image/34343333.jpg

Page 10: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

WWDC

• 毎年アップルが開催している開発者向けイベント

• 参加費は$1,599 (学生は無料)

• でもチケットはすぐに売り切れる

Page 11: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iPad / iPod Touch

•iPad = でっかいiPod Touch

•iPod Touch = ちいさいiPad

Page 12: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iPad / iPod Touch

• iPhoneと違うので注意が必要

• カメラの有無

• 3G回線の有無

• マイクの有無

Page 13: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

国内シェア• 2010年度 国内出荷スマートフォン台数 ((株) MM総研

[ 東京・港 ])

Page 14: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

国内シェア• 2010年度 国内出荷スマートフォン台数 ((株) MM総研

[ 東京・港 ])

実質iPhoneとAndroidの二強

Page 15: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iOS

• Mac OS Xのカーネル、コアフレームワークの上にiPhone用のビューなどの独自フレームワークを載せた物

• Cisco IOSと名前が被ってる

Page 16: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iOS Architecture

Page 17: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

Mac Architecture

Page 18: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」
Page 19: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

完全に(でもないけど)一致

Page 20: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

センサ• 3軸ジャイロ

• GPS

• 2つのカメラ

• マルチタッチ

• つまむ、はじく、軽く叩く

Page 21: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iPhoneアプリの作り方

Page 22: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

開発に必要なもの

1. Mac OS Xが動くパソコン

2. Xcode + iOS SDK

3. iPhone/iPod Touch/iPad

4. iOS Developer Program登録

Page 23: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

Mac

• Mac OS X 10.6が動作するMac

• MacBook Airで開発やってます

• 絶対に必要ではないかもだけどかなり苦労するからMac使った方が絶対に楽

Page 24: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

Xcode + iOS SDK

• Ver 4から有料 (Mac App Storeで600円)

• iOS Developer Program登録者は無料

Page 25: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

実機 (iPhone / iPad)

• だいたいはシミュレータで確認

• カメラやマイクなど実機でしか試せない機能もある

• 申請前には必ずチェックしましょう

Page 26: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iOS Developer Program

• アプリの申請をするのに必須

• 実機で試験するのにもほぼ必須

• 個人の場合は$99/年

Page 27: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

Objective-C

• iPhoneやMacの開発で使う言語

• C言語の上位互換

• 歴史はJavaより古い

• Obj.C 1983年, Java 1995年

• GCC, LLVMでコンパイル

Page 28: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

Obj.Cでメモリ管理

• iPhone向けObjective-Cではガーベッジコレクションがない

• 参照カウンタによるメモリ管理

• 使い終わったら自分で解放する

Page 29: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

オブジェクトの生成• Java

List array = new ArrayList<Hoge>();

• Objective-C

NSArray* array = [[[NSArray alloc] init] autorelease];

Page 30: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

スコープ抜けると解放

if (HOGEHOGE) {

NSArray* array = [[[NSArray alloc] init] autorelease];

} スコープを抜けたらそのうちメモリは解放される(即座にではない)

Page 31: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

NSArray* array = [[NSArray alloc] init];

[array retain]; // 参照カウント2

[array release]; // 参照カウント1

[array release]; // 解放

Page 32: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

C言語の恩恵

• 多くのC言語で書かれたフリーウェアをObjective-Cから直接使うことができる

• GPLライセンスなど使うときは注意

http://www.gnu.org/graphics/heckert_gnu.png

Page 33: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

統合開発環境 Xcode

Page 34: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

統合開発環境 Xcode

テキストエディタ

GUIエディタ

デバッガ

Page 35: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

UIView

UIViewController

UIButton UILabel UITextField

UIView

Page 36: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

UIViewの上にドラッグ

Page 37: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

UIView

UIViewController

UIButton UILabel UITextField

UIView

クリックされた

Page 38: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

UIView

UIViewController

UIButton UILabel UITextField

UIViewクリックされたことだれに言うの?

Page 39: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」
Page 40: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

Ctrl+ドラッグでクリックイベントの送信先に接続

Page 41: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iOS Simulator

• エミュレータじゃないよ!

• 起動早い!10秒以内

• 某Android Emulator (SDK 3.1)

• 起動に6分10秒 on MacBook Air

Page 42: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

アプリの公開

Page 43: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

App Store

2011年1月 100億ダウンロード

アプリ本数 35万以上

Page 44: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

アプリ公開の流れ

1. iTunes Connectでアプリの情報登録

2. Xcodeでリリースビルド作成

3. レビュー

4. App Storeで公開

Page 45: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

恐怖の審査• すべてのアプリがくぐり抜ける関門

• Apple様が気に入らないことはやらない

• 分かりにくい操作はNG

• お金儲けもかなり面倒

Page 46: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

One more thing...

Page 47: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

自作アプリの紹介

Page 48: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

ニコ実

Page 49: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

実況見るアプリ1. 実況のコメサーバにTCP/IPで接続

2. XMLSocketでコメをリアルタイム取得

3. Core Animationでスクロール

Page 50: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

Core Animation

1. 画面右端にコメント配置

トゥットゥルー

Page 51: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

Core Animation

2. ?秒後に画面左端に移動すると宣言

トゥットゥルー

Page 52: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

Core Animation

3. iOSが間を補完してなめらかスクロール

トゥットゥルートゥットゥルー トゥットゥルー

Page 53: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

iOSなら1行で書ける詳しくはCore Animationでググって・・・

Page 54: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

MikuStand

Page 55: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」
Page 56: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

MMD見るソフト

• MMD_DesktopMascotの移植

• OpenGL ES 1.0

• http://code.google.com/p/mikustand/

Page 57: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

今日のまとめ• 日本ではiOSとAndroid OSの二強

• 開発環境としては簡単

• Objective-C覚える必要あり

• レビューで落ちないイイアプリを作ろう

Page 58: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

おわり

• ご清聴ありがとうございました

Page 60: みゆっき☆Think#4 「こんどはiPhoneに触ってみるよ!」

参考にした資料• http://www.m2ri.jp/newsreleases/main.php?

id=010120110510500

• http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/CocoaFundamentals/WhatIsCocoa/WhatIsCocoa.html

• http://blogyac.com/wp-content/uploads/2011/02/apple-imat1.png