2016年12月25日日曜日

そーだいなる一年を振り返る

このブログはそーだいなるアドベントカレンダー25日目です。
なお、そーだいなるアドベントカレンダーは今日始まり、今日で終わりです。


さて今年一年を振り返って見ましょう。

今年あったビッグイベント


# そーだい、記事を書く

Software Designの2月号と10月号の特集記事を書きました。
なかなか大変で産みの苦しみというモノを学びました。
記事としてはなかなか好評だったようで色んな人からありがたいお言葉をいただきました。
またJPUGの予算で特集記事を抜粋した抜刷本も出していただきました。
やっぱり自分が作ったものが形になるというのは嬉しいですね!!
同人の世界の楽しさがちょっとわかった気がします。
来年はもうちょっと頑張って本とかかけたら嬉しいなぁって思います。

# そーだい、CTOになる

元々フリーランスで仕事もらってた株式会社 オミカレのCTOとしてジョインしました。
CTOになることで変わった事、学んだ事、苦しんだ事、楽しかった事、色々あります。
会社を成長させることが自分の成長にも繋がったし順調に両方共成長出来たなと思います。
またチームという視点で見ても色んなチャレンジも出来ましたし、僕が手を離しても自立するチームに育ったと感じてます。
誰もが出来る経験ではないと思いますがポジションが人を育てるっていうのは本当にあるよなと思います。

#そーだい、ベストトーカーになる

今年も自分の開催したイベント以外でも色んなところで登壇させてもらいました。
去年も散々Javaエンジニアのための◯◯とかでCCCとか荒らしてましたが今年も◯◯のためのRDBな事で荒らしてきました。
例えば


  • PHPカンファレンス 北海道
  • YAP(achimon)C::Asia Hachioji 2016mid
  • PHPカンファレンス 福岡
  • PHPカンファレンス 大阪
  • Database Night Hokkaido 2016 Summer
  • PHPカンファレンス 東京
  • OSC東京


などです。
北海道には二回も行かせてもらいましたし、念願のPHPカンファレンスに登壇も出来ました。
PHPカンファレンスの4箇所とも全て登壇した人って僕以外だと誰が居るんだろ?
とても貴重な経験をさせていただきましたし、そのお陰様で多くの方とつながることができました。
僕は意外と小心者なのでなかなか声をかけに行かない人なのでオフラインで会う機会があれば是非、お声掛けください!!
あとスピーカーとして一定の評価をいただけたと言うのも嬉しかったです。
知り合いからは「良かったよ」と言われても具体的にどう良かったのかわからないし社交辞令も多くあります。
なのでベストトーカーをいただけたのは自信にもなりましたし心底嬉しかったです。
来年は「ベストトーカー?大した事ないな」って言われないようにより精進したいと思います。

# そーだい、KOFの全国大会に出る

KOF02は予選ブロック決勝で死亡
KOF98は予選ブロック一回戦で死亡
現場からは以上です。

こんなところですかね。
自分としての成長で言えば立場が変わり、マネージメントなどで学ぶことが多かったように思います。
逆に技術的なところで言えば貯金プレイがかなり大きく公私でPHPを書くことは殆どなかったので(私的にPythonとかちょいちょいあったけど)コードを書く量はかなり少なくなった一年でした。
でもMySQLは新しい驚きを常に提供してくれるし、PostgreSQLにはパラレルクエリが来たしDBAとしては楽しく学んだ一年だったなと思います。


ということであんまり纏まってないけど 飽きてきた 以上で今年一年のまとめとしたいと思います。
それでは皆様良いお年を。

PS. 年内でオミカレを退職し、CTOじゃなくなります。


2016年12月2日金曜日

PostgreSQL使いのためのSQLの使い方

この記事はPostgreSQL Advent Calendar 2016 の3日目の記事です。

やあ、みんなげんき?
僕は酔っ払いです(カラオケ屋の3次会でこれを書いてます)
今日はみんなにSQLをもっと知ってもらうために下のスライドをご紹介します。



※sampleで出てくるSQLを試せるようにDDLとか用意しました

そうです、これ。
今日のPGConf.Asiaの登壇資料です。
僕はMySQLもPostgreSQLも使う中で「SQLならもっと簡単に書けるのにアプリ側で頑張ってる」って現象を度々見ます。
そこをちょっとしたSQLの知識があればすごく楽出来るのでみんなにも是非覚えてください。
コレを読んで興味がある人は下記の本を読むとすごく勉強になると思います。





本当に上記の本はオススメ。
この先にインデックスチューニングとかパラメータチューニングとかDB設計があると思います。
そこまで興味がある方は是非DB勉強会の資料が参考になります。
MySQLもPostgreSQLもSQLServerもOracleDB(ちょっとだけ)あるので是非見てみてください。

中国地方DB勉強会

ということで現場からは以上です。
引き続き、PostgreSQL Advent Calendar 2016 をお楽しみください。

2016年11月9日水曜日

PHPカンファレンス2016でRDBアンチパターンの話してきた #phpcon2016

全国のそーだいふぁんのみなさん、お久しぶりです。
1ヶ月ほど更新がなかったのですが私は元気です。
表題の通り、PHPカンファレンス2016に遊びに行ってきたのでそのご報告です。
当日のスライドはこちら



今回はRDBアンチパターンということで以下の内容を話して来ました。
またスライドだけでは言葉足らずなので補足記事書きました。
下のリンクで補足記事に行けます




スライドだけでは説明しきれないのでぜひ動画を見てほしいです



それと当日のTwitterまとめ

DBの寿命はアプリよりも長い!DBを救える英雄になろう RDBアンチパターン入門 #phpcon2016 #phpcon2016_2 RDBアンチパターン

内容としてはもっと色々詰め込みたかったんですが60分では私の108式あると言われるアンチパターンをすべて伝えるには不可能でした。
どこかの機会で残りも伝えれればなと思います。
というわけで登壇内容については上記のそれぞれの補足説明を読んでください!!


ではここではメインは私の感想を書きます。


1 PHPカンファレンス2016 in 東京について


