蟻地獄

Twitterに書ききれない長めの文とか書くよ

株式会社VALUにJOINします

この度、私 @mito_memel は、株式会社フロム・ソフトウェアを退職し、株式会社VALUに入社することになりましたのでご報告いたします。本格的に開発に携わるのはまだ1ヶ月ほど先なのですが、既に内部情報にアクセスできる状態ですのでサクラっぽくなってもアレなのでこのタイミングで公表いたしました。

で、誰?

アスキーアートが立体化するアバターチャット作ったりLingrがサービス終了した時に避難所としてCometを使ったWebチャット作ったりHTML5の黎明期にWebGL+WebSocketで3Dアバターチャット作ったりAmazonガチャの炎上に便乗してAmazonガチャシミュレータ作ったりVALUのパロディとして無を売買できるサービス作ったりしている、CivilizationFactorioをこよなく愛するゆるふわエンジニアです。技術ブロガーとしても無名の名を欲しいままにしており、最近書いた記事はこの辺りです。

最近はVALUのタイムライン上でひたすらVALUをdisっており、たぶんVALUをdisった回数で言うと人類で一番多いんじゃないかと思います。

なんで入ったの?

今さらVALUを取り巻く状況については説明しませんが、ご存知の通りVALUは出来が悪いサービスで、そもそも暗号通貨業界自体、私は以前から懐疑的です。NILUを作ったのがきっかけでオファーをいただいたのですが、VALUのフロントエンドのコードはバグだらけだし、プレスリリースで出てくる文章は下手くそかよだし、正直あまり魅力を感じる会社ではありませんでした。しかし、小飼弾さんがリードエンジニアに就任したというニュースを聞き、考えが変わりました。小飼弾さんが入ったことで優秀なエンジニアを集めやすくなりますし、エンジニアの作業環境や待遇がいい感じになる可能性も高くなります。また、VALUの胡散臭さについては、中の人の話を聞いたところ、どうも悪意があるわけではなく本当に天然でただただ手が足りてないだけということが分かってきまして、エンジニアリングとして見てもクソゲーをまともに遊べるようにするというチャレンジには魅力を感じましたので、お話を受けることにしました。たとえVALUがすぐ潰れたとしても幸い再就職先には困っておりませんので、心置きなくこの機会を目一杯楽しもうと思っています。

今後について

NILUおよびvaluforumについては今後も個人として運営を続けます。NDAの都合上、VALUについての意見の表明は減るかと思いますが、今までVALUをdisることに注いでいた情熱は今後はサービスの改善に注ぐつもりですので生温かく見守っていただければと思います。現在所持している他者のVAについてはそのまま保持しますが、今後は他者のVAの購入は行いません。現在設定してある優待は出来る限り続けるつもりですが、今後のサービスの展開次第では提供をやめる可能性もありますのであらかじめご了承下さい。

VALUの正体はIPO投資バブル

VALUは発行者がMy VALUを100%持った状態でスタートします。発行者の人気が出るとVALUが欲しい人が増えるので、需要と供給の原則によりVALU価格は上がります。発行者がMy VALUを売却すると市場に流通するVALU総量が増えるので、需要と供給の原則によりVALU価格は下がります。つまり、発行者の人気上昇速度とMy VALU売却速度が均衡してやっと現在価格が維持できるのです。人気が上昇していないのにMy VALUを売却すれば価格は下がるのが自然です。逆にVALUが値上がりするためには、人気上昇速度がMy VALU売却速度を上回る必要があります。VALUの値上がりを期待して買うというのは、実はかなり分が悪い勝負なのです。

