State ofappdevelopment

Post on 07-May-2015

317 views 0 download

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

The State of App Development:

2013

•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.

Third-Party Libraries

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

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>

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" => "jeff.lamarche@gmail.com" } 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:

The number of third-party libraries

is growing.

http://www.cocoacontrols.com/

Ditching XCode

AppCode

#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

It is Possible to Autocomplete in Other Text Editors

•Vim has ClangComplete

•Emacs has YASnippet and autocomplete

•Sublime Text has SublimeClang

Not Objective-C (or C+

+, or C or Objective C++)

There have always been alternatives.

Now there are more and more.

Stuff That Has Been Around for a

while

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

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

Not a comprehensive list

RubyMotion has some attention because it allows access to UIKit.

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.

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

to come.

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

long time.

One reason is that Apple used to reject alternative programming

languages.

That fear is almost completely gone.

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

developing in a language other than Objective C.

Testing

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/)

Integration Tests

•Frank (http://testingwithfrank.com)

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

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

Most of the standard practices from web development are now

available in mobile app development as well.

PonyDebugger

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

Super Debugger

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

App Services

TestFlight (https://testflightapp.com) /

HockeyApp (http://hockeyapp.net)

Not a comprehensive list

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

Not a comprehensive list

Localization (http://applingua.com)

Not a comprehensive list

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

Not a comprehensive list

Device Testing (http://www.keynotedeviceanywh

ere.com)

Not a comprehensive list

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

Not a comprehensive list

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

rapid rate.

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.

But, following all of the developments is becoming

harder and harder.

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.