【Kotlin】レッスン1-7:import文の使い方|パッケージを活用しよう

ながみえ

一つ前のページでは文字列操作について学習しました。

今回は import文 について見ていきましょう。

Lesson1:基礎文法編
 ・Lesson1-1:Kotlin学習の入り口|初めてコードを書いてみよう
 ・Lesson1-2:変数と定数を理解しよう
 ・Lesson1-3:四則演算をしよう
 ・Lesson1-4:Null安全性を理解しよう
 ・Lesson1-5:文字列の連結と埋め込みを理解しよう
 ・Lesson1-6:文字列を操作しよう
 ・Lesson1-7:import文を理解しよう ◁今回はココ
 ・確認問題1-☆1:ランダムパスワードを生成しよう
Lesson2:制御構造編
Lesson3:関数編
Lesson4:コレクション編
Lesson5:オブジェクト指向編

<<前のページ

学習記事一覧

次のページ>>

import文とは?|Randomとmathで学ぶパッケージ入門

Kotlinではimport文を使うことで、様々な機能を簡単に利用することができます。

今回はその入門として、ランダムな数値を生成するramdomパッケージと複雑な計算を実行できるMathパッケージをインポートして使う方法を学習しましょう。

import文の役割とは?他パッケージの機能を活用する仕組み

import文とは、他のパッケージやライブラリに含まれる機能を現在のプログラムに取り込むための宣言です。

つまり、自分で書くと非常に長く複雑になってしまう処理があらかじめ用意されており、それをインポートすることで簡単に実現できるということです。

たとえば kotlin.random.Randomクラス というものをインポートすれば、初心者でも簡単にランダムな数字を生成することができます。

import文を使う際は、プログラムの先頭(メイン関数の外)で記述します。

Randomクラスをインポートし、使用する例を見てみましょう。

import kotlin.random.Random  //Randomクラスのインポート

fun main() {	// メイン関数
}

これでメイン関数内で簡単に乱数生成する準備が整いました。

このように、Kotlin標準ライブラリに含まれるものは1行で簡単にimport可能です。

乱数を生成しよう|kotlin.random.Randomクラスの活用

kotlin.random.Randomクラスを使うとランダムなデータを簡単に生成できます。

kotlin.random.Randomは、「kotlinパッケージの中の、randomパッケージ(サブパッケージ)の中の、Randomクラス」を意味します。

  • パッケージ:よく使う機能を書いたKotlinファイル(.kt)の集まり
  • サブパッケージ:パッケージの中身を分類したもの
  • クラス:特定の機能の設計図

つまり、kotlin.random.Randomクラスをインポートするということは、乱数生成に必要なコードの設計図を読み込むということです。

厳密に言うと上記の表現は正確ではありませんが、今の時点ではこの理解で十分です。

パッケージやクラス等の詳細な意味は レッスン5:クラス編 の中で学習しますので、まずは使うことができるようになりましょう。

ランダムな整数を生成する|nextIntメソッドの使い方

RandomクラスのnextInt()メソッドを使うことで、ランダムな整数を生成することができます。

()の中に乱数の範囲の「開始値」と「終了値の次の数値」を書きましょう。

import kotlin.random.Random  // Randomクラスのインポート

fun main() {
    val num_1 = Random.nextInt(0, 100)	// 0から99までのランダムな整数を生成
    val num_2 = Random.nextInt(1, 11)	// 1から10までのランダムな整数を生成
    println("Random integer_1: $num_1")
    println("Random integer_2: $num_2")
}

このように、Random.nextInt()メソッドはカッコの中の範囲の整数をランダムに生成します。

例えばサイコロの目をプログラム上で再現するときなどに使用できます。

ランダムな小数を生成する|nextDoubleメソッドの使い方

RandomクラスのnextDouble()メソッドを使うことで、ランダムな小数を生成することができます。

()の中に乱数の範囲の開始値と終了値の数値を書きましょう。

val num = Random.nextDouble(0.0, 1.0) // 0.0から1.0の間のランダムな小数
println("Random double: $num")

なお、範囲の終了値(上記のコードの場合は1.0)が生成されることは無いので注意しましょう。

