REDMINE JAPAN 2020 にまつわるエトセトラ

前回から 2 か月空いたので初投稿です。

2020.09.18 に REDMINE JAPAN 2020 が開催されました。僕は「Redmine データベースのテーブル構造を紐解いてみる」というタイトルで講演しました。ここでは、スライド作成の舞台裏をダラダラと垂れ流してみようと思います。俗に言うチラ裏です。

今回、タイトルの通り Redmine データベースのテーブルがどのように設計されているかを一部ピックアップしてお話しました。記憶が定かではないのですが、あきぴーさんから何か話さないかとお声掛けいただいたときに、30 分くらいで思いついたテーマだったような気がします。とは言っても、急に思いついたわけではなく、以前からデータベースに関する話には興味があって、でもよくよく考えるとこういった話ってあんまり見かけることがないよなあ…って、それなら思い切ってこのタイミングで話してみようかとエントリーした次第です。

…が、そこからが結構な難産でした。当初は、テーブルの E-R 図を描いて「チケットの周辺はこういうリレーションで成り立ってるんですよ」とか 「Wiki の周辺は~」とか順番に説明していこうかなと思ったのですが、それをやると下手すりゃ半日くらい喋っても終わらないんじゃないかと、そして何よりもこれじゃあ聞いてる方が退屈だろう…ってことで一旦白紙に。それなら面白そうなとこだけピックアップして話せばよさそうだと思ったのですが、今度はどこを選定するのがいいかで頭を悩ませることに。入れ子集合は絶対に外せないと思ったのですが、他は何がいいんだろうかって。実はこのあたりからとある葛藤で苦しむことになって、「この話って、データベースのこと知らない方にとってはチンプンカンプンだろうし、データベースや Active Record に詳しい方にとっては当たり前すぎて退屈じゃなかろうか」という疑念から、これは語りたいけど…やっぱやめとこうか…いややっぱり…といった感じで全然手が動かなかったです。

それでも時間は待ってくれずで結局今週になって、もうこれ以上着手時期を遅らせると間に合わないぞってところまできてようやく重い腰を上げました。ここで改めて初心に帰って「データベースの話って面白いんだけど、あんまし見かけたことがないよね」っていうノリにしようと決めました。それなら多少軽い話を混ぜても違和感ないかなって思い、まず最初に軽めの話で Rails で作ったテーブルはどのようにしてリレーションを持っているかを説明して、あとはどうしても話したかった入れ子集合と、ちょっと難しいかなって思ったけどシングルテーブル継承、あとはちょっとした小ネタとして楽観的排他制御と表示順の制御を入れてみました。(実は、表示順の制御は当初想像していたものよりもややこしく、割と必死でソースコードを読み漁りました…)

こんな感じでやってたので、スライドが完成したのは当日の朝 8 時頃で、もちろんリハーサルなんてマトモにしてなくて、本番ではグッダグダになっちゃってお聞き苦しいところもあったかとは思いますが、概ね良くできたんじゃないかなと熱い自画自賛をしております。(おそらく傍からではそうは見えなかったと思いますが、内心ビビりまくりでした…)始まるまでは、こんなテーマだからガラガラなんじゃないかなと思ってたのですが、ふたを開けてみると 100 名くらいの方にご聴講いただいていたようですので、驚きとともに感謝の気持ちでいっぱいです。本当にありがとうございました!!

そして、その後の懇親会で話していたときにも話題に出てて、今もずっと頭の片隅に引っかかっているのですが、「今回僕が話したデータベースのこともそうだけど、Redmine って設計の思想とかがドキュメントとして表現されていないよね」ってのが気になって気になって今夜もグッスリ眠れそうです。「もしかして、今、本当に Redmine に必要なものは、モダンな UI やイケてる機能とかじゃなくて、Design Doc ではなかろうか?」という仮説を立てています。今なんでこんな設計になっているのかの理由や背景がわかっていれば、開発者の皆さんもとっつきやすくなって、もっと積極的に Redmine の開発に携わってもらえるんじゃないかと。そうすれば UI や他のイケてる機能の開発も加速していくんじゃないか、っていう妄想をしています。

… 先生の次回作をご期待ください。(涙)

最後になりますが、REDMINE JAPAN 2020 スタッフの皆さん、他の登壇者・パネラーの皆さん、スポンサーの皆さん、参加された皆さんへ、お疲れさまでした&ありがとうございました!! 最&高な一日でした。相変わらずのやべーやつですが、引き続き生温かい目で遠目に見守っていただけると幸いです。

この記事が気に入ったらサポートをしてみませんか?