PHPカンファレンスは4つの地域全てで参加・登壇することが出来ました。
(もしかして全部でSpeakerしたの自分だけなのでは?)
特に東京は事前に伺って居たとおり規模がとても大きく会場も集客もすごかったです。
実際に私のフォロワーさんでも参加している人が多く、その半面、ご挨拶出来なかった人が多かったので残念です。
もっと分かりやすく挨拶できる場を設ければよかったなぁとちょっと反省しています。

カンファレンス本体で言えば当日についてはこれだけの規模をキレイに統制を取ってるので素晴らしいの一言です。
ただ事前準備のところでは


  • タイムテーブルの告知が遅く、地方勢としてはホテルの予約やスケジュール調整に悩んだ
  • 公式サイト等ではタイムテーブルにはタイトルしか無く、セッションの選び誤解やすれ違いがあったのでは無いかと懸念
  • 当日実際に見れるセッションに限りがあって、見るタイトルが事前に決めれなくて悩ましすぎた
  • そもそも自分の裏番組が見たくて見たくて自分のスライド作りのモチベ維持が難しかったw


この辺ですかね
ただボランティアベースのコミュニティですから無理強いするわけでは無いですし、その懸念点を差し引いても圧倒的に素晴らしいカンファレンスでした。
セッションに関しては録画がすでに公開されており、その苦労はイベント主催経験者としては大変な苦労だとお察しします。
早速ですが見れなかったセッション、全て拝見したいと思います!!
また個人的にはもっと一緒に飲みたかった人が沢山居ました。
ただ時間と場所の制約上、ご一緒出来なかった人が沢山いるのでまた来年も参加したいと思います!!

2 全国でのPHPカンファレンスの総括として

全国4箇所で登壇して思った事はPHPerのパワフルさと寛容さです。
PHPのカンファレンスでもRDBの話を普通させて貰えましたし、他にもPHPに囚われず色んなセッションがありました。
また参加者へ大きく門戸が開かれている印象で参加しやすく、また行きたい!と強く感じさせる運営・内容でした。
来年も遊びに行きたいと考えていますので(登壇するかは別として)各地の皆さん、どうぞよろしくお願いします。

3 登壇者として

PHPカンファレンスは普段のDBを知ってる人にDBの話やアプリケーションの話をするとは逆のアプローチで挑みました。
なので「自分にとっては当たり前でも相手が知らない大切な事」を話そうと努力しましたが何処まで伝わったでしょうか。
特に3箇所で話をした実行計画はそれが出来るだけで1枚も2枚も上のエンジニアになれます。
本当に昔に比べて今は簡単に実行計画が見れるようになったので使ってください。
RDBアンチパターンに関しては@tomzohさんの下記のツイートがキッカケで決めました。



実はPHPカンファレンスにはRDBアンチパターン以外にも


  • RDBデザインパターン
  • RDBチューニング


と2つのテーマで応募してたりします。
機会があれば何処かでまた話をしたいと思います。
気になる方はイベントに是非呼んでください!!
RDBアンチパターンについては好意的意見が多いようなのでやってよかったなぁと思います。
他のアンチパターンについてもどこかで機会があればアウトプットしていきたいと思います。


というわけで以上の3点、PHPカンファレンスのまとめでした。
他のカンファレンスについては次のとおりです


では皆さん来年のPHPカンファレンスで会いましょう!!

PHPカンファレンス2017


RDBアンチパターン - ロックの功罪

この記事はPHPカンファレンス東京での登壇資料の補足記事です。
当日の話はこちら。

PHPカンファレンス2016でRDBアンチパターンの話してきた #phpcon2016




第三章の強すぎる依存は要約すると


  • ロックは並列処理の際にデータを守るための機能
  • トランザクション分離レベルでの動作の違いは必ず学ぼう
  • ロックを取らない場合に悲劇が生まれるシーンの紹介
  • ロックはパフォーマンス遅延の理由になりやすい
  • ロックはRDBが暗黙的に取る事が多々ある
  • ロックの挙動はRDBによって結構違う


を話をしました。
ロックについては1番話をしたかったところです。
特に重要な項目について少し補足します。

■ロックの功績

実務においてPHPerに限らず多くの人は並列処理が苦手だなと感じています。
マルチスレッドで無くてもスライドで紹介したとおり、並列処理になる部分は多々あります。
それによって大きなバグを埋め込む事があるわけで実際にゲーム内での無限増殖や予約機能でのダブルブッキングなどが話題になります。
特にロック未取得によるバグはクリティカルになることが多いです。
逆にトランザクションが不要であればRDBの必要性が半減すると言っても過言では無いでしょう。
本当にRDBに置いて重要な機能の一つでACIDの根底にある部分なので適切に使ってもらいたいです。

ロックについても業務系ではロック未取得のバグ=即死案件だったりするので業務系では一般的な話だと思います。
しかし結構有名なEC系のフレームワークでも適切にロックを取ってなかったりするのでロックについてはまだまだ知られてないのかも?と感じています。
また動画でも述べましたがこれからは「並列・分散処理時代」だと予想しているのでみんなには是非これを機会に無知を既知にしていただきたいですね。


■ロックの罪

一言で言えばデッドロックとロック待ちによるパフォーマンス遅延です。
しかしこれが複数アクセスの時に発生するもので意外と開発中は目に見えなかったりします。
またシナリオテストでも単体では問題なく負荷を捌けるのに本番ではロック待ちが発生する場合があります。
これは複数のシナリオが影響している場合などで事前に予想が難しかったりします。
そんな背景から私が実際にチューニングをする際でも最適解を出すのが難しいケースの一つがロック待ちです。
スライドにもありますがロックはRDBやトランザクション分離レベルによって暗黙的取るケースが違います。
そのためそれぞれのミドルウェア固有の知識が必要でバージョン違いもあったりするのでしっかりと実際の挙動を知ることが大切です。
デバック方法もそれぞれ違ったり、対処法もそれぞれ違うので難しいところではあります。
特にDB設計に依存しやすく「原因は分かったが対処が難しい」ケースが多々あります。

