GCP

Firestoreのスケジュールバックアップが提供開始されたので設定した話

こんにちは、ピリカ開発チームの九鬼です。 昨年秋、Firestoreのバックアップのプレビュー版が提供され始めました。費用・管理面で日々のバックアップで利点があったため、導入した話を共有いたします。

AppSheet+スプレッドシート+Google Cloud Storageを連携して、画像付きで撮影データを閲覧できるようにした話

こんにちは、ピリカ開発チームの九鬼です。 AppSheetを使うと、スプレッドシートをデータベース代わりにしたアプリをノーコードで作成できます。AppSheetでは画像を表示することもできるのですが、設定すればGoogle Cloud Storage(GCS)上にある画像も参照す…

TerraformとCloud RunとCloud Load BalancingでCI/CDを突き詰めた

こんにちは。 ピリカ開発チームの伊藤です。 ピリカでは6月1日より、ピリカサポーターズクラブを開始しました。 まだご覧になっていない方はこちらをご覧ください。 corp.pirika.org ピリカサポーターズクラブをはじめるにあたって新しいシステムを構築しま…

ごみ検出処理をCloud Batchに移行した話

こんにちは、ピリカ開発チームの九鬼です。 2022年にGCPでCloud Batchのプレビューがリリースされ、2023年4月には東京リージョンがサポートされました。ピリカではタカノメでごみ検出処理をCloud Runで行ってきましたが、この度Cloud Batchに移行しました。…

CVATをGKE上で動かして見た話

こんにちは、ピリカ開発チームの九鬼です。 ピリカでは撮影したごみの画像に対してアノテーションし、その結果を基に解析・研究を進めることがあります。 その中でGCP上の自社サービスと連携できるアノテーションツールが必要になり、CVATをGKEに構築しまし…

Cloud Build Pub/Subトリガーで別プロジェクトのトピックをサブスクライブする

こんにちは。 ピリカ開発チームの伊藤です。 Cloud Buildでは、リポジトリの更新以外にCloud Pub/Subへのメッセージをトリガーにしてビルドを開始することができます。 今回、複数プロジェクト間でPub/Subトリガーをサブスクライブする設定をしてみましたの…

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

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

GCP Workflows使って調査結果のcsvデータ作成+調査結果のヒートマップhtmlのビルドを行う仕組みを作った話

こんにちは、ピリカ開発チームの九鬼です。 弊社が提供しているタカノメサービスについて、GCP Workflowsを用いることで調査結果の出力フローを自動化することができました。本稿では、構築したワークフローの概要を紹介いたします。

Cloud Runにおいて、動画中の物体検出フローを安定化させるまでに試行錯誤した話

こんにちは、ピリカ開発チームの九鬼です。 弊社が開発しているタカノメ自動車版では、クラウド上にて撮影動画中のごみを検知しています(下図例)。 本機能を安定化するにあたり、開発環境において試行錯誤した経緯を共有いたします。

Go言語製Let's Encryptクライアントlegoをライブラリとして使う

こんにちは。 ピリカ開発部の伊藤です。 ピリカではほとんどのサービスでGCPやAWSが発行するHTTPS証明書を使っていますが、見える化ページと呼ばれる、自治体や企業など、一定の範囲内でのごみ拾い活動を集約しているサービスで使っているワイルドカード証明…

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

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

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

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

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ピリカ データベース周り概念図 そこで、…

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

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

リモートワークで固定IPするために: VPNの認証のためにRADIUSサーバーをつくる

こんにちは。 ピリカ開発チームの伊藤です。 ピリカでは開発環境へのアクセスを保護するための一環としてIP制限をしていますが、ピリカという会社は元々リモートで仕事をしている人が多く、またオフィスのIPアドレスは動的IPの時代が続いていました。 そこで…

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

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

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

こんにちは。 ピリカ開発チームの伊藤です。 ピリカではアルバトロスプロジェクトで集めたマイクロプラスチックサンプルを分析する際、各サンプルの画像を撮っています。 このサンプル画像には、右下にスケールが書いてあり、この数字を元に映っているサンプ…