Home English

Kuina-chan

くいなちゃんAug 22, 2017


プログラミング言語Kuin」の「kuinライブラリ」「libライブラリ」についてです。

kuin・libライブラリ

Kuinに標準的に用意されているライブラリのうち、基本機能を提供するライブラリ「kuin.kn」と汎用機能を提供するライブラリ「lib.kn」を解説します。
またこれらのライブラリでは、角度を扱う場合の単位はすべてラジアンです。
kuin・libライブラリに用意されているものはkuin・libライブラリの通りです。
kuin・libライブラリ
名前 説明
kuin@Class すべてのクラスが継承するルートクラス
kuin@Excpt 例外情報が格納されるクラス
lib@pi 円周率π
lib@e ネイピア数e
lib@intMin intの最小値
lib@intMax intの最大値
lib@cmdLine コマンドラインを取得する関数
lib@exitCode 終了コードを設定する関数
lib@rnd intの乱数を取得する関数
lib@rndFloat floatの乱数を取得する関数
lib@rndBit64 bit64の乱数を取得する関数
lib@cos 余弦関数cos(x)
lib@sin 正弦関数sin(x)
lib@tan 正接関数tan(x)
lib@acos 逆余弦関数cos-1(x)
lib@asin 逆正弦関数sin-1(x)
lib@atan 逆正接関数tan-1(x)
lib@cosh 双曲線余弦関数cosh(x)
lib@sinh 双曲線正弦関数sinh(x)
lib@tanh 双曲線正接関数tanh(x)
lib@acosh 逆双曲線余弦関数cosh-1(x)
lib@asinh 逆双曲線正弦関数sinh-1(x)
lib@atanh 逆双曲線正接関数tanh-1(x)
lib@sqrt 平方根√x
lib@exp 指数関数ex
lib@ln 自然対数logex
lib@log 対数関数logbasex
lib@floor 床関数
lib@ceil 天井関数
lib@round 指定した桁を四捨五入する関数
lib@rot 回転した座標を求める関数
lib@invRot 座標から回転角度を求める関数
lib@dist 2点間の距離を求める関数
lib@chase 座標を目的地に向かって追跡させる関数
lib@hash データをハッシュ化する関数
lib@encrypt データを暗号化する関数
lib@decrypt データを復号する関数
lib@sysTime システム時刻を取得する関数
lib@now 現在の時刻を取得する関数
lib@intToDate UNIX時間を日付に変換する関数
lib@dateToInt 日付をUNIX時間に変換する関数
lib@sleep 一定時間処理を停止させる関数
それぞれについて、以下で詳しく説明します。

kuin@Class

「kuin@Class」は、すべてのクラスが継承しているルートクラスです。
kuin@Classに定義されているメソッドのうち、「ctor」「cmp」は継承可能で、これらを継承することでコンストラクタ(インスタンス生成時の初期化処理)やクラスの比較処理を実装できます。
詳しくは、クラスを参照してください。

kuin@Excpt

「kuin@Excpt」は、例外情報が格納されるクラスで、主にtryブロックのcatch節内で使用されます。
tryブロックのブロック名を変数のようにアクセスすると、このクラス型の値となり、発生した例外の情報が取得できます(kuin@Excptクラスの定義)。
kuin@Excptクラスの定義

 var code: int
 var msg: []char

code 発生した例外の例外コード
msg 発生した例外の例外メッセージ。 設定されていない場合はnull

定数

lib@pi

「lib@pi」は円周率πを、float型で表せる最高精度で定義した定数です(lib@pi定数の定義)。
lib@pi定数の定義

 const pi: float :: 3.14159265358979323846

lib@e

「lib@e」は自然対数の底(ネイピア数)eを、float型で表せる最高精度で定義した定数です(lib@e定数の定義)。
lib@e定数の定義

 const e: float :: 2.71828182845904523536

lib@intMin

「lib@intMin」はint型で表せる値の最小値(-9223372036854775808)を定義した定数です(lib@intMin定数の定義)。
lib@intMin定数の定義

 const intMin: int :: -9223372036854775807 - 1

lib@intMax

「lib@intMax」はint型で表せる値の最大値(9223372036854775807)を定義した定数です(lib@intMax定数の定義)。
lib@intMax定数の定義

 const intMax: int :: 9223372036854775807

システム関数

lib@cmdLine

「lib@cmdLine」はプログラム実行時に与えられるコマンドラインを取得する関数です(lib@cmdLine関数の定義)。
lib@cmdLine関数の定義

 func cmdLine(): [][]char

