タグ

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

  • 社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2023 の4日目の記事です。 こんにちは。メルコインのバックエンドエンジニアの@goroです。 はじめに このGitHub Actionsのセキュリティガイドラインは、社内でGithub Actionsの利用に先駆け、社内有志によって検討されました。「GitHub Actionsを使うにあたりどういった点に留意すれば最低限の安全性を確保できるか学習してもらいたい」「定期的にドキュメントを見返してもらい自分たちのリポジトリーが安全な状態になっているか点検する際に役立ててもらいたい」という思いに基づいて作成されています。 今回はそんなガイドラインの一部を、社外の方々にも役立つと思い公開することにしました。 ガイドラインにおける目標 このガイドラインは事前に2段階の目標を設定して作成されています。まず第1に「常に達成したいこと

    社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング
    gfx
    gfx 2023/06/09
    おーーすばらしいドキュメントだ。 / "信用できないPRが作成される時点で、大きな問題となるため、これを防ぐべきである" / まあこれなんだよな。
  • Rust製TypeScriptコンパイラstcの現状と今後 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2023 の2日目の記事です。 メルペイFrontendエンジニアの@togami2864です。普段はPartner Platformというチームで加盟店申込みフォームや審査・管理を行うためのMerchant Supportツールの開発・運用を担当しています。 記事ではRustTypeScriptコンパイラであるstcについて筆者の観測範囲での概要、開発状況、課題等を紹介します。なお、内容は全て2023年5月時点のものです。また、記事の一部は Node学園 41時限目 書籍について で発表したものと重複していることをご了承ください。 概要 stcは2022年10月にオープンソース化されたRust製のTypeScriptコンパイラです。 https://github.com/dudykr/stc 製作者はRust製のトラ

    Rust製TypeScriptコンパイラstcの現状と今後 | メルカリエンジニアリング
    gfx
    gfx 2023/06/08
    おお、そこそこちゃんと動くのか。すごいな。
  • メルカリにおけるCDN利用の現在とこれから | メルカリエンジニアリング

    こんにちは。メルカリ ネットワークチームの@kanemaruです。 メルカリのネットワークチームは、パブリッククラウドのネットワークをはじめとした様々なレイヤに関するコンポーネントの設計・開発・運用を担当しています (参考記事1, 2)。そうしたコンポーネントのうちのひとつが、Content Delivery Network (CDN)です。 メルカリは他の多くのウェブサービスと同様に、CDNを利用しています。現時点ではコンテンツのキャッシュやセキュリティの担保といった、基的ながら重要な機能に重点を置いて利用していますが、そうした中で見えてきた運用上の課題もあります。この記事では、メルカリにおけるCDNの現在の状況と最近の取り組みを振り返りながら、今後の展望についてご紹介します。 なぜCDNを使うのか? CDNの分野では、コンテンツのキャッシュ機能をはじめとした多彩な機能を様々なプロバイ

    メルカリにおけるCDN利用の現在とこれから | メルカリエンジニアリング
    gfx
    gfx 2023/03/22
  • GraphQL Client Architecture Recommendation 社外版 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2022 の15日目の記事です。 こんにちは。メルペイのvvakameです。 最近、社内向けにGraphQL Client Architecture Recommendationというドキュメントを書きました。社内のiOS/Android、そしてバックエンドのエンジニア向けにGraphQLをやるならこの辺りの条件を満たしておかないと恩恵を感じられなくなっちゃうかもよ、と伝えるためのものです。嬉しいことに、今までに100名弱の人たちがこのドキュメントを閲覧してくれたようです。 これをAdvent Calendarで公開するために、ちょっと調整したものがこの社外版です。 すでにGraphQLをやっているけどあまり便利じゃないな…なんでだろ?とか、これから導入したいんだけど何を気をつけるべきかな…と考える時の材料にしてください。 併せて、

    GraphQL Client Architecture Recommendation 社外版 | メルカリエンジニアリング
    gfx
    gfx 2022/12/15
    "すでにGraphQLをやっているけどあまり便利じゃないな…なんでだろ?とか、これから導入したいんだけど何を気をつけるべきかな…と考える時の材料にしてください"
  • GraphQLを導入する時に考えておいたほうが良いこと | メルカリエンジニアリング

    はじめに こんにちは、ソウゾウSoftware Engineerの@sue71です。連載:メルカリShops 開発の裏側 Vol.2の13日目を担当させていただきます。 以前メルカリメルカリShopsの技術スタックと、その選定理由でBFFの実装にGraphQLを採用していることをお伝えしました。メルカリShopsをリリースしてから約半年たった今、これまでを振り返ってGraphQLサーバーを実装する上での課題やあらかじめ考えておくと良い項目をまとめてみました。また、記事ではメルカリShopsでGraphQLの実装としてApolloを採用しているため、Apolloの利用が前提の話もいくつか混在しています。予めご容赦ください。 GraphQLの説明や、メルカリShopsの実装方法に関しては以前こちらの記事で紹介しています。こちらも是非ご覧ください。 パフォーマンス課題 GraphQLは、アプリ

    GraphQLを導入する時に考えておいたほうが良いこと | メルカリエンジニアリング
    gfx
    gfx 2022/03/03
  • メルカリShops の CI/CD と Pull Request 環境 | メルカリエンジニアリング

    こんにちは!ソウゾウの Software Engineer の @dragon3 です。 連載:「メルカリShops」プレオープンまでの開発の裏側の8日目を担当させていただきます。 この記事では、メルカリShops 開発において、日々バリバリに利用されている CI/CD 環境と Pull Request 毎のデプロイ環境について紹介します。 CI/CD 環境 メルカリShops では、CI/CD (テスト・ビルド・デプロイ)やその他自動化のために GitHub Actions を使っており、ほとんどのワークフロー・ジョブを Self-hosted runners で実行しています。 Self-hosted runners は、専用の VPC ネットワーク 内の GCE インスタンス上で動かしており、Managed Instance Group 等を使い、そのプロビジョニングや起動・停止等は

    メルカリShops の CI/CD と Pull Request 環境 | メルカリエンジニアリング
    gfx
    gfx 2021/08/17
    “Self-hosted runners を GCE インスタンス上で動かし、ビルドキャッシュを意図的にその GCE インスタンス上に残しておく戦略をとっています”
  • Webサービス上の画像変換とWebPの利用について | メルカリエンジニアリング

    Mercari Advent Calendar 2020の14日目は、Developer Productivity EngineeringのNetworkチーム所属の@catatsuyがお送りします。 今回のエントリーでは画像変換とGoogle社が開発した画像フォーマットであるWebPに関して紹介します。 適切なサムネイル画像のサイズと画質 現在ではiPhoneのRetinaディスプレイのように、実際に画面に表示されるサイズよりも大きなサイズの画像を要求する端末が一般的になりました。 現在のスマートフォンでは画面に表示されるサイズの2倍以上のサイズ(端末によっては3倍に対応しているものもある)の画像を用意しなければ綺麗に表示されません。サムネイル画像の綺麗さはUXに直結しますし、サービスによっては画像の綺麗さがクリック率や売り上げに貢献するケースもあるでしょう。 しかし大きなサイズの画像を

    Webサービス上の画像変換とWebPの利用について | メルカリエンジニアリング
    gfx
    gfx 2020/12/14
  • 料率計算における小数点数の扱いについて | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の3日目です。 メルペイでバックエンドエンジニアをしている iwata です。 メルペイスマート払いの開発をしている Credit Design というチームに所属しています。 私は2019年の入社以来、「メルペイスマート払い(定額払い)」(以下、定額払い)の開発を担当しており、今年の7月にようやくリリースすることができました。 この定額払いの手数料計算のために、「1万分の1を1とする単位」であるベーシスポイントを扱うGo言語のパッケージ go.mercari.io/go-bps を作成しました。 ちょうど1年前に、 mercari.go #12 で「料率計算における小数の扱いについて」として発表しましたが、当時はオープンソースとして公開していませんでした。 今回オープンソースとして公開しましたので、改めてパッケージを紹介します。 料

    料率計算における小数点数の扱いについて | メルカリエンジニアリング
    gfx
    gfx 2020/12/03
  • PythonとType Hintsで書くバックエンド | メルカリエンジニアリング

    こんにちは、AIチーム所属の@shidoです。CRE (Customer Reliability Engineering) 領域でMLを扱っています。 みなさんはPython番コードを書くことについてどうお考えでしょうか。「研究/分析以外には使いたくない」「遅い」「動的型付け言語を番用に使いたくない」といった声が聞こえてきそうです。 しかしながら機械学習サービス(または機械学習サービスのためのサービスなど)を作りたい場合、「学習に利用したPython用のライブラリを使用したい」「Pythonでやっていた分析と同じことを番環境内でもやりたい」など、Pythonでバックエンドを実装したくなることがあると思います。 この記事ではtype hintsを付けながらPythonを書くことで、GoJavaのようなサーバーサイドでよく使われる言語と可読性や保守性、場合によっては型安全性も同じレベ

    PythonとType Hintsで書くバックエンド | メルカリエンジニアリング
    gfx
    gfx 2020/11/05
  • プロダクトのリリース前から新ダッシュボード「Looker」の導入に踏み切ったわけ | メルカリエンジニアリング

    こんにちは。メルペイのデータアナリストチームです。 メルペイはプロダクトの開発フェーズにあり、リリースに向けて全社で頑張っています。 「プロダクトがないのに、データ分析?」と思う方もいらっしゃるはずなので、メルペイのデータアナリストの業務と、力を入れているダッシュボードツール「Looker」の活用について紹介させて頂きます。 Lookerの公式ページはこちら プロダクトがないフェーズでの仕事 Lookerの話をする前に、まずは私達の状況を簡単に説明します。 分析チームを抱える企業は沢山ありますが、「プロダクトができる前から活動しているケース」は少ないと思います。 そういった意味では、私達のチームは他の会社と比べてユニークなポジションになっています。 一言で言えば「事業を作るための分析」を行っています。 メルペイの事業が成り立つには「良いプロダクト」を作り、「ステークホルダーとの関係」を築き

    プロダクトのリリース前から新ダッシュボード「Looker」の導入に踏み切ったわけ | メルカリエンジニアリング
    gfx
    gfx 2020/08/17
    集計クエリをGitHubにおけるのはよさそうだな〜。チャートの表現力がData Studioよりマシだといいんだが。
  • SwiftのWebAssembly対応の進捗 | メルカリエンジニアリング

    こんにちは、メルペイエキスパートチームインターンの@kateinoigakukunです。 記事では私がインターンの中で開発しているSwift言語のWebAssembly対応について紹介します。 背景 メルペイでは「技術アウトプットするところに技術は集まる」という思いから、 稼働の50%以上を技術コミュニティへの貢献や技術の普及に取り組むエキスパートチームが存在します。 私は主にSwiftコミュニティへの技術的な貢献に注力しています。特に去年の10月頃からSwiftWebAssemblyサポートを進めています。 WebAssemblyはブラウザで実行可能なバイナリ形式として開発されている低級言語です。またブラウザ以外の環境でも実行できるポータブルな形式としても設計されており、活用できる用途は多岐にわたります。 Swift教育の現場でも取り扱われるケースが増えてきており、注目されている

    SwiftのWebAssembly対応の進捗 | メルカリエンジニアリング
    gfx
    gfx 2020/04/09
    やばい。偉業すぎる。
  • アプリを安全にリリースするための取り組み(Release trainとClient release process) | メルカリエンジニアリング

    QAエンジニアの@rinaです。 今回は、メルカリがおこなっているiOSとAndroidのアプリリリース(メルカリではClient releaseと呼んでいます。以下、Client releaseと表示します)を支えるRelease trainという仕組みとプロセスについて紹介します。 Release train導入の目的と背景 メルカリはRelease trainを導入し、Client releaseを月に2回程度おこなっています。 Release trainを導入する前のリリースでは以下の問題を抱えていました。 ある機能の開発が間に合わなかった場合に、すでに決まっていたリリース日を延長する。 あるいは、新たな追加のリリース日を設定する。 リリースまでの締め切りがはっきりしないまま機能が追加され、その結果、QAによる品質確認が十分でないまま見切りリリースされることがある。 さらに、開発組

    アプリを安全にリリースするための取り組み(Release trainとClient release process) | メルカリエンジニアリング
    gfx
    gfx 2020/01/21
    ある程度規模が大きくなると、どこもこうなるんだな。
  • Sign in with AppleをCLIでも使いたい | メルカリエンジニアリング

    Merpay Advent Calendar 2019 の 23日目は、IDPチーム の @kokukuma がお送りします。 はじめに Sign in with Apple(以降、SIWA)、コマンドラインツールでも使いたくありませんか?使いたいですよね?わかります。特定のAppleID持っている人じゃないと使えないコマンドラインツールとか作りたいですよね。 さてこのようなコマンドを作るためには何が必要でしょうか?ネックになるのは、認可コードをどうやって自分のコマンドラインツールに引き渡すのか?というところです。AndroidやiOSではDeeplinkの仕組みを使って、Redirect経由でアプリに認可コードを引き渡しています。 しかし、OSXではこの仕組みは利用できません。とりあえず、gcloud auth login仕組みを調べてみました。また、SIWAの紹介は随分出ているので説明

    Sign in with AppleをCLIでも使いたい | メルカリエンジニアリング
    gfx
    gfx 2019/12/24
  • PHPWebのTemplateEngineをWebAssemblyに置き換えてみる | メルカリエンジニアリング

    こんにちはメルカリアドベントカレンダー 8日目はWebPlatform所属のmkazutaka(twitter: _mkazutaka)がお送りします。 みなさんWebAssembly(Wasm)についてどれくらい知っておられるでしょうか。「名前は聞いたことある」「ブラウザ上で実行可能なバリナリファイルでしょ」という方も多いと思います 最近ではそういった一面に加え、WebAssemblyをウェブの外で使うためのシステムインターフェースを決めるWASIプロジェクトの発表やFastlyのOSSであるLucetといったブラウザを超えた活用が増えてきております ではメルカリのようなWebサイトでどのようにWasmを使えるのでしょうか。少し考えてみてください … そう意外に思いつかないのです。fitzgen/dodrio(Rust*WebAssemblyで仮想DOMを実現するライブラリ)もありますが

    PHPWebのTemplateEngineをWebAssemblyに置き換えてみる | メルカリエンジニアリング
    gfx
    gfx 2019/12/09
  • メルペイ VPoE による2019年の振り返り | メルカリエンジニアリング

    こんにちはこんにちは。前回のブログでお知らせしたとおり、Merpay Advent Calendar の1日目を、メルペイ VPoE の @hidek がお届けします。 はじめに 2019年もあっという間で、12月を迎えて終わろうとしています。ということで、メルペイとしての2019年を振り返ろうと思います。お題は「何かエモい話」と雑に振られたのですが、2019年に起こったことをなるべく赤裸々に淡々と書いていきます。 メルペイは2018年2月くらいから開発を開始していました。最初からマイクロサービスアーキテクチャの採用、Google Cloud PlatformGCP)を使ったクラウドネイティブな環境、と比較的モダンな思想のもとでの開発を続けています。ちなみに私が参加したのは2018年5月で、2018年中にはすでに決済基盤など大きなところの開発はかなり進んでいる状態でした。が、一方でなか

    メルペイ VPoE による2019年の振り返り | メルカリエンジニアリング
    gfx
    gfx 2019/12/02
  • Google Cloud Functionsを使ってSlackで簡単にCDN上のキャッシュを消せるようにする話 | メルカリエンジニアリング

    この記事は、 Mercari Bold Challenge Monthの最終日の記事です。 SREチームの@catatsuyです。 メルカリでは様々な用途でCDNを使っています。基的にCDN経由で静的ファイルを配信する場合、CDNからはオリジンからのキャッシュを表示するように設定しています。 しかしキャッシュからデータを削除したいこともあります。例えば古いファイルが配信されているので更新したいなどの理由です。 こうしたCDNのキャッシュからの削除依頼は日々様々なチームで発生します。しかしCDNのキャッシュを削除するにはAPIトークンが必要だったり、管理画面にログインする必要があったりするので知識と権限が必要になります。CDNの知識がなくても社内の人なら簡単に削除できる仕組みが欲しいところです。 そこで弊社では以下のようにSlackで簡単にCDN上のキャッシュを削除できるようにしています。

    Google Cloud Functionsを使ってSlackで簡単にCDN上のキャッシュを消せるようにする話 | メルカリエンジニアリング
    gfx
    gfx 2019/09/20
  • INT 32 障害とその BOLD な対策 | メルカリエンジニアリング

    この記事は、 Mercari Bold Challenge Monthの11日目の記事です。 こんにちは。Mercariで、通知に関連するサービスの開発をしているNotificationチームへ所属している @sters です。 通知という広く大きい舞台でのマイクロサービス化を主に進めているチーム、という文脈でも語れることがあるのですが、それはまた別のどこかの機会でお届けします。 今回の記事では、とある日に起きたNotificationチームにも関連するインシデント=障害について、何が起きたのか、何が原因だったのか、実際にどのように対応をしたか、今後どのようにしていくかをご紹介します。 なお、インシデント対応については、少し前の記事でも紹介していますが、現在もここでの通り振り返りなどを行っています。 インシデント発生、一次対応まで とある日の夕方、あるお知らせが見えたり見えなかったりする、

    INT 32 障害とその BOLD な対策 | メルカリエンジニアリング
    gfx
    gfx 2019/09/11
  • React-axe で React アプリケーションのアクセシビリティを向上させる | メルカリエンジニアリング

    こんにちは、この 4 月にメルカリに新卒入社したフロントエンドエンジニアの @karszawa です。 この頃は Google I/O 2019 のキーノートでアクセシビリティが大きく取り上げられたり、Safari に Audit タブが追加されアクセシビリティに関する様々なテストできるようになったりと、フロントエンド界隈におけるアクセシビリティへの関心の高まりを感じます。 記事では React アプリケーションのアクセシビリティをチェックするためのライブラリである React-axe と、その中心技術である axe-core を応用した様々なツールをご紹介します。 React-axe とは React-axe は React アプリケーションのアクセシビリティをチェックするためのツールです。チェックの結果は Chrome DevTools に表示され、開発中にアクセシビリティの問題に気

    React-axe で React アプリケーションのアクセシビリティを向上させる | メルカリエンジニアリング
    gfx
    gfx 2019/06/25
  • gRPCを用いたマイクロサービスのAPI仕様の記述 - Mercari Engineering Blog

    この記事はMERPAY TECH OPENNESS MONTHの10日目の記事です。 こんにちは、メルペイのバックエンドエンジニアの柴田(@yoshiki_shibata)です。 メルペイのバックエンドは、Google Cloud Platform上でGoogle Kubernetes Engineを使用して、マイクロサービスアーキテクチャを採用した多数のマイクロサービスから構成されています。モノリシックなサービス実装では複数層のライブラリ(あるいはコンポーネント)から構成されるのに対して、マイクロサービスアーキテクチャでは複数層のマイクロサービスから構成されます。 どちらのアーキテクチャにおいても、偶発的プログラミング(Programming by Coincidence)1を避ける2ために、注意を払って作成する必要があるのが、境界部分のAPI(Application Programmi

    gRPCを用いたマイクロサービスのAPI仕様の記述 - Mercari Engineering Blog
    gfx
    gfx 2019/05/31
  • Apache Avro に入門した | メルカリエンジニアリング

    この記事は MERPAY TECH OPENNESS MONTH の 1 日目の記事です。 メルペイでソフトウェアエンジニアやっている @syu_cream です。 メルペイバックエンドシステムにおけるデータ・ログ収集と活用を促進するためのシステム DataPlatform仕事をしています。 記事ではこの DataPlatform で用いているデータフォーマット Apache Avro について、簡単な紹介とメルペイにおける導入背景、そして利用事例を示していきます。 ビッグデータ処理基盤においてフォーマット選定は頭を悩まされる課題かと思います。 ログフォーマット選定やスキーマ管理について、少しでもなにか得られるものがあれば幸いです。 Apache Avro の簡単な紹介 Apache Avro はデータがバイナリエンコードされる、軽量で柔軟なデータフォーマットです。 筆者としては B

    Apache Avro に入門した | メルカリエンジニアリング
    gfx
    gfx 2019/05/29