Javaについて徹底解説!

Javaのdoubleを基礎から解説 浮動小数点数の考え方を身に着けよう!

大石 英人

開発エンジニア/Java20年/Java GOLD/リーダー/ボールド歴2年

Javaのdoubleはプリミティブ型の一つで、小数点を持つ数字を64ビットの範囲で表現できます。doubleは浮動小数点と指数表記という考え方のおかげで、およそ10308乗というとても大きな数字から、10のマイナス324乗というとても小さい数字まで、大変広い範囲の数字を扱えます。

doubleを使えば簡単・高速に計算できますが、きちんと理解をしないままdoubleを使うと、「どうしてこの計算結果になるの?」となることもあります。特に、64ビットもあるとはいえサイズに限りがあることや、2進数によるいろいろな制限や計算上起きる誤差からは逃れられません。

だからこそ、doubleの特徴や使い方をしっかり知っているということは、数値計算がしっかりと行えるスキルがあるということです。どのような計算誤差がどのような仕組みで発生するかあらかじめ分かっていれば対策はしっかりとできますし、結果として実用上求められる精度での計算ができるのです。

この記事ではdoubleについて、そもそもdoubleとはどういうものか、doubleはどうやって使うのか、気を付けたい所などを初心者向けにお伝えします。

※この記事のサンプルは、Java 11の環境で動作確認しています


1.doubleとは64ビットの浮動小数点数

double(ダブル)は、小数点以下を含む幅広い範囲の数字を扱えるデータ型で、プリミティブ型(primitive、基本データ型)の一つです。一つのdoubleのサイズは64ビット(8バイト)です。doubleは「倍精度浮動小数点数」とも呼ばれます。

名前が“double”なのは、何かの「二倍」だからです。その何かとは、同じ基本データ型である32ビット(4バイト)floatです。doubleではfloatの倍のビット数を使って、floatよりもずっと広い範囲の数字を表現できるのです。

「浮動」小数点数と呼ばれるのは、数字の整数部と小数部の長さが可変なので、小数点の位置が数字に合わせてふわふわ移動するからです。一方で、固定小数点数というものも数値計算の世界にはありますが、Javadouble/floatは浮動小数点数です。

doubleを他のプリミティブ型と簡単に比較すると、以下のとおりです。doubleでは、もっとも広い範囲の数字を扱えることが分かるかと思います。

データ型 値の種類 ビット数 表現できる値の範囲 接尾語 備考
boolean 真偽値 1ビット true/falseのどちらか
byte 整数 8ビット(1バイト) -128~127
short 整数 16ビット(2バイト) -32,768~32,767
char 文字 16ビット(2バイト) 0~65,535 Unicode文字、\u0000\uffff
int 整数 32ビット(4バイト) -2,147,483,648~2,147,483,647 ±2147百万、Unicodeコードポイント
long 整数 64ビット(8バイト) -9,223,372,036,854,775,808~9,223,372,036,854,775,807 Lまたはl ±922
float 浮動小数点数 32ビット(4バイト) ±3.40282347E+38~ 1.40239846E-45 Fまたはf 単精度
±3.4×1038乗~約±1.4×10-45
double 浮動小数点数 64ビット(8バイト) ±1.79769313486231570E+308~±4.94065645841246544E-324 Dまたはd 倍精度
±1.8×10308乗~約±4.9×10-324

1-1.doubleは指数表記で広い範囲の数字を表現する

doubleは、ものすごく広い範囲の数字を表現できます。前述の表にもあるとおり、10308乗というちょっとよくわからない大きさの数字や、10のマイナス324乗というこれまたすごい小さな数字を表現できます。

これほど広い範囲の数字を表現できるのは、doubleは内部で「指数表記」を使うからです。指数表記では符号、仮数、基数、指数の組み合わせで数字を表現しますが、double64ビットの範囲を符号、仮数、指数それぞれに割り当てています。

指数表記の考え方

例えば、123,000は「1.23×105乗」です。0.0000123も同様に「1.23×10-5乗」です。両方とも1.23×10の何乗と言っているだけで、違うのは10の乗数だけです。doubleでは大きな数字も小さな数字もこのように言い換えて、ビットを効率的に使っています。

1-2.doubleは誤差と一蓮托生

doubleを使うと、広い範囲の数字の計算を高速に行えます。ですが、その高速さは常に誤差と引き換えです。コンピュータでの数値計算は、昔も今もこれからも、誤差との戦いです。ですから、誤差はdoubleを使う上ではいつも意識しておきたいことです。

