【iOS】プログラミング素人の俺が、Swift + Firebaseを使って、インスタクローンを作る！【新規登録・ログイン編】

# **目次**


- Firebaseを使用して、インスタクローンを作る
- 感想
- 次回

# **Firebaseを使用して、インスタクローンを作る。**
元々、何かiOSアプリを作りたいと思い、インスタクローン制作を決意した俺。
最初はRealmしようかと思っていたが、後々**Firebase**となる物を発見。
今回は、それを使って制作することにした。

### **① Firebase登録**
これは、以下のサイトを参考にしました。
ありがとうございますm(_ _)m
[Swiftで始めるFirebase入門](https://qiita.com/The_Shimon/items/dc3490be59acea7fbe0c)

### **② 新規登録・ログイン画面を作る**
次に、新規登録・ログイン画面を作る。
今回はシステムの制作が最優先なので、UIはガン無視した。

```Swift:ViewController.swift
import UIKit
import Firebase

//ディスプレイサイズ取得
let w = UIScreen.main.bounds.size.width
let h = UIScreen.main.bounds.size.height
class ViewController: UIViewController {
    
    var DBRef:DatabaseReference!
    
    //メールアドレス入力欄
    let user_id = UITextField(frame: CGRect(x: (w - 160) / 2, y: 50, width: 160, height: 30))
    //パスワード入力欄
    let user_pass = UITextField(frame: CGRect(x: (w - 160) / 2, y: 100, width: 160, height: 30))

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        //メールアドレス入力欄設定
        user_id.text = "メールアドレスを入力"
        user_id.clearsOnBeginEditing = true
        user_id.layer.cornerRadius = 5.0
        user_id.layer.borderColor = UIColor.black.cgColor
        user_id.layer.borderWidth = 1.0
        view.addSubview(user_id)
        
        //パスワード入力欄設定
        user_pass.text = "パスワードを入力"
        user_pass.isSecureTextEntry = true
        user_pass.clearsOnBeginEditing = true
        user_pass.layer.cornerRadius = 5.0
        user_pass.layer.borderWidth = 1.0
        user_pass.layer.borderColor = UIColor.black.cgColor
        view.addSubview(user_pass)
        
        //新規登録ボタン
        let b1 = UIButton(frame: CGRect(x: (w - 80) / 2, y: 150, width: 80, height: 30))
        b1.setTitle("追加", for: UIControlState())
        b1.backgroundColor = .red
        b1.addTarget(self, action: #selector(ViewController.add(_:)), for: .touchUpInside)
        view.addSubview(b1)
        
        //ログインボタン
        let b2 = UIButton(frame: CGRect(x: (w - 80) / 2, y: 200, width: 80, height: 30))
        b2.setTitle("ログイン", for: UIControlState())
        b2.backgroundColor = .blue
        b2.addTarget(self, action: #selector(ViewController.SignIn(_:)), for: .touchUpInside)
        view.addSubview(b2)
        
        //DBインスタンス変数の生成
        DBRef = Database.database().reference()
    }
    
    //新規登録
    @objc func add(_ :UIButton) {
        Auth.auth().createUser(withEmail: user_id.text!, password: user_pass.text!, completion: { (user:User?, error:Error?) in
            if let error = error {
                print("Creating the user failed! \(error)")
                return
            }
            
            if let user = user {
                print("user : \(user.email) has been created successfully.")
            }
        })
    }
    
    //ログイン
    @objc func SignIn(_ : UIButton){
        Auth.auth().signIn(withEmail: user_id.text!, password: user_pass.text!) { (user, error) in
            if let error = error {
                print("login failed! \(error)")
                return
            }
            
            if let user = user {
                let storyboard: UIStoryboard = self.storyboard!
                let nextView = storyboard.instantiateViewController(withIdentifier: "Image")
                self.present(nextView, animated: true, completion: nil)
                print("user : \(user.email) has been signed in successfully.")
            }
        }
    }


}

```



### **③完成品**
<img width="436" alt="スクリーンショット 2018-03-05 1.34.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/154610/28551c65-e24c-c18c-01c3-fbc5dcab75a2.png">

# **感想**

簡単にユーザ管理ができるのは、便利ですね！
登録・ログイン処理もあっという間！
これは、管理しやすいですね。

# **次回**

[【iOS】プログラミング素人の俺が、Swift + Firebaseを使って、インスタクローンを作る！【写真投稿編】](https://qiita.com/umagoro/items/3e86c0aa9306775d5731)