CocoaPodsの導入時のエラー(解決済み)

※Flutter環境構築の最後にCocoaPods導入でハマったところの忘備録です。

CocoaPodsの導入が上手くいかず、かなり時間をとりました。
参考本通りにやっていて最後につまづくとは思っておらず…
でもネット上には先人の知恵がたくさん記されているのでありがたいです。
時間はかかりましたが何とか導入できました。
エラーが解決して導入成功するまでを時系列順に残しておきます。

CocoaPodsのインストールに失敗する1


本を参考にしながらCocoaPods導入しようとしても失敗。

sudo gem install cocoapods


エラーログ保管するの忘れていたので同じエラーが出ていた方の記事のリンクを貼っておきます😅

こちらの記事に挙げられているエラーとほぼ同じものが最初に出ました。
解決方法も載せられていたので非常に参考になりました。

qiita.com
medium.com


私の環境ではエラーログで表示されていた指定のフォルダにシンボリックリンクを作成することでこのエラーは解決しました。

cd エラーで表示されていたフォルダパス
sudo ln -sf universal-darwin23 universal-darwin22


CocoaPodsのインストールに失敗する2


上記のエラーが解決したので再度ターミナルからCocoaPodsのインストールをしてみたのですが、次は違うエラーが。こちらもログを残すのを忘れていた…
エラー内容は

You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory

だったので「書き込み権限がないよ」的なものでした。(エラーログのここだけコピーしてた)

参考にさせて頂いた記事 qiita.com

rbenvを入れる

rbenvでRubyのバージョン管理をするのが良いそうなので自分も倣って早速rbenvを入れてみることに。
あと参考記事ではruby-buildも一緒にインストールされていて「ruby-buildって何?」となったので調べてみると

「UNIX系のシステム上で異なるバージョンのRubyをコンパイルしインストールするための、 rbenv installコマンドを提供するrbenvのプラグイン」

とあったのでruby-buildも一緒にインストールします。

brew install rbenv ruby-build

が、ここでもエラー。
command not found が返ってきました。
原因はbrewが入っていないからでした。
なのでここからインストールしました。 brew.sh
再度rbenvのインストールコマンドを叩いてrbenvをインストールしました。

あとはvimから.zshrcファイルを開いて

vim ~/.zshrc

以下を打ち込んで編集しました。

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init - zsh)"

パスを有効化して編集は終了です。

source ~/.zshrc

インストールが成功していればバージョン確認コマンドを打ち込むと現在のバージョンが返ってきます。

rbenv -v
rbenv 1.2.0


Rubyを入れる

これでrbenvがインストール出来たので、次はRubyをインストールする為にインストール可能な最新版を表示。

rbenv install -l

一覧の中から現在の最新バージョンのRubyをインストールしました。

rbenv install 3.3.0


やっとCocoaPodsインストール成功


この状態で再度CocoaPodsのインストールコマンドを叩いて…
やっとインストール成功しました!
CocoaPodsのバージョン確認コマンドを叩いてみるとちゃんとバージョン表示されました。

pod --version
1.15.2



 Flutterの環境構築(macOS)

4月からFlutterを使うことになるので、そのキャッチアップを兼ねて勉強の内容を書き留めていこうと思います。
ネットに勉強サイトや知見ブログがたくさんあるのでそちらを見ながらでもいいかなと思ったのですが、今回はこちらの書籍を買ってみました。

ゼロから学ぶFlutterアプリ開発 | 藤川 慶 |本 | 通販 | Amazon

”本書は、プログラミング初心者やエンジニア1〜2年目レベルの方を対象に、アプリ開発やプログラミングを始めるきっかけとなる1冊です。”(解説から抜粋)

産育休期間を除いて約4年ほどこの仕事をしているので全くの初心者というわけではないけど、すぐに見れる分かりやすい本が一冊あった方が始めやすいかな〜などと思って選びました。

環境構築


本書に沿ってやっていきます。

  1. Flutterのインストール
  2. パスを通す
  3. Android Studioのインストール
  4. Xcodeのセットアップ ※iOS開発したい方は先にこちらからやった方がいいかも 5.CocoaPodsのインストール


1.Flutterのインストール
以下から「macOS」を選択して次のプラットフォーム選択ページで「iOS」を選択します。

docs.flutter.dev

iOS用のFlutterセットアップ方法の画面が表示されます。
スクロールすると「Install the Flutter SDK」があるので自分のmacに合ったSDKをダウンロードして解凍します。
ユーザーフォルダの下に「development」フォルダを作り、その中に解凍したFlutterフォルダを移動します。

2. パスを通す

※2019年10月以降に購入しているmacOSならシェルは基本的にzshがデフォルトのようですのでzsh前提でやっていきます。本にはbashの場合のやり方も書かれていました。

.zshrcという設定ファイルにパスを書き込むためにターミナルで以下を打ち込んでvimからファイルを開き、キーボードの「i」を押してinsertモードにします。

