Python

Xcode14 & Mac M1環境下でgrpcioが突然インストールできなくなったので対処した話

こんにちは、ピリカ開発チームの九鬼です。 Google Cloud Platform(GCP)サービスをPythonなどから触るとき、grpcioライブラリがついて回ります。grpcioはc++で組まれている関係で、CPUアーキテクチャなどの環境によってビルドできたりビルドできなかったりが…

Google DriveからGoogle Cloud Storageにファイルをコピーする(Python編)

こんにちは。 ピリカ開発チームの九鬼です。 以前、Google DriveからGoogle Cloud Storageにファイルをコピーする方法[^1]を本ブログで紹介しました。当該記事はNode.js向けの内容だったのですが、Python向けに対応できたのでその方法を紹介いたします。

gspread(およびgspread_dataframe)の利用方法について

pythonからスプレッドシートを触るとき、gspread/gspread_dataframeなどのライブラリを利用することができます。 これらライブラリについて内部実装を見ながら、どのような使い方をするかまとめました。

Pipenvでの基本的な環境構築

こんにちは。ピリカ開発部の冨田です。 ピリカではPythonパッケージの管理にPipenvを利用しています。 今回は、Pipenvで環境構築を行うときに、よく使用するコマンドをまとめました。 公式ドキュメント

Mac(M1 CPU)で、互換性のあるpyenv+pipenvの環境を作る

こんにちは、ピリカ開発チームの九鬼です。 SNSピリカやタカノメのサービスでは、バックエンドで度々Pythonを使用しています。その中でいくつかPythonスクリプトがあり、バージョンが3.7系列や3.9系列などが含まれます。 しかしながら、Mac(M1 CPU)からarm64…

GAE/Pythonでサービスアカウントキーファイルを使わないようにした

こんにちは。ピリカ開発チームの伊藤です。 GCPの各種サーバーレスサービスにアクセスするには、認証情報が必要となります。App EngineやCloud Functions上で動作している場合は、GCPの各種ライブラリを使っていれば特に何もしなくても認証が通った状態とな…

GoogleAppEngineでCloud SchedulerからのHTTPリクエストのみを受け付ける

こんにちは、ピリカの開発の冨田です。 ピリカのごみ拾いSNS「ピリカ」は、Google Cloud Platformを利用しています。 その中で、定期実行させたい処理を、Cloud Scheduler→AppEngineで行っています。 Cloud SchedulerからApp Engineに対してHTTPリクエストを…

文字列とリストの`is`の謎: Pythonのインターン(Intering)・文字列インターン(String Intering)

こんにちは、ピリカ開発チームの冨田です。 Pythonにはインターン(Intern, Intering)という仕組みがあります。 ここでは、インターンとは何か、Pythonでインターンが利用されるのはどの様な場合か、文字列がインターンされる条件は何かなど、Pythonのインタ…

GeoPandasをGoogle App Engine(GAE)上で動かすためには、libspatialindexを事前ビルドする必要がある

※ 2021年4月時点での検証内容であり、ライブラリ側の更新により解消済みの可能性があります。 GAE上でGeoPandasを動かすには、libspatialindexをDebian系x64 OS上でビルドして依存関係に含めておく必要があります。本記事ではその方法を共有します。

Cloud NDBのredisキャッシュでredis-namespaceを使うとキャッシュキーのコリジョンを起こすことがある件

こんにちは、ピリカ開発チームの九鬼です。 SNSピリカのサービスでは、データ永続化用にCloud NDBを使用しています。また、データ取得のスループットを高めるためCloud Memorystore for Redisを利用しています。 SNSピリカ データベース周り概念図 そこで、…

pythonの真偽値と条件分岐

こんにちは、ピリカの冨田です。 pythonで、Noneかどうか、空文字列かどうか、空配列かどうか、空辞書かどうかの判定とその時の処理の書き分けで迷いがちの冨田です。 それらを正しく書き分けるためには、何がNoneで何がTrue/Falseで、それらがどうやってやi…

ローカルでPub/Sub, Cloud Functionsを同時に動かしながら動作確認する

こんにちは、ピリカ開発チームの九鬼です。 SNSピリカのサービスでは App EngineからPub/SubにメッセージをPublish → サブスクリプションフィルタで絞り込み → Cloud FunctionsからCloud Tasks経由で再度App Engineに戻して処理するケースがあります。 SNSピ…

TensorFlow 2.xでObject Detection APIを使うにはTensorFlowバージョンを揃える必要がある話

こんにちは、ピリカ開発チームの九鬼(niccari)です。 機械学習周りで物体検出したいとき、TensorFlowとともにObject Detection APIを利用することがあります。 Object Detection API側のアップデートで新規Docker環境が動かなくなったことがありました。

Google Cloud Functionsで、GitHubのprivateリポジトリにある自作ライブラリを使う方法

初めまして、ピリカ開発チームの九鬼と申します。 Google Cloud Functions(以後、GCF)でアプリをデプロイするとき、Cloud Build環境でSSHキーにアクセスできません。そのため、GitHubのprivateリポジトリにアクセスできないので、アプリのソースコード上に自…