お金をください

携帯無料ゲームは、会社によってずいぶんお金に対する態度が違うもんだ、と思った。

数週間前にコロプラに招待された。携帯のGPS機能を使って、現実世界の移動距離に応じてポイントがもらえる位置ゲームだ。そんなもの興味ないんだけどなと最初は思ったが、やってみたらハマった。特に何が面白いというわけではないが、もらったポイントを使って街づくりをすると、その街を育てたくなる。育成系ゲームの一種だ。

なるほど、ゲームもなかなかいいもんだと、勉強もかねて GREE の「しろつく」も始めた。こちらも、城下町を育てるゲームだ。城下町を繁栄させて、他の国と合戦をする。といっても僕はまだ合戦できるレベルにまで至っていない。

コロプラもしろつくも、無料で遊べる。しかし時間がかかる。無料の範囲で遊ぼうと思うと、次の操作ができるようになるまで時間を要するように作られている。お金を払うと、短縮できる。ゲームをどんどん進められる。ぜったいこんなものに金を出すもんか、と頑張っていた僕も、コロプラに1500円も払ってしまった。意志が弱い。

類似した2つのゲームを同時進行してわかったこと。それは、GREE の方がお金を払うまでの導線が、良い言い方をするなら、洗練されているということだ。お金を払う気があるなら、迷うことなく支払いまでいける。お金を出してください、と臆することなく主張している。全力でお金を求めている。

一方コロプラは、お金を払うまでの導線がわかりにくい。でもこれは、導線設計が下手だとか、ユーザビリティの重要性を理解していないということではない。お金をもらうことに対する罪悪感が根底にある。本当にいいんですね、納得して払ってくれるんですね、ならお願いします、と主張している。せっかく払う気分になったのに、まどろっこしい。

2社の勢いを見ると、お金をくださいと真っ直ぐに言う方が得られる収入は多いらしい。もちろん逃げていく顧客もいる。しかし恐れずガツガツ行った方が総収益は多い。これは会社や個人事業主としての商売だけではなく、会社員にも当てはまる。

僕個人はコロプラ型だから、GREE型に脱皮するか、GREE型の人と組むと実入りが多くなるんだろう。そうやって会社ってできてるんだな。

Windowsで消せないファイル

開発中のプログラムの問題で、Windows7 上に c:. という名前のディレクトリを作ってしまった。エクスプローラから消せない。コマンドプロンプトから消せない。Cygwin の bash から消せない。Eclipse から消せない。どうやっても消せない。

いい加減あきらめようかと思ったとき、cygwin から mv c:. rarara としたら、あっさりとリネームできた。

スタンフォード大学のオンライン講座

スタンフォード大学がオンラインで無料提供する人工知能講座の受講登録が始まった。 http://www.ai-class.com/

この授業の教科書である Artificial Intelligence: A Modern Approach (AIMA) 第3版は、11,000円で1,150ページもある巨大な本。第2版は日本語を含む12の言語へ翻訳され、世界1,200を超える大学で使われている。Wikipediaによると、世界でもっとも人気のある人工知能の教科書とのこと。日本では東大、京大あたりは当然として、防衛大学校でも使われているらしい。

著者であり、このオンライン講座の講師でもある Peter Norvig は、NASAで計算科学部長を務めた後 Google に移り、現在は研究本部長。この講座のメインの講師 Sebastian Thrun は、Google Street View の共同開発者としても知られる。

こんな分厚くて重くて高い本は電子書籍で読みたいものだ。Kindle版、Nook版、eTextbook版がアナウンスされているが、Kindle版のみ未だ購入不可。

Amazon http://www.amazon.co.jp/dp/0136042597 http://www.amazon.com/dp/0136042597

Nook版 (BNの紙版より20ドルほど安い) http://search.barnesandnoble.com/Artificial-Intelligence/Stuart-Russell/e/9780136042594

eTextbook版 (180日間レンタルで60ドル弱) http://www.coursesmart.com/dp/9780136067337

2章分のPDF http://www.pearsonhighered.com/product?ISBN=0136042597

機械学習の講座もある。こちらの受講登録はまだ始まっていない。

http://www.ml-class.com/

ドラッカーと会計の話をしよう

『ドラッカーと会計の話をしよう』 林 總(はやし あつむ)

小説仕立ての会計本。イタリアンレストランを起業して3年、経営に行き詰まり店を手放そうとする42歳男。売買交渉に向かう飛行機の中で隣り合わせた初老の男性から会計のレクチャーを受け、店の自力再生を決心する。