doubleのような浮動小数点数が苦手とするのは、小数点以下の数字を正確に表現することです。これは大事なことなので必ず覚えておきましょう。doubleで小数点以下の数字を扱うと、double64ビットもあるとはいえ限られたビット数しか持っていないため、誤差がどうしても発生します。

1-2-1.誤差の例:0.110回足してみる

例えば、実はdoubleでは0.1すら正確に表せません。以下のとおり、double0.110回足しても1にはなりません。プログラム上では“0.1”と明確に書いていますが、実際のdoubleが表している数字は、0.1とはほんのちょっとだけ違う数字なのです。

この0.1との誤差は、丸め誤差というものが影響しています。doubleでは、この他にもいろいろな計算上の誤差が発生します。誤差の種類はあとで簡単に紹介しますが、どうにも計算結果が式と合わないな、という時は計算誤差を疑いましょう。計算誤差を回避するためのテクニックもいろいろあります。

1-3.Javaのdoubleは国際標準規格準拠

Javaのdoubleは、国際的な浮動小数点数の標準規格「IEEE 754」に準拠しています。他のプログラミング言語でもIEEE 754に準拠していることが普通なので、doubleでの計算結果は他のプログラミング言語での実行結果と概ね一致します。

【参考】IEEE 754

https://ja.wikipedia.org/wiki/IEEE_754

IEEE 754では、64ビット中のどの部分を符号、仮数、指数に使うかや、計算ルールが決められています。いろいろな理由や経緯があり、ビットパターンを作るにも少々計算が必要ですが、doubleを使う側はそれを強く意識しなくてもOKです。なお、doubleの基数は2固定なので、この64ビット中に基数はありません。

倍精度浮動小数点


2.doubleの基本的な使い方

ここでは、doubleの使い方のサンプルをお伝えします。そして、doubleを使う上では注意すべきことがいくつかありますので、それらも順番にお伝えします。

2-1.doubleの宣言の仕方、初期値、リテラル

2-2-1.doubleの変数・配列の宣言、初期値の指定

doubleは型の一つですから、以下のように変数や配列変数の型として使えます。もちろんメソッドの引数や、戻り値としても使えます。

2-1-2.doubleのリテラルの書き方

doubleの変数へ代入できる数字のリテラル(文字どおりの、という意味)は、以下のいずれかの形式で書けます。小数点以下の数字を書けるのが、intなどの整数とは違いますね。Javaでは小数点がある数字を書くと、自動的にdouble扱いになります。“_”での桁区切りもできます(Java 7以降)

  • 10進数(整数、小数)
  • 10進数+指数表記
  • 2進数(0b始まり、整数)Java 7以降
  • 8進数(0始まり、整数)
  • 16進数(0x始まり、整数)
  • 16進数+指数表記

とても大きい、または小さい数字を表すなら、指数表記も使えます。指数表記にすると自動的にdoubleになります。指数表記は前述のとおり符号、仮数、指数の組み合わせなので、リテラルでも同様に書きます。指数表記でのdoubleの基数は、10(e)2(p)を選べて、10進数と16進数へだけ使えます。

指数表記の例

リテラルがdoubleだと明示的に表現したいなら、接尾語としてDあるいはdを付けて「これはdoubleだよ」とJavaに教えます。小数点以下がない数値リテラルは、Javaでは自動的にintになるので注意しましょう。

なお、doubleには正負の無限大(Inifinity)や非数(NaN、Not a Number)などの、特殊なものがあります。また、0にも正負の0(+0.0-0.0)があって区別されます。これらはIEEE 754で決められているもので、普通のプログラムで意識することはあまりありませんが、あることは知っておきましょう。

2-1-3.doubleのフィールド、配列の初期値は0.0

フィールドとしてdouble型の変数を使ったり、double型の配列を使う場合は、未初期化だと0.0になります。他の数値型のプリミティブと同じです。

2-2.doubleを使った四則演算

2-2-1.doubleが絡むと計算結果はdoubleになる

doubleを使った四則演算(加減乗除)には、四則演算用の算術演算子、つまり+-*/を使います。余りを求めるなら%です。ですので、ごく直感的に計算できるかと思います。

なお、doubleと計算した結果はdoubleになります。もう少し正確に言えば、doubledoubleでないもので計算をすると、doubleでないものの方が自動的にdoubleに変換(キャスト)されて計算されます。doubleが関係するキャストのルールは後述します。

