Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

Go

GoのsqlxパッケージにてJSON_CONTAINSを使ってSELECTしようとしてハマった話

はじめに こんにちは、サーバサイドエンジニアの中川(@tkdev0728)です。 Yappliに入社して半年が経とうとしていて、時の流れは早いなと感じている今日この頃です。 さて、今回はタイトル通りとある業務にてJSONで格納されている値から特定のキーを抽出したい…

Goのdefer文を使うときに気をつけること

Go

Goのdefer文の基本的な使い方と、プロダクションで使うときに気をつけるべきポイントをまとめました。

AWS EventBridgeを使ってAWS MediaConvertを自動で実行する

こんにちは、サーバサイドエンジニアの中川です。 この記事を執筆している2022年9月はちょうどスプラトゥーン3が発売された時期ですね。自分は今作から本格的に遊んでいるのですがすぐやられてしまうので、塗っている時間よりも塗る場所に移動している時間が…

Jiraのラベルが完全一致検索しかできなかったのでGoでチケットをエクスポートして集計してみた

こんにちは。インテグレーション・エンジニアの尾宇江(おうえ)です。 今回は、GoでJiraのチケットをエクスポートしてみた件について、テックブログに記載いたします。 はじめに Yappliでは2週間に1度、エンジニアが自分たちが主体となってプロダクトや業務に…

戦術的DDDをGoで実現する【Value Object編】

はじめに こんにちは。サーバサイドエンジニアの窪田です。 前回の 戦術的DDDをGoで実現する【entity編】 - Yappli Tech Blog に続き、 今回は戦術的DDDにおける、Value ObjectがGoでどのように書けるのかを考えていきます。 例によってTypeScriptとの書き方…

YappliのGoのテストについて

Go

サーバーサイドエンジニアの田実です! 今回はYappliのGoのテストコードについて紹介したいと思います。 基本編 DBを使ったテスト HTTPリクエストのテスト インテグレーションテスト テストの実行とカバレッジの集計 その他 まとめ 基本編 基本的には標準ラ…

NewRelicをYappliのサービスに適用してみた

サーバーサイドエンジニアの田実です! Yappliではインフラ・アプリケーションの監視、メトリクスの計測にNewRelicを使っています。 今回、YappliのサーバーサイドアプリケーションにNewRelicを適用したので紹介したいと思います。 Go x gRPCなアプリケーシ…

戦術的DDDをGoで実現する【entity編】

概要 こんにちは。サーバーサイドエンジニアの窪田です。 最近入社して、初めてGoを業務で使うことになりました。 ヤプリではDDDでサーバーサイドの設計を行なっています。 これまで、Nest.jsというTypeScript製のフレームワークでDDD設計をしてきた経験があ…

CloudFront署名付きURLを用いたS3コンテンツの配信をGoで実装する

サーバーサイドエンジニアの森谷です。 画像ファイルなどS3に置いてあるコンテンツの配信の仕方として、S3バケットは非公開にしておきつつも許可されたユーザーに対しては署名付きURLを用いて限定的なアクセスを許可する方法がよく用いられているかと思いま…

Goのnet/httpパッケージを理解する

Go

はじめに こんにちは、サーバーサイドエンジニアの喜田です。 Goにはnet/httpというHTTP クライアントとサーバーの実装を提供してくれるパッケージがあります。 普段の開発でnet/httpパッケージを使っているのですがGoの経験がまだ浅いということもあり、仕…

Go Conference 2022 SpringでPHPからGoへの移行について発表しました

Go

サーバーサイドエンジニアの森谷です。 Go Conference 2022 Springに"Go"ldスポンサーとして登壇してきましたので、その後日談記事になります! 登壇内容 「創業以来のPHPシステムが生み出した混沌をGoへの移行で乗り越えた話」について発表しました。 gocon…

Go Conference 2022 Springに"Go"ldスポンサーとして協賛・登壇します!

Go

サーバーサイドエンジニアの森谷です。 もうすぐGo Conference 2022 Springが始まりますね。 前回とはまた打って変わったセッションが並んでおり非常に楽しみです! gocon.jp ヤプリはGo Conference 2022 Springに"Go"ldスポンサーとして協賛しています!! …

Goのsqlxパッケージを理解する

Go

サーバーサイドエンジニアの森谷です。 前回の記事に続いて、今回はsqlxパッケージについて見ていこうと思います。 簡単なおさらい 前回はdriverパッケージとsqlパッケージを読みました。 driver.Driver インターフェースを満たす型を実装し sql.Register で…

Goのsqlパッケージを理解する

Go

サーバーサイドエンジニアの森谷です。 弊社ではDBの一部にSQLiteを使っており、SQLiteからのSELECT結果を構造体にパースする部分の処理について調べごとをしていたのですが、その中で「SELECT結果をモックできたら楽に手元で色々確認できないかな」という疑…

