記事:CoderDojo Japan のバックエンド刷新

本記事は2016年12月12日に公開した記事を一部改訂したアーカイブ版です。


CoderDojo Advent Calendar 12日目、coderdojo.jp の裏側をリニューアルした話です。 (執筆: @yasulab)

🗣 動画版


📜 スライド版


📝 記事版


トップページ (https://coderdojo.jp/) が変わっていないので気づきにくいですが、実は coderdojo.jp の裏側 (バックエンド) が新しくなりました! 🎊

裏側が新しくなったので、ついでにブログ記事も coderdojo.jp で書いてみようかなと思い立ち、ササっと組み立ててこちらから公開しています。まだデザインやSNS周りが出来ていないので質素なページではありますが、ブラウザからブログ記事を執筆・公開するぐらいならサっとできてしまいます! 📝✨(どうやっているかは後述)

本記事はブラウザからの投稿テストも兼ねつつ、どんな背景があって、どういう風に裏側が置き換わって、どういうことができるようになったのかを書いていきますね😆

🔙 これまでの coderdojo.jp の変遷

初めて知る方もいるかもしれませんが、これまでの coderdojo.jp (coderdojo-japan/web) は CoderDojo Tokyo (現: CoderDojo 下北沢) の河村さんが作った coderdojo-tokyo/web をアレンジして作られています。裏側はどちらも同じで、Parse と呼ばれる MBaaS を使っています。しかしこの Parse というサービス、なんと2017年1月28日に閉鎖してしまうんですね😱 したがって、閉鎖するまでに裏側を別のサービスに移行する必要がありました💦

また、使われている技術がやや高度なこともあってか (あるいは周知不足もあってか)、以前からオープンソースとして公開されているものの、この coderdojo.jp の開発・運用は @yasulab がほぼ1人で行っていました (参考: 当時のコミット状況)。開発は好きなので自分が進める分には問題ありませんが、やはりエンジニアではなくとも気軽に編集・更新できる仕組みがあるともっと良さそうです 🆙

他にも同様の課題として、CoderDojo Japan に掲載している Dojo 情報を編集したいときは毎回 @yasulab に連絡する必要がある、という仕組み上の課題があります。Dojo の数が 20~30 ぐらいの時はこれでもまだ機能していますが、現在のような規模にまで増えていくと、それぞれの Dojo がそれぞれの情報を編集できた方が良さそうですよね 😅

🚜 移行は必須。安定した運用を重視

「移行は必須。ただせっかくなら、もっとうまく開発・管理・運用できるようにしたい」という思いは2016年の初頭から感じていて、もっといろんな人が気軽にできる編集や投稿できるものだといいなぁ、とぼんやりと考えていました👀💭

要件をまとめると、次の3つになります ✅

  1. ブログ機能なども実装したいし、拡張性・柔軟性も保持したい
  2. 何かあっても大丈夫なように、少なくとも @yasulab が開発・メンテできる
    • => Ruby/Rails + Heroku
  3. Ruby/Rails を知らない人でもブラウザからポチポチ編集できるとベスト 💯
    • => Rails + CMS … ??? 🤔

上記の 1.2. については Ruby/Rails + Heroku で十分そうです。また、これまで開発・運営は @yasulab が対応していたので、技術面、運用面ともに問題になることはなさそうです。でも 3. は…?

☁️ Cloud-Based Rails CMS: Scrivito

そんな時にふと舞い降りた話が、Scrivito です。

Cloud-Based Rails CMS
https://scrivito.com/

次のデモ動画を見てもらうと分かりやすいのですが、Ruby/Rails を Cloud-Based CMS として活用できるようにするプロ向けの有料サービスです。

2016年にリリースされたばかりのサービスですが、豊富なプラグイン機能や開発者と直接話せるサポート体制もあり、順調に採用事例も増えているようです。ただ、これだけ充実していることもあってか、お値段もそれなりにします 💸

Large:  $499/month
Medium: $169/month
Basic:  $19/month

なんとかして使えるといいなぁと思っていた頃、なんと Product Owner (PO) の Thomas さんが来日しているとの話が…👂 ダメ元で尋ねてみた結果、(本当は1時間ほどの英語での打ち合わせでしたが要約すると) 次のような話になりました😸

  • Thomas「日本ではまだ利用例がなくて、利用事例は欲しいんだよねぇ🤔」
  • yasulab「CoderDojoはOSSコミュニティなので、丸ごと公開できますよ!」
  • Thomas「おぉ、それいいね! 👍」
  • Thomas「実はドイツの開発チームでは CoderDojo もやってるんだよね。CoderDojo ならぜひ!」
  • yasulab「ドイツにも CoderDojo 結構ありますもんね〜😸」
  • Thomas「じゃあ本社 (ドイツ) に戻ったら相談して、問題なければ永久無料アカウントを配布するね🎫」
  • yasulab「ぜひぜひ! お返事お待ちしております! 😆」

まさかこんなに話がすんなり進むとは思いませんでしたが、後日 CoderDojo Japan 向けに永久無料アカウントを無事発行してもらうことになり、Scrivito を無料で使えるようになりました。その後、休日や仕事の合間で少しずつ載せ替えていき、現在に至ります。

そして今こうしてバックエンドが新しくなったので、既存の状態 (トップページ) も保持しつつ、新しい機能を追加しやすくなり、かつ、技術に詳しくない人でもブラウザ上から開発に参加できるようになりました! 🆕✨

🎁 今できること、今後できること

バックエンドが刷新され、開発面・運用面ともに改善されたので、今後は様々な機能をリリースしていけそうです 🚀🆕

既に実装済みのアイデアも含め、現時点では次のような構想を考えています 👀💭✨

今回のバックエンド刷新に伴い、スピーディーに実装を進めて行ける環境が整っているので、何か面白そうなアイデアがあれば他にも作ってみようと考えています🔧✨ もちろん GitHub 上からも公開しているので、欲しい機能があれば Issue や PR などでリクエストしてもらうことも可能です😸👌

🔧 他、やったこと

上記の他にも、細々とした更新があります。特にドメイン周りも複数人で管理できるようにしたり、下北沢オープンソースCafeからの支援をいただけた部分が大きいです。主な更新は次のとおりです。

🔖 まとめ

とまぁ、こんな感じでバックエンドが無事に移行できました!

色々とできることの幅も広がったので、個人的にも開発がもっと楽しくなりそうです😆✨ 何か気になることがあれば @yasulab までお気軽にお問い合わせください 😸

CoderDojo Advent Calendar もまだまだ続きますので、引き続きお楽しみください 😉

執筆: Yohei Yasukawa


💖 謝辞

今回の coderdojo.jp のバックエンド刷新は YassLab 社の以下の方々に協力してもらいました。この場を借りて御礼申し上げます。ありがとうございます!! 😆✨

YassLab 株式会社


📖 合わせて読みたい ✨