これらのことから一度ロック待ちでハマると闇が深いので事前に防げるような知識が大切です。
ただ複数のRDBに詳しくなるのは大変です。
なので使っているRDBのロック待ちの調べ方とトランザクション分離レベルによる挙動に違いについては知っておくと良いと思います。
この辺、Webには大小違いはあれど情報は多いのですが書籍には意外となってないなぁと思います。
オススメの書籍があれば是非教えてください。
私も勉強したいと思っています!!

それと最後にご指摘を受けたので合わせて掲載します。
こちらもご確認ください。















みんな@yoku0825さんをフォローしよう!!
ということで補足としては以上です。
他の章の説明はこちらから行けます

PHPカンファレンス2016でRDBアンチパターンの話してきた #phpcon2016


登壇動画



RDBアンチパターン - 隠された状態 -

この記事はPHPカンファレンス東京での登壇資料の補足記事です。
当日の話はこちら。

PHPカンファレンス2016でRDBアンチパターンの話してきた #phpcon2016




第二章の強すぎる依存は要約すると


  • RDBを利用する際はリレーショナルモデルが大切
  • 事実を保存をすることが大切
  • レコードに状態を保存すると危険
  • しかし事実を保存する事に拘り過ぎて状態が隠れるともっと危険
  • 状態を保存したい→事実の歴史を保存する


を話をしました。
特に重要な項目について少し補足します。

■事実と状態

リレーショナルモデルの話は@nippondanjiさんの資料が沢山あってとても為になるので読みましょう。


そして理論的な話は奥野さんの本が超オススメです。
一章を乗り越えれれば(そこが1番難しい話なので…)あとはスーッと読めると思います。
超良書なのでぜひ読んで欲しいです。



ここについては珍しい手法とか新しいアーキテクチャの提案じゃなくて「業務系」と呼ばれる界隈では一般的な話です。
金融系だとINSERTとSELECTだけで表現するのは一般的だし業務系出身の私はそれが当たり前だと思ってました。
しかしWebサービスのDB設計を見ると意外とそうではありませんでした。
理由はパフォーマンス上の制限だったりアプリケーション上の制限だったりするのですが1番は「その手法を知らない」というのが1番多かったです。
そのため、今回は敢えてこの話をアンチパターンとして紹介しました。
多分、JJUG CCCやPostgreSQLカンファレンスだと響かない内容だったと思いますがPHPカンファレンスにはマッチしたと思います。
この辺は受託開発してる人は特に気にして欲しいです。
何故なら作ったシステムを作った人たちがずっとメンテナンスする可能性の高いスタートアップと違って、作ったら終わりの場合が多いからです。
なので3年後、5年後に「ある日突然DBの問題が発生する」時にとても苦労するし、例外対応時に全く対応出来なくて苦労するからです。
だからこそ受託開発を行うWebエンジニアの方々にはDB設計を学んでほしいですね。

またDB設計についてはもう何十年も議論されて経験が積み重なって書籍になっています。
オススメの本は沢山あるのですがまずはSQLアンチパターンを呼んでいないならぜひ読みましょう。



ということで「隠された状態」について説明しました。
実はこの問題は完璧に対応するにはとても難しい話です。
パフォーマンスとトレードオフ、仕様変更への対応などで長い目で見た問題が発生しやすいところです。
だからこそ、出来る人はとても貴重で価値が高いといえるので是非是非興味を持って勉強してみてください。
また詳しい人は設計の話、どんどんアウトプットしてほしいですね。
私も沢山の経験に基づいたDB設計の話が聴きたいです!!

ということで補足としては以上です。
他の章の説明はこちらから行けます

PHPカンファレンス2016でRDBアンチパターンの話してきた #phpcon2016


登壇動画



RDBアンチパターン - 強すぎる依存 -

この記事はPHPカンファレンス東京での登壇資料の補足記事です。
当日の話はこちら。

PHPカンファレンス2016でRDBアンチパターンの話してきた #phpcon2016




第一章の強すぎる依存は要約すると


  • ORMやDBマイグレーションには強い制約と誓約がある
  • ORMやDBマイグレーションによるメリット・デメリットがある
  • ORMやDBマイグレーションを上手く活用するために必要なこと
  • ORMやDBマイグレーションはパフォーマンスによって利用が難しくなることがある
  • 強い依存性があるが依存しすぎると危ない


を話をしました。
特に重要な項目について少し補足します。

■制約と誓約

元ネタはHUNTER X HUNTERです。
一般的にはルールとマナーなどの言葉で置き換えれると思います。
スライドに書かれて居ない大切な事はこの2つを守るメリットです。

制約のメリット

制約は必ず守らなければいけないルールです。
つまり逆説的に制約というレールを轢いてその上を走るということです。
その為、一般的な最適解に辿り着きやすく、よくある事例ならすでに回答が用意されている事もあります。
そのため大きな失敗をする可能性が減り、レールの上を走っているときはとても生産性が上がります。

誓約のメリット

制約に対して誓約は強制力はありません。
例えで出したデザインパターンや命名規則などは強制では無いため、現場では統一されていないこともあります。
また文化として誓約が浸透している部分も多々あります。
例えば命名規則で言えばisで始まればboolを返すでしょうし、getなら戻り値を返すと言った感じです。
これによってコードの記述量が減ることは一般的には少ないと思います。
むしろデザインパターンを採用することで増える事もあるでしょう。
しかしこのような誓約を利用すると人間がコードを読んだり書いたりする際の生産性が上がります。
それは「勘が働く」からです。
メソッドの振る舞いが予測でき、クラス構造が想像出来るコードと出来ないコードで比較すればその差は歴然です。

以上の事からDBの抽象化をするツール群はDB層の本来の姿に対する強い制約と誓約から


  • ORMを意識したスキーマ設計
  • RDBMSを意識したクラス設計


を意識しなければなりません。
しかしその代わりに高い生産性を与えてくれています。
その為、昨今でこれだけ利用されていますし、私も活用しています。

■強すぎる依存の問題

ツール群には強い制約と誓約と引き換えに高い生産性を得ることが出来る事は伝わったかと思います。
しかしこの強い制約と誓約によって問題もあります。