2-2-2.doubleには無限大と非数がある

計算した結果、doubleで表現できる範囲よりも絶対値が大きくなったなら無限大(Infinity)になります(いわゆるオーバーフロー)doubleで表現できる範囲よりも絶対値が小さくなったなら0.0になります(いわゆるアンダーフロー)

非数(NaN)はどんな数字とどんな計算をしてもNaNになります。この動きは、SQLでのNULLと似ていますね。

doubleでは、0での割り算(いわゆる0除算)を行ってもArithmeticExceptionthrowされません。割られる数により結果は違い、InfinityNaNになります。これらの結果は、NaNInfinityへの計算も含め、浮動小数点数の計算ルールで決められています。

2-3.doubleとビット演算

doubleへは直接ビット演算を行えません。Javaでのビット演算は、intなどの整数型プリミティブかbooleanにだけ定義されている計算だからです。

どうしてもdoubleが持つビットパターンへビット演算を行いたいなら、Double.doubleToLongBitsあるいはdoubleToRawLongBitsを使ってlongに変換してから行います。ちなみに、longのビットパターンからdoubleに変換するには、Double.longBitsToDoubleを使います。

2-4.double同士の比較には気を付けよう

double同士を比較する時は、比較演算子==を使います。==での比較では、比べる数字同士が完全に一致していなければtrueにはならず、「大体同じ」とは判断してはくれません。==が正確に比較するのは当たり前のように思えますが、これがdoubleを使う上では思わぬ罠になることもあります。

以下の例では、本当にごくわずかしか数字が違わないdouble同士ですが、それでも==の結果はfalseです。実際の数値計算では、計算式の上では値が一致するはずだけれども、いろいろな誤差により完全に一致しないケースは普通にあり得ます。doubleの計算結果は非常に細かい数字になりうるからです。

そういうケースでは、ある程度の範囲なら数字のぶれは許容することにして、その範囲内にあれば等しいとみなすこともあります。そうしないと、実用上の計算に支障をきたすこともあるからです。


3.doubleと他のプリミティブ型との変換

Javaでは数字のプリミティブ型として、整数(byte/short/char/long)と、小数点が扱えるもの(float/double)があります。doubleとそれらとの変換や演算の時には注意することがいくつかあります。

3-1.double以外のプリミティブ型→doubleへのキャスト

double以外のプリミティブ型からdoubleへのキャストでは、元のプリミティブ型が持っていた数字がdoubleへそのまま設定されます。doubleは、Javaのプリミティブ型でもっとも表現できる数字の範囲が広いので、どのプリミティブ型の数字でもdoubleで表現できるからです。

整数型プリミティブ同士のキャストのように、キャスト先の型のサイズの分だけビットパターンが同じになるわけではありません。

3-2.double→double以外のプリミティブ型へのキャスト

doubleからdouble以外のプリミティブ型への変換は、ビット数が少なくなるので値が変わることがあります。変換方法は、変換先がfloatlongか、それ以外かで少し異なります。

3-2-1.double→floatへのキャスト

キャスト先がfloatの場合は、doubleが持っている仮数と指数がfloatで表現できる範囲に縮小されます。floatで表現できる範囲を超えていると±Infinityになります。また、doubleNaN±Infinityだった場合はそのままです。

3-2-2.double→longへのキャスト

キャスト先がlongの場合は、doubleで表されている数字の小数部は切り捨てられ、整数部だけをlongで表現できる範囲内で変換します。longで表現できる範囲を超えている場合は、long±の最大値です。double±Inifinityならlongの最大値・最小値になり、NaNの場合は0です。

3-2-3.double→int/short/char/byteへのキャスト

キャスト先がlong以外の整数型プリミティブ(int/short/char/byte)の場合はlongの場合とほぼ同じですが、変換先の範囲がintになります。さらにそのintからそれぞれの型のビットサイズに応じたキャストが行われます。±InfinityNaNの扱いはlongと同じです。以下ではintを例としています。


4.doubleとStringとの変換

Stringもdoubleと並んでJavaでは重要なクラスです。Stringをdoubleにすること、またdoubleStringにすることは、プログラムでは日常茶飯事です。ここではその方法をお伝えします。

4-1.String→doubleの変換

