こんなイベントをやりたかった!MyNA望年LT大会2020

 本日、MyNA(日本MySQLユーザ会) 望年LT大会2020 をオンラインで開催しました。 顔を突き合わせて、ちょっとばかりのアルコールを摂取しながら、楽しい気分で大好きな技術を語り合う場というのは、やっぱり素晴らしい何かが生まれる場でもあります。一方で、リアル店舗を予約しての開催は主催側としては様々なリスクを抱え込むことでもあり「それでもやりたい!」と思えるモチベーションとのバランスに勝った時にのみ開催可能なイベントでもあります。
 そんな中で、なんとなく一番口実を作りやすい「年末に1年を振り返りましょう」ということで過去2回ほどリアル店舗で開催してきた「MySQLユーザ会 望年LT 大会」。今年はさすがにリアル店舗での開催は難しいと判断し(開催案内を出す直前まで、リアル店舗とのハイブリッドが可能かどうか模索していたのですが、やっぱり無理と判断しました)、完全にオンラインでの開催となりました。

mysql.connpass.com


 もうね、「こういうイベントがやりたかったんだよ!」というイベントそのもので、とにかく楽しかった!参加してくださった皆さん、発表してくださった皆さん、わいわい盛り上がってくださったみなさん、ありがとうございました。

 セミナー形式のイベントってね、発表する人がすごく頑張って用意して、思い入れを持って発表してくれて、でも聞く側はそれらをチャンネルをガチャガチャ変えるように*1 消費している雰囲気があって、なんだかもったいないなぁと感じていました。質疑にしても、質問者と発表者の二者の会話に閉塞しているケースがほとんど。

 発表者は、発表という形式を通して話題を提供してくれるものであって、その後は、それを聞かせてもらった人たちで、わいわいできるような場所(もちろん発表者は他の人よりも、そのテーマについて考えていた時間は長いので、結果として発表者が説明する時間が長くなるのは、それはそれで良い)、言い換えると、発表者が用意してくれた「エサ」をみんなで味わい、楽しむような、そんな場ができたらいいなぁと考えていました。「発表してくれた内容を肴に」というやつですね。

 それがまさに実現されたのが、今日の「望年LT大会」でした。一応進行プランは用意していたものの、結局は、冒頭の歓談タイムを終えた後は、ずっとLTでした。 件数が多かったわけではないのです。そこから2時間かけて、(一応ひと枠5分の)LTが5本だけ。全然計算が合わない(笑) 。ひとつの発表が終わると誰かが、感想や疑問点などを語ってくれて、それに対してざっくばらんな「わいわい」が始まるのです。発表してくれた話題をみんなでしゃぶり尽くす。まさにこんなイベントをやりたかった!

 発表自体も、そもそも「呑みの席での軽いLT」としてお誘いしていたので、時間をかけて周到に用意したものとは限らない感じで、それがいいんです。各個人の中にある体験、思いなどを伝えていただく「発表」なので、そのメインは語り。資料はそれを効果的に伝えるための補助具、という位置づけです。 伝えたい内容はしっかり考えていただくとして(最近体験したこと、普段から考えていることなのできっと大丈夫)、資料準備にかける時間は最小限に。会が始まってから作ってもいいくらいですよ(笑)。


 みなさん、結構しっかりした技術的内容を以て発表してくださった中で、私自身はネタLT的なものをやらせていただきました。「いまはむかしLT」と称し、その時代になりきって発表をしていただくという趣向です。ユーザ会の20周年記念イベントでやりたいなぁと思って用意していたものでしたが、なんとか2020年のうちに披露できて良かったです。
f:id:sakaik:20201212115942p:plain
 「いまは2006年」として、『超極める!MySQL』という本が出ますよ!というお話をさせていただきました。最近はMySQLをビジネスの現場でも採用する企業さんも増え始めたので、そういった会社さんにインタビューの形でお話を聞かせていただいた記事(広告じゃなくて記事なんです!)を主に紹介しました。InnoDBに詳しくきっと2020年頃には世界的なInnoDBのプロフェッショナルになっているだろうな、という人とか、同じくストレージエンジンを自分で作っちゃって、将来はきっと海外で会社作っちゃうんだろうなという人とか、2020年頃にはMySQLに鬼詳しくてユーザ会の副代表も務めちゃうことになりそうな人(まだ入社もしていなかったのかな?)を輩出するであろう会社さんとか*2、2020年頃にきっと「良い時代に、良い方たちに、良いお話をきかせていただいたな」と思い返すことになるでしょう。


 さて、2020年に戻って来まして。
