Web Site Expert巻頭レポート(英語)

Mark Murphy: A Developer’s Look at the Android

As attack ads go, Verizon’s television spot for its Android-powered Droid handsets couldn’t be any cheerier. Opening with the sun-infused song ⁠Magic (Oh Oh Oh)⁠⁠ from singer-songwriter MoZella, the ad, with its black text on a white background, looks as if it were designed by Apple.

Not quite. Verizon, the second largest U.S. carrier, takes aim at a few chinks in the iPhone’s armor: ⁠iDon’t have a real keyboard.⁠⁠iDon’t run simultaneous apps.⁠⁠iDon’t take 5-megapixel pictures.⁠⁠iDon’t customize.⁠⁠iDon’t run widgets.⁠⁠iDon’t allow open development.⁠⁠iDon’t have interchangeable batteries.⁠⁠Everything iDon’t…….Droid does.⁠⁠ Of course Apple could easily counter: The Droid ⁠don’t⁠⁠ have 100,000-plus applications, the iPhone’s slick user interface, or the Apple cool factor. With the possible exception of the Google Maps Navigation System?which reinvents the GPS using Google mapping data?the Droid has no obvious killer app. Verizon doesn’t carry the iPhone, but gets good reviews for its voice and data coverage. The carrier claims five times the 3G coverage of AT&T in the U.S. Hence for Verizon subscribers, the biggest deal about the Droid is not that it’s different from an iPhone, but that it’s so similar.

For application developers, the Droid marks a different occasion?the Android OS’s transition to a consumer brand. ⁠Android⁠⁠ is still not a household name, but Google is, and the Droid is helping bridge the two, as are other carriers marketing Android-powered phones.

Looking at this heated battle, it’s hard to remember that in the iPhone’s early days, developers weren’t sure what kind of welcome they’d receive. Apple seemed to embrace the idea of third-party development only reluctantly, and even today, Apple’s legendary control is in full force, with iPhone apps available only on the iPhone App Store and only with Apple approval. As with the Mac, that approach is not necessarily a bad thing. By controlling the hardware, software, and development environment, Apple has created a comfortable, identifiable environment for the iPhone, much as Disney does in its theme parks. It may be insular, but you don’t have to worry much about surprises.

From the beginning Google has taken a different approach, starting with the Android OS code, which is open source. And whereas the iPhone OS is found only on iPhones, the Open Handset Alliance?the Android consortium?has more than 40 members, including NTT DoCoMo, Toshiba, Sony Ericsson, HTC, Intel, and Motorola. So we have a closed source operating running on a single vendor’s hardware versus an open source OS running on multiple platforms. Apple has a head start, but Google is following a well-trod path to gain market share.

To get an idea of what Android means to software developers, including Web Site Experts, I spoke with author and entrepreneur Mark Murphy, whose books include the Busy Coder’s Guide to Android Development, The Busy Coder’s Guide to Advanced Android Development and Android Programming Tutorials. His new book, Android Beyond Java, will be released later in 2010. He also writes the ⁠Building Droids⁠⁠ column for the AndroidGuys blog and the ⁠Android Angle⁠⁠ column for NetworkWorld.

Murphy has been developing software for more than 25 years, and he has had his eye on wireless Internet services since the introduction of the Handheld Device Markup Language, a forerunner to WAP. ⁠The dot.com I owned at the time thought this was going to be huge,⁠⁠ he recalled. ⁠But we were about a decade too early, in part because the phones were horrible and WAP itself only attracted a relatively small following. Every few years I would dip my toes back in the water?looking at the Palm, at the early Windows Mobile stuff?waiting for the wireless Internet to explode. Finally Google released the first beta of Android and Apple said, yes, we’ll give you a real SDK for iPhones. I knew that those were going to be big and this was a fine time to get back in the game.⁠

For Murphy, that game has pretty much been Android. He has plenty of respect for what Apple has accomplished and doesn’t think Android phones will displace iPhones anytime soon. But he believes that Google’s more open approach gives developers more ways to make money. Nor does he mind that iPhone is the market leader. For developers, Android’s wide open spaces are an opportunity.

How would you compare Android and the iPhone in terms of development?

If you are an OS X developer who is familiar with Objective C, iPhone is no big deal. Obviously, you’ll need to learn some new APIs that deal with mobile features like event handling and the media player, for example. But by and large, you are going to be comfortable making the transition. But if you haven’t done OS X development or did it in something other than Objective C, well?there’s a reason why nobody uses Objective C outside of Apple. I remember looking at it 15 years ago and thinking even then that it wasn’t going to be able to stand up to C++. Java has much more in terms of courses, books and other resources.

