iPhoneやiPad/iPod touchなどの携帯機器が普及して多くの人が手に入れられるようになり、しかもそこに後からアプリケーションを入れて使える。どうも特別な企業じゃなくても個人でもそういうアプリを作ってiPhoneとかに入れて使えるらしい。
ということで今までプログラミングの経験のない人が自分でもなにかアプリケーションを作って使いたい!と思うのはごく自然なこと。結構多くの初心者がiOSプログラムを作ろうとしています。だからこそ毎月のように次々とプログラミング入門書が発売され再販され改訂され部数をのばしています。
でも、iOSプログラミングというのは結構難しい。最新のオブジェクト指向の考え方やデータベース、通信など多くの技術的背景知識が必要。プログラミング言語も知っていないとできない。使っているのはObjective-CでそれはC言語の一種のようだ。まずどこから手をつければイイの?最初にC言語を勉強しないとプログラムは作れないの?という人は多い。
これは「Androidゲームを作りたいけど、Javaの勉強をしないとダメですか?」でも同じこと。もちろんゲームに限らない。
でもそこからはじめていては実際にiOSのプログラムが出来るようになるには相当時間がかかる、何の役に立つかわからないような難しいことも勉強しないといけない(iOSアプリを作るのに役立つんだけど…)。これって結構ハードルが高いし、面白くない(あるいは面白いと思えない)ことを続けるのは難しい。結局やりたいことができないまま挫折することになりかねない。
だから、私はそんな回り道をせずにいきなりプログラミングを初めてしまっていいと思う。プログラミングの勉強をしないでいいってことはないけど、プログラミング言語の勉強とかコンピュータが動くハードウェアの仕組みとかの基礎から勉強を始める必要なんてない。
じゃあどこからはじめるのか?Appleのサイトでもあるいはgithubでもプログラミング入門サイトでもどこでもいいけど、どこかから自分が作りたいアプリに似たことをしているアプリケーションのソースコードをダウンロードしてくればいい。そしてそれを動かしてみて、自分が作りたいものはそれとどこが違うのかということを考え、どこでそれをしているのかを見つけ改造すればいい。逆に、ひな形はXcodeにあるものを使い、そこに別のアプリのある機能をコピーペーストしてきてもいい。動いている物を少しずつ変えて自分の作りたい物に近づけて行くのだ。
その過程で、変更したらエラーが出た思ったような動きをしない。などの問題が発生する。そしたらエラーメッセージを見たり、改造部分のコードを詳しく調べたりしながら、少しずつ自分が使う部分について勉強していけばいい。
結構な回り道が必要かもしれない。でもそれはその動かない部分を自分がやりたいような動きをさせるためにする目的が具体的ではっきりしているのだから頑張れるはずだ。元のコードがあまりに複雑だとどこが悪いのか見つけられないから、最初はなるべく簡単なサンプルで簡単な改造をしたほうがいい。1行ずつとか変えては実行して変化を確認しながらやらないと、C言語もろくに知らない段階なんだからあまり複雑すぎるとどの部分がどういう影響があるのか見つけるのが大変なんだから小さな小さな一歩から始めるべきだ。
楽しくなければ続けられない。ちょっとでも自分に興味のあることからまず始めるべきだ。
Linuxを開発したリーナス君だって、(C言語はもちろん勉強した後だったけど)最初はMinixという学習用OSのソースコードをちょっとずつ改造して自分のやりたいことを組み込んで行って最後に全世界で使われるOSを作り上げてきたんだ(途中でMinixのコードは全部なくなったらしい)。
パーソナルコンピュータ黎明期のプログラマーだって、雑誌に掲載されているソースコードを打ち込むことからプログラミングを始めた人は多い。見よう見まねで、ここをこう変えたらこう動くのかというところから始めているのだ。
大規模で複雑なアプリを作るにはそのままではできないし、そんなつぎはぎアプリを販売されたんじゃ困ってしまう。安定して効率のよいアプリを作るにはプログラミング言語や他にも色々な知識が必要だ。
だけど、今ここで言っているのはプログラミング経験のない人が、自分の持っているiPhoneで動く自分だけのアプリを作ってみたいという段階の話。楽しくなければ続けられない、やりたいことから遡って勉強していけばいい。
ただし、いきなりサンプルプログラムをダウンロードしてきて作り始めるのはちょっと難しい。できれば自分が作りたいアプリに近いサンプルを掲載している入門書を一冊買ってきてそれを読み通してみるのがいい。どちらかというとソースコードをダウンロードしてくるよりはコードを自分で打ち込んだ方が勉強にはなるだろうけど、無理は言わない。
そして、できれば、ある程度プログラムは作れるけど……と壁を感じたら、あるいはよしApp Storeに出そう!という段階になったら、プログラミング言語とかオブジェクト指向設計とかソフトウェアのテストとかの勉強もちゃんとやってください。