Code for History

"Code for History"はIT技術を歴史学上の問題の解決に使うコミュニティです。強調したいのは、我々にとってIT技術は「手段」であって「目的」ではありません。「目的」は歴史学上の問題を解決する事であって、必要であればITでない手段も活用します。常に最優先なのは、問題を解決することです。

Strolyの水戸案件『歴史講談 水戸漫遊』の何が「技術者倫理にもとる」ほど問題なのか

先日、Strolyのid:maechabinさんとTwitter上で少しやりあいまして、

たびたび話題に挙げている彼らの水戸案件の問題に言及したのですが、
彼との過去のやり取りではたびたび言及しているので、水戸案件の何が問題かはさすがに彼は理解していると思うのですが、採り上げて論じたことはなかったのと、万一彼も理解していない可能性を考えて、採り上げて論じることとします。

ちなみにStrolyの水戸案件とは、これのことですね。 m.stroly.com

顧客の利益のためならば、自分の製品ではなく汎用手法を薦めることも技術者の倫理だと私は信じる

具体的に彼らの案件の問題を論じる前に、逆に私の元に別の案件が来たとき、私がどのように応じたかを例に挙げてみましょう。
つい最近、某ミュージアムの展示品案件で、私の元にMaplatを使ったシステムにできないか、と友達経由で相談が来たのですが、

友人:
詳細は分かりませんがベクターデータもあるそうなのですが、ベクターとなるとMaplatでは扱えないでしょうか?
こちずふぁん:
ベクターの意味がわかりませんが、もし線を描く意味だと、Maplatは地図上に線を引けますので対応できます。線のアニメーション機能はなく描きっぱなしですが、フル制御をコーディングする必要がありますが、高速で消して描いてをくりかえせば、アニメしてるように見せることもできると思います。
そうではなくベクタ地図ならば、MaplatはMapboxのベクタ地図レイヤを作ることもできるので、スタイルを差し替えれば対応できると思います、私はやったことありませんが。
ただ、Maplatはどこにでも適用するツールではないので、もしMaplatででもできるけど他のツールででもできる案件なら、自由度は圧倒的に他のツールの方が高いでしょうから、他のツールでやるべきです。
Maplatに向いている案件は、不正確な地図を補正などかけずに利用したいユースケースがある案件です。
それも、正確な座標の1対1対応や、線と線の正確な対応、地図同士の自由な切り替え、正確な地図との相互運用、オフラインやイントラネットでの利用といった特殊な要件が絡まない、ゆるふわな位置合わせユースケースでよければStrolyでもできるので、そういった特殊なユースケースがあり、かつ不正確な地図を利用するユースケースであれば、Maplat以外の選択肢はないと思います。
が、不正確な地図を含まない、正確な地図だけで完結できるユースケースなら、既存のGISツール使う方が自由度も高いのでそうすべきだと思いますよ。
その辺も含め、正確な要件もらえれば何を使うべきか含めコンサルできます。

このように回答し、そして実際に私がコンサルした結果、この案件はMaplatの採用を見送り、汎用的なGISツール(OpenLayers、Leafletなど)を用いて実装することになりました。
この案件のユースケースで、Maplatで実現できないことは何一つありませんでした、が、汎用的GISツールでも実現できないことは何一つありませんでした。
実現できる機能に差がない以上、Maplat案件の実績を得るためにMaplatをねじ込んでもよかったはずなのですが、要件上は問題なくても汎用的なGISツールを用いた方が将来の拡張や運用上のメンテなどで利点があるため、顧客の利益の立場に立ってコンサルするべきだと考え、Maplatを採用せず汎用GISを勧めました。
いまだに知名度のないMaplatの実績を1つでも増やしたかった意味では苦渋の判断でしたが、私はこれが技術者としての倫理だと思っていますので、Maplatをねじ込まなかったことを後悔はしていません。

Strolyは、自分たちの技術が採用されることによる顧客サイトの価値低下など無視して、受注を掠め取った

これに対して、Strolyが水戸案件でとった対応はどうだったでしょうか。
水戸案件の絵地図がイラストマップ的な不正確な絵地図であったならば、Strolyで扱うべきデータなので、案件を彼らの汎用システムで受けて全く問題なかったでしょう*1
ところが、水戸案件の場合、想定される機能要件を満たすにはStrolyである必然性は全くなく、それどころかStrolyを使うと機能要件は満たせても非機能要件部分で多くの価値の低下を招くような案件でした。

