LoginSignup
4
1

【2023年8月時点】KotlinでAtCoderのコンテストに参加するための環境構築(最低限)

Last updated at Posted at 2023-08-12

概要

KotlinでAtCoderのコンテストに参加するための最低限の環境構築メモです。

環境

  • Windows 11
  • IntelliJ IDEA Community Edition 2023.2
  • AtCoder 2023/1 Language Updateの取り込み後の内容
    • Kotlin 1.8.20
    • JVM 19

方針

  • 手元でKotlinコードを書いて実行やデバッグをするための最低限の環境を構築する
    • 非公式の便利な機能はとりあえずは使わない
    • なので考えてみたらAtCoderとかあんまり関係ないかも… でも面倒なのでこのまま書く
  • WSLはとりあえず使わず、ホスト(Windows)側で構築する

登場するツールとそれらの雑な説明

  • Kotlin
    • プログラミング言語。かわいい
  • IntelliJ IDEA
    • 統合開発環境(IDE)
    • JavaでおなじみのIDEだったが、Kotlinでも使える
      • というかIntelliJ IDEAの開発元が作った言語がKotlin
    • 有償のUltimate Editionと無償のCommunity Editionがあるが、少なくとも今回の用途だとCommunity Editionで十分
  • Java仮想マシン(JVM)
    • 基本的にはKotlinのコード(をコンパイルしたバイナリ)はこいつの上で動くので必要
  • Gradle
    • ビルドツール。Kotlinのコードのコンパイル、実行を担当
      • 依存ライブラリの管理などの重要な役割が他にもあるけど、今回はあまり関係ない
    • 独立したツールだが、IntelliJ IDEAに統合されて使える

内容

IntelliJ IDEAの導入

Kotlinの処理系、JVM、Gradleなどは一通りIntelliJ IDEAを経由して導入できるため、とにかくまずIntelliJ IDEAを導入する。

導入方法は大きく分けるとIntelliJ IDEAを直接インストールする方法、JetBrains Toolboxを使ってインストールする方法の2つがある。JetBrains Toolboxをインストールして、その画面からIntelliJ IDEA Community Editionを選ぶのが簡単。

プロジェクトの作成

IntelliJ IDEAがインストールできたら、「New Project」を押してプロジェクト作成を開始する。

プロジェクト作成のモーダルが表示されるので、以下のように設定する。

image.png

  • Name
    • 自分がわかりやすい名前なら何でもOK
  • Location
    • なんでもいいけど、基本デフォルトのままでよいと思う
  • Create Git repository
    • Gitで管理したければチェックを入れる
    • よくわかんなければチェックしなくていい
  • Language
    • Kotlinを選択
  • Build system
    • 今回はGradleにする
  • JDK
    • バージョン19を選ぶ
    • インストールされていない場合、プルダウンを選んで「Add SDK」 -> 「Download JDK...」 を押してIntelliJ IDEAにダウンロードさせるとよい
      • Versionは19
      • VendorはAmazon Corretto、Azul Zulu、Eclipse temurinなどいくつかあるが、どれでもよい
  • Gradle DSL
    • どっちでもいいけど今回はKotlinにする
  • Add sample code
    • どっちでもいいけどとりあえずチェックが入ったままにする

上記の設定で「Create」を押下でプロジェクトの作成が開始される。画面が切り替わった後に自動ダウンロードやビルドなどの処理が実行されていくのでしばらく待つ。

画面の下にこんな感じのインジケータが表示されているうちはまだ実行中なので、これが完全に消えるまで待つ。
image.png

build.gradle.ktsを編集

動作が落ち着いたら、画面の左から「build.gradle.kts」を開く。

このファイルを以下のように書き換える。

build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm") version "1.8.20"
    idea
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    testImplementation(kotlin("test"))
}

tasks.test {
    useJUnitPlatform()
}

tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "19"
}

あまり関係ない記述もあるが、特に重要なのは以下の記述。

build.gradle.kts
plugins {
    kotlin("jvm") version "1.8.20"  // 執筆時点でAtCoderで使えるKotlinのバージョンを指定
    idea
}
build.gradle.kts
tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "19"  // 執筆時点でAtCoderでKotlinを実行する際に指定している -jvm-target 
}

ファイルを編集したら、反映させるための操作を行う。

image.png

右端の縦書きの「🐘 Gradle」みたいなところを押すと上記の画面が出るので、この左上の🔄みたいなやつを押す。
すると内容を反映させるためにGradleがあれこれ処理するので、終わるまで待つ。

ここまでやればソースを書いて実行できるようになっているはず。

上記の設定で「Add sample code」にチェックを入れていた場合は「Main.kt」というファイルが表示されているはずなので、これをそのまま実行してみる。
右クリックして「Run 'Mainkt'」を押すか、もしくは「Ctrl + Shift + F10」を押すかすると実行できる。

image.png

image.png

このような表示が出ればちゃんと環境構築できている。(画面下に出る)

動作確認

とりあえず簡単な問題を解いてみる。
https://atcoder.jp/contests/language-test-202301/tasks/practice_1

fun main() {
    val a = readln().toInt()
    val (b, c) = readln().split(" ").map { it.toInt() }
    val s = readln()

    println("${a + b + c} $s")
}

今回は動作確認やテストを支援するツールを何もインストールしていないので、動作確認も提出もコピペで行う。

実行すると画面下で入力待ちのコンソールが出るので、そこにペーストして動作確認する。

コピペで提出なので、Main.ktを毎回書き換えてもいいし、別途ファイルを作っていくのでもよい。(ファイル名は適当でもいい)
ただ、別途ファイルをつくる場合、main以外のpublicな関数名がバッティングするとコンパイルエラーになるとか、他のファイルにあるpublicな関数に依存してしまって手元だとコンパイルエラーにならないが、提出するとCEになるとかのトラブルがあり得るので要注意。

その他

Live template(いわゆるスニペット)

val (b, c) = readln().split(" ").map { it.toInt() } とかをいちいち手動で入力するのは面倒なので、Live templateを使って自動補完させるようにしておくと少し楽になる。

Live templateは、略語を入力すると本来必要なコードを自動で補完してくれる機能。
たとえば main と入力してEnterで

fun main() {
    
}

が入力補完されるLive templateなどが最初から定義されている。
Live templateは自分で登録することもでき、上記の val (b, c) = readln().split(" ").map { it.toInt() } を自動補完させるためのLive templateを登録するといい。

Live templateの登録方法はこちら。
https://pleiades.io/help/idea/creating-and-editing-live-templates.html

私はとりあえず入力周りだけ以下のような感じでLive templateを登録している。本当はもっと充実させたい…

image.png

初回実行の遅さについて

今回の手順の通り環境構築した場合、実行はGradleによって行われる。初回実行時はGradleがあれこれ初期化処理を実行するらしく、かなり起動が遅いので注意。一度起動すると高速化のためにGradleのプロセスが常駐し、2回目以降の実行はけっこう速い。なのでコンテスト前に一度適当に何か実行しておくとよい。

また、原因は別かもしれないがLive templateによる補完も初回は遅いことがあるので、これもコンテスト前に適当に入力して補完させておくとよい。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1