ネットの海の片隅で

技術ネタの放流、あるいは不法投棄。

上海の空気を吸ってきた

2019-09-12/15 の3泊4日で上海に行ってきました。

目的は話題になっている店舗やサービスを自分の目で見て体験してみるため。

同行者は @UandG1 とその友人1名でした。

@UandG1 のエントリはこちら ↓

yujimiyakawa.hatenablog.com

せっかく行ってきたので、感じたことを雑に吐き出しておこうと思います。

行った場所・体験したサービス

主なもの。

各店舗・サービスについては詳細な記事などがいっぱいあるのでggrks。

  • 盒馬鮮生
  • 盒馬菜市
  • Pick'n Go(盒馬系)
  • 逸刻 EGO
  • luckin coffee
  • DiDi
  • Mobike
  • Metro 大都会
  • WeChat
  • Alipay
  • デリバリー関連施設
    • シェアキッチン(熊猫星厨)
    • 配送用食品倉庫

所感

キャッシュレスにとって一番大切なこと

今まで個人的に非接触系の決済方法を推していたし、決済するタイミングだけを考えると QR コード決済はあまり良くないと今でも思っている。

コンビニでの Alipay での支払いにしても地下鉄アプリ「Metro 大都会」にしても、決済をするタイミングで画面を表示する必要があるし、そのたびに読み込みが発生するのがしんどい。 この点だけ見ると Suica や iD などには及ばないし、特に改札のスループットSuica の足元にも及んでいないと思う。

ただ、上海での4日間で Alipay が使えないシーンがまったくなく、日本に帰ってきてから「あそこは iD 使えるんだっけ」みたいなことを考えた瞬間に日本のキャッシュレスのの不便さを痛感した。

現金のように本当にどこでも使えて、現金よりもはるかに簡単に送金できるキャッシュレスは控えめに言って最高の体験だった。

流動性の高さ、本当に大事。

f:id:s_osa:20190913165819j:plain
問屋みたいな店でも Alipay が使える

前提としてのスマホ

上海でスマホを持っていないと、生活がめちゃくちゃ不便になる。

スーパーマーケット(盒馬)で買い物することができないし、DiDi や Mobike で移動することもできないし、地下鉄に乗るたびに切符を買わないといけないし、luckin coffee でコーヒーを買うことはできない。自販機も現金を受け付けないものが結構あった。

一応、盒馬や地下鉄ではスマホなしの場合も想定しているが、あくまで例外としての扱いで利用者は原則としてスマホを持っているという前提になっている。

スマホをオプションではなく前提として置いた結果、現金の取り扱いがなくなる、レジを置く必要がなくなる、行列をつくる必要がなくなるなど、圧倒的な効率化を実現している。

また、スマホがないと生活が不自由になるという都合上、街中のいたるところにレンタルモバイルバッテリーがあって、バッテリー残量が減ってきたら簡単に充電することができる。 (もちろん Alipay などで払える)

自転車・原付に適した交通事情

大きく以下の3つ。

専用レーン

上海では(地域によるが)自転車・原付専用レーンが設置されていることが多かった。 そして、なんと、都内と違って専用レーンが機能している!

自分でも Mobike で走ってみたが非常に走りやすかった。

駐輪場

歩道のいたるところに白い枠が引かれていてその中に駐輪することができる。

この枠があることで Mobike などのシェア自転車を好きなところで乗り捨てられるし、デリバリーに使われている電動原付*1を停めることもできる。

f:id:s_osa:20190914170216j:plain
駐輪の様子(点字ブロックの扱いはひどい)

一方、都内は自転車や原付を停める場所はあまりないし、駐輪場もそんなに多くない。結果、シェア自転車がステーションでしか乗り降りできないので利便性が低くなってしまう。

地形

上海の地形はほぼ完全に平らで自転車移動に適している。

一方、都内は(東部以外は)アップダウンが多いため、電動自転車を設置する必要があるなど、シェア自転車のサービスを提供するには難易度が高い。 (国内だと地形的には京都市内とかが良さそう)

各サービスを支える安価な労働力

盒馬や饿了么(うーらま)のデリバリーサービスも、DiDi の格安タクシーも、その輸送を実現する安価な労働力なしでは実現できない。

このへんは良し悪しあると思うが、とりあえず、圧倒的に違う、という話。

メディア越しだと良く見えすぎているところもある

発展著しいのは間違いないし、日本にないものもいっぱいあるが、100%完璧かというと当然そんなことはない。

新鮮さを売りにする盒馬鮮生の生簀には新鮮とは程遠い魚が沈んでいた。 (もちろん生きているのが大半ではある)

f:id:s_osa:20190912190959j:plain
生簀で死亡している魚

治安

治安がめっちゃ良い。

深夜に歩いていても危険を感じないし、女性1人で歩いている姿も何度も見た。

ルフレジが普及しているが、そのセルフレジに対しても特に監視などがされている感じはない。

さいごに

めっちゃ楽しかった。

上海到着当日に @horamune163 さんに見どころ案内をしていただいたのもあって、非常に充実した4日間を過ごすことができた。

ここには載せていない写真や整理しきれていない考えもあるので、もっと誰かと話してみたい気持ちがある。

*1:自転車扱いで、免許なしで乗れるらしい。ほとんど音がしなくてめちゃくちゃ静か。接近に気付けないこともあってちょっと怖い。

空車のタクシーを見分けるのがむずかしい

TL; DR

空車のタクシーを見分けるのがむずかしくてつらいという日記です。

屋根に乗っている電灯(行燈)

基本的にはコレを見れば一発で判別できるはずなんだけど、(タクシー会社によるが)そこまで明るいものでもないので、晴れの日の昼間とかだと点灯しているのか消灯しているのか判別するのが難しい。

ダッシュボードに乗っている表示板

たぶん、以下のような対応になっている気がする。

表示
空車
割増 黄緑
迎車 オレンジ
回送 オレンジ
実車 (無)

これが個人的には直感に反する。

Available / Not Available に色をつけるなら Available / Not Available ではなく Available / Not Available だと思う。

文字を読めと言われるとそれまでだが、遠目だと読めないことも多い。

どうなっていると嬉しいか

色の判別が苦手でも、日本語が読めなくても、自分が乗れるタクシーかどうかを簡単に判別できるようになっていると嬉しい。

Available / Not Available のイメージに則った上で、Available だけ表示すれば良いのではないかという気がする。

ユーザーにとっては「自分が乗れるタクシーなのかどうか」しか基本的に興味がないはずなので。

たとえばこんな感じ。

表示
空車 黄緑
割増 黄緑 or オレンジ など*1
迎車 (無) *2
回送 (無)
実車 (無)

光ってれば乗れるし、光ってなければ乗れない。

おわりに

法律とかの縛りもあるだろうし、私はデザインッチョットデキルパーソンではないので的外れなことを言っている可能性も高いけど、もっと簡単にタクシーを捕まえられるようになればいいなーという気持ち。

*1:料金が上がっているならそれはユーザーに伝えるべきなので。

*2:現地到着して待機中は何か光ったほうが良いと思う。

消費税つらい

これは何

消費税の端数処理がめんどくさすぎることについて、あーだこーだ言うだけのエントリ。

問題

あらためて言うまでもないかもしれないが、現在、この国では消費税というものがあって、一部の例外を除いて、商品の価格に加えて8%の金額を税として支払う必要がある。 税抜100円のものを買うと、8%にあたる8円の税がかかって税込108円支払う必要がある。

値札に税抜価格を表示して精算時に税込価格を算出すれば良いケースであれば、その通りにすれば良い。

一方、値札に税込価格を表示したいケースではめんどくさくなってくる。

税込価格と税抜価格の変換

税込680円ののものは 680 / 1.08 = 629.6296... となり、税抜630円になる。すると、630 x 1.08 = 680.4 となり、四捨五入して税込680円になる。

同様に税込780円のものについて考えると 780 / 1.08 = 722.22... となり、税抜722円になる。すると、722 x 1.08 = 779.76 となり、四捨五入して税込780円になる。

合わせ買い

税込780円のものを3つ買うと税抜合計が 722 * 3 = 2166] 円になる。この税抜合計2166円に対して税込価格を算出すると 2166 x 1.08 = 2239.28 となり、四捨五入して税込2339円になる。「780円のものを3つ」買ったはずなのに!

同様に税込680円のものを3つ買うと税抜合計が 630 x 2 = 1260 円になる。この税抜合計1260円に対して税込価格を算出すると 1260 x 1.08 = 1360.8 となり、四捨五入して税込1361円になる。「680円のものを2つ」買ったはずなのに!

ここでは端数処理を四捨五入 round で扱ったが、切り上げ ceil や切り捨て floor にしても同じ問題が起こる。

問題の構造

消費税が8% (0.08) であることによって、素朴な掛け算だけでは計算結果が整数に閉じない。そこで、round/floor/ceil あたりの端数処理を加えることになるが、この端数処理のせいで分配法則が成り立たなくなる。

つまり、税抜価格から税込価格を算出する関数 f について一般には

f:id:s_osa:20190329110602p:plain

が成り立たない。

解決策

税抜価格算出時の端数処理を floor にする

合わせ買いしたときにお客さんが損をしないようにする。

つまり、

f:id:s_osa:20190329110632p:plain

が常に成り立つようにする。

メリットはお客さんが損をすることがない。 デメリットは「利益が減る」「1円のお釣りが発生するケースが増える」あたり。

税込価格ではなく「参考税込価格」などとしながら、実際に運用されているのもよく見かける。

個々の商品に対して税額計算する

右辺を使うようにする。

これができるケースならシンプルで良さそう。

税込・税抜の併記をやめる

一番シンプルっぽいが、この問題にぶつかってる時点でこの選択肢を取れる場合は少なそう。ただ、本当に無理なのか問い直してみる価値はある。

消費税率を変更する

消費税率が8% (0.08)だから素朴な掛け算の結果が整数に閉じない。

つまり、消費税率が整数(0%, 100%, 200%, ..., 100 * n %, ...)であれば、整数に閉じるようになる。

通貨を変更する

我々は暗黙のうちに通貨が整数として定義されていることを受け入れてしまっている。

通貨の定義域が有理数に拡張されれば、8%の消費税を掛けた結果も有理数に閉じる。

おわりに

現実世界はたいへん。 すべての物事を設計するときに simplicity 大切にしてほしい。

ガッと書いたので漏れなどあるかも。