MySQLユーザ会では『41 speakers in 2021』プロジェクトと称して、2021年中(2020年12月から21年12月の13ヶ月間) に41人のユニークスピーカーにお話をいただくことを目標としています。そのスタートとなる今回のイベントでは5人の方にお話いただきました。タイトルは、あんまりタイトルっぽくなかったのが多かったので、内容を紹介する形で勝手につけました。

01. @mita2 さん: mysqlsh の dumpInstance の話、その後
02. @hmatsu47 さん: プライマリーキーと Right Growing Index の話
03. @teckl さん: 本番環境のMySQLを超越アップグレード成功した話
04. @sakaikさん: いまは2006年! 書籍『超極める!MySQL』が出ます!
05. @tom__boさん: ハイパフォーマンスレプリケーションの新アイデア

発表ありがとうございました。


 今回、Zoomに接続されているものの特にお話をされなかった方もいました。お声がけしようか、ちょっと迷っていたのですが、ただワイワイの場に居て聞いているだけでも楽しい、という方もいることは存じているので、そうしたいのかなと判断して特にお声がけをしませんでした。声かけてほしかったなーという方がいましたら、すいませんでした。その時々に応じて、気を配ったり配らなかったりしますので、もう一歩、中に入ってもいいかなーと感じた方は次回以降、ぜひ積極的に参加してくださいね。


 それにしても(本日これ言うの何度目だ)楽しかった。 オフラインの、同時多発的にあちらこちらで話題が広がるものとはまた異なり、オンラインではひとつの話題を全員で共有するのが基本であることと、細かい発表資料や実行例などが各自目の前の画面上で見やすい事から、今回のようなより細かい話題でも話が深く拡がりやすい面があるかもしれませんね。
 そして、もうひとつ。「やっぱり、クローズドな場は、ざっくばらんな話もすることができて、楽しい」ということ。MySQLユーザ会では、イベントのオンライン化をしてから、ほぼすべてのイベントを録画・YouTube公開をしてきましたが、事後公開が前提としないことで登壇が可能になる人もいるし、公開前提でないことで、ざっくばらんに意見交換できるところもあって、ちょっと今後の対応の方針について、考えたい部分も出てきたなーというところです。

 顔をつきあわせて、飲み食いできる状態に、はやくなってくれたらいいなぁと思うと同時に、たぶんそうなっても、オンライン開催という形態、そしてたぶんハイブリッドな開催という形態は生き残りそうだという感触を強くした、今回の望年会でした。

(ちょっとはやめのごあいさつですが)来年は、もっと良い一年にしていきましょう!

*1:イマドキこんなふうにチャンネルは変えない

*2:余談ですが排出と最初変換されまして。排出したらいかん!

A-300ProでもBluetoothワイヤレスMIDIアダプタ WM-1/1D が使えた話

今年の夏頃、Roland から、ワイヤレスMIDIアダプタの発表があり、わくわくして発売を待っていました。
そして手に入れた、WM-1 と WM-1D。手持ちの A-300Pro に接続してみました。
しかし、認識しない。

もうちょっと正確に言うと、WM-1D と WM-1 のペアリングは、ランプの状態を見ると、どうやら正常に行われていると推測できるものの、A-300Pro の鍵盤を押してもそれがPC側に伝わっていないように見えるという状況。 PCとA-300をUSBケーブルで接続した際には、PC側に伝わっている(Cubase Element 11 で、MIDIトラックを追加して、鍵盤を押すとインジケータが上下することで確認)ので、A-300が壊れているとか、そういう話ではない。

以下のツイートの環境。


Windows 10 で、Cubase Ele. 11 にて確認トライ
・WM-1D は認識される
・A-300のキーを押してもインジケータは反応しない
・A-300をPCにUSB接続すればインジケータ反応
・IN/OUTは挿し間違えていない(笑)
・A-300はUSB給電(PCではなく電源から)←これを少々疑っているがACアダプタがない..

ということで、現時点で当方で試せる唯一の可能性

・A-300はUSB給電(PCではなく電源から)←これを少々疑っているがACアダプタがない..

に賭けてみることにしました。つまり、ACアダプタ接続をするという選択肢。

A-300Proは ACアダプタ別売りなのです。普段は USBでPCに接続してのUSB給電なので困らないのですが、こういうときにやっぱりACアダプタを持っていないのは困りますね。というわけで、仕方ない、買ったさ。ダメもとで。

f:id:sakaik:20201205220038j:plain

 ACアダプタ PSB-100。

 給電に使っていたUSBケーブルを念のため外して、ACアダプタをつないでみると、
f:id:sakaik:20201205220140j:plain


 あっさり認識した!! デバイスはこうでなきゃ!

気になるレイテンシですが、無線であることをまったく感じさせません(ただし私のこの辺の経験値は低いので、まったくこのレイテンシを許せない人もいるかもしれません)。私は(使用上問題がないのであれば)ケーブルは少なければ少ないほど良いという考え方なので(キーボードもマウスも当然ワイヤレス)、ACアダプタにさえ繋がっていれば良いというのは、かなり快適です。