1つ目はスライドにもある通り、RDBの持っているSQLや多くの機能が失う事。
具体的には守る部分では外部キー制約やCHECK制約(MySQLには元々無いけど)などを利用できません。
また型の選択肢も制約されるため、PostgreSQLのJSONB型や範囲型などのより適切な型を選択することも出来ません。
SQLの構文にはプログラムでは表現しにくい内容もあり、それを失うことでパフォーマンスやメンテナンス性を犠牲にすることも多々あります。
このように制約と誓約によってRDBの本来持っている機能を失っている事を忘れてはいけません。

2つ目はDBの抽象化は完全では無いということです。
メリットの部分でも書きましたが設計などで意識しないと効率良く利用できません。
またパフォーマンスによって、利用できなくなることもあります。
そのため、ツール群に依存しているとサービスがスケールアップの壁にぶつかる事があります。
その際に「新しい選択肢を取れるかどうか?」がそのエンジニアの価値につながるというお話も当日はしました。
気になる方は下記の動画をご拝聴いただければと思います。


ということで「強すぎる依存」について説明しました。
アンチパターンというよりは現状のアプリケーションエンジニアとデータベースエンジニアの中にあるギャップを説明した章となっています。
PHPカンファレンスはアプリケーションエンジニアが多く、このような話を聞く機会は少ないと思うので最初の掴みとしては良かったと思います。
またデータベースエンジニアからすると隣の別のレイヤーの話ですからこれを機にもう少し興味を持ってくれると嬉しいですね。

ということで補足としては以上です。
これを見て気になる人はぜひ動画を見てほしいです。
「強すぎる依存」の章だけなら15分程度なのでお時間が有る時に是非。

他の章の説明はこちらから行けます

PHPカンファレンス2016でRDBアンチパターンの話してきた #phpcon2016


登壇動画



2016年9月18日日曜日

PostgreSQLの新しい教科書 ~ Software Design 10月号の特集記事を書きました ~


表題の通り、特集を執筆しました。
第2特集なので表紙で言うと左下のところに書いてあるのが僕の特集記事です。
昨日発売ですのでお近くの店頭で見かけたら是非手にとって貰えたらと思います。

内容ですがPostgreSQLの入門編と謳っていますが普段、なんとなくRDB使っている人には良い記事になったと思います。
あとOracleSE1からの移行を考えてる人へのヒントも書いてます。
ここはかなり血反吐を吐きながら頑張って情報を集めて信頼有る筋のレビューワーを通して居るのでかなり信頼度の高い部分だと思います。
ということで好評、酷評、どちらもお待ちしてますので是非読んでみてください。
2月号とは違い、PostgreSQL一色の記事ですが僕がJPUGで学んで来た道を振り返る良いきっかけでした。
皆様もコレを機にPostgreSQLに興味を持っていただければと思います。


今回の執筆を振り返ると納期直前にオリンピックがあったり(自業自得)、仕事のトラブル対応と被ったりでなかなか大変でした。
でもその分、かなり細かいところまでPostgreSQLを振り返る良いきっかけになりましたし自分自身が一番勉強になったように思います。
その結果、書いてる時はホント苦しかったのですが今は達成感でいっぱいです。
Twitterでも投稿しましたが



本当に執筆活動はこんな感じで産みの苦しみの大変さを感じました。
でもその分、感動も大きかったのでまた機会があれば是非執筆したいですね。
最近は


  • RDBデザインパターン
  • RDBアンチパターン


の本があればいいのになぁって思ったりするのでそんなテーマでどうでしょ技評さん!?
ってこのボリューム感だと書籍になるし、僕死ぬパターンですね。
あんまり墓穴を掘るのも恐ろしいのでこの辺でこの話題は止めておきましょうw


兎にも角にも皆さん是非読んでみてください。
それで興味が分けば是非コミュニティに参加してみてください。
年内だと下記のようなイベントが予定されています。
最寄りのイベントがあれば是非参加してみてください!!



来週がOSC島根、中国地方DB勉強会とに連続ですし来月上旬はOSC長岡で新潟でもJPUGが参加します。
それでは皆様と現地で交流できる事を楽しみにしております!!


2016年8月22日月曜日

第16回 中国地方DB勉強会 in 岡山でPostgreSQLアンチパターンの話をしてきた #ChugokuDB

先月の事ですが(もう一ヶ月が経とうとしてますが)第16回が開催されました。
今回はアンチパターンを題材にRDBの辛いことを語り合いました。
講師の@t_wadaさんがおっさんたちの心を要所でエグッてたのが印象的でした。

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

※今回は動画があります


中国地方DB勉強会


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

DoorKeeper

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

Twitterのまとめ

キャンセル待ちが出るほどの大盛況で当日は立ち見の人も居ました。
@a_suenamiさんが自主的に立ってただけなのですが)
僕もこの回の動画を振り返りとして見たのですが凄くいい内容でディスカッションも含めて良い回だったなと心底思います。
このような回はまた別の場所でも是非やりたいですね。

そして次回ですが次は島根です!!

第17回 中国地方DB勉強会 in 松江

■概要
開催日:2016年09月25日(日) 10:00 - 16:30
開催場所:松江市市民活動センター 島根県松江市白潟本町43番地 松江市市民活動センター 503研修室

申込はこちら
第17回 中国地方DB勉強会 in 松江

今回はOracleのやまさきさんが来てなんと2セッションもしてくれます!!
まだまだ進化しているMySQL5.7の話が聞けるはず。
もっと言えばOracle OpenWorld 2016の直後なので驚きの新情報も開示されるはず。
噂のMySQL 8とか聞けるんじゃないかなぁと期待してます!!!

なお今回は日曜日開催ですが土曜日にはオープンソースカンファレンス島根が開催されます。
こちらも合わせてご参加して勉強会駆動島根旅行を楽しんでいただければと思います。

第15回 中国地方DB勉強会 in 米子でプログラマに知ってほしいRDBな話をしてきた #ChugokuDB

既に第16回が終わってるのに15回の報告書きます。
色々ごめんなさい、ごめんなさいm(_ _)m
当日の資料はこちらです。
PHPカンファレンスの資料を元なので見たことある内容だと思います。
スライドについては失ってしまったのでポータルサイトから動画をお楽しみください^^;

