tom__bo’s Blog

MySQL!! MySQL!! @tom__bo

"詳解MySQL5.7"社内読書会を終えて

この記事はMySQL Casual Advent Calendar 2018 10日目の記事です。

皆さんMySQLの学習はどのようにされていますか?
MySQLを含めたデータベースが落ちることはそのままサービスの停止につながることが多く、安定運用にはそれなりの知識と経験が必要だと思います。 データを管理しているという特性上、設定や運用方法に欠陥があると一時的にサービスが止まるだけではなく、取り返しのつかない障害になってしまう可能性もあります。 そのため、失敗しながら学ぶといったことは許されないにもかかわらず、運用する中でどういった問題が起こるのかは運用してみないとわかりにくく、さらに本番運用を想定したテストをすることも難しいため初学者が誰の手も借りずに一人前になるのはほとんど不可能だと思います。
MySQL世界でもっとも普及しているオープンソースデータベースソフトウェア(公式HP)と公言しているだけあり、コミュニティの方々の貢献も多く様々な場所で情報を見つけることができますが、初学者から熟練したMySQLerになるのはどのように学習したら良いのでしょうか?
僕はこれまで1人で本やネット上の情報から学習するという方法で徐々に学習を進めてきましたが、やはり同じ目的を持つ人と一緒に勉強をするほうが、自分にはない視点や経験を得やすいため効率的だと思います。

ちょうど最近、僕と最近入社されたOraclerの方を中心に、約2ヶ月かけて詳解MySQL5.7の読書会を行い、最後まで完走しました。 これまでも友人との勉強会や研究室での輪読などで、複数人で1冊の本を読みながら勉強するということをしてきましたが、参加者の理解度やモチベーション、スケジュールの関係で満足行く勉強会にならないことがよくありました。 しかし、複数人で勉強をするメリットを活かした良い勉強会ができたように感じたので、その進め方を書いてみようと思います。 みなさんがどのようにMySQLに関する学習をしているのかを知りたいので、学び方に関する情報が増えたら良いなという気持ちもあります。

※ 各回で疑問点の解決や実験を行った上での議論をした(後述)ので、その内容を書いてまとめようと思ったのですが、社内の環境や設定で確認したものが多く、外向けに書き直したり整理したりする時間が取れなかったので薄っぺらい記事になってしまいましたがお許しください。

進め方

2~4章がちょうど各章60ページ、それ以降は2章分で60ページ程度だったので、1週間で約60ページずつ進めることにしました。 結果的に全6回途中スキップした週が2回あり、2ヶ月で最後まで完走するに至りました。結果全て参加したのは僕とOraclerの方2人でしたが、そもそもの対象者だった2人にとって非常に有意義な勉強回になったと思います。

勉強会の初回で以下のルールを設定しました。

  • 分担をしない、全員が必ずその週の範囲を全て読む
  • 対象範囲内の内容のうち必ず1つトピックを決めて深掘りをして発表する
  • 対象範囲でわからなかった点、気になった点があれば発表する

深掘りの発表内容については打ち合わせをせず各々気になることを自由に調べるようにしました。 また、以下は最初に決めたことではありませんが、今回の勉強会の成功に大きく貢献したと思います。

  • 読み終わらなかったり、深掘りができなかった人がいる場合は延期
  • わからなかったことや調べきれなかったことは次の回までに調べ、発表する

これらは個々人のモチベーションや忙しさの違いから守れないことが多いですが、今回は自然とこれができたので負担なく最後まで進むことができました。

各章での深掘り内容はだいたい↓の感じです。

念の為書いておくと、この勉強会は業務上の指示ではなくメンバーで自主的に開催したものです。 なので、本を読んだり実験したりは休日にやっていますが、この勉強会中にまとめたもので公開しているものは殆どありませんでした。 今後はまとめを公開することも意識して見たいと思います。

ここまで書いて、今回非常に良い勉強会になったと感じられたのは、扱っている業務に密接に関係していて参加者のモチベーションがかなり高い、実験したり比較する材料が手元にいくらでもある、議論の途中で社内のプロたちのアドバイスが聞ける、本の内容が非常に整理され、かつ具体的なのでわかりやすいという好条件の中で開催できたことがが大きな要因だったように思えます。

取り組む内容によってはこういった条件を揃えることは難しいと思いますが、特に

  • 分担をしない、全員が必ずその週の範囲を全て読む
  • 対象範囲内の内容のうち必ず1つトピックを決めて深掘りをして発表する
  • 読み終わらなかったり、深掘りができなかった人がいる場合は延期

この3点を押さえて進行することができれば質問や議論の質も上がりよい読書会になると思います。 冒頭にも書いたようにデータベースの運用に必要な学習は難しいですが、安定運用に向けてできる限りの準備をするための学習方法も探っていきたいと思います。