Backendの共通ロジックをnpm packageにして公開

Backendの共通ロジックをnpm packageにして公開

こんにちは、バックエンドエンジニアの山浦、國藤です。 こちらの記事では新しく作ったbackendの共通ロジック npm package @plugoinc/commonについて、 * 作った経緯 * 導入の準備 * 実装 * 導入 * 導入後の運用 を紹介できればと思います 作るに至った経緯 現状は、バックエンドの開発がNode.jsがメインで使用されていて、3つあるサーバの開発やcloud functionなどで利用しています。 三つのサーバはすべてNest.jsを使って実装しており、開発進める中で一つのサーバで磨いたノウハウや実装を他のサーバに横展開するのにコピペしていました。しかし、一つのサーバで改修を行うと他のサーバでも同じ修正が必要であり、無駄です。 そこで共通ロジックをまとめたnpm packageを作ることにしました。 導入の準備 Node.jsのバージョンを揃える まず、common packageを作るにおいて、サポートするNode.jsのバージョンを決める部分から始めました。 サーバ側はNode.js v18をメインで使用してい
3 min read
ニューモーフィズムのUI/UX

ニューモーフィズムのUI/UX

こんにちは。プラゴのFlutterエンジニアの寺門です。 今回は、充電予約アプリ「Myプラゴ」に採用したニューモーフィズムについて、簡単な概要とメリット・デメリット、導入する際の注意点についてお話しします。 ニューモーフィズムの概要 ニューモーフィズムはデザインスタイルの一種で、2019年後半〜2020年に主にdribbbleで流行しました。要素の表面に深い影をつけることで、立体感や奥行き感があるのが特徴です。背景色と同色の影により、まるで実際に物理的に存在しているかのような造形になります。 ニューモーフィズムは要素の影が柔らかく、背景と要素が同色で構成されるため見た目が落ち着いていることにより、ユーザーに対しても親しみやすい印象を与えることができます。 モバイルUIデザインの潮流とニューモーフィズムの誕生 2007年、iPhoneの登場によりスキューモーフィズムが流行しました。スキューモーフィズムはデジタル上で現実世界で使われている物を模したデザイン手法で、例えば実際の手帳のようなデザインのカレンダーアプリなどが挙げられます。デザインがリアルであるため、
4 min read
OCPP 1.6 とは

OCPP 1.6 とは

こんにちは、バックエンドエンジニアの山浦です。 こちらの記事ではOCPPとは何かについて、ざっくりとご紹介できればと思います。 OCPPとは OCPP(Open Charge Point Protocol)はEV充電器とその充電器が通信するサーバと送るメッセージについて定義しているプロトコルで、世界的にEV充電器で採用されておりグローバルスタンダードになっています。 OCPPには充電の開始、終了やEV充電器のソフトウェアアップデート、さらには予約などの通信メッセージが仕様として定義されており、これに準拠したEV充電器、サーバを用意することで自社のサービスはもちろん、他社のOCPP準拠のEV充電器やサーバとやりとりすることができるようになります。 用語 OCPP上だとEV充電器、EV充電器用のサーバはそれぞれ呼び方が決まっています。また、他の頻出するワードも併せてご紹介します。 パラメータ名 説明 Charge Point EV充電器 Connector EV充電器についている充電ケーブルの挿し口。OCPPではCharge Pointに1つ以上のコネク
3 min read
Identity-Aware Proxyを使ってLoadBalancerにGoogle認証を導入

Identity-Aware Proxyを使ってLoadBalancerにGoogle認証を導入

こんにちは、バックエンドエンジニアの山浦です。GCPのサービス、Identity-Aware Proxyについて調べたのでまとめてみました。 ChatGPTによるこの記事の要約 GCPのサービスであるIdentity-Aware Proxy (IAP)は、HTTPSによってアクセスするアプリケーションに一元的な承認レイヤを確立でき、ゼロトラストモデルに基づくセキュリティを提供する。Load BalancerにIAPを組み込むことで、悪意のあるアクセスを防ぐことができ、VPNが不要なため無駄なネットワーク転送を防ぎ、スピードも向上する。内部IDと外部IDの2種類のログインを提供しているが、操作ログを残すなどの機能は提供しないため、そのような場合は別の解決手段を検討する必要がある。 はじめに 「このツール使いたいけど、ユーザログインの機能がないんだよね。」とか、「リモートワークで開発環境に接続したいけどVPNを経由でのアクセスにしないといけなくて遅いから困る」ということありますよね?その問題、Identity-Aware Proxyを使えば解決できるかもしれないです。 GCP
3 min read
プレビューになったBigQueryの主キー・外部キー制約を使ってみた

プレビューになったBigQueryの主キー・外部キー制約を使ってみた

結論(2023年2月25日時点) * 主キー外部キー制約を強制することはできない。 * 重複データもinsertできてしまう。 * まだ実運用で使うのは厳しそう。 主キー・外部キー制約がプレビュー BigQuery release notes | Google CloudThis page lists the latest release notes for features and updates to BigQuery.Google Cloud 一般的な主キー・外部キー制約とは違う つまり * 主キーと外部キーの値に関する制約は強制しない * 値がそれぞれの制約に一致することを確認しないと正しい結果を得られない Value constraints for primary keys and foreign keys are not enforced. Users need to ensure that values match their
3 min read
複数のCloud Functionsをモノレポ化して1つのリポジトリで管理してみた

複数のCloud Functionsをモノレポ化して1つのリポジトリで管理してみた

はじめに Cloud Functionsを複数作成し運用していると、各Cloud Functionsごとにリポジトリを作成する必要があり、管理が大変になります。 そして、それぞれのCloud Functionsで共通して使うlinter, formatter, ビルドツールなどの周辺ツールの設定はリポジトリが別れているがために共通化することができません。また、CI/CDの設定も各リポジトリごとに作成する必要があります。 そこで今回は、複数のCloud Functionsをモノレポ化し、1つのリポジトリにまとめて、linter, formatter, CI/CDなどの設定を共通化してみます。 ちなみに、Cloud Functions for Firebaseを使っている場合は、モノレポ化する方法が公式ドキュメントに記載されているためこれに従い実装するのが良いと思います。 モノレポ(Monorepo)とは 複数プロジェクトのコードベースを同一レポジトリで管理すること。またはその管理下における開発手法のこと。プロジェクトは相互依存可能で、プロジェクト間のコード共有もでき
5 min read