Android is not Java ME. It’s closer to Java SE in terms of the available APIs, but it’s not an exact match there either. If you are used to doing desktop GUI development in Android, you’ll see some similarities, but you won’t be using a GUI toolkit like Apache Sling framework or SWT, the Standard Widget Toolkit. But even so, Android will look relatively familiar and straightforward.

For website developers, are there any natural transitions to Android development?

There can be. You can divide building Android applications into two spheres. There is the classic, do-it-in-Java sphere, where you are creating GUI layouts in XML and are backing that with Java code that handles all your button clicks and list taps. This bears little resemblance to Web development. In fact, for my training courses, I recommend that students not only have a basic understanding of Java, but that they also do some GUI development in a widget-based framework. That background will take you to a lot of places, but Web development isn’t probably one of them. That’s because people doing Web development are dealing at relatively low levels?HTML, CSS and JavaScript. Android doesn’t resemble that style of Ajax development much at all.

Where Web development can help is in the other sphere of Android development?what I call the ⁠anything but Java⁠⁠ sphere. This is a place where Android has a leg up on the iPhone. Apple has rules about what they will and will not allow in the iPhone App Store. In particular, they don’t like interpreters, whereas with Android, that’s not a restriction. That means that Android developers can choose from many languages and toolkits for building Android applications that are in various states of growth.

Of particular interest to Web developers, are the new cross-platform mobile development kits that leverage the fact that both iPhone and Android use the WebKit open source browser engine. Both allow you to embed WebKit in an application and inject stuff into the JavaScript name space inside of it. Toolkits like PhoneGap and Appcelerator’s Titanium Mobile take that approach, allowing you to write an iPhone app and an Android app at the same time. You aren’t using Objective C or Java, but HTML, CSS and JavaScript. In JavaScript, you are using some of the new global variables that allow you to take advantage of mobile-specific resources, like accelerometers.

Is HTML5 also a connector between Web and Android development?

Yes. Android 2.0 has started to enable more HTML5 native features, leveraging the fact that the Android SDK includes WebKit support. And WebKit is headed directly towards HTML5, as well. Google is banking heavily on HTML5. Google Wave, for example, the communication/collaboration service, wouldn’t exist without HTML5. There is little question that HTML5 is big for Google?and will be for Android.

Does Chrome OS matter in terms of Android app development? I know that’s hard to tell, given the operating system isn’t due until the second half of 2010.

I don’t know?it’s so early. For example, what is the programming model going to be for Chrome OS? Will every application truly be in the cloud? Or will there also be web apps via HTML5? Or something else, entirely? Until we know more, I don’t see what I, as a programmer, can do to prepare.

One of the biggest differences between iPhone and Android is how developers can sell their applications. How do you see the differences?

Here again there are two spheres: the sphere everyone focuses on, and the sphere everyone should be focusing on.

People are mostly focused on selling individual apps to individual users via the iPhone App Store and Android Market. Android Market differs in that Google doesn’t vet the applications up front. As a developer, you just create a profile, pay a registration fee, agree to the terms, and you can upload your app. I uploaded one?a simple app related to a book?and minutes later, people were already downloading it. That’s not to say that the app can’t get pulled. Somebody might point out how an application violates the terms of service for either the Android market or a carrier. But with the Android Market, you ask for forgiveness, rather than having to seek permission.

Another difference is that Android Market listings don’t have to be exclusive. Google uses the Android Market, in part, as a way of insuring quality. They won’t let you run the Android Market until they’ve gotten their hands on your devices and confirmed that yes, apps that are out on the market and have a snowball’s chance in Fort Lauderdale of actually running okay. And they have actually withheld it in some cases. But you can create other markets, and you can offer Android apps from a properly configured website.

What’s the other sphere?

I did a blog series on Android Guys called ⁠40 Android Business Models.⁠⁠ Only one of those is selling individual apps to individual users. And of the 40, I’d put that one close to dead last in terms of where I’d be want to put my time, because it’s so difficult for an individual developer to break in. But there are so many other possibilities. You build apps for enterprise schools, mobile phone carriers and OEMs. You can take the ⁠freemium⁠⁠ [free+premium] approach of giving give away your application, and sell premium features, customizations, bundles, and plugins?or make revenues from ad sales. You can create development tools. You can even create your own application marketplace. Of course some of these areas do overlap, applying both to Android and iPhone.

