見出し画像

[Tech]スマレジのエンジニア同士で スマレジ・プラットフォームAPIについて対談してみた

こんにちは。開発第1チームの保坂です。

バックエンドを中心に、最近はフロントエンドにも手を出しているPHPerです。

もっぱら
スマレジ・デベロッパーズ

とか
スマレジ・アプリマーケット

の開発をしています。


さて、今回はスマレジのエンジニア同士で、スマレジ・プラットフォームAPIについて対談してみた。ということで、動画を撮影してみました。

スマレジのエンジニアが、スマレジ以外の「エンジニア」に向けてAPIに関する情報発信をするのはもしかしたら初めて?かもしれません。「スマレジ API」とかでyoutube検索すると出てくるようになったらうれしいなぁ。と思いながら記事や動画を制作しました。

是非とも、ご覧ください。

この記事では、この動画をご覧頂いた上で更にお楽しみいただけるように裏話などを添えてお届けできたらなと思っています。

対談メンバー紹介

保坂 望 ( Nozomi Hosaka )

この記事を書いた人。

スマレジ・デベロッパーズスマレジ・アプリマーケットの開発を担当。
ツーリングが趣味。最近、Z250からバルカンSに乗り換えた。

岡田直緯 ( Naoi Okada )

iOSアプリ全般の開発を担当。サーバーサイドも少しだけ開発している(決済連携)。趣味は読書・ゲーム(ボードゲーム/ビデオゲーム)。イベントに参加するのが好きなので誘われたら基本的に断らない。

浅野真之 ( Masayuki Asano )

スマレジ・POSのサーバーサイド・プラットフォームAPI(POS)の設計・開発を担当。趣味は登山。推しの山脈は鈴鹿山脈(景色がいいので)。

河上貴彦 ( Takahiko Kawakami )

スマレジ・POSのサーバーサイド・プラットフォームAPI(POS)の開発を担当。ゲームが好きで、スマブラにソラが参戦したので最近テンション上がってる。ほか、iPadで絵とか描きます。

スマレジ・プラットフォームAPIの開発ってどんな感じ?

プラットフォームAPIとは?というのはこちらにお任せしようかなと思います。簡単に説明すると、スマレジの機能を全てAPIとして公開しますよ。というお話です。公開されたAPIを利用して、新しい機能を追加するもよし、データ連携するもよし。他のSaasもやっていることですね。

そんなAPI開発、本格的に始まってそろそろ1年強となります。API開発におけるノウハウや、開発事情を聞いてみました。

スマレジは多機能。その分API開発は大変!

そうなんです。スマレジは他のiPadレジの追随を許さないほどの機能を持っています。その分、APIもたくさん作らないと...というところですね。

河上「種類がめちゃくちゃ多い。」

河上「開発するときに、他の領域について考慮することが多く、苦労することもあった。」

浅野「(機能の)登場人物が多い中で、ある程度の独立性を保ちながら関連性に配慮する。これが大事ということが見えてきた。」

これが多機能サービスのAPIを開発するときの悩みのうちの1つですね。中には会員情報、つまり個人情報を取り扱うAPIもあるので、各種APIに対するスコープの調整はとてもセンシティブな問題ですし、どのAPIでどの情報を取り扱うか。これがとても難しい印象でもあります。

河上「大変な分、面白い経験をさせていただいています。」

との発言も出てきて、一安心。確かに大変な作業かもしれませんが、その分良い経験になっているようで良かったです。

スマレジ・プラットフォームAPIを使ったことある?

せっかくAPIを開発したら、自分たちで使ってみたくなるものです。今回の対談メンバーには、開発者であると同時に利用者でもある方を選ばせていただきました。早速、自社APIサービスの使い心地を聞いてみましょう。

「自社」のアプリでスマレジ・プラットフォームAPIを使ってみた

岡田「タイムカードアプリでアプリ専用のAPIではなく、プラットフォームAPIを利用して開発する動きもあります。」

保坂「どんなメリットがあるでしょうか?」

岡田「外部向けに作られたきれいな仕様書がそろっていること。」

岡田「アプリ専用の認証・認可ではなく、世間に普及している認証・認可フローを利用できるので、独自実装を理解する必要がないこと。」

岡田「スマレジの機能について理解が浅い方でも、OAuthの理解や、仕様書を渡すだけで開発が進められるのは大きなメリットでしたね。」

岡田「このおかげで、アプリ本体の機能をどうするか。という部分に注力できるのがとても良かったと思います。」

保坂「逆になにかデメリットなどはありましたか?」

岡田「アプリの要件を満たせるAPIがまだ揃っていない...ということですね。結構API開発チームに要望を出しています。」

自社のプラットフォームAPIを利用してアプリ開発をする動きもあるようです。確かに、岡田さんの言うように、社内の独自フォーマットによって開発されているものは、その理解にたくさんの時間を必要としますし、外部に公開されないため、仕様もふわふわっとしがちな面、否めないと思いました。

