Flutter 環境構築 for Mac(初心者向け)

 最近、Flutter初心者の知人環境構築を教えていました。しかし、「中々記事が見つからず、困った！」、「英語読めるかぁ！笑」というFlutter初心者の知人の声を元に作成しました🙌
という前置きは置いといて、早速始めていきましょう💪
※少し時間がかかるので、ご了承ください🙏
（XCodeがインストールされていれば気にしなくても問題ありません！）

# 環境構築の手順
以下の手順で進めていきます🔥
1. Flutterのダウンロード
1. Mac上での操作(FlutterのPath)
1. Flutter開発環境のセットアップ
1. 実際にプロジェクトを作成してみる

# 1. Flutterのインストール
1. まず、[Flutter公式サイト](https://docs.flutter.dev/get-started/install "Flutter公式サイト")からFlutterをインストールします。
    1.   今回はMacの環境構築なので、macOSをクリックしましょう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/4030a227-2f82-dcb6-0a59-42c66de1cba0.png)
1. 次に、クリック先の画面の「Get the Flutter SDK」のところで自分のMacに合うFlutterのZipファイルをダウンロードしましょう！**M1MacはApple Silicon**、**M1以前のMacの方はIntelを選ばないと動かない**ので注意しましょう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/9a224104-f7ae-0662-c192-8696e9ec23dd.png)

# 2. Mac上での操作
1. ダウンロードしたZipファイルをDownloadsフォルダ内にて解凍しましょう！（クリックするだけでOKです！）
1. ターミナルを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/d1bc5deb-45c8-8623-4421-6b797be24b62.png)
    1. Zshでの使用を考えているので、もしBashなど他のターミナルの場合は、以下のコマンドを入力しましょう！(他ターミナルかどうかは、ターミナルの上のところで確認できます！)
```zsh
% zsh # zshに切り替えます
```
## ※ここからはターミナルの操作になります。
行うことは以下の通りです。
1. DownloadsフォルダにあるFlutterフォルダをUsers/user_name/developmentに移動する
1. Pathを通す

### 1. DownloadsフォルダにあるFlutterフォルダをUsers/user_name/developmentに移動する
#### 1-1.developmentフォルダを新たに作成
```zsh
% cd # ホームディレクトリ（Users/user_name）に移動
% mkdir development # mkdir:フォルダ（ディレクトリ）作成コマンド, Users/user_nameの中で作成
```
#### 1-2. DownloadsフォルダにあるFlutterフォルダをUsers/user_nameにFlutterを移動
```zsh
% cd ~/Downloads # Downloadsフォルダ（ディレクトリ）に移動
% mv flutter /Users/user_name/development # flutter(解凍したフォルダ名),user_name(Macの名前)
```
## 2. Pathを通す
Pathとは、ターミナルやMac上で動作するように繋いであげる導線のようなもので、今回はFlutterコマンドが動作するように設定します。
手順は以下の通りです。
1. Pathを設定するファイルを編集する
1. ターミナルを再起動する

### 1. Pathを設定するファイルを編集する
```zsh
% vim ~/.zshrc
```
ファイル編集中の手順
1. iを押して、insertモード（書き込みモード）にする
1. コピー＆ペースト
1. escキー（エスケープキー）を押して、insertモードを終了
1. :wqと入力して保存
```zsh:zshrc
export PATH="$PATH:/Users/user_name/development/flutter/bin" # user_nameのみ書き換えてコピー
```

### 2. ターミナルの再起動
物理的にターミナルを再起動しても良いですが、ここは賢くコマンドを使いましょう！
```zsh
% source ~/.zshrc # 再起動に相当するコマンド、更新
% which flutter # flutterのPath確認
# 実行結果がこのようになっていれば大丈夫です！
# => /Users/yuuki/development/flutter/bin/flutter
```

# 3. Flutter開発環境のセットアップ
開発環境セットアップの手順は以下の通りです。
1. **flutter doctor**コマンドに従ってセットアップを行う
1. コードエディタのセットアップ
    1.   今回はVScodeにてセットアップします