でもVALUをやっていると、「有名人の初動を押さえて儲かった!」とか「○日連続ストップ高!」みたいな景気の良い話をよく聞きますよね。実はこれ、上記の需要と供給の仕組みとは全く関係ありません。VALUの初値は登録時のSNSフォロワー数によって決まります。ですが、この初値は大抵安すぎる価格になっています。なので、初値から適正価格に調整されるまでの間は価格が上がり続けるのです。初値近くで買って、買う人がいるうちに売り抜けられれば差額が得られます。これは株の世界でいう「IPO投資」に当たります。これは参加者同士でゼロサムゲームをやっているだけであり、「発行者に支援したら人気が出てVALU価格が上がった」のではありません。そもそも、アーリーステージの個人に投資して、1~2週間みたいな短期で結果が出るわけがないのです。現在のVALUは、運営が意図した「個人を応援する」のとは全く別のゲームで盛り上がっている状態です。

VALUが運営の意図した使い方をされるためには、「IPO投資で儲からなくする」というのが一番有効なのではないかと思います。もちろんそれにより流入する資金は減るでしょうが、このままIPO投資バブルが続けばVALUは個人の応援とは名ばかりのevilなサービスになってしまいます。

VALUユーザー向けクイズ 中級編

次の中から正しい記述をすべて選べ。

  1. VALUは、個人を会社に見立てて疑似株式を発行できるサービスである
  2. VALUは、個人の信用を時価総額という形で数値化するサービスである
  3. VALUは、継続的に支援者を募ることができるサービスである
  4. My VALUを売却するときは、価格がなるべく高くなるように少しずつ売却すべきである
  5. My VALUを売却するときは、既存のVALUERに損をさせないように現在値より高い価格で売却注文を出すべきである
  6. 他の人のVALUを売却するときは、VALUの価格を下げないように現在値より高い価格で売却注文を出すべきである
  7. My VALUの価格を吊り上げすぎて売れにくくなってしまっても、今後VALU分割が実装されるので問題ない
  8. My VALUの現在値に応じて優待の所有VA条件はこまめに変更すべきである
  9. 優待には期限が設定できるため、継続しにくい手間のかかる優待を設定しても問題ない
  10. VALUを退会するときは、売却したMy VALUを全て買い戻すのが望ましい

VALUユーザー向けクイズ 初級編

Twitterのフォロワー数がそこそこいるたかし君は、最近話題になっているVALUというサービスが気になり登録してみました。最初は胡散臭く感じたのですが、小飼弾さんも入社したということですし、きっと悪いようにはならないでしょう。たかし君はMy VALUの発行を申請し、無事審査を通過しました。

たかし君のVALUは売り始めてから数日間は飛ぶように売れました。投機目的の人や、元からファンだった人が、安いうちに買っておこうと我先にと飛びついたからです。たかし君はVALU上での宣伝活動も積極的に行っていたので、たかし君の才能を見つけた新たなファンもVALUを買ってくれました。たかし君は今後もこの勢いでVALUが売れ続けると信じて気前の良い優待を設定しました。「マンツーマンでブログのコンサルをします!」

しかししばらくすると、たかし君のVALUの売れ行きは落ち始めました。元からファンだった人には一通りVALUが行き渡り、投機目的の人は最初の勢いが落ちたと見て利確し始めたからです。今後は、新たなファンを増やすか、既存ファンに買い増ししてもらわないとVALUは売れません。しかし、たかし君のVALUは最初の数日間でストップ高を繰り返していたため既に結構な高値が付いてしまっており、ファンでもなかなか手が出なくなってしまいました。

たかし君は考えます。今の値段だと買いづらいので、もうちょっと値段を下げて売ってみよう。しかし売り注文を出すと、1人のVALUERから非難の声が上がりました。「私のほうが先にファンになっていち早くVALUを買ったのに、それより遅れてきたファンに安く売るとはなにごとだ。それならなぜ私にその値段で売ってくれなかったんだ。」なるほど、この主張はもっともです。たかし君は現在価格より安値ではVALUを売らないと決めました。

結局そのままたかし君のVALUの価格は下がらず、新規のファンがVALUを買いづらい状態が続きました。たかし君のVALU内での収入はほとんど0になってしまいました。この頃になって、たかし君はようやく気づきます。

