第21回 Redmine大阪 Online にまつわるエトセトラ

男もすなる note といふものをオッサンもしてみむとてするなり。ということで note 初投稿です。使い方が間違っているかもしれませんがご容赦ください。

2020.07.11 に 第21回 Redmine大阪 Online が開催されました。僕は「最速お届け!特盛 Redmine ~お好みプラグイン・テーマの Docker Compose 仕立て~」というタイトルで LT をしました。ここでは、LT の内容が出来上がるまでに至った過程や、その裏側で渦巻いている感情や思想などを、イベントでのトピックを交えつつダラダラと垂れ流してみようと思います。俗に言うチラ裏です。書き終わってから見直したらクソ長くてドン引きしましたが、おつきあいいただける方だけどうぞです。

今回、 Docker Compose を使って Redmine を構築する方法についてお話しました。このアイディア自体は決して目新しいものではないですし、 Ansible など他のツールを使って構築する方法もあります。前例がいくつかあることも知っています。ではなぜ、このような車輪の再発明をドヤ顔で話したかというと「プラグインやテーマをてんこ盛りで、かつ追加や更新も簡単にできるような」というところまで突っ込んだ話を見かけたことがなかったからです。

以前からどこかで話題になっていたと記憶していますが、「Redmine プラグインやテーマも、RubyGems のようなパッケージマネージャーでインストールやアップデートの管理ができたらいいのに」という願望があったはずです。僕も常々そう思っています。しかし、今更パッケージマネージャーが導入されるのは望み薄だろうとも思っています。それなら他の何かよいやり方はないだろうか、ということで Docker に目をつけました。追加したいプラグインやテーマを Dockerfile に記述して、更新するときは build --no-cache を実行すればよいので、だいたいパッケージマネージャー管理と似たような恰好になったんじゃないかと考えています。(RubyGems で言えば、Gemfile に使いたい gem を記述して、bundle install や bundle update を実行するような感覚)

もちろん僕の方法はベストというわけではないです。正直なところ、厳密に言えばもっと深く検討すべき色んなところ(具体的にどこと言われると説明は難しいですが)を端折っている自覚があります。それでもなお、この方法を選んだのには理由があります。それは「最速」という単語に込めた思いです。何を目指したのかというと、「サーバー構築に関わる諸々の知識は持ち合わせていないけど PC を触ることはそれなりにできる人が、手元の環境でプラグインやテーマがてんこ盛りの Redmine を触れるようになるまでが最速になるように」ということを目指しました。Docker や Docker Compose は何も知らなくても、実際インストールするだけなら簡単です。Ubuntu 20.04 LTS を使うなら sudo apt install docker-compose を実行して、実行ユーザーを docker グループに登録するだけです。(Ansible とかでも簡単だ、って言われるかもしれませんが…)とにかくまずは触ってほしいから、初めて構築する方には「なるべく少ない学習量で」動かせるところまで進められるように配慮したつもりでいます。構築に慣れてくると当たり前になる(僕自身も徐々にそうなりつつある)知識は色々とあるのですが、その部分は初めて学ぶ方にとってはつらみが多いはずだと思っていて、そのつらみのせいでやっぱ使うのやめとこうと敬遠されてしまうのが本当に悲しいことだと思っています。

前述の内容も踏まえて、実は僕が本当にターゲットにしたいユーザー層は、みうみうさんの言葉を借りるなら「ヘイトを溜めている利用者層」だったりします。ヘイトを溜めている利用者層の存在は僕も強く認識していて、そのうちの何割かはきっと、「ろくに整備されていない Redmine を無理やり使わされている」のが原因で、 Redmine って聞くだけで拒否反応を示しているんじゃないかという仮説を立てています。もちろん構築・運用する側の言い分もわかります。思考停止でおかしなルールが生まれているのは論外ですが、色んなしがらみがあって Redmine を最新化できないとかプラグインやテーマが入れられないとかシステム管理者権限を気軽に渡せないとかあると思っています。

ここから少々脱線しますが、たとえば、本番運用なら SaaS で運用すべきという意見があることも知っていますが、その場合 SaaS 事業者側が無秩序にプラグインやテーマを用意してくれるのか、って話があります。前田さんもおっしゃっていましたが、たとえば RedMica の場合は DB スキーマに影響があるものは導入に躊躇するということが該当します。同じことは Redmine 本体にも言えると思っています。たとえば二要素認証の機能はいまだに Redmine 本体に取り込まれませんが、それはきっと JPL さんの中で何らかの設計ポリシーに引っかかる部分や取り入れたことによる将来への懸念事項があるのでしょう。何が言いたいかというと、運用する側(≒責任をもつ側)は利用する側とは違う視点を持っていて、利用者からするとなんでこんなことすらやってくれないんだろうということのいくつかは、運用側としてはやりたくてもできない場合があるってことです。そしてそれは、運用母体ごとに異なっていても仕方のないものです。実際、僕だって大げさに言うならば、他の誰がやっていることとも相いれない部分があるから、今のアイディアを出しているって面もあります。

