こんにちは、SmartBank で開発に携わっている t0yohei です。
SmartBank が運営するワンバンク(旧 B/43)は、オンラインカジノ等のギャンブルサイトでの利用を制限しています。
この利用制限にあたり、該当する加盟店を登録しておく CS (カスタマーサポート)業務がありました。
その業務を細かな技術を駆使して効率化したので、その事例をご紹介します。
実際に CS 業務をされている方や、CS 業務の改善に携わっているエンジニア諸氏の参考になればと思います。
業務のフロー
この CS 業務のフローは以下のようなものでした。
- Redash を実行して、制限対象候補の加盟店を洗い出す
- 本当に制限すべき加盟店なのかを調査し判断する
- 制限すると決まった加盟店を管理画面に入力し登録する
1〜3 全てを最初からシステムに落とし込むのは、フローが変更になる可能性も考えると筋が悪そう。
ただ、特に 3 の業務は制限対象が多くなると入力作業が大変なので、何らかの方法で効率化したい。というのが今回の要望でした。
ブックマークレットを使った入力作業の効率化
管理画面の入力効率化で何か手頃な方法ないかなと考え、思いついたのがブックマークレットでした。
ブックマークレット、皆さんご存知でしょうか?
ブックマークレット (Bookmarklet) とは、ユーザーがウェブブラウザのブックマークなどから起動し、なんらかの処理を行う簡易的なプログラムのことである。
https://ja.wikipedia.org/wiki/ブックマークレット
簡単に言うと、ブックマークとして JavaScript を登録しておいて、ブックマークのクリックで UI などに対する操作をシュッと行う古き良きウルテクです。
ブックマークレットはその性質上以下のような特性があります。
- 簡単に壊れる
- 使う人が自身の PC で登録する必要がある
今回の登録業務は以下のような性質があり、ブックマークレットの特性が許容可能なものでした。
- 初回の作業時は登録量がとても多いが 2 回目以降は登録量が減っていく
- つまり、初回作業から 1 年経った頃に壊れてしまっても業務影響は少ない
- 利用者が CS メンバー数人に限られており、ブックマークレットの登録作業がそこまでコストにならない
また UI のソースコードを修正しないブックマークレットは、簡単に作れてすぐ捨てれるということもあり、今回のような運用が定まりきっていない作業の効率化に打って付けでした。
Redash の抽出結果に登録リンクを埋め込む
ブックマークレットによる入力効率化を行うにあたり、入力する情報をどこかから持ってくる必要があります。 今回の登録業務では、最初に Redash での抽出の作業があったため、その抽出結果に登録用のリンクを埋め込むことにしました。
具体的には、登録リンク用のカラムを用意して、そのカラムには登録情報のパラメータを付与した管理画面へのリンクを表示するといった具合です。
-- 抽出用 SQL を一部抜粋 SELECT concat( '<a href="<https://admin.com/merchant_restrictions/create>', '?info_a_id=', t.info_a_id, '&info_b_id=', t.info_b_id, '&info_c_id=', t.info_c_id, 'target="_blank">登録</a>' ) AS register_link,
入力する情報が URL のパラメータに埋め込まれているので、ブックマークレットはその情報を読み取ってフォームに入力します。
実際の管理画面ではありませんが、Zenn のプロフィールをブックマークレットで入力した例です。
「プロフィール入力」のブックマークレットを使って、URL パラメータに埋め込まれた情報をフォームに入力しています。
ブックマークレットの作り方
ブックマークレットの作成方法は別の記事に切り出して紹介しております。気になった方は是非こちらもご覧ください。
まとめ
もうちょい頑張ればさらなる登録作業の効率化ができそうな予感はありますが、コストと効率化できる作業量を考慮するとまずまずの成果になったのではと考えています。
実際に登録作業を行う CS のメンバーからも好評の声を頂けており、ちゃんと効率化の効果が得られていたようでした。
めでたしめでたし!
We Are Hiring!
SmartBank では業務改善が好きなエンジニアを募集しています。
ご興味のある方は、ぜひお気軽にご連絡ください。