非機能要件での価値観低下は多岐にわたりますが、一番大きな価値観の低下は「Strolyは正確な地図を正確な地図のまま扱わないこと」です。
水戸案件のサイトで、絵地図と正確な地図を切り替えてみてください。

f:id:kochizufan:20210713104252p:plain
Stroly水戸案件 - 絵地図側

f:id:kochizufan:20210713104416p:plain
Stroly水戸案件 - 正確地図側

全く同じ位置でただ単に地図切り替えボタンを押して切り替えているだけにもかかわらず、地図が全く重なって表示されておらず、ユーザは自分の現在地を見失い、著しく地図利用上のUXを損ねています*2
これが絵地図側が不正確な地図ならば、汎用GISでは扱えませんから、Strolyを提案するのも間違いではないでしょう。
ところが、水戸案件の場合、絵地図側は正確な地図です。
汎用GISで扱える形でデータ化できますし、それを使ってサイトを実現していれば一切ユーザにUXの低下を感じさせることもなかったにもかかわらず、自分たちが受注するためだけにStrolyをねじ込んでいます。
冒頭で私の元に来た相談のように、私のMaplatは機能要件も満たしつつ非機能要件もほぼ低下させることなく実現できてさえ、それでも汎用ソリューションでできることは汎用ソリューションでやるべきだとMaplatを薦めませんでしたが、Strolyは機能要件は満たせても非機能要件部分で大きく顧客に不利益を与えてさえ、自分たちの製品をねじ込もうとする非倫理性を持ち合わせていると言えます。

実際に、機能要件、非機能要件をリストアップしての価値比較

実際に、汎用GIS、Maplat、Strolyで水戸案件を実現した場合の、機能要件非機能要件での実現価値のマトリクスを以下に作成しました。
機能要件部分はどのソリューションを使っても実現できますが、非機能部分で大きな価値の差があり、客観的に見てこれでStrolyを売り込もうという考えが分かりません、正気の沙汰かと思います(別にStroly社が受注して、汎用GISでSIして納入してもいいわけですからね、ただその場合、Stroly社でないと実現できない案件ではなくなりますが)。
位置情報システムのできることの違いがわからないお客さんが気づかないのをいいことに、「我々しかできませんよ」とか騙くらかして受注したのか、或はそもそも、彼ら自身まともに技術を目利きする力がなくて、本気で自分たちしかできないと思って粗悪品を売りつけたのか。
いずれにせよ、すごい技術者倫理の欠如だと思います。

要件の種別 項目 汎用GIS Maplat Stroly
機能 水戸の絵地図を表示する
機能 水戸の見どころピンを表示する
機能 ユーザのGPS現在地を表示する
非機能 サーバ自由度 *3 *4 *5
非機能 システム汎用性、拡張性 *6 *7 *8
非機能 データ汎用性、拡張性 *9 *10 *11
非機能 地図UI/UX *12 *13 *14
非機能 サイトデザイン*15
非機能 コスト *16 *17 △?*18
非機能 来訪者分析*19 *20 *21 *22

実はStrolyが受注する前に私のところに相談が来ていた水戸案件、正確な地図案件だと分かっていればStrolyを使うなとちゃんとコンサルすべきだった

水戸案件にStrolyが使われたことも問題点は以上ですが、実はこの水戸案件、数年前に話が出始めたときに、私のところに相談がきていたのですね。
もちろん別に顧客が私に相談したわけではなく、顧客が相談した先がまた知人に相談して...と何段階かを巡った先に水戸の博物館で学芸員をしている私の友人に相談が来て、水戸の絵地図でStroly的なことをしたいという相談が来てるんだけどどう思う、と相談されました。
もちろん、Strolyに案件を渡すよりできればMaplatで案件を取りたかったですが、しかし当時のMaplatはまだ協力会社も少なく、水戸近辺で案件を受けようとフロントに立って動いてくれそうな会社のあてもなかったので、そこで無理して受注しようとわちゃわちゃして顧客に迷惑かけてもなんなので、まあ1案件くらいStrolyに渡してもいいんじゃね、ということで特にアクションを起こしませんでした。
その時はまさか想定されている絵地図が、不正確なものでなく正確な編集絵地図であるということを知らないまま、まあ不正確な古地図ならStrolyが使われるのもしょうがないよね、くらいの感覚でした。
正確な地図だとわかっていれば、Strolyという会社の不誠実さは身をもって、人生をもって知っている立場ですので、顧客に不利益を与えないため何が何でも阻止したのに...と残念でなりません。

