Upgrade to Pro — share decks privately, control downloads, hide ads and more …

#Comfes2023 「Promise<any>」

#Comfes2023 「Promise<any>」

2023/03/16に行われた、
中国地区高専コンピューターフェスティバル 情報交換会で発表した内容です。

Laminne33569

March 18, 2023
Tweet

More Decks by Laminne33569

Other Decks in Technology

Transcript

  1. Po2ron Network / MCT-JOKEN
    Promise
    Tatsuto Yamamoto

    View full-size slide

  2. 自己紹介
    Po2ron Network / MCT-JOKEN

    View full-size slide

  3. 自己紹介
    やまもと たつと
    松江高専 情報科学研究部 部長/情報工学科3年(新4年)
    言語とか: TypeScript/Go(メイン) Python/Ruby など
    エディタとか: WebStorm, GoLand / Visual Studio Code
    たまにnanoとneovim
    趣味: 音楽聞いたり絵描いたりフォントで遊んだり
    Po2ron Network / MCT-JOKEN

    View full-size slide

  4. Po2ron Network / MCT-JOKEN
    オンラインジャッジを
    作っている話
    Tatsuto Yamamoto

    View full-size slide

  5. オンラインジャッジって何?
    Po2ron Network / MCT-JOKEN

    View full-size slide

  6. オンラインジャッジとは
    「プログラミング問題の
    オンライン採点システム」
    Po2ron Network / MCT-JOKEN

    View full-size slide

  7. オンラインジャッジとは
    プログラムが正しくコンパイルできるか
    プログラムが正しく終了するか
    プログラムが制限の範囲内で停止するか
    プログラムが正しく出力をしているか
    ..を判定するシステムのこと
    Po2ron Network / MCT-JOKEN

    View full-size slide

  8. 有名なジャッジの例
    Po2ron Network / MCT-JOKEN
    AtCoder: https://atcoder.jp

    View full-size slide

  9. なんで作るのか?
    自分たちで建てられるものがほしい
    Po2ron Network / MCT-JOKEN

    View full-size slide

  10. KOJS: 松江高専用のオンラインジャッジ
    ロゴはv4
    Po2ron Network / MCT-JOKEN

    View full-size slide

  11. KOJS(KOJS-v3) 概要
    使った言語:
    HTML + Pure TypeScript with tsc (フロントエンド)
    テストが無い TypeScript (バックエンド)
    Golang (それ以外)
    使った技術: Docker
    Po2ron Network / MCT-JOKEN

    View full-size slide

  12. もともと…
    去年のコンフェスに
    出すつもりだった
    (laminne/kojs3)
    Po2ron Network / MCT-JOKEN

    View full-size slide

  13. もともと…
    みんなびっくりの
    クソ実装
    Po2ron Network / MCT-JOKEN

    View full-size slide

  14. もともと…
    みんなびっくりの
    クソ実装
    API Handlers
    Logics
    OR/M etc…
    Po2ron Network / MCT-JOKEN

    View full-size slide

  15. ソースコードの
    変更が大変
    Po2ron Network / MCT-JOKEN

    View full-size slide

  16. 実装できなかった機能
    - コードテスト(dry-run)
    - ワーカーの並列化
    - コンパイルエラーの表示
    Po2ron Network / MCT-JOKEN
    KOJSで

    View full-size slide

  17. “J” “K” Online Judge System (KOJSv5)
    by MCT-Joken
    Po2ron Network / MCT-JOKEN

    View full-size slide

  18. そこで
    まともな
    アーキテクチャ
    (レイヤード with DIP
    Interfaces(Handlers
    Usecases(Logic
    Infrastructure(OR/M
    Domain (Domain Logic
    Po2ron Network / MCT-JOKEN

    View full-size slide

  19. JK-OJS(KOJS-v5) 概要
    使った言語:
    TypeScript + React with Vite (フロントエンド)
    TypeScript with Vitest (バックエンド)
    Golang (それ以外)
    使った技術: Docker
    †バリバリモダンな構成† (Ruby 0使用
    Po2ron Network / MCT-JOKEN

    View full-size slide

  20. 概要
    ユーザー
    (フロント
    エンド)
    スコア
    サーバー
    (バック
    エンド)
    エージェント
    ワーカー
    ワーカー
    ワーカー
    コードの提出 コード実行命令
    コード実行命令
    実行結果
    結果の返却 結果の返却
    Po2ron Network / MCT-JOKEN

    View full-size slide

  21. Po2ron Network / MCT-JOKEN
    (KOJSで実装できなかったもののうち)
    実装できた機能など
    - テストコード実行(dry-run)
    - (ソフトウェア)自動テスト,CI
    - 使える言語を簡単に増やせるように

    View full-size slide

  22. Po2ron Network / MCT-JOKEN
    (JK-OJSでも結局)
    実装できなかった機能など
    - ワーカーの並列化
    - コンパイラエラーの表示
    - 問題作成
    - コンテストへの参加登録

    View full-size slide

  23. 総括
    - 最終結果: 失敗
    - 全然機能実装出来てないやんけ!!!(実装率 47%)
    - 敗因: 仕様の明文化が弱かった
    -> 計画性の無い実装はやめましょう👊
    - タスクの分配に失敗した
    - 開発の見通しが悪くタスクを起票しにくかった
    その他いろいろ…
    Po2ron Network / MCT-JOKEN

    View full-size slide

  24. 今後の展望
    - もっとUI/UXを良くしたい
    - (開発,ユーザー)ドキュメントを増やしたい
    - プロジェクトに参加する人を増やしたい
    - ゆくゆくは学外にも開放したい
    Po2ron Network / MCT-JOKEN

    View full-size slide

  25. おしまい
    KOJSv3 Project
    laminne/kojs3 (C) 2021-2022 Tatsuto YAMAMOTO (MIT)
    JK-OJS Project(s):
    Backend: (C) 2021-2023 Tatsuto Yamamoto (MIT)
    Front: (C) 2022-2023 Mct-Joken (MIT)
    Slide:
    Copyright (C) 2022-2023 Tatsuto YAMAMOTO/MCT-Joken all rights reserved.
    Po2ron Network / MCT-JOKEN

    View full-size slide