A couple of months ago the question, "How do people make apps?," popped into my head. I asked my computer savvy son and his answer was vague about writing programs for them. So when Craig Hockenberry's iPhone App Development: The Missing Manual showed up at the Alaska Apple User Group review desk, I grabbed it. I wasn't planning on making any apps, but I was just wanted to get a sense about how they are made. So the rest is basically the review I did for the Apple User Group. The style is a little different from how I usually write. I'd just say, writing an App sounds possible (for someone like me) but would take a fair amount of work to learn. I'd need to have a killer app to do it. One thing I learned is that you can write your own app for your iPhone or iPod Touch. You don't need to buy them if you can figure out how to make one. [UPDATE 3/29: a reader corrected me here. You can test the APP on your computer, but the iPhone is not open source so you apparently can't (without more complicated workarounds that void your warranty) make it just for your own iPhone. But you can make your own Apps for Androids. Thanks J.]
I was surprised, to find in the first chapter, there was something called Xcode already on my Mac startup disk, but it's one of the extras that aren't included in the basic package of software most people load. And then once you get Xcode installed you have to get another free software - iPhone SDK - and you have to join the iPhone Developer Program to get that. But then you have software set up especially to make Apps.
But by chapter 2 it already wasn't going to be that easy. Hockenberry starts talking about Objective-C language. Since the last computer language I could do anything with was Fortran - and some basic HTML for my blog - this was getting beyond what I might be able to do without some serious effort. For those who already program I suspect this chapter will mean a lot more. It is just an overview and in the end he refers readers to Apple's free online book The Objective-C 2.0 Programming Language.
Chapter 3 is about Cocoa Touch frameworks - "the building blocks" - the parts of Cocoa Touch frameworks that get pieced together with your new adhesive [Objective-C]. The handy acronym to remember these by is MVC - Models, Viewers, and Controllers.
The Views are "all those buttons, scrolling lists, web browsers, and everything else that appears on your iPhone screen. . .Views know how to present your application's data. Some views also know how to react to user input.‚" (p. 67)
Models "are your application's heart and soul because they are responsible for managing the data. . . A model's only function is to manipulate and process the user's data within the application. Models often implement internal logic that provides these basic behaviors.‚"(p. 67)
Finally, Controllers "act as an intermediary between the view objects and the model objects."p. 68)
Chapter 4 goes in a totally new direction, one that I was able to follow completely: it's about the designing of tools. It is aimed at the techie who needs to work with a non-techie designer and discusses designing goals, unique designing issues for iPhones (such as the small size and low weight, left and right handed users, display rotation.) Then it goes through the design process - starting with paper and pencil - and how to get along with your designer, as well as getting feedback from beta testing and other methods. I had no trouble understanding this chapter and it is well done.
Part II of the book gets into much more programming depth and I only skimmed it.
Part III gets back into language and culture I understand - The Business End. It takes an App developer step-by-step from Beta testing through advertising. It covers pricing and user feedback and updating your product.
Based on the parts I could understand, I'd recommend this book to someone who was serious about getting into the App business. It's an intro to the technical part with links to get more information and it's a well written guide to the non-technical parts. I think that if I wanted to build an App, this book would be my basic guide and I'd be able to figure it out (going to the links it provides, of course.) And it also avoids the cutesiness of a lot of computer books.
As you can tell, I'm not going to be designing any apps soon, but I achieved my objective of getting a basic understanding of the App building process.