株式会社メルカリを退職しますたー

色々ありまして3年半働いていた株式会社メルカリを退職しました

色々と書いてますがまあなにもないんですけどね、はい

最終出社日が先月の5/25で6/26が退職日でした

そういえば、入社したのは22歳だった

自社プロダクト作ったことないAndroid開発しかできない子でしたね

プロダクト全般に関することは入社するまであまり考えたこともなかったので、毎日学ぶことの多い日々でした

その頃の様子が以下の記事とかに残ってますね

www.wantedly.com

なんだかんだ3年半毎日色んなことを学び、考えていた日々でした

色んなプロダクトを渡り歩いた3年半

3年半を雑に箇条書きするとこんな感じ

  • 入社して1年半くらいはメルカリのJP / USのAndroidアプリを担当
    • ひらすたコード書いてた
  • 子会社の株式会社ソウゾウで新規事業 メルカリ アッテのAndroidアプリの立ち上げを担当
    • 1年くらいやってた
    • ソウゾウのAndroidエンジニア 一人目だったので、ソウゾウのAndroidチームのまとめ役担当
  • 新規事業 メルカリ カウルのAndroidアプリの立ち上げを担当
    • 半年くらいはPMっぽい人兼エンジニア
  • メルカリに戻りPM兼エンジニアを数ヶ月
    • Androidエンジニアにならず、プロダクトマネージャーとしてスキルを磨きたかったのでこーなった

色んなプロダクトで色んなことを経験させてもらったのですんげー感謝してます!

関わったプロダクトはすべて好きなプロダクトになったし、これからも使い続けます

人生の中で本に関わる仕事をしたい!という願いを叶えたメルカリ カウル

私は本が好きなので「人生の中で本に関わる仕事をしたい!」という願いがありました

それを実現できるメルカリ カウルというプロダクトを作っていた1年間は、めちゃんこ楽しかったし、今後の考え方を変えたものでした

mercarikauru.com

メルカリ カウルのことを毎日考え、本がどうやったらもっと売れるのか、本と新しい関わり方ができないか、などなどひたすら考え続けていました

またエンジニアとしてのスキルだけでなく、企画やプロジェクトマネージャー、分析、カスタマーサポートとの関わりなど多くの経験を積みました

その経験があったからこそ「エンジニアやプロダクトマネージャーなどの肩書きなんていらないなー。自分が関わってるプロダクトなら自分でなんでもやりたいじゃん!楽しいし!」という思考が身につきました

ちなみに、まだまだ本に関わる仕事したいなー!!って思ってます!

この写真は最終出社日にメルカリ カウルチームのメンバーからもらった本を囲んで撮ってもらった最高の一枚です!

f:id:operando:20180619161422j:plain

「あ、そういえばなんでメルカリやめたんですか?」

今すぐに私も作っているチームの中に混ざりたいプロダクトが世の中にあり、それを作ってる会社にタイミングよくフィットする感じだった!みたいなー

メルカリ カウルを作っていた頃に考えていたことをいい形で実現できるかもしれない!と思って「すごい興味ある!」と言ってたプロダクトがありましてだなー

んで、そのプロダクトを作るチームに入れるチャンスをいただけたので、「よし!やめるぞ!」ってなったわけ

あとは単純に飽きですかねー

2年ぶりにメルカリのプロダクトチームに戻って思ったことが「あーメルカリで俺がやりたいことってもうないかもなー」でした

あとなんか日本では世間的にメルカリが当たり前のものになりつつあるかなーと思って、当たり前のものってつまんねーなーと思ったのもあり

まだまだこれからだろ!って言われればそうなんですが、そこら辺の感覚は個人差ですよ!

メルカリもメルカリ カウルもすごくいいプロダクトで、会社自体もすごくいいところでしたし、年収にも全く不満はなかったです

でも私はお金が一番とは思ってないし、何を作るかにとにかく人生を使いたいので、やめることに後悔はないですねー

次は何をするんですか?