PHPのちょっとした静的解析をGo+GitHub Actionsで実施するようにしてみた

こんにちは、エンジニアの尾宇江です。 goでプルリク作ってリリース作業を改善してみた。のエントリーに引き続き、Goを使ったちょっとした改善をした話です。 最初に 書いたコードをcommitした後、「あープリントデバッグで仕込んでたvar_dump消し忘れた」っ…

goでプルリク作ってリリース作業を改善してみた。

Go

こんにちわ、エンジニアの山田です。 2022年始まって1ヶ月ですが、これだけWeb3がもてはやされると、自分もヤマダ2ぐらいにはならないとヤバいのではという危機感を覚えますね。 これだけWeb3がもてはやされると、自分もツノダ2ぐらいにはならないとヤバいの…

gRPC-Gateway v2へのアップグレードで対応したこと

サーバーサイドエンジニアの田実です! YappliではネイティブアプリのAPIでgRPC-Gatewayを使って実装しています。 今回は、gRPC-Gatewayをv1からv2にアップグレードしたときに対応したことを紹介します! マイグレーションガイドはこちら↓ github.com 1. Go…

json.Unmarshalでmap[string]interface{}型にパースするときの注意点

Go

サーバーサイドエンジニアの田実です! 今回はGoの json.Unmarshal 関数で map[string]interface{} の型を指定したときに発生していた事象とその対策を併せて紹介します! なにが起きていたか 以下のように任意のキー、バリューを含むJSON文字列を map[strin…

GoでS3 Batch Operationsを用いたS3間大量コピーを実現する

サーバーサイドエンジニアの森谷です。 業務の中でS3からS3への大量オブジェクトコピーを行う必要が生じたのですが、これが思いの外簡単には実現できず、またGoから利用している記事もあまりなかったため今回はその実装などについて備忘録的にまとめようと思…

新卒で入社してから読んでみた本を並べてみた。

こんにちは。はじめましての方ははじめまして。 サーバーサイドエンジニアの加納です。 もういくつ寝ると、お正月~♬ と歌ってもいいような時期で、早い人は来週末から年末年始のお休みに入る方もいらっしゃるのではないでしょうか? 昨今の状況だと、お休み…

PHPからGoを呼び出す方法

サーバーサイドエンジニアの田実です! ヤプリではPHPとGoを使っています。ということで(?)、PHPからGoを呼び出す方法について紹介します。 なおこの記事はGoからPHPを呼び出す方法の姉妹投稿(?)となっております。 ※この記事は PHP Advent Calendar 2…

GoからPHPを呼び出す方法

サーバーサイドエンジニアの田実です! ヤプリではGoとPHPを使っています。ということで(?)、GoからPHPを呼び出す方法について紹介します。 なおこの記事はPHPからGoを呼び出す方法の姉妹投稿(?)となっております。 ※この記事は Go Advent Calendar 20…

Go標準パッケージのコードリーディング会でチームが強くなった話

サーバーサイドエンジニアの森谷です。 ヤプリではtenntennさんに技術顧問を務めていただいており、tenntennさん同席の元に隔週ペースでGoの社内勉強会を行なっています。 news.yappli.co.jp tenntennさん主導のレクチャーから業務コードの実装相談・モブプ…

Go Conference 2021 Autumnで個人的に気になった発表まとめ

Go

サーバーサイドエンジニアの森谷です。 11/13 にGo Conference 2021 Autumnが開催されました。 ヤプリもSiliverスポンサーとして参加していたのですが、みなさんもうご覧になりましたか? 今回は個人的に気になったセッションをまとめてみたので、もしまだ視…

ファイルの埋め込みをstatikからgo:embedに置き換えた

Go

サーバーサイドエンジニアの田実です! Yappliではメールテンプレートや多言語化の設定ファイルをGoに埋め込んで使うためにstatikを使っていました。Go 1.16から導入されたgo:embedによってビルド時にファイルコンテンツを埋め込めるようになったので、stati…

Goで異なる構造体を1つのsliceで扱う

Go

サーバーサイドエンジニアの森谷です。 先日、開発中に面白い実装を見つけたため小ネタとしてご紹介します。 例として駐輪場に駐められている自転車とバイクを管理するsliceを考えます。 以下の構造体を定義したとして、これらを1つのsliceで扱いたいとした…

Goで多言語化を実装してみた

Go

サーバーサイドエンジニアの田実です! Yappliでは多言語に対応したアプリを公開できます。 ネイティブ向けのAPIでは一部Go言語を使っており、エラーメッセージなどの多言語化の機構が実装されています。 本記事では、Goで多言語化を実装する方法を紹介した…

Copyright © 2021 Yappli, Inc. All rights reserved