every Tech Blog

株式会社エブリーのTech Blogです。

golang

【ハンズオン】 MCP サーバー作成からリモートにホスティングしてみる

はじめに MCP サーバーとは ハンズオン step 1 step 2 step 3 最後に はじめに こんにちは、@きょーです!普段はデリッシュキッチン開発部のバックエンド中心で業務をしています。 このブログでは簡単な MCP サーバーを作成し、ローカルでの動作確認。そして…

Go言語のガベージコレクションについて学んでみた

はじめに エブリーでデリッシュキッチンの開発をしている本丸です。 1ヶ月前にGo Conference 2025があり色々と面白い発表があったのですが、その中にGo言語のガベージコレクションについての発表がありました。 ガベージコレクションについてやGo言語におけ…

インターンでデリッシュキッチンの新機能開発に取り組みました

1. はじめに こんにちは、everyで1ヶ月間のインターンシップに参加させていただいた宮田です。本記事では、デリッシュキッチンの新機能開発に携わった経験と、そこで得られた学びを紹介します。 現在、デリッシュキッチンの既存仕様に対して、ユーザー体験を…

Goの組み込み関数 len() に詳しくなる

はじめに こんにちは。デリッシュキッチン開発部でバックエンドエンジニアをしている鈴木です。 Go言語の組み込み関数len()は、一見シンプルに配列やスライスなどの「長さ」を返す関数ですが、その実装はコンパイラやランタイムレベルで特別な扱いを受けてい…

AIレビューをきっかけにSQLBoilerの内部構造を調べた話

目次 はじめに SQLBoilerのコード生成フローをおさらい 調査のきっかけになったAIレビュー columnsWithoutDefault が示すもの 実際の挙動を確かめる まとめ — AIレビューとの付き合い方 はじめに こんにちは。開発本部開発1部デリッシュキッチンMS2に所属し…

Go Conference 2025 に Platinum "Go"ld スポンサーとして参加しました!

目次 はじめに セッション・ワークショップ紹介 今日から始めるpprof(ymotongpooさん) Goを使ってTDDを体験しよう!!(chihiroさん) Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する(Takeru Hayasakaさん) 0→1製品の毎週リリース…

echo.Contextはどこからきているのか

私は入社して初めてWebフレームワークのlabstack/echoに触れました。使っていく中で「便利だけどこれどうやって動いているんだろう?」と思うことが増えてきました。 そこを意識しなくていいのがフレームワークの良いところなんだとは思いますが、気になるの…

Go Conference 2025 に Platinum "Go"ld スポンサーとして今年も協賛いたします!

はじめに この度、株式会社エブリーは、2025 年 9 月 27 日(土)、28 日(日)に開催される「Go Conference 2025」に、Platinum "Go"ld スポンサーとして昨年に続き協賛することになりました! Go Conferenceとは? gocon.jp プログラミング言語 ”Go”ユーザーの…

AI と学ぶ Go のスライス/メモリ/パフォーマンス

最近、AI を利用して Go のスライスやメモリ、パフォーマンスに関する内容を学習してみる機会がありました。 今回はその際の体験についてまとめてみたいと思います。

Go 1.25でのtesting/synctestを用いた並行処理テスト

開発2部の内原です。 Go 1.25がリリースされ、並行処理のテストを簡単にするtesting/synctestパッケージが正式に利用可能になりました。1.24では GOEXPERIMENT=synctest フラグが必要でしたが、1.25では不要になりました。 今回は実際にtesting/synctestを使…

プッシュ通知基盤におけるアラートの方針について

はじめに エブリーでヘルシカのサーバーサイドの開発をしている赤川です。 ヘルシカでは、APIサーバーの監視をSentryを用いて行っており、開発中のプッシュ通知基盤にもSentryを導入することになりました。通知基盤が一度に処理するデータ量は、ユーザーの数…

GoのCI/CDを少しでも早くしたい

目次 はじめに 背景 現状の把握 AWS CodeBuild GitHub Actions デッドコード 改善したところ 不要なコード削除 キャッシュの有効活用 Codebuild GitHub Actions まとめ はじめに こんにちは、開発本部開発 1 部トモニテグループのエンジニアの rymiyamoto で…

Goで実装するUnicode文字数カウントが実はわりと難しい的な話

開発2部の内原です。文字コードの話は大好物です。 一般的に、アプリケーションの開発において文字数カウントは非常に身近な機能です。パラメータ取得時やフォーム入力時など、様々な場面で文字数計算を実装する機会があります。 しかし、Unicode文字、特に…

OpenAPI における null 値の表現の仕方

こんにちは、@きょーです!普段はデリッシュキッチン開発部のバックエンド中心で業務をしています。 はじめに OpenAPI で API 仕様書を書く際、null 値を許容するプロパティの表現方法はバージョンによって異なります。たとえば、ユーザープロフィールのメー…

デリッシュキッチンにおけるElasticsearchからOpenSearchへの移行検討

はじめに こんにちは、デリッシュキッチン開発部でソフトウェアエンジニアをしている新谷です。 エブリーの開発部では「挑戦week」という1週間の期間限定チャレンジを定期的に開催しています。これは日常業務から離れて、新しい技術やアイデアに挑戦する取り…

