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

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

弊社が開発しているタカノメ自動車版では、クラウド上にて撮影動画中のごみを検知しています(下図例)。

本機能を安定化するにあたり、開発環境において試行錯誤した経緯を共有いたします。

続きを読む

Sign in with Apple: 2022年6月のアカウント削除機能に対する要件の適応に対応した話(リフレッシュトークンの取得とトークンの無効化)

こんにちは、開発チームの冨田です。

今日はSign in with Appleにおける、サーバー側でのリフレッシュトークンの取得と、トークンの無効化処理について書きます。

これは2022年6月から適応される新しいガイドラインにて、アカウント削除機能に対する要件が新しく定義され、それに対応するためのものです。

続きを読む

Microsoft IntuneからiPhoneおよびiPadにアプリ専用の設定を配信する

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

モバイル端末管理ツールの一種であるMicrosoft Intuneから、iPhoneにアプリ専用の設定値を配信することがありました。備忘録として、Intune側での設定方法とiOSアプリでの読み出し方を記載します。

続きを読む

Firestoreでドキュメントの有効期限付けつつ、特定のフィールド値を持つドキュメントのみをクエリできるようにする

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

Firestoreについて、ドキュメントに有効期限を付けつつ、フィールドが特定値を持つドキュメントのみ取得できるようにしたいことがあります。

セキュリティルールと複合クエリを使って実現できたので、その方法をまとめました。

続きを読む

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

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

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

Let's Encryptで証明書発行するためのクライアントとしては標準のcertbotの他にもいろいろなものがあります。 個人的に、legoを気に入って使っています。お気に入りポイントはこんな感じです。

  • Go言語で作られていて、Pythonの言語環境に依存せずに使える
  • いろいろなDNSサービスに対応している
  • コマンドラインcertbotよりもわかりやすい

コマンドとしてずっと使っていて、このコマンドを内部的に使用する形で証明書を自動更新をするCloud Runを作ろうとしていたのですが、改めてリファレンスを読んでいたところライブラリとしても運用できることがわかりました。

今回はlegoライブラリでLet's Encryptクライアントを書いてみたので、使い方を紹介します。

続きを読む

自分らしく、使ってて楽しいターミナルのカスタマイズ

こんにちは、ピリカの豊川です。 入社してそろそろ半年が経ちますので、以前から書こうと思ってたブログ記事を書いてみます。

f:id:minorin22:20220330153405p:plain

これは、Macのデフォルトのプロンプトでターミナル操作した時のスクショです。特に難しいことはしてませんが、なんとなく何をやってるのかわかりにくく思いませんか?

いくつか問題点を上げてみます。

  • 文字の色が一色で、直感的に読みづらい
  • 改行がなく、プロンプト、入力、出力がどこにあるか把握しづらい
  • カレンとディレクトリを知るのにいちいちpwdする必要がある

一方で、私の普段使ってるターミナルはこんな感じです。

f:id:minorin22:20220330154513p:plain

f:id:minorin22:20220330155338p:plain

  • 文字の色にルールがあり、色から直感的に意味が分かりやすい
  • プロンプト内に改行、出力後に1行の空行があり、入出力ともに読みやすい
  • カレントディレクトリはフルパスで常に表示(ただしホームは~で略記するなど、冗長的な表現は防いでいる)
  • 時刻表示により、いつどんなコマンドを打ったか一目瞭然
  • 前のコマンドがエラーを吐いた場合、プロンプト横の顔文字が変わる(実用性と癒しを兼ね備えてます)
  • lsの表示が色分けされていて分かりやすい(青:ディレクトリ、白:ファイル、赤:実行ファイル)
  • (git管理されている場合)ブランチ名が表示される。また、ブランチの状態によってブランチ名の色も変わる。

ちなみにRosetta2を使うときは、物理的に別アプリ(普段はiTerm2、Rosetta2は純正Terminal.app)と使い分け、さらには色も分けることでヒューマンエラーを防いでいます。

f:id:minorin22:20220330155651p:plain

まとめ

技術的に難しいことはしてませんし、ググったらやり方はすぐ出てくるような内容ですので、ここでは敢えて具体的な設定方法については解説しません。

フロントエンド開発にはユーザー視点でUXに向き合うことが欠かせませんが、まずは自分の身の回りで、自分自身がユーザーとして使うものを使いやすくカスタマイズすることは、意識付けの良いきっかけになると思っています。

皆さんもこだわりポイントや自慢したいところがありましたら、ぜひお聞かせいただけると嬉しいです。