One of the biggest advantages for Android developers is that Android is still relatively new, which means you can do things that are already being done on the iPhone, but remain scarce for Android. For example, I think there’s room for doing Android application reviews.

Android’s being open source also lets people do things they could never do with the iPhone, such as licensing an app to a carrier to be pre-installed on their handsets. One consultant customer of mine was able to get their application pre-installed on the Motorola CLIQ/DEXT. That is probably not going to happen with the iPhone?or even if it does, there’s only one handset maker, Apple, whereas with Android, there are dozens of opportunities with different carriers and handset combinations: and that’s only going to grow. There’s also the possibility of doing what I call Android ⁠remixes⁠?where Android supports a dedicated e-book reader, medical transcription package, or high-end media player: some device that an OEM could brand and market without requiring a gargantuan engineering team to build. We’re already starting to see some of this happen.

What about porting iPhone apps to Android?

With all of the buzz around the Verizon Droid, especially, application vendors are starting to take Android more seriously. Some forward-thinking firms began last summer. I’ve helped a couple of consulting clients with iPhone apps do it. Obviously, these are re-implementations. You may be able to use some of the graphic assets, but this is no different than going from the iPhone to Blackberry. You either re-implement the app as an Android app or perhaps use a cross-platform toolkit to create a single, consolidated code base.

I’ve read some grumblings about Android fragmentation. Android supports multiple devices with multiple screen sizes, and there have been multiple versions of Android, itself. People worry that Android will go down the Linux route, where you may have one operating system in theory, but many operating environments in practice.

There’s no question that some apps are going to have trouble dealing with different screen sizes and other hardware variations. But Android is handling a lot of this. For the most part, if you follow the guidelines, applications will just work. For example, on a whim, I tossed an app I wrote for my client for the Motorola Cliq onto an Archos Android tablet, which has a WVGA 800x480 screen. The app looks fine. You could probably do things to take better advantage of the space, but it worked. Of course the more you push the Android envelope, the more likely the differences will matter. Games, for example, could encounter more problems. But it’s not like Apple itself is going to stick with 320x480 forever. Whether it’s an iTablet or some other form factor, iPhone apps will eventually be running on multiple screen sizes. Android is just getting there a little earlier because device manufacturers are interested in experimenting.

As for multiple versions, Android is pretty backwards-compatible in terms of APIs. The vast majority of Android 1.5 applications will run fine on Android 1.6 and Android 2.0. The Android Market filters for the reverse direction, so somebody with an Android 1.5 device, such as the HTC Hero, will not get apps that only work on Android 1.6 and newer.

Is Android 2.0 some kind of a milestone?

There’s a lot of interesting things in 2.0, including the new Google Maps navigation that’s shaking up the GPS market. But this isn’t like going from XP to Vista and Windows 7. These are incremental features, not a radically different operating system.

What about Verizon’s aggressive advertising for the Droid?is that a milestone?

I think the Verizon’s advertising is a watershed in terms of raising consumer awareness about the Android. Google doesn’t advertise. And the advertising from other carriers and handset makers hasn’t been that strong. But Verizon has a long history of doing a lot of consumer advertising. And you can see that experience in its campaigns.

Verizon advertising was notable in that they took on iPhone directly.

I was surprised. The advertising has gotten a lot of attention, and it was audacious. But, by all reports, Droid is not an iPhone killer, though it certainly deserves to be on the same stage as the iPhone. The iPhone isn’t as open as I’d like it to be, but it’s a fine device. Android devices aren’t going to collectively topple the iPhone, at least anytime soon. And for me, that’s not even a goal. I’m looking for Android to be a player in the mix of smartphone operating systems and for Google not to make any stupid moves. Android doesn’t have to be number one.

Android has a lot of momentum and is likely to wind up being a significant player in the smartphone marketplace: I’m expecting double digit market share within a couple of years. And at the same time, there are still plenty of opportunities to make your name in the Android arena. The iPhone was a land rush that happens once in a decade. Android will be much more traditional in its growth curve, so there are plenty of places to get on board and do good things. If you are looking to get into mobile with a chance of being a big fish in a reasonable sized pond, then Android is a fine technology to consider.

It does seem to me that Android could use a lot more Japanese language resources: more websites, developer forums, and other things to help Japanese developers get more involved. Maybe I’m missing something because I’m just an American with three semesters of Japanese. But if Japanese developers are interested in creating those resources, I’m happy to help them figure out what directions to take.