「自分」のアプリでスマレジ・プラットフォームAPIを使ってみた

浅野「データの量が少ない店舗マスタや、仕入先マスタなどの情報は予め自分のアプリでキャッシュさせてしまうことで、あとはスマレジのよしなに。ということができるのはいいですね。」

浅野「期間が空いたらキャッシュさせた情報を忘れてしまって、また最新の情報を取ってくるというところで工夫しています。」

保坂「なるほど。そうですね。あとはこういったスマレジのエンジニアならではの発想やひらめきをどこかでまとめて情報発信できても良いかもしれません。」

河上「私は取引を取ってきて、それを分析する。というアプリを作りました。」

保坂「(浅野さんのアプリとは違って)まさに、取引参照系のアプリですね。」

河上「取引情報の分析を行うアプリなのですが、本当は分析開始した時点で取引を取得する。ということをしたいのですが、コール数の問題で少し工夫しました。」

河上「はじめに取引の同期をしておいて、分析したいときに同期した情報を利用する。というアプローチになりました。」

保坂「やはりそうなりますよね。私も似たようなアプリを作ったのですが、この設計で苦労したのは、スマレジ側の取引と自分のアプリの取引をうまく揃えることに苦労しました。河上さんは何か工夫したことはありますか?」

河上「Webhookは使っていますね。Webhookを使うと有料になってしまう。無料で展開したかったので、その工夫だけではなく、分析したい日付のみにフォーカスして取引を同期させるなどしています。」

という風に、色々なパターンで色々な工夫をしているようです。ただ、やはり取引の整合性が厳しいアプリだとWebhookの妥当性をしっかり担保することが難しい側面もあるという課題が見えてきました。
スマレジ・デベロッパーズの機能でそのあたりの担保をしていきたいとも考えています。(この辺はこれからのスマレジ・デベロッパーズにて後述します。)

どういう風に使えばうまくAPIを利用できそう?

保坂「これまでの話を聞いたイメージだと、取引参照APIなどで取引情報の同期を担保するようなアプリの作り方はあまりうまくいかないのでは?と感じていますが皆さんいかがでしょうか?」

一同「確かに今のところはしんどいですね。」

保坂「Webhookの妥当性を調べて、同期されているか確認して、取引APIの妥当性を調べて...ということをしないといけない。」

保坂「となると、分析アプリとかでも大体の指標にしてね。という完全整合性を求めないアプリの作りにする必要があるかもですね。」

河上「まぁ...そうですね。完全リアルタイムというのがめちゃくちゃ難しいと思います。」

保坂「ただその分、サービスの追加という点で見ると結構「いいな」と感じていて、というのも、売れているアプリの大体が新しい機能を追加するようなアプリなんですよね。」

岡田「実際、分析周りは他社のサービスもあるので、重要か?と言われれば...」

保坂「そうなるとデータ連携というニュアンスに近いですもんね。」

浅野「それにカスタマーサポートなどから入ってくる情報でも、やはり新しい機能のほうが求められているという印象が強いです。」

保坂「プラットフォームAPIの更新系やサービス系のAPIを利用して、新しい機能を提供するアプリを作る。というのが個人的に良いと思う方針ですね。」

スマレジは多機能なので、その機能性を活かしてさらなる機能を提供するようなアプリを作成する、というのがこの面々の共通意見だったかと思います。スマレジ・プラットフォームAPIはスマレジ・POSだけではなく、WaiterやTimecardのAPIも公開していますので、プロダクトを横断するような新機能も需要があるかもしれません

スマレジ・プラットフォームAPIで作ってみたアプリは?

こういった利点や課題がある中で、どういったアプリを作成したのかをご紹介しましょう。スマレジ・プラットフォームAPIを開発している開発者が作成したアプリとなりますので、アプリ作成のアイデアの参考になれば幸いです。

ポイント倍率

アプリ制作の裏側については、こちらでも紹介しています。
必要な情報はポイントの情報のみなので、その情報を取得し、指定されたタイミングでポイントの付与率を更新する処理がcronなどでスケジューリングされている。というアプリです。

使用するAPIも少ないので、最低限の機能で欲しい機能を提供できるというアイデアが光るアプリです。

仕入先一括登録

アプリ制作の裏側については、こちらでも紹介しています。

CSVをそのアプリでアップロードすると、スマレジの仕入先に登録される。スマレジの営業さんを見ていて思いついたアプリだそうです。これはスマレジのエンジニアならではのアプリかもしれませんね。

エンドユーザーの目線に立って開発すると良いアプリを作成できるとのアドバイスをもらいました。スマレジ・ユーザーリクエストの情報を参照してみるもの良いかもしれません。

Look into Baskets