【Golang】 sqlboiler で複雑なリレーションを扱うために頑張った話

こんにちは。 トモニテ開発部ソフトウェアエンジニア兼、CTO室Dev Enableグループの庄司([ktanonymous](https://github.com/ktanonymous))です。 "データベースファースト"な ORM ライブラリの `sqlboiler` を使う中で複雑なリレーションに対して有効に活用…

Go 1.24 の encoding/json の omitzero について

go 1.24 go1.24 golang golang 1.24 golang1.24

SonyflakeでUnique IDentifierを生成しよう

はじめに この記事は every Tech Blog Advent Calendar 2024 の4日目の記事です。 DelishKitchenやヘルシカのバックエンドやらインフラやらをやっているyoshikenです。 今回は弊社でも利用しているUID生成に便利なSonyflakeについて説明していきます。 UIDと…

go1.22 からのテストカバレッジとの付き合い方

はじめに そもそも話題の背景 低下の要因たち 仕様変更に至るまでの経緯 計測方法の見直し テストファイルがあるものだけ抽出する(ホワイトリスト型) 除外したい pkg を名指しする(ブラックリスト型) まとめ はじめに こんにちは、トモニテ開発部ソフトウ…

OPTiMさんとGolangの共同勉強会を開催しました

先日OPTiMさんと共同で開催した勉強会についてご紹介したいと思います。 OPTiMさんとeveryさんからそれぞれのメンバーが登壇し、Golangを利用したプロジェクトでの成功事例や課題克服にまつわるLTが行われました。 以下が当日のタイムスケジュールとなってい…

Go 言語で multipart/form-data を使用して画像を受け取り外部に送信する

この記事は every Tech Blog Advent Calendar 2024(夏) 25 日目の記事です。 はじめに こんにちは、24 新卒として 4 月から入社し、DELISH KITCHEN 開発部でソフトウェアエンジニアをしている新谷です。 現在取り組んでいる業務で、画像を受け取って外部に送…

DELISH KITCHENのユニットテストで使用しているライブラリ

この記事は every Tech Blog Advent Calendar 2024(夏) 7日目の記事です。 はじめに エブリーでソフトウェアエンジニアをしている本丸です。 Go Conference 2024もいよいよ明日開催ですね。 Goに関する話ということでDELISH KITCHENのユニットテストで使用さ…

Go 言語で行うメール解析

この記事は every Tech Blog Advent Calendar 2024(夏) 6 日目の記事です。 目次 はじめに イントロダクション そもそもメールヘッダーとは net/mail パッケージ メールの解析 ヘッダーの取得 Body の取得 net/mail パッケージのメール解析で辛いところ MIME…

ネットスーパーリプレイス〜長大なクエリと向きあう編〜

この記事は every Tech Blog Advent Calendar 2024(夏) 5 日目の記事です。 はじめに こんにちは、TIMELINE 開発部 Service Development をしているほんだです! 初の Go Conference オフライン参戦なので浮かれてる今日この頃です。 今回はスマホ向けネット…

Go 言語の並行処理: ゴルーチンとチャネルの活用法について

はじめに この記事はevery Tech Blog Advent Calendar 2024(夏) 4 日目の記事です。 こんにちは!トモニテで開発を行っている吉田です。 今回はGo 言語の特徴的な機能である並行処理について書いていきます。並行処理を支えるゴルーチン (goroutine) とチャ…

go 言語で cobra と slog を使った CLI ツール開発

この記事は every Tech Blog Advent Calendar 2024(夏) 3 日目の記事です。 はじめに こんにちは、トモニテでバックエンド周りの開発を行っている rymiyamoto です。 最近は学園アイドルのプロデューサー業に追われています。 今回は、Go 言語で CLI ツール…

エブリーは Go Conference 2024 にプラチナGoルドスポンサーとして協賛いたします

はじめに Dev Enableチームの羽馬(@NaokiHaba)です。 この度、エブリーは2024年6月8日(土)に開催される『Go Conference 2024』に、プラチナGoルドスポンサーとして協賛することになりました! gocon.jp エブリーでは、Go言語を積極的に採用し、様々なプロジ…

エブリーで新卒2年目を迎えて

トモニテ開発部ソフトウェアエンジニア兼、CTO室Dev Enableグループの[ktanonymous](https://github.com/ktanonymous)です。 4月1日をもって新卒入社してから1年が経ちました。 そこで、今回の記事では、これまでの振り返りと2年目を迎えた今感じていること…

ネットスーパーアプリ GraphQL から REST へ移行始めました

はじめに こんにちは、retail HUBで Software Engineer をしているほんだです。 今回は私が現在着手している事業譲渡されたアプリを社内で持続的なプロダクト開発を行える状態にするリプレイスプロジェクトをどのように行っているか紹介しようと思います。 …

Go testにおける可読性を保つ方法を考える

はじめに TIMELINE開発部の内原です。 本日はGo言語のテストにおける可読性について考えてみます。この記事を読んでいただいている皆さんにも、テストを書いていて以下のような問題を感じた経験があるのではないでしょうか。 既存のコードに機能追加をするた…