【Meet the team】エンジニアがサービス志向と技術幅を追求したらこうなった | Kyash Blog
Kyashのサーバーサイドエンジニア @genkist を紹介します。genkistは、2016年12月に入社し、翌年4月のプロダクトローンチに大きく貢献したエンジニアです。サーバーサイド開発の...
https://www.wantedly.com/companies/kyash/post_articles/68518
サーバサイドエンジニアの佐藤です。
Kyashでは常にサーバサイドエンジニアの採用活動をしていますが、まだまだ表に出ている情報(特に技術面)は多くありません。
特に、面談などに来てくれた方とお話していると、決済・送金×Webサービスという領域はなかなか実際の開発についてイメージ湧きにくいのかなと思うところがあり、この領域ならではの開発の内側や、技術選定についてまとめてみようかと思います。
Kyashに少しだけ興味を持ってくれて、「今度オフィスに遊びに行く」とか「知人がいて少し雰囲気を知りたい」みたいなエンジニアの人が目を通して理解を少し深めてくれると良いのかなと思っています。
では。
そもそもなんですが、なぜこの領域で開発をしているかというと、自分はKyashにサービスとしての存在意義を感じているからです。
何故Kyashに、という話は以前こちらに書いたような気がします。
Kyashが浸透すると何が実現できるかというと、分かりやすいところでいうとまず「キャッシュレスな世界」です。自分自身もなるべく現金を持ちたくない。クレジットカードだけ、もっと言えばスマホだけで完結するのがベストだと思っていて、「キャッシュレスな世界≒Kyashのある世界」というのは良いなと個人的にも思っています。
Kyashのメンバーも、特にエンジニアはわりとそういう志向の人が集まっています。無駄を嫌うエンジニアという人種とは、そういう点でも相性が良いのかなと思ったりします。
「キャッシュレスな世界」を作るために、現実の開発として何が必要かというと
上記2つはまず挙げられますが、これを両立するのは、こと日本では恐らくなかなか難しい。
現在まで日本でキャッシュレス化が進んでいない理由として「法律の問題」や「日本の現金の安心・安定性」などがよく挙げられていますが、業界と技術的な課題も多いにあると自分は思います。
お金を扱うシステムというのは、基本的にどれも大企業(銀行、決済ネットワーク)が持っているものなんですが、システム自体が巨大で機能拡張に多大な工数がかかってしまったりします。また実装を担当するエンジニアが、いいユーザ体験がどういったものかを想像しながらがシステムを構築するというより上流でくみ上げられた仕様書に従って実装することが多いと思います。
逆に我々のようにWebサービスを作ってきたメンバーは毎日ユーザのことを考えて開発してきています。アイディアをチームに出し、それをそのまま実装するといった経験をしてきたエンジニアも多いでしょう。銀行などに比べると比較的小さい規模のシステムを作ってきたからこそこれが実現できたともいえると思います。
例えば日本の決済ネットワークというのはVISA、NTT-DATA、JCBなどが持っていて、そういった領域に我々のようなベンチャー企業・Web企業が踏み込んでいくことは実際とてもハードルが高い。なぜかというと先に述べたように、抱えているシステムや体制、考え方がそもそも違うというところもあります。これは実際につなぎ込みをしてきたなかで強く実感する部分です。
安全なシステムと、優れたユーザ体験。これらを兼ね備えた開発により、「現金を超えるプロダクト」を生み出していけるのなら、大企業とベンチャー、どちらから踏み込んでいっても良いと思います。しかしやはりこれまでの日本のお金の流れの中で実現できて来なかったことなので、我々のようなFinTech企業と呼ばれる企業が風穴を開けていくべきなのかなと思ってます。
「現金を超えるプロダクト作り」というのは市場としても仕事としても大変魅力的なテーマで、今後より多くの企業の参入が見込まれます。
では具体的にどう開発していくかというと、Web系の企業が決済周りの事業を行う場合、決済代行会社を利用してインターネット経由でAPIを叩いて決済ネットワークを利用するというのが一般的です。
仮に決済ネットワークに直結で開発しようとすると、電文仕様が独自フォーマットで読み解き・実装のハードルが異様に高いという技術的な問題も大きいですし、それ以前にいちベンチャー企業が決済ネットワークに直結するという構成は、そもそもほぼありえないことです。
ですが我々は実際に、そのネットワークに直接接続しゼロベースで開発を行うことができており、それによって
といったことを可能にしています。これが実現出来ているのはKyashの技術力ゆえとも言えますが、Kyashの先進性・将来性に共感いただき多方面からバックアップ頂いているためでもあります。
また、通常100人月以上かけて構築するような一大決済システムを、Webサービスのペース(短期間・スモールチーム)で開発・運用しているので、追いつかれにくいという利点もあります。
整理し直すと、技術観点で差別化するポイントとしては、以下が挙げられると考えています。
ちなみに書籍購入補助があるので技術書は買いやすいです
さて上記のような開発を実現するうえでは、技術選定も非常に重要です。自分達は、例えば以下のような基準で技術を選定しています。
これら踏まえ、例えばインフラではAWSを選んでいます。
勘定系・決済系システムのオールクラウドでの構築・運用というのはセキュリティ上の難易度が高くかなり珍しい(当時は日本初だった)と言われていたのですが、コスト面・運用工数でのメリットが大きく採用しました。実際に運用していて以下のような利点もあり、非常に良い選択だったと感じています。
このように、送金・決済という領域に縛られず、サーバサイドはGolang、AndroidはKotlinなど、安心感と先進性ある技術選択をしています。
開発環境は今のところ、こんな感じです。
さてここまで、決済システムとしてのKyashの技術的特徴といえるものをある程度俯瞰して記載しましたが、次はもう一歩入り込んで、開発体制や開発の具体的な事例、今後の開発予定なども紹介できればと思います。
しかし長くなりましたので今回はここまでにして、次回以降に回したいと思います。
読んでくださった方ありがとうございました。
Genki Sato Profile :Kyashエンジニア/Tech採用リーダー。2010年新卒でDeNA入社後、ヒットゲームタイトルおよび新規事業の構築・開発・運用などを主導するとともにチームマネジメントに従事。2016年に、先進的な事業内容に惹かれ Kyash に参画。主にサーバサイド開発を担当し2017年4月にサービスリリース。