とりあえず現時点では内緒!

正式に次の会社に入社したらまた思いの丈をつらつら書きたいと思います

でもまあ次もひたすら考えてプロダクトを作り、多くの人に使ってもらえるようにひたすら頑張るだけです!

エンジニアリングだけでなく、プロダクトに関わることならなんでもやる気でいます

その方が私個人が楽しくいられるので!成果出す前提だけど!

これからもキンパツと仲良くしてください!

Amazon ウィッシュリストなどで物をもらうのはなんか違うかなーと思うので、今後ともキンパツと仲良くしてもらえればそれだけで私は嬉しいです!

これから出会うであろう人も仲良くしてね!

おわりに

色んなことを経験し、色んな人に出会えたいいの3年半でした!

得た知識や経験を自分なりに試行錯誤して、次の仕事やプロダクト、会社にも活かしていくぞ!

メルカリで働く中で関わってきた人たちは優秀 + 楽しい人ばかりだったので、また機会があればぜひ一緒に働けたらいいなーと思ってます!

メルカリの皆さま、これからも頑張ってください!めっちゃ応援してます!

おまけ

メルカリで働いていて、麻布十番にあるnicoドーナツという私の中では日本一おいしいドーナツ屋さんに出会えたのも最高!

麻布十番や六本木周辺にきたらぜひ食べてみてください!

retty.me

2018年5月に読み終わった本まとめ📚

読んでる本とか過去に読んだ本とかはブクログへ。

operandoOSの本棚 (operandoOS) - ブクログ

編プロ☆ガール

こんな世界もあるのかー!ってことが知れてとても面白かった!

インカメ越しのネット世界

こーゆー内容を言語化できるのすごいなーって思う

インカメ越しのネット世界 (幻冬舎plus+)

インカメ越しのネット世界 (幻冬舎plus+)

職業としての地下アイドル

なるほどねーって感じだった

職業としての地下アイドル (朝日新書)

職業としての地下アイドル (朝日新書)

ゲノム解析は「私」の世界をどう変えるのか? 生命科学のテクノロジーによって生まれうる未来

ゲノムの時代来ますよねーって感じだった

ダンジョンに出会いを求めるのは間違っているだろうか外伝 ソード・オラトリア 6 - 7

ソード・オラトリアやっぱり面白いね!全巻買ったぞ!

CHANxCO作品集 CHANxBOX

もらった本です!作品集面白いよね!

CHANxCO作品集 CHANxBOX

CHANxCO作品集 CHANxBOX

Re:ゼロから始める異世界生活 大塚真一郎 Art Works Re:BOX

もらった本です!レムあやっぱり最高だ!かわいい!

名探偵コナン 犯人の犯沢さん 1

もらった本です!めっちゃ面白かったw続き読みたいw

パイニャン

もらった本です!こーゆーの嫌いじゃないですよ!むしろ...ね!

パイニャン

パイニャン

ゲームウォーズ(上)

原作はこんな感じなのかー!って感じ

黒子のバスケ EXTRA GAME

読みたくなったので!なんだかんだ面白い!

2018年4月に読み終わった本まとめ📚

読んでる本とか過去に読んだ本とかはブクログへ。

operandoOSの本棚 (operandoOS) - ブクログ

人生の勝算

今読んで良かったなーと思う内容だった!

人生の勝算 (NewsPicks Book)

人生の勝算 (NewsPicks Book)

ニューエリート グーグル流・新しい価値を生み出し世界を変える人たち

なるほどーって感じだった

ニューエリート グーグル流・新しい価値を生み出し世界を変える人たち

ニューエリート グーグル流・新しい価値を生み出し世界を変える人たち

ミュージシャンが知っておくべきマネジメントの実務 答えはマネジメント現場にある!

ふむふむー!こんな感じなのかー!ってことがわかってよかった!

1日外出録ハンチョウ 3

安定のハンチョウだったw

1日外出録ハンチョウ(3) (ヤングマガジンコミックス)