ということで、USB給電するための設定が別途なにかあるのかもしれませんが、私はたどり着けなかったので、今の私なりの結論:

  A-300Pro は、USB給電の時にはUSB側にMIDI信号を出力する。このとき MIDI端子側には出力しない

と考えるのがつじつまがあうなぁと思ったのでありました。

とりあえず、WM1を買ったのに A-300が使えないと悩んでいる人は、ACアダプタによる給電を試みると良いと思います。

Roland 100V用ACアダプター PSB-100

Roland 100V用ACアダプター PSB-100

  • 発売日: 2007/01/30
  • メディア: エレクトロニクス
 

今後のMySQLに実装されるspatial(GIS)関数たち

これは、RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2020 の2日目のエントリです。


 MySQLのリファレンスマニュアルは、開発チーム内部でそれが実装されたタイミングで記述、公開されるルールになっているのか、まだリリースされていないバージョンの情報が掲載されていることがあります。Spatial (GIS) 関連の機能も同様なので、今後の機能をいち早く知るために、私は頻繁にチェックをしています。最近全然拡張がなかったSpatial関連が「再始動」したかに見えるような変化あったので、紹介したいと思います。詳しい方からの補足、誤りのご指摘等を歓迎いたします。

概要

 MySQL 8.0.23 (2021年1月リリースとみられる)で追加されるのは、ST_FrechetDistance() と ST_HausdorffDistance() の2つ。
MySQL 8.0.24 (2021年4月リリースとみられる)で追加されるのは、ST_LineInterpolatePoint()、ST_LineInterpolatePoints()、ST_PointAtDistance() の3つです。
 最近おとなしかった Spatial 機能にしては、大漁大漁です。マニュアルの (Spatialの)関数一覧のページを見ると、「introduced 8.0.2x」のように書いてあることで、新バージョンで加わった(加わる)機能であることを確認できます。

MySQL :: MySQL 8.0 Reference Manual :: 12.17.1 Spatial Function Reference


ST_FrechetDistance() と ST_HausdorffDistance()

 8.0.23 で追加されるらしき、これらの2つの関数。私も初めて見たものなので付け焼き刃の知識ですが、説明を試みます。
 ST_FrechetDistance() はフレシェ関数、、とくに今回のMySQLでの実装では「離散フレシェ距離」を求めるものです。2つのジオメトリの類似度を数値で返す、と説明されていますが、要するに「2つのジオメトリの点どうしの距離をそれぞれ比較して、それぞれ一番近いものの値のうち、一番遠いものの距離を返す」というものです。これでわかったら、あなたは天才(笑)。
マニュアルには、以下の例が示されているので、これを使います。地理座標系を使うと確認ややこしいので、とりあえずデカルトで考えます(結果は「距離」で返ってくるため)。

mysql> SET @ls1 = ST_GeomFromText('LINESTRING(0 0,0 5,5 5)');
mysql> SET @ls2 = ST_GeomFromText('LINESTRING(0 1,0 6,3 3,5 6)');
mysql> SELECT ST_FrechetDistance(@ls1, @ls2);
+--------------------------------+
| ST_FrechetDistance(@ls1, @ls2) |
+--------------------------------+
|             2.8284271247461903 |
+--------------------------------+

これは略図を書くと、以下のような2つの LINESTRING を示しています。
@ls1 が、緑色の線 PQR
@ls2 が、紫色の線 ABCD
です。
f:id:sakaik:20201201200143p:plain

この、@ls1 を構成する点(P, Q, R) それぞれから、@ls2 を構成する点 (A, B, C, D)それぞれへの長さを調べるのですが、順を追って書くと、まず 点Pから A, B, C, D それぞれへの距離を調べると一番近いのは、点Aで長さ1。点Qから、点Rからも同様に調べていき、このケースではどれも最小値は 1 となることがわかります。更に逆側、点Aから P,Q,Rそれぞれへの距離を調べると一番近いのはPで距離1(中略)、点Cからは 点Rが最も近く、距離は 2.828427。
これらをまとめたのが下表です。

f:id:sakaik:20201201200944p:plain

つまり、フレシェ関数は、2つのジオメトリ(ここではLINESTRING)を構成するそれぞれの点の集合どうしの距離のうち、最も近い物の中で、もっとも大きい数字を返すという説明になるのです。線そのものはまったく見ずに、点のみに着目するので「離散」フレシェと呼ばれます。 個人的には、これ、すごく類似の2つのジオメトリがあったときに、その点の粒度が異なる(片方はある程度長い線分を多様して、もう一方はこまかく左右にぶれたところまで表現しているような)場合に、不用意に大きな数字が返されてしまい、比較の用に供せないのではないかと想像するのですが、どうなんでしょうね。 PostGISだったかな、他のRDBMSでは、第3引数に(unitではなく)密度を上げる=線分を何分割化にわけて点を増やす=ためのオプションがあります。

 あと、MySQL 8.0.23 では、ジオメトリとして LINESTRING のみに対応しているそうです。

 えー、フレシェ距離だけで、書き過ぎちゃったので、あとは軽めに。

