Pepabo Tech Portal
https://tech.pepabo.com/
GMOペパボのエンジニア・デザイナーによる技術情報のポータルサイト
フィード

【非公式】きのこカンファレンス in 関西に参加&登壇しました!
Pepabo Tech Portal
はじめにminne事業部プロダクト開発チームのtossy&fumyです。2025年7月26日に株式会社マネーフォワード様の京都支社にて開催された 「【非公式】きのこカンファレンス in 関西」 に参加&登壇をしてきました!「【非公式】きのこカンファレンス in 関西」とは?「【非公式】きのこカンファレンス in 関西」は、「エンジニアがこの先生きのこるためのカンファレンス」をテーマに開催されるITカンファレンスです。参加者が自身のキャリアやロードマップを見つめ直し、未来を描くヒントを得ることを目的としています。現役エンジニアはもちろんのこと、デザイナーやマネージャーといった周辺職種の方、エンジニアを目指す学生など、幅広い層が対象です。年齢を問わず、キャリアのヒントや働き方、ライフステージとの向き合い方、そしてエンジニアとしての生存戦略について深く考える機会を提供しています。【非公式】きのこカンファレンス in 関西※【非公式】となっているのは、きのこカンファレンスの運営メンバーの方々に相談をし、名前を貸していただいた別イベントのためです。登壇内容: 会場にあったのは「エンジニア一人ひとりの人生の縮図」「【非公式】きのこカンファレンス in 関西」の登壇内容は、まさにエンジニア一人ひとりの人生の縮図を見ているようでした。それぞれの発表から、各自の個性や深い洞察が感じられ、とても多くの学びがありました。登壇者の皆さんそれぞれのプロフィールや技術的バックグラウンドが個性的で、まさにエンジニアの「生き様」を感じました。単なる方法論や技術的な解説だけでなく、そこに至るまでのキャリアの選択、困難にどう向き合ってきたかなど、深い知見や示唆に富む内容ばかりで、深く共感する場面が多々ありました。特に印象的だったのは、「率直な議論」や「現場の生の声」 といった、現地でしか聞けない「リアリティーに溢れる生きた情報」が聞けたことです。これはオンライン開催では味わえない、オフラインイベントならではの醍醐味だと感じました。また、休憩時間がこまめに設けられていたのも、このカンファレンスの嬉しい点でした。おかげで、参加者同士での交流や意見交換、情報交換をする機会が非常に多く、新たな繋がりも生まれました。また、会場全体が笑いや驚きの感情に満ち溢れていたのがとても印象的でした。この経験や知見は、今後の
18日前

Debezium ServerによるCDCログの抽出状態をOpenTelemetryで可観測にする
Pepabo Tech Portal
こんにちは技術部データ基盤チームの染矢です。日本では暑さが本格的になってきましたね。最近の私はアイスの実が主食になりました。この記事では、Debezium Serverによる変更データキャプチャ(CDC)ログの抽出の状態を観測可能にした技術について紹介します。この記事で書くことJVM環境におけるOpenTelemetryについてDebezium Server内部で実装されている計装についてOTel CollectorからAmazon CloudWatchにテレメトリを送信する方法についてこの記事で書かないことDebezium Server、OpenTelemetry、Amazon CloudWatch自体の説明背景ペパボのCDCペパボでは、ニアリアルタイムなデータ分析を目的に、各サービスのデータベースに対してCDCを実施しています。ペパボではCDCを実現する手段としてOSSのDebezium Serverを使用しています。Debezium ServerによるChange Data Captureの事例紹介をお読みください。Debezium ServerはECS on EC2でホストされています。CDCログの送信先はCloud Pub/Sub Topicです。課題 - データ反映遅延さて、「ニアリアルタイム」と謳っている以上、そのデータ鮮度は維持したい指標です。以前、なぜかわからないけどCDCログの処理が遅延したことがありました。経路全体を見てDebezium Serverがボトルネックであると判断した後、さまざまなパラメータをいじっているうちになぜかわからないけど直りました。Debezium Serverコンポーネント内での原因切り分けが難しいと、それだけデータ反映遅延の復旧が難しくなります。そこで、集められるテレメトリーを集めて探索可能にする仕組みの整備を決定しました。テレメトリーの収集今回のDebezium Serverのテレメトリー収集には、次の技術を使いました。計装と出力はOpenTelemetryのJava Agentにさせます。間にOTel Collectorを立たせます。最終的にCloudWatchに保存し、CloudWatch上でクエリできるようにします。それぞれ詳しく説明していきます。Java AgentOpenTelemetry用のJava Ag
18日前

