20180626 初回起動時のみチュートリアルを出す方法

今起業と並行してiPhoneアプリを開発している。 一緒にやっているメンバーがかなり能力の高いエンジニアなので、いろいろと吸収できる。

ここでは、彼から学んでいることを吸収したり、いろいろと調べてみたけどあまりいい記事がないものを中心に記録を残しておこうと思う。

記念すべき第1回は、ちょうど昨夜話のあがった「初回起動時だけチュートリアルを出す」機能について。

ぼくのやり方は、AppDelegate.swiftの

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        return true
    }

の部分に以下のように追記した。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

  /* 初めて起動したときだけの処理 */
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let viewController:UIViewController
        
        //launchedBeforeというkeyを持っているか否かで真偽値を設定
        let launchedBefore = UserDefaults.standard.bool(forKey: "launchedBefore")
        
        if launchedBefore == true { //初回起動時ではない場合
            viewController = storyboard.instantiateViewController(withIdentifier: "DefaultFirstView") as! ViewController
            window?.rootViewController = viewController
        } else { //初回起動時の場合の処理
            viewController = storyboard.instantiateViewController(withIdentifier: "TutorialOnlyForThefirstTime") as! TutorialViewController
            window?.rootViewController = viewController
            
            //次からlaunchedbefore == true
            UserDefaults.standard.set(true, forKey: "launchedBefore")
        }

        return true
    }

コードの流れとしては、launchedBeforeというフラグを持っていればViewControllerへ、launchedBeforeを持っていなければTutorialViewControllerへ、という内容である。

ただ、ここで一つ問題が生じてしまった。 全体でNavigationControllerを使っているのだが、初回起動時とそれ以外でrootのViewControllerが変更になるからか、NavigationBarが消えてしまうという事態が生じてしまった・・・ (これは2018年6月26日現在も未解決・・・誰か分かる人いたら教えてください・・・)

そこで、CTO(ぼくの中での呼び名。うちの会社にまだCTOはいない・・)はこのように対応してくれた。

// チュートリアル
    var isShowTutorial = true
    
    //起動時の処理
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if UserDefaults.standard.object(forKey: "isShowTutorial") != nil {
            isShowTutorial = UserDefaults.standard.object(forKey: "isShowTutorial") as! Bool
        }
        
        // チュートリアルを出す
        if isShowTutorial {
            performSegue(withIdentifier: "goTutorial", sender: nil)
            isShowTutorial = false
            UserDefaults.standard.set(isShowTutorial, forKey: "isShowTutorial")
        }

present modallyを使用して画面を遷移。 Userdefaultsの使い方がいまいちわかってないかも・・・ とりあえず反芻するためにコード部分だけ残しておこう。

頑張らねば・・・

官僚を辞めて、起業家になった話 プロローグ

 こんにちは。このブログの管理人のやーるーです。

このブログは、東京大学法学部卒業後、2015年に某官庁に総合職(旧Ⅰ種)で入省したものの、2年半で退官、起業家として奮闘する話です。

このブログのスタートは2018年6月20日、ワールドカップロシア大会で日本がコロンビアに2-1で勝った次の日にスタートしています。

公務員を辞めてもう少しで1年、まだまだ忙しいし会社として収益が安定しないものの、振り返りから得られることも出てくるのではないか、と思いブログを開設することにしました。

このブログによって、自分の考えが整理されるとともに、国家公務員、地方公務員のセカンドキャリアとして、「起業」という選択肢も生まれるといいなあと思っています。まあ、このブログが日の目を浴びることがあればですが笑

 

僕らは、大学時代の友人3人でスタートしたベンチャー起業です。

3人のやめるタイミングが微妙に異なったこと、メンバーの1人(社長w)が世界一周に行くなどで、本格的に会社をスタートしたのは2018年になってからでした。

この半年で、ビジネスモデルを一度変え、メンバーが一人増えました。

スタートしたのは横浜市にある菊名というところでしたが、今は戸塚。少し都心から離れました笑

メンバー4人で住宅兼オフィスでなんとかやっています。

 

このブログは当分回顧録のようになるんだろうなあと思います。

回顧録が終われば、リアルタイムに起こったことをブログに書いていこうかなと。

あ、ぼくはエンジニアだからエンジニア関連の記事もアップするかもしれません。

 

明日から沖縄合宿。

早く寝よう・・・・