ランダムな真偽値を生成する|nextBooleanメソッドの使い方

RandomクラスのnextBoolean()メソッドを使うことで、ランダムな真偽値を生成することができます。

val randomBoolean = Random.nextBoolean()	// trueまたはfalse
println("Random boolean: $randomBoolean")

Random.nextBoolean()はtrueかfalseをランダムに生成します。

例えばコイントスの結果をプログラム上で再現するときなどに使用できます。

複雑な計算を簡単に|kotlin.mathパッケージの活用

先ほどのRandomクラスの時と同様に、パッケージまでではなくその下層のクラスや関数までインポートしなければ使うことはできません。

mathパッケージの中にはMathクラスというものは存在せず、直接機能(関数やプロパティ)が格納されています。

必要な機能を指定してインポートすることもできますが、今回は全ての機能をまとめてインポートしてみましょう。

インポート文は以下のように書きます。

import kotlin.math.*	// mathパッケージ内の全ての関数やプロパティをインポート

// もし特定の機能だけをインポートするなら、例えば以下のように書く
import kotlin.math.abs	// mathパッケージのabs関数をインポート

この*はワイルドカードといい、これによりmathの全ての機能が使えるようになります。

絶対値や平方根の計算|abs関数とsqrt関数の使い方

import kotlin.math.*  //mathパッケージのインポート

fun main() {
    val value_1 = -8.5
    val value_2 = 64
    println("Absolute value: ${abs(value_1)}")	// -8.5の絶対値
    println("Square root: ${sqrt(value_2)}")	// 64の平方根
}

このように、複雑な計算のコードも簡単に書くことができます。

mathパッケージの便利な関数一覧

mathパッケージには上記のほかにも便利な機能がいろいろあります。

活用していきましょう。

関数名説明(用途)使用例
abs(x)絶対値abs(-8.5) → 8.5
sqrt(x)平方根sqrt(9.0) → 3.0
pow(x, y)xのy乗pow(2.0, 3.0) → 8.0
max(a, b)大きい方の値を返すmax(5, 10) → 10
min(a, b)小さい方の値を返すmin(5, 10) → 5
round(x)四捨五入round(2.6) → 3
floor(x)切り捨て(小さい整数へ)floor(2.7) → 2.0
ceil(x)切り上げ(大きい整数へ)ceil(2.1) → 3.0
sin(x)サイン(三角関数、xはラジアン)sin(Math.PI / 2) → 1.0
cos(x)コサイン(三角関数、xはラジアン)cos(0.0) → 1.0
tan(x)タンジェント(三角関数、xはラジアン)tan(Math.PI / 4) → 1.0
log(x)自然対数(底e)log(Math.E) → 1.0
log10(x)常用対数(底10)log10(100.0) → 2.0
exp(x)eのx乗exp(1.0) → 2.718…
sign(x)符号(正:1.0、負:-1.0、ゼロ:0.0)sign(-20.0) → -1.0
hypot(x, y)ピタゴラスの定理(√(x² + y²))hypot(3.0, 4.0) → 5.0

まとめ|パッケージを活かすKotlinコーディングの第一歩

import文を使うことでKotlinの豊富な機能を効率的に活用できます。

特にkotlin.random.Randomkotlin.mathは、初心者にとっても使いやすい便利なライブラリです。

今後頻繁に使用することになりますので、確実にマスターしましょう。

練習問題|乱数生成と数学演算を実装しよう

import文を学ぶために、ランダムな数値を生成し、それに対して数学関連の操作を行うプログラムを作成しましょう。

このプログラムではランダムな整数を生成したり、その平方根や絶対値を計算する方法を学びます。

この問題の要件

