Pages

Monday, April 28, 2014

App Development 102: Getting Started

So you have read the first User Tip - App Development 101: Planning and are now ready to get started. Good. Let's do that.

 

The previous User Tip was addressed at both business owners and developers. This, and any subsequent ones, are focused more towards developers. But there may still be some technical planning that only the business owner can perform. If the app your are planning is going to interact with other services on the internet, then you will need to work with your developer to plan how to access them. If these are not your own services, then you may need legal advice as well. The internet is often thought of as a freewheeling, copyright-free, anything goes zone. For most consumer-level activity, that is pretty much true. For business activity, that is not true at all. Companies that turn a blind eye towards pervasive, worldwide copyright infringement by consumers will sue a business in a hearbeat for even the slightest hint of infringement of intellectual property like copyrights, trademarks, and/or patents. Doubt me at your peril. 

 

It is a critical responsibility of both the business owner and developer to ensure that you are not violating anyone else's rights regarding their intellectual property. That includes artwork and sounds in your app, marketing materials, trade names, and internet services. Internet services that are not your own will come with terms of use that you must follow. As a business, even if providing a free app, most of those consumer-level terms don't apply. You must read them very carefully to see what you can and can't do from an app. Remember that you are not Google and you will not get a free Fair Use pass. What is acceptable for major corporations, or indvidual consumers, is sometimes illegal for small businesses. Such is the way of the world.

 

That being said, there are many services that you can use. Just read the terms of use. Apple offers many internet services such as iAd, Maps, iCloud, iTunes, and others. There are a number of organizations that provide open data such as Wikipedia, OpenStreetMap, and governent agencies. Read their terms of use and use them.

 

If you are writing an app that will make use of internet services, either your own or from someone else, the first task is to identify how to access them. In some cases, their authors provide SDKs that can be included in your app. In other cases, there are published specifications on how to access this data. If you are planning your own internet service for your app, then you should design and test it before your app. The standard method for accessing internet services today is using a RESTful architecture with JSON data. You can, and should, develop and test access using tools like CURL and Perl, Python, Javascript, etc. from the command line. You may want to setup a local web server for testing the entire system on your Mac.

 

Although this is technically the "Getting Started" Tip, you never stop planning. Consider how your app and service will scale. Maybe your app will become an overnight sensation. The last thing you want to see is a popular app get stopped by a insufficient infrastructure. You could overwhelm a third party service provider and they could cut off access to their service. This is another reason to have your own servers available. You might want to consider cloud services as well. You need to make sure that the methods and technologies you use can be moved to new servers and distributed across the cloud, if necessary. From an app perspective, your servers are more than just web servers. Apache may not be appropriate. You may want to consider other servers such as Nginx and Node.JS. Even if your needs are modest, I strongly recommend Node.JS for internet services. It is very easy to write a Javascript RESTful server in Node.JS. No PHP or CSS required.

 

Don't neglect your data. While you may not be concerned about scaling, there are other factors to consider. If you are providing internet services to your app, you will probably need a database. On the server side, MySQL is easy and ubiquitous. If you need to persist data inside the app, we use Core Data now. There are other methods, but they are at risk of scale. If you are developing apps as a way to market yourself, then be honest about that and factor it into your plans. While you may not need anything more than MySQL, NoSQL experience is far more valuable these days. The same applies for Cloud services.

 

Don't forget security. Security is a huge topic. If you are providing internet services, be very careful about private user information. Abuse of private information can get you kicked out of the Apple Developer program, or worse. Don't assume your service won't be hacked. It will. You may want to consider encryption. If so, that will require yet more planning, paperwork, and time to secure the appropriate certifications from the US government so your app can be sold or downloaded from Apple's US-based services.

 

What happened to Getting Started? We haven't even started coding yet? That's next in App Store 103: Coding.


View the original article here

0 comments:

Post a Comment