LoginSignup
8
3

More than 5 years have passed since last update.

Ruby|REx eラーニングサービスはじめました

Posted at

はじめに

Tipsでもなんでもありません。たんなる宣伝です:smile:

Ruby技術者認定試験のeラーニングサービスを始めました。REx(レックス)といいます。
https://rex.libertyfish.co.jp

Githubのアカウントがあれば簡単に始めることが出来ます:tada:

きっかけ

保守ばっかりやっているとつまらないので、自分の知識の棚卸しをかねていちから作ってみたかったので:smile:

新しいチャレンジ

このサービスは管理画面はありません。いまのところは。

おそらく私だけだと思いますが、サービスを作る場合に管理画面から作り始めて
フロントはもう疲れ果てているケースが多いです:sweat:
eラーニングはどうしても作りたかったのでフロントから作り始めました。

で、肝心の問題なのですがどうやって管理しているかというとGithubでリポジトリを作って管理しています。
こうすることによるメリットは4つあります。

  1. マークダウンのプレビュー機能を作らなくていい
  2. 検索機能をつくらなくていい
  3. PRレビュー機能をそのまま使える
  4. 管理ページは見せないなど権限チェックを作らなくていい

できるだけミスが無いように問題を提供しようと思っていますので、
GithubのPRレビュー機能をそのまま使えるのはありがたいです:smile:

デメリットも2つあります。

  1. 問題ごとの識別子が振れない
  2. テーブルの親子の構造を表現できない

これらをどうやってクリアしたのか話していこうと思います。

識別子をどう振る問題

識別子はUUIDを利用するようにしました。UUIDが衝突する可能性はかなり低いのでPRがじゃんじゃん来てもコンフリクトが起きる心配が減りました:tada:

参考:https://qiita.com/ta_ta_ta_miya/items/1f8f71db3c1bf2dfb7ea

テーブルの親子構造をどうする問題

テーブルの親子構造はファイルを分けることで実現しました!

スクリーンショット 2017-11-29 0.14.57.png

キャプチャにあるファイルはそれぞれ役割を持っています。

  • default.yml その問題はSiverかGoldか答えの選択肢はどれかを定義
  • exam_masters_description.md 問題文
  • exam_masters_question.md 解説
  • option_masters_sentence_1.md 選択肢1
  • option_masters_sentence_2.md 選択肢2
  • option_masters_sentence_3.md 選択肢3
  • option_masters_sentence_4.md 選択肢4

ファイル名にも意味があり次のようになっています。

  • 親テーブル
    テーブル名_カラム名.md
  • 小テーブル
    テーブル名_カラム名_通し番号.md

テーブルとカラムはファイル名をパース、どの問題の更新/新規なのかはディレクトリ名で判断と言う風になんちゃって管理画面を実現しました:tada:

さいごに

Githubのリポジトリを管理画面として使ってみましたが目的に沿ってなかったりと銀の弾丸ではないと思います。むしろ管理画面で息切れしないための私だけの工夫ですが。。。:sunglasses:

リリースすることが目標でしたので荒削りなところがありますが、
どうぞRExをよろしくです:bow:

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3