ファイルから読み込んだ文字列や、引数で受け取った文字列からdoubleを作りたい時があります。そういう時はDouble.parseDoubleを使って文字列をdoubleに変換しましょう。doubleと解釈できない文字列の場合はNumberFormatExceptionthrowされます。

Double.parseDoubleやvalueOfが受け付ける文字列は、リテラルのところでもお伝えした、10進数、10進数の指数表記、16進数の指数表記、非数(NaN)±の無限大(Infinity)です。±0もきちんと区別されます。

なお、整数の2進数、8進数、16進数はDouble.parseDoubleは受け付けません。Long.valueOfの基数を指定できるメソッドでLongに変換した後、doubleValuedoubleに変換するといいでしょう。また、longdoubleにそのまま変換できますので、Long.parseLongの戻り値のlongdoubleにキャストしてもいいです。

4-2.double→Stringの変換

4-2-1.Double.toString(double)・String.valueOf(double)で変換する

doubleをStringにしたい時も頻繁にあります。簡単に行うなら、Double.toString(double)か、String.valueOf(double)を使いましょう。ちなみに、どちらを使っても結果は同じです。

4-2-2.BigDecimal.toPlainStringで変換する

絶対値が大きかったり、小数点以下の桁が多いdoubleを、Double.toStringやString.valueOfで文字列にすると指数表記になります。普通の書き方の10進数文字列にしたいなら、BigDecimalに変換した後、BigDecimal.toPlainStringを使うのが簡単です。

4-2-3.String.formatやDecimalFormatで書式を付けて変換する

doubleを3桁区切りなどでフォーマットしたり、0埋めをしたり、小数部の四捨五入をしたい場合もあるでしょう。その場合は、java.text.DecimalFormatString.formatなどを使います。それぞれの書式の詳細は、Javadocを参照してください。

【参考】java.text.DecimalFormat

https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/text/DecimalFormat.html

 

【参考】java.lang.String.format

https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/lang/String.html#format(java.lang.String,java.lang.Object…)

 

【参考】java.util.Formatter

https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/util/Formatter.html

4-2-4.Double.doubleToRawLongBits・doubleToLongBitsでビットパターンに変換する

doubleが持つビットパターンをそのまま文字列にしたい場合は、Double.doubleToRawLongBitsまたはdoubleToLongBitsでlongに変換した後、Long.toBinaryStringで01の文字列にします。さらにString.formatreplaceを経由しているのは、符号が正なら先頭へ0を付けたいからです。

このビットパターンはIEEE 754の倍精度浮動小数点の仕様そのままなので、IEEE 754の勉強をするのにも使えたりします。

なお、Double.doubleToRawLongBits・doubleToLongBitsの違いは非数(NaN)の扱いで、doubleToRawLongBitsはビットパターンそのまま、doubleToLongBitsは正規化された一つのNaNに変換します。


5.doubleとDouble

Javaでは64ビットの浮動小数点数を表現するために、doubleDoubleの二つの方法があります。Javaプログラミングの初心者は、なぜ表し方が二つあるのか混乱すると思います。

この章ではその理由と、doubleDoubleの使い分けの方針などをお伝えします。

5-1.二種類の表現方法は性能確保のため

Javaではプリミティブ型のdoubleと、クラスのDoubleは別物です。C#などではこういう区別がないのに、なぜJavaではあるのか。これは、Javaが生まれた当時にプログラムの実行速度を確保するためでした。

Javaは1995年に登場したプログラミング言語です。当時のCPUのクロック周波数は今とは桁が違い、一般向けのCPUでようやく100MHzを超えたくらい。メモリの量も全体で数MB~数10MBと非常に乏しかったものです。

doubleは64ビットの浮動小数点数そのものですし、コンピュータには浮動小数点数を専用に計算するハードウェアが搭載されているので、楽に速く扱えます。しかし、doubleをクラスとすると、一つのdoubleの数字に64ビット以上のメモリを使いますし、計算上でも余分なオーバーヘッドが発生します。

5-2.クラスのDoubleならnullを表現できる

JavaでDoubleを使うのは、Doubleが持つメソッドを使いたい時と、値がない場合すなわちnullを表現したい時です。例えば、SQLでは値の有り無しをNULLかどうかで表現できますが、それをJavadoubleでは上手に表現できません。

ですから、プログラム上では0-1などの値に特別な意味を持たせたりするのですが、確実さには欠けます。そういう値のチェックを忘れるなどのミスもしがちです。

