2016年5月13日金曜日

第14回 中国地方DB勉強会 in 福山で実行計画の話をしてきた #ChugokuDB

4月の勉強会の報告を5月にするのは色々バタバタしてたからです!!
ということで大盛況でした第14回のまとめがこちらです。
あと前回の山口でも似たような話したのですが実行計画の話をしてきました。
一番細かくまとまった資料なので実行計画叩いた事ない人は是非見てみてください。




あとOracleからPostgreSQLへの移行が大きなテーマとして行いました。
質疑応答も盛り上がり、かなり面白かったです。
ライセンス値上げなどで移行を検討中の方は是非、喜田さんの資料を見てみてください。

■登壇資料など
中国地方DB勉強会のポータルサイトにまとめました。

※今回は動画はありません


中国地方DB勉強会


■メーリングリスト
次回の告知についてはDoorKeeperを使います。
興味がある方はチェックしてみてください。

DoorKeeper

■twitterのまとめ
Twitterについては@noborusさんがまとめてくれています。

Twitterのまとめ

キャンセル待ちが出るくらい大人気でした。
やっぱOracleからの移行って大きなテーマで集客力あるんですね。

そして次回の予定も決まってます。

第15回 中国地方DB勉強会 in 米子

■概要
日時: 2016年06月04日(土)
会場:米子コンベンションセンター 1F 情報プラザ 鳥取県米子市末広町294

申込はこちら
第15回 中国地方DB勉強会 in 米子

今回はOracleの梶山さんが来てなんと2セッションもしてくれます!!
まだまだ進化しているMySQL5.7の話が聞けるはず。
もしかしたら◯y◯◯◯8の話も!?

なお、懇親会は17:30~19:30で考えています。
交流含めて是非参加をご検討していただけたらと思います。

第13回 中国地方DB勉強会 in 山口の資料が揃ったのでまとめてみた #ChugokuDB

2月の勉強会の報告を5月にするのは資料が今月出揃ったからです!!
ということで大盛況でした第13回のまとめがこちらです。
是非末並さんの資料を皆様には見ていただきたいですね!!

■登壇資料など
中国地方DB勉強会のポータルサイトにまとめました。

※今回は動画もあります


中国地方DB勉強会



■メーリングリスト
次回の告知についてはDoorKeeperを使います。
興味がある方はチェックしてみてください。

DoorKeeper

■twitterのまとめ
Twitterについては@Uemmra3さんがまとめてくれています。

Twitterのまとめ


さらになんと当日の様子が山口新聞で掲載されました!!!
少しずつ少しずつ、中国地方DB勉強会が認知されてきたなぁと感じてます。
もっと色んな人を巻き込んで楽しく面白いコミュニティに育っていきたいですね。

そして次回の予定も決まってます。

第15回 中国地方DB勉強会 in 米子

■概要
日時: 2016年06月04日(土)
会場:米子コンベンションセンター 1F 情報プラザ 鳥取県米子市末広町294

申込はこちら
第15回 中国地方DB勉強会 in 米子

今回はOracleの梶山さんが来てなんと2セッションもしてくれます!!
まだまだ進化しているMySQL5.7の話が聞けるはず。
もしかしたら◯y◯◯◯8の話も!?

なお、懇親会は17:30~19:30で考えています。
交流含めて是非参加をご検討していただけたらと思います。

2016年4月18日月曜日

PHPerに知ってほしいRDBの事について話した - PHPカンファレンス北海道 2016

4/16に開催されたPHPカンファレンス北海道 2016に遊びに行ってきました。

#phpcondo2016 まとめ


初めてのPHPカンファレンスで緊張もしましたが色々と刺激的ですごく楽しい一日でした!!
その中で30分のセッションをやらせていただきました。
その時の資料がこちらです。



30分のセッションに対し140枚以上というなかなかハードな感じでした。
駆け足になったので聴衆の人には優しくなかっなぁとも思いつつ、伝えたい事は伝えれたかなと思ってます。
あと懇親会で聞かれた質問の回答も載せときます。

質問:PostgreSQLに対するMySQLのメリットってなんですか?