ST_HausdorffDistance() はハウスドルフ距離を返す関数。こちらは、LINESTRING, POINT 各シングルとMULTIそれぞれ相互の比較に対応しているそうです。こちらも正確には「離散」ハウスドルフ距離(=線そのものは見ずに構成要素の点だけを比較の対象とする)です。
ST_HausdorffDistance() も用途としては、2つのジオメトリの類似度を判定するために使えるということなのですが、マニュアルに出ている実行例(フレシェ関数と同じ内容)の結果値が「1」というもので、なぜこの値が選ばれたのかイマイチわからず、もっと勉強します。。

ST_LineInterpolatePoint(), ST_LineInterpolatePoints(),ST_PointAtDistance()

MySQL 8.0.24 で実装されるとマニュアルでは表明されている、この3つの関数。どれも、LINESTRINGの経路上のある1点を返す関数です。

ST_LineInterpolatePoint() は、第一引数がLINESTRING、第二引数が 0~1 の範囲の割合。LINESTRINGの経路のうち、指定された割合の位置にあたる場所のPOINTを返すようです。0.5と与えて、ちょうど中間点の位置を得るとかそんな使い方かな。 MySQL独自の拡張の模様。




ST_LineInterpolatePoints() は、上の関数とだいたい似たような感じだけど、指定した割合1回で終わるのではなく、繰り返しになる(0.15と指定した場合は、上の関数(...Point())は、15%の箇所1つを返すが、この関数(...Points())は 15%, 30%, 45%....の各点の座標を MultiPointで返す)。これもMySQL独自。


ST_PointAtDistance() は、割合の代わりに距離を与えるもの。マラソン大会のコースをあらわす LINESTRING がある場合に、この関数を使って、10km地点のPOINTや、35km地点のPOINTを得られる、という使い方なのかな。これもMySQL独自だって。



 8.0.24で追加されることになっている関数。わざわざ優先してこれらの独自な関数を入れた、というのが興味深いですね。大きなお客様からの要望が強かったと考えるのが妥当だと思いますし、そうすると、どの会社が、どのサービスで使うためにこの関数を渇望していたのか。現時点では想像もつきませんが、考えるのは楽しいものです。


 以上、2021年1月と4月にリリースされるであろう MySQL 8.0 の新バージョンで追加される Spatial関係の関数紹介でした。

MySQLにemployeeサンプルデータを入れる

 MySQLでとりあえず何かのデータが入っている状態(そこそこレコードがある状態)が欲しいと思っていたところ、やまさきさんに Employee サンプルデータを教えてもらいました。


 MySQLチーム(Oracle社)では昔から、world, sakila など様々なサンプルデータを公開していましたが、その中にある Employee が比較的大きめであるとのことです。
以下、データをMySQLに取り込んだメモ。
 Ubuntu 20.04 に MySQL 8.0.22 が入っている状態にて。

ダウンロード

MySQL :: Other MySQL Documentation
にアクセスして、"employee data" の "GitHub" の部分をクリック。

Code の Download Zip のリンクURLをメモ(実際は右クリックして「URLをコピー」)。

Ubuntu 上で、そのURLを指定して

$ wget https://github.com/datacharmer/test_db/archive/master.zip

入れ込み

$ unzip master.zip
$ cd test_db-master/
$ mysql -uroot -p -t <employees.sql 

 なお、冒頭で紹介したURLの Employee data の 「HTML Setup Guide」リンク先(https://dev.mysql.com/doc/employee/en/employees-installation.html)では、employee.sql を編集して、InnoDB以外のストレージエンジンをコメントアウトはずすことで指定可能だと書いてありますが、そもそもコメントアウトされたストレージエンジンの羅列はありませんでした。どこかのバージョンで廃止されたのかな。いずれにせよ、InnoDB(デフォルト)で使いたいので、今回は編集不要。

 今回、Oracle Cloud Infrastructure(OCI)上に立てた Ubuntu上で、apt で入れっぱなし(my.cnf類の設定変更一切なし)のMySQL 8.0.22でしたが、1分43秒ほどかかりました。

+---------------------+
| data_load_time_diff |
+---------------------+
| 00:01:43            |
+---------------------+

確認

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| employees          |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.07 sec)

mysql> use employees
mysql> show tables;
+----------------------+
| Tables_in_employees  |
+----------------------+
| current_dept_emp     |
| departments          |
| dept_emp             |
| dept_emp_latest_date |
| dept_manager         |
| employees            |
| salaries             |
| titles               |
+----------------------+
8 rows in set (0.01 sec)

さて遊ぶぞ!



追記:
 5年前にも、この employee データについて認識したいたことが発覚w
 当時は launchpad だったんですね。

sakaik.hateblo.jp

「日本MySQLユーザ会会2020年11月」を開催しました

 4ヶ月ぶりの「日本MySQLユーザ会会」、通称「MyNA会(まいなかい)」を開催しました。 ちなみに「今頃MyNA会やってるのかなー」と思って「MyNA会かな?いま。」と呟くと、これ、回文になっていますので、豆知識として覚えておくと、どこかでネタとして使えることでしょう。

mysql.connpass.com


 今回は、私もひと枠発表させていただいたので、日記も運営面と発表者の面それぞれから。

運営として

 こういうイベントを運営していて何よりも嬉しいのが「開催してよかった」と思える反応があった時です。開催したことによって、何らかの「変化」が起こっている、つまり、開催した意義があったと感じられる瞬間は、運営者にとって何よりものご褒美となります。今回も、たくさんの人が参加してくださり、当日のZoom上やTwitter上でも様々な反応がありました。この会が、気づきや学びのきっかけになれたならば、とても嬉しいことです。 もし、勉強会参加して得たものをブログにでも書こうかな、いや面倒だな、、と迷っている方がいたら、そこは迷いを断ち切ってぜひブログ書いてください! 私の発表枠でも申し上げた内容(みんなの前で発表すること、そして発表の準備をすることで、新たな学びがあるよ、という話)は、実は文章を書くということにも当てはまります。 自分なりに感じたこと、得た物を一旦脳内を通して改めて文章にすると、ご自身のためにもなるし、反応があれば発表者の方も喜ぶと思います。 勉強会に参加した後でブログを書く習慣がない人(最近はほとんどの人がそうですね)は、そういうやり方もあるんだということで、ひとつご検討いただけましたら幸い。

 そして、発表者のみなさん。おかげで、会が成立しています。今回も、非常に濃い内容、幅広い活動、それぞれ発表していただきました。ありがとうございます。

発表者として

 今回、「みんな、MySQLユーザ会の勉強会で発表しよう!」と呼びかける発表をさせていただきました。ほんとは、せっかくのMySQLのユーザ会の勉強会ですから、MySQLに関する技術的な話題で埋めたかったので、そんな中で非技術的なお話にお付き合いいただき、ありがとうございました。 ユーザ会=ユーザコミュニティ=の勉強会って、その技術に興味がある人が集まっているはずですよね。日頃から何かを試したり、気づきがあったりすると思います。そんな話題を持ち寄ってわいわい披露し合う場であってほしいのです。 今回、私が発表としてこういう呼びかけをする必要がある状況というのは、ユーザコミュニティとしては実は危機的である可能性もあると感じています。多くの人に「参加」してもらいたい。自分は聞く側の人間である、と立場を決め込むのではなく、様子見をして雰囲気がわかったところで、一緒にコミュニティを盛り上げる仲間になってもらいたい。 「発表ができる人になる」というのは、あなた自身にも多くのメリットがあります(詳細はスライド参照ください)

 そんなわけで、2021年は「MySQL 41 SPEAKERS in 2021 プロジェクト」をスローガンといたします。なぜ 41 なのか、という疑問をTwitterで拝見しましたが、何のことはない、最初にこのアイデアが頭に浮かんだ時には「100」だったのですが、冷静に考えてそもそも「延べ100人」ですら、そんなにイベント開催できないことに気
づきまして、次に「50ならばどうか」と。 これも実現がちょっと遠いな、ということで 41 に落ち着いた次第です。
 長い尺の発表であっても、5分程度のLTであっても登壇は登壇ですので、ご自身のやりやすい枠で、ぜひ、2021年(もう今年12月からの13ヶ月間でカウント始めちゃいます!)、発表未経験の方は「来年はMySQLのイベントで発表するぞ」との心構えで準備をしていただけたらと思います。もちろん、いつも色々な発表をしてくださっている方も、よろしくお願いいたします。MySQLのイベントは久々になる方や、他のイベントでは発表されている方も、かようなプロジェクトを実施中ですので、2021年にはMySQLのイベントでお話いただければ幸いです。

 あと、特に「自分の発表できることなんて、誰の何の役にも立たないし、みんな知ってることだし、、」と思っている方へ。
今回の発表の中では、話が広がってしまうので割愛したのですが、技術コミュニティって長く運営していると、「レベルが上がって」いってしまうんですよ。初期の頃はインストールでエラーが出たり、ちょっとした使い方に戸惑ったりという人が多く居て、そんな情報交換が行われているのですが、そのうちこの辺を習得した人たちは次の話題にいきます。ユーザ会20年もやっていると、「いつも、よく発表してくれる人」の中には、インストールの話や、初めて my.cnf 色々いじって遊んでみた話をする人は皆無となります。 でも、MySQLにさわり始めた人にとっては、やっぱりインストールは新鮮だろうし、その人が今迄得てきた知識、経験と比べてMySQLが新鮮/違和感 に感じた部分だってあると思います。 なので、まぁ「インストールの話」というのはひとつの喩えではありますが、

というのは、常に新しい人を受け入れ続けるコミュニティの証しとして、非常に重要なことだと思っているんです。だから「いつも発表している、あの人たちと比べて、自分の発表は最先端でもないし。。。」などと思わずに、ご自身の感動体験、ご自分なりに悩み考え解決した自慢話、お聞かせいただければと思います。

 それから、Twitterの反応を見ての思いつきなのですが、
発表してみてよかった! とか 自分は発表の時にこういう工夫をしている、こんな準備をしているみたいな裏話、ノウハウ話などを披露してもらう枠を作っても楽しそうだなと思いました。

 最後にこれだけはアピールしておかねばなるまい事。 今回36枚のスライドの中でもっとも完成までに時間がかかった一枚を。 締めに相応しい一枚を、と発表の前の日まで3日くらいかけて考えました(労力をかけるところが、どこかずれている(笑))

f:id:sakaik:20201126224721p:plain



 ということで、発表資料は slideshare にて公開しています。動画は現在 YouTube 内で変換処理中。終わりましたら公開します。また、Connpass のページからも、各発表者の公開資料へのリンクがありますので参照ください。

www2.slideshare.net


 



 なお、41 SPEAKERS の 41 は、来年 2021年= twenty twenty-one にちなんでつけました。



2020/11/28追記:
 動画公開されました。

www.youtube.com

MySQLリリースノートを読む会を開催しました(8.0.22)

 MySQL 8.0.22 がリリースされたので、恒例の 「MySQL リリースノートでわいわい言う勉強会」通称 Myリノベ を開催しました。最近のMySQLは年4回(1月、4月、7月、10月)にリリースされるサイクルになっているので、特に緊急の問題が発生しない限りは、これが2020年最後のリリースとなります。

mysql.connpass.com

 Myリノベが「恒例」と言っても、今回が3回目なんですけどね。いつも、参加のみなさんに盛り上げていただいています。ありがとうございます。まだまだより良い進行方法を模索している段階で、今回は進行役としてなるべく喋らない(もちろんイチ参加者としては喋る!)ことを目指してみました。みんなが遠慮しあっての空白タイムが数十秒続く時など、ファシリテータ的な役割は必要かな?と考えられる部分もありましたが、活発な意見交換やその場での追加調査などが進行し、「わいわい言う会」としては良い感じだったと思います。

 実はですね、一応動画を公開するということで、過去2回の開催では、企画者としてはアタマのどこかに「コンテンツにしなきゃいけない」という思いがあったんです。あとで見て楽しめるように、意味がわかるように、という意識から、妙なところで交通整理を試みたりして、会の流れを止めちゃっていたかもなぁという反省がありました。 今回はそこから離れて、まぁ平たく言うと、あとで動画見る人のことなんてどうでもいい、ぐらいの気持ちで開催しました。会に参加している人が楽しめること、自由に発言できること、疑問に思ったのをその場でみんなでわいわいと解決できること、などのほうが大切なのです。あとで動画見た人が「なんだこりゃ。わけわからん」となったら、それはそれでごめんなさい。でも、その結果、会としては面白いものになったし、あとで動画を見る人も、興味ある話題があれば面白いものを得られるようになったんじゃないかなと思います。この会の面白いところは、参加している人が作り上げることができるというところですので、あとから動画を見て「ここもう少し聞きたかった」「ここの部分、別の視点もあるのでは」「次の話題行こうぜ」などと思う部分があれば、ぜひ次回参加してください! あなたもこの場を作る一員になれるのが「Myリノベ」です!

今回(8.0.22)の主な話題

 今回、用意された発表のあとは、参加の皆さんの自主的な話題造りになるべくおまかせしてみたのですが、もっとカオスになるかと思いきや、皆さんとても丁寧にひとつひとつの話題を広げてくださって、(あまり発散せずに)とても充実した会になったと感じました。 おかげで、動画公開(Youtube)の際にも、「どの時間からどの話題」というタグを打ちやすくて、助かりました。


 ということで、そのタグから引用してきちゃいますが、今回はこんな話題で盛り上がりました。

5:44    MySQL Shell 8.0.22の dumpInstance
13:18  MySQL 8.0.22で Derived Condition Pushdown Optimization を試した
25:50  MySQL Parameters 8.0.21 vs 8.0.22
34:05  DNSのSRVレコードの話題 (dns-src-name)
46:48  Prepared statement の話題
1:08:28 RIGHT JOIN → LEFT JOIN の話
1:15:10 TIMESTAMP の CAST() でタイムゾーンを変える話
1:21:30 Parenthesized query の話題
1:25:35 Delicated log writer thread で遅くなっていた部分を早くする修正の話

 個人的に印象に残った話題:

  • prepared statement。 Parse/Resolve/Plannning という3ステップがそれぞれ何をしているのか、結局よくわからなかった
  • prepared statement。 text prepare と binary prepare で違うというのは分かったが、どれがバイナリなのかがわからなかった(処理を表す1バイトのコードに続けて内容を流すのが、バイナリということなのでしょうか)。
  • RIGHT JOIN の書き換えについては、実験してみてもう少し詳しく知りたい
  • SRVレコードの話は、よくわからなかったけど、MySQLに こういうしくみ(API)を必要としている人たちがいるのだな、という視点で興味深かった
  • 新機能や動作の追加変更などがあった際に、「こういう使い方をしたがっている人がいるのだ」という視点を持てると面白くなると感じました。
  • とみたさんの MySQL Parameters 最高! 次回から冒頭の恒例に加えましょう

などなど。


 会の企画者としては、今回「えっそれ何?知らなかった!教えて!」という人がいて、それに対して詳しく教えてくれる人がいるという、知見のやりとりが成立する場になってくれたのはとても嬉しいものです。その場でコードを試してみる、というのも、度合いによっては間延びして他の参加者も退屈してしまうこともありますが、今回はバランスよく効果的に行われていて、楽しかったですね。

 参加された皆さんありがとうございました。 また参加してください!

当日動画:
www.youtube.com

書籍『カスタマーサクセス実行戦略』

 私にしては珍しく、畑違いの書籍を紹介してみます。

カスタマーサクセス実行戦略

カスタマーサクセス実行戦略




開示情報
(1) 私は著者の山田氏とは旧知であり、氏の卓越した理解力と洞察力に敬慕の念を抱いております。本を開く前から「これは良い事が書いてある本に違いない」との思いを持っていますから、本日記で紹介する内容には、そういったバイアスが掛かっている可能性が含まれることを予めお断りしておきます
(2) 私は著者の山田氏とは旧知であり、氏の(略)。本を開く時から「てきとーな事書いてごまかしてたら承知しねーぞ」との思いで向き合っているので、(1)と程よく相殺されているものと思われます
(3) 私は、「カスタマーサクセス」という用語に非常に否定的です(後述)。ただ、考え方については得るものがあると考え、名前と切り離して述べるために、本日記では カスタマーサクセスのことを CS と表記することにします。

あたりまえを体系化したCS

 本書内で著者も述べているとおり、CSは「当たり前」のことを並べているに過ぎない、とも言えます。曰く、一回つかまえたお客さんには長く使ってもらえるようにして、解約率を減らす努力をしましょう、曰く、適切な人に適切なタイミングでコンタクトを取りましょう、曰く、わかりやすい情報を開示しておく(セルフコンテンツ)と自分達もお客さんも手間が減ってハッピー、曰く、お客さんに共感しましょう...etc.
 ひとつひとつは当たり前のことでも、これらを体系的に整理し、評価方法についても提案している点が、CSのCSたる所以なのでしょう。
 筆者は、CSのマネージャーになるために必要な資質として、以下の8つを提示しています。

1. 分析思考
2. 積極性
3. 共感性
4. 粘り強さと情熱
5. チームプレイ
6. コミュニケーションスキル
7. 高度な専門性
8. 戦略思考

 ストレングスファインダー(SF)の「資質」の分類と似ている部分があると思い、比べてみると、以下の感じになります。面白い。★のついているものがCS資質に完全またはほぼ一致しているものです。★のついていないものは、SFの中で言えばこれかなと私が感じたものを紹介。

1[分析思考]★
2[活発性][競争性]
3[共感性]★
4[達成欲][信念][自己確信]
5 人間関係構築力資質群 全般 /[社交性][公平性][規律性]
6[コミュニケーション]★
7[学習欲][最上志向]
8[戦略性]★


 こうして見ると、非常に幅広い資質が求められているように見えます。

 私見ですが、元来商売というものは、相手が助かるようなモノ・コトを提供し、そのお礼としての対価を受け取るものであり、対価以上のことは提供しない、提供された以上の対価は払わない、ということを、ある程度のバッファを持ちながらもお互いのメリットを最大化するよう誠意を持って交流をする、という事だと考えています。これが、近代の「商売」では、仕事が細分化されました。お客さんにでたらめな事を言って適当な仕事を取ってくる担当、謝りに行く担当、モノを作る担当、お金の計算をする担当 etc... 。細分化の弊害として、本来は組織全体でひとつの「商売」をしているはずなのに、自分の担当部分以外には関心がない所謂タテワリになっている組織が、多く見られます。右足が前に出ているのに、左足が出てくれないおかげで前に進めないとか、ひどい時には右手が右の頬を殴っているかのようなケースもあります。
 歴史というのは波打っているものですから、そういった「誤った細分化意識」を揺り戻す動きが、CSの本質たる「ちゃんと全体を見ようぜ」なのかなと、私は解釈しています。

この本で印象的だったところ

 なんと言っても、4ページ強に亘る「はじめに」でしょう。著者のCSに対する思いが伝わってくるとともに、「この本を読んだらどんなノウハウが私に伝授されるのだろう」とわくわくさせてくれます。たんなる熱意だけでなく、整然とした説明は、まえがきを読んだだけでCSをとりまく背景と現在の状況を一望できた気分にさえなります(もちろん本文には、より詳細かつ具体的な記述が沢山あるわけですが)。

 もう一点は、CSの指し示す意味について私が根本的な勘違いをしていたことに気づかせてもらった点です。CSはその親和性の高さから、サブスクリプションモデルとセットで語られることが多い気がします。そのためか、サブスクモデル専用の手法というか、もっと極端に言うとサブスクモデルをうまく回すことがCSなのだ、というくらいの印象を持っていました。 本書では勿論サブスクモデルとの親和性についての言及はあるのですが、全体としては寧ろサブスクモデルを意図的に無視しているのではないかと感じるくらいに、CSの適用範囲を広く捉えさせるような工夫を感じました。「本を読んでそのまま手を動かせる人をつくる」というよりも、「本を読んで、実際に自分の頭で考えられる人をつくる」ことを意図しているようで、この、本質を伝えようとする姿勢に、好感を持ちました。

「カスタマーサクセス」という用語について

 冒頭で述べたとおり、私は「カスタマーサクセス」という用語に対して、非常に否定的な評価をしています。「顧客を俺たちが成功させる」という意味のこの言葉は、なに? 成功させてやる だぁ?てめぇ一体(いってぇ)何様でぃ! と悪態をつきたくなるくらいの傲慢な響きを持っています。客は「自分で」成功を目指します。サポートは期待しますが「成功させてやる」と言って近づいてくる人には怪しさしか感じませんし、他人の財布に勝手に手を突っ込んでくるかのような感じです。自社内でのスローガンとして「顧客を成功させるぞ、おー!」と言っている分には素敵な話ですが、打ち合わせで出された名刺に「お客様を成功させる部」なんて肩書きが書いてあったらもうお前馬鹿かレベルです。
 考え方の発祥であるアメリカの用語をそのまま取り込むのではなく、この分野を国内で牽引している一人である山田さんのような人が、本質的理解に近い場所にいるというポジションと能力を活かして、日本語でも受け入れられやすい用語を発明されることを願っています。

ということで改めて本書をお勧め

 本書は、著者が自らのカラダを動かして集めた情報を、自らのアタマを使って理解・再構成し、自らの時間を使って実施するというプロセスを、何度も繰り返したことで得られた「本質」を、惜しげもなく訊かせてもらえる本です。 著者の人柄どおりに、この素晴らしい考え方をどうにかしてみんなにも理解してもらいたい、伝えたい、という誠実な姿勢が感じられる本です。まだ若いこの分野で、現場で実践してみた人の話を聞けること自体も大変貴重です。書名で「カスタマーサクセス "実行" 戦略」と銘打っている通り、机上のお勉強話だけでない部分が、本書の魅力と言えるでしょう。 この分野に興味がある人には、その人の置かれている状況や目指しているものによってマッチする/しないはあるでしょうけど「とりあえず読んでごらん」とお勧めしたいです。



余談

 本書の中には、CSを実践した会社の方やキーマンの方へのインタビューが含まれています。これ、山田さん、やりたかったんだろうなぁ、楽しかっただろうなぁ、そして書くときにはえらく気を使って大変だったんだろうなぁ、とニヤニヤしてしまいました。
 私も14年ほど前に作った本で、どうしてもやってみたくて、インタビューを入れたのですが(その節は各社様、ありがとうございました)、先方が伝えたいものと自分が紹介してあげたいものを会話の中で探り合い、記事の完成形をイメージしながら補いたい情報を追加で質問したり、それはそれは楽しかったです(笑)。

この本:

超・極める!MySQL

超・極める!MySQL