どうも、たくチャレ(@takuchalle)です。

個人開発 #2 Advent Calendar 2018の7日目の記事です。

前回は @terumichi1209 さんのVue.jsで麻雀点数計算でした!麻雀の点数計算ってややこしいですよね…簡単に使えるのがすごいです!しかし、最近本当Vue.jsが流行ってますね。

さて今回は、最近 Rails チュートリアルを終わらせた僕が勉強がてら作ったサービスQ boxの紹介です。

Qbox とは

誰でもカスタマイズ可能な OSS の質問箱もどきです。

Contribute to takuyaohashi/qbox development by creating an account on GitHub.

質問箱と大きな違いは、いろんな人がログインして使うのではなく、質問されたい人それぞれが自分でカスタマイズしてデプロイできるところです。 イメージとしては@hyukiさんの結城浩に聞いてみように近いです。

僕のQ boxを立てているので、見てもらったら早いかと思います。ついでに何か質問してくれたら泣いて喜びます。

サイトのデザインのカスタマイズはもちろん、質問の画像もカスタマイズできますし、広告や自分のサイトへのリンクを貼ったりと、なんでもできます。

README.mdに詳しい手順も記載してあります。

使った技術

  • Ruby 2.5.3
  • Rails 5.2.1

作り始めた時の最新のバージョンを使いました。12/4 に Rails の 5.2.2 がリリースされましたが、まだ使ってません。

  • Heroku

無料で簡単にデプロイできるからHerokuにしました。Go を使ったアプリもデプロイしてたりしてよく使ってます

  • CircleCI

テストの実行に使っていて、README.mdにもステータスバッチを貼ってます。継続的インテグレーションはプロジェクトが始まったら真っ先に設定すべきだと僕は思っていますHerokuへのデプロイもここでやることも考えたのですが、デモサイトはあくまでデモなので組み込むのはやめました。

  • wkhtmltoimage

質問の画像を生成する部分で使ってます。HTMLでデザインしてそれを画像に変換できるのでカスタマイズしやすそうなので選びました。ただ、HTMLで対応していないプロパティとかあります。flexとかうまく動かないので工夫が必要です。 本家質問箱ではImageMagickを使ってるっぽい(?)んですけど、イマイチ使い方が分からなかったので諦めました。

こだわったところ

なるべく早く作り上げる

本家質問箱では 6時間で作り上げたことで有名ですので、なるべく僕も早く作り上げようと思いました。何より僕が飽きっぽいっていうのもありますが…

git logを見てもらえばわかるのですが、rails newをしたのが11/26で、0.1のタグを打ったのが12/1なので、およそ6日かかりました。いくつもサービスを立ち上げてるせせりさんと比較するのはおこがましいのですが、全然勝てませんね。

一番ハマったのはwkhtmltoimageを組み込むところで、思った通りの画像にならなくて1,2日かかった気がします。

Railsの部分はすんなり書けたので慣れてくればもっと早く立ち上げられそうに感じました。ただ、その分ブラックボックスが多いので性能のチューニングやトラブった時の対処にはまた違う苦労がありそうです。

Rails チュートリアルを終わらせた人でも読んで分かる技術を使う

まず僕自身が Rails チュートリアルを終わらせた後の最初のサービスなので凝ったことができないってのがあります。 同じようにチュートリアルを終わらせた人が何作ったらいいか分からない、どこから手を付けたらいいか分からないっていう時のために参考になればいいなと思ってこうしました。

ActiveStorageを新しく使ってるのとwkhtmltoimageを組み込むところ以外は、すんなり読めると思います。気になった部分があれば issue や PR を投げてくれたらと思います。

誰でもカスタマイズできるように OSS として出す

せっかく作ったサービスでいろんな人に見てもらいたいのと、本家質問箱に不満がある人がカスタマイズして使えるようにしたかったです。

あと、自分の周りにRailsやってる人がいないので、GitHubに公開して何かフィードバックを得られたらなっていう目論見もあります。issue や PR 待ってます。

まとめ

Q boxの紹介をしました。

最近よく、こんなサービス作りました、みたいな記事をよく見かけて、僕には到底作れなさそうなサービスばかりですごいなあと思っています。

そんな中チュートリアルに毛が生えたようなものを紹介するのは気が引けるのですが、みんなこういうところから始まっていくと思うので僕は出していこうと思います。

今後は JS 周りのフロントエンドの勉強してくか、スマホアプリの勉強していくか悩み中。Flutterかなあ…

次回の個人開発 #2 Advent Calendar 2018@no_clock さんの「P2P地震情報14周年: 個人サービスを長く続けるための技術」です!

同じカテゴリの記事