記事投稿日: 2026年2月2日(月)
最終更新日: 2026年2月2日(月)
シェル芸オンラインジャッジというウェブサイトを開発しています。 今回は実行結果が返ってくるまでに10秒程度かかっている問題に対応しました。
元々はシェル芸を受け付けてからDockerコンテナを起動していたのですが、 コンテナ起動に時間がかかっているようだったので、 シェル芸実行用コンテナを常に待機させておくことで応答速度の向上を目指しました。
シェル芸オンラインジャッジシェル芸オンラインジャッジのソースコードを丸ごとGeminiに渡して、 具体的に修正方法を教えてもらっています。
GeminiにDockerコンテナを管理するスクリプトを書いてもらいました。 少し修正していますが、基本的にはGeminiの出力そのままです。 行数がそこそこあるのでリンクだけ貼ります。
backend/scripts/container_manager.pyこのスクリプトでは常にN個(現状N=3)のDockerコンテナを待機させる処理が書いてあります。 シェル芸実行用コンテナは使い捨てなので、 一度シェル芸を実行したコンテナは破棄して、 その分を補充します。
元々はシェル芸実行スクリプトでコンテナを作成していましたが、 container_manager.pyから起動中のコンテナを受け取って、 そのコンテナでユーザのシェル芸を実行するように修正しました。
backend/scripts/run_shellgei.pyちゃんと計測はしていませんが、 元々はシェル芸の実行結果が返ってくるまで10秒程度かかっていました。 シェル芸実行用コンテナを常に待機させておくことで、 すぐに結果が返ってくるようになりました。 やはりコンテナの起動に時間がかかっていたようです。
今回はシェル芸オンラインジャッジのパフォーマンス向上を目指して、 シェル芸実行用コンテナを常に待機させておくように変更しました。 すぐに実行結果が返ってくるようになってよかったです。 それでは、また。
各シリーズの記事を下記にまとめてあります。