Data & Analytics 井戸端会議 #03 に登壇しました
Pepabo Tech Portal
技術部データ基盤チームの zaimy です。2025年7月11日に開催されたData & Analytics 井戸端会議 #03 「データアナリストから見たデータ基盤」に登壇しました。「井戸端会議」という名前の通り、発表者と参加者の議論を通じてデータ基盤に関わる知見を共有し合うイベントで、30名の定員に対して44名の申し込みがあるなど、多くの関心を集めるイベントとなりました。イベントについてData & Analytics 井戸端会議は、データエンジニア、MLエンジニア、データアナリスト、アナリティクスエンジニアなど、データ基盤に関わる職種の方々が集まるイベントです。今回のテーマは「データアナリストから見たデータ基盤」でした。LINEヤフー、メルカリ、GMOペパボに所属する3名によるライトニングトークが行われ、発表後の「Ask the Speaker」セッションや懇親会を通じて、参加者同士の活発な交流が行われました。『ビジネス職が分析も担う事業部制組織でのデータ活用の仕組みづくり』私からは「ビジネス職が分析も担う事業部制組織でのデータ活用の仕組みづくり」というタイトルで発表しました。発表の背景ペパボでは、従来の「データプラットフォーム」としてのデータ基盤から「データプラットフォームサービス」への転換を図り、事業部制組織におけるデータ活用の課題に取り組んできました。特に、ビジネス部門が深いドメイン知識を持ちながらもデータ分析に集中できていないという課題や、データ利用者のデータに対するオーナーシップや継続活用の問題に直面していました。具体的な取り組み発表では、以下の取り組みについて詳しくお話ししました。1. Team Topologies の導入チームタイプとインタラクションモードの明確化2. ELT(Extract, Load, Transform)モデルをベースにした責任境界の明確化データエンジニアリングチームとビジネスチーム間の役割分担各チームが得意領域に集中できる体制の構築3. データの Transform 層のフレームワーク化ビジネスチームが扱いやすいデータ変換ツールの整備セルフサービス分析の推進4. ビジネス職の基盤チーム加入によるサポート強化ビジネス観点とテクノロジー観点の融合意思決定プロセスの効率化取り組みの成果これらの取り組みを通じて、以下のような成果
1ヶ月前

入社15営業日でVibe Codingを使って決済機能を改修した話
Pepabo Tech Portal
この記事の担当 @penpeen214224こんにちは! 2025年6月1日にGMOペパボに入社した Ikechi です。Agentic AI/Vibe Coding を駆使して、入社15営業日で、minneのクーポン割引額上限機能をリリースした話をします。入社早々、決済処理に変更を加えることに不安がありましたが、Vibe Codingを通じて、ドメイン知識を習得しながらリリースを実現することができました。リリースまでの道のりとVibe Codingによる開発の中で得られた知見を共有しようと思います。Vibe Codingとは?Vibe Codingは、「完全に雰囲気に身を任せて、コードの詳細に気を払わず、自然言語だけで指示をしてコーディングする」コーディングスタイルです。このスタイルは、OpenAIの共同創設者であり、TeslaのAIディレクターとしての経験があるAndrej Karpathy氏が2025年2月に提唱したものです。There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper…— Andrej Karpathy (@karpathy) February 2, 2025GMOペパボでは2025年新卒研修でも 「Vibe Coding」研修を実施しています。日本初!?「Vibe Coding研修」を2025年新卒研修の目玉として実施しますminne についてminne は GMOペパボが運営している 「ハンドメイド作品の売買ができる国内最大のハンドメイドマーケットプレイス」 です。2013年にローンチされ、私がこれまで経験したRailsプロジェクトよりもかなり大きい規模のプロダクトです。$ bin/rails stats+---------------------
1ヶ月前

