ユーザーに複雑性を押し付けた —プロダクト開発振り返り:社内向け一括編集機能—
この記事では、一昨年から去年にかけて新規開発・2回のアップデートをした社内向けの貿易案件の一括編集機能について開発や成果を書いてみます。完全に社内オペレーター向けの機能ですが、一部の案件情報の入力作業をほとんど自動化するなど、トータルで月400時間以上の業務工数を削減することができました。
社内オペレーターとは、Shippioの貿易案件の手配業務(フォワーディング)を行うオペレーターのことです。顧客の要望に応じ、船やトラックの手配、通関手続きを行い、クラウドサービス上の情報を更新することで顧客に情報を共有しています。
この開発の目的
社内オペレーターと顧客はクラウドサービスを介して情報共有やコミュニケーションをしています。 これまで社内オペレーターは貿易案件の更新を1件ずつ行なっていたのですが、案件量が増えるに従い作業量が膨大になっていて、手が追いつかないという課題がありました。
貿易案件を更新するためには、案件一覧から目的の案件を探し、複数タブやモーダルダイアログに点在している入力欄を一つずつ編集していく必要があります。特に社内向けオペレーターツールではモーダルダイアログが多く、自分で触っていても大変辛いなと思う箇所がたくさんあります。

顧客側でも、案件情報を1件ずつShippioオペレーターに伝えることが負担となっており、Excelをメール送付することでまとめて連絡するといったことを行なっていました。一応メール連絡業務削減を謳っているサービスなのに何でメールに戻っているんでしょうか。
そもそもExcelを受領する業務フローをなくすべきだろうとも思いましたが、この当時開発期間も限られていたので、まず受領したExcelをそのままインポートできるような形にすることにしました。結果的にはTSVファイルをインポートすることで、案件情報を一括更新できる機能となりました。社内オペレーターが受領したExcelをインポート用のフォーマットに変換し、TSVファイルにしたものを読み込んで複数案件の変更を一度に実行します。

限界まで開発工数を削る
社内向けの機能であったことと、かつShippioのオペレーションチームがとてもITリテラシーが高く、技術的な部分への理解があったので、ギリギリまで開発が易しい仕様にしました。
前述のように、インポートするファイルの形式はTSVです。入力値にカンマが含まれる可能性があったので、カンマのハンドリングをしなくてもいいようにTSVとなりました。
また、マスタと紐付けて登録する項目がいつくかあるのですが、これらは全てUUIDでの入力になっています。最終的にDBに登録される値がUUIDなので、名称をインポートするとシステム側でUUIDを取得して登録する手間が発生するため、最初からUUIDで入力してもらうようにしました。Shippioのオペレーションチームは普通にSQLを書いてDBから情報を取得したり、Google Apps Scriptを書いて処理を自動化するスプレッドシートを作ったりしていたので、これも特に問題になりませんでした。
0/1で入力するフィールドも多くあります。現在のシステムの都合上、特定の条件に当てはまる貿易案件では、請求金額から特定項目を削除する必要があるのですが、入力値が1の時に実行、それ以外では何もしないといった処理を行います。
実際にインポートするファイルは以下のような形になっていますが、DBに入力する値をそのままTSVファイルに記入する形になっているので、これだけ見ても何が入力されるのか全然わかりませんね。
カラム名もDBのフィールド名と一致させていて、システム側で変換する必要をなくしています。

オペレーションチームのこうした協力のおかげで、3回の開発のトータルの工数は1.5人月ぐらい、QAを合わせても2人月ぐらいだったと思います。これで概算月400時間以上のオペレーション工数をなくせたのでROIがすごい。
また、機能開発後に当初予定していなかった幅広い用途で活用できており、情報の更新頻度をあげてほしいといった顧客からの要望にも応えられるようになるなど、オペレーション品質の向上にも貢献しています。
ユーザーに複雑性を押し付けている
複雑性保存の法則からすると、開発効率を最優先して、ユーザーであるオペレーションチームに全ての複雑性を押し付けることで、システムをシンプルにしたアンチパターンと言えます。
UUIDでの入力は特にそうで、人間的には名称で入力できればわかりやすいのに、わざわざUUIDを取得して入力させています。
実は、実際のところ、今のオペレーションチームは、案件やチーム内でのタスク、返信すべきメッセージの管理など、ほとんど全てをGoogleスプレッドシートやノーコードのワークフローツールによって行なっています。(!)オペレーションチーム向けの社内ツールでは、そこで案件を探したり情報を更新するには力不足なので(!)、結果的にほとんどの作業や管理を外で行い、社内ツールでは一括編集や顧客とのチャットをするに留まっています。
オペレーター自身でツールを作り、自身を分析をしながら、自分たちの仕事のやり方を変えているのです。
逆に言えば、オペレーションチームにとって唯一自分たちでどうにかできないのがDBへの情報更新だったので、どうにか一括編集機能だけ作れないかという話になり、開発に至りました。開発者に近い目線のオペレーションチームにとっては、UUIDでの入力も、システムによる中間処理が入らない分、入力の結果がわかりやすく適していると思います。
さいごに
Shippioの社内向け一括編集機能は、システムによる中間処理をほとんど入れないことでシンプルになり、少ない開発工数で大きな成果を出すことができました。
社内オペレーション向けの開発リソースを確保することが難しかったために、オペレーションチームが日曜大工的に様々なものを自作するようになった結果です。
本当は、オペレーションチームが発見した業務におけるベストプラクティス的なものを機能としてクラウドサービスに搭載し、他の物流事業者にも使ってもらえるようにしたいのですが、今のオペレーションチームの柔軟性や進化のスピードを見ていると、多少機能を切り出したところで叶えられる効率化はかなり限界があるのかもと思わざるをえません。
自分たちで使いたいツールを自作できる人は強いな〜
