【Flutter】flutter doctor実行時に発生したエラーを解消した

# はじめに

これまで、Flutterを触る機会が全くありませんでしたが、急遽勉強する必要性が生じたため、以下の書籍を用いてFlutterの学習をしています。

その中で、環境構築のところでエラーが発生したので、解決方法をメモしました。

ちなみに、KindleUnlimitedの対象なので、会員の方は無料で読むことができます。

一応、Kindleストアのリンクを貼っておきます。

まだ途中までしか読んでいませんが、Amazonレビューの評価も比較的高く、読みやすいです。

[スマホで動くアプリを作ろう！ゼロから始めるFlutter実践入門編-①-シンプルなアプリを作ってみよう](https://www.amazon.co.jp/スマホで動くアプリを作ろう！ゼロから始めるFlutter実践入門編-①-シンプルなアプリを作ってみよう-渋谷-エミリ-ebook/dp/B09VKXCFCN/ref=sr_1_6?__mk_ja_JP=カタカナ&crid=3QPPU5KBPDH03&keywords=flutter&qid=1702784560&s=digital-text&sprefix=flutter,digital-text,176&sr=1-6)
![IMG_1464.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/493351a2-668d-b374-e46d-997697c381cc.png)

記事の中で、わかりにくい点や認識の誤っている点などあれば、お気軽にご指摘いただけると幸いです。

罵倒して頂いても構いません。

ダメ出し歓迎です。

# 課題

Flutterの環境構築を行った後に、設定に問題がないかを確認するため、`flutter doctor` を実行したところ、Xcodeの項目でエラーが発生した。

### エラー画面

![Untitled.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/ccc0c4a0-e567-b03f-f974-5c7cd54a4935.jpeg)

### エラーコード

```
[!] Xcode - develop for iOS and macOS (Xcode 15.1)
    ✗ Unable to get list of installed Simulator runtimes.
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin
        code that responds to your plugin us![Untitled 1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/99c37416-fba0-8135-4b54-a5d8e86307e7.jpeg)
age 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.
```

## 動作環境

- macOS　14.2（Sonoma）
- Xcode　  15.1

## 前提条件

- Homebrew（パッケージ管理ツール）がインストールされている
- Xcodeがインストールされている
- Vimの使用経験がある

# 対策

まずは、以下のエラーから対応します。

```bash
    ✗ Unable to get list of installed Simulator runtimes.
```

上記のエラーは、XcodeのiOSシミュレータがインストールされていないか、最新でないことが原因のようなので、Xcodeのアプリを起動し、Settingsを確認します

![Untitled 1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/8f596496-94e8-92e5-2db5-ab9b2e71ad69.jpeg)

Settingsを開いたら、Platfomsタブに移動し、シミュレータのインストール状況を確認します。

私の場合、下図の通りiOSのシミュレータがインストールできておらず、ステータスがGetになっているため、ボタンをクリックして、iOSのシミュレータをインストールします。

ファイルサイズが7GB弱あるので、5〜10分程度かかるかと思います。

![Untitled 2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/97bce0f8-3647-7b88-a5ad-6b0c1bcd9093.jpeg)

この状態で再度`flutter doctor`を実行すると、一つ目のエラーが解消されていることが確認できました。

```bash
[!] Xcode - develop for iOS and macOS (Xcode 15.1)
    ✗ 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.
```

それでは、残っているエラーの方を解消したいと思います。

書籍の中で、CocoaPodsという依存関係管理ツールをインストールするよう指示があったので、インストールコマンドを実行していたのですが、正しくインストールできていなかったようです。

再度、イントールコマンドを実行して、エラーの内容を確認したいと思います。

下記、インストールコマンドになります。

コマンドを実行するとパスワードの入力を求められますが、これはパソコンのロックを解除するパスワードと同じものを入力する形になります。

```bash
sudo gem install cocoapods
```

上記のコマンドを実行した結果、以下のようなエラー文が出力されていました。

```bash
ERROR:  Error installing cocoapods:
	The last version of drb (>= 0) to support your Ruby & RubyGems was 2.0.5. Try installing it with `gem install drb -v 2.0.5` and then running the current command again
	drb requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.210.
MacBook-Pro-4:~ hoge$ sudo gem install cocoapods
Password:
ERROR:  Error installing cocoapods:
	The last version of drb (>= 0) to support your Ruby & RubyGems was 2.0.5. Try installing it with `gem install drb -v 2.0.5` and then running the current command again
	drb requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.210.
```

エラーメッセージの内容からすると、PCにインストールされているRubyのバージョンが2.6と低く、CocoaPodsのインストールに必要なdrbライブラリとの互換性がないようです。

ライブラリをインストールするには、Rubyのバージョンが2.7以上である必要があるため、以下のコマンドを実行して、Rubyのバージョンアップを行います。

```bash
brew upgrade ruby
```

そうしたところ、以下のエラーが発生しました。

```bash
Error: ruby not installed
```

エラーメッセージの内容からすると、バージョン2.6のRubyがインストールされているはずですが、Rubyがインストールされていないというエラーが出ました。

どうやらこれは、Macに元々インストールされているRubyがバージョン2.6なのであって、Homebrew経由でインストールされているRubyは存在していないようです。

それでは、元々インストールされているRubyのバージョンアップを行えばいいかというと、それは好ましくなくないようです。

なぜなら、Macのシステムが、この元々インストールされているRubyを利用しているため、バージョンを上げてしまうことによって、Macのシステムの方に影響が出る可能性があるためです。

そのため、Homebrew経由で新たにRubyをインストールし、それを基にCocoaPodsをインストールする方法を取りたいと思います。

まずは、最新のパッケージを利用できるように、以下のコマンドで、Homebrewをアップデートしておきます。

```bash
brew update
```

Homebrewのアップデートができたら、Rubyをインストールします。

```bash
brew install ruby
```

続いて、システムにデフォルトで入っているRubyよりも、先ほどインストールしたRubyが優先されるようにパスを通したいので、vimで設定ファイルを開きます。

```bash
vim ~/.bash_profile
```

一番下の行に以下の内容を追加します。

```bash
export PATH="/usr/local/opt/ruby/bin:$PATH"
```

![スクリーンショット 2023-12-31 午後6.25.20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/10c1dadd-7eb7-dcf6-fd7c-80096b2ae1e3.jpeg)

上記の設定を反映するために、ターミナルを再起動し、rubyが正しくインストールされているか確認するために、以下のコマンドでrubyのバージョンを確認します。

```bash
ruby -v
```

![Untitled 4.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/db3c72a2-6218-0966-a6d8-38d8664f9f0d.jpeg)

Rubyのバージョンが、3.2.2となっているので、問題なさそうです。

続いて、以下のコマンドを実行し、cocoa podsをインストールしていきます。

```bash
sudo gem install cocoapods
```

インストールが完了したら、cocoa podsの環境変数を設定していきます。
以下のコマンドを実行し、cocoa podsのインストール場所を確認します。

```bash
gem list -d cocoapods
```

赤枠箇所のパスをコピーします。

![Untitled 5.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/299c78ca-2e63-92f3-02dd-5e94c0a8cd5a.jpeg)

vimで環境変数の設定ファイルを開きます。
```bash
vim ~/.bash_profile
```

一番下の行に以下の内容を追加します。
```bash
export PATH="先ほどコピーしたパス/bin:$PATH"
```

![Untitled 6.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/f49ece12-f696-42df-08da-49e088a6ddf5.jpeg)
先ほどコピーしたパスの後ろに/binと入れているのは、Gemの実行ファイルが格納される場所がbinフォルダの中だからです。

環境変数の設定ができたので、以下のコマンドを実行して、cocoa podsのバージョンが正しく表示されるか確認します。

```bash
pod --version
```

![Untitled 7.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/e9472b1e-4066-9be7-9fe6-9f65c145fc35.jpeg)

バージョンが表示されたので、cocoa podsのインストールと環境変数の設定が正しくできていそうです。

# 結果

これで、`flutter doctor`の実行結果でエラーになっていた箇所について、対策できたはずなので、再度`flutter doctor`を実行してみます。

```bash
flutter doctor
```

![Untitled 8.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1602300/0889cdb3-4f7c-0d93-355b-96bc7b8ec14f.jpeg)

無事、全てのチェック項目がOKになりました。

# 参考資料

[【Flutter】Unable to get list of installed Simulator runtimesの対処法](https://coderenkin.com/unable-to-get-list-of-installed-simulator-runtimes/)

[Unable to get list of installed Simulator runtimes | Flutter doctor](https://www.youtube.com/watch?v=cWJVUE91WMM)