Menu
Coddy logo textTech

ブール値(真偽値)とは?

プログラミングにおけるブール値とは、真(true)と偽(false)のちょうど2つの値だけを持つデータ型です。プログラムは age >= 18 のような比較からブール値を得て、if 文やループの条件で、どのコードを実行するかを決めるのに使います。

執筆: Kevin Spektor, 共同創業者、CTO

更新日: 2026年9月24日

プログラムが行う判断は、すべて答えが2つしかない問いに行き着きます。パスワードは正しいか、カートは空か、タイマーはゼロになったか。ブール値は、その答えを持つデータ型です。名前は、1847年と1854年に出版した本で真と偽の値の代数を記述した、イギリスの数学者ジョージ・ブールに由来します。

ブール値はどこから来るか

True や False を直接書くことはあまりありません。ブール値の多くは比較から生まれます。比較は2つの値について問いを立て、ブール値で答えます。

演算子意味例結果
==等しい3 == 3True
!=等しくない3 != 3False
<, >より小さい、より大きい2 < 5True
<=, >=以下、以上17 >= 18False

ブール値もほかの値と同じように変数に保存でき、ほかのブール値と組み合わせられます。

False
<class 'bool'>
False
True

ブール値の組み合わせ: and、or、not

3つの論理演算子で、小さな条件から大きな条件を組み立てます。and は両辺が真のときだけ真になります。or は少なくとも片方が真なら真になります。not は1つの値を反転させます。

aba and ba or bnot a
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue

Pythonではこれらの演算子を英単語で書きます。C、Java、JavaScriptでは記号を使い、andは &&、orは ||、notは ! です。4つの言語はどれも、答えが決まった時点で評価をやめます。そのため a and b では、a が偽なら右辺は一切チェックされません。これを短絡評価と呼びます。詳しくはPythonの論理演算子ガイドで説明しています。

ブール値がプログラムの流れを決める

if 文は、条件が真のときだけそのブロックを実行します。while ループは、条件が真である間ブロックを繰り返すので、どのループも、毎回の実行前にチェックし直されるブール値で動いています。この繰り返しを反復と呼びます。

Hot day
Countdown: 3
Countdown: 2
Countdown: 1

count が0になると条件 count > 0 は False になり、ループは終わります。条件が決して偽にならなければ、ループは永遠に続きます。

1と0としてのブール値

ブール値に必要な情報は1ビットだけです。真なら1、偽なら0です。実際には、言語はブール値を少なくとも丸ごと1バイトに保存します。バイトが、独自のアドレスを持つ最小のメモリ単位だからです。Cでは、<stdbool.h> の bool はgccとclangで1バイトを使います。何百万ものフラグが必要なプログラムは、ビット演算子を使って1バイトに8個ずつ詰め込みます。

ブール値が数でもあるかどうかは、言語によって意見が分かれます。Pythonでは bool は int のサブクラスなので、True は1、False は0と等しくなります。おかげで数を数えるのが簡単です。

True True
2
3 correct

JavaScriptでも true + true は2になります。CにはC99までブール型がなく、今でも0以外の数はすべて真として扱われます。Javaは厳格で、if (1) はコンパイルできません。Javaの条件は boolean でなければならないからです。

truthyな値とfalsyな値

PythonとJavaScriptでは、True と False だけでなく、どんな値でも条件として使えます。偽とみなされる値をfalsy、それ以外をtruthyと呼びます。

0 -> False
42 -> True
'' -> False
'False' -> True
[] -> False
[0] -> True
None -> False

Pythonでは、ゼロ、空の文字列、空のコレクション、None がfalsyです。文字列 "False" はtruthyです。5文字が入った文字列だからです。JavaScriptには独自のfalsyな値があり、false、0、""、null、undefined、NaN などがそうです。JavaScriptでは空の配列 [] はtruthyです。規則の全体はJavaScriptのtruthyとfalsyを参照してください。

よくある間違い

True と比較する。 if is_ready == True: でも動きますが、if is_ready: で同じことが短く書けます。偽の場合は if not is_ready: と書きます。

テキストをブール値として扱う。 ユーザー、ファイル、フォームからの入力は文字列で届くので、bool("false") は True になります。代わりにテキストを比較しましょう。answer == "yes" のようにです。

大文字と小文字の間違い。 Pythonは True と False、JavaScript、Java、Cは true と false と書きます。Pythonで true と書くと NameError: name 'true' is not defined になります。

あいまいな名前。 ブール値には is_valid、has_access、can_edit のように、イエスかノーで答える問いの形の名前を付けましょう。そうすると if user.can_edit: のように、条件が文として読めます。

次に読むもの

ループが何回実行されるかはブール値が決めるので、次に読むなら反復とは何かが自然です。ビットとは何かでは、あらゆる真と偽の下にある0と1を見られます。Pythonでの詳細は数値とブール値を読み、Pythonコースで条件を練習しましょう。

よくある質問

ブール値の例を教えてください
比較 5 > 3 はブール式で、その値は True です。is_logged_in = False のような変数はブール値を持っています。図書館の蔵書検索で cats AND dogs と入力するのも、同じ論理を使ったブール検索です。
ブール値は1と0のことですか?
ブール値には2つの値があり、多くの言語では真を1、偽を0で表します。Pythonでは True == 1 は True で、Cでは0以外のどんな数も真として扱われます。Javaは両者を区別していて、Javaの boolean は数として一切使えません。
ブール値はイエスかノーかだけですか?
はい。ブール値は2つの値のうちちょうど1つを持ち、イエスかノー、オンかオフ、真か偽と読めます。保留中、支払い済み、返金済みの注文のように3つ以上の状態があるものには、ブール値をいくつも使うのではなく、文字列や列挙型を使いましょう。
Pythonのブール値(bool型)とは何ですか?
Pythonのブール型は bool で、2つの値は先頭が大文字の True と False です。bool は int のサブクラスなので、算術では True は1として振る舞います。bool() 関数は、Pythonの真偽の規則に従って、どんな値も True か False に変換します。
ブール検索とは何ですか?
ブール検索は、キーワードを演算子AND、OR、NOTで組み合わせて、結果を絞り込んだり広げたりする検索方法です。python AND tutorial は両方の語を含むもの、python OR java はどちらかを含むもの、python NOT snake は2つ目の語を含むページを除いたものを返します。図書館の蔵書検索や論文データベースは直接対応していて、Googleでは OR と、NOTの代わりにマイナス記号が使えます。
Coddy programming languages illustration

Coddyでコードを学ぼう

始める