State ofappdevelopment

39
The State of App Development: 2013

description

A presentation I gave at the March 2013 Tokyo iOS Meetup. It covers some of the trends I see emerging in App Development.

Transcript of State ofappdevelopment

Page 1: State ofappdevelopment

The State of App Development:

2013

Page 2: State ofappdevelopment

•4 years ago: the single developer.

•The status quo for iOS Development is changing rapidly.

•Many of these changes are a result of the ecosystem surrounding the iOS platform.

Page 3: State ofappdevelopment

Third-Party Libraries

Page 4: State ofappdevelopment

CocoaPods

•CocoaPod is a dependency manager similar to Ruby gems.

•This is the biggest change to my workflow as an iOS Developer.

•http://cocoapods.org

Page 5: State ofappdevelopment

platform :iospod 'AFNetworking', '1.0'pod 'JSONKit', '~> 1.4'

In a text editor, make a Podfile:

On the command line:> pod install

Also useful:> pod search <name>

Page 6: State ofappdevelopment

Pod::Spec.new do |s| s.name = "Cocoa-Touch-Barcodes" s.version = "0.0.1" s.summary = "Fork of Jeff Lamarche's original barcode generator library at http://code.google.com/p/cocoabarcodes/" s.homepage = "http://code.google.com/p/cocoabarcodes/" s.license = { :type => 'New BSD', :text => "" } s.author = { "Jeff LaMarche" => "[email protected]" } s.source = { :git => "https://github.com/netshade/Cocoa-Touch-Barcodes.git", :commit => "d0aabd00efa" } s.platform = :ios s.source_files = '' s.public_header_files = '*.h'end

You can make you own Podspec like this:

Page 7: State ofappdevelopment

The number of third-party libraries

is growing.

Page 8: State ofappdevelopment

http://www.cocoacontrols.com/

Page 9: State ofappdevelopment

Ditching XCode

Page 10: State ofappdevelopment

AppCode

Page 11: State ofappdevelopment
Page 12: State ofappdevelopment

#include <stdio.h>int main(){ printf("\nHello World\n"); return 0;}

> clang -cc1 -xc -fsyntax-only -code-completion-at -:5:12 - < test.c

COMPLETION: __func__COMPLETION: __FUNCTION__COMPLETION: __PRETTY_FUNCTION__COMPLETION: asprintf : [#int#]asprintf(<#char **#>, <#const char *, ...#>)COMPLETION: clearerr : [#void#]clearerr(<#FILE *#>)COMPLETION: ctermid : [#char *#]ctermid(<#char *#>)COMPLETION: ctermid_r : [#char *#]ctermid_r(<#char *#>)COMPLETION: dprintf : [#int#]dprintf(<#int#>, <#const char *restrict, ...#>)COMPLETION: fclose : [#int#]fclose(<#FILE *#>)COMPLETION: fdopen : [#FILE *#]fdopen(<#int#>, <#const char *#>)...COMPLETION: printf : [#int#]printf(<#const char *restrict, ...#>)...

Clang does code completion

Page 13: State ofappdevelopment

It is Possible to Autocomplete in Other Text Editors

•Vim has ClangComplete

•Emacs has YASnippet and autocomplete

•Sublime Text has SublimeClang

Page 14: State ofappdevelopment

Not Objective-C (or C+

+, or C or Objective C++)

Page 15: State ofappdevelopment

There have always been alternatives.

Now there are more and more.

Page 16: State ofappdevelopment

Stuff That Has Been Around for a

while

•JavaScript frameworks (PhoneGap, Titanium, ...)

•Game frameworks: (Unity, Corona...)

Page 17: State ofappdevelopment

Not a comprehensive list

RubyMotion has some attention because it allows access to UIKit.

Page 18: State ofappdevelopment

Not a comprehensive listXamarin (formerly MonoTouch, which *has* been around for

awhile) announced 2.0, which can write iOS apps in C# using Visual

Studio.

Page 19: State ofappdevelopment

Objective C will be Apple’s mainstay language for long time

to come.

Page 20: State ofappdevelopment

But other tools are available and have even been maturing for a

long time.

Page 21: State ofappdevelopment

One reason is that Apple used to reject alternative programming

languages.

That fear is almost completely gone.

Page 22: State ofappdevelopment

NOTE: At this meetup, we have never had a presentation on

developing in a language other than Objective C.

Page 23: State ofappdevelopment

Testing

Page 24: State ofappdevelopment

Unit Tests•GHUnit (

https://github.com/gabriel/gh-unit)

•Cedar (https://github.com/pivotal/cedar)

•Kiwi (https://github.com/allending/Kiwi)

•WiteBox (http://code.google.com/p/witebox/)

Page 25: State ofappdevelopment

Integration Tests

•Frank (http://testingwithfrank.com)

•Kif (https://github.com/square/KIF)

•Zucchini (http://www.zucchiniframework.org)

Page 26: State ofappdevelopment

Most of the standard practices from web development are now

available in mobile app development as well.

Page 27: State ofappdevelopment

PonyDebugger

•https://github.com/square/PonyDebugger

Page 28: State ofappdevelopment

Super Debugger

•http://shopify.github.com/superdb/

Page 29: State ofappdevelopment

App Services

Page 30: State ofappdevelopment

TestFlight (https://testflightapp.com) /

HockeyApp (http://hockeyapp.net)

Not a comprehensive list

Page 31: State ofappdevelopment

Hosted CI: https://hosted-ci.com

Not a comprehensive list

Page 32: State ofappdevelopment

Localization (http://applingua.com)

Not a comprehensive list

Page 33: State ofappdevelopment

Crash Reports (http://try.crashlytics.com)

Not a comprehensive list

Page 34: State ofappdevelopment

Device Testing (http://www.keynotedeviceanywh

ere.com)

Not a comprehensive list

Page 35: State ofappdevelopment

If you have a problem, some one has a service to solve it.

Not a comprehensive list

Page 36: State ofappdevelopment

One of the biggest changes is that the ecosystem surrounding app development is growing at a

rapid rate.

Page 37: State ofappdevelopment

People who recognize these changes, and that things are

changing, will be able to develop quality apps more quickly by making use of these tools.

Page 38: State ofappdevelopment

But, following all of the developments is becoming

harder and harder.

Page 39: State ofappdevelopment

The moral of the story: the days of a single developer making a

successful app are probably much harder, but following the ecosystem will probably to give

you the best advantage.