大手を振って正確な地図もStrolyで扱える環境づくりのためにこそ、Maplatエンジン採用を薦めたのだが...

このように、Stroly自身の主要機能である不正確な地図処理という矩を越えて、正確な地図だけを扱う案件でStrolyを採用することは、明確な顧客不利益であり技術者倫理的にはあってはならない事でした。
それだけではなく、これはさすがにStrolyに競合製品であるMaplatを売るべきだったとは言えないので倫理に反するとかの話ではないにしても、そもそも不正確な地図処理においてすら、Strolyはあらゆる面でMaplatに劣っており、StrolyでできなくてMaplatにできることはあっても、MaplatでできなくてStrolyにできることはほぼなかったので、つい最近まではそもそもStrolyは、金を集めて名前だけ売れてるので知名度で商売はできていたのかもしれませんが、技術的には存在価値のない技術でした*23

このStrolyの技術的危機状況に対して、新しくStrolyの技術をリードされるようになったid:maechabin氏が取り組まれているのが、地図を用いたコミュニケーション手段などの新しい売りをStrolyに加えることでした。
これまでのStroly技術は陳腐化しておりMaplatと技術勝負しても勝てないので、新しい売りを作ろうとすることはとても正しい戦略だと思います*24

当初、maechabin氏はこの新しい機能の導入とともに、Strolyで古地図と正確な地図の切り替え機能を廃止するようなことを言っていました(それ自身は、私の受け取り間違いだった可能性も否定はしません)。
もしそれが実現していれば、StrolyとMaplatは何ら競合する技術ではなくなりますし、Strolyとしても陳腐化した地図の座標変換以外にも売りができるので、対立する立場ですが双方Win-Winです。
何より、これによって将来のStrolyが水戸案件のような、売りつけるために顧客に不利益な案件を押し付けるようなこともなくなります。
なのでこの間私も、Strolyの新しいUI/UXにバグレポートや利用感フィードバックを送ったりと、Strolyに協力しました*25

が、(私の勘違いだった可能性はあったにせよ)machabin氏は突然、前言を翻し古地図と正確な地図の切り替え機能は廃止しないと表明しました。

これに騙された!と思いましたが、しかしいずれにせよ、Stroly社は方向転換し、今後は地図を用いたコミュニケーション機能を売りにしてビジネスをしていくことに舵を切ったわけです。
であれば、これまでStrolyが虚飾の売りにしていた古地図座標変換技術の存在を売りにしていく必要はないはずで、その部分を最先端の技術であるMaplatエンジンに切り替えても問題にはならず、むしろ水戸案件のような正確な地図を正確な地図のまま扱う必要のある案件でも、Maplatは正確な地図を正確な地図のまま扱えるので胸を張って受注でき、Strolyにとっても益しかありません。
何より、これでStrolyとMaplatが協力関係になれば、別にStrolyを卑怯な会社などとあげつらう必要なく、ともに前に進むことができます。
そう考え、私は代わりにStrolyのエンジンとしてMaplatを採用する案を提案しました。

ですがこの提案を、最終的にmaechabin氏は否定されました。

いやこれ、別に向かう方向の重点は違っても、「古地図と現代地図を切り替えるという機能」自体は能動的に温存している以上、そこは最善のソリューションを使った方がいいんじゃないですかね?
ましてや自分の会社が、過去にその部分で粗悪品を売りつけた前科があるのならば。
にもかかわらずそこを改善しようという意思を持たないということは、そもそも粗悪な技術を売りつけることに悪いという観念を持っていない、改善する意思もない、すなわち新しい売りを作っていくと表明した今後においてすら、やはり引き続き粗悪なソリューションを顧客に売りつけていくし、それを売りとして投資家から金を巻き上げることもやめない意思の表明とみられても無理はないと思います。
とはいえ、まあ本当に彼らが売りを地図上でのコミュニケーションに置いて、水戸案件のような事故案件を引き起こさないのであれば、私の目の前から消えることになるので別にこれ以上追求する気もないのですが、

