コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

アイフョーンアプリでもつくっていこうと思う 後編

なんか作っていきますよ

前回に引き続きなんかつくっていくなどをしていこうと思います。後編にしたけども完全に網羅しているわけではないので抜けは多かれ少なかれあるかもしれない。もともと自分の興味があるとこだけかいつまんでやっているんで仕方ないね。そんじゃ、やっていきます。

books.apple.com
今回もこのテキストを利用してなんやかんややっていきます。


前回記事
inujini.hatenablog.com



元素クイズアプリつくったよ

とりあえず僕の苦手とするレイアウト関連の練習ができてよかった。

f:id:andron:20191103054456p:plainf:id:andron:20191103054506p:plainf:id:andron:20191103054449p:plain
できました。

クイズといいながらコードがこんななのでランダム性が何一つないです。

    @IBAction func gotoNextElement(_ sender: Any) {
        currentElementIndex += 1
        if currentElementIndex >= elementList.count{
            currentElementIndex = 0
        }
        updateElement()
    }

ランダムにして、スコア機能追加としたらGitHubになげるかも。ただあんまりやる気が起きない。


動物鳴き声アプリつくったよ

f:id:andron:20191103055315p:plainf:id:andron:20191103055324p:plainf:id:andron:20191103055331p:plainf:id:andron:20191103055338p:plain
アイコンを押すと鳴き声をテキストと音声で同時に出してくれます。

個人的に音の出し方気になってたからやってみたけど自分で書くことはなかった……。

import Foundation
import AudioToolbox

class SimpleSound {
    
    private var soundID: SystemSoundID = 0
    
    public init(named name: String) {
        if let soundURL = soundURL(forName: name) {
            let status = AudioServicesCreateSystemSoundID(soundURL as CFURL, &soundID)
            if status != noErr {
                print("Unable to create sound at URL: '\(name)'")
                soundID = 0
            }
        }
    }
    
    public func play() {
        if soundID != 0 {
            AudioServicesPlaySystemSound(soundID)
        }
    }
    
    private func soundURL(forName name: String) -> URL? {
        
        let fileExtensions = ["m4a", "wav", "mp3", "aac", "adts", "aif", "aiff", "aifc", "caf", "mp4"]
        
        for fileExtention in fileExtensions {
            if let soundURL = Bundle.main.url(forResource: name, withExtension: fileExtention) {
                return soundURL
            }
        }
        print("Unable to find sound file with name '\(name)'")
        return nil
    }
    
    deinit {
        if soundID != 0 {
            AudioServicesDisposeSystemSoundID(soundID)
        }
    }
}

AudioToolboxtってのが標準でついてるっぽいですね。
参考
AudioToolbox | Apple Developer Documentation



ジャンケンアプリつくったよ

最終課題がジャンケンかなんかよくわからないミームメーカだったのでジャンケンを作ってみることにした。ミームメーカの方はまじでどういうアプリなのか分からなかった……。

f:id:andron:20191103055950p:plainf:id:andron:20191103060005p:plainf:id:andron:20191103060014p:plain
元のデザインと大分違う感じになってるんですけど、「もう一回ボタン」あっても煩わしいだけだよなと思ってつくってたらこうなった。

GameplayKitっての使えばゲーム性あるやつは比較的楽に実装できるらしい。今回はランダムのやつに利用しただけなんであんまり使いこなせてないけども……。
参考
GameplayKit | Apple Developer Documentation



んで、とりあえず作ったジャンケンアプリの方はGitHubにぶん投げておきます。久しぶりのGitHubにコードを投下。
GitHub - Andou666/JankenApp


色々と酷いところあるけど、以前に作ったジャンケンアプリよりだいぶましになっているんで許してほしい。
以前作ったジャンケンアプリもどき
Xcodeを触ってみたという話 - コミュ障だから明日が僕らをよんだって返事もろくにしなかった



完走した感想

前半がプロジェクトファイルとか丁寧に用意してあったから、後半もあのペースでいけるだろうとか思ってたら後半はコードを一から書くながれだったんで夏休み終わり間際に宿題を終わらせる人みたいな感覚に陥った。一気にもりっとやるものではない。とはいっても、シングルビューのアプリが中心なんで慣れれば早く終わるレベルだとは思いますが……。


んで、テキストの最後の方に次の方針みたいのあるんだけど、僕が今気になっているのはアニメーションとか演出周りのライブラリなんですよね。なんかいいものないかな。

おわり