こんにちは。ピリカ開発部の冨田です。
ピリカではPythonパッケージの管理にPipenvを利用しています。
今回は、Pipenvで環境構築を行うときに、よく使用するコマンドをまとめました。
続きを読むこんにちは、ピリカの伊藤です。
先日、iOSアプリを審査に出したところ「iPadOSで起動時に通信エラーで進めない」とリジェクトされました。 これまでこのようなリジェクトを受けたことはなく、特にサーバーも問題なく動作していました。
では、なぜ審査落ちになったのでしょう。審査落ちのメッセージに添付されていたスクリーンショットを確認したところ、通信インジケーターが出ていませんでした。通常、ここにはWi-FiやCellularのアイコンが表示されているはずです。
一応この点について指摘してみましたが「このデバイスは正しくインターネットに接続している。詳しくは教えられない。」という回答があったのみでした。
Wi-FiやCellularの表示がなくても接続できる状況ってあるか…?いや、そういえばEthernetがありました。
実はiOS 9.3以降で、Lightning to USB3 Camera Adapterを使い、そこにUSB-Ethernetアダプタを繋ぐことでEthernet、つまり有線LANに繋ぐことができるようになっています。もちろん、USB-Cポートを備えたiPad Proであれば、直接USB-CにUSB-CのEthernetアダプタをつなぐこともできます。
LightningポートにEthernetを挿せるように環境を整えました。Ethernetアダプタをポートに接続すると、設定アプリにEthernetの項目が増えます。
この状態にすることで、問題を再現できました。
このアプリは通信前にFBNetworkReachabilityライブラリでインターネットの疎通をチェックしていますが、このライブラリはCellular接続でない場合はIPアドレスを検出する動作をしていましたが、これがEthernetの環境ではうまく動作していませんでした。
GitHubの最新のコードではこの問題は解消されていましたが、このバージョンはCocoaPodsにリリースされていません。
GitHubを直接参照する形で更新することもできましたが、ライブラリがObjective-Cで記述されていること、現在のアプリはiOS12以降対応になっている等を鑑みて、NWPathMonitorに置き換えて対応することにしました。
今後、通信の疎通にはEthernet接続もあるというのを考慮に入れるようにしたほうが良いと思いました。
こんにちは。ピリカ開発チームの伊藤です。
GCPの各種サーバーレスサービスにアクセスするには、認証情報が必要となります。App EngineやCloud Functions上で動作している場合は、GCPの各種ライブラリを使っていれば特に何もしなくても認証が通った状態となり、FirestoreやCloud Storageなどを扱うことができるようになっています。
しかし、ローカルでの動作確認を行う場合など、GCP外で動く場合には認証情報を渡す必要があります。 これまで、ローカルでの認証のためには「サービスアカウントキー」というJSONファイルを取得することが多かったのですが、サービスアカウントキーファイルが漏洩した場合に検知が難しいなどの問題があり、最近は非推奨となっています。
では具体的にどのようにすれば良いのかというと、あまりまとまった情報がありませんでした。
今回は、GAE/Pythonをメインに運用しているピリカでとったサービスアカウントキー排除の手法をご紹介します。
続きを読む