セッションとしては目玉は梶山さんのMySQLの話と竹中さんの今日から使えるセキュリティtipsです。
竹中さんのセッション、マジ最高なので全人類に見てもらいたいですね。

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

※今回は動画はあります


中国地方DB勉強会


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

DoorKeeper

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

Twitterのまとめ

鳥取の開催だったのですが懇親会の意見交換などが凄く活発で楽しかったです。
あと地方は懇親会の費用対効果が高い。
最近続けて東京のイベントの懇親会出たからか凄く感じました。
中国地方DB勉強会、スタッフが幹事をこなしてきた歴戦のおっさんばっかりなのでチョイスするお店のクオリティが高いのもプラスなところですね。

そして16回は既に終わっていて17回の予定が決まってます。
次は島根です!!

第17回 中国地方DB勉強会 in 松江

■概要
開催日:2016年09月25日(日) 10:00 - 16:30
開催場所:松江市市民活動センター 島根県松江市白潟本町43番地 松江市市民活動センター 503研修室

申込はこちら
第17回 中国地方DB勉強会 in 松江

今回はOracleのやまさきさんが来てなんと2セッションもしてくれます!!
まだまだ進化しているMySQL5.7の話が聞けるはず。
もっと言えばOracle OpenWorld 2016の直後なので驚きの新情報も開示されるはず。
噂のMySQL 8とか聞けるんじゃないかなぁと期待してます!!!

なお今回は日曜日開催ですが土曜日にはオープンソースカンファレンス島根が開催されます。
こちらも合わせてご参加して勉強会駆動島根旅行を楽しんでいただければと思います。

2016年7月19日火曜日

PHPerに知って欲しいRDBの事をPHPカンファレンス関西で話してきた

PHPカンファレンス関西@2016に登壇してきました。
まず登壇資料はこちらです。



PHPerに知ってほしいシリーズとしては最終章になると思います。
結局のところ


  • 正規化
  • INDEXの適切な利用
  • 外部キー制約やcheck制約を利用したデータの保護


この辺を適切にこなせていれば多くのPHPで作る規模のWebアプリケーションは問題にならないと思います。
またこの辺をクリアしていればORMでも便利にRDBを利用できると思います。
ということで伝えたいことは伝わったかわかんないけど僕のDBAとしての仕事が減ってくれるくらいにみんなが興味を持ってくれたら嬉しいなって思ってます!

あとカンファレンスの事だと基調講演がまぁよかった。
動画を是非ともみんなに見てもらいたいですね。
その中で出てくる名言が僕の心に刺さりました。