1日外出録ハンチョウ(3) (ヤングマガジンコミックス)

カードキャプターさくら クリアカード編 4

早く続き読みたいー!!って展開になってきた!

クジラの子らは砂上に歌う 1 - 2

アニメ見て面白かったので原作も読んでいきたい

2018年3月に読み終わった本まとめ📚

読んでる本とか過去に読んだ本とかはブクログへ。

operandoOSの本棚 (operandoOS) - ブクログ

自動運転で伸びる業界 消える業界

自動運転が今どんな状態で、日常的に使えるようになったらどういうことが起きるかもしれないのかがわかる一冊ですごい良かった。

これ読んでから自動運転めっちゃ興味わいたので、最近情報おってる。

自動運転で伸びる業界 消える業界

自動運転で伸びる業界 消える業界

伝えることから始めよう

自身がいいと思った商品の良さがどうやったら伝わるかを全力で考えてるのが伝わってきた。

一緒に仕事したい人だなーって思った!

ブランドのコラボは何をもたらすか ~午後の紅茶×ポッキー が4年続く理由~

力を入れたコラボってどうやってるのかを知れるよい内容だった。

お菓子メーカーとかって大変そうだけど面白そう!

売れる販売員が絶対言わない接客の言葉

接客業から学ぶことっていっぱいあるよなーと思って読んでみた。

接客業の言葉遣いや気づかいはアプリやサービスを作っていても参考になることなので読んでよかった。

売れる販売員が絶対言わない接客の言葉

売れる販売員が絶対言わない接客の言葉

新しい市場のつくりかた―明日のための「余談の多い」経営学

本当に余談の多いな!でもいい内容だった!

焦らずゆっくり読むのが良さそう。

新しい市場のつくりかた―明日のための「余談の多い」経営学

新しい市場のつくりかた―明日のための「余談の多い」経営学

セス・ゴーディンの出し抜く力―――先がわかる人は、何を見ているか

出し抜いてるなー!と思う内容でまあまあ面白かった。

統計思考入門 ― プロの分析スキルで「ひらめき」をつかむ

ちょっと今読むものではなかったかなーという感じ。

統計思考入門 ― プロの分析スキルで「ひらめき」をつかむ

統計思考入門 ― プロの分析スキルで「ひらめき」をつかむ

redjuice画集 REDBOX

はー!!!最高!!!

オフィスにおいて疲れたら読んでますw

redjuice画集 REDBOX (イラスト・画集)

redjuice画集 REDBOX (イラスト・画集)

ダンジョンに出会いを求めるのは間違っているだろうか13

安定の面白さだった!

ダンジョンに出会いを求めるのは間違っているだろうか外伝 ソード・オラトリア 4 - 5

次が気になる内容だったので、買って読むかなー!

余命1年のスタリオン 下

うむ、下はなんとも普通の展開だったなーという感じ。

零落

いやーこれいいですね!いいですよ!

ONE PIECE 88

安定のONE PIECE

ONE PIECE 88 (ジャンプコミックス)

ONE PIECE 88 (ジャンプコミックス)

闇金ウシジマくん 42

うー、続き気になるー!って感じ

闇金ウシジマくん 42 (ビッグコミックス)

闇金ウシジマくん 42 (ビッグコミックス)

人形の国(2)

そうか、こんな話だったなーという感じw

人形の国(2) (シリウスKC)

人形の国(2) (シリウスKC)

Lightweight-Stream-APIのStreamにequalsOnlyを実装した話

Lightweight-Stream-APIとは?

Stream API from Java 8 rewritten on iterators for Java 7 and below.

Java 8から導入されたStreamのようなものをJava 7以前で使うためのLibrary

Streamについては調べればいくらでも資料はあるので詳細は割愛します

