2017年の年初めに行ったことは、Xcode&swiftを使ってアプリ制作をすることでした


新年明けましておめでとうございます!

2016年は自分にとって激動の一年でした。ブログという自分のメディアを持ち、これからの人生の軌跡を書き残していきたいと思いスタートさせたのがきっかけでした。

今年の夏に10年従事してきた小売業からIT業界へ転職したのも自分にとっては大きな変化でもありました。

不定期ですが、これからも更新してまいりますので宜しくお願い致します。

2017年の目標であるiPhoneアプリ制作のために

未経験からIT業界に転職したからには、iPhoneアプリを作れるようになりたいと考えていました。

Androidよりも直感的に使えるApple製品が好きなので、開発するために制作ツールであるXcodeをサクッとダウンロードしました。

プログラミング言語は、無料の学習サイトであるschoo(スクー)codeprepで基礎は学習していたものの、swiftは全くの未経験でした。

xcodeの画面は全て英語ですが、英語自体は大好きなので抵抗なく操作できました。(わからなかったらググればOKですし)

幸い、今はライターの仕事が落ち着いているので思い切り時間が取れるのも大きかったです。

kindle Unlimitedで読み放題で復活したMacFanでswiftに初挑戦!

月額980円で読み放題になるAmazon kindle unlimited。多くのIT参考書が無料なので、サービスインしてからずっと加入しているサービスの一つです。(unlimitedについて知りたい方はこちらのエントリーをどうぞ。

iPhoneアプリを制作するにあたって、参考にしたのがMacFan2016年9月号。

Mac Fan 2016年9月号 [雑誌]

この号についている付録が「Macでswiftプログラミング」というもの。初心者でも抵抗感なくXcodeを使えるように丁寧に解説してあります。最初のページでは操作に慣れるために簡単なプログラミングの文法を解説していたり、swift以外にはどんな言語あるかを述べているのもわかりやすくてGOODでした。

この冊子の3章に「三択問題タイムアタックアプリ」を作成してみようというものがあります。図解を交えながら手順が書かれてあるので未経験の自分でもなんとかついていけました。

三択問題スクリーンショット

三択問題スクリーンショット

四苦八苦したデバッグ作業

冊子が見ながら順調にアプリを開発していき、「あれ?思った以上に俺センスあるんじゃね?!」と調子に乗りながらアプリ制作をしていたところ、コンパイル画面でエラーを連発。

swiftコンパイル画面

swiftコンパイル画面

コンパイラとは、人間がコンピューターに対して、「こういう風に動作して欲しい」ということを、コンピューターが理解しやすいように翻訳することです。イメージとしては、日本語を英語にして外国人に伝えるということですかね。

コンピューターは白黒はっきりした性格で、文法のスペルが一文字違うだけで命令を受け付けてくれません。また、仕様が変わると今まで使えていた文法を受け付けなくなることもあるので非常に厄介です。

反面、同じことの繰り返しは飽きることなく黙々とこなしてくれるので、一度記述したコードはコピペが可能です。これによって時間を短縮することができます。

さて、swiftは2016年の12月にバージョンアップしてXcode8になりました。アップデートされたことにより、今まで受け付けてきた文法の記述が微妙に異なるのでここでエラーが多発。

エラー表示を何回もググってもエラーを解消するのにMacとにらめっこ。それでもなんとかエラーを解消して、完成した時には初めてから7時間経過していました。途中何度も投げ出しそうになりましたが、エラーが解消されて問題なくアプリが動作した時は感動を覚えました。

シュミレーターで動作チェック。

              シュミレーターで動作チェック。

簡単なアプリを一つ動作させるのに一日かかってしまいましたが、Xcodeを使ったことがなくてもここまでできるんだなと実感できたのは何よりも大きな収穫でした。

コンパイルエラーを解消するための対処法

ここからはxcodeでアプリ制作する際に必ずぶつかるコンパイルエラーを解消するための方法を紹介します。(とは言っても今回作成したアプリで使用した文法の範囲ですけどね。自分へのインプットも含めて、メモ的な感じで書いていこうかと。)

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2017-01-02-23-06-43

一つ目は、アプリで制限時間を表示させる関数がタイマー関数です。(プログラミング言語における関数は別エントリーで後日執筆するつもりです)

付録の冊子には、タイマー関数として”NSTimer?”と記述されていたのですが、正しく記述してもエラーが出てしまい苦戦。

実際のエラー画面

                  実際のエラー画面

Xcodeにはサジェスト機能あり、それに沿って”Time()”に修正したところエラーが解消されました。

赤いエラーマークが消えています

                赤いエラーマークが消えています

2つ目の関数は、ユーザーが回答をタップした時に正解かどうかをチェックする、「解答チェック関数」です。(これは開発者が変数として宣言したユーザー定義によるものです)

解答チェック関数

                   解答チェック関数

この関数が最後までデバッグに手こずった箇所で、一番の山場。(いくらググってもデバッグ出来ず、気づけばここだけで2時間近くかかっていました)

86行目で”UIAlertController”をクラスとして宣言すると、解答をした際に正解か不正解かを表示できるようになります。93行目にも同じく”UIAlertController”が出てきますが、こちらはOKをタップすることで次の問題へ移動するためのクラスです。

この93行目の”UIAlertController”に対して98行目にある”present(alert, animated:true, completion: nil)
”は冊子の手順だと”presentViewController”となっています。

presentViewcontrpller関数

               presentViewcontrpller関数

冊子の通りに記述すると、上記のようにエラーが出てしまうので、”presentviewcontroller”を”present”に短縮するとデバッグ出来ました。

present関数

                 present関数

知識に乏しく、なぜ”present”にするとデバッグできるのか謎ですが経験を積んで理由がわかるようになったら追記したいと思います。

手順に添いながらも自力でアプリが作れたのは大きな経験

新年早々、やりたかったアプリ制作の第一歩を踏み出すことが出来て本当によかったです。

しばらくは、今日作ったこのアプリを色々いじって基礎を固めていこうかなと思っています。

それでは、最後までお付き合いいただきありがとうございました。

おすすめ記事

  • Pocket
  • LINEで送る
  • このエントリーをはてなブックマークに追加

Menu

HOME

TOP