post Image
Firebase OSSにPRしたけど「もう少し確認したら良かった」と思いながら自らCloseした経験談

前置き

技術的な原因よりもOSS PRの経験に焦点を当てた記事です。誤解を防ぐため最初に結末をお伝えすると自らCloseしています。「ビルドエラー」などOSSのソースコードに不備があるかような表現は「途中まで思っていた」と解釈してください。故にタイトルに「もう少し確認したら良かった」とつけています:bow:
個人でiOS/Androidのネイティブアプリを作ろうとしてFCMのサンプルコードを触っていたところ私の環境ではビルドエラーになりました。原因判明したのでPRしました。

PRしたOSS

iOSのFCMでプッシュ通知を受信するためのサンプルコードです。
https://github.com/firebase/quickstart-ios/tree/master/messaging

PRの内容

GoogleのCLAに同意して「importするモジュールが不足している」旨をPRしました。Githubをご覧頂ければCloseした経緯はネタバレ同然:sweat_smile::sweat_smile:なのですが、記事として最後まで書きます。修正個所は1行のみです。

messaging/MessagingExampleSwift/AppDelegate.swift
  import Firebase
+ import FirebaseMessaging

この1行が無いとそれに該当するモジュールのクラスが認識されずビルドエラーになっていたのです。なお、現在Githubをみるとfromのリポジトリがunknown repositoryになっていますが筆者が削除したためだと思います。

PRした直後

ここは余談になります。CLAの同意確認やTravis CIのビルドが動いていました。
git1.png
git2.png

レビュー

レビュアーさんからコメントを頂きました。Google機械翻訳です。

その上にあるFirebaseのimport文に自動的にインクルードされるはずですが、これが失敗したのは初めてではありません。このビルドの問題は、実際にプロジェクトをビルドしようとすると消え去るのですか、それともビルドに失敗するのでしょうか?

もう一度筆者の修正を見ながらレビュー結果と照らし合わせると、要するにimport Firebaseがあれば問題無いはずの想定のようですね。

messaging/MessagingExampleSwift/AppDelegate.swift
  import Firebase
+ import FirebaseMessaging

調査する

Firebaseのimport文に自動的にインクルードされるはず

指摘頂くと「なぜ自動的にインクルードされないのか?」を調査したくなりました。結果としてはCocoaPodsのキャッシュ周りをクリアしてビルドしたらimport FirebaseMessagingを削除しても問題無く動作しました。なんだか申し訳ない気持ちになりました:pray:

rm -rf ~/Library/Caches/CocoaPods/
rm -rf Pods
pod install

結果を伝える

調査した結果を伝え問題が解決したことと、レビュアーさんに筆者のこのコメントを確認して頂いたらCloseする旨も伝えました。

Closeする

このインポートを追加する価値があるかもしれません。

とコメントを頂きましたが、CocoaPodsのキャッシュをクリアしたら動いたわけですし、筆者はシンプルな方を好むのでCloseさせて頂くことにしました。

終わりに

「PRしてマージしてもらった!」とか「PRしたのでマージされることを気長に待ちましょう!」という情報は多かったのですが「自らCloseした」情報はあまり見かけなかったので書いてみました。(実際の事例はあるのでしょうが情報として発信していないのかもしれません。)
タイトル名に繋がってきますが「もう少し確認したら良かった」とは思いますね。今回の例で言えばレビューして頂き初めて「自動的にインクルードされる」と分かりOSSで想定されている動作を調査することができたので勉強になりました。熟練した方々はすぐに「自動的にインクルードされる」と分かるのかもしれませんね。OSS PRの意欲が萎えたりしていませんので引き続きやっていこうと思います。初マージされたら記事を書かせて頂くかもしれません。


『 Swift 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。