ブックマーク / engineering.mercari.com (11)

  • Goでテストのフィクスチャをいい感じに書く | メルカリエンジニアリング

    Merpay Tech Openness Month 2022の6日目の記事です。 こんにちは、Merpay Credit Design Teamでバックエンドエンジニアをしている@youxkeiです。 テストを書く際、その前提条件としてデータベースの状態をフィクスチャとして準備して、データベースにデータを投入することがよくあります。このフィクスチャはYAMLなどの外部ファイルに書かれることもありますが、この記事ではテストコード上にGoで記述する方法を考えていきます。 この記事では、データベースはリレーショナルデータベースを想定していて、具体例として架空の図書館蔵書管理システムのデータベースを使っています。 素直にモデルを使う 多くの場合、以下のようにデータベースのそれぞれのテーブルに対してモデルが定義されています。 package model import ( "time" ) type

    Goでテストのフィクスチャをいい感じに書く | メルカリエンジニアリング
  • 「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。 メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに7回開催し100人以上の方に参加していただきました。 自社でもGoを基幹技術として使っている背景があり、今後もGoコミュニティへの貢献は継続していきます。しかしながら、新型コロナウイルス感染症の状況を踏まえて直近のGopher道場開催を見合わせています。 Goを学ぶ場を提供することでGoに触れる方を増やしたいと考えている筆者にとっては、 開催できないことが非常に残念です。そこでエキスパートチームでは違う形で学ぶ場を提供できないかと考え、Gopher道場で使用している資料のベースになっている「プログラミング言語Go完全入門」を期間限定で公開することにしました。 bit.ly bit.ly 追記 3/18:PDF

    「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング
    takehirohattori
    takehirohattori 2020/03/17
    5月末まで、今週末も含めて土日が11回。この教材の単元数が11。つまり、毎週末1単元勉強できるってことや!←この意識の高さがいつまでも続きますように。第1単元終了(3月22日)
  • mercari.go #6を開催しました | メルカリエンジニアリング

    はじめに こんにちは、mercari.go オーガナイザーの@morikuniです。 2月25日にメルカリ主催のGo勉強会 mercari.go #6 を開催しました。 今回は、LT形式での発表を取り入れ、いろいろなテーマについて話しました! この記事では、各発表を簡単に紹介しようと思います。 JavaGo言語を比較した話 1つめのLTは @kentan による「JavaGo言語を比較した話」です。 並行処理やオブジェクト指向の考え方の違いなどを紹介しました。 YAMLをテストする 2つめのセッションは @babarot による「YAMLをテストする」です。 Policy as Codeという考え方や、自作のSteinというYAMLのバリデーションを行うことができるツールを紹介しました。 speakerdeck.com sliceのコピーで起きた不思議な話 3つめのセッションは @t-

    mercari.go #6を開催しました | メルカリエンジニアリング
  • Goにおける静的解析のモジュール化について - Mercari Engineering Blog

    Mercari Advent Calendar 2018 の16日目はメルペイ エキスパートチームの@tenntenn お送りします。 この記事では、Goの静的解析の新しいムーブメントであるgolang.org/x/tools/go/analysisを使ったモジュール化について解説したいと思います。 「静的解析は関係ないや」と思って、タイトルを見てブラウザのタブを閉じようと思ったかもしれませんが、ほとんどのGopherには無関係ではないと思いますので、ぐっと我慢してしばらく間お付き合いください。 静的解析のモジュール化とは Goにはgo vetやgolintなど静的解析ツールが多数あります。 静的解析ツールを用いることで、プログラムを実行せずにバグになりうる箇所を検出することができます。 実際に、コードレビューを行う際にCIで静的解析ツールを実行している方も多いかと思います。 Goは標準で

    Goにおける静的解析のモジュール化について - Mercari Engineering Blog
  • Go Conference 2018 Autumnで登壇しました & 発表資料まとめ #golang - Mercari Engineering Blog

    株式会社メルカリBackend Engineerの@yagi5です。 11月25日に開催されたGo Conferenceで、スポンサーセッションとして登壇しました。 レポートを書きたいと思います。 なお、当日は2トラックだったため、筆者が参加していないセッションについては、末尾でスライドのみ紹介します。 また、筆者が資料を見つけられていない発表もいくつかあり、もし資料をご存知の方は@yagi5まで教えてください! Keynote Speaker: Steven Buss github.com GoogleのSteven Buss氏による発表です。(資料) NaCl → gVisorへの移行についてや、ptraceを用いたシステムコールのトレース、Google App Engine 2nd genについての、デモを交えながらのセッションでした。 Microservices実装ガイド in G

    Go Conference 2018 Autumnで登壇しました & 発表資料まとめ #golang - Mercari Engineering Blog
  • Gitのステージング領域の正体を探る | メルカリエンジニアリング

    ソフトウェアエンジニアの @DQNEO です。こんにちは。 Gitの内部構造を深掘りするシリーズ3回目です。 前回までのお話はこちら Gitのつくりかた – Mercari Engineering Blog Gitのコミットハッシュ値は何を元にどうやって生成されているのか – Mercari Engineering Blog 今日はみんなだいすき「ステージング領域」の中身について解説してみます。 ステージング領域とは何か? 簡単に説明すると「次にコミットしたときにコンテンツとして登録されるもの」リストです。(別名「インデックス」ともいいます。) このリストは、 git addやgit rmしたときに書き換わります。 (古くはcacheと呼ばれていました。内部実装やgit diff --cachedに今もその名残があります。) git addのマニュアルに説明があります。 Git – git

    Gitのステージング領域の正体を探る | メルカリエンジニアリング
  • Go Fridayこぼれ話:非公開(unexported)な機能を使ったテスト #golang | メルカリエンジニアリング

    はじめに メルペイ エキスパートチームのtenntennです。 メルカリグループでは、毎週金曜日にGo Fridayという社内勉強会を開催しています。 毎週やっているとそれなりに知見が溜まってくるので、定期的に”こぼれ話”としてブログを書こうという話になりました。 今回の記事では、先日のGo Fridayで話題にあがった非公開な機能を使ったテストについて扱いたいと思います。 なお、Goにおけるテストの手法やテストしやすいコードの書き方については、GopherCon 2017でも発表があったmitchellhさんの”Advanced Testing with Go”(スライド/動画)が参考になります。テーブル駆動テストやテストヘルパーなど非常に勉強になるので、まだ見たことのない方はぜひスライドや動画をご覧ください。 TL;DR Goのテストではテスト対象とテストコードを別パッケージにできる

    Go Fridayこぼれ話:非公開(unexported)な機能を使ったテスト #golang | メルカリエンジニアリング
  • QAのためのChatOps!テストデータを作成するSlackコマンドを作ってみた | メルカリエンジニアリング

    こんにちは。メルカリのテスト自動化エンジニアとして、スマホアプリのテスト自動化をぶりぶりしている@daipresentsです。 ChatOpsが運用の効率化として誕生したのであれば、それはソフトウェア開発に関連するどんな手作業にでも適用できそう。そう思いついたので、Slackから簡単にテストデータを作れるSlack Commandを作ってみました。QAエンジニア、テストエンジニアにモテそう。 なぜChatOpsなのか 僕は今、スマホアプリのテスト自動化のお仕事をしていて、テストエンジニアと働いています。彼らは僕のユーザーでもあります。 そのなかで、どのあたりから自動化していくとハッピーかをヒアリングしたところ、一番人気がリグレッションテスト。まぁ、そりゃそうだ。それ以外だと「日々のテストデータ作成」という意見が多く出てきました。 たしかに、ユニットテストレベルであれば、プログラムで簡単に実

    QAのためのChatOps!テストデータを作成するSlackコマンドを作ってみた | メルカリエンジニアリング
  • Gitのコミットハッシュ値は何を元にどうやって生成されているのか | メルカリエンジニアリング

    こんにちは。サーバサイドエンジニアの @DQNEO です。 前回の「Gitのつくりかた」に続いてGitのコアな部分のお話です。 Gitのコミットハッシュ値とは何か Gitを使っていると必ずコミットハッシュ値というものが出てきます。9e47c22みたいなアレです。 これはある特定のコミットを指し示すIDとして使うことができます。 では質問です。 このコミットハッシュ値は「何を元に」「どうやって」計算されているでしょうか? 「ある特定のコミット」とはそもそも何なのか この問題を考える前に、まず「コミットとは何か」を明らかにしておきましょう。 コミットというと「コミットする行為」すなわち「動作」のことを想像するかもしれません。 しかしGitの内部構造的観点から言うと、Gitが管理記録しているのはコミット行為の結果生成されたデータの方です。 この「コミットによって生成されたデータ」のことを「コミッ

    Gitのコミットハッシュ値は何を元にどうやって生成されているのか | メルカリエンジニアリング
  • Gitのつくりかた | メルカリエンジニアリング

    はじめまして。サーバサイドエンジニアの @DQNEO です。 今日はGitのつくりかたをご紹介します。 C言語学習教材としてのGit Gitと同じものをゼロから作って何の意味があるのか?と思いますよね。 私がこの再発明をやり始めた動機は「C言語を書けるようになりたい」でした。 実際に途中までやってみたところ、 C言語がチョットデキるようになった Gitの内部構造に詳しくなった というメリットが得られました。 C言語を勉強する題材は、テトリスとかWebサーバとか他にいくらでもあるのですが、Gitを実装してみるのはかなりおすすめです。理由は下記の通りです。 内部構造が意外と単純 (ローカルで動かす分には)ネットワークの知識が不要 普段使っているツールで外部仕様がわかっているので、やるべきことが明確 余談ですが、家Gitのソースコードを参考にしようと思って読んでいたら、Linus Tovals

    Gitのつくりかた | メルカリエンジニアリング
  • Androidクライアントアプリのデバッグ機能

    こんにちは, Androidチームの @tomoaki_imai です。 先日 shibuya.apk というAndroid勉強会で メルカリのデバッグ機能についてお話をさせていただきました。スライドはこちらです。 www.slideshare.net 要点としては以下2点となります。 デバッグ機能はモジュール化して管理し、productionのコードに入れないようにする メルカリではクライアントのデバッグ設定画面以外にデバッグメニューもあるが、メニュー表示はUIに影響を及ぼすので、ビジビリティをデバッグ機能上で制御できるようにする 今回は発表ではほとんど話さなかった、メルカリのAndroidで実装しているデバッグ機能そのものについてもう少し触れたいと思います。 そもそもデバッグ機能とは このデバッグ機能は開発者が効率よく開発を進めるためにDEV版のみに追加しているものです。 例えば サー

    Androidクライアントアプリのデバッグ機能
  • 1