1. 実際にプロジェクトを作成してみる

## 1.  *flutter doctor*コマンドに従ってセットアップを行う
まず、以下のコマンドをターミナルにコピペしましょう。
```zsh
% flutter doctor # 開発環境に必要なものを教えてくれるコマンド
```
すると、以下のような表示が出てきます。
（セットアップが既に終了していると、チェックマークがつきます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/689705c1-a84e-dd07-dcda-5ecf590bd672.png)
まだ皆さんはセットアップが終わってないので、！マークがついていることでしょう😓
↓↓↓こんな感じ↓↓↓
```zsh
[!] Android toolchain - develop for Android devices (Android SDK version
   32.1.0-rc1)
   ✗ cmdline-tools component is missing
     Run `path/to/sdkmanager --install "cmdline-tools;latest"`
     See https://developer.android.com/studio/command-line for more details.
   ✗ Android license status unknown.
     Run `flutter doctor --android-licenses` to accept the SDK licenses.
     See https://flutter.dev/docs/get-started/install/macos#android-setup for
     more details.
[✗] Xcode - develop for iOS and macOS
   ✗ Xcode installation is incomplete; a full installation is necessary for iOS
     development.
     Download at: https://developer.apple.com/xcode/download/
     Or install Xcode via the App Store.
     Once installed, run:
       sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
       sudo xcodebuild -runFirstLaunch
   ✗ CocoaPods not installed.
       CocoaPods is used to retrieve the iOS and macOS platform side's plugin
       code that responds to your plugin usage on the Dart side.
       Without CocoaPods, plugins will not work on iOS or macOS.
       For more info, see https://flutter.dev/platform-plugins
     To install see
     https://guides.cocoapods.org/using/getting-started.html#installation for
     instructions.
```

### 1-1. Android studioのセットアップ
1. [Android Studio公式サイト](https://developer.android.com/studio?gclid=CjwKCAjw2f-VBhAsEiwAO4lNeISeQJcsL8TwGWJZ3QuyQh-5IHv0iH828tu5rIYpTYM0PN-sezvpTxoC-_8QAvD_BwE&gclsrc=aw.ds "Download Android Studio")からAndroidStudioをダウンロードします。
1. 「Download Android Studio」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/0277ed9e-8f80-5ad3-b411-6db73d9c2ba6.png)
3. 利用規約を下まで飛ばして、チェックボックスにチェックを入れます。
    1. ここで、**M1Macの方はMac with Apple chip**、**M1以前のMacの方はMac with Intel chip**を選択し、ダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/0b23df59-6103-b230-79ee-6bcd9bc4ac79.png)
4. ダウンロード後、dmg(ディスクイメージ)を開いて、AndroidStudio.appをApplicationフォルダに入れましょう！
4. 次に、Android Studioを起動し、初期設定を行います。
    1. 基本的に流れに沿って、全項目でAccept（許可）を選んでいけばOKです！
4.   この画面の**MoreActions**から「Virtual Device Manager」を選択
    1. ここでAndroidデバイスを作成します。
    2. Create Deviceを選んで、適当なデバイスを選択後、ダウンロードすれば作成できます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/7d4043ba-c987-ac92-1181-1f30d265270d.png)
