SlideShare a Scribd company logo
1 of 68
Download to read offline
Arrow Judge
Hiromu Yakura
Self-Introduction
矢倉 大夢
@hiromu1996 
高校2年生
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
2011-2013
部長
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
情報セキュリティ
スペシャリスト
 
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
情報セキュリティ
スペシャリスト
最年少合格
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
横浜大会 4位
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
アジア太平洋
情報オリンピック
 
Self-Introduction
校パソコン研究部 
セキュリティ
競技プログラミング
アジア太平洋
情報オリンピック
銅メダル
Competitive Programming
競技プログラミングとは
 
 
Competitive Programming
競技プログラミングとは
問題に与えられた条件に従って
早く正確にプログラムを書く競技
Competitive Programming
競技プログラミングとは
問題に与えられた条件に従って
早く正確にプログラムを書く競技
Competitive Programming
競技プログラミングとは
問題に与えられた条件に従って
早く正確にプログラムを書く競技
数学、幾何
計算機科学、データ構造
Competitive Programming
競技プログラミングとは
問題に与えられた条件に従って
早く正確にプログラムを書く競技
Competitive Programming
競技プログラミングとは
問題に与えられた条件に従って
早く正確にプログラムを書く競技
CPU使用時間
メモリ使用量
Competitive Programming
世界中でいろいろなコンテスト
 
 
Competitive Programming
世界中でいろいろなコンテスト
 
 
Competitive Programming
世界中でいろいろなコンテスト
 
 
Competitive Programming
世界中でいろいろなコンテスト
 
 
Competitive Programming
世界中でいろいろなコンテスト
 
 
Competitive Programming
世界中でいろいろなコンテスト
 
 
Competitive Programming
世界中でいろいろなコンテスト
 
 
Competitive Programming
世界中でいろいろなコンテスト
 
 
人材発掘の場に
Educational Uses
教育的にも非常に有用
Educational Uses
ゲーム製作を目標に始める
 
 
 
Educational Uses
ゲーム製作を目標に始める
様々なAPIを学ばなければならない
 
 
Educational Uses
ゲーム製作を目標に始める
様々なAPIを学ばなければならない
GUIプログラミングまで長い時間が
 
Educational Uses
ゲーム製作を目標に始める
様々なAPIを学ばなければならない
GUIプログラミングまで長い時間が
挫折する
Educational Uses
競技プログラミングから始める
 
 
 
Educational Uses
競技プログラミングから始める
入出力の知識だけで始められる
 
 
Educational Uses
競技プログラミングから始める
入出力の知識だけで始められる
問題を解くたびに達成感
 
Educational Uses
競技プログラミングから始める
入出力の知識だけで始められる
問題を解くたびに達成感
少しずつ実装力を身につけていく
Online Judge
競技プログラミングの練習環境
Web上で問題を解くことができる
Webサーバー ジャッジサーバー
Online Judge
Online Judge
Webサーバー ジャッジサーバー
Online Judge
Webサーバー ジャッジサーバー
Online Judge
Webサーバー ジャッジサーバー
Online Judge
Webサーバー ジャッジサーバー
Online Judge
Webサーバー ジャッジサーバー
Online Judge
Webサーバー ジャッジサーバー
Online Judge
Webサーバー ジャッジサーバー
Online Judge
すでにいろいろなシステムが
北京大学 - PKU Online Judge
会津大学 - Aizu Online Judge
The Problem
ユーザーが
ホスティングできない
The Problem
ユーザーがホスティングできない
問題を公開しあって練習したり
コンテストを開催したりできない
The Problem
セキュリティのために
仕方がないと考えられてきた
それを変えました
インストールは
超簡単
# apt-add-repository
ppa:hiromu1996/arrow-judge
Installation
# apt-get update
Installation
# apt-get install arrow-judge
arrow-judge-web
Installation
Installation
Technologies
もちろんセキュリティも考慮に
cgroupsでリソース管理
chroot, unshareでアクセス制御
Technologies
Ubuntu PPAでインストールを簡単に
Webインストーラーも作成
Features
一般的なオンラインジャッジの機能
CPU使用時間やメモリ使用量の計測
他のユーザーのソースを検索
Features
ユーザーが問題を作成できる機能
堅牢性を保っているからこそできる
できるのはこのシステムだけ
Features
コンテスト開催機能
スコアリングシステム
Clarificationシステム
Features
ジャッジサーバーの分散処理機能
キューに応じてサーバーを追加
コンテスト時だけEC2で増強
Features
簡単な管理画面
Webからプログラミング言語の追加
ジャッジサーバーの設定
Demo
Open Source
ソースはGithubで公開中
https://github.com/hiromu/arrow-
judge
https://github.com/hiromu/arrow-
judge-web
Special Thanks
開発にあたって
IPAの未踏IT人材発掘・育成事業の
支援を受けました
Conclusion
このソフトウェアを通じて
日本の競技プログラミング界が
もっと活発になってほしい

More Related Content

What's hot

プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
 
(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習
Ichigaku Takigawa
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
MITSUNARI Shigeo
 

What's hot (20)

Za atsu-20170328
Za atsu-20170328Za atsu-20170328
Za atsu-20170328
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
 
ハミルトニアンモンテカルロ法についての説明
ハミルトニアンモンテカルロ法についての説明ハミルトニアンモンテカルロ法についての説明
ハミルトニアンモンテカルロ法についての説明
 
Rolling hash
Rolling hashRolling hash
Rolling hash
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
メルペイの与信モデリングにおける特徴量の品質向上の施策
メルペイの与信モデリングにおける特徴量の品質向上の施策メルペイの与信モデリングにおける特徴量の品質向上の施策
メルペイの与信モデリングにおける特徴量の品質向上の施策
 
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAttentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
 
強化学習その1
強化学習その1強化学習その1
強化学習その1
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木
 
Reinforcement Learning: An Introduction 輪読会第1回資料
Reinforcement Learning: An Introduction 輪読会第1回資料Reinforcement Learning: An Introduction 輪読会第1回資料
Reinforcement Learning: An Introduction 輪読会第1回資料
 
Abc009
Abc009Abc009
Abc009
 
(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習
 
【DL輪読会】Spectral Normalisation for Deep Reinforcement Learning: An Optimisatio...
【DL輪読会】Spectral Normalisation for Deep Reinforcement Learning: An Optimisatio...【DL輪読会】Spectral Normalisation for Deep Reinforcement Learning: An Optimisatio...
【DL輪読会】Spectral Normalisation for Deep Reinforcement Learning: An Optimisatio...
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
 

Viewers also liked

Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Androidにおける強制アクセス制御
Androidにおける強制アクセス制御
Hiromu Yakura
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
Hiromu Yakura
 

Viewers also liked (16)

CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?
 
検証、SEAndroid
検証、SEAndroid検証、SEAndroid
検証、SEAndroid
 
ICTのちから
ICTのちからICTのちから
ICTのちから
 
Nyarlathotep
NyarlathotepNyarlathotep
Nyarlathotep
 
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
 
Why don't you learn programming?
Why don't you learn programming?Why don't you learn programming?
Why don't you learn programming?
 
Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編
 
新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた
 
ナウいAndroidセキュリティ
ナウいAndroidセキュリティナウいAndroidセキュリティ
ナウいAndroidセキュリティ
 
Arduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようArduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみよう
 
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-
 
Trendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationTrendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final Presentation
 
セキュリティ・キャンプのススメ
セキュリティ・キャンプのススメセキュリティ・キャンプのススメ
セキュリティ・キャンプのススメ
 
Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Androidにおける強制アクセス制御
Androidにおける強制アクセス制御
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
 

More from Hiromu Yakura

Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Hiromu Yakura
 

More from Hiromu Yakura (14)

Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
 
How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021
 
機械学習を"良く"使うには
機械学習を"良く"使うには機械学習を"良く"使うには
機械学習を"良く"使うには
 
自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会
 
Python 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたPython 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみた
 
Robust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackRobust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical Attack
 
機械学習コン講評
機械学習コン講評機械学習コン講評
機械学習コン講評
 
NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料
 
イタリアでパスタを食べた話
イタリアでパスタを食べた話イタリアでパスタを食べた話
イタリアでパスタを食べた話
 
CTFとは
CTFとはCTFとは
CTFとは
 
ぃぬ速@LKML
ぃぬ速@LKMLぃぬ速@LKML
ぃぬ速@LKML
 
プラトン
プラトンプラトン
プラトン
 
How to lick Miku
How to lick MikuHow to lick Miku
How to lick Miku
 
ERASER
ERASERERASER
ERASER
 

Arrow Judge