戻り値 スペース区切りで分割されたコマンドラインの配列

lib@exitCode

「lib@exitCode」はプログラム終了時に返す終了コードを設定する関数です(lib@exitCode関数の定義)。
lib@exitCode関数の定義

 func exitCode(code: int)

code 終了コード
プログラムが別のプログラムから呼び出されて起動している際に、呼び出し元のプログラムにエラーが起こった旨などを通知する終了コードをこの関数で設定できます。
この関数で設定せずにプログラムを終了した場合、終了コードは「0」になります。
「lib@exitCode」が生成する例外はlib@exitCode関数の例外の通りです。
lib@exitCode関数の例外
例外コード
(16進数)
ビルド 発生条件
09170000 dbgのみ 「code」が16進数で0以上FFFFFFFF以下の範囲外

乱数取得関数

lib@rnd

「lib@rnd」は整数の乱数を取得する関数です(lib@rnd関数の定義)。
lib@rnd関数の定義

 func rnd(min: int, max: int): int

min 取得する乱数の下限
max 取得する乱数の上限
戻り値 min以上max以下の整数の乱数
「lib@rnd」が生成する例外はlib@rnd関数の例外の通りです。
lib@rnd関数の例外
例外コード
(16進数)
ビルド 発生条件
09170000 dbgのみ 「min」が「max」より大きい

lib@rndFloat

「lib@rndFloat」は小数の乱数を取得する関数です(lib@rndFloat関数の定義)。
lib@rndFloat関数の定義

 func rndFloat(min: float, max: float): float

min 取得する乱数の下限
max 取得する乱数の上限。 ただしこの値未満の値が返る
戻り値 min以上max未満の小数の乱数
「lib@rndFloat」が生成する例外はlib@rndFloat関数の例外の通りです。
lib@rndFloat関数の例外
例外コード
(16進数)
ビルド 発生条件
09170000 dbgのみ 「min」が「max」以上である

lib@rndBit64

「lib@rndBit64」は64bitの乱数を取得する関数です(lib@rndBit64関数の定義)。
lib@rndBit64関数の定義

 func rndBit64(): bit64

戻り値 0x0000000000000000以上0xFFFFFFFFFFFFFFFF以下の乱数

乱数取得関数の仕様

これらの乱数取得関数の仕様は乱数取得関数の仕様の通りです。
  • 擬似乱数生成にはメルセンヌツイスタ(SFMT)を用いており、周期2607の高品質な擬似乱数が高速で生成される。
  • シード値はアプリの起動時にミリ秒単位の時刻を用いて自動設定されるため、起動のたびに異なる乱数列が返る。
乱数取得関数の仕様

三角関数、逆三角関数

lib@cos

「lib@cos」は「cos x」(余弦)を計算する関数です(lib@cos関数の定義)。
lib@cos関数の定義

 func cos(x: float): float

x 任意の値
戻り値 「cos x」の値

lib@sin

「lib@sin」は「sin x」(正弦)を計算する関数です(lib@sin関数の定義)。
lib@sin関数の定義

 func sin(x: float): float

x 任意の値
戻り値 「sin x」の値

lib@tan

「lib@tan」は「tan x」(正接)を計算する関数です(lib@tan関数の定義)。
lib@tan関数の定義

 func tan(x: float): float

x 任意の値
戻り値 「tan x」の値

lib@acos

「lib@acos」は「cos-1 x」(逆余弦)を計算する関数です(lib@acos関数の定義)。
lib@acos関数の定義

 func acos(x: float): float

x 任意の値
戻り値 「cos-1 x」の値

lib@asin

「lib@asin」は「sin-1 x」(逆正弦)を計算する関数です(lib@asin関数の定義)。
lib@asin関数の定義

 func asin(x: float): float

x 任意の値
戻り値 「sin-1 x」の値

lib@atan

「lib@atan」は「tan-1 x」(逆正接)を計算する関数です(lib@atan関数の定義)。
lib@atan関数の定義

 func atan(x: float): float

x 任意の値
戻り値 「tan-1 x」の値

双曲線関数、逆双曲線関数

lib@cosh

「lib@cosh」は「cosh x」(双曲線余弦)を計算する関数です(lib@cosh関数の定義)。
lib@cosh関数の定義

 func cosh(x: float): float

x 任意の値
戻り値 「cosh x」の値

lib@sinh

「lib@sinh」は「sinh x」(双曲線正弦)を計算する関数です(lib@sinh関数の定義)。
lib@sinh関数の定義

 func sinh(x: float): float