PHPカンファレンス2025に登壇 & 実行委員として参加しました
Pepabo Tech Portal
こんにちは!GMO ペパボのグループ会社である GMO クリエイターズネットワークのよしだです。2025/06/28開催のPHPカンファレンス2025に登壇 & 実行委員として参加してきました!登壇についてMySQL5.6から8.4へ 戦いの記録当日は下記の流れで説明しました。システム構成方針先行対応アップグレード当日まとめ本件で一番苦労した点として、既に保存されている「ゼロ日付」への対応がありました。ゼロ日付をnullにすることで、Goのコードの修正、テーブル定義の修正、既存のデータのUPDATE、Redashのクエリ修正に対応する必要があります。数も多く、大半の労力をゼロ日付に捧げました。既に保存されているデータは意外と盲点ですが、注意深く対応しなければなりません。もしMySQL5.6から8.4へアップグレードする方がいれば参考にしていただけると幸いです。実行委員について実は数年前からPHPカンファレンスの当日スタッフや実行委員をやらせていただいてます。今回は、実行委員として参加したため、開催の数ヶ月前から準備を行っていました。実行委員が主にやることとしては下記の通りとなります。会場手配・設営準備スポンサー募集スピーカー募集プログラム作成当日スタッフ募集広報備品発注上記の作業を各担当ごとに割り当てて、進めていくことになります。事前準備今回、私は「スピーカー担当」であったため、メインの作業はスピーカー確定後からになります。スピーカーの採択確認やTシャツのサイズ確認、各種案内メールの作成と送信などを行っていきます。また、当日のスピーカー受付用の管理表の作成や、当日スタッフ向けのマニュアル作成、シフトの作成なども行います。中でも、スピーカー受付用の管理表は、スピーカーの特徴などを収集しつつ、当日の不測の事態に備えてスピーカーへコンタクトが取りやすいように作成する必要があります。良かった点として、去年までは、スピーカーの名前の読み方を当日の受付の際に伺っていましたが、今回は事前にTシャツのサイズと共に集められました。来年はセッションタイトルの読み方も事前に集めることで、当日の負担を減らせると良いなと思います。前日作業前日は実行委員や当日スタッフの中から参加できる方々で、会場の 大田区産業プラザPiO で設営を行います。登壇ステージやスポンサーブースの設営と、来場者配布物
1ヶ月前

