読者です 読者をやめる 読者になる 読者になる

Mercari Engineering Blog

We're the engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

Mercari Day 2017 Tech Track 発表資料まとめ

Mercari Day

iOS チームの @jarinosuke です。

2017年1月20日に Mercari Day 2017 というイベントを開催しました。

当日はあまり天気も良くない中、とてもたくさんの方々に足を運んで頂き大盛況の中イベントを終えることができました。

ご参加いただいた皆様、ありがとうございました!

この記事では、そのイベント内で行われた全ての技術系の発表資料をまとめて紹介させていただきます。

スライド一覧

以下、登壇者スライドの一覧になります。

続きを読む

Our Image Classification Experiment with Deep Learning

Introduction

Hi, my name is Takuma. I am a software and machine learning engineer at Mercari.

Artificial Intelligence (AI) is a buzzword nowadays. We also often see terms, such as 'Deep Learning' and 'Deep Neural Networks' that are subsets of AI and machine learning. I would like to share our experiment on image classification using deep learning.

Neural Networks Winter

Deep learning is a variation of neural networks techniques. In the 7th International Conference on Document Analysis and Recognition (ICDAR 2003), held in Edinburgh, UK, Simard et al. (Microsoft Research) said in their paper 'Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis' that:

After being extremely popular in the early 1990s, neural networks have fallen out of favor in research in the last 5 years. In 2000, it was even pointed out by the organizers of the Neural Information Processing System (NIPS) conference that the term “neural networks” in the submission title was negatively correlated with acceptance.

(I actually attended the conference as a student and I made a presentation on digits detection and recognition.)

At that time, many researchers were being attracted to other algorithms like Support Vector Machine (SVM) and so on.

続きを読む

GoでとあるAPIサーバを実装し直した話

Go

サーバサイドエンジニアの @b4b4r07 です。この記事は Go Advent Calendar 2016 の 19 日目です。今回は Go (Revel フレームワーク) で書かれていた API サーバをフルスクラッチで書き直したお話をします。

Revel とは

A high productivity, full-stack web framework for the Go language

公式の説明にあるように、Revel は高機能でフルスタックな Web フレームワークです。

複雑なルーティングや、パラメータのパーシング、テンプレート機能など、Web アプリケーションを作ろうとなったときに必要な手段はたいてい兼ね揃えているようです。公式ドキュメントに詳しく書かれています。

Revel 以外にも Go 製の Web フレームワークは多数あり、有名どころだと以下のようなものが挙げられます。

その中でもはやり Revel は「重量級」「全部入り」「Rails のような」など表現されることが多いように思います。何をやりたいのか (どこまでやりたいのか) もしくは、API の将来的な全体像がはっきりしないときの選択肢として採用されることが多いのかもしれません。

最初は Revel で書かれていた

ある手段の実現のために、メインサービスとは別に新規の API を作りたい、という話になり Go で書くことになりました。要件としては簡単で、数百万規模のレコードを持つテーブルから SELECT して JSON 形式で返す API です。説明上のイメージとして、ここでは郵便番号から住所情報を引く API とします *1

$ curl $API_URL/zip_code/1066118 | jq .
{
    "zip_code": 1066118,
    "prefecture": "東京都",
    "city": "港区",
    "address1": "六本木6-10−1",
    "address2": "六本木ヒルズ森タワー",
}

最初、別の人が1週間くらいで実装しており稼働直前の状態で僕に引き継がれました。当初は「Revel なのか」くらいな印象で若干の整備とセットアップを加えてサービスインしました。

*1:ちなみに日々 KEN_ALL.csv によって更新されている

続きを読む

未来のCSSを先取るHoudiniとは?それは魔法である!

CSS

f:id:t32k:20161130124906j:plain

こんにちわ、メルカリアッテでFront-end Developerをしている@t32kです。

メルカリではセミナー参加補助制度があり、それを利用して海外カンファレンスに参加してきました。今回は11/30 ~ 12/01、オーストラリア・メルボルンで開催されたCSS/JSConf Australia 2016に行ってきたので、そのレポートを書きたいと思います。

f:id:t32k:20161130154633j:plain

今回はその中でも、CSSConfでのBarak Chamo氏が講演した内容が非常に興味深かったので紹介します。

続きを読む

監視だけじゃない!デプロイにMackerelを使う話

SREチームの @siroken3 です。

以前、メルカリでリリース手段としてChatOpsを採用していることを本ブログで紹介しました。今回は内部で使っている技術の一部を紹介したいと思います。

tech.mercari.com

tl;dr

  • メルカリではデプロイにAnsible使ってる
  • 毎日デプロイしつつサーバが増加/入れ替え激しいと心が削れる
  • MackerelのAPIとAnsibleを組み合わせたらハッピーになった
続きを読む