[iOSアプリ開発]Swiftで4択クイズアプリを作成してみた。




Sponsored Link

今回のテーマはiOSアプリ開発

比較的新しいSwiftという言語を用いて開発します。

行動が遅い僕が、5日くらい必死に粘って作ったので、ぜひご覧ください。

ちなみに、参考にさせていただいた書籍は、以下の通りです。

  • 本気ではじめるiPhoneアプリ作り Xcode 9.x+Swift 4.x対応 (「ヤフー黒帯」シリーズ)
  • 本気ではじめるiPhoneアプリ作り Xcode 9.x+Swift 4.x対応 (「ヤフー黒帯」シリーズ)
    西 磨翁
    SBクリエイティブ
    売り上げランキング: 57,282

    僕はちょうど「4択アプリ」のサンプルが載っていたこの本を主に参考にしました。

    ただ、痒いところに手が届くようなものではなく、実際これ通りに作っても動きませんでした。

    まぁでも技術書はそういうアクシデントが多いです。どうしてもバージョンや開発環境に影響されることがあります。

    なので、追加で以下の二つを参照しました。

  • 詳解 Swift 第4版
  • 詳解 Swift 第4版
    詳解 Swift 第4版

    posted with amazlet at 18.10.01
    荻原 剛志
    SBクリエイティブ
    売り上げランキング: 62,845

    The Swiftの辞書 というような本でした。

    ただ、それなりに難しくて、細かい本です。汗

    具体的に自分のエラーが何に起因するものなのかがわかったら、とてもためになる本だと思います。

    上級者向けな印象でした。挫折不可避。笑

  • 絶対に挫折しないiPhoneアプリ開発「超」入門 増補第6版【Swift 4 & iOS 11】完全対応 (Informatics&IDEA)
  • これはとてもいい本でした。

    これからXCodeを使い始める人が読むべき本です。超初心者向け。タイトルにも「超」と書いてありますし。

    リファレンスの読み方、XCodeの使い方も丁寧に書いてあります。

    自分でアプリが作れちゃうような人にはいらない本かもしれません。

    動機

    今回は開発者向けのtipsなので、動機はさらっと。

    コーヒーのスペシャリスト、ブラックエプロンの試験勉強に一生懸命な仲間に感化されて作ろうと思いました。

    ポートフォリオではその1行で終わりそうなのでもう一言。

    僕自身、コーヒーが好きです。自分のお店が大好きです。

    そんなお店が、いつになっても弊社を代表するお店であるために、みんなにもブラックエプロンをつけて、コーヒーネスを体とオーラで体現してほしい。

    その気持ちは、開発中いつもありました。

    開発手順

    1. 本気ではじめるiPhoneアプリ作り」を写経する。
    2. ランダム機能を実装する
    3. CSVを変える
    4. アイコンを設定する
    5. 実行画面

    本当は「本気ではじめるiPhoneアプリ作り」を写経して、csvファイルを僕が出したい問題に変え、他の機能を付加するだけでよかったのですが、この本通りにやってもうまくいかなかったので修正を加えました。

    実際に陥ったエラーやバグについては下で詳しく説明します。

    陥ったエラー

    参考書に書いてあったコードを少しいじっただけなのに、とても多くのエラーに遭遇しました。笑

    これ以上無理でしょ、みたいなところまでデバッグしたのでご紹介します。

    unexpectedly found nil while unwrapping an Optional value

    LRG DSC09726

    これは、写経後におきたエラー。

    「オプショナル型の変数をアンラップした時にnilが出たよ」というもの。簡単にいうと、値が入ってるべき変数に何も入っていないから処理のしようがないよ、ということです。

    これはViewControllerの画面遷移の際に、渡されていないのが原因なのですが、prepareForSegue関数の形を変えてみてもうまくいかず、stack over flowを漁りました。

    その時にふと、「バグ」の文字が見えて、「あっ」と思って再起動したら、解消

    バグでした。

    [swift 5.0対応] 20個以上のiOS12アプリ開発完全マスター人気講座

    皆さんももし、このエラーで悩んでいる方がいらっしゃれば再起動してみてください。

    ちなみにエラーが出たのはQuestionViewController.swiftの36行目、ラベルの挿入部分です。

    array index out of bounds exception

    これも写経後に起きたもの。

    QuestionDataManager.swift内のloadQuestion関数内を色々いじってみると、配列5番目のクエリのみにエラーが出たり、はたまた全体に出たり。

    つまり関数自体は呼ばれているので、今度はcsvファイルの書式がいけないのか?と色々いじってみることに。

    結局、separateする文字をただのカンマからカンマスペース”,”に変えることで直りました。

    モダンなswiftでも、融通きかないところが多いなぁ、、、汗

    expected declaration

    これは完全に僕の落ち度。クラスの中にprint関数書いてて、そりゃ無理だよなって。

    関数内に書き直したら当然なくなりました。

    気づいたこと

    LRG DSC09961

    波乱万丈な僕のアプリ開発でしたが、エラー以外にも「へぇ」と思ったことがあったので書きます。

    ランダムについて

    2018年6月4日に行われたWWDC2018でのWhat’s New in Swiftにおいて、乱数の生成方法が新しくなったことが紹介されたようです。

    気づかせてくれたclass methodの加藤潤さんの記事はこちら

    Starbucksとも関わっているようで、親近感。ところでITテクノロジー部には新卒採用ないですか。

    以下のように乱数を生成することができます。簡単。

    しかし、今回は20こ個の数値の中からランダムに10個の数値を重複なく選びたかったので、shuffle関数を用いてシャッフルし、前から10個取ってくるという方法を使いました。それがrandomTool関数です。

    インストールにて

    無料会員はApple Storeに登録することができないですし、できたとしても問題の中には社外秘のものもあるかもしれないので、僕のPCから一台一台インストールすることに。

    完成し、コーヒーの勉強を日々頑張っている仲間に配ろうと思ったのですが、自分を含め3人にインストールしたところ、それ以降インストールできなくなってしまいました。

    Apple Developer Programに加入していても、無料会員はインストールできる端末数に上限があるらしいです。

    それにしても3台って、、、

    仕方なく有料会員登録してあるアカウントの方でインストールすることに。

    GitHub

    csvファイル、また参考にした書籍からいただいた画像ファイル以外はGithubに載せています。ぜひ参考にしてください。

    • http://github.com/FujiiYuta/coffeeQuiz

    それでは次は旅行記でお会いしましょう。

    旅行記書きたい気分なので。笑


1件のコメント

  1. […] 前回の投稿で旅行記を書くと言ったのに、嘘をついてごめんなさい。笑 […]

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です