プログラミングテスト作成サービス「Mini Bootcamp」をリリースしました!
フィヨルドブートキャンプの最終プラクティス「Webサービスを作って公開する」にて、プログラミングテスト作成サービス「Mini Bootcamp」をリリースしました!
Mini Bootcampはプログラミングスクール運営者向けのプログラミングテスト作成サービスになります!
管理者(スクール運営者)はプログラミングテストを作成・テストごとに達成条件となる標準入力と標準出力を設定できます。
受講者は作成されたテストにチャレンジ・コードの動作をチェックでき、カテゴリごとの達成率も表示されるのでスクール運営者の課題チェックの負担を軽減できます。ブラウザ上で動くので気軽にプログラミングテストにチャレンジできます!
作成した経緯
最終プラクティスでは自分で考えたWebサービスの他に、フィヨルドブートキャンプで用意したテーマから選んで作成することもできたので、そちらから「プログラミングテスト作成サービス」を選択しました!
プログラミングスクール運営者向けのサービスなのでForkして使用してもらうことになりますが、どのような感じかちょっと触ってみたい方は下記リンクからデプロイしたサーバーにアクセスできます!
mini-bootcamp.bernesemountain.net
大変だったこと
Docker周りの技術調査
このサービスではDockerコンテナでコードを実行しており、dokcer-apiというGemを使ってRailsからコンテナを立ち上げています。コードがうまく動く時と動かない時などがあったり、コンテナの設定を公式ドキュメントを読みながらいろいろ試したりしました。
ユーザーが書いたコードをコンテナ上で実行するため、
・コンテナの中からネットワークにアクセスできないように
・コンテナの中のファイルは全て読み取り専用に
・コンテナのプロセス数制限
・コードの実行時間制限
を設定しており、コードファイルは一時ディレクトリ・ファイルを作成してマウントしています。
「この設定はしといた方がいいよ!」などあれば教えていただけると嬉しいです。
AWSへのデプロイ
dockerを使っているのでAWSのEC2にデプロイしました。VPCやRDSなど色々設定することがあったのですが、こちらの本がとても参考になりました。
デプロイ時のアセットプリコンパイルでエラーが出て結構ハマったりしました(vue-loaderなどをpackage.jsonのdevDependenciesからdependenciesに記載することで解決しました)。
楽しかったこと・よかったこと
ペーパープロトタイプでざっくりとWebサービスの構成を考えるのも面白かったですし、実際にブラウザ上でコードの入力・判定ができるようになった時は達成感がありました。
途中でプログラミングテストの順番は自由に入れ替えられた方がいいな〜と思ったので順番機能を実装したのですが、こういった開発しながら気付いた部分を改善していくのは自分で使い勝手が良くなった!と感じることができて楽しかったです。
@komagataさんと@machidaさんにコードレビュー・デザインレビューをしていただいたのですが、コードの見通しがよくなり、UIもより使いやすくなってすごく参考になりました!
さいごに
フィヨルドブートキャンプを通してプログラミングの基礎からWebサービス作成まで色々と学ぶことができ、自作サービスをリリースできました!
フィヨルドブートキャンプのみなさん、ありがとうございました!