プログラマでありたい

おっさんになっても、プログラマでありつづけたい

熟練のプログラマが、iPhone/iPadアプリ作成に苦戦する理由

 何回かiPhone/iPadアプリの作り方をレクチャーしていたのですが、わりと優秀なプログラマでも苦戦することが何回かありました。反面、経験の浅いプログラマがすんなりと習得している例もありました。
 どうしてなんだろうなぁと考えていたのですが、最近少しだけ理由が解りました。サーバサイドプログラムに慣れているか、JavaScriptのようなクライアントサイドプログラムに慣れているか、この違いが大きいです。もう少し言うと、イベント駆動型プログラミングの考え方があるかないかです。
 私自身も、JavaScript書くよりサーバサイドのプログラミングを書くことが圧倒的に多かったこともあり、最初にiPhoneアプリを作った時はかなり戸惑いました。理由としては、書いた処理がどの順番で呼ばれているか、また何故呼ばれているのかさっぱり解らなかったからです。暫く触っていてJavaやRuby,Pythonではなく、イベント駆動で呼ばれるJavaScriptに近いんだと解ってから理解が急速に進みました。今から考えると当たり前の話なんですが、一番最初の時は全然気が付きませんでした。


 ということで上記過程を経て一つのシンプルな原則を編み出しました。


クラスの役割と、イベントのライフサイクル、レスポンスをまず覚える


 上記の原則を抑えながら開発していくと、かなり上達のスピードがあがります。例えば、UIViewControllerのライフサイクルでいうと、最初にinit(init,initWithNibName,initWithCoder)処理が走り、loadView -> viewDidLoad -> viewWillAppear -> viewDidAppearと順番に処理が進みます。画面が非表示になる際は、viewWillDisappear -> viewDidDisappearとなります。また画面回転の際にはshouldAutorotateToInterfaceOrientation等のイベントが走りますし、メモリ不足の場合にはdidReceiveMemoryWarningのイベントが発生します。
 またどのようなライフサイクル・イベントがあるかを覚えていくだけで、クラスの性格も解ってきます。例えばUIViewとUIScrolleViewのイベントの違いが解れば、使い方も自ずと理解できます。後は習うより慣れろですね。Enjoy!!