サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GWの過ごし方
techblog.goinc.jp
こんにちは、SREグループのカンタンです! LGTM!オブザーバビリティ基盤第1話という記事ではログとメトリックスとトレース情報を扱えるGrafanaをベースとした新しいオブザーバビリティ基盤の話をしました。今回はログにフォーカスし、ログの収集と検索を行うGrafana Lokiについて詳細に説明したいと思います。 Grafana Loki Grafana Lokiはログを検索するためツールです。他のログ検索の仕組みと比べて、ログの内容自体をインデックスしないのが主な特徴になります。ログを投入する際にログ内容に加えてラベルとして渡すアプリケーション名、コンテナ名、Pod名などログ発生元の特定情報のみがインデックスされます。検索の際にラベルを検索フィルタとして指定することでインデックスを参考に該当するログレコードがストレージから取得されます。 ログの書き込みは以下のような非常にシンプルな流れ
この記事はGO Inc. Advent Calendar 2024 14日目の記事です。 こんにちは。AI技術開発部の牧瀬です。 Python アプリケーションのパフォーマンスチューニングに使えるプロファイラはいくつかありますが、本番環境でも使えるものとして Google Cloud Profiler があります。 本記事では様々なサンプルコードで Cloud Profiler の挙動を確認し、結果の読み方について注意点やコツをお伝えします。 概要 Google Cloud では Cloud Profiler というものが提供されており、 Go, Python, Java, Node.js などのプログラムのプロファイリングを簡単に行うことができます。 対象のプログラムは Google Cloud 上で動作しているものに限らず、他のクラウド上で動作しているプログラムや、ローカルマシン上で実
AI技術開発部の宇都です。GO株式会社では過去に発信した記事や発表資料をテーマごとにまとめる取り組みを行っています。 今回はタクシーアプリ『GO』における『因果推論』をテーマとした記事をご紹介します。 因果推論の基礎 入門 統計的因果推論 | MoT Lab (GO Inc. Engineering Blog) AI技術開発部分析グループでは毎週勉強会を開催しており、ビジネスの意思決定をデータに基づいて支援するため、「統計的因果推論」についても取り扱いました。この記事では、オンラインコース「Introduction to Causal Inference」で学んだ内容をもとに、相関と因果の違いやシンプソンのパラドックスといった、意思決定分析に不可欠な因果推論の基礎概念について詳しく解説しています。 因果推論の実践 タクシーアプリのビジネスデータ分析 #mot_tech_talk | MoT
タクシーアプリ『GO』のデータエンジニアをしている牧瀬です。 Apache Arrow という OSS を知り、弊社でも活用できる機会があるのではないかと興味を持ちました。本記事では Apache Arrow の概要を紹介します。 概要 Apache Arrow とは、インメモリのカラムナーフォーマット仕様および、それを操作するための各種プログラミング言語用のライブラリ実装です。 Apache Arrow が作られた目的は、大きなデータセットを高速に処理したり、データセットを異なるシステムやプログラミング言語の間で効率的にやりとりするためです。 なぜインメモリ? 一般的なカラムナーフォーマットの多くはストレージに保存する際のフォーマットですが、Apache Arrow はインメモリの仕様も定められています。 これは 1台のマシン上で異なる言語やプロセスの間でデータをやり取りする際、シリアラ
こんにちは、SREグループの浜地です。 先日、TerraformにConftestを導入したので、背景などを含めて紹介しようと思います。 「最近話題のOPA的なのでTerraformをテストしたいんだけどなー」とお考えの方にぜひ読んでいただけると幸いです。 Conftest導入背景 SREグループのInfrastructure as Code用のリポジトリは大きく分けて3つあります。Terraformに限定した話をすると、TerraformのStateを管理しているのは1つ目のリポジトリのみです。 稼働中のアプリケーションシステムの状態を記載しているTerraformやKubernetesのコードを管理するリポジトリ(便宜上サービスインフラリポジトリと呼びます) Terraformの共通モジュールを管理するリポジトリ(便宜上Terraformモジュールリポジトリと呼びます) Kuberne
はじめに SREグループ・ヒロチカです。GO株式会社では、サービスのクラウドインフラの設計から構築・運用までを担当しています。 今回、高トラフィックが予想されるアプリケーションに対して負荷試験を実施するにあたり、軽量に負荷をかけられるツールを試してみた中で、Golangベースでかつお手軽に負荷をかけられるツール「vegeta」が便利だったため、こちらの記事で紹介したいと思います。 負荷試験ツール vegeta 今回利用した「vegeta」は、Golangで書かれているCLIで実行可能なシンプルな負荷試験ツールです。 公式リポジトリ: vegeta 説明文を読むとHTTPサービスに対して一定のリクエストレートで負荷リクエストを投げることを目的として開発され、CLIでの利用だけでなくライブラリとしても利用できるとのことでした。 他にも数多ある負荷試験ツールの中で、自分がvegetaを採用したの
Golang マイクロサービスの徹底トレース方法 | オブザーバビリティ基盤第3話 こんにちは、SREグループのカンタンです! GO株式会社ではサービス品質を向上させるためマイクロサービスのオブザーバビリティを常に改善しています。 「LGTM!オブザーバビリティ基盤第1話」という記事ではGrafanaをベースとしたオブザーバビリティ基盤を紹介し、「Grafana Lokiでログを検索 | オブザーバビリティ基盤第2話」ではログの収集と検索について話しました。 今回はサービスメッシュを活かした Golang マイクロサービスのトレース方法を紹介したいと思います。 背景 メトリックスとログの次にトレース情報がマイクロサービス開発において非常に重要なデータになっています。 複数サービスを跨いだ複雑なリクエスト処理を可視化することで、ログを見なくてもパフォーマンスのボトルネックとエラーの発生箇所な
バックオフィス基盤第2グループの名嘉眞です。私の担当しているプロダクトにカーソルページネーションを実装したので、その経緯と実装内容を記事にしたいと思います。これからカーソルページネーションを実装しようとしている方の参考になれば幸いです。 カーソルページネーションを実装したきっかけ カーソルページネーションを実装したきっかけは、1ユースケースでデータ量が大きくなるAPIを追加する必要があったためです。 具体的にいうとある特定の種別の決済情報を蓄積しているマイクロサービスがあり、そのマイクロサービスを利用する管理画面のサービスが存在していて、管理画面でその特定の決済情報を表示したり、CSVダウンロードしたいという機能追加がありました。サービス間の通信はgRPCです。 この要件だけだとオフセットページネーションでも良さそうなのですが、以下のような課題がありました。 ※オフセットページネーションと
今年1月からFlutterのWebアプリケーションを開発している孫と申します。 Flutter 3.0から公開されたThemeExtensionはあなたのコードをもっと綺麗に整えるのができます。なぜThemeExtensionシステムを使うべきなのか、どのように使ったらいいのかを確認してみましょう! ※ Youtubeの「ThemeExtension | Decoding Flutter」の内容を元に編集しました。 WEBではセマンティック情報とスタイル情報を分けた方が良いという話があります。 例えば <p style="color: red;">どうする?GOする!</p> 上記のように同じところに置くことより <!-- index.html --> <p>どうする?GOする!</p> /* style.css */ p { color: red; } セマンティックをHTMLファイルへ
こんにちは、SREグループのカンタンです! GO株式会社にある様々なサービスは、SREが提供しているKubernetes基盤上で動いています。ログ検索基盤として長年BigQueryを利用していましたが、利用体験と効率を向上させるためにGrafanaをベースとした新しいオブザーバビリティ基盤に移行しました。ログに加えてメトリックスとトレース情報を扱えるようになり、可視化が楽になり、ログベースのアラートなど様々な機能が使えるようになりました。 複数の記事に分けて説明させていただきますがこの記事ではSREが作ったオブザーバビリティ基盤の背景と全体像をご紹介できればと思います。 背景 オブザーバビリティ基盤をリニューアルする前はKubernetes (AWS EKS と GCP GKE)で動いているアプリケーションのログをfluent-bitで収集しリアルタイムでBigQueryに送っていました。
GO BUSINESSのフロントエンド側を担当している林です。 この記事ではReact18で正式に実装されるSuspenseという機能について紹介します。 Suspenseとは Suspenseという機能はReact16.6で実験的コンポーネントとして追加されましたが、React18では正式な機能として実装されることになりました。Suspenseはデータの受け取り状態を検知するコンポーネントであり、データを受け取るまではfallbackで指定した要素を返し、データを受け取るとSuspenseで囲っている子要素を返すという動きをします。 これまではサーバーサイドからのデータの受け取り状態は以下のようにuseStateやuseEffectなどのReact hookを利用して自身で状態管理することがほとんとでしたが、 import React, {useState, useEffect} fro
技術戦略部 SREグループの古越です。 前回の記事でパーティショニングを導入する段階で注意するポイントについて主に触れてきました。今回は導入するために具体的に行った事や追加で導入する拡張機能の解説などを踏まえて紹介していきます。 前提知識と導入するまでの背景については前回の検討編を見て頂ければと思います。 Aurora PostgreSQLでテーブルパーティショニングを導入した話 【検討編】 実践したこと 前回のブログでも軽く触れましたが、導入する前には以下を重点的に検証し、実践しました。 パーティション管理の自動化のため pg_partmanを導入する local開発環境でpg_partmanを利用可能にする Aurora PostgreSQLパラメーターのチューニング パーティションの一部をS3にエクスポートする このあたりを具体的に解説していければと思います。 1. pg_partm
AI技術開発部の老木です。今回、分析ログの増大が課題となりJSON型の導入を検討しました。分析ログをJSON化した際に問題となる配列の扱いについて紹介します。 適当に作ったログがでかすぎる。ログを出力・分析する人間によくある悩みではないでしょうか。そこで、大きすぎるログの容量削減にBigQueryのJSON型が利用できないかを検討しました。 課題 弊社では分析ログとしてJSONを格納した文字列を出力してきました。分析ログはスキーマの変化が激しく、そのたびにテーブルのスキーマ変更をする手間を避けるためです。 例えば、配車ロジックのログでは、以下のようなフォーマットのログが出力されます。これは、リクエストと車両をマッチングする際に、そのリクエスト情報と周辺にいた車両情報を含んでいます。このリクエスト情報が増えたり、車両情報が増えたり減ったりといったスキーマ変更が生じます。 { "matchin
SREグループの古越です。 SREグループではAurora PostgreSQLのインプレースアップグレードで少し痛い目を見た過去があり、Aurora PostgreSQL 10.x EOS(2023/01/31)を切っ掛けとしてインプレースに変わる安全なアップグレード方法を模索していました。 2022/9頃から検証を始め、論理レプリケーションを使ったBlue/Greenデプロイ方式のアップグレード手順を確立することが出来ました。背景と具体的な手順について紹介していきます。 背景など PostgreSQLは1年に1つ新しいメジャーバージョンがリリースされ、メジャーバージョンごとに初期リリースから5年でEOL(End of Life)を迎えます。 Aurora PostgreSQLは本体のPostgreSQLよりも2ヶ月程度遅れる形でEOS(End of Support)がやってきます。ユー
※本記事の背景にある「道路情報の差分抽出プロジェクト」は、2025年8月1日付けで会社分割に伴い新会社GOドライブ株式会社に移管されました。現在は、GOドライブ社のテックブログにて継続的に技術情報を発信していますので、そちらもご参照ください。 AI技術開発部の鈴木達哉です。Mobility Technologies (MoT)ではドライブレコーダーから取得できる情報を元に道路上の物体を検出し、地図と比較することで現地と地図の差分を見つけ、地図を更新する『道路情報の自動差分抽出プロジェクト』を株式会社ゼンリンと共同で進めています。本記事ではドラレコ動画から道路標識を認識するAIの精度改善を機械学習モデルではなくデータの量と質に着目し実現した事例を紹介します。 はじめに 本記事は、2022年4月6日に開催された「MoT TechTalk #11 深掘りコンピュータビジョン!研究開発から社会実装
(これはMoT Advent Calender 2022の24日目です) データエンジニアの渡部徹太郎です。私の担当しているプロジェクトでは、Infra as CodeにTerraformではなくCDKというツールを使っているので、その話をします。 CDKの概要 CDKとはAWS専用のInfra as Codeツールです。正式名称AWS クラウド開発キット (AWS Cloud Development Kit)です。 CDKの特徴 プログラミング言語でAWSのリソースを記述 プログラミング言語はTypeScriptがメインだが、他にもJavaScript,Python,Java,C#でも記述できる AWSのリソースを表すクラスをNewすると、AWSのリソースができるイメージ 実態はCloudFormationを吐き出してデプロイするツール。デプロイするとAWSのCloudFormation
技術戦略部 SREグループの古越です。 MoTで開発しているサービスの多くはAurora PostgreSQLを利用しています。一部サービスにはデータが蓄積し、肥大化していくテーブルの管理が課題になっています。今回は開発者からの要望で新規サービスの幾つかにパーティショニングを導入する事になりました。SREグループでパーティショニング導入までに検証したことを検討編と実践編という2つの記事で紹介できればと思います。 検討編では事前検証として行った事のまとめとして、導入検討の段階で注意するべきポイントを紹介いたします。実践編では導入するために行った具体的な施策について紹介してきます。 背景 肥大化するテーブル管理の課題 PostgreSQLに限らずDB一般に言えることですが、ログや履歴が含まれるテーブルはサービス成熟とともに徐々にデータが蓄積していきます。蓄積しすぎて肥大化すると簡単なクエリの応
こんにちは、技術戦略部 SREグループのカンタンです! データベースのパスワードやAPIサーバの認証情報など秘密情報をきちんと管理しないと漏洩が発生しセキュリティインシデントに繋がる可能性が高いでしょう。 数ヶ月前から、SREグループが扱っている秘密情報の管理方法をgit-cryptからsopsに切り替えました。運用が楽になり、セキュリティレベルが向上し、非常に満足しているためsops自体とSREグループの使い方を紹介させていただきたいと思います。 背景 SREグループでは、Terraform用の設定やKubernetesで動いているサービスの環境変数など秘密情報を暗号化した上で一つのgitリポジトリで一元管理しています。秘密情報を利用する際、暗号化ファイルを復号してからgrepなどで検索したり、Terraformプロジェクトを適用したり、環境変数をKubernetesのSecretに反映
タクシーアプリ「GO」の iOS アプリを開発している今入庸介です。 本記事では、見積もりと実績の乖離を可視化し、見積もりの精度を高めるための取り組みについて紹介します。 はじめに タクシーアプリ「GO」の開発では、数週間程度で終えられる小規模なプロジェクトから、半年以上かけて開発する大規模なプロジェクトもあります。 開発を進める中で、定義された仕様を元に、エンジニアが開発工数を見積もる工程があります。それを元に立てられたスケジュールにしたがって開発を進めるのですが、プロジェクトの規模が大きくなればなるほど計画通りに進められないといった事象が続いていました。 この課題を改善するための一つの施策として、見積もりと実績を可視化し、プロジェクトが完了したあとに振り返られる仕組みを構築しました。 本記事では、その仕組みについて紹介し、どのようにして習慣化をしたのか、見積もりと実績の乖離から得られた
タクシーアプリ「GO」の iOS アプリを開発している今入庸介です。 本記事ではアプリ開発チームにおける振り返り手法とその効果について紹介します。 はじめに タクシーアプリ「GO」のアプリ開発チームには、PdM, デザイナー, iOS/Android エンジニア, QA メンバが所属しており、約 10 名のメンバーで構成されています。 2 週間ごとの Sprint でチーム内の活動が行われており、その最終日にはレトロスペクティブミーティングにてチームメンバ全員で「振り返り」をおこなっています。 当初は KPT による振り返りしていましたが、よりチームにマッチした振り返り手法を模索し、KPT 以外の手法を採用することになりました。 本記事では、我々が日々行っている振り返り手法とその効果について紹介します。 KPT による振り返りとその課題 KPT という振り返り手法があります。Keep, P
Mobility Technologies(MoT)では、MoTの前身の時代から、Googleが提供しているクラウドインフラサービス群であるGoogle Cloud Platform(GCP)を利用していました。MoTが新しくスタートするにあたり、以前まで、各々の会社のGoogle Cloudの組織内で作成し運用していたGCPプロジェクトを、MoT名義のGoogle Cloudの組織内で管理するため、必要なGCPプロジェクトの精査を行ったのち、組織間の移行作業を実施しました。 今回は、この時に実施した組織間でGCPプロジェクトを移行した事例を紹介できればと思います。 はじめに SREグループ・ヒロチカです。Mobility Technologies(MoT)では、サービスのクラウドインフラの設計から構築・運用までを担当しています。 MoTは、JapanTaxi株式会社と株式会社ディー・エヌ
タクシーアプリ「GO」、法人向けサービス「GO BUSINESS」、タクシーデリバリーアプリ「GO Dine」の分析基盤を開発運用している伊田です。本番DBから分析基盤への連携処理を改善した事例を紹介します。※ 本記事の対象読者はETLツールを利用している方を対象にしています はじめに 本記事では、タクシーアプリ「GO」の DB から分析基盤への同期処理を約7時間から約10分に改善した事例を紹介します。まず、既存の処理および改善前の状況を説明し、次に改善にあたり実施した分析、その分析をもとにチーム内で実施した議論を経て、最終的にどのような実装を行ったのか紹介させて頂きます。 同期処理について GO の DB は Cloud SQL 上で構築されており、分析基盤への同期処理は GKE 上で Embulk を起動し、リードレプリカに対してクエリを投げて一度 GCS に結果を格納します。その後、
こんにちは、技術戦略部 SREグループのカンタンです。 Mobility Technologies(MoT)では様々なサービスを支えるためにKubernetesを幅広く利用しています。マルチクラウド構成でIstioサービスメッシュやHelmパッケージマネージャなどを使ってAmazon EKSとGKEクラスターを運用しています。 本記事ではKubernetes、Istio、Helmのとても古いバージョンで動いていたクラスターの大幅アップデートストーリー、乗り越えた壁、ダウンタイムを発生させないためのコツなどを紹介させていただきます。内容がそれなりにあるため複数の記事に分けて説明させていただきます。 背景 MoTではAmazon EKSが東京リージョンに対応した翌月の2019年1月からEKSクラスターの本番運用を行なっています。Kubernetesの運用はその半年前にAzure AKSクラスタ
※本記事の背景にある『DRIVE CHART』は、2025年8月1日付けで会社分割に伴い新会社GOドライブ株式会社に移管されました。現在は、GOドライブ社のテックブログにて継続的に技術情報を発信していますので、そちらもご参照ください。 AI技術開発部の木村です。 Mobility Technologies(以下MoT)では、画像認識モデル(主にニューラルネットワーク)の開発に加え、車載デバイス上でモデルをリアルタイムに動作させるための軽量化・高速化にも取り組んでいます。軽量化・高速化には、こちらの資料で紹介しているように枝刈りや蒸留など色々なアプローチがありますが、本記事では量子化による高速化を取り上げます。 量子化はモデルの軽量化・高速化に非常に効果的ですが、物体検出モデルなど複雑なモデルでは(この記事で実験するように)量子化による精度低下が発生しやすい傾向にあります。本記事では、YOL
タクシーアプリ「GO」の iOS アプリを開発している今入です。本記事では GitHub Actions の特徴を紹介し、それを iOS アプリ開発にどう活かしているのかについて紹介します。 はじめに タクシーアプリ「GO」の iOS アプリでは、CI サービスとして Bitrise と GitHub Actions を利用しています。もともと Bitrise のみで運用していましたが、GitHub Actions が登場して以来、一部の Workflow を GitHub Actions に移行したものもあります。 どのような使い分けをしているのか、iOS アプリ開発において GitHub Actions をどのように活用しているのかについて、実例を交えて以下に紹介します。 GitHub Actions の特徴 まずはじめに GitHub Actions 特徴について紹介します。 1.豊
タクシーアプリ「GO」、法人向けサービス「GO BUSINESS」、タクシーデリバリーアプリ「GO Dine」の分析基盤を開発運用している伊田です。BigQuery Remote Functions (Preview) を利用することのメリットや、導入にあたり工夫した点を紹介します。 ※ 本記事の対象読者は BigQuery を利用してパイプラインを作成している方を対象にしています はじめに 本記事では、BigQuery Remote Functions について取り上げ、どのようなメリットがあるのか説明し、実装方法を解説します。次に Preview のプロダクトをパイプラインに導入するにあたり工夫した点を紹介させて頂きます。 ※ 本記事では、Cloud Functions とは何かというような解説はしていません BigQuery Remote Functions とは BigQuery
MoT、AI技術開発部の立松です。先日、統計検定準一級(CBT)を受験し合格しました。非常に学びの多い資格だったので、勉強の流れや受験してよかった点などをご紹介したいと思います。 はじめに こんにちは!MoT、AI技術開発部の立松です。普段はDRIVE CHARTというサービスにて、データサイエンティストとして分析業務やモデル開発等をしています。先日、統計検定準一級(CBT)を受験し、合格しました。非常に学びの多い資格だったので、勉強の流れや受験してよかった点などをご紹介したいと思います。 試験概要 「統計検定」とは、統計に関する知識や活用力を評価する全国統一試験です。今回私が受けた準1級は、「実社会の課題に対する適切な手法の活用力」というレベルを目安に設計されています。2021年より、CBT(Computer Based Testing)方式の試験に切り替わっており、都合のよい試験日時に
こんにちは、Mobility Technologiesのデータエンジニアの渡部徹太郎です。 データサイエンティストの皆さん、以下のような状況になったことないでしょうか。 こういったときは以下の資料を見てください。きっと解決します! スライドへのリンク この資料は、先日社内の勉強会で説明した資料になります。
※本記事の背景にある「道路情報の差分抽出プロジェクト」は、2025年8月1日付けで会社分割に伴い新会社GOドライブ株式会社に移管されました。現在は、GOドライブ社のテックブログにて継続的に技術情報を発信していますので、そちらもご参照ください。 この記事はMobility Technologies Advent Calendar 2021の18日目です。 こんにちは、AI技術開発AI研究開発第二グループの劉です。私はドラレコ映像から標識などの物体を見つける物体検出技術を開発しているのですが、その精度を改善していくためにはまず検出エラーを細かく分析することが重要です。本記事では、物体検出のエラー分析に関する論文である"TIDE: A General Toolbox for Identifying Object Detection Errors"を解説すると共に、その著者らが公開しているツールを
次のページ
このページを最初にブックマークしてみませんか?
『GO Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く