newmo 技術ブログ

技術で地域をカラフルに

TSKaigi 2025に登壇しました

2025年5月23日と24日に TSKaigi 2025 が開催され、newmo でソフトウェアエンジニアをしている @yui_tang と @nozomuikuta が一般応募枠で登壇しました。それぞれの発表の資料と概要は以下のとおりです。 TypeScript エンジニアが Android 開発の世界に飛び込…

Cloud Service Mesh for Cloud Run で実現する PR 環境

この記事では、Cloud Service Mesh for Cloud Run を利用して PR 環境を構築する方法について紹介します。 背景・概要 newmo ではトランクベース開発を行なっているため、開発環境での動作確認は main branch (trunk) に merge されていることが前提になって…

Devinが作るPull Requestのセルフマージを禁止する

AI開発ツールDevinが作成したPull Requestに対して、セキュリティと品質を確保するために2人の承認を必要とする実装方法について解説します。 2025/05/21 追記 レビューコメントが30件以上あったときに正しく動かない問題を修正しました 開発者が書いたPull …

SRE Kaigi 2025に登壇しました & Marpでスライドを作った話

2025/1/26に開催されたSRE Kaigi 2025に、「SREとしてスタッフエンジニアを目指す」というタイトルで登壇しました。 発表を聴きにきていただいた方、またAsk the Speakerや懇親会で話しかけてくれた方ありがとうございました。 SRE Kaigiは今回が初めての開…

【年末】DatadogのGoogle Cloud Integration設定を見直そう【大掃除】

こんにちは。 newmoでは、Datadogを利用してGoogle Cloudをはじめとした各種サービスの監視を行っています。今回はDatadogのGoogle Cloud Integration設定の改善をしたことで、コストを削減できた話を共有します。(たぶん)2024年最後の記事ということで、…

JSConf JPでModular Monolith Monorepoについて発表しました

こんにちは、newmoでソフトウェアエンジニアをしている @yui_tangです。 2024年11月23日に開催されたJSConf JP 2024にて、「Modular Monolith Monorepo -シンプルさを保ちながらmonorepoのメリットを最大化する-」というテーマで発表させていただきました。 …

ブラウザで動作する地理空間データ処理ライブラリとして DuckDB-wasm を使い、 SQL を TypeScript で管理する仕組みを作る

newmo では、地図データや地理情報を扱う場面が多くあります。 たとえば、タクシーやライドシェアでは、営業区域のような営業していいエリアといった地理的な定義があります。 また、乗り入れ禁止区域のようなタクシーが乗り入れてはいけないエリアといった…

MonorepoでのTerraform運用を楽にする!tfactionを使ったGitHub Actions Workflowの構築

はじめに newmoではGoogle Cloud等のリソース管理にTerraformを使っています。また、newmoではMonorepoを使って開発しています。 Monorepoについてここでは詳しく説明しませんが、バックエンドのGoのコードもフロントエンドのTypeScriptのコードもTerraform…

OpenTelemetry Collectorを使ったCloud Run to Datadogの実装パターン

newmoでは現在アプリケーションサーバーをCloud Runで動かし、Datadogを利用してサービスの監視をすることを考えています。 複数のCloud Runサービスからメトリクス、トレース、そしてログをDatadogへ送信する方法としていくつかのパターンが考えられます。 …

newmoインターンがgqlparserにプルリクエストを投げた話

こんにちは。8月からnewmoでインターンをしている堀之内(@horinouchi09)と申します。 nemwoではバックエンドエンジニアとして、ビジネスドメインのAPIの開発やプラットフォームエンジニアリングのタスクなど多岐にわたってプロダクト開発に携わっています。…

YAPC::Hakodate 2024 に参加&学生支援ランチでLTしました! #yapcjapan

YAPC::Hakodate 2024に社員4名が参加&学生向けにLTを実施しました こんにちは。newmoのソフトウェアエンジニアの @tenntenn です。 2024年10月5日に開催されたYAPC::Hakodate 2024にて、今年はnewmoからエンジニア4名が参加。さらに、学生支援スポンサーと…

Google Cloud PAMを使った権限昇格の仕組みと、Terraformでloopをネストする方法

PAM(Privileged Access Manager)とは Google CloudのPrivileged Access Manager(PAM)という機能をご存知でしょうか。 詳しくは 新しい Privileged Access Manager を使用して常時オンの特権からオンデマンド アクセスに移行 | Google Cloud 公式ブログ …

まずはイテレータ(range over func)の仕様を学ぼう - Goのイテレータ深堀りNight

はじめに こんにちは。newmoでソフトウェアエンジニアをやっている@tenntennです。 本稿では、2024年9月24日(火)にファインディ株式会社主催の「Goのイテレータ深堀りNight」というイベントで登壇してきましたので、その報告と内容について紹介します。 fi…

go testの時だけ時刻を固定する

はじめに こんにちは。newmoでソフトウェアエンジニアをやっている@tenntennです。 newmoには2024年8月に入社しました。この記事を書いているのは2024年9月なので、入社してだいたい1ヶ月ちょっとが経過したところです。 なお、筆者が入社した経緯などは次の…

GitHub ActionsのJobが落ちたときに何をするべきかを記述するPlaybookの仕組みを作って運用している話

newmoではGitHub Actionsを自動テスト、Lint、デプロイなどに利用しています。 また、newmoではmonorepoで開発しているため、1つのリポジトリに複数のチーム/複数のアプリケーションが存在しています。 GitHub Actionsではpathsを使うことで、特定のファイル…