x 任意の値
戻り値 「sinh x」の値

lib@tanh

「lib@tanh」は「tanh x」(双曲線正接)を計算する関数です(lib@tanh関数の定義)。
lib@tanh関数の定義

 func tanh(x: float): float

x 任意の値
戻り値 「tanh x」の値

lib@acosh

「lib@acosh」は「cosh-1 x」(逆双曲線余弦)を計算する関数です(lib@acosh関数の定義)。
lib@acosh関数の定義

 func acosh(x: float): float

x 任意の値
戻り値 「cosh-1 x」の値

lib@asinh

「lib@asinh」は「sinh-1 x」(逆双曲線正弦)を計算する関数です(lib@asinh関数の定義)。
lib@asinh関数の定義

 func asinh(x: float): float

x 任意の値
戻り値 「sinh-1 x」の値

lib@atanh

「lib@atanh」は「tanh-1 x」(逆双曲線正接)を計算する関数です(lib@atanh関数の定義)。
lib@atanh関数の定義

 func atanh(x: float): float

x 任意の値
戻り値 「tanh-1 x」の値

平方根、指数、対数

lib@sqrt

「lib@sqrt」は「√x」(平方根)を計算する関数です(lib@sqrt関数の定義)。
lib@sqrt関数の定義

 func sqrt(x: float): float

x 任意の値
戻り値 「√x」の値

lib@exp

「lib@exp」は「ex」(指数)を計算する関数です(lib@exp関数の定義)。
lib@exp関数の定義

 func exp(x: float): float

x 任意の値
戻り値 「ex」の値

lib@ln

「lib@ln」は「ln x (=logex)」(自然対数)を計算する関数です(lib@exp関数の定義)。
lib@exp関数の定義

 func ln(x: float): float

x 任意の値
戻り値 「ln x」の値

lib@log

「lib@log」は「logbasex」(対数)を計算する関数です(lib@log関数の定義)。
lib@log関数の定義

 func log(base: float, x: float): float

base 対数の底
x 任意の値
戻り値 「logbasex」の値

床関数、天井関数、四捨五入

lib@floor

「lib@floor」は小数xに対し、x以下の最大の整数を求める関数です(lib@floor関数の定義)。
lib@floor関数の定義

 func floor(x: float): float

x 任意の値
戻り値 x以下の最大の整数
小数点以下を負の方向に切り捨てる関数ともいえます。

lib@ceil

「lib@ceil」は小数xに対し、x以上の最小の整数を求める関数です(lib@ceil関数の定義)。
lib@ceil関数の定義

 func ceil(x: float): float

x 任意の値
戻り値 x以上の最小の整数
小数点以下を正の方向に切り上げる関数ともいえます。

lib@round

「lib@round」は小数点以下を四捨五入する関数です(lib@round関数の定義)。
lib@round関数の定義

 func round(x: float, precision: int): float

x 任意の値
precision 桁の精度
戻り値 xを四捨五入した値
precisionには小数点以下何桁目を四捨五入するかを指定します。 例えば、「lib@round(1234.5678, 2)」は「1234.57」、「lib@round(1234.5678, -2)」は「1200」を返します。

回転と距離

lib@rot

「lib@rot」は座標を回転させる関数です(lib@rot関数の定義)。
lib@rot関数の定義

 func rot(x: &float, y: &float, centerX: float, centerY: float, angle: float)

x 回転させる座標X
y 回転させる座標Y
centerX 回転中心座標X
centerY 回転中心座標Y
angle 回転角度
centerXおよびcenterYを中心に、xおよびyの座標を回転させ、回転後の座標でxおよびyの値を更新します。

lib@invRot

「lib@invRot」は、中心から見たときの座標が存在する角度を取得する関数です(lib@invRot関数の定義)。
lib@invRot関数の定義

 func invRot(x: float, y: float, centerX: float, centerY: float): float

x 座標X
y 座標Y
centerX 中心座標X
centerY 中心座標Y
戻り値 角度

lib@dist

「lib@dist」は、中心から見たときの座標が存在する距離を取得する関数です(lib@dist関数の定義)。
lib@dist関数の定義

 func dist(x: float, y: float, centerX: float, centerY: float): float

x 座標X
y 座標Y
centerX 中心座標X
centerY 中心座標Y
戻り値 距離

lib@chase

「lib@chase」は、座標を目的地に向かって追跡させる関数です(lib@chase関数の定義)。
lib@chase関数の定義

 func chase(x: &float, target: float, vel: float): bool