StreamだけでなくOptionalも実装されているため、AndroidでStream + Optionalを使いたい場合によいLibraryで私はよく使ってます(Kotlinの場合はそこまで必要としませんが...

github.com

Lightweight-Stream-API 特有の中間操作(intermediate operation)

Lightweight-Stream-APIのStreamには、Library特有の便利な中間操作(intermediate operation)が実装されてます

例えば、要素のうちnull以外でfilterする withoutNulls は便利ですね

Stream.of("a", null, "b")
        .withoutNulls()
        .forEach(System.out::println);
// 結果:
// a
// b

このような便利な中間操作はJava 8以降のStreamには実装されていません

Libraryだからこそさくっと便利なものが実装できるのはLightweight-Stream-APIのいいところですね

他にもLightweight-Stream-API 特有の実装はいくつかあるので気になる人は見てみてください!

独自に実装してるとはいえそこまで複雑ではなく、自分でも拡張できそうだなーと思って、今回equalsOnlyという中間操作(intermediate operation)のメソッドを実装してPull Requestを出してみました

equalsOnly - 要素のうち指定したオブジェクトと同じものだけでfilterする

どんなものを実装したのかはごちゃごちゃ説明するよりコードを見てもらうほうが早いです

流れてくる各要素をメソッドの引数で渡すobjectと同じかどうかをチェックしてfilterしてるだけです

/**
* Returns {@code Stream} with elements that is equality of {@code object} only.
* <p>
* <p>This is an intermediate operation.
*
* @param object object
* @return the new stream
*/
public Stream<T> equalsOnly(final T object) {
    return filter(new Predicate<T>() {
        @Override
        public boolean test(T value) {
            return Objects.equals(value, object);
        }
    });
}

ね?実装簡単でしょ!

んで、使い方は以下のような感じでマッチしたものだけ後続のStreamに流れる仕組みです

List<String> match = Stream.of("a", "b", "c")
        .equalsOnly("b")
        .toList();
// match -> ["b"]

どうしてequalsOnlyがほしかったのか

私がやっているプロジェクトのコードでfilterしてequalsするみたいなコードが度々出現していて「これ書くの面倒なー」と思っていたので、実装も楽だしワンチャン提案してみるかーと思った感じです

例えば雑に説明すると、以下のようにfilter内でequalsだけを条件としてる箇所がざっくり数えるだけでも30ヶ所はあるんですよねー

Stream.of("a", "b", "c")
        .filter(s -> Objects.equals(s, "b"))
        .(以降処理は続く...

これをさくっと書きたい! equalsOnlyみたいなの作ればさくっと書けるはず!と思って仕事中に実装して、提案してみた感じです

次のリリースがされたらequalsOnly使えるようになると思うので、同じようにほしかった!!という人は使ってほしい気持ち!!

Pull Requestわりと雑に出したけど案外あっさりMergeされた

とりあえず提案程度にコード書いてみたぞい!って気持ちをぶつけたかったので雑に[Proposal]って頭につけて、Pull Requestの概要にも実装したequalsOnlyの使い方だけわかるコードを書いてみた

実際のPull Requestは以下です

github.com

同僚には「それはさすがにMergeされないのではー?」って言われて、「せやな」って気持ちだったけど、朝起きてみたらMergeされてた

Javadocとテストコードをちゃんと書いておいてよかったなーという気持ち

Libraryとしてテストコード書くっぽい! + 勝手にCI回ってテストしてくれる!というのは、コントリビュートする側としてはなんか安心するので良いなーと思った

実装されたものがいい感じでテストも書いて通ってれば、ごちゃごちゃ英語で説明書かなくても通じる世界はある!みたいなとても楽観的な考えでやっていきだなーと思った次第です

とはいえ私みたいなのが量産されるのは微妙なので、英語はちゃんとできるようになりたいものです...

v1.2.0で実装したequalsOnlyが追加されてました - 2018/06/20 追記

めでたい!

Added Stream.equalsOnly operator (thanks to @operando)

github.com

Lightweight-Stream-API もっと便利になってほしい!!

無法地帯にならない程度に便利なメソッドなど増えてほしいぞ!!

私も他に便利そうなの思いついたらまたPull Request出すぞ!!