「うわっ…私の優待、気前良すぎ…?」

たかし君はVALU内での収入が継続的にあることを前提に優待を設定していたのですが、今の収入はほぼ0です。しかしたかし君は既に結構な数のVALUERを抱えており、彼らに優待を行う責任があります。今さら優待をやめると言えば信用はダダ下がりです。たかし君は端金と引き換えに一生ブログのコンサルを続けることになりました。めでたしめでたし。

ここで問題です。たかし君はどうすれば良かったでしょうか?また、VALUのシステムをどう変えればこのような事態が起こらなくなるでしょうか?

VALUのルールはおかしい

VALUは発行数が決まっており、今のところ増資も分割もできません。これは、エルドラド(黄金郷)伝説に学ぶ、VALUで増資を許すことの愚かさで指摘されている通り、VALUを株式と捉えると至極真っ当な制限です。

では、VALUの増資・分割は今後もできないと仮定して、発行された自分のVALUを全て売り切ってしまった人はその後どうすれば良いでしょうか?まあ実際にはVALUを全て売り切るのはけっこう難しいので、売り切らなくても需要が飽和してVALUがそれ以上売れなくなったタイミングということでも良いです。要は、自分のVALU放出による収入が無くなった時点ということです。

この時点では既に結構な数のVALUERを抱えています。VALUによる収入はこれ以上見込めませんが、今後もVALUERに対して優待を続けていくつもりなのでしょうか?もちろん優待には期限が指定できるので、その期限切れをもって優待を終了とすることもできます。ですが、魅力的な優待でVALUの価格を維持してきた人の場合、優待を終了するとVALUの価格は暴落し、信頼は地に落ちます。各所で指摘されているような、売り逃げ悪徳ユーザーと変わらなくなってしまうわけです。

本物の株式の場合、IPOによって得た資金で事業を行い、その収益を株主に還元しています。事業によって継続的な収入があるため、当然ですが新規公開株を売り切った後も株主への還元を継続できるわけです。じゃあVALUでも新規公開VALUの売却益は事業を起こすために使い、その事業の収益をVALUERに還元するのが健全なんじゃないかと思いますよね。

ところがどっこい、実は「VALUの発行により得た対価を充てて事業を行い、これにより生じた収益又は当該事業にかかる財産をVALUERに分配する行為」は利用規約で明確に禁止されています。本物の株式になっちゃうと法律的にヤバいので、本物の株式のようには運用できないようになっているのです。VALUを売り切ってしまった人は、VALUと無関係の事業で得た収益を投じて優待をボランティアで継続していくか、優待を終了して売り逃げ呼ばわりされるかの2択を迫られるわけです。

このルールのおかしさは、VALUが株式を模しているにも関わらず、本物の株式になってしまうと違法であることに起因しています。VALUがこの先生きのこるためには、株式を模すことをやめ、現状多くのユーザーがそう認識しているように、サービス利用権のマーケットプレイスとしてルールを整備し直すのが健全だと思います。

VALUで自分のWebサービスのソースコードが売れた話

www.itmedia.co.jp

好きな言葉は不労所得です。

情弱から金をむしり取る悪の集金システムVALUが話題ですね。私も情弱を騙して一山当てようと思い登録してみました。プロフィールに堂々と「VALUのパロディサービスNILUを運営しています」と書いておいたので審査通らないかと思ったんですが、なんか1日でスムーズに通ってしまいました。さすが小川晃平さん、チャレンジングなサービスだけあって柔軟な対応ですね。お礼の気持ちとして小川さんのVALUを1個買っておきました。3万円くらいしました。完全にぼったくりですね。

さて、VALUでは優待を設定できるということなので、「VALUのパロディサービスNILUの全ソースコードを提供します!」という優待にしました。他人のふんどしをぺんぺん草も生えないほど使い尽くしてやろうという魂胆です。