段階的なコンテナプラットフォーム移設の実践手法を紹介します
Pepabo Tech Portal
こんにちは。技術部技術基盤グループのshibatchです。プラットフォームエンジニアとして、主にSUZURIやminne、カラーミーといった複数プロダクトをより良くするおしごとをしています。ちょうど1年前、私は なぜSUZURIはHerokuから「EKS」へ移設する決定をしたのか という記事を執筆しました。これはHerokuコンテナを移設するにあたり、Amazon EKSにするのかAmazon ECSにするのかを悩みに悩んで判断した事例が、どなたかのお役に立てればと考えてのことでした。実はこの記事が出た直後くらいには移設は完了しています。遅れに遅れたのですが、さすがにそろそろ…と思い移設の詳細についてご紹介します。移設の手法EKSといいますか、AWSのVPCへ移設することにしたのは、以前の記事で紹介した通り、明確に移設のリスクが低い手法を採れるからです。実はHerokuはAWSのVPCの上で構成されており、Enterprise版だと専用環境(Private Space)を構築できます。まさにSUZURIはそのような使い方をしているのですが、この場合はVPC Peeringを通じて自身で構築したVPCと疎通することができるのです。つまり、実質AWSの別のネットワークからペパボ(SUZURI)のネットワークに動かすイメージで移設を行えることを意味しています。これを順に説明していきますね。移設前の構成まずはじめの状態です。Herokuは以下で構成していました:Dynoと呼ばれるコンテナRedis(アドオン)PostgreSQLデータベース(アドオン)Schedulerと呼ばれるジョブ(アドオン)先ほど言った通り、これらは運用する上ではほぼ意識はしませんが AWSのVPC、東京リージョンで使っていました。移設の8つのステップ1. ネットワーク設計まずは移設先のVPCを新しく作成しました。VPCは/16 で作成し、サブネットは以下の通りに分けました。Kubernetes専用ではなく、将来にわたって使っていくことを見越したVPCになります:Global IPをつけることができるPublic Subnet (/24) を各リージョン1つずつ、計3つ分RedisやDatabaseを移設する予定のPrivate Subnet (/22)を各リージョン1つずつ、計3つ分Kubernet
1ヶ月前

Vue.jsとViteを活用したフロントエンドアプリケーションの漸進的な改善
Pepabo Tech Portal
快適なショップ運営体験を目指して、カラーミーショップ上での商いを支援する「管理画面」のユーザー体験の改善を続けています。このアプリケーションを長期間運用していく中で、開発体験に関する以下のような問題が出てきました。DOM APIを直接利用した手続き的なUIの実装により、管理する状態が複雑になるにつれてコードの見通しが悪くなる適切にモジュール化されていないスクリプトによるテスタブルではない実装ユーザー体験の向上のために多機能なUIを提供しつづけるためには、これらの課題も同時に解決する必要がありました。管理画面はショップ運営において重要なWebアプリケーションであることから開発頻度も高く、日々機能が追加されていきます。また、注文の処理や顧客管理、ECサイトのエディタなど、提供している機能も多岐に渡ります。このため、ショップ運営や他の開発プロジェクトに影響を与えないように、徐々に、かつ継続的に取り組みを広げていくことが重要となります。Nuxtをはじめとしたフロントエンドフレームワークベースのアプリケーションサーバに機能を移行すれば、統合されたフロントエンド開発環境を手にいれることができ、かつSSRをはじめとした機能によって快適なユーザー体験を提供できますが、作業量の観点から、現時点では全面的に移行する作戦を取ることは困難でした。この前提のもとに、Vue.jsを活用し、様々な工夫によりフロントエンド関連技術を徐々に導入しているので、その事例を紹介します。Vueコンポーネントをカスタム要素ライブラリ化して利用するVueコンポーネントは defineCustomElement() APIを介することで、Web Componentsにおけるカスタム要素として利用することができます。HTML上に直接配置できるようになるメリットのほかに、スタイルやUIに必要なスクリプトをDOMの構造と一緒に配信できるので、UIコンポーネントのポータビリティを高めることができます。以前からこのAPIを活用することで、サーバサイドのテンプレートエンジンで描画するHTMLのあらゆる箇所で、Vueコンポーネントを部分的に利用しています。ショップ運営を支えるプロダクトにフロントエンド開発環境を薄く導入しているカラーミーショップの管理画面のVue 3マイグレーションを行っています加えて、パッケージ構成を工夫する
1ヶ月前