まあそんなことは起きそうにないので、私の目の前にいる限りは、今後ともしっかり彼らが卑怯で倫理にもとるビジネスを引き続き行わないか監視し、アンテナに引っかかればこれまでどおり、投資元や顧客への情報提供などを行っていきますよ。
...というか、いつまでこんなこと続けるんですかねこれ?私は被害者なので、あと追加で10年続こうとも私の方から折れることは絶対にしませんが、しかし今回のようにこちらから手を差し伸べることは何度も行っているのですが、そのたびに差し伸べた手を払って反目を続けるのがStrolyの側なんですよね。
いい加減大人になりましょうよ...。

まともにGISの価値観もわからない、GISで扱うべき案件を貶めてまで虚飾を得たいのなら、GISエンジニアの看板など下ろしちまえ

で、この記事を書いている間に、無事Twitterでmaechabin氏にブロックされました。すばらしいですね。
とても優秀なエンジニアの方ではあるのですが、まあStrolyにはまればこうなっちゃうというか、まあ悪貨は良貨を駆逐するとはよく言ったものです。

この人、Twitterの自己紹介で「GIS技術者」の肩書を名乗っており、また水戸出身のようなのですが、その故郷のはずの水戸に、汎用GISであれば有効に扱えたはずの案件で、自社の自分担当の粗悪品を押し付けた形になっています。

twitter.com

いや、自分の扱う製品で故郷に錦を飾ったつもりだったのかもしれませんが、確信犯なのか、それともGISの価値観が分からなかったのかは知りませんが、結果的に故郷にクソを塗り付けた形になっている。
GISエンジニアの肩書を名乗りながら汎用GISの扱う価値観もわからないのならば、GISエンジニアの肩書など下ろしちまえ!としか言いようがないですね。
そもそも、Strolyというソリューション自体が、私が内部にいたころに、「絵地図を歪ませないという新しい価値観と、既存GISの架け橋になるような技術に育てましょう」と提案したところ、悪名高い男CEOが、「Strolyは新しい地図を扱う価値観だ、既存GISのような古い価値観を駆逐こそすれ、一緒にすることはない」と拒否してそのまま今まで続いている技術ですからね、それに心酔してはまるんならほんまにGIS名乗るのやめろ、としか言いようがないですよ*26

最後になりますが、Strolyの水戸案件の酷い地図切り替えのようなことが発生しない、Maplatが水戸の地図を扱うとこうなる、というのがこちらの「ぷらっと水戸」になります。

s.maplat.jp

Stroly水戸案件の地図は著作権があるので組み込んでいませんが、採用する許可さえ著作者様から頂ければ、Strolyと違って正確な地図とピッタリ重ね合わせて切り替える様を提供できますよ。
著作者様、興味あればぜひ。

*1:まあ、もっと突っ込めば、当時のStrolyでできることは全てMaplatでより高性能に実現できたので、StrolyではなくMaplatを使うべきだったとなるのですが、まあさすがにそれはね。より高性能が実現できようと、Windowsを薦めるAppleの営業、MacOSを薦めるMicrosoftの営業はいないだろうし

*2:余談ですが、私がStrolyの中にいたころ、あの会社の男の方のCEOは馬鹿の一つ覚えのように「地図のコンテキスト、コンテキスト」といっていましたが、正確な地図を正確なまま扱うということも、地図から落としてはいけない最重要なコンテキストです。水戸の学芸員さんが、見る人にわかりやすい地図にするために、一所懸命古地図から拾った情報を正確な地図の上に再投影して実現した大切なコンテキストを、馬鹿な地図会社が売らんかなで自分たちの向いていないシステムを押し込んだために、学芸員さんたちが命を削ったコンテキストが潰されてしまいました。この1件を見ても、あの男CEOに地図愛など一切ないし、自分からの狭い視野の範囲だけでコンテキストコンテキスト言ってるのがよくわかります

*3:どこでも運用可能

*4:どこでも運用可能

*5:Stroly社サーバ上でしか動作しない

*6:誰でも使える汎用的有名オープンソース

*7:特殊性が増すが、オープンソースなので対応不可ではない

*8:改変はStroly社しかできず、自由度ゼロ

*9:生成したデータは他のGIS用途にも活用可

*10:Maplatは汎用データの読み込み可能

*11:Stroly独自のデータ形式のため、他の用途に流用不可

*12:正確な地図として全て扱われるため、ストレスなし

*13:正確な地図として全て扱われるため、ストレスなし

*14:地図を切り替えるたびに位置を見失い、ストレス大きい

*15:Strolyでないと実現できない画面デザインはない

*16:概算、システム100万円弱+デザイン費

*17:システム100万円弱+デザイン費