木曜日から売り始めたのですが、今のところ30個ほど売れ、7000円程度の売り上げとなっています。プロが2週間かけて書いたコードの対価として7000円が正当かというと完全無欠に安いのですが、趣味でさくっと作ったサービスのコードに値段が付くというのは不思議な体験です。

こういう、ふわっとしたものを売ることができるプラットフォームって今まであまり無かったんじゃないでしょうか。意識が低い人向けのCAMPFIRE、あるいはnote界のメルカリとして、VALUをサービスの売買プラットフォーム代わりに使うのはなかなか面白いのではないかと思います。

もちろん各所で指摘されている通り、VALUには金融商品取引法が適用されず、相場操縦もインサイダーもやり放題の世紀末無法地帯となっています。使ったお金は基本的に戻って来ないと思っておいたほうが良いです。ですが、お金を使わずに気になる人をウォッチしておくだけでもぬるっとした人がたくさんいるSNSとして楽しめますし、Windows100%を1冊買ったと思って1000円くらい課金しておくと色々な業が見られて面白いのではないかと思います。

ちなみにVALUは平日9時~18時(※7月からは21時まで)しかやってないので、このエントリを見た時点ではメンテ中のことが多いかと思います。そんな人のためにNILUは24時間営業でやっていますので、VALUに登録する前の練習として遊んでみてはいかがでしょうか。 nilu-is.appspot.com

ちなみに本エントリは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本エントリの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。

VALUのパロディサービス「NILU」を2週間で作るのを支える技術

www.itmedia.co.jp

NILUは以下のような構成となっています。

バックエンド

  • GAE/Go
  • Gin
  • Cloud Datastore
  • Firebase Authentication

フロントエンド

  • Vue.js
  • Bootstrap4
  • plotly.js

RDBは一切使っておらず、Cloud Datastoreだけで頑張っています。 Cloud Datastoreってトランザクション的なことはできるんですが、求められるテーブル設計がRDBとは大きく違ってCloud Datastore固有のノウハウが必要なので毎回設計に迷います。どっかにノウハウ落ちてないですかね。オライリーから「実践ハイパフォーマンスCloud Datastore」みたいなやつ発売されろ。

という制約を軸にテーブル設計していくんですが、1つのエンティティグループに何でも突っ込むと1秒1回制限に引っかかり、逆にエンティティグループを細かく分けすぎると25個制限のために1回のトランザクションバッチ処理できる量が減りやっぱり1秒1回制限に引っかかるという、如何ともしがたい感じです。

証券取引なんてトランザクションの化け物みたいなものなのでこんなん無理やろって感じなんですが、NILUではどうやっているのかというと、売買注文は板に反映されないリクエストキューに一旦書き込み、定期処理でキューから取り出して順番に処理しています。画面への反映に5分くらいかかるのはこの定期処理待ちです。

こうすると並列処理できないのでスケーラビリティは落ちるんですが、並列処理したところでCloud Datastoreは楽観的ロックで競合しまくる可能性が高いので、処理がシンプルになるこの方法を取りました。1回の買い注文でも注文数量が多いと複数人の売り注文とマッチする場合があり1トランザクションで捌ききれない可能性がありますが、直列に処理しとけばたとえ途中でエラーが起きても単にリトライし続ければ注文順に捌けます。

Firebase Authenticationについては、基本スマホとかSPA用っぽいのでページ遷移のあるWebでの使い方が正しいのかいまいちわかっていません。JWTをcookieに保存するのはなんか違う気がしたのでログインが必要なページは一旦枠のhtmlだけ返した後非同期でユーザー情報を取得してきてるんですが、こういうやり方で良いんですかね。よくわかりません。

フロントエンドは雑に使えるVue.js+伝統と信頼のBootstrapです。フロントエンドについては本業ではノータッチなのでほぼ公式ドキュメントからのコピペとかで設計はテキトーです。恥ずかしいのであまりソース見ないでね。

あとplotly.js便利。VALUさんも見づらい謎チャートやめて素直に既成のチャートライブラリ使った方が良いんじゃないですかね。