📱
なぜFlutterにはCocoaPodsをインストールする必要があるのか
はじめに
自分自身はWebエンジニア出身でFlutterでの開発経験はほぼ皆無なのですが、個人的に最近Flutterの勉強を始めています。
iOS用の環境構築の際にCocoaPodsが必須ツールとして公式に書かれててなぜなのか気になったのでメモがてら書いてみました。
CocoaPodsとは
CocoaPodsはiOSアプリ開発で利用するライブラリの管理ツールです。CocoaPods自体はRubyで構築されており、gemでインストールする必要があります(Homebrewを使う方法もあり)
Rubyのバージョン次第ではAppleシリコン搭載のMacと相性が悪いらしく、環境構築の手間がかかるため、最近だとSwift Package Managerを使うケースもあるようです。
CocoaPodsをインストールしてないとどうなるか
もしFlutterでCocoaPodsをインストールしていない状態で、flutter doctorを実行すると以下のようなエラーが表示されます。
✗ 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.
つまりはDartからiOSやmacOS側のプラグインを使うにはCocoaPodsが必要になるということですね。
Flutterにおけるパッケージ管理
Dartのパッケージを使う場合
FlutterはDartを使っているので、基本はDartで書かれたパッケージを使用します。
パッケージ元のサイトはこちらですね。
flutter pub add [パッケージ名]
のコマンドを実行すると pubspec.yamlにパッケージの記載が追加されます。
iOSのパッケージを使う場合
iOSネイティブの機能が必要になる場合、Swiftや Objective-Cで書かれたパッケージを使いたくなるかもしれません。その場合はCocoaPodsを使う必要が出てきます。
まとめ
- iOSネイティブの機能が必要になる場合、CocoaPods経由でパッケージをインストールする
- 通常のパッケージであれば、pubspec.yamlを使う
- CocoaPodsをインストールしておかないと、flutter doctorでエラーになってしまう
- 最近はとSwift Package Managerを使うケースもある
Discussion
👏
SwiftUIならSPMですけどね。今後はFlutterでも使えるようになるとか?
CocoaPodsには何度も苦しめられましたね。
本にこの方法昔は載ってなかったですね。。。
Macデフォルトのrubyだとバージョンが古すぎたりして面倒が多いですよね...
SPMはXCodeから使えたり、公式サポートされてて使いやすそうですね〜!