この1年でAnyPayのエンジニアが成し遂げたこと

Tomohiro Nakamura
7 min readJul 17, 2018

--

こんちは。AnyPay CTOのTomoです。

つい先日、弊社は3期目に入りまして、1年間をまとめる会を会社全体でやったんですよ。そのときに僕はエンジニアたちが、他のメンバーにとって分かりやすい「機能を実装する」こと以外に、何のために何をやったのかっていうのをまとめて発表したんですね。
そしたらもう資料作ってるだけで感動してしまいました。このチームこの1年でこんなにやったのかすげーな! って。その感謝はその会で述べはしたんですけど、時代は「mediumで告る」だと思うので、これを書き始めました。愛してるぜ。

さて、何を1年で成し遂げてきたのかいくつか紹介していきますね。ちなみにエンジニアは現在だいたい10人というところです。1年前だともうちょっと少なかったですね。

PCI-DSSにGKEとGitHubを使って準拠した

詳しくは書かないですけど、PCI-DSSっていうクレカ情報っていう超個人データを扱うシステムとその組織体制のセキュリティ基準資格があるんですよ。少人数の組織がこれに準拠すること自体なかなかにタフなんですけど、弊社はこれを外部コンサルの方たちとEメールなどではなくGithub上でissueベースでのコミュニケーションを行いながら、Kubernetes Engineを用いて準拠しました。この件で Google Cloud Next で登壇するので是非聞きに来て下さい :)

ちゃんと各種インフラDashboardを用意した

今管理してるインフラはAWSとGCPが半々ぐらいなんですけど、ちゃんとCPUやメモリの使用率、DBのクエリ所要時間や、各種プロダクトへの課金額をダッシュボードにまとめたのと、毎日の値についてSlackにプッシュする仕組みを整えました。

マイクロサービス志向化

1年前は全てがRuby on Rails + RDSのモノリシックアーキテクチャだったんですけど、今では言語で言ったらRuby, Go, Python, Node.js, Kotlinと多様化してきていて、結構機能単位でサーバを分割したりなどをしています。DBで言ったらMySQL, Cloud DataStore, MongoDBあたり。サーバの立て方で言ったら普通にEC2を立てて運用しているのみの状態からKubernetes EngineとApp Engine, AWS LambdaにCloud Function, Firebase, Cloud Pub/Subなども加わり色々と適材適所になりました。

Slack Bot有効活用

サーバリリース時やGitHubのissue管理など、様々なところでSlack Botによる効率化、自動化が図られてきました。

CoffeeScript→EC6/7, TypeScript, flow, WebPack導入

まあもうタイトルのとおりなんですけど、JSのスタックも大きく向上しました。僕はJava育ちなので、TypeScript好きなんですよね。ビルド周りもnpmからyarnに移ってきてます。

CI高速化 + CircleCI 2.0, fastlane, Bitriseの導入

CIが遅くなってくるとリリースが遅くなるばかりでなく、エンジニアのストレス値も上がってくるのでそのメンテはかなり大事。高速化については以下に詳しくあるので良かったらご覧ください。

CircleCI 2.0への移行も結構早めに済ませました。結構公式が用意しているDocker Imageが便利ですよね。circleci/mongo とか利用させてもらってます。

アプリサイドではfastlaneBitriseを導入して、できる限り日々発生する作業の自動化を図っています。

React Nativeの導入

paymopaymo biz販売者用アプリ( iOS, Android )はSwift 4, Kotlin 1.2で書かれているのですが、今開発している仮想通貨・ブロックチェーン系の新規プロダクトはReact Native( + flow + Redux )ベースにしています。
最近、AirbnbがReact Nativeのsunsettingを発表しましたが、これはもう本文に書いてあるとおり、組織とプロダクトのフェーズの問題だと思っています。うちの新アプリでRNを導入した背景としては、効率的なクロスプラットフォーム開発というモチベーションよりは、各ブロックチェーンへの接続にあたり、JavaScriptの方が便利だと判断したというところが大きいです。勿論これも時間が経てば、各チェーンへの読み込み・書き込みは様々な言語でサポートされていくでしょうが、開発開始時点ではそうだったし、現在もその選択は間違っていないと思っています。

こんな嬉しい作用もありますね。

サービス内でのスマートコントラクトの活用

去年、ICOコンサルティング事業をはじめたところから、エンジニアの何人かはブロックチェーン上のスマートコントラクトの開発に慣れてきています。その知見も生かして、まだ発表できない部分もあるのですが、認証周りなどにスマートコントラクトを活用する試みも行っています。ID/passwordではなくて公開鍵/秘密鍵。普通にサーバ+RDBのがいいところはそうすればいいし、スマートコントラクトのがいいところはそうすればいいですよね。

まとめ

本当、よく1年で、この人数でこれだけ成長したよなと思っています。上に書いたことのいくつかは、大企業だと当然整備されているようなものだったりしますが、少人数で短期間でこれらを達成してきた素晴らしいメンバーです。そしてその素晴らしいメンバーに良いものを、速く、そして楽しく開発してもらうのが僕の仕事です。今年後半も、新しいサービスもどんどん発表していきます! OSSも出していこうと思っています。ペイメント事業でも、新規の仮想通貨・ブロックチェーン事業でも、アプリエンジニア・Webエンジニア・サーバエンジニア・インフラエンジニアなど広く募集しているので、是非話を聞きに来て下さい!

上記2つ以外もぜひこちらへ!↓

--

--