t_wadaさんによる2025年度版TDDワークショップを開催しました
Pepabo Tech Portal
はじめに2025年度に新卒エンジニアとして入社しました、takiです。ペパボでは、2024年に引き続き今年も日本のTest-Driven Development(TDD)の第一人者であるt_wadaさんをお招きしてTDDワークショップを開催しました。今回は午前に講義、午後にワークショップという構成で行われ、午後のワークショップには10名が参加しました。この記事では、午後の部に参加したメンバーから、当日の様子をお届けします。昨年のワークショップについては『t_wadaさんによる2024年度版TDDワークショップを開催しました』をご覧ください。また、なぜTDDワークショップを開催しているのかについては、過去の記事『ふつうの開発と TDD ワークショップ』で詳しく説明しております。はじめにTDD研修 概要 スケジュール午前の部について 事前課題当日の講義午後の部について ワークショップの内容実施内容実践!ペアプログラミングでTDDワークショップに参加した各パートナーの感想 takibqnqSatoMichiyulilyJonnyIkechiinatchidemifumysakipiおわりにTDD研修 概要Corporate Engineering GroupでSaaS運用などITサポートを担当しているinatchiです。今回のワークショップは、事前に「見てわかるテスト駆動開発」の動画でTDDの流れを学び、RSpecを使える環境を整えた上で参加します。ワークショップ当日はTDDの理論と実践を深く学ぶことを目的に、午前と午後の二部構成で実施されました。午前の部では『AIとの協業を支える自動テスト』をテーマに、生成AIがソフトウェア開発にもたらす影響と自動テストの重要性について学び、午後の部では「整数の閉区間」をテーマにした難易度別4種類のTDD実装課題に参加者同士のペアプログラミング形式で取り組み、実際に手を動かしながら実践形式でTDDの流れを体験しました。スケジュール10:00 - 12:00 講義(AIと自動テスト、TDDの理論)+ 質疑応答12:00 - 13:00 昼休み13:00 - 17:00 ペアプログラミング形式によるTDD実装課題午前の部についてminne事業部でモバイルエンジニアをしているfumyと申します。普段はSwiftやKotlinに触れることが多い
2ヶ月前

関西Ruby会議08にyumuが登壇します!
Pepabo Tech Portal
2025年6月28日(土)に開催される関西Ruby会議08に私@yumuが登壇します!発表内容について今回は「分散オブジェクトで遊ぼう!〜dRubyで作るマルチプレイヤー迷路ゲーム〜」というタイトルで発表させていただきます。Ruby専用の分散オブジェクトシステムであるdRubyを使って、ブラウザで遊べるマルチプレイヤー迷路ゲームを作りました!dRubyとWebSocketを組み合わせたリアルタイム通信や、マルチスレッドを使った効率的な処理など、Rubyならではの書きやすさと読みやすさを活かした実装のポイントをご紹介する予定です。たとえば、以下のようなシンプルなコードだけで、複数プレイヤーが同時に遊べるゲームの基盤が作れてしまいます。# サーバー側DRb.start_service('druby://localhost:8787', GameServer.new)# クライアント側game = DRbObject.new_with_uri('druby://localhost:8787')game.join(player_id)登壇への意気込みこのゲームを通してRubyの魅力を再発見し、分散オブジェクトプログラミングの可能性を一緒に体験していただきたいと思っています。普段あまりdRubyに触れる機会はないかもしれませんが、その手軽さと強力さにきっと驚いていただけるはずです。普段は業務で開発した機能等について発表することが多いのですが、今回は自作したゲームについての発表です。いつもと話す内容が異なるので緊張しますが、頑張ります!京都での開催ということで、関西のRubyコミュニティの皆さんとお会いできるのもとても楽しみです。ぜひ会場でお会いしましょう!
2ヶ月前

