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

こんにちは。 ピリカ開発チームの伊藤です。

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

そこで、各自のIPアドレスを固定化するためにVPNやプロキシサーバーを構築していますが、その認証の管理をできるだけGoogle Workspaceの権限を元にやりたいと考えました。

この記事では、VPNやプロキシの認証をするための前段として、Google Workspaceの情報と連動した独自の認証基盤をどのように作ったかを紹介します。

続きを読む

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

こんにちは、ピリカ開発チームの九鬼(niccari)です。

機械学習周りで物体検出したいとき、TensorFlowとともにObject Detection APIを利用することがあります。

Object Detection API側のアップデートで新規Docker環境が動かなくなったことがありました。

続きを読む

BigQueryのデータを定期的にGooleスプレッドシートに出力する方法

こんにちは、ピリカ開発の冨田です。

今日は、BigQueryのデータを定期的にGooleスプレッドシートに出力する方法について書きたいと思います。

今回使用するツールはOWOX BI BIgQuery Reportsという無料のアドオンツールです。

というのも、GoogleのConnectedSheetを使用すれば、同様のことは可能なのですが、使用できる条件が、合わなかったので他の方法を探しました。

続きを読む

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

初めまして、ピリカ開発チームの九鬼と申します。

Google Cloud Functions(以後、GCF)でアプリをデプロイするとき、Cloud Build環境でSSHキーにアクセスできません。そのため、GitHubのprivateリポジトリにアクセスできないので、アプリのソースコード上に自作ライブラリをあらかじめ組み込んでおく必要があります(公式リファレンス)。

しかしながら、pip install -tでインストールした方法ではいくつか問題があります。

そこで本記事では、ライブラリをwhlに固めてから組み込む方法を紹介します。

続きを読む

SVG内の色をプログラムから指定する

こんにちは。 ピリカ開発チームの伊藤です。

SVGは解像度や拡大縮小に依らずきれいな描画が得られるため、アイコンなどの描画に最適なフォーマットです。 SVGフォーマットの画像にある色などは外部からスタイルを上書きすることで色を変更できます。

例えば、地図上のマーカーを状態により色を変更するといった用途で使用することができます。

f:id:pirika-inc:20210909093714p:plain

ここではReactにSVGファイルを読み込ませて、色を動的に変更する方法をご紹介します

続きを読む

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

こんにちは。 ピリカ開発チームの伊藤です。

ピリカではアルバトロスプロジェクトで集めたマイクロプラスチックサンプルを分析する際、各サンプルの画像を撮っています。 このサンプル画像には、右下にスケールが書いてあり、この数字を元に映っているサンプルの最大径・面積などを求めています。

f:id:pirika-inc:20210907121435p:plain
アルバトロスオープンデータより © 2021 Pirika Association.

右下のスケールのテキストは顕微鏡のソフトウェアにより自動挿入されており、テキストデータとして得ることはできなかったため、別途このテキストを読み取る作業が必要ですが、1000を超すサンプルすべてに対してこれを人力でやるのは非効率です。 そこで、Cloud Vision APIを用いてこの右下のスケールを読み取るようにしました。

f:id:pirika-inc:20210907121718p:plain
Cloud Vision APIを使えば画像中のテキストを読み取れる

サンプル画像は分析作業の段階ではGoogleドライブに入っていますが、Cloud Vision APIで分析するにはhttp/httpsでアクセスできるようにするか、Google Cloud Storageにコピーする必要があります。

GoogleドライブからGoogle Cloud Storageへのコピーする際、一度ダウンロードしてからアップロードをすると時間がかかるだけでなく、一時ファイルに保存する必要があり面倒です。 なるべく手間なく高速にできればと思い、TypeScriptでストリーミングコピーを実装してみたのでご紹介します。

続きを読む

ピリカ開発者ブログをはじめます

こんにちは。 株式会社ピリカで開発のとりまとめをしています伊藤(id:iseebi)と申します。

このたび、ピリカ開発者ブログを立ち上げることになりました。

なぜ開発者ブログを始めるのか

株式会社ピリカ/一般社団法人ピリカは「科学技術の力であらゆる環境問題を克服する」という目標のもと、様々な技術を用いて環境問題の解決に挑んでいる組織です。 環境問題は数多くありますが、現在はごみの自然界流出問題にフォーカスして、問題解決に資するためのサービスを開発・提供しています。

主には情報技術を使うことが多く、一般的な企業の分類としてはIT企業ということになるのですが、それにとどまらず自ら開発した調査機器をかついで全国を回り、集めてきたサンプルを実験室で分析するといったこともしています。 また、環境問題解決のために使える時間を最大化するために、全社的にコンピュータに任せられることはどんどん増やして効率化することも目指しています。

活動から得られる技術は、他社と同じようなものも多いのですが、ピリカの環境だからこそ得られる知見もあり、新しく入ってくるメンバーにはなじみがなかったりといったこともあります。 ピリカのエンジニアチームで大事にしたいと思っている事の中に「自分の知識を広げること」そして「得た知識を共有して全体として効率を高めること」というものがあります。 今いるメンバーに「得た知識を共有すること」の意識付けの活動をしてもらう場として、また今後入ってくるメンバーが「自分の知識を広げること」の助けになることを目標として、得た知見を公開していきたいと思います。

そして公開することでピリカの開発を様々な方に知ってもらったり、コメントをいただくことでより新しい知見を取り入れ、更なる環境問題の解決につなげることができれば尚うれしいと思っています。

どんなことをしているのか

ピリカでは主に以下のサービスを提供しています。

  • ごみ拾いSNS「ピリカ」
  • 街のポイ捨てごみの見える化「タカノメ」
  • 水中マイクロプラスチック調査「アルバトロス」

これらのサービスの開発を通じて、ピリカの技術的に特徴的だと思うポイントはこのあたり。

  • 創業期からGoogle App Engineを活用。開発ではGoogle Cloud Platformのマネージドサービスを中心に使用しており、昔からずっとサーバーレス。
  • バックエンドコードはPython中心。Firebaseを使っているところはTypeScript。
  • 街中の道の様子、ドライブレコーダーや川を撮影したドローン映像からポイ捨て状況を機械学習で読み取るチャレンジ。
  • ITにとどまらず、調査機器の開発も自分たちで。
  • バックオフィスのシステムも一部自分たちで開発。

特にGCPPythonによるバックエンド、React/ネイティブアプリによるアプリフロントエンドが情報技術的な注力ポイントになっているように思いますので、まずはそのあたりの記事から増えていくと思います。


週1〜2回更新を目標にして、次の記事から各メンバーの投稿をはじめていきます。 ご愛顧いただければ幸いです。どうぞよろしくお願いします!