話は戻って、こういった自由が許されていない Redmine が生まれてしまっていることは理解できるが打開することができない状況において、不幸にも Redmine アレルギーを持ってしまった方々に改めて Redmine の良さを知ってもらうには、と考えたときに、サクッと手元でも作れるようにしてシステム管理者権限を持って色々ゴリゴリ遊ばせてみるのが一番じゃないかなって思っています。そのためにも、「簡単につくれる」「要らなくなったらすぐに捨てられる」のが重要だと思って Docker を選んだというわけです。便利なプラグイン群やイケてるテーマ群をたっぷり詰め込んだ最新の Redmine をシステム管理者権限を持ってイジっているうちにきっと、このツールの便利さ・素晴らしさが実感できて、好きになってくれるんじゃないかなという淡い期待を持っています。

ちなみに、実は僕は「簡単につくれる」よりも「要らなくなったらすぐ捨てられる」の方を重視しています。どんな事でも初めてのときはわからないことが多いからまずはやっちゃえってことが多いと思いますが、やってる途中であれ変だなおかしいなって感じることも必ず出てくるはずです。その時に方向転換ややり直しができず、間違っているってわかっているのに進み続けるしかないって状況に陥ってしまうとつらみが深くなっていくと思っています。Docker なら要らなくなったらコンテナやイメージを捨てたらいいだけです。アンインストール時にゴミが残る心配もなく、きれいさっぱりなくなります。結構あっさり消せちゃうので、コンテナボリュームを消す操作をするときは後述のバックアップを事前にやっておくなど慎重を期した方がよいですが。 他にも、今の環境は捨てたいけど次の環境に移したいケースもあると想定していて、そういったケースをフォローするために、Docker Compose で作った Redmine を Ubuntu 上でいい感じに動かす手抜きレシピ という記事ではデータベースのバックアップやリストアについても言及しています。この記事では PostgreSQL に特化しているのですが、余力があれば MySQL などへの移行もまとめてみたいです。

話が行ったり来たりになっちゃいますが、便利なプラグイン群やイケてるテーマ群をたっぷり詰め込んだ最新の Redmine を使ってもらいたいって気持ちは、それと同時に、そんな素晴らしいプラグインやテーマがもっともっともっともっと世の中に広まってほしいという強い願いも込めています。これは LT でも強調していましたが、そのとおりの紛れもない本心です。開発に携わる皆さんの Redmine を便利にしたい、そして Redmine を使って困った人々を助けたいという熱い想いは胸に突き刺さるほど伝わってきています。そして、僕もそこに何らかの形で貢献をしたいと、何ができそうか考えたときに、この Docker を使ったアイディアで開発者から利用者までの橋渡しを助けることができるんじゃないかと思ったわけです。さらに言えば、プラグインやテーマをまとめてインストールした環境を作りやすくすることで、開発者同士のつながりがもっと強くなることを期待しています。個々のプラグインやテーマは単品でも強力ですが、複数を組み合わせたときにシナジーが生まれてより一層強くなれるのではないかという未来を夢見ています。おそらくは今の状態では個々の開発者がめいめいに自分が正しいだろうと思っているやり方で作っているだろうと推測されますが、いろんな開発者のプロダクトが一か所に集中していると、きっと各開発者が見出したそれぞれのよいプラクティスが横断的に見えるようになってくるんじゃないかと思っています。たとえば、「あのプラグインのこの実装部分は上手いから倣いたいな」とか「あのテーマのレイアウトにあわせておくと使いやすそうんだな」とか出てくることを期待しているわけです。そしてその流れが波及することで、プラグインやテーマの全体のクオリティが底上げされ、自律的に統率が取れて高いレベルにまとまることが理想形だと考えています。

…と、まあ、長々と垂れ流しましたが、ここまで読んでいただけたら、僕の LT の内容も多少は合点がいきやすくなるのかなあ、と。まだまだ Redmine に関して語りたいことは山ほどあるのですが、オッサンになると話が長いのでこのあたりでいったんやめておきます。また気が向いたら何か書くかもです。

最後になりますが、Redmine 大阪のスタッフの皆さん、他の登壇者・パネラーの皆さん、参加された皆さんへ、お疲れさまでした&ありがとうございました!!  こんなやべーやつですが、引き続き生温かい目で遠目に見守っていただけると幸いです。

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