Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
競プロ環境構築概論
Search
rokkoribou
July 25, 2024
22
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
競プロ環境構築概論
rokkoribou
July 25, 2024
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
A designer walks into a library…
pauljervisheath
211
25k
The SEO identity crisis: Don't let AI make you average
varn
0
590
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
730
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Raft: Consensus for Rubyists
vanstee
142
7.8k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
How STYLIGHT went responsive
nonsquared
100
6.3k
Transcript
競プロ環境概論 自動化で快適な環境へ
お前は 誰だ? 旅行ヘタクソオタク 競プロは弱い 好きなこと • おでかけ • 温泉 •
聖地巡礼 • 18切符 • サブカル • アニメ • 今期は小市民 • きらら • 評論 やってみたいこと • おうちサーバー • ネタツールを作る • Rustで何かを作る • 電子工作 • コミケに本を出す • 離島めぐり • JR乗船率向上 • 寝台列車に乗車
競技プログラミングってなに?
数学的問題をプログラミングで解くやつ • 数学のテストの情報科学バージョンと思ってもらえば • 手作業だと作業量が多すぎて解けないのでコンピュータにやら せます 問題は地点からある地点の最短距離を求めるとか、めっちゃ速く 計算するにはどうするとか codeforces 主なサイト
https://atcoder.jp/?lang=ja https://codeforces.com/ https://leetcode.com/
基本的な問題を解く流れ (3)提出する + 正解したかチェック テスト失敗 提出したときに不 正解だとわかる (1)コードを書く (2)テストをする エディタ
ブラウザ ブラウザ
手動でテストしたとき テストのときはブラウザ上でテストの数くらいタブを切り替えて コピペを行ってコードを実行する 単純で冗長な作業をする必要がある エディター 問題とテストサンプルのページ 入力と出力セット コードテストページ めっちゃ移動が生えます… サンプルテストの
入力と期待される出力コピペ テスト用コード貼り付け 提出用コード貼り付け
時間がかかるとパフォーマンスが下がる • 競技プログラミングは早く問題が解けるほど高いパフォーマン スになる • 遅いと逆にパフォーマンスが低くなる • 同じ点数でも早解きが二色分も下がることも* *https://qiita.com/e869120/items/eb50fdaece12be418faa#2-2-5- %E6%97%A9%E8%A7%A3%E3%81%8D%E3%82%92%E9%8D%9B%E3%81%88%E3%82%8B%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%82%B3
%E3%83%B3%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E3%81%99%E3%81%99%E3%82%81
そ う だ 環 境 構 築 し よ う
構成の流れ(あくまでも一例です) Dockerなどで作成(別のものでも可) 適宜ツールをインストールするスクリプト追加 エディター スクリプト 競プロツール ファイルの パスを渡す パスからツールに渡す 変数を作成する
テスト、提出 tasks.json 仮想環境
なぜ仮想環境 • いったん作成すればいつ作っても環境構築で詰まらない • おま環がない • PCを買い替えても安心 • 環境が汚れない •
共有ができる • 個人的にはコンテナがオススメ
エディタの役割 • コードを編集(それはそう) • 拡張機能などを使って自動化やツールとの連携 • ビルドから提出までを指示 • 現在開いているファイルのパスを取得 •
tasks.jsonなどで${folder}とか${file}とかで取得できます
スクリプトの役割 前処理をしてツールを動作させる シェルスクリプトで直接実行させるかpythonのsubprocessとか でツールを実行 スクリプト 競プロツール abc250 a を引数で渡すから 提出してくれや
かしこま! 提出するやで エディター ファイル名は abc250/bin/a.cpp です
ツールの役割 • テストの自動化 • サンプル取得からテストまでを実行 • 小数点が入った時など詳細に設定して行う • テスト生成も •
提出の自動化 • ほかのものと組み合わせてボタンを押すだけでテストが可能に 有名なのは Online-judge-tool
その他便利ツール • コーディング • 自作ライブラリ • 補完 • スニペット •
デバッガー • リンター • フォーマッター • 管理 • CI • バージョン管理 • 自動でフォルダを作ってくれるやつ • グラフを可視化 (ウェブアプリ)
まとめ • 仮想化環境を作成しよう • エディタからスクリプトにファイルのパスを渡して前処理をし てツールで目的の動作を実行しよう • 仮想環境内にツールを入れよう
おまけだよ
None
None
None
好きなプロ環(競技プログラミング環境)発表ドラゴンが
好きなプロ環を発表します
ローカル 環境立ち上げが早いから心理 的ハードルがない ただし環境が汚れたり更新と かで壊れることも
WSL Windows使いならこれもよいかも 僕はこの環境を愛用していましたが バージョンアップデートで壊れました
コンテナ どのPCで作っても大体同じ 環境を統一できる ただし立ち上げに時間がかかる 今回紹介したのはこれ
ブラウザ上で 使えるやつ 競プロサイトのLeetcodeで 課金すると便利に使用可 便利なのは他で調べられなかった ので誰か作ってください(切実) Cloud9とかGithub code space やGitpodがいいかも
正式名称がわからないプロ環も好き好き大好き