そういう時に参照型であるDoubleを使えば、値がないことをnullとして表現できるのです。Doubleをどういう時に使うか分からない方は、その変数でnullを表現する必要があるかを一つの指針にしてみてください。

5-3.オートボクシングでdoubleDoubleを自動変換する

Java 1.5でオートボクシング(auto boxing)という仕組みが導入されました。オートボクシングで、doubleDoubleをプログラム上でほぼ同じものとして扱えます。

プログラム上でdoubleを使う所ではDoubleを使えますし、Doubleを使う所ではdoubleが使えます。本当のプログラム上は相変わらずdoubleDoubleは別物なのですが、その違いをJavaが裏で自動的に変換をしてくれるのです。

これでJavaの面倒な部分がある程度解消されました。ですが、前述のとおりDoublenullを表せますが、doubleは必ず何かの整数なので、nullに相当するものがありません。

ですので、以下のように予期せぬところでNullPodoubleerExceptionが発生したりします。これは2019年のJava 11の時点でも変わっていません。プログラマが注意するか、Optionalを使う必要があります。


6.【発展】doubleと誤差

doubleのような浮動小数点を使った計算では、いろいろな誤差に気を付ける必要があります。誤差が出る理由は、double2進数であることと、数字に使えるビット数、特に仮数が有限であることが主な原因なのですが、ここでは具体例を挙げて説明してみます。

これらの内容を正確に理解するには、数値計算を行う時の「有効数字(有効桁数)」と浮動小数点数の「正規化」という考え方の知識が前提となります。有効数字や正規化の考え方は、以下などを参考にしてください。

【参考】有効数字(Wikipedia)

https://ja.wikipedia.org/wiki/有効数字

 

【参考】浮動小数点数(Wikipedia)

https://ja.wikipedia.org/wiki/浮動小数点数

6-1.丸め誤差/打切り誤差

本来表したい数字と実際の数字に、数字に使える桁数のせいで差が出ることを「丸め誤差」や「打切り誤差」と呼びます。先述のとおり、doubleでは1/10=0.1を正確に表せません。0.12進数だと循環小数ですが、doubleは有限なので、どこかで四捨五入などで丸めるか、打ち切らなければならないのです。

1/10(10進数)
        ↓
0.1(10進数)

        ↓

0.000(1100)(2進数、最後の1100が無限に続く)

        ↓

doubleだと途中で打ち切られ0.1000000000000000055511151231257827021181583404541015625になる

数字はコンピュータ上では2進数になります。2の倍数とその合計で表す2進数では、10進数できっちり表せる小数でもそのまま表せないものがほとんどです。正確な計算が必要なら、二進化十進数(BCDBinary-coded decimal)のクラスや、有理数のまま計算できるクラスなどを使う必要があるかもしれません。

なお、丸め誤差/打切り誤差は2進数だけではありません。例えば、1/310進数で0.333…ですが、有限の桁で表すなら無限に続く3をどこかで終わらせます。そして、1/3とどこかの桁で終わった0.333…は違うものです。これと理屈は同じで、コンピュータは2進数がベースなだけです。

6-2.桁落ち

近い数字同士を引き算した結果、数字の有効数字(有効桁数)が少なくなることを桁落ちと言います。誤差を考慮した計算では、このような計算が途中でされないようにしなければなりません。

以下の例では2つの数字両方で有効数字は15桁で、小数部15桁目に1だけ差があります。d1d2を引き算すると10進数では0.000000000000001で、正規化すると1e-15となり、有効数字は15桁から1桁へ一気に減ります。

実際のdoubleでの計算結果は、2進数への変換誤差のため1e-15ちょうどにはならず、ごくわずかに小さな数字です。そして、計算結果の有効数字は16桁あるように見えますが、計算に使ったdoubleの有効数字より小さい数字なので、計算上で意味がある数字ではありません。

6-2-1.桁落ちは誤差を考慮した計算では致命的

桁落ちが問題なのは、不確かな数字が計算途中に出現することにより、以後の計算結果に大きな影響を与えるからです。

例えば、途中の計算結果で1.000e-3という数字が出たとして、仮数の0の部分が本当に0か、桁落ちによる正規化で埋められた0かはわかりません。もし、計算上でこの数字を使うなら、この不確かな0がずっと付きまとうのです。

doubleで計算をすれば何らかの数字は出て来ます。でも、その数字にどれだけ意味があるかの観点は、プログラマが強く意識すべきことです。そして、桁落ちも2進数特有の事象ではないことは知っておきましょう。