vim .zshrc


insertモードになったら以下のパスを入力します

export PATH="$PATH:/Flutterフォルダが格納されているディレクトリのパス/flutter/bin" 

escキーを押してinsertモードを終了し:WQを入力しEnterキーで上書き保存します。


次にパスの有効化するためにターミナルで以下を実行。

 source ~/.zshrc


これでパスを通せました。(パスが通っているかの確認方法は割愛)
パスの通し方は公式サイトのAdd Flutter to your PATHにも書いてるのでそっちの方がやりやすいのかな?
本だと.zshrcで紹介されてたけど公式だと.zshenvに書き込んでるみたいです。
.zshrcと.zshenvの違いはこちらの記事で説明されていたのが分かりやすかったです。

qiita.com

3. Android Studioのインストール
公式サイトからダウンロードします。
developer.android.com
Android Studioをインストールしたら起動して「Plugin」から「Flutter」を検索して、インストールします。
Flutterをインストール後に「Restart IDE」が表示されると思うので、そのボタンをクリックして再起動させます。
本によるとFlutterプラグインを入れるとDartのプラグインも自動的に入るそうなのでDartプラグインを別で入れる必要はないみたいです。
再起動したAndroid Studioの初期画面に「New Flutter Project」ボタンがあれば成功です。

4. Xcodeのセットアップ
自分の環境では既にXcodeが入っているので特に何かする作業はありませんでした。
Android Studioでflutterのprojectファイルを作ってiOS simulatorを起動させたらちゃんと起動しました。

ですが、macにXcodeが入っていない方は先にXcodeをダウンロードしておいた方がいいです。
ダウンロード時間がめちゃくちゃ長いので…

5.CocoaPodsのインストール
ターミナルで以下のコマンドを実行します。

sudo gem install cocoapods


本だと説明がこれだけだったので公式サイトの方が分かりやすいかもしれないけど、公式サイトに沿うなら全工程を公式に合わせた方がいいかも。
一応公式のCocoaPods導入部分のリンクだけ貼っとこ…

docs.flutter.dev

これで環境構築は完了です!
書き出してみるとスムーズに見えるけど、実際はエラーがいくつか出て結構時間がかかりました…主にCocoaPods導入関係で……

そちらはまた別の記事でまとめよ。

storyboardで作成した画面が表示されなくて困った

iOSアプリを作ることになり本格的にSwiftを勉強しています。

そして早速つまづきました...
タイトルにある通り、自作クラスを呼び出した時に紐付けたstoryboardが表示されなくて困りました。

storyboardで作った画面が表示されない

今回初めてstoryboardを使用して画面を作りました。(今更storyboardかよって感じですが、SwiftUIを使ってみたかったけど支給されているMacではスペックが足りず動作が激重でした...)

起動時にログイン判定して表示される画面を振り分けているのですが、自作した新規登録画面クラスを呼び出してもUIが反映されない...

storyboardの設定を見てもCustomClassで自作クラスに紐付けているし、呼び出されているクラスもUIViewControllerなので合っているはず。

とりあえず 『storyboard UIViewController 表示されない』でめっちゃググりまくりました

なんとか表示できた

色々な技術ブログ様を読み漁り、こちらの記事に辿り着きました。

【Swift3】ソースコード上から Storyboard 上に配置した ViewController にアクセスする

ソースコード上からということで自分のコードを見返してみるとwindow.rootViewControllerにそのまま自作クラスを渡していました。
ですので先ほどの記事を参考に以下のように書き換えたら、無事紐付けてあるstoryboardの画面が表示されました!

let storyboard = UIStoryboard(name: "Login", bundle: nil)

let viewController = storyboard.instantiateInitialViewController()
  
//取得したViewControllerを渡す ※storyboardから取得したViewControllerを渡さないと素のViewControllerを渡すことになりstoryboardが反映されない
window.rootViewController = viewController

self.window = window
window.makeKeyAndVisible()

修正前のコードで表示されていた画面は自作クラスのもの?

修正前コードで表示されていた画面が本当に自作クラスのものなのかを確認してみました。

自作クラス内で背景色を変えるコードを書いてから自作クラスを直接表示させたら設定した色の画面が出たので、変更前までは自作クラスのまっ黒な画面が表示されていたようです。

今までコードでUIを作っていたので初めてstoryboardを使用したら画面を作りやすくて感動しました。

上手く使えるように頑張ろう。

はじめまして

はじめまして。
このブログは自分のメモ用に作成しました。
仕事をしていて気づいたことや覚えておきたいことを記事にして自分用にまとめていこうと思っています。

自己紹介

細々とプログラマーとして働いてます。
iOSの開発をすることになりswift(まだ初心者レベル)を使っています。
Xcodeに慣れるために試行錯誤しながらswift勉強しています。

よろしくお願いします