Cursorと喋るだけで、テスト付きのクエリをゲットできるようにした話
Pepabo Tech Portal
こんにちは!技術部データ基盤チームのmisatonです。本記事では、先日開催した開発合宿にて検証した、BigQuery のデータマートと Cursor Agent を使った信頼性の高い dbt model の生成を紹介します。開発の背景 データ活用現場の課題目指すゴールと開発合宿で行ったこと開発合宿での成果 Cursor の Agent を用いて dbt model を自動生成する仕組みの作成自動生成が可能かどうか検証するためのデータマートの作成開発合宿での成果詳細(機能デモのキャプチャあり) 分析デモ技術的な詳細処理の流れ技術スタック今後の展開まとめ開発の背景データ活用現場の課題ペパボには多数の部門・サービスのデータが蓄積されています。各部門やチームでそれぞれデータが活用される一方で、データの集計・分析をより効率的に行うための課題もあります。たとえば「この商品の売上傾向は?」「ユーザーの行動パターンは?」といったビジネス上の問いに答えるには、以下の要素が必要です。各サービス・ドメインの知識や業務経験に基づいた仮説立案既存データの構造理解やSQLスキル仮説検証から結論導出までの分析プロセスこれらすべての要素を揃えて分析を行うためには相応のリソースが必要となります。結果として、ニーズが生まれてから結果が取得できるまでに時間がかかってしまうケースもありました。そこで私たちは、データを活用したいパートナーがより簡単に、迅速に、安心してデータを扱える仕組みづくりに取り組みました。目指すゴールと開発合宿で行ったこと「データ利用者本人が、自分の知りたいことを、専門知識がなくてもデータで確かめられる環境」を実現するため、「業務で使えるSQLをデータ利用者が自然言語から得られること」をゴールに定めました。その上で、今回の開発合宿では、LLMを活用して実用的なdbt modelを自動生成する仕組みの検証に取り組みました。この仕組みでは、自然言語で質問するだけで、以下の4つの情報が自動で出力されます。出力される内容質問に対する回答を得られる dbt model(クエリとスキーマ定義)テストデータ(dbt data tests の given)テストデータから期待される集計結果(dbt data tests の expect)dbt model から compile されたクエリ特に重要
2ヶ月前

AIを使ったコーディングの変化と並列開発を支えるOSSツールを作った話
Pepabo Tech Portal
こんにちは!はらちゃん(@harachan)です!AIを使ったコーディングが身近になってきた昨今、開発のスタイルも大きく変化してきていますね。今回は、AIを活用した並列開発で生じる問題と、それを解決するために作成したOSSツールについて紹介したいと思います。はじめにAIを使ったコーディングの変化と新しい課題 1. AI agentを複数使用した並列開発の一般化2. AIにコンテキスト情報を効率的に読み込ませる需要解決策:2つのOSSツールの開発 gopose:Docker Composeポート衝突解決ツールgh-discussion:GitHub DiscussionのCLI管理ツールAIでの使用について goposeの場合gh-discussionの場合今後の展望 goposegh-discussionまとめ詳しい紹介記事もあります! 参考リンクはじめにAIエージェントを複数使った並列開発が一般的になってきている中で、さまざまな新しい課題に直面するようになりました。特にDocker ComposeやGitHub Discussionなど、AI時代の開発スタイルに合わせた環境整備が重要になってきています。今回は、実際に開発中に遭遇した問題と、その解決策として作成した2つのOSSツールについてお話ししていきたいと思います。AIを使ったコーディングの変化と新しい課題1. AI agentを複数使用した並列開発の一般化AI agentを複数使って並列で開発を進める手法が一般的になってきました。これにより開発効率は大幅に向上したのですが、同時に新たな問題も発生しています。Docker Composeでのポート衝突問題git worktreeやDockerを使った並列開発において、課題となるポイントの一つがポート衝突です。Docker Composeでホストとのポートバインディングを設定している場合、複数の開発環境を同時に立ち上げようとするとポートが衝突して環境が立たないという問題が発生します。従来の解決法とその課題。例えば、以下のようなdocker-compose.ymlがあったとします:services: web: build: . ports: - "3000:3000"この設定で複数のプロジェクトを同時に開発しようとすると、ポート3000が競合してしまい、2つ目以降の
2ヶ月前