6-3.情報落ち

情報落ちとは、絶対値が大きく違う数字同士で計算をすると、絶対値が小さな方の数字がなくなってしまう現象です。桁落ちよりは計算誤差への影響は少ないですが、できるだけ避けるべきものなのは変わりません。

例えば、以下の足し算では、d1d2ともに15桁分の有効桁数があります。この二つの数字を足し合わせても、紙で計算したとおりの123456789012345.123456789012345とはならず、123456789012345.12になりました。ということは、d2の方の小数点第3位以下の数字がなくなっていますよね。

こうなる理由は、浮動小数点数での仮数には桁数の制限があるからです。doubleの仮数には、この例での紙で計算した場合の30桁におよぶ有効数字を表せる桁数がありません。ですから、1.2345678901234512までが、この計算結果をdoubleの仮数で表現できる限界だったということですね。

6-3-1.情報落ちには計算順序が影響する

情報落ちが問題になるのは、大きな数字と小さな数字を連続して計算する時です。以下の例では、前者では0.001×10=0.01が計算結果に(誤差は出つつも)反映されていますが、後者では未反映です。基本的には、前者のように小さな値をまとめて先に計算して、その後に大きな値と計算して回避します。

6-4.BigDecimalによる正確な計算の例

正確な数字の表現や計算を行うなら、Javaではjava.math.BigDecimalを使います。ここまでに例として挙げてきた誤差が出る計算も、正確に計算できます。ただ、計算速度はdouble/floatを使う場合よりもどうしても遅くなりますので、要件に応じて使い分けましょう。

正確な計算に必要なスケール(小数点以下の桁数)は自動的に判断されますが、任意のスケールや丸め方法を指定することもできます。特に、割り算をする時はどこまでのスケールが必要か指定しないと、割り切ることが出来ない場合などに計算を終えられず、エラーになります。

なお、doublefloatなどの浮動小数点のプリミティブ型を使ってBigDecimalを生成すると、以下のように浮動小数点数が実際に持っている数字になってしまいます。BigDecimalで正確に数字を表現したいなら、Stringのコンストラクタを使うのが無難です。


7.まとめ

この記事では、Javadoubleをお伝えしてきました。Javadouble64ビットの浮動小数点数で、大きな整数から小さな小数点以下の数字まで、大変広い範囲の値を表現できます。doubleJavaで小数点以下の数字を使う時の標準ともいえるデータ型で、詳細は国際規格のIEEE 754で決められているものです。

Javaでは、doubleとして扱えるものにはプリミティブ型のdoubleと、クラス(参照型)としてのDoubleの二種類があり、それらは違うものであることには注意しましょう。ただ、オートボクシングにより違いが見えにくくはなっています。

doubleは、コンピュータで2進数を扱うことの限界・注意点がよくわかるデータ型でもあります。それらの注意点はどのプログラミング言語でも同じですので、Javadoubleの使い方をしっかり学んでおけば、他のプログラミング言語でもそう大きな違いなく使えるでしょう。

特に有効数字や誤差の概念、計算上で発生する問題への対応方法を身に着けておけば、いざという時に役に立つかもしれません。計算は苦手だなぁという方も、考え方だけはしっかり覚えておくと、違いの分かるプログラマとして一目置かれるかもしれませんよ。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

8/28(水)開催決定!
【テックジム×ENGINEER.CLUB】ゼロからはじめるPythonプログラミング入門講座

プログラミングは初めてだけどPythonから始めてみたいという方のために、無料のハンズオン開発講座をテックジム×ENGINEER.CLUBで共同開催することになりました。開催日時は以下の通りです。

  • 8月28日(水)19時〜21時 東京開催

本講座で学んでいただく「TechGYM方式」とは、基礎知識なしでも座学なしでプログラミングに専念できるように設計されたプログラミングのカリキュラムメソッドです。「まるで魔法にかかったようにプログラミンスキルが習得できる」と評判の本講座をぜひ一度体験してみてください。

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって遙かに高い水準の成果を出し、関わる全ての人々に感動を与え続ける集団でありたいと考えています。

高い水準で仕事を進めていただくためにも、弊社では次のような環境を用意しています。

  • 定年までIT業界で働くためのスキル(技術力、人間力)が身につく支援
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な人事評価制度
  • 平均残業時間17時間!毎週の稼動確認を徹底しているから実現できる働きやすい環境

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。