最新版同士で比べた時のメリットは僕は兎にも角にもSSDと相性が良い事だと思います。
金の弾丸で殴った時の費用対効果が凄くいい。
クラウドなら例えばRDSとかSSDだしスケールアップで有る一定のところまですぐ早くなります。
オンプレならFusion-ioを使えばそれこそ数十倍と言う速度が手に入る可能性もかなり高いです。
PostgreSQLはdisk-ioがヘビーなケースは苦手なのでMySQLはSSDの相性の良さと相まってそんなケースではMySQLかNOSQLになると思います。
この辺はLinkBenchでPostgreSQLをベンチマーク取った時の話が凄く面白いので興味がある人は見てみてください。


MyNA・JPUG 合同勉強会

※このまとめの「MySQLメインの人がPostgreSQLのベンチマークをしてみた話」です。
他の話も面白いので興味があればぜひ。


あと商用ライセンスを買った時に使えるOracleのサポートメンバーが誰か?っての想像できる事も大きなメリットです。
あの漢らしい人とかに1台30万くらいでSQLレベルからサポートしてもらえる。
これって普通に凄いことですよね。

質問:ORM使ってるとMySQLで何も困らないんですけど?

仰るとおりでございます。
ORMのオブジェクトをRDBで上手く表現(テーブル設計)してる時はORMめっちゃ便利です。
その場合ってMySQLと相性良いと思いますしMySQLで困らないです。
強いて言えばINDEXの設計がちょっとむずかしいかもなぁってくらい。
MySQLからPostgreSQLに行くメリットよりデメリットが勝る場合も多々あるので既存でMySQLで問題ないならそのままで良いです。
ただ新規案件の時とかはPostgreSQLを新たに採用するメリットが結構あるので検討していただければと思います。


といった感じで次は5/21にPHPカンファレンス福岡 2016です!
北海道のネタをベースにまたPHPerの皆様に知ってほしいことをお伝えしようと思います。
INDEXの話は評判が良かったのでそのままに他の部分をチューニングしようと思います。
ということでPHPカンファレンス北海道 2016、本当に最高でした!!




おまけ

2016年4月9日土曜日

今から直近3ヶ月くらいの勉強会予定

そーだいなる予定計画表です。

4/10 中国地方DB勉強会 in 福山(登壇)
4/16 PHPカンファレンス北海道(登壇)
4/27 岡山Python勉強会(登壇)
5/14 オープンセミナー2016@岡山(参加)
5/21 PHPカンファレンス福岡(登壇)
5/28 関西DB勉強会(登壇)
6/04 中国地方DB勉強会 in 米子(登壇?)
6/18 JPUG総会&PostgreSQLセミナー(参加)

しかも5/23と5/24は東京出張があるっていう。
6/11はアイネットバーベキューがあるっていう。
正直そーだいくん、ちょっと予定詰め込み過ぎたかなって後悔してます。
勉強会や新橋会のお誘いの際のご参考にどうぞ。

2016年3月17日木曜日

MySQLに絵文字を保存しようとしたら文字列が消える問題

最近、すっかりPostgreSQLの匂いがしなくなったと噂の私です。
最近MySQLで新たな気付き(問題)があったのでメモとして残します。

まずMySQLは🍣🍻問題があることは知っていました。

MySQL と寿司ビール問題


ではutf8mb4以外で保存していた場合どうなるのでしょう?

・latin1の場合


絵文字は文字化けします。
そして非常に残念な事にALTER文で変更した場合はどうでしょう?
Slackで質問したらみんな大好き@yoku0825さんが試してくれました。

mysql57> create table t2 (val varchar(32) charset latin1);
Query OK, 0 rows affected (0.02 sec)

mysql57> INSERT INTO t2 SET val= x'F09F8DA3';
Query OK, 1 row affected (0.01 sec)

mysql57> SELECT HEX(val) FROM t2;
+----------+
| HEX(val) |
+----------+
| F09F8DA3 |
+----------+
1 row in set (0.00 sec)

mysql57> ALTER TABLE t2 CONVERT TO CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.06 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql57> SELECT HEX(val) FROM t2;
+------------------+
| HEX(val)         |
+------------------+
| C3B0C5B8C28DC2A3 |
+------------------+
1 row in set (0.00 sec)

…壊れてますね。
この場合は@tmtmsさんのアドバイスを引用すると

latin1 に utf8mb 文字を入れてしまった場合は、データを HEX ダンプして、テーブルを utf8mb4 で作り直して、ダンプデータをリストアって感じで、復旧したことはあります。

とのことです。
辛いやつですね。

ちなみに@yoku0825さんがこちらで詳しく検証してくれてます。

latin1からutf8mb4_binへの変換:yoku0825さんのGist

・unicode*_ciな場合


例えばutf8_general_ciの場合ですね。
この場合は

絵文字を含めた以降の文字が全部捨てられて保存されます


つまり何も残りません。
これが今回のタイトルの現象ですね。
僕はこれに遭遇しました。
MySQL5.6でSQL_MODE=""とかしてた場合Errorも吐きません。
すーっと切り捨ててINSERTされました。
絵文字を使わせないって方針の場合は

sql_mode= STRICT_TRANS_TABLES

とかしとくとErrorで弾いてくれるそうです。



ということで4バイト文字関連ですが
|                    | utf8mb4_bin | utf8mb4_general_ci | utf8mb4_unicode_ci | utf8mb4_unicode_520_ci|
|--------------------|-------------|--------------------|--------------------|-----------------------|
| Hiragana-Katakana  | cs (unkind) | cs (unkind)        | ci (good)          | ci(good)              |
| Youon              | cs (good)   | cs (good)          | ci (critical)      | ci(critical)          |
| Dakuten-Handakuten | cs (good)   | cs (good)          | ci (critical)      | ci(critical)          |
| Wide-Narrow        | cs (unkind) | cs (unkind)        | ci (good)          | ci(good)              |
| Sushi-Beer         | cs          | ci                 | ci                 | cs                    |


https://bugs.mysql.com/bug.php?id=79977

なので


  • 文字コード utf8mb4
  • collation  utf8mb4_bin または utf8mb4_general_ci


とするという結論です。
既存環境でいきなり絵文字が消える場合や化ける場合は上記の環境をチェックしてみてください。
下記の通りになってれば🍻も🍣も登録出来るはずです。

mysql> show variables like '%character\_set\_%';
+--------------------------+---------+
| Variable_name            | Value   |
+--------------------------+---------+
| character_set_client     | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database   | utf8mb4 |
| character_set_filesystem | binary  |
| character_set_results    | utf8mb4 |
| character_set_server     | utf8mb4 |
| character_set_system     | utf8    |
+--------------------------+---------+
7 rows in set (0.00 sec)


# おまけ

さっきのバグチケットですがMySQL5.8でutf8mb4_unicode_520_ciがデフォルトになりそうって噂です。
見ての通りutf8mb4_unicode_520_ciだとクリティカルな問題があるので是非

右上くらいに有るボタンのAffects meポチって

ください!!

2016年3月3日木曜日

第2回 MySQL・PostgreSQLユーザーグループ(MyNA・JPUG)合同DB勉強会 in 東京を開催してきた

先月の話ですが半年ぶりくらいに合同勉強会してきました。
資料のリンク等はポータルサイトにまとめたので下記のリンクから辿ってください。


第2回 MySQL・PostgreSQLユーザーグループ(MyNA・JPUG)合同DB勉強会 in 東京


■登壇資料など
中国地方DB勉強会のポータルサイトにまとめました。

中国地方DB勉強会


※今回は動画の配信があります

■メーリングリスト
次回の告知についてはMLやDoorKeeperを使います。
興味がある方はチェックしてみてください。

中国地方DB勉強会ML Google Group

DoorKeeper

■関連slack

MySQLCasualのSlackはこちら

PostgreSQLのSlackはこちら

■twitterのまとめ

・ぬこさんバージョン
http://togetter.com/li/940915


・yokuさんバージョン
http://togetter.com/li/940891


大変素晴らしいセッションばかりで本当に楽しい会でした。
今回も例に漏れず関東の洗礼を受け、ドタキャン率は高めでしたが来てない人は本当に勿体無い内容だったと思います。
次回があるかはわかりませんが次回の中国地方DB勉強会は4月に福山を予定してます。
皆様のご参加お待ちしております。

2016年2月1日月曜日

ちょっと、たけとも、お仕事(CTO)始めました

まほろばとの想い出を語ってはや3ヶ月。
順風満帆なフリー生活を送っていましたがこの度、就職する事になりました。
まずは就職先ですが下記の会社です。

株式会社 オミカレ

ポジションはCTOです。
取締役ではなく執行役員です。
しっかりサラリーマンに戻ります。
多分、みんなは僕の業務内容なんて1バイトも気にならないと思いますが簡単に説明します。

勤務内容

  • 基本リモートワーク(自宅で仕事してる)
  • 自社モノWebサービスの運営
  • 新規Webサービスの開発
  • 週に1回(必ずじゃないけど)岡山で社長とミーティング
  • コードも書くし設計もする(リードエンジニアに近い)

ってな感じです。
面白いところが何個かあってまず渋谷にオフィスがあるのですが社長とCTOの自分がリモートワークです。
なのでコードは全てgithubですし勿論雪が降れば家で仕事をすれば良いです。
あとはエンジニアは僕以外にもう一人とベトナムにオフショアしながらやってます。
ベトナムにオフショア?まともなコード上がってくるの?っと思うかも知れませんが上手くやって行けてます。
これにはベトナム側に日本人のマネージャが居るってことも大きくていつかこの辺の話も出来たらいいなと考えてます。
それでも前述のとおり僕以外に日本にエンジニアが1人しかおらず、採用も自分のタスクです。
弊社は残業は0が基本で既にタスクがカツカツといえる状況です。
ということで特に渋谷に来てくれるエンジニアを募集してます!!
なので興味がある人は連絡取ってもらえると包み隠ず伝えようと思います。

それと会社の風土ですが元々はサービスは社長が1人で作り出し、順調に育ち、今はビジネスとしては成功しています。
そのためスタートアップにありがちな「利益を出すために死ぬほど働く」って雰囲気は無いです。
エンジニアの業務を見ても残業はありません。
もし彼らに残業が必要となった場合はそれは僕のマネージメントの問題だと思ってます。
また福利厚生や働きやすさについて社長はとても重視していてそういうところは積極的に改善されてます。
実際に

  • オフィスにウォーターサーバ欲しい
  • デロンギのコーヒーメーカー欲しい
  • ○○って本欲しい→即Amazon購入
  • この勉強会に参加&スポンサーして欲しい

などの意見が即決されたりしてます。
僕自身で言えば社長がもう何年も前からの知り合いなので意見具申しやすいので助かります。
例えば社内のチャットツールがSkypeからslackに変更したりしました。
(まだ音声ミーティングのみSkypeを使ってますが)
VCSもgitlabでしたが僕が辛いのでgithubに移行しました。
まだまだ全てがモダンな現場!!と言うには遠いと思いますが変化は確実にしています。
そんな

  • チームの改善
  • 開発の改善
  • サービスの改善

を一緒にやってくださる人を大募集してます!!
なお、メインサービスのコードの全書き直しは直近では予定されていません。
PHPのレガシーコードとの戦いになると言うことが弊社で唯一のデメリットだと思ったりはします。
(それを改善していくのが今後の大きな課題の一つです)
ということで今月から会社員に戻ります。
受託開発についてはしばらくお休みになると思いますがコミュニティへの関わりは積極的にする予定です。
今までは個人エンジニアとしてだけでしたか会社として参加も可能です。
なのでスポンサーなどの相談も是非いただければと思います。
実際にオープンセミナー広島@2016にはゴールドスポンサーとして参加します。

ということで世界を変えるほどイノベーションを創りだす!!とまでは思っていませんが

  • サービスで多くの人を幸せに
  • エンジニアのより良い働き方を
  • 地方に新しい企業文化を

出来るような場所作り(サービス、職場環境含めて)行っていきたい所存です。
今後の活躍にご期待ください!!