もともとオムツとビールを2つ並べたら売上が倍増した...という話から思いついたアプリだそうです。このアプリは取引分析にあたるので同期処理や分析処理にかなり苦労したそう。このあたりの工夫は是非動画を見て参考にしてください。

利用者側に立ってみてアプリをどのように使えばいいと思う?

保坂「スマレジの利用者は2〜3店舗からなる中規模なお客さまが多いので、現場レベルで利用できるようなアプリが刺さるのではないかな?と思います。」

保坂「それこそ、ポイント倍率のようなアプリがあれば、「うちでも毎月◯日の割引セールやってみようかな」というきっかけになると思いますし、それを月額いくらかで利用できるなら使ってみると思います。」

保坂「やっぱり大規模なシステムを導入すると、お金がかかってしまいますが、アプリマーケットなら安く済みますしね。」

浅野「私は実家が飲食やってるんですけど、個人店レベルならShopifyやUber Eatsの連携アプリを見て、「やってみよかな」は結構あると思いますね。」

浅野「他の大手がやってるようなことをスマレジを通して「連携アプリあるからやってみよ」を掴めるようになるとお互いいいですよね。」

保坂「そうですね。それをお試しで公開したり、ある程度機能を抑えて無料で公開することで、個人店レベルの方でもハードルは低くなるのかな?と思います。」

今回はエンジニア向けということであまり尺を使って話せませんでしたが、今度はセールスの方たちを交えて、どのアプリを導入すれば店舗運営がうまくいくかなども話せればいいなと思う議題でした。

これからのスマレジ・デベロッパーズ

実は、スマレジ・デベロッパーズ・コミュニティというものがすでに公開されています。

そのコミュニティサイトではAPI機能のFAQだけではなく、大変ありがたいことに開発へのAPIに関する要望や改善案なども積極的に書き込んでいただいております

そこから少しだけ引用しながらお話させていただきます。

APIコールやWebhookの管理

保坂「どの業種でどんなAPI(機能)がコールされているかを確認できたり、Webhookの履歴を確認して再送ができるようにできるといいよね。と思います。」
保坂「特にWebhookの再送などができるようになると、より参照系に磨きがかかるのでデベロッパーズ開発者としては注力していきたい。」

APIクライアントの作成

保坂「スマレジ・プラットフォームAPIのクライアントライブラリの作成はしたい。この要望をもらったときはとても共感した。」
保坂「皆さんが開発するときの工数削減に直接つながるので頑張っていきたいと考えております。」

岡田「iOS用のクライアントは作ろうかな......と画策しているところですね......w」

保坂「本当ですか!?それは期待ですね......w」

ここに挙げたことだけではなく、日々の業務で必要と感じている機能や改善点などもまだまだあります。

この記事を読んでいる皆様にはお待たせすることになってしまいますが、今後のアップデートにご期待いただければ、開発者としてうれしいです。

対談を終えて

河上「個人開発がもっと増えれば面白いと思いました。個人開発者が作成したアプリが増えて、会社と戦うだけではなく、ちょっとした面白いアプリがあるだけで面白くなると思います。」

保坂「めちゃくちゃわかりますww使いやすい機能というだけでなく、ギャグアプリも増えれば面白いなと思っていますw」

浅野「そういえば、他のサービスで出勤時の打刻で敵を銃撃するような機能があるの聞いたことありますねw」

保坂「めちゃくちゃ面白いですねwそういうアプリがあれば職場のユーモアにつながるかもしれません。」

閑話休題

保坂「私の感想は、こういうエンジニアがエンジニアに対して情報発信できる機会を作れたというのはうれしい一歩だったなと考えています。勉強会や採用のための会を不定期でもいいので設け、情報発信という観点でも社会に貢献することができたらなと思います。」

岡田「普段、iOSエンジニアとして働いているので情報共有という意味でもいい会だと思いました。こういう機会を設けていただいて嬉しいなと思います。」

浅野「皆さん違うタイプのアプリを作られているので、開発事情を聞けて嬉しかったです。APIには足りない機能もあるので、機能追加も頑張って進めていけたらなと思っております。その暁には規模の大きなアプリを作ってみたいです。」

河上「普段開発業務をしていて、こういうところは良くて、ああいうところはまだまだだな、とわかっているつもりではいたけれども、こういう場で再認識できたのが嬉しかったです。自分の中でも気づきがありました。」


こうやって改めて記事に書き下ろしてみると、やっぱり思った以上に色々な方の協力の元、スマレジ・デベロッパーズとスマレジ・アプリマーケットは成り立っていることを実感しました。

本日集まった4人だけでなく、技術面でも運用面でも支えてくださっているスマレジのスタッフと、アプリマーケットを盛り上げてくださっている皆様に感謝を申し上げつつ、記事を終わりたいと思います。

またどこかでお会いすることがあれば、その時はよしなに。
























この記事が気に入ったらサポートをしてみませんか?