4. 左のサイドバーにある「Appearance&Behavior」
    1. 「System Settings」→「Android SDK」
    4. 　画面中央の「SDK Tools」を選択
    4. 「Android SDK Command-line Tools(latest)」にチェック
    4. 「Apply」を選択後、ダウンロード開始
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/762bf5a6-9b7d-471b-35f5-9823e145de62.png)
4. インストールが完了後Android Studioを閉じる
4. ターミナル上で「flutter doctor」を実行し、下記のように表示されていれば完了です！
```zsh
[✓] Android toolchain - develop for Android devices (Android SDK version
    32.1.0-rc1)
```
### 1-2. Xcodeのセットアップ
Macユーザの方でインストール済みの方はSkipしてください！
1. AppStoreで「Xcode」をインストール
1. flutter doctorコマンドを実行
#### CocoaPodsのインストール
たまに以下のような警告が出ることがあります！その解決策もあります！
```zsh
CocoaPods not installed.
       CocoaPods is used to retrieve the iOS and macOS platform side's plugin
       code that responds to your plugin usage on the Dart side.
       Without CocoaPods, plugins will not work on iOS or macOS.
       For more info, see https://flutter.dev/platform-plugins
     To install see
     https://guides.cocoapods.org/using/getting-started.html#installation for
     instructions.
```
#### 解決策
これで解決です！
```zsh
% brew install cocoapods
```

### 1-3. Chromeのセットアップ
Chromeをインストール済みの方はSkipしてください！
もしインストールしていない場合は、Safariで検索して、インストールしましょう！

### 1-4. コードエディタ(VSCode)のセットアップ
1. [VSCode公式サイト](https://azure.microsoft.com/ja-jp/products/visual-studio-code/ "VSCode公式サイト")にてインストール
1. 拡張機能をインストール(左のサイドバーの四角形です！)
    1.  Flutter
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/8387c3d4-cea9-6018-0346-ff365b6c3cc1.png)
    1.  Dart
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/e54b900d-476a-c695-9687-de612b7ab9a6.png)
    1.  Android iOS Emulator
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/1bb0d303-0f1d-e9e4-0dbe-ae69f24433b7.png)

#### Android iOS Emulatorの使い方
1. 右下にあるスマホマークor macOS or chromeの表示をクリック
1. AndroidかiOSのエミュレータを選択すると、起動✨
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/4030c9ad-cb66-a0c0-6171-22da80542de2.png)

ここまで行って、flutter doctorコマンドで確認すると、、、
```zsh
% flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.0.4, on macOS 12.4 21F79 darwin-arm, locale
    en-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version
    32.1.0-rc1)
[✓] Xcode - develop for iOS and macOS (Xcode 13.4.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.1)
[✓] IntelliJ IDEA Community Edition (version 2022.1.3)
[✓] VS Code (version 1.68.1)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

• No issues found! 
```
#### セットアップは終わりです！🎉

## 4. 実際にプロジェクトを作成してみる

```zsh
% flutter create flutter_test_app # flutter create アプリ名で作成
    Creating project flutter_test_app...
    Running "flutter pub get" in flutter_test_app...                 1,723ms
    Wrote 127 files.
    
    All done!
    In order to run your application, type:
    
      $ cd flutter_test_app
      $ flutter run
    
    Your application code is in flutter_test_app/lib/main.dart.
```
次に、VSCodeでflutter_test_appを実行してみましょう！
1. AndroidStudioで事前に作成したAndroidエミュレータを拡張機能「Android iOS Emulator」で起動
2. flutter_test_app/lib/main.dart内に表示されている**debug**を押してみましょう！
    1.   flutter開発では**debugモードでの開発が基本**
    2.   **Hot Reload**（command+S）というコードの変化を秒で反映する最強の便利機能を使える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/8f1c2cbb-aa74-cb3a-7da2-6f3d7d256de0.png)

### Androidエミュレータの実行画面(iOSエミュレータは見た目がiPhoneに変わるだけです)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/2e48a027-70c6-0782-0c05-562688e50471.png)


### MacOSの実行画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/3cc9e4e3-d8ef-8eb0-ad08-d3669b4b1e20.png)

### chromeでの実行画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/1eb4c77b-cf29-61bb-d634-b7d585996c8a.png)

これで環境構築は完了です！！🎉🎉🎉🥳🥳🥳
☕️☕️☕️☕️☕️☕️お疲れ様でした☕️☕️☕️☕️☕️☕️

### 参考文献

https://qiita.com/yoshinyan/items/2c9a59e5a3bd80b9bdbd

https://yuyuublog.com/fluttertutorial/#rtoc-7