x 座標
target 目的地の座標
vel 速度
戻り値 目的地に到達したかどうか
lib@chaseメソッドの仕様はlib@chaseメソッドの仕様の通りです。
  • xよりもtargetのほうが大きければ、xに「vel」が加算される。
  • xよりもtargetのほうが小さければ、xに「-vel」が加算される。
  • 加算してxがtargetを追い越したときには、xにはtargetが代入される。
  • 以上の処理を終え、xがtargetと等しくなった場合、戻り値としてtrueが返る。
lib@chaseメソッドの仕様

ハッシュと暗号

lib@hash

「lib@hash」はデータをハッシュ化する関数です(lib@hash関数の定義)。
lib@hash関数の定義

 func hash(data: []bit8): []bit8

data ハッシュ化するデータ
戻り値 32byte(配列の要素数が32)のハッシュ値
lib@hashメソッドの仕様はlib@hashメソッドの仕様の通りです。
  • 暗号学的な性質を持つSHA-256アルゴリズムを用いているため、ハッシュ値から元データを作成することは事実上不可能とされる。
lib@hashメソッドの仕様

lib@encrypt

「lib@encrypt」はデータを暗号化する関数です(lib@encrypt関数の定義)。
lib@encrypt関数の定義

 func encrypt(data: []bit8, key: []bit8): []bit8

data 暗号化するデータ
key 32byte(配列の要素数が32)の暗号鍵
戻り値 暗号化されたデータ
lib@encryptメソッドの仕様はlib@encryptメソッドの仕様の通りです。
  • 極めて安全性が高いとされるAES-256アルゴリズムを用いている。
  • keyの値は自由に定めてよいが、復号する際に同じkeyを使わなければ復号できない。
  • データの要素数が16の倍数になっていない場合は、16の倍数になるようにデータ末端に「0x00」のデータが自動的に追加される。
lib@encryptメソッドの仕様

lib@decrypt

「lib@decrypt」は、「lib@encrypt」によって暗号化されたデータを復号する関数です(lib@decrypt関数の定義)。
lib@decrypt関数の定義

 func decrypt(data: []bit8, key: []bit8): []bit8

data 暗号化されたデータ
key 暗号化時に使用した32byte(配列の要素数が32)の暗号鍵
戻り値 復号されたデータ

時刻と時間

lib@sysTime

「lib@sysTime」は、OSが起動してから現在までに経った時間をミリ秒で表す「システム時刻」を返す関数です(lib@sysTime関数の定義)。
lib@sysTime関数の定義

 func sysTime(): int

戻り値 システム時刻

lib@now

「lib@now」は、1970年1月1日0時0分0秒から現在までの経過時間を秒で表す「UNIX時間」を返す関数です(lib@now関数の定義)。
lib@now関数の定義

 func now(): int

戻り値 UNIX時間
この「UNIX時間」は、コンピュータで日時を表すときに一般的に用いられる形式です。
「lib@intToDate」関数と組み合わせることで、現在時刻を「年・月・日・時・分・秒」に分けて取得できます。

lib@intToDate

「lib@intToDate」は、UNIX時間を日付に変換する関数です(lib@intToDate関数の定義)。
lib@intToDate関数の定義

 func intToDate(time: int, year: &int, month: &int, day: &int, hour: &int, minute: &int, second: &int): int

time 変換するUNIX時間
year 年(西暦4桁)の格納先
month 月(1以上12以下)の格納先
day 日(1以上31以下)の格納先
hour 時(0以上23以下)の格納先
minute 分(0以上59以下)の格納先
second 秒(0以上59以下)の格納先
戻り値 曜日(0=日、1=月、…、6=土)
「lib@intToDate」関数と組み合わせることで、現在時刻を「年・月・日・時・分・秒」に分けて取得できます。

lib@dateToInt

「lib@dateToInt」は、日付をUNIX時間に変換する関数です(lib@dateToInt関数の定義)。
lib@dateToInt関数の定義

 func dateToInt(year: int, month: int, day: int, hour: int, minute: int, second: int): int

year 年(西暦4桁)
month 月(1以上12以下)
day 日(1以上31以下)
hour 時(0以上23以下)
minute 分(0以上59以下)
second 秒(0以上59以下)
戻り値 UNIX時間

lib@sleep

「lib@sleep」は一定時間処理を停止させる関数です(lib@sleep関数の定義)。
lib@sleep関数の定義

 func sleep(ms: int)

ms 停止させる時間(単位はミリ秒)
1秒間停止させる場合は「lib@sleep(1000)」とします。
1503413430ja