ほんとみんなにはあの動画見てもらいたいですね。
あと気づいたのですが"PHP"カンファレンスなのにPHPの話してない人が多かったです(お前が言うな
BigQueryやAWSの話は僕が元々好きな領域なので楽しく聞けました。
あとは聞きたい!って思っても満席で聞けなかったセッションもいっぱいありました。
動画公開楽しみにしてます!!


ということで残すPHPカンファレンスは東京のみとなりました。
僕は次は登壇しないかもしれないしそもそも行くかも分からないです。
ただPHPerの人はみんな優しい。
そして楽しい。
そんな出会いの場であるカンファレンスにはまた是非行きたいなぁって思ってます。
ということでPHPerの人向けのRDBエバンジェリスト業は一旦閉幕とさせていただきます。

いやほんと楽しかったなぁ。

2016年7月4日月曜日

やぱちーでベストトーカー賞もらって控えめに言っても最高すぎた話



YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa に参加してきました。
そこでなんとベストトーカー賞を頂きました!!
その時の資料はこちらです。
全国に百万人は居ると言われるそーだいファンの人は見たことある話だと思います。
懇親会LTでいつも酔っ払いながらやるいつものロングバージョンです。




元々はPHPカンファレンス福岡2016の前夜祭の二次会で@uzullaさんに

「やぱちーのトーク数まじやばいんで応募してください」

ってナンパされたのがきっかけです。
そもそも僕は言語系のコミュニティはJavaくらいしか参加してなかったし(1バイトもJava書いてないけど)、PHPカンファレンスですらアウェイなのにやぷしー系列の大型イベントなんて恐れ多い!と思ってました。
けれども勇気を振り絞って(どっちかというとお金を振り絞って)参加してホント良かったなと思ってます。


(福岡の時の話)
削除フラグを語るには30分は短すぎたPHPカンファレンス福岡2016な話


で色々右往左往した結果、トーク数の底上げのため2つ応募しました。
でぶっちゃけこっちが採択されると思ってました。


PostgreSQLとMySQLの機能で知っとくと便利かもしれないこと


これはすっごい真面目ないつもの感じを考えてました。
でも今思えばDB系の人は少なそうだったからポカーン枠になったかもなぁって思うのでこれで良かったなと思います。
真面目な感じでDBの話が聞きたい場合は中国地方DB勉強会の資料を見てください。
すごくいい話いっぱいあります。
あと遊びに来てもらうのも最高です。

中国地方DB勉強会


はてブで「DB知らなすぎ」と煽られたりしましたがこの勉強会のSpeakerは僕のトーク力の100倍は高い人ばかりなので是非遊びに来てください。
ちなみに次の岡山のSpeakerは@t_wadaさんです。
多分本当のSQLアンチパターンな話を聞かせてくれると思います。
なお既に満席ですのでキャンセル枠での参加は立ち見です(ぉぃ)

ベストトーカーについてはキャッチャー?なタイトルのお陰で集客が伸び、喜んでいただけたみたいで良かったです。
これを気にDBに興味が湧いた人は是非コミュニティに遊びに来てください。
みんながあなたの参加を待っています!!
まずはMySQLのイベントやPostgreSQLのイベント、そしてslackに参加するのがいいと思います。
僕の観測範囲ではみんな素晴らしい人格者で優しいコミュニティですよ!!






####立場上のあれこれはここまで####

ここからは一個人として参加したやぱちーの話


僕はやぱちーもやぷしーに参加したことがないのでどんなイベントになるか全く想像出来てませんでした。
トークに関しては人が入るかすら予想できません。
そんなやぱちーも蓋を開ければ最高の二日間でした。
特筆すべきは


  • 参加者(会場まで来てくれた人たち)のリテラシーが高い
  • 酒を呑む奴は信じれる(懇親会参加率が100%だった)
  • 気配りの素晴らしい運営
  • 飛び入り枠の面白いこと面白いこと
  • ベストトーカー賞は兎にも角にも嬉しい←超大事


ですね。
僕も何度が東京でイベントをやったことがありますがすさまじいキャンセル率でした。
懇親会のドタキャン5割という関東の洗礼を受けたりもしました。



しかしやぱちーはそんな事はなく「やり方によってはモラルの高い人たちにアプローチ出来るんだな」と勉強になりました。
また運営についても学ぶところが多く、事前資料や地方参加者への配慮など本当に学ぶところが多くありました。
そして実際に参加者として楽しく過ごすための配慮至るところにあり良かったです。
飛び入り枠やベストトーカー賞は是非他のカンファレンスでも真似て良いのでは無いでしょうか。

そして最後は@uzullaさんの人徳です。
これだけのスピーカーが90以上のわくで喋るイベントをボランティアベースでつくり上げる。
誰にも出来る話ではありません。
それはやっぱり@uzullaさんの人徳だからこそ皆がついて来るわけですし、みんなが楽しく参加出来たのだと思います。
私もそんな愛されるキャラを目指し今日も徳を積んでいこうと思います。

というわけでどのトークが面白かったとか特にご紹介するつもりはありません。
僕自身見れなかったトークが多いので動画が公開されたら順に全部見ていこうと思います。
皆さんも是非みて、「あぁ行けばよかったなぁ」と悔しがってください。
そしたらそれをみた@uzullaさんが「あぁまたやろうかな」って思ってくれると思います。
僕は次も絶対参加するしまたあの場所でトークがしたいです。
これなかった人たちは次回は会場でお会いしましょう!



以上なとおり、控えめに言ってもやぷしー最高すぎでした。
本当に主催の
  • @uzullaさん
  • 運営スタッフの皆様
  • トークをされたスピーカーの皆様
  • そして参加された皆様


お疲れ様でした!
また次回もよろしくお願いします。

2016年6月20日月曜日

JPUGという強い組織と世代交代について考えてみた

大前提ですがポエムです。

■前置き

僕はいつも言ってるけどITクラスタや格ゲークラスタ、なんでも良いんだけどコミュニティ(集まり)が大好きです。
特にIT系のコミュニティに育ててもらったと思ってるし、それを恩送りしていきたいと思ってます。
けど「出来る奴ほど東京に吸われる」って構図が僕の世代よりもずっと前から根強くあります。
リーダーシップを取ってた人が何らかの理由で東京に行き、コミュニティが自然消滅を繰り返してきました。
そしてそれは今も現在進行形で起きていて、僕がコミュニティ活動を始めた後も若者は東京に吸われています。
格ゲーも同じ事がここ10数年で起きてプレイヤーが減り、活気がなくなり、地方のゲーセンがどんどん潰れました。
ただIT系に関して言えばビジネスの母体が大きのでゲーセンのように数年で無くなると言うことは無いでしょう。
逆に地方創生と言われる昨今、むしろ巻き返すかもしれません。
そう考えると僕が今考えてる事が杞憂かもしれません。
また僕一人が悩んだところで何も変わらない可能性の方が高いです。
ですが座右の銘である

自分が行動したことすべては取るに足らないことかもしれない。しかし、行動したというそのことが重要なのである。

と思い、色んなactionをとっている最中です。
そんな東京一極集中問題とコミュニティの継続について強い危機感を持っています。

これからもIT勉強会(コミュニティ)は必要なのか本気出して考えてみた


■強い組織とは?

そういう危機感をずっと持って居る理由として過去にゲーセンが継続して欲しいと頑張ってた時期があります。
その時の経験として「一人で出来ることは限界がある」とまなびました。
毎月大会したりしましたが人集めるの大変だし、家族出来るとリソースは減るしどんどん一人で出来ることって無くなります。
その結果、フェードアウトしてしまったしプレイヤーとしても時間が止まってしまいました。

その経験を踏まえた上で現在は中国地方DB勉強会は多くの人を頼って運営されています。
実際に各県のスタッフの人が会場を用意してくださり、集客や準備を行ってくれます。
僕が担当してる事と言えば当日の講師の調整やJPUGの予算申請くらいで仮に僕が死んでしまっても継続の意思があれば継続していける体制になっています。
なので組織としての強さとは「個に依存しないチームとしての生産性の高さ」だと思っています。
俗に言う自立型組織であり、チームがチームとして信頼し高め合っていける組織です。
その点は中国地方DB勉強会については上手く作れたかなと思っています。

■組織の世代交代

しかし強い組織だからと言って「ずっと強いままで維持できる」わけではないなと最近感じています。
具体的な例だと日本PostgreSQLユーザ会はとても強い組織ですが今、大きなターニングポイントに立っています。
まずJPUGの現状ですが6/18に総会が行われました。

JPUG 2016 夏セミナーに参加してきました

ここでJPUGは既存の理事が3名ご退任し、関西支部を除くと2名減となりました。
また@snagaさんが理事長退任されました。
つまり、理事長も含めるとJPUGは組織として3名減です。
辞めていくことは大きな問題では無いと思います。
年齢的な事もあるし自由に選択できることです。
ただ@snagaさんという強いリーダーシップとビジョンを持った人が居なくなった事でJPUGのカラーが少し変わると思います。
でもそれは健全な組織の在るべき姿ですし世代交代の始まりでもあると思います。
しかし問題は「新たな人が入ってこない」ことです。
理事長は色々と議論された結果、高塚さんが引き継ぐ事になりました。
@snagaさんよりも若くなっていません。
高塚さんは能力の有無で言えば文句なく、十分に回せると思います。
しかし組織の世代交代としては若返りは無く、理事が新たに追加もされていません。
つまりこのまま行けば来年も同じように高塚さんが継続するでしょうし、平均年齢はカウントアップしていきます。
実は理事が交代した関西支部も同様で今、理事で20代は沖縄支部長しかいません。
これは僕は由々しき事態だと思っています。
似たようなコミュニティで言えば日本Javaユーザーグループは若い理事の任命、女性理事の拡大など見事に世代交代を行なっているように見えます。
ではこの2つの組織の違いはなんなのでしょうか?
そういったところをもっと危機感を持って見つめ直す必要があります。
それは地方コミュニティでも一緒です。
この問題に対して組織として対応していくことがJPUGが本当の意味で強い組織になるために必要なことです。

■強い組織にしていくためには何をしていくべきか?

それがわかってたら苦労しません。
ピープルウェアに書いてあることを愚直にこなして行くことが必ずしも最適解でもないでしょう。
でも少なくとも

  • 若者に興味を持ってもらうこと
  • コミュニティの楽しさを伝えていくこと
  • 自分のセルフブランディングやキャリアアップに大きなメリットがあること


などを伝えて窓口を広くする必要はあると思います。
なので私は今年は言語系のカンファレンスでRDBの人として登壇してるし、Web系の人たちに対してRDBの楽しさを伝えていきたいと思っています。
これは私が出来るアプローチであって他にもいろいろとあると思います。
例えばみかかデータなら新人社員教育のときに魅力を伝えるのもいいと思います。
僕がリスペクトしてやまない@yoku0825さんはとても素晴らしいアプローチ例です。



なのでJPUGの人は自分の出来る範囲でもうちょっと頑張っていけば面白いと思うし、若者はJPUGのドアを叩いて欲しいです。
私の調査ではJPUの理事の人の給料はWeb系の同世代のエンジニアよりも高いという調査が出ています(そーだい調べ)
つまりそれだけ外部から評価される場所であり、自分を高められる場所であることは間違いないと思います。
そこで私としてはまずslackであったり、開催されるイベントだったりMLにみんなも参加してほしいなと思います。



日本PostgreSQLユーザ会 ウェブ会員登録

また私として出来ることはJPUGの、PostgreSQLの、RDBのエバンジェリストのような事だと思っています。
ですのでお伺い出来る機会があれば全国何処でも伺います(JPUGの予算で)
例えばPythonやPHPのカンファレンスに実際に協賛したり参加したりしています。
ですので是非とも色んなイベントに声をかけていただければと思っています。


■まとめ

この記事を呼んで少しでも興味が湧いていただければ上記のslackやMLから参加し、実際にイベントに参加してもらいたいなと思います。
例えば今だとRailsやDjangoのデフォルトはPostgreSQLなのですから業務でRDBで苦しんでるWeb系エンジニアは必ずいるはずです。
またはOracle Standard Edition Oneからの移行を考えてる人もいるはずです。
そんな人達に私たちはアプローチして行きたいし是非ともコネクションを作りたいと思っています。
これを機に興味を持っていただけましたら是非ともなんらかの形でコミュニティに参加していただければと思っています。

●今年の予定されたイベント

・本部(東京)

- 開催済み

  • 2016/5/14 OSC 2016 Gunma 講演/ブース出展
  • 2016/5/24-25 de:code 2016 ブース出展

- 予定

  • 2016/xx/xx OSC 2016 Tokyo/Fall 講演/ブース出展
  • 2016/9/13-15 WebDB フォーラム 2016 ブース出展
  • 2016/12/2-3 PGconf.Asia 特別共産
  • 2017/xx/xx OSC 2016 Tokyo/Spring 講演/ブース出展

- 定期



・北海道支部

- 開催済み



- 定期

  • 支部勉強会開催


・東北支部

- 予定

  • 支部セミナー


・新潟支部

- 予定



・名古屋支部

- 開催済み



・関西支部

- 開催済み



- 予定



・四国支部

- 予定




・中国支部

- 予定



- 予定



・九州支部

- 開催済み

  • 2016年4月9日 支部勉強会を開催


- 予定

  • 2016/xx/xx オープンソースカンファレンス2016 Fukuoka 講演/ブース出展
  • 定例会を3回程度開催


・沖縄支部

- 予定

  • 2016/06/25 ハッカーズチャンプルー 2016 カンファレンス 参加
  • 2016/07/02 オープンソースカンファレンス 2016 Okinawa 講演/ブース出展


私は理事云々や世代交代云々はまずはコミュニティ全体の若返りと多様性の保持をしたその後に付いて来ることだと思っています。
もし最寄りのイベントがない場合は是非企画を持ちかけてください。
絶対喜んで開催してくれます!!!
ということで皆様のご参加、お待ちしてます!!


2016年6月6日月曜日

MySQL Workbenchを使うとJSON型の編集が楽になる

中国地方DB勉強会 in 米子で梶山さんがデモでJSON型のcolumnを簡単に編集してたのでその話。



つまりはこの事。
超便利なので皆にも知って欲しいのでまとめます!

1 事前準備


まずJSON型を使うためにMySQL 5.7を用意します。
そして次にMySQL Workbenchをインストールします。
既にMySQL Workbenchを使ってる人への注意点として6.3.5以降を使ってください。
そしてデフォルトの対象が5.6になってるので5.7に変更します。



あとはtableを作ってデータを登録します。
今回は下記のようなtableを作ってます。

CREATE TABLE `demo_json` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `doc` json DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;


テストデータは婚活と言えばオミカレがAPIあるのでそこのデータを利用しました。
(xmlなんでJSONに変換してから登録しました)

お見合いパーティーAPI


2 JSONの表示

さて入ったデータがこちらです。


当たり前ですがJSONが1行になっているのでこれを編集しようと思うと辛すぎます…
そこで今回のViewerの出番です!
まず編集したい行で右クリックします。
そこでOpen Value in Editorを選択してください。


するとなんということでしょう!
JSONのタブをクリックすると整形済みで表示されます!


更に下部のタブのTreeをクリックするとフィルタリングも出来ます。



3 JSONの編集

でも本題は編集が辛いことです。
見るだけならCUIでjqなど使うことでも対応できます。
任意の要素を選択してF2を押してください(ダブルクリックでもOK)


なんと要素ごとに編集できます!!


保存後、再度確認するとちゃんと変更されています。


これでちょっとした編集の時にSQLを書く辛さは不要です!
またデータの中身が見たいのに整形用のワンライナー書いたりしなくても大丈夫です!
非常に便利なのでJSON型を使う人は是非合わせてMySQL Workbenchを使ってみてください。

やっぱこういうこと教えて貰えるから中国地方DB勉強会は最高なんだよな(ステマ

2016年5月29日日曜日

関西DB勉強会に行ってきた話

行ってきました大阪。
題名にもなってる関西DB勉強会が超絶面白かったので皆様にもおすそ分けブログです。

第3回 関西DB勉強会


内容は各DB


  • OracleDB
  • DB2
  • Firebird
  • MySQL
  • PostgreSQL


のエンジニアが集まってみんなとディスカッションをすると言う会です。
1時間くらいのパネルディスカッションと言うのは経験があるのですがそれをフリースタイルで半日!!
最初はどうなることやら…と思ってたのですがこれがホント面白かったです。
非常にレベルが高くてアーキテクチャの話、商用DBとOSSの使い分けなど非常に勉強になりました。
その中でもSQL Serverの上位モデルは列指向DBの利用をすると超高速と聞いて驚きました!!
その理由は下記のような感じでココらへんがOSから作ってる会社の強みだなと。



列指向DB自体の話もとても詳しく聞けたのでこれだけでも大阪来てよかったなと思いました。
ただOracleのOracle Exadataなんかもそうだけど「超すごいものはお金がかかる」ってこともわかりましたw
商用DBはお金を出せばパラレルクエリなんかもそうですけどホント高機能ですよね。
会場にも話題になりましたが例えばOracle Standard Editionなんかは十分PostgreSQLで代用できます。
しかしハイエンドのモデルについてはやはり機能面で大きな差があります。
だからこそ「未開の新機能より商用DBの既存機能」を如何に何から実装していくのか?がPostgreSQLの今後で楽しみなところだなぁと思います。

とホントに楽しかった関西DBなのですがPostgreSQLで質問があった事の解答例を下記にまとめておきます。

1. PostgreSQLアーキテクチャについて

永安さんがまとめてくれてるのでこのサイトを見ましょう。

・PostgreSQLアーキテクチャ入門
postgresqlinternals

あとこの本もオススメです。



2. backupについて

佐藤さんの資料が素晴らしいです。



あとPostgreSQLカンファレンスの時のYou Tubeもあります。





3. レプリケーションについて

ざっくりとした概要を把握するには手前味噌ですがこちらをどうぞ。



4. もっとPostgreSQL知りたい!

Slackっていうチャットサービスにチャンネルを用意してます。
そこに参加して質問を投げてくれれば色んな人が回答してくれます!
また最新情報の発信もしてるので安心!
しかも日本語!!←ここ重要ですよね。
ということで下記のリンクから早速どうぞ。

PostgreSQL部屋に入るSlackin


ということで楽しい一日でした。
機会があればまたこんな感じのディスカッションの場に参加したいですね!!



ということで関西DB勉強会のスタッフ、参加者の皆様ありがとうございました。

2016年5月23日月曜日

削除フラグを語るには30分は短すぎたPHPカンファレンス福岡2016な話

PHPカンファレンス福岡2016に参加してきました。
控えめに行っても最高でしたね!
登壇者のスライドについては纏めてくれてる人がいるのでこちらをどうぞ。

もう確認した?『PHPカンファレンス福岡2016』全スライドまとめ #phpconfuk


そして30分のLTと言われた僕の資料はこちらです。
リンク先の資料が北海道の時なので本物はこっちです( ー`дー´)キリッ

で実行計画の話はこっちを見てもらうと幸せになると思います。


でもって削除フラグの話はこちら。



福岡でマテビュー良いよ!!って言ってましたがアンチパターンで「マテビューの功罪」で辛い記憶を語ってます。

てなわけでRDBをPHPerにより良い理解をしてもらう旅も半分折り返しました。
内容としてちゃんと伝わったかは不安なんですけどこれを機会にどんどんDB界にみんなも遊びに来てもらえたら良いなと思います。

でPHPカンファレンス福岡について
飯もうまいし会場も広いしでカンファレンスとしても最高だったし旅行としても最高でした。
北海道の時に初めてお会いした人たちが当たり前のように福岡にも居てみんなほんとPHP好きなんだなと感じましたねw
皆様にはフレンドリーにしていただき、ぼっちでホテルで涙流しながら缶ビールを飲むことなく楽しいお酒も飲めました。
福岡、来年と言わず今年中にもう一回行きたい勢いなんで誰かDBの話するんで呼んでくださいw

というわけで次は大阪ですね。
CfPもまだ募集中なので今からでもみなさん間に合いますよ!!

PHPカンファレンス関西


次は皆さんと大阪で会える事を楽しみにしています!!

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にはゴールドスポンサーとして参加します。

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

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

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

2016年1月24日日曜日

Software Design 2月号の特集記事を書きました



もう発売から一週間経ちましたがSoftware Design 2月号の特集記事を執筆しました。
最近は仕事でMySQLをガッツリ使っていて自分としての経験談も含めて比較した内容です。
お互いの得手不得手をそれなりには伝えれたかなとは思います。
ですが本当の意味でのコアな世界は全然足りないと思ってます。
そういう深い部分を中国地方DB勉強会でフォーカスしていければ楽しいなと思ってます。

そして一番伝えたかった事は第七章に詰め込んだつもりです。
なにわのビル・ゲイツこと有山さんにはこんな感じで煽られましたがw



特に最後のコラムのところがかなりポエムになっていますw
ですがそれが伝えたかった事です。
最初の原稿を出した時に編集の人に

「そーだいさんが伝えたい事、もっとあるでしょ?」

と言われて下記のブログを書いたりもしました。

これからもIT勉強会(コミュニティ)は必要なのか本気出して考えてみた


この記事を書いて一番得れたモノは技術とか原稿を書く苦労とかもありますけど

自分が大切にしてることを振り返る機会を得れた

ことだなって思います。
ブログでも同じような効果はあると思うのですがそれを伝える対象が多い分、今回は本当に深く振り返る事が出来ました。
こういった機会があれば皆様も積極的にチャレンジすると得るモノが多いのでオススメです。
ということで書店で見かけたら手にとってみていただけると嬉しいです。