メインコンテンツにスキップ
すべてのコレクション受講者向け受講者向けの機能紹介
実装・アルゴリズム問題のライブラリ追加方法
実装・アルゴリズム問題のライブラリ追加方法
岩崎雄太郎 avatar
対応者:岩崎雄太郎
一週間前以上前にアップデートされました

以下の流れでご説明いたします。

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.goimportに追加するだけでもよいです。

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"] }

よくある質問

  • ライブラリが動作しません。

    • バージョンが古い等が原因で動作しない可能性があります。正しく外部ライブラリが追加されない場合、バージョンの確認、修正をお願いします。

  • バージョン指定後、バージョン指定せずに実行したが、最新のバージョンに戻らない

    • ページをリロードしていただくことでバージョンを戻すことが可能です。

こちらの回答で解決しましたか?