・儲けと利益は違う。利益はいくらでも操作できるが、儲けは恣意的にいじれない。収支計算と利益計算のタイミングは異なる。 ・利益のみを追うと、会社の存続を危うくする。黒字でも預金は底をつく。 ・利益は会社が新たに作り出した価値。その機能は3つ。事業活動の評価基準、リスクのカバー、資金調達。 ・儲け = キャッシュフロー。キャッシュフローの元データは預金通帳。 ・会計は最古の情報システム。陳腐化している。期間利益計算は役に立たないが、社会制度が求めるものであるから出す。 ・コストの90%は価値を生まない。成果を出すには何をすべきか、論理的に考え抜く。勝負は戦う前に決まる。 ・商品のライフサイクルを把握して戦略的に組み合わせる。今日の主力製品は遠からず昨日の主力製品になる。明日の主力製品は今日の主力製品となる。そして開発製品の一部を明日の主力製品に成長させる。

学び、気づきの多い良書だが、ドラッカーの言葉の引用から解放されれば、さらに読ませる本になっていただろう。この著者は、利益と儲けの違いを数ある自著で繰り返し説いている。利益中心の頭になっている我々にとって、キャッシュフロー中心の頭に移行するのは難しい。黒字ではなく、儲けを目指さなくてはと、改めて思う。

MySQL の VARCHAR と TEXT

RDBMS に MySQL を採用したシステムで、VARCHAR の代わりに TEXT を頻用するプロジェクトがあった。そんなに昔の話ではない。つい最近作られたシステムだ。

VARCHAR も TEXT も可変長文字列を格納する型で、アプリケーションから見るとあまり違いがない。どちらも SQL で同じように扱える。しかし、こんな場合は VARCHAR を使うのが当然じゃないか。わざわざ TEXT を使う理由がない。そう思ったのだが、調べてみると意外に複雑な問題であった。

使う SQL はほとんど同じでも、VARCHAR と TEXT の MySQL 内部における扱いは、だいぶ異なる。InnoDB の場合は、長い VARCHAR は自動的に TEXT と同じように扱われる。MyISAM の場合、VARCHAR は行の中にインラインで保管されるが、TEXT は別オブジェクトとして格納される。従って、SELECT の出力に TEXT型カラムが含まれる場合、ルックアップが一段階増える。これによってパフォーマンスへの影響が出るとは言えないが、メモリ使用量は確実に増える。さらに、ソートしようとするテーブルに TEXT が含まれる場合、オンメモリソートで使われる MEMORYストレージエンジンが TEXT を扱えないため、テンポラリテーブルを使った、より遅いソートに切り替えられる。これで、VARCHAR に替えて積極的に TEXT を使う理由はないことがわかった。

唯一、大きなサイズになる可能性があるテキストを扱うときは、TEXT のほうがいい。パフォーマンス云々というより、データの意味として、ブログ記事やメールテキストなどのようにサイズ上限が設けにくいテキストの場合は TEXT のほうが適切だ。そのほか、アプリ側でサイズ上限があったとしても、VARCHAR(10000) にするくらいなら TEXT のほうがいい。なんとなく気分的に。このあたり、パフォーマンス上の理由を語れないのがつらい。

よく見かける VARCHAR(255) というスキーマは、昔のなごりだ。2005年にリリースされた 5.0.3 (Beta版扱い、正式版は 5.0.4) で VARCHAR は最大255文字から65,535文字へと拡張された。これよりも前に作られたスキーマでは、255文字を超えるテキストを格納するのために TEXT を使う必要があった。パフォーマンスを考えると、インラインで格納するなら 255文字(バイトではなく文字)あたりが適切だろうと、MyISAM 全盛期に設計者が考えた結果だったのかもしれない。

TEXT vs. VARCHAR http://www.pythian.com/news/7129/text-vs-varchar/

MySQL: TEXT vs. VARCHAR Performance http://nicj.net/2011/01/20/mysql-text-vs-varchar-performance http://news.ycombinator.com/item?id=2531800

VARCHAR vs. TEXT - some performance numbers http://forums.mysql.com/read.php?24,105964,105964#msg-105964

What are MyISAM formats in MySQL? http://www.mysqlfaqs.net/mysql-faqs/Table-Types-or-Storage-Engines/MyISAM-Engine/What-are-MyISAM-formats-in-MySQL