以下の要件に従ってコードを完成させてください。

  1. import文を使って、次の2つのライブラリを取り込むこと:
    • kotlin.random.Random
    • kotlin.math.*
  2. メイン関数を定義し、以下の操作を実装すること:
    • ランダムな整数を1から100の範囲で生成し、変数randomNumberに代入すること。
    • printlnを使って、生成されたランダムな数を画面に表示すること。
    • ランダムな数の平方根を計算し、結果を画面に表示すること。
    • ランダムな負の小数を-100.0から0.0の範囲で生成し、変数randomNegativeDoubleに代入すること。
    • 負の小数の絶対値を計算し、結果を画面に表示すること。
    • Null安全性を学ぶために、Nullable型の変数nullableMessageを作成し、初期値としてnullを設定すること。
    • nullableMessagenullの場合に、デフォルトメッセージ「メッセージはありません」を表示すること。
    • 文字列操作を使い、nullableMessageに新しい説明文を設定し、それを大文字に変換して表示すること。

ただし、以下のような実行結果となること。

ランダムな数を生成し、数学関連の操作を学びます。
生成されたランダムな数: 64
この数の平方根は: 8.0
生成されたランダムな負の数: -45.678
この数の絶対値は: 45.678
現在のメッセージ: メッセージは設定されていません
更新されたメッセージ: ランダムな数 64 と -45.678 の説明です。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:kotlin.random.Randomとkotlin.mathパッケージをインポート
2:main関数の定義
  □ ”ランダムな数を生成し、数学関連の操作を学びます。”を出力
  □ Randomクラスを使用して1から100までのランダムな整数を生成し、randomNumberに代入
  □ ”生成されたランダムな数: “とrandomNumberを出力
  □ randomNumberをDouble型に変換し、平方根を計算して出力
  □ Randomクラスを使用して-100.0から0.0までのランダムな負の小数を生成し、randomNegativeDoubleに代入
  □ ”生成されたランダムな負の数: “とrandomNegativeDoubleを出力
  □ randomNegativeDoubleの絶対値を計算して出力
  □ String型のnullableMessage変数をnullで初期化
  □ ”現在のメッセージ: “とnullableMessageがnullの場合のデフォルトメッセージを出力
  □ nullableMessageに文字列”ランダムな数 randomNumber と randomNegativeDouble の説明です。”を代入
  □ nullableMessageを大文字に変換して出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

/*
【穴埋め問題1】ここに数学ライブラリとランダム数生成を含むインポート文を書いてください
*/

fun main() {
    // コメントの例: ここではユーザーに目的を説明します
    println("ランダムな数を生成し、数学関連の操作を学びます。")

    // ランダムな整数を生成(1から100まで)
    /*
    【穴埋め問題2】ここでRandomクラスを使って1から100までのランダムな整数を生成し、変数randomNumberに代入するコードを書いてください。
    */

    println("生成されたランダムな数: $randomNumber")

    // 文字列の埋め込みを使用して結果を表示
    println("この数の平方根は: ${sqrt(randomNumber.toDouble())}") // 平方根の計算

    // ランダムな負の小数を生成
    /*
    【穴埋め問題3】ここでRandomクラスを使って-100.0から0.0までのランダムな負の小数を生成し、変数randomNegativeDoubleに代入するコードを書いてください。
    */

    println("生成されたランダムな負の数: $randomNegativeDouble")

    // 絶対値を計算
    println("この数の絶対値は: ${abs(randomNegativeDouble)}") // 絶対値を計算

    // Null安全性の例: NullableなString型を作成
    /*
    【穴埋め問題4】ここでnullableMessage変数をnullで初期化し、現在のメッセージを表示するコードを書いてください。
    */

    // 文字列を連結して埋め込む
    /*
    【穴埋め問題5】ここでnullableMessageに文字列を代入し、大文字に変換して表示するコードを書いてください。
    */
}

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

この問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
import kotlin.random.Random
import kotlin.math.*