*18:クラッチ開発と異なり汎用システムのため安くできるなら〇だが、Strolyの商用案件への提供は安くても100万円以上と聞いている

*19:これは機能要件かもしれませんが、機能的には完全に模倣できます

*20:必要であるならGoogle Analytics+CARTOでデータ収集は模倣可能

*21:必要であるならGoogle Analytics+CARTOでデータ収集は模倣可能

*22:システム化されている、後は分析コンサル?にどの程度の価値があるかどうか

*23:もちろん、無償ユーザの視点では、Maplatにはない手軽なオンラインエディタもあるので導入しやすいと言った部分で、売りがゼロだったわけではありませんが、しかしことエンタープライズ分野においては、地図の編集などは基本的に作業受注することを考えると、Strolyの売りは本当にゼロのため、知名度だけで仕事しているようなものだったと思われます。
無償ユーザの集客自体は広告塔にはなれど事業の核にはなりませんし、もしそれで何百万何千万の地図を集めていれば集合知の先行利益を得たでしょうがそんなこともなくせいぜい見積もっても万単位の地図しか集めてませんし、技術の核は後発のオープンソースに全ての面で後塵を拝してさらに特許を押さえられているのでキャッチアップできない体たらく、デザインや無償エディタなども所詮ノウハウは必要なく労働集約型の機能でしかないので、Strolyに多額の資金を出資として集められるような優位性は、少なくとも2017年~2018年頃にはありませんでした。
しかし、この2017年~2018年ごろに、Strolyは大きな調達を複数回(20172018)行っており、それ以降にも小さな調達を複数回行っています。
まあMaplatの存在について知らなかったならば(それ自体市場調査不足ですが)、嘘をついて資金調達を行ったとは言えないかもしれませんが、少なくとも2018年ごろには私からStroly社に内容証明を送っているので、彼らがMaplatの存在を知らなかったという言い訳は通じませんし、競合技術があるならばそれとの比較を資金調達時に説明すべきだったでしょう。
そういったことをきちんと説明したうえで、なお数億円を調達できるような何かStrolyの優位性を説明できた結果調達できたのならば全く問題はないのですが、どう考えてもそのような優位性は一切あの時期のStrolyにはなかったので、外形的に判断して当時のStrolyは「我々は唯一、あるいは最も優秀な技術」と、自ら嘘とわかっている説明をして調達を行った疑いを否定できず、そのことを私はたびたび指摘しています

*24:もっとも、その新しい地図を用いたコミュニケーション手段として実装されている機能自体、私が10年以上前に思い付き4年前に具体化言及した機能と全く同じものでしかありません。まあ、IT業界どんなにアイデアを出したのが早くても実装した方が勝ち、的なところがありますので、別に私もこれに対し過度に私のアイデアをパクったとかも言ってません。
しかしながら、いまだに彼らが私の掌のうちを出られていないのも確かですし、また仮にこの地図を用いたコミュニケーション機能などで彼らが特許を出していたりしたら、それは私の記事で公知のアイデアになっているので当然潰しに行きますし、彼らの恥知らずさを喧伝することとなると思います

*25:このStrolyの新しい売り自体も、別に先の脚注で書いたように私が先に公知にしているので特許が取れるわけでもなく、労働集約で実現できる機能でしかないので、Strolyに守られた技術的優位などはいまだに何一つありません。
ですが、私がStrolyを責める理由は、私が彼らが行った卑怯な行為、違法な行為に被害を受けた被害者という過去の損害に加え、今現に、知名度と卑怯なやり方で集めた資金力で、私のMaplatソリューションの行く手を邪魔している(しかも、相対的粗悪品を売りつけることで、市場への期待値を下げる形で)というリアルタイムの損害を与え続けているからです。
逆に言うと、彼らが私の前に立ちふさがらなくなるならば、私に彼らをあげつらう動機はそこまでありません、過去の損害は言っても10年以上前の話ですし。
Strolyのやり方は卑怯で恥知らずですが、世の中には卑怯で恥知らずなビジネスをやってる会社などゴマンとあるので、その卑怯なやり方で私の前に立ちはだかるようなことさえなけりゃ別に責め立てたりはしないですし、逆にその状況に向かうために協力だってしますね

*26:でもって、その男CEOに否定された価値観を踏襲して、古地図を歪ませないのと既存GISを共に扱えるように進化したのが、今のMaplatでですね

© Code for History