はじめに

私が運営しているシェル芸オンラインジャッジというウェブサイトはまだまだ改善点があります。自分で一つ一つ改善していくのももちろん良いですが、最近の生成AIは私よりもはるかに優秀なので改善してもらえるところはしてもらおうと思い立ちました。

シェル芸オンラインジャッジ

使ったもの

Google AI Studio

Geminiにリポジトリ丸ごと読み込んで改善点を教えてほしいとお願いしたら、Google AI Studioを使うといいよと教えてくれました。ということで使ってみます。

Google AI Studio

Gitingest

Google AI Studioにリポジトリを丸ごと渡そうと思ったのですが、 ファイル一つずつしか渡せなさそうだったので、 GitingestというサービスにGitHubリポジトリURLを入力することで、 一つのファイルにまとめてもらいました。 とても便利です。

Gitingest

プロンプト

Google AI Studioに下記のように入力しました。

プロンプトのセオリーはよく分かっておらず、 かなり雑なお願いの仕方ですが、 Google AI Studioはいい感じに改善案を列挙してくれました。

アップロードしたファイルは私が開発しているシェル芸オンラインジャッジというウェブサービスのソースコードです。react,fastapi,docker,nginxなどを使っています。ユーザがブラウザから入力したシェルのコマンドをサーバのdockerコンテナ上で実行して、実行結果をユーザへ返すサービスです。改善案を考えてほしいです。候補として、セキュリティ、システム構成、パフォーマンス向上、問題データの形式と扱い方(現状テキストファイルで保持、テキストファイルをそのまま取得している)、リファクタリングなどです。その他にも改善案があれば教えてほしいです。

改善案

Google AI Studioの出力をそのまま載せるととても長くなるので箇条書きしておきます。

セキュリティ

  • コンテナ起動時にCPUやメモリなどのリソースの制限を設定したほうがよい
  • コンテナ内でコマンドを実行するユーザ権限を変更したほうがよい
  • コンテナ内でネットワーク遮断の設定をさらに強化したほうがよい

パフォーマンス向上

  • ユーザからのリクエストをキューに入れて順番に実行したほうがよい
  • コンテナの起動に時間がかかるのであらかじめ起動しておいて待機させておくとよい
  • データベースを導入してログを管理したほうがよい

問題データの管理

  • JSON形式で問題データを管理してAPI経由で取得するとよい

リファクタリング

  • 本番環境とローカル環境でURLを手動で書き換えているが設定ファイルを別で用意したほうがよい
  • App.tsxでStateを使い過ぎているので対応が必要

判定処理

  • 画像比較は完全一致だと安定しないのでcompareコマンドなどで類似度を基準にしたほうがよい
  • 文字列末尾の空白や改行の削除はrstrip()を使ったほうがよい

その他

  • docker-composeでローカルの開発環境を起動できるとよい
  • GitHub Actionsから直接デプロイできるとよい
  • SNSへのシェア機能があるとユーザ同士の交流が増えてよい

この後

さらに詳しく修正案を聞いて修正していこうと思います。

おわりに

今回はシェル芸オンラインジャッジの改善案をGoogle AI Studioに聞いてみました。 たくさん改善案を出してもらえたので対応していきたいと思います。 便利な世の中になりましたね。 それでは、また。