fun main() {
    // コメントの例: ここではユーザーに目的を説明します
    println("ランダムな数を生成し、数学関連の操作を学びます。")

    // ランダムな整数を生成(1から100まで)
    val randomNumber = Random.nextInt(1, 101) // Randomクラスを使用
    println("生成されたランダムな数: $randomNumber")

    // 文字列の埋め込みを使用して結果を表示
    println("この数の平方根は: ${sqrt(randomNumber.toDouble())}") // 平方根の計算

    // ランダムな負の小数を生成
    val randomNegativeDouble = Random.nextDouble(-100.0, 0.0) // 負のランダムな小数
    println("生成されたランダムな負の数: $randomNegativeDouble")

    // 絶対値を計算
    println("この数の絶対値は: ${abs(randomNegativeDouble)}") // 絶対値を計算

    // Null安全性の例: NullableなString型を作成
    var nullableMessage: String? = null // 初期値はnull
    println("現在のメッセージ: ${nullableMessage ?: "メッセージは設定されていません"}")

    // 文字列を連結して埋め込む
    nullableMessage = "ランダムな数 $randomNumber と $randomNegativeDouble の説明です。"
    println("更新されたメッセージ: " + nullableMessage.toUpperCase()) // 大文字に変換
}
Q
正解コードの解説

コードをブロックごとに分割して以下にコードをブロックごとに分割して解説します。

import文とその役割

import kotlin.random.Random
import kotlin.math.*
  • import kotlin.random.Random: ランダムな数値を生成するためのRandomクラスを利用する際に必要です。このimport文があることでRandom.nextIntRandom.nextDoubleといった機能を使えるようになります。
  • import kotlin.math.*: 数学的操作(平方根計算、絶対値計算など)に必要なライブラリを取り込むためのimport文です。*をつけることでkotlin.math内のすべての関数を利用可能にします。

ポイントimportを使うことで長い名前空間を省略し、簡潔でわかりやすいコードが書けるようになります。

メイン関数

fun main() {
    println("ランダムな数を生成し、数学関連の操作を学びます。")
  • fun main(): Kotlinプログラムのエントリーポイント。ここからプログラムが開始されます。
  • println: 標準出力にメッセージを表示します。このコードではプログラムの目的を説明するためのメッセージを表示します。

ランダムな数値の生成

val randomNumber = Random.nextInt(1, 101)
println("生成されたランダムな数: $randomNumber")
  • Random.nextInt(1, 101)Randomクラスのメソッドを使い、1から100の範囲でランダムな整数を生成します。
  • val: 変数を定数として宣言するために使用。ここでは生成したランダムな数をrandomNumberに格納しています。

数学操作: 平方根と絶対値の計算

println("この数の平方根は: ${sqrt(randomNumber.toDouble())}")
val randomNegativeDouble = Random.nextDouble(-100.0, 0.0)
println("生成されたランダムな負の数: $randomNegativeDouble")
println("この数の絶対値は: ${abs(randomNegativeDouble)}")
  • sqrt: 数値の平方根を計算します。randomNumberは整数型なのでtoDoubleで浮動小数点型に変換しています。
  • Random.nextDouble(-100.0, 0.0): -100.0から0.0の範囲でランダムな小数を生成します。
  • abs: 数値の絶対値を計算します。負の値が正の値に変換されます。

Null安全性と文字列操作

var nullableMessage: String? = null
println("現在のメッセージ: ${nullableMessage ?: "メッセージはありません"}")
nullableMessage = "ランダムな数 $randomNumber と $randomNegativeDouble の説明です。"
println("更新されたメッセージ: " + nullableMessage.toUpperCase())
  • toUpperCase(): 文字列を大文字に変換します。
  • String?: Nullable型の文字列を宣言します。最初はnullを代入します。
  • ?:: Elvis演算子。nullableMessagenullの場合にデフォルトメッセージを表示します。

まとめ

このコードではimport文の基本的な使い方を学びながら、Kotlinのランダム生成や数学的操作、文字列操作、そしてNull安全性を実践的に体験しました。

import文を正しく使うことで、外部ライブラリの機能を簡単に利用できるようになります。

Kotlinの強力な標準ライブラリを活用することでコードをシンプルかつ効率的に書く力を身につけましょう!

他のライブラリや関数も探して、さらにKotlinの可能性を広げてみてください。

Q
サイト改善アンケート & ご指摘/ご質問

本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などを アンケート 形式でお伺いしています。

また記事の内容に関する ご指摘ご質問 もお待ちしています。

1.このサイトをどのように活用していますか?また、今後どのように活用したいですか?
5.気になっているサービス・商品があれば教えてください。
※ 特定の記事に関する内容の場合は、記事番号(レッスン〇-〇)をご記入願います。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました