以下の流れでご説明いたします。
C、C++
C#
Java
NodeJS, TypeScript
PHP
Python
Scala
Perl
Ruby
Go
Swift
Kotlin
Rust
1.[重要] なぜこの指示に従う必要があるのか
Webエディタから接続されている実行環境と実際の採点時の環境は異なります。
次に指示される方法以外でライブラリをインストールした場合、ライブラリはWebエディタのブラウザセッションが接続している実行環境のみにインストールされ、実際の採点時の環境にはインストールされません。
従って、採点時にはライブラリがインストールされていない状態で採点が実施されます。採点時の環境にもライブラリをインストールするには、必ず以下の指示に従ってインストールしてください。
2.ライブラリの追加方法
C、C++
外部ライブラリを使用する場合は以下の手順で実施してください。
※標準で含まれていないライブラリは、makefile
内でapk add
でインストールすることで利用できるようになります。
エディタ下部のインタラクティブシェルからはapk add
を絶対に実行しないでください。エディタ下部のインタラクティブシェルからapk add
した場合、受験中に点数が取れていたとしても、提出後に行われる非公開テストケースの採点が正しく行われず、0 点と扱われる可能性があります。必ずmakefile
内部でapk add
を行ってください。
ライブラリのバイナリは/usr/lib
または/lib
に、ヘッダは/usr/include
に保存されます。 例えばlibcurl
を利用する場合は、以下のようにmakefile
を変更し、main.cpp
内部で#include <curl/curl.h>
を記載することで利用可能です。
例
main: src/*.cpp makefile apk add curl-dev c++ -std=c++20 -o main src/*.cpp -lcurl
例えばBoostライブラリ群の一つであるlibboost_system
を利用する場合は、以下のようにmakefile
を変更し、main.cpp
内部で#include <boost/filesystem.hpp>
を記載することで利用可能です。
main: src/*.cpp makefile apk add boost-dev c++ -std=c++20 -o main src/*.cpp -lboost_system
利用可能なライブラリは、Alpine Linuxで提供されているpackage類となります。
C#
外部ライブラリを使用する場合は以下の手順で実施してください。
MainApp.csproj
に依存ライブラリの追加または、コマンド部で
dotnet add package
コマンドを発行することでもMainApp.csproj
が更新されます。
例
<ItemGroup>
<PackageReference Include="RestSharp" Version="106.13.0" />
</ItemGroup>
Java
外部ライブラリを使用する場合は以下の手順で実施してください。
build.gradle
に依存ライブラリを追加
例
dependencies { implementation 'com.google.code.gson:gson:2.10.1' implementation 'org.apache.httpcomponents:httpcore:4.4.16' }
NodeJS, TypeScript
外部ライブラリを使用する場合は以下の手順で実施してください。
package.json
に依存関係を追加
例
"dependencies": {
"lodash": "4.17.15",
"underscore.string": "3.3.5"
}
PHP
外部ライブラリを使用する場合は以下の手順で実施してください。
composer.json
に依存関係の追加
例
"require": {
"guzzlehttp/guzzle": "6.5.0",
"nesbot/carbon": "2.35.0"
}
Python
外部ライブラリを使用する場合は以下の手順で実施してください。
requirements.txt
にライブラリ名とバージョンを記述
例
numpy
requests
下記の例のように、バージョンを指定することもできます。
numpy==1.26.0
requests==2.22.0
Scala
外部ライブラリを使用する場合は以下の手順で実施してください。
build.sbt
に依存ライブラリの追加
例
libraryDependencies ++= Seq(
"org.apache.commons" % "commons-csv" % "1.5",
"org.scalaj" %% "scalaj-http" % "2.4.2"
)
Perl
外部ライブラリを使用する場合は以下の手順で実施してください。
cpanfile
に依存関係を記載してください。Carton を使った外部ライブラリのインストールがサポートされています。
例
requires 'Plack', '1.0'; # 1.0 or newer
requires 'JSON', '>= 2.00, < 2.80';
recommends 'JSON::XS', '2.0';
conflicts 'JSON', '< 1.0';
on 'test' => sub {
requires 'Test::More', '>= 0.96, < 2.0';
recommends 'Test::TCP', '1.12';
};
on 'develop' => sub {
recommends 'Devel::NYTProf';
};
feature 'sqlite', 'SQLite support' => sub {
recommends 'DBD::SQLite';
};
Ruby
外部ライブラリを使用する場合は以下の手順で実施してください。
Gemfile
にライブラリ名とバージョンを記述あるいは
bundle add
コマンドを使用してライブラリ追加を行うこともできます。
例
source 'https://rubygems.org'
# 以下に外部ライブラリ及びそのバージョンを記述
gem 'diff-lcs', '1.4'
gem 'rspec', '3.9.0'
⚠️ 注意:
gem install
コマンドでは Gemfile
が更新されないため使用してはいけません。
Go
外部ライブラリを使用する場合は以下の手順で実施してください。
go.mod
に依存関係の追加最新版を使用する場合、
main.go
のimport
に追加するだけでもよいです。
例
require (
github.com/huandu/xstrings v1.3.2
github.com/shopspring/decimal v1.2.0
)
Swift
外部ライブラリを使用する場合は以下の手順で実施してください。
Package.swift
に依存ライブラリの追加
例
dependencies: [
.package(url: "https://github.com/apple/swift-nio.git", from: "2.0.0"),
]
Kotlin
外部ライブラリを使用する場合は以下の手順で実施してください。
build.gradle
に依存ライブラリの追加
例
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
compile "com.google.code.gson:gson:2.8.6"
compile "com.squareup.okhttp3:okhttp:4.7.2"
}
Rust
外部ライブラリを使用する場合は以下の手順で実施してください。
Cargo.toml
に依存ライブラリを追記してください。
例
serde = "1.0.113"
rand = "0.7.3"
[注意] HTTP クライアントライブラリの利用
Rust 実行環境には OpenSSL がインストールされていないため、openssl
に依存したライブラリはコンパイルできません。いくつかのライブラリはフィーチャーを使って openssl
の代わりに rustls
を利用することでコンパイルできるようになります。
以下に一例を示します。
reqwest
reqwest = { version = "0.10", default-features = false, features = ["rustls-tls"] }
attohttp
attohttpc = { version = "0.13", default-features = false, features = ["tls-rustls"] }
よくある質問
ライブラリが動作しません。
バージョンが古い等が原因で動作しない可能性があります。正しく外部ライブラリが追加されない場合、バージョンの確認、修正をお願いします。
バージョン指定後、バージョン指定せずに実行したが、最新のバージョンに戻らない
ページをリロードしていただくことでバージョンを戻すことが可能です。