初めてのiPhoneアプリ開発で、大変だったこと 1新言語の学び方(Objective-C)
iPhone版の宅建アプリをリリースするまでに時間がかかった原因は、Objective-Cにあります。
iPhoneアプリ開発に必要なObjective-Cは、C言語の応用と言われています。
しかも、C言語自体の難易度が高いというウワサを聞いていたので、その応用であるObjective-Cにだいぶビビってました。
プログラミングを始めて1年くらいで、当然C言語も全く知りません。
にもかかわらず、その応用というのはきつすぎます。
ですが、いい加減逃げてばかりもいられないので、iPhone版を作ることにしました。
新言語の学び方
Objective-Cの本を読む段階とJAVAでの経験
新しくプログラミング言語を学ぶ場合について、1年前に初めてJAVAを学んだときのことを思い出すと、まずは簡単なJAVAの本を読むことから始めました。
そのため、今回も、Objective-Cについて書かれた本の中で、最も自分にとってわかりやすい本を選びました。
そうして、数日かけてObjective-Cの本を読んだのですが、JAVAと似ているところもあれば、全然違うところもあるなあ、くらいのことしかわかりませんでした。
ようするに、ほとんど何もわかりませんでした。
よくよく考えてみると、androidアプリを作っていましたが、いまだにJAVAのことすらよくわかっていませんでした(引数と返り値付きのメソッドを自分で用意したことがなかったり)。
そうであっても、androidアプリを作れています。
つまり、別にその言語のことを理解していなくても、コードは書けるということです。
サンプルコードを写す段階と気づいたこと
というわけで、Objective-Cの本を読んで理解するのはもうやめて、サンプルコードが多めの本を使い、実際にサンプルアプリを作ってみることにしましした。
5つくらいのサンプルアプリを作ったと思います。
ここで、気づいたことがあります。
それは、サンプルアプリのコードを写しても、Objective-Cは理解できない、ということです。
というのも、サンプルアプリを作る目的は、Objective-Cを実践で使ってみることで、少しでもObjective-Cを理解することにありました。
ですが、5つくらいサンプルアプリのコードを写したけど、Objective-Cのことがほとんど何も理解できていないことに気づきました。
わからない原因の一つに、サンプルアプリのコードは、Objective-Cを理解させることを目的に作られていないからです。
わざわざ本にコードを載せるくらいなので、少しでもキレイでカッコいいコードを書いているはず。
となると、Objective-C入門者が理解するには、複雑すぎたりして不適切です。
そのため、Objective-Cを理解する目的でサンプルコードを写すのはやめました。
自分で作りたいアプリを作る段階とわかったこと
もうサンプルコードを写すこともやめ、いきなり、自分が作りたいアプリの開発をすることにしました。
TOP画面はボタンを何個設置して、そのボタンを押すと画面遷移する、ということは、ボタンの処理と画面遷移の処理ができるようにしたい。
このようにして、必要な機能を明確にし、それについてネットで検索して、コードをコピーしていきました。
こうして、いきなり作りたいアプリを作っていくことで、急激にObjective-Cに慣れてきました。
すると、1週間くらいで慣れてきて、なんとなく書けるようになりました。
この経験から、大事なことがわかりました。
それは、その言語を理解していなくても、慣れてくればなんとなく書けるようになってくる、ということです。
そして、慣らす一番いい方法は、さっそく自分の作りたいアプリの機能をつけてみることです。
特に強調したいこととして、サンプルアプリのコードを写して、いくらサンプルアプリが動いても、ちっとも楽しくありません。
なんで動くのかもよくわからないし、ただなんとなく写したら動いたけど再現性がないっていう。
楽しくないからほとんど身につきません。
それに対し、自分でアプリに必要な機能を考え実際にその機能をつけたときには、ボタンを押すと画面遷移するという簡単な動きをさせただけなのに、すごく楽しくなりました。
やはり、楽しむと身につくのも早いです。
サンプルコードを写す段階とObjective-Cの本を読む段階の必要性
とはいえ、サンプルコードを写す段階は必要です。
目的は、Objective-Cを理解することではなく、Xcodeの使い方に慣れるためです。
サンプルコードを写す意味は、Xcodeの使い方に慣れるためだけ、と言っても過言ではありません。
もう一つ、Objective-Cの本を最初に読んだことも必要でした。
それは、Objective-Cを理解するためではありません。
Objective-Cに少しでも慣れるためです。
いきなり、本を読んだだけで、基礎を完全に理解することはできません。
Objective-Cの本を3回ほど繰り返し読みましたが、基礎を完全に身につけることはできなかったからです。
ただ、本でObjective-Cのコードをある程度目にすることで、理解はできなくても、ほんの少しだけ慣れてきます。
というわけで、Objective-Cの本を読んだことと、サンプルコードを写したことは、当初の目的とは違う意味で重要でした。
なぜswiftでなくObjective-Cにしたのか
今年の6月後半からiPhoneアプリ開発に着手したので、当然、もうすでにswiftが使える状態になっていました。
swiftの特徴は、Objective-CからC言語の難しさを除いたもので、JAVAとの共通点もかなり多いです。
しかも、swiftでコードを書いた方が処理も早いらしいです。
そこまでわかっていて、なぜswiftで開発をしなかったのか。
理由は2点あります。
1点目、swiftが対応しているiOSのバージョンは7以降です。
そのため、iOS6以前のバージョンでは使えません。
少しでも多くのiPhoneユーザーに使ってもらいたかったので、swiftにしました。
2点目、swiftの情報は、ネットをみてみると思っていた以上にたくさんありますが、それでもまだObjective-Cに比べると少ないです。
そのため、自分がつけたい機能がswiftで書かれていなかった場合、Objective-Cで調べなければなりません。
とすれば、Objective-Cを身につけるのが先だと考えたからです。
やはり、Objective-Cを身につけてからswiftを身につけるストロングスタイルが一番いいと思います。
実は、Objective-Cを勉強し始めて、あまりにもJAVAと違ったため、イヤになってswiftを身につけようとしました。
実際、swiftはすごくJAVAに似ていて、メソッドの呼び出し方も同じなので、本を読んだ段階で、そこそこ理解できました。
そこで、swiftでアプリを作ろうとした段階で、swiftではまだ欲しい情報が少なく、Objective-Cの必要性を感じました。
というわけで、一応、swiftは軽くたしなみました。
その上で、今の自分のレベルでは、Objective-Cを身につけるのが先と判断したのです。
もっとswiftが浸透してから、あらためてswiftに移行したいと思います!
iPhone版 宅建アプリ完成!
昨日のお昼頃、itunesで申請しました!
あとは、平均5〜6日で審査がされてリリースできるらしいです。
8月3日に申請し、8月7日時点では、まだ審査中です。
期待してくださっている方には申し訳ないです。
もうしばらくお待ちください。
リジェクトの可能性
iPhoneアプリの場合、androidと異なり、リリースするには審査があります。
審査の結果によっては、リジェクトすなわち却下されます。
よく聞くリジェクトの原因としては、アイコン型の広告を用いた場合や、webViewがメインでほとんどwebアプリと変わらない場合など!
そして、今回申請した宅建アプリに該当しそうなリジェクト原因は、アプリが未完成というものです。
実は、iPhone版の宅建アプリをandroid版と同じ機能にしようと思ったらだいぶ時間がかかります。
そこで、宅建アプリとして必要不可欠な機能のみを実装して、それができた段階でリリースしました。
そのような状態であっても、宅建アプリとしては十分な機能なので、デザイン面で工夫をすれば未完成にみえないのではないか、という意見があると思います。
ですが、完全版ではない状態であえてリリースして、次のアップデートで使える機能が増える、という楽しみをぜひ味わっていただきたい。
アプリをリリースした初期の段階には、そういう楽しみがあると思うのです。
そのために、今は使えないけど、今後使える機能というのがすぐにわかるようにしました。
それがこれです!
表示されているボタンのうち、実に7つが白いという!
ですが、必要な機能としては、3つで十分なのです!
「分野別」モードで解きたい問題を解き
「復習」モードで間違えた問題やチェックした問題だけを解く。
どの問題を解くか迷ったときは、「ランダム」モードですぐに問題を解く。
これらの機能で、過去11年分の問題を解説付きで解ける。
そのため、まだ「重要度」モードと「年度四択」モードはありません。
かつて、android版の宅建アプリの場合も、「重要度」モードと「年度四択」モードは、リリースしてから3週間後に追加しました。
とはいえ、万が一リジェクトされた場合に備えて、その他の機能を急ピッチで仕上げます!
ぜひ、iPhone版の宅建アプリをよろしくお願いいたします!