Wikibooks
jawikibooks
https://ja.wikibooks.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
MediaWiki 1.47.0-wmf.10
first-letter
メディア
特別
トーク
利用者
利用者・トーク
Wikibooks
Wikibooks・トーク
ファイル
ファイル・トーク
MediaWiki
MediaWiki・トーク
テンプレート
テンプレート・トーク
ヘルプ
ヘルプ・トーク
カテゴリ
カテゴリ・トーク
Transwiki
Transwiki‐ノート
TimedText
TimedText talk
モジュール
モジュール・トーク
Event
Event talk
植物学
0
43
301513
267003
2026-07-13T09:51:21Z
AkiR27User
90873
/* 目次 */ [[植物学/植物の働き]]追加
301513
wikitext
text/x-wiki
*[[生物学]] > 植物学
== 目次 ==
* [[/序章|序章]]
* [[/基礎植物学|基礎植物学]] {{Hlist|class="hlist hlist-comma"
| [[/基礎植物学#植物の基本構造と機能|植物の基本構造と機能]]
| [[/基礎植物学#植物体の主要器官|植物体の主要器官]]
| [[/基礎植物学#植物の生理学|植物の生理学]]
| [[/基礎植物学#植物の成長と発達|植物の成長と発達]]
| [[/植物の働き|植物の働き]]
}}
* [[/植物の多様性|植物の多様性]] {{Hlist|class="hlist hlist-comma"
| [[/植物の多様性#植物の分類と系統|植物の分類と系統]]
| [[/植物の多様性#藻類から被子植物までの多様性|藻類から被子植物までの多様性]]
}}
* [[/環境と植物|環境と植物]]:植物と環境の相互作用、生態系における植物の役割、植物の分布と生態について学びます。
* [[/植物の応用|植物の応用]]:農業、医薬品開発、バイオテクノロジーなど、植物学の応用分野について解説します。
* [[/研究と実験|研究と実験]]:植物学研究の基本手法、実験デザイン、フィールドワークの方法を紹介します。
== 下位分野 ==
* [[植物分類学]]
* [[植物生理学]]
* [[植物生態学]]
* [[植物育種学]]
* [[植物遺伝学]]
== 関連学問分野 ==
* [[農学]]
* [[園芸学]]
* [[草地学]]
== カテゴリツリー ==
{{#カテゴリツリー:植物学}}
[[Category:生物学|しよくふつかく]]
[[Category:植物学|*]]
3w7i3k1k37dhx2qn0hfdwl2e4p3bhm5
高等学校数学I/2次関数
0
605
301509
301266
2026-07-13T09:19:39Z
三田レンジ
90031
/* 解の公式 */
301509
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校数学|高等学校数学I|pagename=2次関数|frame=1|small=1}}
== 関数 ==
=== f(x) ===
一般に、<math>y</math>が<math>x </math>の関数である場合に、 <math>f</math> などの文字を用いて、
:<math> y=f(x) </math>
と書き表すことができる。
また、x の関数 y=f(x) のことを単に f(x) と省略して言う場合もよくある。
関数 y=f(x) において、変数xの値をaにした場合の関数の値を f(a) で表す。
つまり、関数f(x) の x=a の場合でのyの値が f(a) である。ちなみに関数のfとは
英語で関数を意味するfunctionの頭文字
からとっている。2つ以上関数を扱う際にはfの次のgやhを用いることが多い。
;補足
<Math>f(x)</Math>のfは「入力値に対してfという操作をする」という意味の記号である。
Aを入力したらBを返す、という操作fを<Math>f: A \rightarrow B</Math>のように表す。このとき、fという操作にAを入力したらBが出力されるので、これを<Math>f(A)=B</Math>というふうに表すことにするとわかりやすいであろう。AとBが数であるとき、<Math>f(A)</Math>は上の等式より数である。つまり、fは操作を、<Math>f(x)</Math>は操作fにある数xを入力したときの出力値を表すので注意しよう。fは数ではなく操作を表すので、<Math>\{f(x)\}^2</Math>と<Math>f^2(x)</Math>は当然異なる。(なお、右側は<Math>f(f(x))</Math>を表す。詳しくは数Ⅲで習う。)
「AとBが数であるとき」という文からわかるように、AとBは数でなくても良い。そのような場合は大学で詳しく扱う。
=== 象限 ===
[[ファイル:Quadrant_japanese.svg|サムネイル|326x326ピクセル]]
xy座標で第1{{ruby|象限|しょうげん}}から第4象限までの位置を、図のように定義する。
位置と象限の番号の対応の覚え方は、x軸の正方向を基準に、反時計周り(左回り)に番号が大きくなっていくと覚えればいい。
[[ファイル:Quadrant_and_xy.svg|左|サムネイル|326x326ピクセル]]
それぞれの象限と、X、Yの値との関係は、左図のとおり。 {{-}}
== 2次関数 ==
=== 定義 ===
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''2次関数の定義'''
|-
|style="padding:5px"|
定数 <math>a\neq 0</math> と、定数 <math>b</math>, <math>c</math>を用いて
: <math>y=ax^2+bx+c</math>
と <math>x</math> の二次式で表す事ができる関数を変数 <math>x</math> の'''2次関数'''という。
|}
==== 具体例 ====
以下の関数はいずれも2次関数である。
* <math>y=3x^2+4x+1</math> (<math>a=3</math>、<math>b=4</math>、<math>c=1</math>の場合に相当)<!--オーソドックスな例-->
* <math>y=x^2-4x</math> (<math>a=1</math>、<math>b=-4</math>、<math>c=0</math>の場合に相当) <!--係数が1である為明示されてない例(二次の項)と負の係数の例(一時の項)と係数が0の場合の例(0次の項)-->
* <math>y=-x^2</math> (<math>a=-1</math>、<math>b=0</math>、<math>c=0</math>の場合に相当)<!--1次と0次が両方0の例-->
一方以下の関数は2次関数では'''ない'''
* <math>y=4x+1</math>
読者はこれを当然と思うかもしれないが、上の式は
: <math>y=0x^2+4x+1</math>
と表記することもできる。しかし、これは <math>x</math>の 二次式ではないので2次関数ではない。
そのために、2次関数の定義において'''<math>a\neq 0</math>でなければならない'''というルールを設けたのである。
{{-}}
== 2次関数のグラフ ==
=== y=ax² のグラフ ===
まず、もっとも簡単な<math>y=ax^2</math>のグラフは<math>a>0</math> のとき図1のようになる。(図では<math>a=1</math>の場合を表記)。また、<math>a<0</math> のときは図1 のグラフを上下さかさまにしたものになる。
:[[Image:Qfunction.png|thumb|250px|図1 (y=x<sup>2</sup>のグラフ)]]
<math>a>0</math> のとき2次関数 <math>y</math> は '''下に{{ruby|凸|とつ}}''' といい、<math>a<0</math> のとき '''上に凸''' という。また、2次関数のグラフを'''放物線'''(抛物線)という。
{{-}}
=== y=ax² + q のグラフ ===
[[File:Y=2x^2+4.svg|thumb|400px]]
2つの2次関数
:y = 2''x''<sup>2</sup> (1)
:y = 2''x''<sup>2</sup>+4 (2)
のグラフを書くために値を求めると、下記の表のようになる。
{| class="wikitable" style="text-align:center;"
! ''x''
| … || -3 || -2 || -1 || 0 || 1 || 2 || 3 || …
|----
! 2''x<sup>2</sup>''
|…|| 18 || 8 || 2 || 0 || 2 || 8 || 18 ||…
|----
! 2''x<sup>2</sup>''+4
|…|| 22 || 12 || 6 || 4 || 6 || 12 || 22 ||…
|}
表を見ると、(2) 2''x<sup>2</sup>''+4 の値は、つねに (1) 2x''<sup>2</sup>'' の値よりも4だけ大きい。
したがって(2) 2''x<sup>2</sup>''+4 のグラフは、 (1) 2x''<sup>2</sup>'' のグラフをy軸方向に4だけ平行移動した放物線であり、
:軸がy軸
:頂点が 点(0, 4)
の放物線である。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|
|-
|style="padding:5px"|
: 一般に y=ax<sup>2</sup>+q のグラフは、
:y=ax<sup>2</sup> のグラフをy軸方向に q だけ平行移動した放物線であり、
::'''軸はy軸'''、 '''頂点は 点 (0, q)''' である。
|}
{{-}}
=== y=a(x-p)² のグラフ ===
[[File:Y=2(x-3)^2.svg|thumb|400px]]
y=2(''x''-3)<sup>2</sup> のグラフは、 2x''<sup>2</sup>'' のグラフをx軸方向に3だけ平行移動した放物線であり、
:軸は 直線 x=3
:頂点は 点(3, 0)
の放物線である。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|
|-
|style="padding:5px"|
: 一般に y=a(x-p)<sup>2</sup> のグラフは、
:y=ax<sup>2</sup> のグラフをx軸方向に p だけ平行移動した放物線であり、
::'''軸は 直線 x=p''' 、 ''' 頂点は 点 (p, 0) '''
である。
|}
{{-}}
=== y=a(x-p)² +q のグラフ ===
[[File:Y=2(x-3)^2+4.svg|thumb|400px]]
y=2(''x''-3)<sup>2</sup>+4 のグラフは、 y=2(''x''-3)<sup>2</sup> のグラフをy軸方向に4だけ平行移動した放物線である。
そして、y=2(''x''-3)<sup>2</sup> のグラフは y=2x''<sup>2</sup>'' のグラフをx軸方向に3だけ平行移動した放物線であったので、つまり
y=2(''x''-3)<sup>2</sup>+4 のグラフは、y=2x''<sup>2</sup>'' のグラフを x軸方向に3, y軸方向に4, 平行移動した放物線である。
よって、
:軸は直線 x=3
:頂点は 点(3, 4)
である。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|
|-
|style="padding:5px"|
: 一般に y=a(x-p)<sup>2</sup>+q のグラフは、
:y=ax<sup>2</sup> のグラフをx軸方向に p, y軸方向にq , 平行移動した放物線であり、
::'''軸は 直線 x=p''' 、 ''' 頂点は 点 (p, q) '''
である。
|}
{{-}}
=== y=ax² + bx +c のグラフ ===
==== 一般形と標準形 ====
本節では2次関数の一般形と標準形について学ぶ。この知識は後で2次関数をグラフで表す際に役立つ。
先ほど現れた
: <math>y=ax^2+bx+c</math>
という形の式 (<math>a\neq 0</math>) を'''2次関数の一般形'''といい、
: <math>y=a(x-p)^2+q</math>
という式を'''2次関数の標準形'''という。
(上で、<math>a\neq 0</math>、<math>b</math>、<math>c</math>、<math>p</math>、<math>q</math>は定数で、<math>x</math>は変数であるものとする。)
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|'''一般形と標準形の関係'''
|-
|style="padding:5px"|
;定理
:2次関数の一般形は必ず2次関数の標準形に変形することができ、逆に2次関数の標準形は必ず2次関数の一般形に変形することができる。
|}
一般形で表記されている2次関数を標準形で表記する事を'''平方完成'''という。
後述するように、標準形は2次関数をグラフで表す際に用いる。
;証明
標準形
: <math>y=a(x-p)^2+q</math>
で表記されている2次関数の右辺を展開すると、
: <math>y= ax^2 -2apx + (ap^2+q)</math>
となるので、
: <math>b=-2ap, \quad c=ap^2+q</math>
とすれば一般形になる。
逆に一般形
: <math>y=ax^2+bx+c</math>
で表記されている2次関数は以下の手順で標準形に変換できる(この変形手法を'''平方完成'''という)。
:<math>y=ax^2+bx+c</math>
:<math>=a\left(x^2+\frac{b}{a}x\right)+c</math>
:<math>=a\left\{x^2+\frac{b}{a}x+\left(\frac{b}{2a}\right)^2-\left(\frac{b}{2a}\right)^2\right\}+c</math>
:<math>=a\left\{x^2+\frac{b}{a}x+\left(\frac{b}{2a}\right)^2\right\}-\frac{b^2}{4a}+c</math>
:<math>=a\left(x+\frac{b}{2a}\right)^2-\frac{b^2-4ac}{4a}</math>
ここで、
:<math>p=-\frac{b}{2a},\quad q=-\frac{b^2-4ac}{4a}</math>
とおくと、
:<math>y=a(x-p)^2+q</math>
となり標準形で表されたことになる。
;例題
:次の2次関数が一般形ならば標準形に、標準形ならば一般形にせよ。
:#<math>y=2(x+4)^2+4</math>
:#<math>y=4x^2+12x+9</math>
:#<math>y=x^2+5x</math>
;解
:#<math>y=2x^2+16x+36</math>
:#<math>y=4\left(x+\frac{3}{2}\right)^2</math>
:#<math>y=\left(x+\frac{5}{2}\right)^2-\frac{25}{4}</math>
{{コラム|基本形|
数学Cで扱うが、放物線の定義<sup>※</sup>から与えられる放物線の方程式は
:<math>y^2=4px</math>
という形である。
これを放物線の'''基本形'''や'''準線焦点形'''、'''準標準形'''と呼ぶ。
※放物線の定義は「二次関数のグラフ」ではなく、「定点(=焦点)と定直線(=準線)からの距離が等しい点の集合」である。
この式は<math>x=Y, y=X,</math> とおいてみれば
:<math>X^2=4pY</math>
すなわち
:<math>Y=\frac{1}{4p}X^2</math>
であり、
:<math>y=ax^2</math>
というタイプの放物線と同じであることがわかる。
ただし、この放物線は凸である方向が上下方向ではなく左右方向である。
}}
=== 一般の2次関数のグラフ ===
一般の2次関数をグラフで表現してみよう。 前述のように2次関数は平方完成の手順を踏む事により必ず標準形で表記可能なので、2次関数<math>y=ax^2+bx+c</math>を標準形<math>y=a(x-p)^2+q</math>に変換する。
ここで
:<math>
p=-\frac{b}{2a},\quad q=-\frac{b^2-4ac}{4a}
</math>
なので、
この標準形のグラフは<math>y=ax^2</math> のグラフを <math>x</math> 軸方向に <math>p</math>, <math>y</math> 軸方向に <math>q</math> 平行移動させたものと考えることができる。よって以下の事実が結論付けられる。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|'''2次関数のグラフ'''
|-
|style="padding:5px"|
;定理
:2次関数 <math>y=ax^2+bx+c</math> のグラフは軸が<math>x=-\frac{b}{2a}</math> , 頂点が <math>\left(-\frac{b}{2a},-\frac{b^2-4ac}{4a}\right)</math> であるような放物線である。
|}
{{コラム|グラフの平行移動|
2次関数に限らず、一般に関数 y=f(x) のグラフをy軸の正の方向に q だけ平行移動したグラフは
:関数 '''y = f(x) +q'''
のグラフになる。
また、関数 y=f(x) のグラフをx軸の正の方向に p だけ平行移動したグラフは
:関数 '''y = f(x-p)'''
のグラフになる。
よって、関数 y=f(x) のグラフをx軸の正の方向に p 、y軸の正の方向にq だけ平行移動したグラフは
:関数 '''y = f(x-p) +q'''
のグラフになる。
}}
{{コラム|グラフの対称移動|
2次関数に限らず、一般に関数 y=f(x) のグラフをx軸に関して対称に移動したグラフは
:関数 '''y = -f(x)'''
のグラフになる。
また、関数 y=f(x) のグラフをy軸に関して対称に移動したグラフは
:関数 '''y = f(-x)'''
のグラフになる。
よって、関数 y=f(x) のグラフを原点に関して対称に移動したグラフは
:関数 '''y = - f(-x)'''
のグラフになる。
}}
;例題
:2次関数 <math>y=\frac{1}{2}x^2+3x+\frac{1}{2}</math> のグラフを書け。
;解
::<math>\begin{matrix}
y& =& \cfrac{1}{2}x^2+3x+\cfrac{1}{2} \\[10pt]
{} & =& \cfrac{1}{2}(x+3)^2-4
\end{matrix}</math>[[画像:二次関数-例題1.png]]
:ゆえに、求めるグラフは軸 <math>x=-3</math>、頂点 <math>(-3,-4)</math> の下に凸な放物線である。
;例題
:2次関数 <math>y=4x^2+20x+4</math> のグラフは <math>y=4x^2</math> のグラフをどのように平行移動させたものか。
;解
::<math>\begin{matrix}
y&=&4x^2+20x+4\\
{}&=&4\left(x+\frac{5}{2}\right)^2-21
\end{matrix}</math>
:であるので、<math>y=4x^2</math> のグラフを <math>x</math> 軸方向に <math>-\frac{5}{2}</math>、<math>y</math> 軸方向に -21 移動させたものである。
=== 2次関数のグラフと二次方程式 ===
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸に共有点があるとき、その共有点の<math>y</math>座標は0であるから、共有点の<math>x</math>座標は、二次方程式<math>ax^2+bx+c=0</math>の実数解である。
<br>
* 問題例
** 問題
次の2次関数のグラフと<math>x</math>軸の共有点の座標を求めよ。<br>
(i)
:<math>y=x^2-2x-1</math>
(ii)
:<math>y=-4x^2-4x-1</math>
** 解答
(i) 2次方程式<math>x^2-2x-1=0</math>を解くと
:<math>x = \frac {-(-2) \pm \sqrt{(-2)^2 - 4 \times 1 \times (-1)}}{2 \times 1} = \frac {2 \pm \sqrt{8}}{2} = \frac {2 \pm 2 \sqrt{2}}{2} = 1 \pm \sqrt{2}</math>
よって、共有点の座標は
:<math>
\left(1+ \sqrt{2}\ ,\ 0 \right)\ ,\ \left(1- \sqrt{2}\ ,\ 0 \right)
</math>
(ii) 2次方程式<math>-4x^2-4x-1=0</math>を解くと
:<math>4x^2+4x+1=0</math>
:<math>(2x+1)^2=0</math>
:<math>x=- \frac {1}{2}</math>
よって、共有点の座標は
:<math>
\left(- \frac {1}{2}\ ,\ 0 \right)
</math>
(ii)のグラフはただ1点<math>\left(- \frac {1}{2}\ ,\ 0 \right)</math>で共有し、共有点の<math>x</math>座標は二次方程式<math>-4x^2-4x-1=0</math>の重解である。このようなとき、2次関数のグラフは<math>x</math>軸に'''接する'''といい、その共有点を'''接点'''という。
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸との共有点の<math>x</math>座標は、二次方程式<math>ax^2+bx+c=0</math>の実数解で、実数解の個数は<math>D=b^2-4ac</math>の符号によって決まる。
<math>b^2-4ac</math> のことを 2次方程式 <math>ax^2+bx+c=0</math>の '''判別式''' という。
:※ 「D」は「判別式」を意味する discriminant の頭文字である。
{| class="wikitable"
|+
! Dの符号 !! D>0 !! D=0 !! D<0
|-
! a > 0 のとき
| [[File:Number of real solutions of quadratic equation D)0 a)0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D=0 a)0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D(0 a)0.svg|center|150px]]
|-
! a < 0 のとき
| [[File:Number of real solutions of quadratic equation D)0 a(0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D=0 a(0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D(0 a(0.svg|center|150px]]
|-
! 共有点の個数
| <center>2個</center> || <center>1個</center> || <center>0個</center>
|-
|}
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|'''2次関数のグラフと<math>x</math>軸の位置関係'''
|-
|style="padding:5px"|
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸の位置関係について、<math>D=b^2-4ac</math>とするとき
:::<math>D>0 \quad \Longleftrightarrow \quad </math> 異なる2点で交わる
:::<math>D=0 \quad \Longleftrightarrow \quad </math> 1点で接する
:::<math>D<0 \quad \Longleftrightarrow \quad </math> 共有点をもたない
|}
;証明
x軸が直線 <math>y=0</math>に一致することを利用する。
<math>ax^2+bx+c=0</math>の解は解の公式より
:<math>x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}</math>
ここで<math>b^2-4ac=D</math>より
:<math>x=\frac{-b\pm\sqrt{D}}{2a}</math>
これは
:(1)<math>D>0</math>のとき
::実数<math>\sqrt{D}</math>が存在して、異なる2つの実数値をとる。
::よって直線<math>y=0</math>と放物線<math>y=ax^2+bx+c</math>の共有点は2つであり、
::<math>y=ax^2+bx+c</math>のグラフはx軸と異なる2点で交わる。
:(2)<math>D=0</math>のとき
::<math>\sqrt{D}=0</math>より、ただ一つの実数値<math>-\frac{b}{2a}</math>をとる('''重解''')。
::よって直線<math>y=0</math>と放物線<math>y=ax^2+bx+c</math>の共有点は2つであり、
::<math>y=ax^2+bx+c</math>のグラフはx軸と異なる2点で交わる。
:(3)<math>D<0</math>のとき、
::<math>\sqrt{D}</math>が実数にならないので、実数にならない。
::よって直線<math>y=0</math>と放物線<math>ax^2+bx+c</math>の共有点は平面上になく、
::<math>y=ax^2+bx+c</math>のグラフはx軸とは交わらない。
** 問題
次の2次関数のグラフと<math>x</math>軸との共有点の個数を求めよ。
(I)
:<math>
y=3x^2-x+3
</math>
(II)
:<math>
y=-2x^2-3x+5
</math>
(III)
:<math>
y=x^2-2 \sqrt{3} x+3
</math>
** 解答
(I)
:<math>
D=(-1)^2-4 \times 3 \times 3 =-35<0
</math>
だから、<math>x</math>軸との共有点はなし。<br>
(II)
:<math>
D=(-3)^2-4 \times (-2) \times 5 =49>0
</math>
だから、<math>x</math>軸との共有点は2個。<br>
(III)
:<math>
D=(2 \sqrt{3})^2-4 \times 1 \times 3 =0
</math>
だから、<math>x</math>軸との共有点は1個。
== 定義域と値域 ==
=== 定義域と値域 ===
2次関数に限らず、一般に関数<math>y=f(x)</math>に於いて、
変数x のとりうる値の範囲のことを'''{{ruby|定義域|ていぎいき}}'''(domain)という。
また、xの値に対応して y の値のとりうる範囲のことを'''{{ruby|値域|ちいき}}'''(range)という。
多くの場合、値域は定義域の影響を受けて変化する。
;例1
:関数 <math>y=x</math> の定義域を <math>x \geqq 1</math> とした場合、
:関数 <math>y=x</math>の値域は<math>y \geqq 1</math> となる。
この例のように、定義域や値域を表す場合、不等式で表すことが多い。
;例2
:関数 <math>y=2x</math>の定義域を <math>1 \leqq x \leqq 3</math> とした場合、
:関数 <math>y=2x</math> の値域は <math>2 \leqq y \leqq 6</math> となる。
略記法として、式の後ろに括弧を用いる
:<math>y=2x \; ( 1 \leqq x \leqq 3)</math>
のような表し方もある。
つまり、一般に定義域を数式ではっきりと示す必要がある場合には
:<math> y=f(x) \; ( a\leqq x \leqq b ) </math>
のように示す。
特に定義域が指定されない場合は、可能な限り定義域を広くとるのが普通である。
:関数 <math> y=x</math> の定義域は特に定義域が指定されていない限り、実数全体である。
:関数 <math> y=\frac{1}{x} </math> の定義域には、<math>x=0</math> を含めることはできない。そのため、特に定義域が指定されていない場合、 関数 <math> y=\frac{1}{x} </math> の定義域は、0をのぞく実数全体である。
但し、定義域が指定されない場合は定義域を明示する必要はない。
;発展:区間
※数学Ⅲの内容であるが、便利なので扱う。
実数<math>a, b(a<b)</math>に対して、
:「a以上b以下」という区間を'''{{ruby|閉|へい}}区間'''といい、<math>[a, b]</math>と書く。
:「a以上b未満」「a超過b以下」という区間を'''{{ruby|半開|はんかい}}区間'''といい、それぞれ<math>[a, b), (a, b]</math>と書く。
:「a超過b未満」という区間を'''{{ruby|開|かい}}区間'''といい、<math>(a, b)</math>と書く。
:開区間のうち、実数全体を表す区間を特に'''全区間'''といい、<math>(-\infty, \infty)</math>と書く。
*注意:a, bに∞を含むとき、∞は実数ではないので'''∞の隣の括弧に角括弧[]を用いてはならない'''。
開区間は座標やベクトルなどと区別するため、「(開)区間<math>(a, b)</math>」のように書くのが安牌である。
区間を文字で置くときは、英語「Inrerval」の頭文字をとって<math>I</math>と置くことが多い。
区間は全区間の部分集合とみることができるので、[[高等学校数学I/集合と論理|集合の記法]]で表すことができる。
具体的には<math>x</math>が区間<math>I</math>の中を動くとき、<math>x</math>が集合<math>I</math>の要素であると考えて<math>x \in I</math>と書くことができる。
例えば、<math>y=\frac{1}{x-1}</math>の定義域は<math>x \neq 1</math>すなわち<math>x \in (-\infty, 0) \lor (0, \infty)</math>または<math>x \in \mathbb{R} \setminus \{0\} </math>と書くことができる。
この例では集合記法の方が煩雑であるが、集合記法を用いることで簡便となる場合も存在する。
また、集合記法は定積分などとの相性が良い。
=== 最大値と最小値 ===
先程の例
:<math>y=2x \; (x \in [1, 3])</math>
では、与えられた定義域で、この関数の値のとりうる最大の値は 6 である。
このように、ある関数が、与えられた条件下でもつ最大の値のことを、その関数の'''最大値'''(maximum)という。
先程習った「値域」という言葉を使うなら、「最大値」とは値域のうち最大の値のことである。
つまり、関数 <math>y=2x \; (x \in [1, 3])</math>の最大値は 6 である。
これを<math>\max_{1 \leqq x \leqq 3} \{ 2x \}=6</math>のように書いたりする。
定義域を制限しなければ、関数<math>y=2x</math>はxを大きくすると限りなく大きくなり続けるので、最大値は無い。
同様に、ある関数が、与えられた条件下でもつ最小の値のことを、その関数の'''最小値'''(minimum)という。
関数 <math>y=2x \; (x \in [1, 3])</math>の最小値は 2 である。
これを<math>\min_{1 \leqq x \leqq 3} \{ 2x \}=2</math>のように書いたりする。
;例1
:関数 <math>y=-x+5 \; (x \in [1, 8])</math>の値域は <math>y \in [-3, 4]</math>なので、
:最大値は 4 , 最小値は -3 である。
;例2
: <math>y=2x (x \in (1, 3])</math>の値域は<math>y \in (2, 6]</math>であるが、
:xは1にならないのでyも2にならず、yの最小値は存在しない。
:この問題でのyの最大値は6である。
== 2次関数の値の変化 ==
=== 2次関数の最大値・最小値 ===
[[Image:Qfunction.png|thumb|right|250px|図1 (y=x<sup>2</sup>のグラフ)]]
定義域が実数全体である2次関数<math>y=ax^2+bx+c</math> では、右図のように、aの正負によって最小値(a>0 の場合)、または最大値がある(a<0の場合)。
;例1 関数 <math>y=x^2</math> の場合
:関数 <math>y=x^2</math> では、全ての実数 <math>x</math> に対して、<math>x^2\geqq 0</math> であるので( 等号成立は<math>x=0</math>のときのみ)、
:よって、関数 <math>y=x^2</math> は<math>x=0</math>のとき最小値0をとる。 関数 <math>y=x^2</math> に最大値は存在しない。
;例2 関数 <math>y=2(x-3)^2+4</math>の場合
:全区間で考えた場合、関数<math>y=2(x-3)^2+4</math>の最小値は4である。
:最大値は無い。
;例3 関数 <math>y=-x^2</math> の場合
:<math>x^2</math> の係数が負なので、最大値をもつ。最小値はもたない。
:全区間で考えた場合、関数<math>y=-x^2</math> の最大値は 0 である。
;例題
:2次関数<math>y=x^2+5x+5</math>の<math>-3\leq x \leq 0</math> の範囲での最大値・最小値を求めよ。
;解
[[画像:高等学校数学I 二次関数y=x^2(plus)5x(plus)5.png|right|frame|図2]]
:<math>y=\left(x+\frac{5}{2}\right)^2-\frac{5}{4}</math>
と標準形にし、グラフを書くと右図のようになる。
したがってグラフより答えは最大値は<math>x=0</math> のとき<math>5</math>, 最小値は<math>x=-\frac{5}{2}</math> のとき<math>-\frac{5}{4}</math>。
{{-}}
;例題
:2次関数<math>y=-\frac{1}{2}x^2+x+\frac{3}{2}</math> の<math>0\leq x < 3</math> の範囲での最大値・最小値を求めよ。
;解
[[画像:高等学校数学I 二次関数の最大最小例題2.png|frame|right|図3]]
上の例題と同様の問題のように思えるが、定義域が<math>0\leq x \leq 3</math> ではなく、<math>0\leq x < 3</math> となっている。とりあえずグラフをかいてみることにする。
:<math>y=-\frac{1}{2}(x-1)^2+2</math>.
グラフから、最大値は<math>x=1</math> のとき<math>2</math>, 最小値は存在しない。
{{-}}
=== 二次不等式 ===
二次不等式とは、<math>x</math> の二次式と不等号で表される式のことをいい、
:<math>ax^2+bx+c>0</math>, <math>ax^2+bx+c\geq 0</math>
のような形をしている。グラフを利用して二次不等式の解を考えてみよう。
;例題
[[画像:高等学校数学I_二次不等式の例題1.png|frame|right|図4]]
:二次不等式 <math>x^2+4x>0</math> を解け。
2次関数 <math>y=x^2+4x=x(x+4)</math> のグラフは右図のようになる。
<math>x^2+4x>0</math> となる<math>x</math> の値の範囲は右のグラフの<math>x</math> 軸より上側にある部分に対する<math>x</math> の値の範囲であるから、
:<math>x<-4 , 0<x</math>.
{{-}}
この問題をより一般化してみよう。
2次不等式<math>ax^2+bx+c>0</math> を解くには<math>y=ax^2+bx+c</math> のグラフをかけば一目瞭然である。しかし、グラフをかいた場合にも我々が注目するのは<math>x</math> 軸より上か下かということと、<math>x</math> 軸との共有点である。<math>x</math> 軸との共有点は二次方程式<math>ax^2+bx+c=0</math> の解であるが、二次方程式の解の公式を思い出してほしい。それは次のようなものであった。
:二次方程式<math>ax^2+bx+c=0</math>が解を持つとき、その解<math>x</math> は、
::<math>x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}</math>
これを用いると、二次方程式<math>ax^2+bx+c=0</math>が解を持つとき、
:<math>ax^2+bx+c=a\left(x-\frac{-b+\sqrt{b^2-4ac}}{2a}\right)\left(x-\frac{-b-\sqrt{b^2-4ac}}{2a}\right)</math>
と因数分解形で表すことができる。(右辺を展開して左辺と一致することを確かめてみよ。)
ここで、
:<math>\alpha=\frac{-b-\sqrt{b^2-4ac}}{2a}, \beta=\frac{-b+\sqrt{b^2-4ac}}{2a}</math>
とおくと、
:<math>ax^2+bx+c>0\Longleftrightarrow a(x-\alpha)(x-\beta)>0</math>
となる。<math>a>0</math> のとき<math>y=ax^2+bx+c</math> のグラフは下に凸であるからこの不等式の解は、
:<math>x<\alpha,\beta<x</math>
となる。<math>a<0</math> のときは両辺を<math>-1</math> で割ってから考えると、
:<math>\alpha<x<\beta</math>
となる。
==== 2次関数のグラフがx軸と異なる2点で交わる場合 ====
*'''例題'''
** 問題
次の二次不等式を解け。<br>
(i)
:<math>12x^2+17x-7<0</math>
(ii)
:<math>2x^2+6x+1 \ge 0</math>
** 解答
(i) 二次方程式<math>12x^2+17x-7=0</math>を解くと
:<math>(4x+7)(3x-1)=0</math>
:<math>x=- \frac {7}{4}\ ,\ \frac {1}{3}</math>
よって、この二次不等式の解は
:<math>- \frac {7}{4} <x< \frac {1}{3}</math>
(ii) 二次方程式<math>2x^2+6x+1=0</math>を解くと
:<math>x = \frac {-6 \pm \sqrt{6^2 - 4 \times 2 \times 1}}{2 \times 2} = \frac {-6 \pm \sqrt{28}}{4} = \frac {-6 \pm 2 \sqrt{7}}{4} = \frac {-3 \pm \sqrt{7}}{2}</math>
よって、この二次不等式の解は
:<math>\frac {-3- \sqrt{7}}{2} \le x\ ,\ x \le \frac {-3+ \sqrt{7}}{2}</math>
==== 2次関数のグラフがx軸と接する場合 ====
<math>y=x^2-6x+9</math>の値の符号について考えよう。<br>
平方完成をすると
:<math>y=(x-3)^2</math>
この関数のグラフは、<math>x</math>軸と点<math>(3\ ,\ 0)</math>で接する。<br>
<math>y=x^2-6x+9</math>の値の符号について、下の表のようになる。
<table border="1" cellpadding="2">
<tr><th><math>x</math></th><th><math>x<3</math></th><th><math>3</math></th><th><math>3<x</math></th></tr>
<tr><th><math>y=x^2-6x+9</math></th><td><center><math>+</math></center></td><td><math>0</math></td><th><center><math>+</math></center></th></tr>
</table>
よって
:<math>x^2-6x+9>0</math>の解は 3以外のすべての実数
:<math>x^2-6x+9<0</math>の解は ない
:<math>x^2-6x+9 \ge 0</math>の解は すべての実数
:<math>x^2-6x+9 \le 0</math>の解は <math>x=3</math>
** 問題
次の二次不等式を解け。<br>
(i)
:<math>x^2+2x+1>0</math>
(ii)
:<math>9x^2+12x+4 \le 0</math>
(iii)
:<math>4x^2-4x+1<0</math>
(iv)
:<math>x^2-10x+25 \ge 0</math>
** 解答
(i)
:<math>x^2+2x+1>0</math>
:<math>(x+1)^2>0</math>
よって、-1以外のすべての実数<br>
(ii)
:<math>9x^2+12x+4 \le 0</math>
:<math>(3x+2)^2 \le 0</math>
よって、<math>x=- \frac {2}{3}</math><br>
(iii)
:<math>4x^2-4x+1<0</math>
:<math>(2x-1)^2<0</math>
よって、解はない<br>
(iv)
:<math>x^2-10x+25 \ge 0</math>
:<math>(x-5)^2 \ge 0</math>
よって、すべての実数
==== 2次関数のグラフがx軸と共有点をもたない場合 ====
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸の位置関係について、<math>D=b^2-4ac<0</math>のとき、<math>x</math>軸と共有点をもたなかった。<br>
さらに<math>a>0</math>という条件を加えると、<math>y=ax^2+bx+c</math>のグラフは<math>x</math>軸より上側にある。
<math>a>0\ ,\ D=b^2-4ac<0</math>のとき
:<math>ax^2+bx+c>0</math>の解は すべての実数
:<math>ax^2+bx+c<0</math>の解は ない
** 問題
次の二次不等式を解け。<br>
(i)
:<math>x^2+2x+3<0</math>
(ii)
:<math>2x^2-6x+5 \ge 0</math>
(iii)
:<math>-x^2+x-1 \ge 0</math>
** 解答
(i)
:<math>x^2+2x+3<0</math>
:<math>D=2^2-4 \times 1 \times 3 =-8<0</math>
よって、解はない<br>
(ii)
:<math>2x^2-6x+5 \ge 0</math>
:<math>D=(-6)^2-4 \times 2 \times 5 =-4<0</math>
よって、すべての実数<br>
(iii)
:<math>-x^2+x-1 \ge 0</math>
:<math>x^2-x+1 \le 0</math>
:<math>D=(-1)^2-4 \times 1 \times 1 =-3<0</math>
よって、解はない
=== 放物線と直線 ===
放物線と直線の共有点について考えよう。
* 問題例
** 問題
放物線 <math>y=x^2-4x+5</math> と次の直線の共有点の座標を求めよ。<br>
(i)
:<math>y=x+1</math>
(ii)
:<math>y=2x-4</math>
** 解答
(i) 求める共有点の座標は、連立方程式
:<math>\begin{cases}
y=x^2-4x+5\\
y=x+1
\end{cases}</math>
の実数の解である。<math>y=x+1</math> を <math>y=x^2-4x+5</math> に代入すると
:<math>x^2-4x+5=x+1</math>
すなわち
:<math>x^2-5x+4=0</math>
これを解いて
:<math>
x=1 \ ,\ 4
</math>
<math>x=1</math> のとき <math>y=2</math><br>
<math>x=4</math> のとき <math>y=5</math><br>
よって、共有点の座標は
:<math>
\left(1\ ,\ 2 \right)\ ,\ \left(4\ ,\ 5 \right)
</math>
である。<br>
(ii) 求める共有点の座標は、連立方程式
:<math>\begin{cases}
y=x^2-4x+5\\
y=2x-4
\end{cases}</math>
の実数の解である。<math>y=2x-4</math> を <math>y=x^2-4x+5</math> に代入すると
:<math>x^2-4x+5=2x-4</math>
すなわち
:<math>x^2-6x+9=0</math>
これを解いて
:<math>
x=3
</math>
このとき <math>y=2</math><br>
よって、共有点の座標は
:<math>
\left(3\ ,\ 2 \right)
</math>
である。
例題の(ii)のように、放物線とその軸に平行でない直線がただ1点を共有するとき、放物線は直線に'''接する'''といい、共有点を'''接点'''という。
=== 解の公式 ===
復習内容も含まれるが、新たな内容も含まれる。
* <math>y=ax^2+bx+c</math> (bが奇数の時)
:<math>x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}</math>
* <math>y=ax^2+bx+c</math> (bが偶数の時)→bを半分にして計算する(本来ならばb‘とするところである。しかしながら、編集の関係上、bと表示している)
:<math>x=\frac{-b\pm\sqrt{b^2-ac}}{a}</math>
== 演習問題 ==
* [[高等学校数学I 二次関数 演習A|演習問題A]]
* [[高等学校数学I 二次関数 演習B|演習問題B]]
{{DEFAULTSORT:こうとうかつこうすうかくI にしかんすう}}
[[Category:高等学校数学I|にしかんすう]]
[[カテゴリ:関数]]
csh23ns986qnjrjcsm99l8ngmhknr74
プログラミング
0
846
301504
301301
2026-07-13T08:57:30Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301504
wikitext
text/x-wiki
{{Pathnav|メインページ|工学|情報技術|frame=1}}
プログラミングとは、コンピューターに特定のタスクを実行させるための命令や指示を記述する作業を指します。コンピューターはプログラムと呼ばれる一連の命令を実行することで機能します。これらの命令は、プログラミング言語を使って記述されます。
具体的には以下のようなことが含まれます。
; 問題の分析と設計
: プログラムを作成する前に、解決したい問題を分析し、アルゴリズム(解決方法)を設計します。
; コーディング
: 設計したアルゴリズムをコンピューターが理解できる形式の命令(プログラミング言語)で記述します。
; テストとデバッグ
: 作成したプログラムが意図した通りに動作するかをテストし、エラー(バグ)があれば修正します。
; 実装とデプロイ
: テストを経て完成したプログラムを実際のシステムやアプリケーションに実装し、デプロイします
; 保守とアップデート
: デプロイ後も、新しい要求や環境の変化に合わせてプログラムを保守・更新していきます。
プログラミングには様々な言語とツールが使われますが、根本的には以下の3つの基本概念を扱います。
; シーケンス(順次実行) : 命令を順に実行すること
; 選択制御(条件分岐) : 条件に応じて処理を変えること
; 反復制御(ループ) : 同じ処理を繰り返し実行すること
プログラミングの目的は、人間にとって複雑で手間のかかるタスクをコンピューターに自動化させることにあります。適切にプログラミングされたコンピューターは、高速かつ正確に作業を行うことができます。
== コンピュータ言語 ==
{{進捗状況}}
コンピュータ言語(Computer Language)は、コンピュータや計算機と人間の間で情報をやり取りするための形式言語の総称です。コンピュータ言語は、コンピュータが理解しやすい形式で命令や指示を表現するために設計されています。コンピュータ言語は、大きく以下の3つのカテゴリーに分類されます:
; 機械語(Machine Language)
: コンピュータが直接理解できる最も基本的な言語形式で、バイナリ(0と1の組み合わせ)で表されます。
: 各命令やデータが特定のハードウェアの命令セットに対応しており、特定のプロセッサやアーキテクチャに固有です。
; アセンブリ言語(Assembly Language)
: 機械語に対応するニーモニック(助記符)を使用して記述される低水準言語です。
: アセンブリ言語は機械語と1対1で対応しており、人間が理解しやすく、かつコンピュータが直接実行可能です。
; 高水準言語(High-Level Language)
: 人間にとって理解しやすく、抽象度が高い形式で記述されるプログラミング言語です。
: 高水準言語は計算や処理の複雑さを隠蔽し、開発者がプログラムのロジックや機能に集中できるように設計されています。
: 高水準言語には、Python、Java、C++、JavaScript、C#などがあります。
また、広義のコンピュータ言語には、プログラミング言語だけでなく、データベースクエリ言語やマークアップ言語など、コンピュータとのインタラクションや情報の記述に使われる言語全般を指すこともあります。
# データベースクエリ言語(Query Language)
#: データベース管理システム(DBMS)とやり取りするための言語で、データの問い合わせや操作を行います。代表的な言語にSQL(Structured Query Language)があります。
# マークアップ言語(Markup Language)
#: 文書やデータの構造や意味を記述するための言語で、タグや要素を使って情報をマークアップします。代表的な言語にHTML(HyperText Markup Language)やXML(eXtensible Markup Language)があります。
これらのコンピュータ言語は、それぞれ異なる目的や文脈で使用され、コンピュータとのインタラクションやデータ処理を可能にします。
{{Wikipedia|コンピュータ言語}}
{{Main|コンピュータ言語}}
=== アセンブリ言語 ===
* [[x86アセンブラ]] {{進捗|50%|2020-07-11}}
* [[CASL]] - 国家試験「[[基本情報技術者試験]]」に出題するために開発されたアセンブリ言語。
----
*[[アセンブリ言語]]
*[[AMD64アセンブラ/AMD64 CPU情報表示ツール]]
*[[AMD64アセンブラ]]
*[[ARM32アセンブリ言語]]
*[[ARM64アセンブリ言語/ARM64 CPU情報表示ツール]]
*[[ARM64アセンブリ言語]]
*[[X86アセンブラ]]
=== プログラミング言語 ===
<!--
:(※編集者への注意)言語名はなるべくアルファベット順に並べてください。
* [[ActionScript]] :死語 -->
* [[Ada]]
* [[ALGOL]]
* [[AWK]]
* [[BASIC]] {{進捗|75%|2014-02-09}}
** [[プチコン|SMILEBASIC]]
** ※ VBAについては別セクションで紹介。
* [[Bash_Shell_Scripting]]
* [[C++]]
** [[More C++ Idioms]]
* [[C言語]] {{進捗|75%|2020-07-11}}
* [[C Sharp|C#]]
* [[COBOL]]
* [[D言語]] {{進捗|50%|2020-07-11}}
* [[Dart]]
* [[Fortran]] {{進捗|00%|2014-02-09}}
* [[GNU Octave]]
* [[Go]] {{進捗|25%|2020-06-19}}
* [[Haskell]]
* [[HSP]]
* [[Java]] {{進捗|25%|2020-07-11}}
* [[JavaScript]] {{進捗|75%|2020-07-11}}
* [[Kotlin]] {{進捗|25%|2020-07-11}}
* [[Lisp]] {{進捗|00%|2014-02-09}}
* [[Logo]]
* [[MathML]] {{進捗|00%|2020-05-12}}
* [[Nim]]
* [[Objective-C]]
* [[Odin]]
* [[OpenOffice.org Basic]]
* [[Perl]] {{進捗|50%|2020-06-19}}
* [[PHP]] {{進捗|50%|2020-06-19}}
* [[PL/I]]
* [[PL/M]]
* [[Prolog]]
* [[Python]] {{進捗|75%|2020-06-19}}
* [[Ruby]]
* [[Rust]]
* [[Scala]]
* [[scrach3]]
* [[Scheme]]
* [[SQL]] {{進捗|25%|2020-07-11}} ※ MySQL の単元は[[プログラミング#データベース|別の節]]でリンクを記載。
* [[Swift]]
* [[TypeScript]]
* [[V]]
* [[Zig]]
----
<categorytree mode="pages" hideroot="on"> プログラミング言語 </categorytree>
=== マークアップ言語 ===
----
<categorytree mode="pages" hideroot="on"> マークアップ言語 </categorytree>
=== 問い合わせ言語 ===
----
<categorytree mode="pages" hideroot="on"> 問い合わせ言語 </categorytree>
== データベース ==
=== 仕様 ===
* [[SQL]] {{進捗|25%|2020-07-11}}
=== 実装 ===
* [[MySQL]] {{進捗|25%|2020-07-11}} (mariaDB もココ)
* [[PostgreSQL]]
* [[SQLite]]
== 低レイヤープログラミング ==
低レイヤープログラミングとは、コンピューターのハードウェアに近い低レベルの抽象化層でプログラミングを行うことを指します。
具体的には以下のようなプログラミングが低レイヤープログラミングに含まれます。
* アセンブリ言語プログラミング
* システムプログラミング (OSカーネル、デバイスドライバ、ファームウェアなど)
* ベアメタルプログラミング (ハードウェアに直接プログラムを展開)
低レイヤープログラミングの特徴は、以下のようなことが挙げられます。
# ハードウェアの動作を直接制御できる
# プログラムの実行効率が高い
# メモリアクセスなどの低レベルな操作が可能
# 抽象化の層が薄いため、ハードウェア依存性が高い
一方で、プログラミングの複雑さが高く、移植性に乏しい、デバッグが難しいなどの課題もあります。
低レイヤープログラミングは、OSやデバイスドライバ、組み込みシステム、リアルタイムシステムなどで重要な役割を果たしますが、通常のアプリケーション開発では高級言語を使うことが一般的です。
=== ファームウェア ===
ファームウェアとは、電子機器の内部に組み込まれているソフトウェアのことです。ハードウェアを制御し、機器の基本的な動作を実現するプログラムです。
具体的な特徴は以下の通りです。
* 電子機器に予めインストールされており、機器の起動時に読み込まれる
* メモリ(ROM、フラッシュメモリなど)に保存されている
* ハードウェアの低レベルの制御を行う
* 機器固有の機能を実現するため、機器ごとにカスタマイズされる
* ファームウェアのアップデートにより機能拡張や不具合修正を行うことができる
例えば、スマートフォンのOSやデジタルカメラの制御ソフトウェア、ルーターの設定ユーティリティなどがファームウェアに該当します。機器の種類によってファームウェアの役割は異なりますが、ハードウェアとソフトウェアの橋渡し的な役割を果たすものと言えます。
* [[UEFIアプリケーションの書き方]] {{進捗|00%|2020-07-11}}
=== 機械語 ===
機械語は、コンピュータが直接理解し実行するための最も基本的なプログラム言語です。機械語はコンピュータのプロセッサが解釈できる形式で、バイナリコード(0と1の列)で表されます。機械語は、コンピュータ内部の命令セットアーキテクチャに依存し、それぞれの命令は特定の操作(加算、論理演算など)やデータの移動を示します。
* [[機械語]] {{進捗|25%|2020-07-11}}
=== アセンブリ言語 ===
アセンブリ言語は機械語に比べてわずかに高い抽象化レベルの言語です。アセンブリ言語のコードは、アセンブラによって機械語に変換されます。
アセンブリ言語では、機械語の命令に人間が判読できる記号的な表現(ニーモニック)を対応させています。例えばADDは加算命令、MOVはデータ移動命令などです。
このように、アセンブリ言語は機械語よりは人間が理解しやすい言語ですが、依然としてCPUの低レベル命令を直接書く必要があり、高級言語に比べると生産性は低くなります。
* [[アセンブリ言語]]
=== その他 ===
* [[オペレーティングシステム]] {{進捗|25%|2020-07-11}}
== ハードウェア記述言語 ==
* [[VHDL]]
== 各論 ==
=== フレームワークやライブラリ ===
* [[Vulkan]]
* [[SPIR-V]]
* [[OpenGL]]
* [[OpenGLプログラミング]]
* [[Xプログラミング]]
* [[GNOMEフレームワーク]] {{進捗|25%|2020-07-11}}
* [[GTKプログラミング]] {{進捗|25%|2020-07-11}}
* [[Qtプログラミング]] {{進捗|25%|2020-07-11}}
* [[CGI]] {{進捗|50%|2020-07-11}}
* <del>[[Chainer]]</del>'''開発終了'''
=== マークアップ言語および関連技術 ===
* [[HTML]] {{進捗|75%|2020-07-11}}
* [[MML]]
* [[SVG]] {{進捗|50%|2020-07-11}}
* [[Markdown]]
* [[Asciidoc]]
=== ソケットプログラミング ===
* [[WinSock]] {{進捗|100%|2020-07-11}}
* [[Unixソケットプログラミング]] {{進捗|100%|2020-07-11}}
== Office マクロ ==
* [[Visual Basic for Applications]] (VBA)
* [[Pythonマクロ|LibreOffice Python マクロ]]
* [[OpenOffice.org Basic]]
** [[OpenOffice.org_Calc_Basic | OpenOffice.org Calc Basic]]
** [[OpenOffice.org_Base_Basic | OpenOffice.org Base Basic]]
== その他 ==
* [[Windows API]] {{進捗|25%|2020-07-11}}
* [[ゲームプログラミング]] {{進捗|25%|2020-07-11}}
* [[OSS開発ツール]] {{進捗|25%|2020-07-11}}
* [[基本情報技術者試験]] - 国家試験([[情報処理技術者]])。[[基本情報技術者試験/ソフトウェア開発|プログラミング]]に関する問題が出題される。
* [[難解プログラミング言語の作り方]]
== 基本的な概念 ==
以下に、プログラミングに関連する基本的な概念とプロセスをいくつか説明します。
;プログラミング言語:プログラミング言語は、人が理解しやすい形でコンピューターに指示を与えるための記述手段です。代表的なプログラミング言語には、Python、Java、C++、JavaScript、Rubyなどがあります。それぞれの言語には特定の用途や特徴があります。
;アルゴリズム:アルゴリズムは、特定の問題を解決するための手順や手法のセットです。プログラマはアルゴリズムを設計し、それをプログラムの中に実装します。良いアルゴリズムの選択は、プログラムの性能や効率に大きな影響を与えることがあります。
;データ構造:データ構造は、データを効率的に保存・管理・操作するための方法です。配列、リスト、ツリー、ハッシュテーブルなどがあり、プログラマは適切なデータ構造を選択してプログラムを設計します。
;プログラムの設計と実装:プログラミングは、問題解決のためにアルゴリズムとデータ構造を使用してプログラムを設計し、それを実際のプログラミング言語で実装するプロセスです。この際、シンタックス(文法)やセマンティクス(意味論)といった言語の特性を理解して適切にコードを書く必要があります。
;デバッグとテスト:プログラムが完成したら、デバッグとテストが行われます。デバッグはプログラム内のエラーや不具合を見つけて修正するプロセスであり、テストはプログラムが正確に動作するか確認するプロセスです。
;ソフトウェアエンジニアリング:プログラミングはソフトウェアエンジニアリングの一環であり、プログラミングだけでなく、要件分析、設計、テスト、メンテナンスなどソフトウェア開発ライフサイクル全体を包括します。
プログラミングはコンピューターサイエンスの中心的な要素であり、コンピューターを活用して問題を解決するための重要なスキルとなっています。
{{See|データ構造とアルゴリズム}}
プログラミングは、その周辺にさまざまな技術やツールが存在し、これらはプログラマーや開発者が効率的に作業を進めるために利用されます。
以下に、プログラミングの周辺技術や関連する領域をいくつか挙げてみましょう。
;統合開発環境(IDE):IDEは、プログラムの開発を支援するための統合ツールセットです。コードの編集、デバッグ、ビルド、プロジェクト管理などの機能を提供し、開発者が効率的かつ便利に作業を進めることができます。例えば、Visual Studio、Eclipse、IntelliJ IDEAなどがあります。
;バージョン管理システム:バージョン管理システムは、コードの変更履歴を管理し、チームでの協力やコードの追跡を容易にします。GitやSubversionなどがよく使われます。
;デバッグツール:デバッグツールは、プログラムの実行時に発生するエラーや不具合を特定して修正するのに役立ちます。デバッガーはコードのステップ実行や変数の監視などを可能にします。
;コンテナ技術:コンテナ技術(Dockerなど)は、アプリケーションやサービスを環境から切り離し、独立して動作させるための技術です。これにより、環境依存性を減少させ、開発から本番環境までの一貫性を確保します。
;仮想化技術:仮想化技術は、物理的なハードウェア上に仮想的な環境を作り出す技術で、開発環境のセットアップやテスト、サーバーの効率的な利用に役立ちます。仮想マシン(VM)や仮想ネットワークなどが含まれます。
;テストフレームワーク:テストフレームワークは、プログラムが正しく動作しているかどうかを確認するためのテストを効率的に実施するためのツールやライブラリです。JUnit(Java向けの単体テストフレームワーク)、pytest(Python向けのテストフレームワーク)などがあります。
;クラウドプラットフォーム:クラウドプラットフォームは、プログラムやアプリケーションをクラウド上で実行するための基盤を提供します。AWS、Azure、Google Cloud Platformなどがクラウドプロバイダーの例です。
;API(Application Programming Interface):APIは、ソフトウェアコンポーネント同士が情報をやり取りするためのインターフェースを提供します。外部のサービスやライブラリを利用するために重要な概念です。
これらの技術やツールは、プログラミングをより効率的かつ効果的に行うために欠かせないものであり、コンピューターサイエンスやソフトウェアエンジニアリングの領域で幅広く活用されています。
== 最初に学ぶプログラミング言語の選び方 ==
プログラミング言語の選択については、学ぶ目的や環境に応じて異なる選択肢があります。以下は、初めて学ぶプログラミング言語を選ぶ際に考慮すべきいくつかのポイントです。
;目的に合った言語を選ぶ:プログラミング言語には、それぞれ得意とする分野があります。例えば、Web開発にはJavaScript、データ分析にはPython、システムプログラミングにはCやC++などがよく使われます。学ぶ目的に合った言語を選ぶことで、効率的に学ぶことができます。
;学習リソースの充実度:学習リソースが豊富であるかどうかも、言語選択において重要なポイントです。初心者向けの学習リソースが充実している言語を選ぶことで、スムーズな学習ができるでしょう。また、オンライン上には無料で利用できる学習リソースも多数存在するため、選択肢を広げることも大切です。
;コミュニティの活発さ:言語のコミュニティが活発であれば、初心者でも質問や情報収集がしやすく、学習のサポートが受けやすいです。また、コミュニティに参加することで、プログラミングに対するモチベーションを高めることもできます。
;言語の文法の理解しやすさ:初めて学ぶプログラミング言語は、その文法がわかりやすいものが望ましいです。理解しやすい文法を持つ言語を選ぶことで、学習のスピードが上がるでしょう。
;プログラミング言語の人気度:人気のある言語は、コミュニティの活発さや学習リソースの充実度が高い傾向があります。また、人気のある言語は求人市場でも需要が高いため、将来的なキャリアアップの可能性を見据えて選ぶこともできます。
=== 共通知識 ===
* [[プログラミング/初歩的な課題集]]
* [[プログラミング/共通知識]]
* [[オブジェクト指向]]
== プログラミングに関するトピック ==
* [[/Null安全性|Null安全性]]
* [[/型安全性|型安全性(Type Safety)]]
* [[/メモリ安全性|メモリ安全性(Memory Safety)]]
* [[/スレッド安全性|スレッド安全性(Thread Safety)]]
* [[/セキュリティ|セキュリティ]]
* [[/make|make]]
* [[/ジェネリックプログラミング|ジェネリックプログラミング]]
* [[/ダックタイピング|ダックタイピング]]
* [[/テンソル|テンソル]]
* [[/データ構造|データ構造]]
* [[/プログラミング・パラダイム|プログラミング・パラダイム]]
* [[/リテラル|リテラル]]
* [[/列挙型|列挙型]]
* [[/リフレクション|リフレクション]]
* [[/型推論|型推論]]
* [[/変数|変数]]
* [[/式と演算子|式と演算子]]
* [[/固定幅整数|固定幅整数]]
* [[/浮動小数点数|浮動小数点数]]
* [[/多倍長整数|多倍長整数]]
* [[/短絡評価|短絡評価]]
* [[/連想配列|連想配列]]
* [[/遅延評価|遅延評価]]
* [[/配列|配列]]
* [[/関数型プログラミング|関数型プログラミング]]
== カテゴリツリー ==
{{#カテゴリツリー:プログラミング}}
== 下位階層のページ ==
{{main|プログラミング/}}
{{DEFAULTSORT:ふろくらみんく}}
[[Category:プログラミング|*]]
[[Category:プログラミング言語]]
[[Category:計算機科学]]
[[Category:情報技術]]
{{NDC|007.64}}
6aiearuiuj7mcmlcbx2jidyzbdf70bn
Scheme
0
859
301490
296740
2026-07-13T08:42:56Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301490
wikitext
text/x-wiki
{{Pathnav|メインページ|工学|情報技術|プログラミング|frame=1}}
== 対象読者 ==
このページではプログラミングのまったくの初心者、もしくは他のプログラミング言語は知っているがSchemeについて知識がないかたを主な対象者として、Schemeプログラミングを素早く習得できるように解説していきます。
==Schemeの紹介==
[[w:Scheme|Scheme]](スキーム)とは[[w:プログラミング言語]]のひとつです。
Schemeの最大の魅力はそのシンプルさにあります。おそらく([[w:Brainfuck|Brainf***]]などのジョーク言語を除けば)現存するあらゆる言語のなかでも最も言語仕様が小さい言語で、つまりはもっとも習得のしやすい言語であるといえます。また、実用にもじゅうぶん耐えうるだけの機能を持ち、プログラミングの楽しさを体験するにはまさにうってつけです。すでに[[C言語]]や[[Perl]]などの他の言語を習得している方にとっても、プログラミングの理解を深める上で覚えておいて損はない言語です。
この項ではSchemeの知識がゼロの状態から、最低限必要なことだけを最短で理解できるように解説していきます。この項では基本的だがしかし本格的なプログラミングの概念を学び終えるのに、初学者の方でも半日とかからない分量にしています。
さあ、Schemeでプログラミングをあっという間に身に着けてしまいましょう!
Schemeは2015年現在に至るまで何度か改良が加えられ、Revised7 Report on the Algorithmic Language Scheme(R7RS)という仕様書がもっとも新しいものです。ここではR7RSに準じて説明していきます。仕様の詳細については[[Scheme#外部リンク|外部リンク]]の項を参照してください。
==処理系に触れてみる==
プログラムを実行するには、その言語に対応した何らかの処理系(プログラムを処理する[[w:ソフトウェア|ソフトウェア]]。ここではプログラムを実行するもののこと)が必要です。プログラムの構文解説に入る前に、自分でプログラムを入力して確かめることができるように[[w:インタプリタ|インタプリタ]]の使い方を覚えましょう。[[w:フリーウェア|フリーウェア]]として公開されている処理系も多いので探してみましょう。処理系を探すには[[Scheme#外部リンク|外部リンク]]の項も参照してください。
もし処理系のインストール作業が億劫であれば、Webブラウザ上でSchemeプログラムの実行を試せるサイトがあります。次の「[http://codepad.org/ codepad]」というサイトでは、(1)ページ左のオプションボタンから、「Scheme」を選択する (2)テキストボックスにプログラムを入力する、もしくはコピーアンドペーストする (3)「Submit」ボタンを押す という手順を踏むだけで処理系のインストール作業なしにSchemeの実行を試すことができます。この項目程度の内容であれば「Codepad」でもじゅうぶん事足ります。
[[画像:Scheme_codepad.png|400px]]
ためしに「codepad」を使ってみましょう。「Scheme」を選んでからテキストボックスに「(display "Hello, World!")」と入力し、「Submit」ボタンを押すと次のような結果が表示されます。
[[Image:Scheme codepad2.png|400px]]
このコードを実行したところ、「Hello, World!」という文字列が出力された、ということです。他のコードを試してみる場合、「(display "Hello, World!")」の「"Hello, World!"」の部分を表示したい値に置き換えてください。たとえば、「(display (+ 5 9))」を入力すると「14」が出力されます。
他のインタプリタの大まかな使い方を説明します(以下は「Codepad」の使いかたではありません)。Schemeの処理系が入手できたら、そのヘルプにしたがって起動してみましょう。たいていのインタプリタでは、起動すると「>」記号が表示されてユーザからの入力待ちになります。
>
では、インタプリタに「(+ 1 2)」と入力してみましょう。たいていの対話式の処理系では改行すると実行します。
>(+ 1 2)
3
>
「3」が表示され、再びユーザからの入力待ちになりましたね。Schemeプログラム「(+ 1 2)」の実行結果が「3」だったということです。プログラムを入力して改行すると、入力されたプログラムが実行され、次の行に先ほどのプログラムの実行結果が表示されます。これを繰り返してSchemeプログラミングを進めていきます。
==Schemeプログラムの構造、意味と評価の過程==
プログラムとはおおまかに言えば命令と式の羅列です。数値計算の時にはまさに数式を書いていくのですが、プログラミング言語には、文字列から一部分を切り取ったり、リストからデータを取り出したりと、数値計算ではない式があります。下図を見ればわかるように、数学で使われる数式の表現と対応するものが多くあります。数式に対応するものをSchemeで書けば、それがまさに数値計算をするプログラムになります。
{| class="wikitable"
|+ 数学とSchemeの対応する主な表現
!scope="col"| 意味
!scope="col"| 数学の表記
!scope="col"| 対応するSchemeの表記
|-
!scope="row"| 関数の適用
| <math>f(x, y)</math> || <syntaxhighlight lang="scheme" inline>(f x y)</syntaxhighlight>
|-
!scope="row"| 変数の値の更新
| なし || <syntaxhighlight lang="scheme" inline>(set! x y)</syntaxhighlight>
|-
!scope="row"| 等値性の検査
| <math>x = y</math> || <syntaxhighlight lang="scheme" inline>(= x y)</syntaxhighlight>
|-
!scope="row"| 関数の定義
| <math>f(x, y) = x + y</math> || <syntaxhighlight lang="scheme" inline>(define (f x y) (+ x y))</syntaxhighlight>
|-
!scope="row"| 乗算
| <math>a \times b</math> || <syntaxhighlight lang="scheme" inline>(* a b)</syntaxhighlight>
|}
Schemeでは一貫して括弧の入れ子構造になっているのがおわかりになると思います。これがまさにSchemeの言語仕様がシンプルであるという所以です。Schemeではプログラムの実行を進めていくことを「評価」と呼びますが、これも簡単に言えば数式を変形して簡単にしていくことに似ています。たとえば、数学では次のように式を変形し、値を求めていきます。
::<math>\begin{align}
1 + ((4 - 2) + 1) &= 1 + (2 + 1) \\
&= 1 + 3 \\
&= 4
\end{align}</math>
これ以上簡単にしようがない「4」が出てきた時点で変形は終了です。これで答えが求まりました。このような変形をSchemeで表せば次のようになります。
(+ 1 (+ (- 4 2) 1))
↓
(+ 1 (+ 2 1))
↓
(+ 1 3 )
↓
4
数学の表記とは数字や記号の順番が異なりますが、何となく似た雰囲気はつかめると思います。入れ子になった括弧は、数学と同様に内側から評価してきます。プログラムといっても、数学の式を独特の表記で書き換えたようなものなのです。ただ、実際は式変形の途中経過は見せず、即座に「その式の値」つまり答えのみが出力されます。以下は実際の入力と出力の一例です。
>(+ 1 (+ (- 4 2) 1)) ←入力(プログラム、式)
4 ←出力(答え、式の値)
この式を「codepad」で試すときは「(display (+ 1 (+ (- 4 2) 1)))」と入力してください(「display」はこの式の評価結果を表示させるという意味です。詳しくは後ほど解説します)。
このように評価して値を得ることを「値が返る(値を返す、値を戻す)」、返ってきた値を「返り値(戻り値)」などともいいます。ソースコード上でいえば、「値が返る」とは「ある式を評価し、その式の部分をその値で置き換える」ことだと考えるとわかりやすいかもしれません。
==式の要素==
プログラムとは式そのものですから、[[w:ソースコード]]では数字や文字列といったデータを記述していく必要があります。プログラミング言語にはそれぞれこのようなデータを書くための構文があり、このコード中に直接書かれた値を「リテラル」(literal)と呼びます。
ここでは最低限必要と思われるものだけ解説しますが、以下で紹介される以外にもいろいろな表現があります。詳しくは仕様を参照してください。また、以下の中にはまだ使い方が説明されていないものがありますが、それは後述します。
===数値リテラル===
Schemeでソースコード中に数値を記述するには、そのまま半角数字で表記し、これを「数値リテラル」といいます。小数は小数点をピリオドで入力し、負の数を示すマイナス記号(-)も使えます。「2004」「3.14159265358979」「-273.15」などです。ただし、入力した数値が必ずしも入力したとおりの精度で扱われるとは限りません。頭に「#e」をつけ完全な精度で扱うことを指定することもできます。
数値型は、整数型integer、有理数型ratioral、実数型real、複素数型complexの構造を持っており、右のものは、すべての左のものを含みます。
===文字列リテラル===
文字列の値を記述する場合は、その文字列をダブルクォーテーション{{code|"}}で囲んで記述します。これを「文字列リテラル」といいます。これはソースコード上で数値や変数(後述)と区別するためであり、実際の評価にこのダブルクォーテーションが影響することはありません。たとえば、{{code|"古今"}}と{{code|"東西"}}というふたつの文字列をつなげると、{{code|"古今""東西"}}ではなく{{code|"古今東西"}}となります。また、{{code|123}}は数値ですが{{code|"123"}}は文字列です。さらに、{{code|"Hello."}}{{code|"こんにちは。"}}なども文字列です。
特別な文字を表す表現もあります。たとえば改行は{{code|\n}}、タブ文字は{{code|\v}}、逆スラッシュは{{code|\\}}と入力します。また、これらの特別な文字は文字列リテラルの中では直接入力できません。つまり、{{code|"(改行)"}}と書くと構文エラーになります(エラーにならない処理系もあります)。
リテラルを評価すると、そのリテラルそのものが示す値を返します。{{code|1}}を評価すると{{code|1}}、{{code|"こんにちは"}}を評価すると{{code|"こんにちは"}}がそのまま返ります。
===文字リテラル===
単一の文字を表現するには文字リテラルを使います。これは{{code|#\}}に任意の一文字を続けて表記します。たとえば{{code|#\a}}は{{code|a}}を表します。また、スペースを{{code|#\space}}、タブ文字を{{code|#\tab}}で表します。
これは文字列リテラルとは扱いが異なりますので注意してください。たとえば{{code|"a"}}と{{code|#\a}}はどちらも画面に表示させると{{code|a}}ですが、それぞれ「'''一文字の'''文字列」と「文字」で異なるので注意してください。
===真偽値リテラル===
条件が真か偽かを表すには、真偽値型の値を使います。{{code|#t}}は真、{{code|#f}}は偽を表し、条件によって処理をわけるときなどに使います。ただし、{{code|#f}}以外のすべての値は真として扱われます。これを利用すると、失敗したり無効だったときは偽を返し、それ以外は何か別の型の値を返す、といった関数を実装できます。
式が真偽値型か調べるには、関数boolean?を利用します。
==コメント==
ソースコード中には[[w:コメント (コンピュータ)|コメント]]と呼ばれる注釈を書くことができます。コメント部分はプログラムの評価に一切関与しません。Schemeでは{{code|;}}からその行末までがコメントです。
>(define hoge 10) ;ここがコメント
hoge
Wikipedia:サンドボックス#ここから下に書き込んでください。
注釈を書く用途のほか、プログラムの一部分を一時的に評価しないようにするためにも使われます。もし評価して欲しくない部分を単純に削除してしまうと、あとで戻そうと思ったときに書き直さなければならず手間がかかるからです。コメントにしておけば先頭のセミコロンを削除するだけで元に戻せます。このように評価して欲しくない部分をコメントにすることをコメントアウトと呼びます。
==手続き==
Schemeには「手続き」(procedure)という概念があります。これは幾つかの処理を行いその結果を返すまとまりで、[[w:数学]]における[[w:関数]]と非常に良く似ています。たとえば、数学では「f(x,y) = x + y のとき、 f(1,2) = 3である」などといいますよね。Schemeでは{{code|f(x,y) {{=}} x + y}}の部分を「手続きの定義」、{{code|f}}を「手続き」、手続きの評価に必要な値を受け取る{{code|x}}と{{code|y}}を「仮引数」と呼びます。{{code|f(1,2)}}」の部分を「手続きの呼び出し」、{{code|1}}と{{code|2}}のように手続きの評価に使われる値を「引数」、実行した結果である{{code|3}}を「返り値」といいます。
では、手続きの呼び出しを表現してみましょう(実は下記の手続きの解説には幾つか方便が含まれています。ですが、ここで詳細を解説すると難しくなりすぎるので、詳しくは後述します。手続きの定義は少し難しいので後回しにします)。
手続きはただ命令や数式の列をまとめる役目だけではありません。Schemeの豊富な機能は手続きを介して提供されているのです。また、あなたの書いたプログラムの機能を他のプログラムに公開するとき、それは手続きの定義によって行われます。Schemeの機能を呼び出すとは、用意された手続きを呼び出す構文を書くことと同義です。
===手続きの文法===
Schemeの手続きの呼び出しは{{code|(手続き名 引数1 引数2 ……)}}という文法です。手続き名は変数です。手続きがどんな引数を取るのかは手続きによって異なります。手続き名やそれぞれの引数の間はひとつ以上の[[w:空白文字|空白文字]]で区切らなければなりません。手続き名や引数の間に空白文字がないと、区切りが分からなくなってしまうからです。空白文字とは[[w:改行|改行]]、[[w:タブ文字|タブ文字]]、[[w:半角スペース|半角スペース]]の3つのいずれかです。この構文はどんな手続きでも同じです。Schemeのほとんどの手続きは、その引数が評価されてから手続きに渡されます。
手続き呼び出しの丸括弧は数学の優先順位を示す括弧とは異なり、省略'''できません'''。このため、数学のような乗算が加算に優先する、といった優先順位はSchemeには'''存在しません'''。この仕様は記号の優先順位を覚える必要がない反面、数式を煩雑にしがちで、Schemeらしい点でもあります。手続きの呼び出しが何重にもなると括弧の数を間違いやすいです。括弧は{{code|(}}と{{code|)}}がきちんと対になっていなければなりませんから気をつけましょう。SchemeのようなLisp系の言語は括弧だらけになるから苦手、という人も少なくないです。
===実際に試してみる===
Schemeには加算をする手続き「+」が予め定義されています。さっきの構文にのっとると、数学での<math>1+2</math>はSchemeでは{{code|(+ 1 2)}}と表記されます。処理系で実行して試してみましょう。できたら<math>1+2</math>以外にも試してみましょう。引数の和が返ってくるはずです。
>(+ 1 2)
3
>(+ 10 50)
60
>(+ 2004 2004)
4008
>(+ -25 10)
-15
>(+ 3.141592 -273.15)
-270.008408
なんだか変な構文だと思われるかもしれませんが、これらの構文は[[w:S式|S式]]と呼ばれ、Schemeの構文のシンプルな言語仕様を支えています。「S式」は前置記法と呼ばれるもののひとつで、手続き名にあたるものが先頭に来ます。
「前置記法」の他に「中置記法」や「後置記法」もあります。C言語などは、数学のような{{code|1 + 2}}という感じの中置記法が中心ですが、3種類全ての記法が入り混じっています。これに対してSchemeでは、前置記法のみしか使わないシンプルな言語仕様になっています。
===注意===
幾つか手続き呼び出しに関して気をつけておくことがあります。手続きには「手続き名」「引数の数」「引数の型」「返り値の型」などの要素を持っています。たとえば、幾つ引数をとるかは手続きごとに決められており、多すぎたり少なかったりすると実行したときに[[w:エラー]]になります。ただ、たまたま「+」は引数が幾つあってもよい手続きです。
また、手続きは引数の型が決まっています。たとえば、[[w:加算]]をする手続き{{code|+}}は文字列を引数に呼び出すとエラーです。
たまたま「+」は引数の順番を変えても同じ値が返ってきますが、ほとんどの手続きは引数はその順番に意味があります。たとえば、{{code|-}}は1つ目の引数の値から2つめ以降の引数の値を減算する手続きなので、{{code|(- 10 5)}}と{{code|(- 5 10)}}の値は違います。
Schemeには予め幾つかの手続きが定義されており、ユーザは新たに手続きを定義することもできます。そのScheme処理系にどの手続きが用意されているか確かめるには、その処理系の[[w:ヘルプ]]と言語仕様を確認する必要があります。
==束縛==
束縛とは変数に値を関連付けることです。例を見てみましょう。手続きdefineは第一引数の変数に第2引数の値を束縛します。値が束縛された変数を評価すると、その変数に束縛された値が返ります。つまり、束縛された値を取得するには、単にその変数を書きます。
>(define year 2004)
year
>(+ year 1)
2005
変数yearには数{{code|2004}}が束縛されましたので、変数yearが評価されるとyearに束縛された値{{code|2004}}が返ります。手続き+は{{code|2004}}と{{code|1}}の和{{code|2005}}を返します。今まで説明に使ってきた手続き+も、じつはインタプリタ起動と同時に+に加算をする手続きが束縛されていたから使えるのです。手続きも一種の値として扱えるため、defineで束縛することができるのです。また、何も束縛されていない変数を評価しようとするとエラーです。
==構文==
上で束縛を説明しました。が、ここで疑問に思って欲しいことがあります。次の例を見てみましょう。
>(define year 2004)
year
>(define year 1000)
year
下のdefineでは、yearはすでに2004が束縛されています。手続きは引数を評価してから渡すのですから、yearは2004を返すはずです。従って、{{code|(define year 1000)}}は{{code|(define 2004 1000)}}になるはずではありませんか。2004は変数ではないので、束縛はできないはずです。いや、そもそも最初のdefineではyearには何も束縛されていませんでしたから、なにも束縛されていない変数yearが評価されてエラーになるはずです。これはどうしたことでしょうか。
実はSchemeには手続き呼び出しと同じような構文でありながら、引数を評価せずに受け取る手続き呼び出しとはまったく別の式も存在します。defineは引数(のように見える部分)は評価しないのです。defineは手続きではなく、定義を行う「構文」に分類されます。
==リスト==
Schemeなど[[w:Lisp]]系の言語が何故これほどまでにシンプルな構文にこだわったかには訳があります。Schemeプログラムは「リスト」と呼ばれるツリー状の構造をとるようになっているのです。Lispが[[w:人工知能]]研究の分野に使われてきたのは、プログラム上でプログラムを組み立てるのが非常に容易だからです。
たとえば、{{code|(+ 1 (- 2 3))}}という式は、実は次のようなリストです。
[[画像:scheme.png]]
グレーの矩形は[[w:carとcdr]]の二つの区画を持つ「ペア」と呼ばれるものです。car部はそのペアが持っている値、cdr部はその次の要素を格納していると捉えることができます。car部には別のペアを格納することができます。cdr部は次の要素を示しますが、リストの終端を示すには空リストを使います。図中では{{code|()}}で表されているのが空リストです。Lispプログラムはこの構造の繰り返しであり、このツリー構造を作り上げることでLispプログラムを作ることができるのです。{{code|car}}や{{code|cdr}}、{{code|set-car!}}、{{code|set-cdr!}}、{{code|list}}、{{code|quote}}などの手続きを使えば、Schemeプログラムをそのままリストとして扱えます。実はペアを直接作成する専用の構文もあるのですが、知らなくても今のところは構わないので、ここでは割愛します。
==Schemeの重要な手続きや構文==
実は、以上で大まかな文法は説明し終わりました。Schemeの文法はほとんど[[w:S式]]なのです。まだまだ説明していない概念はいくらでもあるのですが、それらの機能はすべて手続きや構文で提供されるのです。たとえば、数値の大小を比較するのも手続きですし、文字列を表示するのもまた手続きです。[[w:GUI]][[w:ライブラリ]]が提供されれば、ウィンドウを開いたりファイルを操作したり画像を表示したりするのもまた、手続きを介して行われます。
とはいえ、実際にあなたが望む機能を実現するには、どの手続きをどのように使えばいいのかわからないことでしょう。あとあなたに必要なのは、どんな手続きや構文が用意されているのか知り、具体的なプログラムを読んだり書いたりしてプログラミングの経験を積むことです。そのためには言語仕様を読めるようになる必要があります。ですが、以下でかんたんに主な手続きや構文を紹介しておこうかと思います。このほかにも有用なものがたくさんありますので、すべての機能を知るには言語仕様を参照しましょう。
===cons, car, cdr===
Schemeの最も重要な手続きはペアをつくり、ペアから要素を
取り出す次の3つです。
*cons ペア(dotted pair)をつくる
*car pairの最初の要素を取り出す
*cdr pairの次の要素を取り出す
consはペアを作る手続きです。
{{code|(cons 1 2)}} => {{code|1 . 2}}
このペアから無限に続くリストが作れます。リストの終わりを{{code|()}}という空リストで示すこととすれば、1 2 3と続くリストは、
{{code|(cons 1 (cons 2 (cons 3 '())))}}と定義され、
{{code|(1 2 3)}}と表現されます。
特に、Schemeでは、リスト構造が根本であり、それは、リストは再帰的(recursive)に定義される構造だからです。
<syntaxhighlight lang="scheme">
(cons 1 2) => (1 . 2)
(car (cons 1 2)) => 1
(cdr (cons 1 2)) => 2
(cons 1 (cons 2 '())) => (1 2)
(car (cons 1 (cons 2 '()))) => 1
(cdr (cons 1 (cons 2 '()))) => (2)
</syntaxhighlight>
この例だけ見ると、リストの重要性は判らないかも知れません。
===四則演算===
*+ 加算
*- 減算
*<nowiki>*</nowiki> 乗算(「×」ではなく「*」を使います)
*/ 除算(「÷」ではなく「/」を使います)
これらの[[w:四則演算]]の手続きは、整数や小数など数値型の値に適用できます。これだけでもSchemeを簡易電卓として使えそうですね。
===display===
displayは引数に与えられた値を出力します。プログラム実行中の途中経過を表示したりする場合にも便利です。下の例では結果が1010となっていますが、displayが表示した10とインタプリタがプログラムから得た値10が、改行していないのでつながって見えるだけです。文字列や変数も引数として使えます。
>(display 10)
1010
表示できるのは、Schemeの処理系が受け付けるすべての S式です。数値、文字、文字列、クオートされたリストなど、何でも表示できます。ただし、関数は内部表現が処理系毎に異なることに注意して下さい。{{code|(display 10)}} の評価値は、未定義です。他の変数に束縛する意味はありません。複数の値を表示するとき、Scheme では以下のように書くことができます。
>(define x "Xvalue")
>(for-each display `(1 2 3 x ,x "\n" "newline"))
1 2 3 x Xvalue
newline
準引用により {{code|,}} が前に付くと、値が展開されます。それから
>(display 10 output-port)
と書けば、出力先を変更できます。output-port は、関数 open-output-file の返り値を指定します。
===lambda===
lambdaは手続きを新たに定義し、その手続きを表す値を返す構文です。Schemeは手続きであっても、数値や文字列と同じように値として処理することができます。lambda構文の第一引数には手続きの引数名となる変数のリストを渡します。第2引数以降は手続き本体となる式を渡します。ここで作成された手続きは一種の値なので、defineで束縛することができます。サンプルプログラムを示します。
> (define average (lambda (x y) (/ (+ x y) 2)))
average
> (average 10 20)
15
新たに定義した手続きは二つの引数をとり、その平均を返します。その手続きは変数averageに束縛しています。インタプリタは{{code|(average 10 20)}}を手続き呼び出しだと判断し呼び出しました。前述では手続き名には変数を記述すると解説しましたが、実際には手続きの値をとる式を書きます。averageには手続きが束縛されているため、リストの先頭に書くことができます。従って次のようなこともできます。
> ((lambda (x y) (/ (+ x y) 2)) 10 20)
15
平均を計算する無名の手続きを定義し、返り値をリストの先頭に使いその手続きを呼び出しています。
手続きは引数や返り値にも使えるため、手続きを返す手続きも作成できます。下の例では、最初に平均を計算する手続きを返す手続きを作成し、それを変数create-average-functionに束縛しています。そして、2つめ、3つめで変数create-average-functionに束縛されていた平均を計算する手続きをつくる手続きに、まず加算と乗算の定義を与え、平均を計算する手続きを得ます。そして、その手続きに引数10と20を与えて、具体的な平均値を計算しています。
<syntaxhighlight lang="scheme">
> (define create-average-function
(lambda (add multiply)
(lambda (x y) (multiply (add x y) (/ 1 2)))))
</syntaxhighlight>
<code> create-average-function</code>
<syntaxhighlight lang="scheme">
> ((create-average-function + *) 10 20) ; 相加平均
</syntaxhighlight>
<code> 15</code>
<syntaxhighlight lang="scheme">
> ((create-average-function * expt) 10 20) ; 相乗平均、exptは累乗を計算する組み込み関数。
</syntaxhighlight>
<code> 14.1421356...</code>
===quote===
quoteは引数に与えられたものを評価せずにそのまま返す構文です。
>(quote (+ 1 2))
(+ 1 2) ;(+ 1 2)は評価しないと(+ 1 2)というリスト
>(define hoge 10)
hoge
>hoge
10 ;quoteを使わなければ、変数は束縛されている値を返す
>(quote hoge)
hoge ;quoteを使うと、変数は変数そのものを返す
特別な構文(Schemeの機能の「構文」ではなく、一般的な意味の構文)として、{{code|'(+ 1 2)}}と書くことができます。{{code|(quote (+ 1 2))}}まったく同じ意味ですが、字数が少なく見やすくなります。このように、書きやすさ、見やすさのために導入された構文を[[w:糖衣構文]](シンタックスシュガー)といいます。
== 下位階層のページ ==
* [[Scheme/継続]]
* [[Scheme/継続の種類と利用例]]
* [[Scheme/syntax-rules]]
== 関連項目 ==
*[[48時間でSchemeを書こう]]
==外部リンク==
{{Wikipedia}}
*R5RS
**[https://www.schemers.org/Documents/Standards/R5RS/ R5RS] 本家。
**[http://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj_toc.html アルゴリズム言語Schemeに関する第五改訂報告書] 日本語訳。
**[https://www.unixuser.org/~euske/doc/r5rs-ja/index.html R5RS日本語訳] 日本語訳。
*[https://www.r6rs.org/ R6RS]
*[http://milkpot.sakura.ne.jp/scheme/r7rs.html R7RS]
*インタプリタとコンパイラ
**[http://www.gnu.org/software/guile/guile.html Guile] GNUプロジェクトで開発されているインタプリタ。
**[http://sourceforge.jp/projects/gauche/ Gauche] インタプリタ。
**[http://www.scheme.com/chezscheme.html Chez Scheme] 商用Schemeコンパイラ。
**[https://www.scheme.com/petitechezscheme.html Petite Chez Scheme] 上記[http://www.scheme.com/chezscheme.html Chez Scheme]のフリー版インタプリタ。
{{stub|it}}
[[Category:Scheme|*]]
{{NDC|007.64}}
pcgny627h2au92rbxaw2jbfzxsmf4sz
JavaScript
0
1471
301485
301323
2026-07-13T08:29:44Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301485
wikitext
text/x-wiki
{{pathnav|メインページ|工学|情報技術|プログラミング|frame=1}}
[[File:JavaScript.svg|thumb|right|200px|[[JavaScript/はじめに#Hello World|Hello, World!]]]]
本書は、JavaScriptの解説書です。JavaScriptは、ウェブページやウェブアプリケーションで広く使われているスクリプト言語であり、最も広く普及しているプログラミング言語の一つです。また、Node.jsなどのランタイム環境を使うことで、サーバーサイドでもJavaScriptを実行することができます。
本書では、初めてプログラミングをする人から、他の言語で経験を積んだ人まで、広く対象としています。基本的なJavaScriptの書き方を解説することで、読者がより深く理解できるように配慮しました。
JavaScriptは、初心者が学ぶのに最適なプログラミング言語であり、ブラウザだけで簡単にプログラムを作ることができます。言語のコア部分は、国際標準化団体であるEcmaインターナショナルによって[[ECMAScript]]として標準化され、仕様が明確になっています。[[Node.js]]などのランタイム環境を使うことで、JavaScriptをより高度なアプリケーション開発にも利用できます。
== 目次 ==
{{進捗状況}}
# [[JavaScript/はじめに|はじめに]]
# [[JavaScript/文法|文法]]
## [[JavaScript/字句構造|字句構造]]
## [[JavaScript/セミコロンの自動挿入|セミコロンの自動挿入]]
## [[JavaScript/予約語|予約語]]
# [[JavaScript/変数|変数]]
# [[JavaScript/演算子|演算子]]
# [[JavaScript/オブジェクト|オブジェクト]]
# [[JavaScript/文字列|文字列]]
# [[JavaScript/数値|数値]]
# [[JavaScript/配列|配列]]
# [[JavaScript/制御構造|制御構造]]
# [[JavaScript/関数|関数]]
# [[JavaScript/クラス|クラス]]
# [[JavaScript/strictモード|strictモード]]
# [[JavaScript/ビット演算|ビット演算]]
# [[JavaScript/例外処理|例外処理]]
# [[JavaScript/正規表現|正規表現]]
# [[JavaScript/長整数|長整数]]
# [[JavaScript/型付き配列|型付き配列]]
# [[JavaScript/Polyfill|Polyfill]]
# [[JavaScript/ブラウザ|ブラウザ]]
# [[JavaScript/コードギャラリー|コードギャラリー]]
# Web API {{---}} Web APIは、JavaScriptでWebブラウザを制御する標準的な手段であり、Webページに対して様々な操作(例えば、要素の追加や削除、イベントの処理、非同期通信等)を行うことができます。
## [[JavaScript/Window|Windowオブジェクト]]
## [[JavaScript/DOM|DOM API]]
## [[JavaScript/Console|Console API]]
## [[JavaScript/Canvas|Canvas API]]
## [[JavaScript/XMLHttpRequest|Fetch API]]
## [[JavaScript/イベント処理|イベント処理]]
## [[JavaScript/クッキー|クッキー]]
# [[/改廃された技術|改廃された技術]]
# ライブラリ(フレームワーク)
## [[JavaScript/ライブラリ|ライブラリ]]
# [[JSON]]
# [[JavaScript/XML|XML]]
# リファレンス<!--
const ary = [],
errors = []
for (const x of Object.getOwnPropertyNames(globalThis)) {
if (x == "Buffer") continue
const prop = globalThis[x]
if (1 || typeof prop === "function") {
try {
if ("prototype" in prop && "constructor" in prop.prototype) {
// console.log("XXX ",x)
ary.push(x)
const obj = new prop()
if (obj instanceof Error)
errors.push(x)
}
} catch (err) {
// console.log("Err: ", err)
}
}
}
ary.filter(x => !errors.includes(x)).sort().forEach(x => console.log(`## [[JavaScript/${x}|${x}]]`))
errors.sort().forEach(x => console.log(`### [[JavaScript/${x}|${x}]]`))
## [[JavaScript/Array|Array]]
## [[JavaScript/ArrayBuffer|ArrayBuffer]]
## [[JavaScript/BigInt|BigInt]]
## [[JavaScript/BigInt64Array|BigInt64Array]]
## [[JavaScript/BigUint64Array|BigUint64Array]]
## [[JavaScript/Boolean|Boolean]]
## [[JavaScript/DataView|DataView]]
## [[JavaScript/Date|Date]]
## [[JavaScript/FinalizationRegistry|FinalizationRegistry]]
## [[JavaScript/Float32Array|Float32Array]]
## [[JavaScript/Float64Array|Float64Array]]
## [[JavaScript/Function|Function]]
## [[JavaScript/Int16Array|Int16Array]]
## [[JavaScript/Int32Array|Int32Array]]
## [[JavaScript/Int8Array|Int8Array]]
## [[JavaScript/Map|Map]]
## [[JavaScript/Number|Number]]
## [[JavaScript/Object|Object]]
## [[JavaScript/Promise|Promise]]
## [[JavaScript/RegExp|RegExp]]
## [[JavaScript/Set|Set]]
## [[JavaScript/SharedArrayBuffer|SharedArrayBuffer]]
## [[JavaScript/String|String]]
## [[JavaScript/Symbol|Symbol]]
## [[JavaScript/TextDecoder|TextDecoder]]
## [[JavaScript/TextEncoder|TextEncoder]]
## [[JavaScript/URL|URL]]
## [[JavaScript/URLSearchParams|URLSearchParams]]
## [[JavaScript/Uint16Array|Uint16Array]]
## [[JavaScript/Uint32Array|Uint32Array]]
## [[JavaScript/Uint8Array|Uint8Array]]
## [[JavaScript/Uint8ClampedArray|Uint8ClampedArray]]
## [[JavaScript/WeakMap|WeakMap]]
## [[JavaScript/WeakRef|WeakRef]]
## [[JavaScript/WeakSet|WeakSet]]
## [[JavaScript/clearImmediate|clearImmediate]]
## [[JavaScript/clearInterval|clearInterval]]
## [[JavaScript/clearTimeout|clearTimeout]]
## [[JavaScript/queueMicrotask|queueMicrotask]]
## [[JavaScript/setImmediate|setImmediate]]
## [[JavaScript/setInterval|setInterval]]
## [[JavaScript/setTimeout|setTimeout]]
### [[JavaScript/Error|Error]]
### [[JavaScript/EvalError|EvalError]]
### [[JavaScript/RangeError|RangeError]]
### [[JavaScript/ReferenceError|ReferenceError]]
### [[JavaScript/SyntaxError|SyntaxError]]
### [[JavaScript/TypeError|TypeError]]
### [[JavaScript/URIError|URIError]]
-->
## [[JavaScript/Global|Global]]
## [[JavaScript/Array|Array]]
## [[JavaScript/BigInt|BigInt]]
## [[JavaScript/Boolean|Boolean]]
## [[JavaScript/Date|Date]]
## [[JavaScript/FinalizationRegistry|FinalizationRegistry]]
## [[JavaScript/Function|Function]]
## [[JavaScript/Generator|Generator]]
## [[JavaScript/Iterator|Iterator]]
## [[JavaScript/Map|Map]]
## [[JavaScript/WeakMap|WeakMap]]
## [[JavaScript/Math|Math]]
## [[JavaScript/Number|Number]]
## [[JavaScript/Object|Object]]
## [[JavaScript/Promise|Promise]]
## [[JavaScript/RegExp|RegExp]]
## [[JavaScript/Set|Set]]
## [[JavaScript/WeakSet|WeakSet]]
## [[JavaScript/String|String]]
## [[JavaScript/Symbol|Symbol]]
## [[JavaScript/WeakRef|WeakRef]]
## [[JavaScript/Error|Error]]
### [[JavaScript/EvalError|EvalError]]
### [[JavaScript/RangeError|RangeError]]
### [[JavaScript/ReferenceError|ReferenceError]]
### [[JavaScript/SyntaxError|SyntaxError]]
### [[JavaScript/TypeError|TypeError]]
### [[JavaScript/URIError|URIError]]
## [[JavaScript/Intl|Intl]]
{| class="sortable wikitable"
|+ JavaScriptの基本的なオブジェクト一覧
! 名称 || 種類 || 機能
|-
| <code>[[/Object|Object]]</code> || コンストラクタ関数 || すべてのオブジェクトの基本となるプロトタイプを提供。
|-
| <code>[[/Function|Function]]</code> || コンストラクタ関数 || 関数オブジェクトを定義し、動的に関数を作成可能。
|-
| <code>[[/Array|Array]]</code> || コンストラクタ関数 || 順序付きリストを保持し、要素の操作をサポート。
|-
| <code>[[/String|String]]</code> || コンストラクタ関数 || 文字列を扱い、各種文字列操作メソッドを提供。
|-
| <code>[[/Number|Number]]</code> || コンストラクタ関数 || 数値を扱い、数値演算や変換を提供。
|-
| <code>[[/BigInt|BigInt]]</code> || コンストラクタ関数 || 大きな整数 (<code>[[/2^53|2^53]]</code> 以上) を扱う。
|-
| <code>[[/Boolean|Boolean]]</code> || コンストラクタ関数 || <code>[[/true|true]]</code> または <code>[[/false|false]]</code> を扱う。
|-
| <code>[[/Symbol|Symbol]]</code> || コンストラクタ関数 || 一意な識別子を作成するためのプリミティブ型オブジェクト。
|-
| <code>[[/Math|Math]]</code> || グローバルオブジェクト || 数学的な定数 (<code>Math.PI</code>) や関数 (<code>Math.sqrt()</code>) を提供。
|-
| <code>[[/Date|Date]]</code> || コンストラクタ関数 || 日時を扱い、操作・フォーマットが可能。
|-
| <code>[[/RegExp|RegExp]]</code> || コンストラクタ関数 || 正規表現を扱い、文字列検索や置換を実行。
|-
| <code>[[/Error|Error]]</code> || コンストラクタ関数 || エラーオブジェクトで、例外処理用の基本クラス。
|-
| <code>[[/Promise|Promise]]</code> || コンストラクタ関数 || 非同期処理の結果を表し、コールバックの代替として使用。
|-
| <code>[[/Map|Map]]</code> || コンストラクタ関数 || キーと値のペアを保持し、キーにあらゆるデータ型を使用可能。
|-
| <code>[[/Set|Set]]</code> || コンストラクタ関数 || 一意の値を保持するコレクション。
|-
| <code>[[/WeakMap|WeakMap]]</code> || コンストラクタ関数 || <code>[[/Map|Map]]</code> のような構造だが、キーが弱参照される。
|-
| <code>[[/WeakSet|WeakSet]]</code> || コンストラクタ関数 || <code>[[/Set|Set]]</code> のような構造だが、オブジェクトのみを保持し、弱参照される。
|-
| <code>[[/JSON|JSON]]</code> || グローバルオブジェクト || JSONのパース (<code>JSON.parse()</code>) や文字列化 (<code>JSON.stringify()</code>) を提供。
|-
| <code>[[/Intl|Intl]]</code> || グローバルオブジェクト || 国際化 (<code>[[/Intl/DateTimeFormat|Intl.DateTimeFormat]]</code> など) をサポート。
|-
| <code>[[/Reflect|Reflect]]</code> || グローバルオブジェクト || オブジェクト操作を動的に行うメタプログラミング用API。
|-
| <code>[[/Proxy|Proxy]]</code> || コンストラクタ関数 || オブジェクトの動作をカスタマイズするためのインターセプターを提供。
|-
| <code>[[/Atomics|Atomics]]</code> || グローバルオブジェクト || <code>[[/SharedArrayBuffer|SharedArrayBuffer]]</code> を用いたスレッド間の低レベル同期を提供。
|-
| <code>[[/SharedArrayBuffer|SharedArrayBuffer]]</code> || コンストラクタ関数 || 複数のWeb Worker間でメモリ共有を可能にするバッファ。
|-
| <code>[[/ArrayBuffer|ArrayBuffer]]</code> || コンストラクタ関数 || バイナリデータを固定長で扱うバッファ。
|-
| <code>[[/DataView|DataView]]</code> || コンストラクタ関数 || <code>[[/ArrayBuffer|ArrayBuffer]]</code> に対して異なるデータ型でアクセス可能なビュー。
|-
| <code>[[/TypedArray|TypedArray]]</code> || コンストラクタ関数 || 型付き配列 (<code>[[/Int8Array|Int8Array]]</code> など) を提供し、高速なバイナリデータ操作を実現。
|}
; ポイント'''
* <code>[[/Math|Math]]</code> や <code>[[/JSON|JSON]]</code> は '''グローバルオブジェクト''' で、インスタンス化 (<code>new Math()</code>) できない。
* <code>[[/Object|Object]]</code>, <code>[[/Array|Array]]</code>, <code>[[/Function|Function]]</code> などは '''コンストラクタ関数''' で、<code>[[/new|new]]</code> を使ってインスタンスを作成可能。
* <code>[[/Promise|Promise]]</code>, <code>[[/Map|Map]]</code>, <code>[[/Set|Set]]</code> なども '''コンストラクタ関数''' で、新しいデータ構造を提供。
* <code>[[/Reflect|Reflect]]</code>, <code>[[/Atomics|Atomics]]</code> は '''グローバルオブジェクト''' であり、特定のユーティリティ機能を提供。
== Javaとの関連性 ==
JavaScriptとJavaは名前が似ていますが、実際にはかなり異なるプログラミング言語です。それぞれの特徴と関連性について簡潔に説明します。
# '''起源と命名'''
#: JavaScriptは当初、Java言語の人気にあやかって名付けられました。
#: しかし、両言語の開発元は異なります(JavaScriptはNetscape、JavaはSun Microsystems)。
# '''言語の特徴'''
#: JavaScript: 主にWeb開発用の動的型付け言語。
#: Java: 汎用的な静的型付け言語。
# '''実行環境'''
#: JavaScript: 主にブラウザ上で動作(Node.jsなどサーバーサイドも可能)。
#: Java: 主にサーバーサイドやデスクトップアプリケーションで使用。
# '''構文'''
#: 一部の構文(ループ、条件文、演算子など)に類似点がありますが、全体的な言語設計は大きく異なります。
# '''オブジェクト指向'''
#: 両言語ともオブジェクト指向をサポートしていますが、実装方法が異なります。
#: JavaScript: プロトタイプベースのオブジェクト指向言語。
#: Java: クラスベースのオブジェクト指向言語。
# '''相互運用性'''
#: 完全に別々の言語であり、直接的な互換性はありません。
# '''用途'''
#: JavaScriptはWeb開発、特にフロントエンド開発で主に使用されます。
#: Javaは大規模なエンタープライズアプリケーション、Androidアプリ開発などに使用されます。
結論として、JavaScriptとJavaは名前の類似性以外に深い関連性はありません。それぞれが異なる目的と設計思想を持つ独立した言語です。
== JavaScriptの応用範囲 ==
JavaScriptは、Web開発において最も広く使用される言語の一つであり、以下のような応用範囲があります。
* クライアントサイドWeb開発:JavaScriptは、Webブラウザで動作するクライアントサイドのWebアプリケーション開発に使用されます。JavaScriptを使用することで、ユーザーがWebページやWebアプリケーションを対話的に操作することができます。
* サーバーサイドWeb開発:Node.jsを使用することで、JavaScriptはサーバーサイドのWebアプリケーション開発にも使用されます。Node.jsは、JavaScriptを実行するためのランタイム環境であり、サーバーサイドでのWebアプリケーションの実行や、データベースやファイルシステムなどのI/O操作を実行することができます。
* モバイルアプリケーション開発:React Nativeを使用することで、JavaScriptはモバイルアプリケーション開発にも使用されます。React Nativeは、JavaScriptを使用してiOSやAndroidのネイティブモバイルアプリケーションを開発するためのフレームワークです。
* デスクトップアプリケーション開発:Electronを使用することで、JavaScriptはデスクトップアプリケーション開発にも使用されます。Electronは、JavaScriptを使用して、Windows、Mac、Linuxなどのデスクトップアプリケーションを開発するためのフレームワークです。
* ゲーム開発:JavaScriptは、Webブラウザ上で動作するゲーム開発にも使用されます。HTML5 CanvasやWebGLなどのWeb技術を使用することで、高品質のWebゲームを開発することができます。
JavaScriptは、Web技術を中心に広く使用される言語であり、多くの場面で使用されています。これらの応用範囲は、今後も拡大することが予想されます。
== 派生言語 ==
JavaScriptの派生言語には、以下のようなものがあります。
=== TypeScript ===
{{main|TypeScript}}
Microsoftが開発したJavaScriptのスーパーセットであり、静的型付けやクラス、インターフェースなどの機能を追加しています。
;TypeScriptのコード例:<syntaxhighlight lang=ts>
function greet(name: string) {
console.log(`Hello, ${name}!`);
}
greet("John");
</syntaxhighlight>
=== JavaScript XML ===
JavaScript XML(JSX)は、JavaScriptの拡張構文であり、Reactフレームワークで一般的に使用されます。JSXは、HTMLライクな構文をJavaScriptコードに埋め込むことができ、Reactコンポーネントの宣言的な記述やUIの構築を簡素化します。
JSXでは、<code><nowiki><div></nowiki></code>や<code><nowiki><span></nowiki></code>などのHTML要素をJavaScriptコード内で直接記述できます。これにより、コンポーネント階層構造を視覚的に表現し、リーダブルで保守しやすいコードを記述できます。また、JavaScriptの変数や式を<code>{}</code>で囲んで埋め込むことができ、動的な値をレンダリングすることができます。
例えば、以下はJSXを使用してReactコンポーネントを宣言的に記述する例です:
;JavaScript XMLのコード例:<syntaxhighlight lang=jsx>
import React from 'react';
const Greeting = ({ name }) => {
return (
<div>
<h1>Hello, {name}!</h1>
<p>Welcome to JSX.</p>
</div>
);
};
export default Greeting;
</syntaxhighlight>
この例では、<code>Greeting</code>コンポーネントが<code>name</code>プロパティを受け取り、JSX内でその値を表示しています。JSXはReactにおいて、UIを構築するためのシンタックスシュガーとして広く採用され、Reactの開発者がより効果的かつ可読性の高いコードを書くのに役立ちます。
=== TypeScript XML ===
TypeScript XML(TSX)は、Reactアプリケーションのためのファイル拡張子で、[[#TypeScript|TypeScript]]を使用してReactコンポーネントを記述するための構文です。TSXファイルは、JSX(JavaScript XML)とTypeScriptの機能を組み合わせたもので、静的型チェックとReactコンポーネントの記述を同時に行うことができます。
TSXでは、Reactコンポーネントを定義するために、JSXの構文を使用します。この構文は、HTMLライクな要素構造をJavaScriptやTypeScriptのコード内に埋め込むためのもので、UIを宣言的かつコンパクトに記述できます。また、TypeScriptの型システムを活用して、コンポーネントのプロパティやステートに関する型情報を提供できます。
例えば、以下は簡単なReactコンポーネントを含むTSXファイルの例です:
;TypeScript XMLのコード例:<syntaxhighlight lang=react>
import React, { useState } from 'react';
interface CounterProps {
initialValue: number;
}
const Counter: React.FC<CounterProps> = ({ initialValue }) => {
const [count, setCount] = useState(initialValue);
const increment = () => setCount(count + 1);
const decrement = () => setCount(count - 1);
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
</div>
);
};
export default Counter;
</syntaxhighlight>
この例では、<code>Counter</code>コンポーネントが<code>CounterProps</code>型のプロパティを受け取り、ステートとして<code>count</code>を持っています。JSX内で<code>{}</code>を使用してJavaScriptやTypeScriptのコードを埋め込むことができ、動的なUIを構築できます。
=== CoffeeScript ===
JavaScriptの文法をより簡潔にした言語で、コードを読みやすくするための構文糖衣を提供します。
;CoffeeScriptのコード例:<syntaxhighlight lang=coffeescript>
greet = (name) ->
console.log "Hello, #{name}!"
greet "John"
</syntaxhighlight>
== 参考文献 ==
* [https://262.ecma-international.org/5.1/ Standard ECMA-262 5.1 Edition / June 2011 ECMAScript® Language Specification]([https://es5.github.io 注釈版])
* [https://262.ecma-international.org/6.0/ Standard ECMA-262 6th Edition / June 2015 ECMAScript® 2015 Language Specification]
* [https://tc39.es/ecma262/ Draft ECMA-262 ECMAScript® Language Specification]
* [https://402.ecma-international.org/ ECMA-402 7th Edition / June 2020 ECMAScript® 2020 Internationalization API Specification]
=== 標準API ===
* [https://compat.spec.whatwg.org/ Compatibility Living Standard]
* [https://compression.spec.whatwg.org/ Compression Living Standard]
* [https://console.spec.whatwg.org/ Console Living Standard]
* [https://dom.spec.whatwg.org/ DOM Living Standard]
* [https://encoding.spec.whatwg.org/ Encoding Living Standard]
* [https://fetch.spec.whatwg.org/ Fetch Living Standard]
* [https://fs.spec.whatwg.org/ File System Living Standard]
* [https://fullscreen.spec.whatwg.org/ Fullscreen API Living Standard]
* [https://html.spec.whatwg.org/ HTML Living Standard]
* [https://infra.spec.whatwg.org/ Infra Living Standard]
* [https://mimesniff.spec.whatwg.org/ MIME Sniffing Living Standard]
* [https://notifications.spec.whatwg.org/ Notifications API Living Standard]
* [https://quirks.spec.whatwg.org/ Quirks Mode Living Standard]
* [https://storage.spec.whatwg.org/ Storage Living Standard]
* [https://streams.spec.whatwg.org/ Streams Living Standard]
* [https://testutils.spec.whatwg.org/ Test Utils Living Standard]
* [https://url.spec.whatwg.org/ URL Living Standard]
* [https://urlpattern.spec.whatwg.org/ URL Pattern Living Standard]
* [https://webidl.spec.whatwg.org/ Web IDL Living Standard]
* [https://websockets.spec.whatwg.org/ WebSockets Living Standard]
* [https://w3c.github.io/mediasession/ Media Session Standard]
* [https://xhr.spec.whatwg.org/ XMLHttpRequest Living Standard] Ajax
== 関連項目 ==
* [[JSDoc]]
== 下位階層のページ ==
*[[JavaScript/]]
*[[JavaScript/!]]
*[[JavaScript/!=]]
*[[JavaScript/!==]]
*[[JavaScript/""]]
*[[JavaScript/"0"]]
*[[JavaScript/&&=]]
*[[JavaScript/()]]
*[[JavaScript/*]]
*[[JavaScript/**]]
*[[JavaScript/+]]
*[[JavaScript/++@]]
*[[JavaScript/+@]]
*[[JavaScript/--@]]
*[[JavaScript/-0]]
*[[JavaScript/-@]]
*[[JavaScript/-Infinity]]
*[[JavaScript/0]]
*[[JavaScript/0n]]
*[[JavaScript/1]]
*[[JavaScript/42]]
*[[JavaScript/=]]
*[[JavaScript/==]]
*[[JavaScript/===]]
*[[JavaScript/?.]]
*[[JavaScript/?.ブラケット参照演算子]]
*[[JavaScript/??]]
*[[JavaScript/??=]]
*[[JavaScript/@()]]
*[[JavaScript/@++]]
*[[JavaScript/@--]]
*[[JavaScript/@?.()]]
*[[JavaScript/AJAX]]
*[[JavaScript/AbortController]]
*[[JavaScript/AbortSignal]]
*[[JavaScript/AggregateError]]
*[[JavaScript/Array]]
*[[JavaScript/Array/prototype]]
*[[JavaScript/Array/prototype/Symbol.iterator]]
*[[JavaScript/Array/prototype/concat]]
*[[JavaScript/Array/prototype/entries]]
*[[JavaScript/Array/prototype/keys]]
*[[JavaScript/Array/prototype/push]]
*[[JavaScript/Array/prototype/values]]
*[[JavaScript/ArrayBuffer]]
*[[JavaScript/Array Iterator Objects]]
*[[JavaScript/Async Iterable Interface]]
*[[JavaScript/Async Iterator Interface]]
*[[JavaScript/Asynchronous Module Definition]]
*[[JavaScript/Atomics]]
*[[JavaScript/BigInt]]
*[[JavaScript/BigInt/prototype]]
*[[JavaScript/BigInt64Array]]
*[[JavaScript/BigUint64Array]]
*[[JavaScript/Blob]]
*[[JavaScript/Body]]
*[[JavaScript/Boolean]]
*[[JavaScript/Boolean/prototype]]
*[[JavaScript/Booleanとboolean]]
*[[JavaScript/BroadcastChannel]]
*[[JavaScript/ByteLengthQueuingStrategy]]
*[[JavaScript/Canvas]]
*[[JavaScript/CommonJS]]
*[[JavaScript/Common Iteration Interfaces]]
*[[JavaScript/Compression Living Standard]]
*[[JavaScript/Console]]
*[[JavaScript/Constructor Properties of the Global Object]]
*[[JavaScript/CountQueuingStrategy]]
*[[JavaScript/Crypto]]
*[[JavaScript/DOM]]
*[[JavaScript/DOM/Array-Likeオブジェクト]]
*[[JavaScript/DOM/Attribute]]
*[[JavaScript/DOM/Document]]
*[[JavaScript/DOM/Element]]
*[[JavaScript/DOM/Node]]
*[[JavaScript/DOM/NodeList]]
*[[JavaScript/DOM/Text]]
*[[JavaScript/DOM/querySelector]]
*[[JavaScript/DOM/querySelectorAll]]
*[[JavaScript/DOMException]]
*[[JavaScript/DataView]]
*[[JavaScript/Date]]
*[[JavaScript/ECMAScript Module]]
*[[JavaScript/ECMAScriptの変遷]]
*[[JavaScript/ECMAScript言語仕様読解の手引]]
*[[JavaScript/Element]]
*[[JavaScript/Error]]
*[[JavaScript/EvalError]]
*[[JavaScript/Event]]
*[[JavaScript/EventTarget]]
*[[JavaScript/File]]
*[[JavaScript/File API]]
*[[JavaScript/FinalizationRegistry]]
*[[JavaScript/Float16Array]]
*[[JavaScript/Float32Array]]
*[[JavaScript/Float64Array]]
*[[JavaScript/FormData]]
*[[JavaScript/Function]]
*[[JavaScript/Function/prototype]]
*[[JavaScript/Function/prototype/apply]]
*[[JavaScript/Function/prototype/bind]]
*[[JavaScript/Function/prototype/call]]
*[[JavaScript/Function/prototype/constructor]]
*[[JavaScript/Function/prototype/length]]
*[[JavaScript/Function/prototype/name]]
*[[JavaScript/Function/prototype/toString]]
*[[JavaScript/Generator]]
*[[JavaScript/Generator/素数ジェネレター]]
*[[JavaScript/GeneratorFunction]]
*[[JavaScript/Global]]
*[[JavaScript/Global Object]]
*[[JavaScript/Headers]]
*[[JavaScript/Identifier]]
*[[JavaScript/Indexed Collections]]
*[[JavaScript/Infinity]]
*[[JavaScript/Int16Array]]
*[[JavaScript/Int32Array]]
*[[JavaScript/Int8Array]]
*[[JavaScript/Intl]]
*[[JavaScript/Iterable Interface]]
*[[JavaScript/Iterator]]
*[[JavaScript/Iterator/prototype]]
*[[JavaScript/Iterator/prototype/Symbol.iterator]]
*[[JavaScript/IteratorResult Interface]]
*[[JavaScript/Iterator Helper Objects]]
*[[JavaScript/Iterator Interface]]
*[[JavaScript/JSON]]
*[[JavaScript/JSON/parse]]
*[[JavaScript/JScript]]
*[[JavaScript/JavaScriptのオブジェクト]]
*[[JavaScript/JavaScriptのクラス]]
*[[JavaScript/JavaScriptの型と値]]
*[[JavaScript/JavaScriptの型変換]]
*[[JavaScript/JavaScriptの演算子]]
*[[JavaScript/JavaScriptエンジン]]
*[[JavaScript/Map]]
*[[JavaScript/Map/prototype]]
*[[JavaScript/Map/prototype/Symbol.iterator]]
*[[JavaScript/Map/prototype/entries]]
*[[JavaScript/Map/prototype/keys]]
*[[JavaScript/Map/prototype/values]]
*[[JavaScript/Math]]
*[[JavaScript/Math/E]]
*[[JavaScript/Math/LN10]]
*[[JavaScript/Math/LN2]]
*[[JavaScript/Math/LOG10E]]
*[[JavaScript/Math/LOG2E]]
*[[JavaScript/Math/PI]]
*[[JavaScript/Math/SQRT1 2]]
*[[JavaScript/Math/SQRT2]]
*[[JavaScript/Math/abs]]
*[[JavaScript/Math/acos]]
*[[JavaScript/Math/acosh]]
*[[JavaScript/Math/asin]]
*[[JavaScript/Math/asinh]]
*[[JavaScript/Math/atan]]
*[[JavaScript/Math/atan2]]
*[[JavaScript/Math/atanh]]
*[[JavaScript/Math/cbrt]]
*[[JavaScript/Math/ceil]]
*[[JavaScript/Math/clz32]]
*[[JavaScript/Math/cos]]
*[[JavaScript/Math/cosh]]
*[[JavaScript/Math/exp]]
*[[JavaScript/Math/expm1]]
*[[JavaScript/Math/floor]]
*[[JavaScript/Math/fround]]
*[[JavaScript/Math/hypot]]
*[[JavaScript/Math/imul]]
*[[JavaScript/Math/log]]
*[[JavaScript/Math/log10]]
*[[JavaScript/Math/log1p]]
*[[JavaScript/Math/log2]]
*[[JavaScript/Math/max]]
*[[JavaScript/Math/min]]
*[[JavaScript/Math/pow]]
*[[JavaScript/Math/random]]
*[[JavaScript/Math/round]]
*[[JavaScript/Math/sign]]
*[[JavaScript/Math/sin]]
*[[JavaScript/Math/sinh]]
*[[JavaScript/Math/sqrt]]
*[[JavaScript/Math/tan]]
*[[JavaScript/Math/tanh]]
*[[JavaScript/Math/trunc]]
*[[JavaScript/Mathオブジェクト]]
*[[JavaScript/NaN]]
*[[JavaScript/Node]]
*[[JavaScript/Node.js Worker API と Web Workers API]]
*[[JavaScript/Number]]
*[[JavaScript/Number/EPSILON]]
*[[JavaScript/Number/MAX SAFE INTEGER]]
*[[JavaScript/Number/MAX VALUE]]
*[[JavaScript/Number/MIN SAFE INTEGER]]
*[[JavaScript/Number/MIN VALUE]]
*[[JavaScript/Number/NEGATIVE INFINITY]]
*[[JavaScript/Number/NaN]]
*[[JavaScript/Number/POSITIVE INFINITY]]
*[[JavaScript/Number/isFinite]]
*[[JavaScript/Number/isInteger]]
*[[JavaScript/Number/isNaN]]
*[[JavaScript/Number/isSafeInteger]]
*[[JavaScript/Number/parseFloat]]
*[[JavaScript/Number/parseInt]]
*[[JavaScript/Number/prototype]]
*[[JavaScript/Number/prototype/constructor]]
*[[JavaScript/Object]]
*[[JavaScript/Object.is]]
*[[JavaScript/Object/GetOwnPropertyKeys]]
*[[JavaScript/Object/ proto]]
*[[JavaScript/Object/assign]]
*[[JavaScript/Object/create]]
*[[JavaScript/Object/defineProperties]]
*[[JavaScript/Object/defineProperty]]
*[[JavaScript/Object/entries]]
*[[JavaScript/Object/freeze]]
*[[JavaScript/Object/fromEntries]]
*[[JavaScript/Object/getOwnPropertyDescriptor]]
*[[JavaScript/Object/getOwnPropertyDescriptors]]
*[[JavaScript/Object/getOwnPropertyNames]]
*[[JavaScript/Object/getOwnPropertySymbols]]
*[[JavaScript/Object/getPrototypeOf]]
*[[JavaScript/Object/groupBy]]
*[[JavaScript/Object/hasOwn]]
*[[JavaScript/Object/is]]
*[[JavaScript/Object/isExtensible]]
*[[JavaScript/Object/isFrozen
*[[JavaScript/Object/isSealed]]
*[[JavaScript/Object/keys]]
*[[JavaScript/Object/preventExtensions]]
*[[JavaScript/Object/prototype]]
*[[JavaScript/Object/prototype/ defineGetter]]
*[[JavaScript/Object/prototype/constructor]]
*[[JavaScript/Object/prototype/hasOwnProperty]]
*[[JavaScript/Object/prototype/isPrototypeOf]]
*[[JavaScript/Object/prototype/propertyIsEnumerable]]
*[[JavaScript/Object/prototype/toLocaleString]]
*[[JavaScript/Object/prototype/toString]]
*[[JavaScript/Object/prototype/valueOf]]
*[[JavaScript/Object/seal]]
*[[JavaScript/Object/setPrototypeOf]]
*[[JavaScript/Object/values]]
*[[JavaScript/Operators]]
*[[JavaScript/Polyfill]]
*[[JavaScript/Promise]]
*[[JavaScript/Promise/prototype]]
*[[JavaScript/Proxy]]
*[[JavaScript/Proxy/revocable]]
*[[JavaScript/RangeError]]
*[[JavaScript/ReadableStream]]
*[[JavaScript/ReadableStreamDefaultReader]]
*[[JavaScript/ReferenceError]]
*[[JavaScript/Reflect]]
*[[JavaScript/Reflect/apply]]
*[[JavaScript/Reflect/construct]]
*[[JavaScript/Reflect/defineProperty]]
*[[JavaScript/Reflect/deleteProperty]]
*[[JavaScript/RegExp]]
*[[JavaScript/RegExp/prototype]]
*[[JavaScript/RegExp/prototype/exec]]
*[[JavaScript/Request]]
*[[JavaScript/Response]]
*[[JavaScript/Restパラメータ]]
*[[JavaScript/Set]]
*[[JavaScript/Set/prototype]]
*[[JavaScript/Set/prototype/Symbol.iterator]]
*[[JavaScript/Set/prototype/values]]
*[[JavaScript/SharedArrayBuffer]]
*[[JavaScript/SharedArrayBuffer/prototype]]
*[[JavaScript/Streams API]]
*[[JavaScript/String]]
*[[JavaScript/String/fromCharCode]]
*[[JavaScript/String/fromCodePoint]]
*[[JavaScript/String/prototype]]
*[[JavaScript/String/prototype/StringPaddingBuiltinsImpl]]
*[[JavaScript/String/prototype/Symbol.iterator]]
*[[JavaScript/String/prototype/at]]
*[[JavaScript/String/prototype/charAt]]
*[[JavaScript/String/prototype/charCodeAt]]
*[[JavaScript/String/prototype/codePointAt]]
*[[JavaScript/String/prototype/concat]]
*[[JavaScript/String/prototype/constructor]]
*[[JavaScript/String/prototype/endsWith]]
*[[JavaScript/String/prototype/includes]]
*[[JavaScript/String/prototype/indexOf]]
*[[JavaScript/String/prototype/isWellFormed]]
*[[JavaScript/String/prototype/lastIndexOf]]
*[[JavaScript/String/prototype/localeCompare]]
*[[JavaScript/String/prototype/match]]
*[[JavaScript/String/prototype/matchAll]]
*[[JavaScript/String/prototype/normalize]]
*[[JavaScript/String/prototype/padEnd]]
*[[JavaScript/String/prototype/padStart]]
*[[JavaScript/String/prototype/quote]]
*[[JavaScript/String/prototype/repeat]]
*[[JavaScript/String/prototype/replace]]
*[[JavaScript/String/prototype/replaceAll]]
*[[JavaScript/String/prototype/search]]
*[[JavaScript/String/prototype/slice]]
*[[JavaScript/String/prototype/split]]
*[[JavaScript/String/prototype/startsWith]]
*[[JavaScript/String/prototype/substring]]
*[[JavaScript/String/prototype/toLocaleLowerCase]]
*[[JavaScript/String/prototype/toLocaleUpperCase]]
*[[JavaScript/String/prototype/toLowerCase]]
*[[JavaScript/String/prototype/toString]]
*[[JavaScript/String/prototype/toUpperCase]]
*[[JavaScript/String/prototype/toWellFormed]]
*[[JavaScript/String/prototype/trim]]
*[[JavaScript/String/prototype/trimEnd]]
*[[JavaScript/String/prototype/trimStart]]
*[[JavaScript/String/prototype/valueOf]]
*[[JavaScript/String/raw]]
*[[JavaScript/SuiteSparse]]
*[[JavaScript/Symbol]]
*[[JavaScript/Symbol/asyncIterator]]
*[[JavaScript/Symbol/iterator]]
*[[JavaScript/Symbol/toStringTag]]
*[[JavaScript/SyntaxError]]
*[[JavaScript/TransformStream]]
*[[JavaScript/Tree Shaking]]
*[[JavaScript/TypeError]]
*[[JavaScript/TypedArray]]
*[[JavaScript/URIError]]
*[[JavaScript/URL]]
*[[JavaScript/URLSearchParams]]
*[[JavaScript/Uint16Array]]
*[[JavaScript/Uint32Array]]
*[[JavaScript/Uint8Array]]
*[[JavaScript/Uint8ClampedArray]]
*[[JavaScript/Universal Module Definition]]
*[[JavaScript/Vue.js]]
*[[JavaScript/WeakMap]]
*[[JavaScript/WeakMap/prototype]]
*[[JavaScript/WeakRef]]
*[[JavaScript/WeakSet]]
*[[JavaScript/WeakSet/prototype]]
*[[JavaScript/WebAssembly]]
*[[JavaScript/WebSocket]]
*[[JavaScript/Web Compatibility Standard]]
*[[JavaScript/Web Worker]]
*[[JavaScript/Web Worker API]]
*[[JavaScript/Web開発におけるワークフロー管理システム]]
*[[JavaScript/Well-Known Symbols]]
*[[JavaScript/Window]]
*[[JavaScript/for(;;)]]
*[[JavaScript/socket.io]]
*[[JavaScript/イテレータプロトコル]]
*[[JavaScript/イテレータヘルパー]]
*[[JavaScript/キーワード]]
*[[JavaScript/ソースマップ]]
*[[JavaScript/フィーチャーディテクション]]
*[[JavaScript/モジュール]]
*[[JavaScript/モダンJavaScript]]
*[[JavaScript/数値の区切り]]
*[[JavaScript/種々雑多な知識]]
*[[JavaScript/遅延評価メソッドチェイン]]
== グローバルインスタンス ==
{| class="sortable wikitable"
|+ グローバルインスタンス一覧
! 名称 || タイプ || 解説
|-
| <code>[[/AbortController|AbortController]]</code> || [[/function|function]] || 非同期操作を中止するためのコントローラー
|-
| <code>[[/AbortSignal|AbortSignal]]</code> || [[/function|function]] || 中止シグナル<ref>DOM: https://dom.spec.whatwg.org/#interface-AbortSignal</ref>
|-
| <code>[[/AggregateError|AggregateError]]</code> || [[/function|function]] || 複数のエラーをまとめたエラーオブジェクト
|-
| <code>[[/Array|Array]]</code> || [[/function|function]] || 配列オブジェクト
|-
| <code>[[/ArrayBuffer|ArrayBuffer]]</code> || [[/function|function]] || 一般的な固定長バイナリデータバッファ
|-
| <code>[[/Atomics|Atomics]]</code> || [[/object|object]] || 共有メモリ上での原子的操作を提供するオブジェクト
|-
| <code>[[/BigInt64Array|BigInt64Array]]</code> || [[/function|function]] || 符号付き64ビット整数配列
|-
| <code>[[/BigInt|BigInt]]</code> || [[/function|function]] || 任意の精度の整数
|-
| <code>[[/BigUint64Array|BigUint64Array]]</code> || [[/function|function]] || 符号なし64ビット整数配列
|-
| <code>[[/Blob|Blob]]</code> || [[/function|function]] || 不変の生のデータオブジェクト<ref>File API: https://w3c.github.io/FileAPI/#blob-section</ref>
|-
| <code>[[/Boolean|Boolean]]</code> || [[/function|function]] || 真偽値オブジェクト
|-
| <code>[[/BroadcastChannel|BroadcastChannel]]</code> || [[/function|function]] || ブラウザコンテキスト間のブロードキャスト通信<ref>HTML: https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts</ref>
|-
| <code>[[/Buffer|Buffer]]</code> || [[/function|function]] || Node.jsにおけるバイナリデータバッファ<ref>Node.js: https://nodejs.org/api/buffer.html</ref>
|-
| <code>[[/ByteLengthQueuingStrategy|ByteLengthQueuingStrategy]]</code> || [[/function|function]] || ストリームのキューイング戦略(バイト長)<ref>Streams: https://streams.spec.whatwg.org/#blqs-class</ref>
|-
| <code>[[/CompressionStream|CompressionStream]]</code> || [[/function|function]] || 圧縮ストリーム<ref>Compression: https://compression.spec.whatwg.org/#compression-stream</ref>
|-
| <code>[[/CountQueuingStrategy|CountQueuingStrategy]]</code> || [[/function|function]] || ストリームのキューイング戦略(カウント)
|-
| <code>[[/Crypto|Crypto]]</code> || [[/function|function]] || 暗号関連機能を提供するオブジェクト
|-
| <code>[[/CryptoKey|CryptoKey]]</code> || [[/function|function]] || 暗号鍵
|-
| <code>[[/CustomEvent|CustomEvent]]</code> || [[/function|function]] || カスタムイベント
|-
| <code>[[/DOMException|DOMException]]</code> || [[/function|function]] || DOM操作に関連する例外
|-
| <code>[[/DataView|DataView]]</code> || [[/function|function]] || ArrayBuffer上のデータへの低レベルアクセス
|-
| <code>[[/Date|Date]]</code> || [[/function|function]] || 日付と時刻オブジェクト
|-
| <code>[[/DecompressionStream|DecompressionStream]]</code> || [[/function|function]] || 展開ストリーム
|-
| <code>[[/Error|Error]]</code> || [[/function|function]] || 一般的なエラーオブジェクト
|-
| <code>[[/EvalError|EvalError]]</code> || [[/function|function]] || eval()に関連するエラー
|-
| <code>[[/Event|Event]]</code> || [[/function|function]] || イベントオブジェクト
|-
| <code>[[/EventTarget|EventTarget]]</code> || [[/function|function]] || イベントターゲット
|-
| <code>[[/File|File]]</code> || [[/function|function]] || ファイルオブジェクト
|-
| <code>[[/FinalizationRegistry|FinalizationRegistry]]</code> || [[/function|function]] || オブジェクトのガベージコレクション通知
|-
| <code>[[/Float32Array|Float32Array]]</code> || [[/function|function]] || 32ビット浮動小数点数配列
|-
| <code>[[/Float64Array|Float64Array]]</code> || [[/function|function]] || 64ビット浮動小数点数配列
|-
| <code>[[/FormData|FormData]]</code> || [[/function|function]] || HTMLフォームデータ
|-
| <code>[[/Function|Function]]</code> || [[/function|function]] || 関数オブジェクト
|-
| <code>[[/Headers|Headers]]</code> || [[/function|function]] || HTTPヘッダー
|-
| <code>[[/Infinity|Infinity]]</code> || [[/number|number]] || 無限大
|-
| <code>[[/Int16Array|Int16Array]]</code> || [[/function|function]] || 符号付き16ビット整数配列
|-
| <code>[[/Int32Array|Int32Array]]</code> || [[/function|function]] || 符号付き32ビット整数配列
|-
| <code>[[/Int8Array|Int8Array]]</code> || [[/function|function]] || 符号付き8ビット整数配列
|-
| <code>[[/Intl|Intl]]</code> || [[/object|object]] || 国際化関連機能を提供するオブジェクト
|-
| <code>[[/Iterator|Iterator]]</code> || [[/function|function]] || イテレーター
|-
| <code>[[/JSON|JSON]]</code> || [[/object|object]] || JSON関連機能を提供するオブジェクト
|-
| <code>[[/Map|Map]]</code> || [[/function|function]] || マップオブジェクト
|-
| <code>[[/Math|Math]]</code> || [[/object|object]] || 数学関連機能を提供するオブジェクト
|-
| <code>[[/MessageChannel|MessageChannel]]</code> || [[/function|function]] || メッセージチャネル
|-
| <code>[[/MessageEvent|MessageEvent]]</code> || [[/function|function]] || メッセージイベント
|-
| <code>[[/MessagePort|MessagePort]]</code> || [[/function|function]] || メッセージポート
|-
| <code>[[/NaN|NaN]]</code> || [[/number|number]] || 非数 (Not-a-Number)
|-
| <code>[[/Navigator|Navigator]]</code> || [[/function|function]] || ブラウザナビゲーション関連機能
|-
| <code>[[/Number|Number]]</code> || [[/function|function]] || 数値オブジェクト
|-
| <code>[[/Object|Object]]</code> || [[/function|function]] || オブジェクト<!--
|-
| <code>[[/Performance|Performance]]</code> || [[/function|function]] || パフォーマンス関連機能を提供するオブジェクト
|-
| <code>[[/PerformanceEntry|PerformanceEntry]]</code> || [[/function|function]] || パフォーマンスエントリー
|-
| <code>[[/PerformanceMark|PerformanceMark]]</code> || [[/function|function]] || パフォーマンスマーク
|-
| <code>[[/PerformanceMeasure|PerformanceMeasure]]</code> || [[/function|function]] || パフォーマンス計測
|-
| <code>[[/PerformanceObserver|PerformanceObserver]]</code> || [[/function|function]] || パフォーマンスオブザーバー
|-
| <code>[[/PerformanceObserverEntryList|PerformanceObserverEntryList]]</code> || [[/function|function]] || パフォーマンスオブザーバーエントリーリスト
|-
| <code>[[/PerformanceResourceTiming|PerformanceResourceTiming]]</code> || [[/function|function]] || パフォーマンスリソースタイミング
-->
|-
| <code>[[/Promise|Promise]]</code> || [[/function|function]] || Promiseオブジェクト
|-
| <code>[[/Proxy|Proxy]]</code> || [[/function|function]] || プロキシオブジェクト
|-
| <code>[[/RangeError|RangeError]]</code> || [[/function|function]] || 範囲エラー
|-
| <code>[[/ReadableByteStreamController|ReadableByteStreamController]]</code> || [[/function|function]] || ReadableByteStreamのコントローラー
|-
| <code>[[/ReadableStream|ReadableStream]]</code> || [[/function|function]] || 読み取り可能ストリーム
|-
| <code>[[/ReadableStreamBYOBReader|ReadableStreamBYOBReader]]</code> || [[/function|function]] || ReadableStreamのBYOBリーダー
|-
| <code>[[/ReadableStreamBYOBRequest|ReadableStreamBYOBRequest]]</code> || [[/function|function]] || ReadableStreamのBYOBリクエスト
|-
| <code>[[/ReadableStreamDefaultController|ReadableStreamDefaultController]]</code> || [[/function|function]] || ReadableStreamのデフォルトコントローラー
|-
| <code>[[/ReadableStreamDefaultReader|ReadableStreamDefaultReader]]</code> || [[/function|function]] || ReadableStreamのデフォルトリーダー
|-
| <code>[[/ReferenceError|ReferenceError]]</code> || [[/function|function]] || 参照エラー
|-
| <code>[[/Reflect|Reflect]]</code> || [[/object|object]] || リフレクション関連機能を提供するオブジェクト
|-
| <code>[[/RegExp|RegExp]]</code> || [[/function|function]] || 正規表現オブジェクト
|-
| <code>[[/Request|Request]]</code> || [[/function|function]] || HTTPリクエスト
|-
| <code>[[/Response|Response]]</code> || [[/function|function]] || HTTPレスポンス
|-
| <code>[[/Set|Set]]</code> || [[/function|function]] || セットオブジェクト
|-
| <code>[[/SharedArrayBuffer|SharedArrayBuffer]]</code> || [[/function|function]] || 共有ArrayBuffer
|-
| <code>[[/String|String]]</code> || [[/function|function]] || 文字列オブジェクト
|-
| <code>[[/SubtleCrypto|SubtleCrypto]]</code> || [[/function|function]] || 暗号関連機能(Subtle)
|-
| <code>[[/Symbol|Symbol]]</code> || [[/function|function]] || シンボル
|-
| <code>[[/SyntaxError|SyntaxError]]</code> || [[/function|function]] || 構文エラー
|-
| <code>[[/TextDecoder|TextDecoder]]</code> || [[/function|function]] || テキストデコーダー
|-
| <code>[[/TextDecoderStream|TextDecoderStream]]</code> || [[/function|function]] || テキストデコーダーストリーム
|-
| <code>[[/TextEncoder|TextEncoder]]</code> || [[/function|function]] || テキストエンコーダー
|-
| <code>[[/TextEncoderStream|TextEncoderStream]]</code> || [[/function|function]] || テキストエンコーダーストリーム
|-
| <code>[[/TransformStream|TransformStream]]</code> || [[/function|function]] || 変換ストリーム
|-
| <code>[[/TransformStreamDefaultController|TransformStreamDefaultController]]</code> || [[/function|function]] || 変換ストリームのデフォルトコントローラー
|-
| <code>[[/TypeError|TypeError]]</code> || [[/function|function]] || 型エラー
|-
| <code>[[/URIError|URIError]]</code> || [[/function|function]] || URIエラー
|-
| <code>[[/URL|URL]]</code> || [[/function|function]] || URLオブジェクト
|-
| <code>[[/URLSearchParams|URLSearchParams]]</code> || [[/function|function]] || URL検索パラメータ
|-
| <code>[[/Uint16Array|Uint16Array]]</code> || [[/function|function]] || 符号なし16ビット整数配列
|-
| <code>[[/Uint32Array|Uint32Array]]</code> || [[/function|function]] || 符号なし32ビット整数配列
|-
| <code>[[/Uint8Array|Uint8Array]]</code> || [[/function|function]] || 符号なし8ビット整数配列
|-
| <code>[[/Uint8ClampedArray|Uint8ClampedArray]]</code> || [[/function|function]] || 符号なし8ビット整数配列(クランプ)
|-
| <code>[[/WeakMap|WeakMap]]</code> || [[/function|function]] || WeakMapオブジェクト
|-
| <code>[[/WeakRef|WeakRef]]</code> || [[/function|function]] || WeakRefオブジェクト
|-
| <code>[[/WeakSet|WeakSet]]</code> || [[/function|function]] || WeakSetオブジェクト
|-
| <code>[[/WebAssembly|WebAssembly]]</code> || [[/object|object]] || WebAssembly関連機能を提供するオブジェクト
|-
| <code>[[/WebSocket|WebSocket]]</code> || [[/function|function]] || WebSocketオブジェクト
|-
| <code>[[/WritableStream|WritableStream]]</code> || [[/function|function]] || 書き込み可能ストリーム
|-
| <code>[[/WritableStreamDefaultController|WritableStreamDefaultController]]</code> || [[/function|function]] || 書き込み可能ストリームのデフォルトコントローラー
|-
| <code>[[/WritableStreamDefaultWriter|WritableStreamDefaultWriter]]</code> || [[/function|function]] || 書き込み可能ストリームのデフォルトライター
|-
| <code>[[/atob|atob]]</code> || [[/function|function]] || Base64デコード
|-
| <code>[[/btoa|btoa]]</code> || [[/function|function]] || Base64エンコード
|-
| <code>[[/clearImmediate|clearImmediate]]</code> || [[/function|function]] || setImmediateのキャンセル
|-
| <code>[[/clearInterval|clearInterval]]</code> || [[/function|function]] || setIntervalのキャンセル
|-
| <code>[[/clearTimeout|clearTimeout]]</code> || [[/function|function]] || setTimeoutのキャンセル
|-
| <code>[[/console|console]]</code> || [[/object|object]] || コンソール関連機能を提供するオブジェクト
|-
| <code>[[/crypto|crypto]]</code> || [[/object|object]] || 暗号関連機能を提供するオブジェクト
|-
| <code>[[/decodeURI|decodeURI]]</code> || [[/function|function]] || URIデコード
|-
| <code>[[/decodeURIComponent|decodeURIComponent]]</code> || [[/function|function]] || URIコンポーネントデコード
|-
| <code>[[/encodeURI|encodeURI]]</code> || [[/function|function]] || URIエンコード
|-
| <code>[[/encodeURIComponent|encodeURIComponent]]</code> || [[/function|function]] || URIコンポーネントエンコード
|-
| <code>[[/escape|escape]]</code> || [[/function|function]] || 文字列エスケープ
|-
| <code>[[/eval|eval]]</code> || [[/function|function]] || 文字列をJavaScriptコードとして実行
|-
| <code>[[/fetch|fetch]]</code> || [[/function|function]] || HTTPリクエスト
|-
| <code>[[/global|global]]</code> || [[/object|object]] || グローバルオブジェクト(Node.js)
|-
| <code>[[/globalThis|globalThis]]</code> || [[/object|object]] || グローバルオブジェクト
|-
| <code>[[/isFinite|isFinite]]</code> || [[/function|function]] || 有限数判定
|-
| <code>[[/isNaN|isNaN]]</code> || [[/function|function]] || NaN判定
|-
| <code>[[/navigator|navigator]]</code> || [[/object|object]] || ブラウザナビゲーション関連機能を提供するオブジェクト
|-
| <code>[[/parseFloat|parseFloat]]</code> || [[/function|function]] || 浮動小数点数パース
|-
| <code>[[/parseInt|parseInt]]</code> || [[/function|function]] || 整数パース
|-
| <code>[[/performance|performance]]</code> || [[/object|object]] || パフォーマンス関連機能を提供するオブジェクト
|-
| <code>[[/process|process]]</code> || [[/object|object]] || Node.jsプロセス関連機能を提供するオブジェクト
|-
| <code>[[/queueMicrotask|queueMicrotask]]</code> || [[/function|function]] || マイクロタスクキューへの追加
|-
| <code>[[/setImmediate|setImmediate]]</code> || [[/function|function]] || 即時実行(Node.js)
|-
| <code>[[/setInterval|setInterval]]</code> || [[/function|function]] || 定期実行
|-
| <code>[[/setTimeout|setTimeout]]</code> || [[/function|function]] || 遅延実行
|-
| <code>[[/structuredClone|structuredClone]]</code> || [[/function|function]] || 構造化クローン
|-
| <code>[[/undefined|undefined]]</code> || [[/undefined|undefined]] || 未定義値
|-
| <code>[[/unescape|unescape]]</code> || [[/function|function]] || 文字列アンエスケープ
|}
== 外部リンク ==
{{wikipedia}}
{{wikiversity|Topic:Javascript|JavaScript}}
* [//developer.mozilla.org/ja/docs/Web/JavaScript JavaScript - MDN]
{{DEFAULTSORT:JAVASCRIPT}}
[[Category:JavaScript|*]]
[[Category:スクリプティング言語]]
[[Category:プログラミング言語]]
[[Category:World Wide Web]]
{{NDC|007.64}}
c6ck2xynawt0rwx9n54gedy3j6cygwi
線型代数学
0
2007
301515
292376
2026-07-13T09:54:59Z
AkiR27User
90873
[[線型代数学/内積]]追加
301515
wikitext
text/x-wiki
{{Pathnav|数学|frame=1}}
本項は線形代数学の解説です。主に学部線形代数(理工系が必修として学ぶ範囲)の内容を扱います。その他の内容に就いては[[線型代数学続論]]を参照。
{{進捗状況}}
== 序論・導入 ==
* [[/序論|序論]]
* [[/ベクトル|ベクトル]]
** [[高等学校数学C/ベクトル]]も参照のこと。
* [[/行列概論|行列概論]]
** [[旧課程(-2012年度)高等学校数学C/行列]]及び[[高等学校数学C/数学的な表現の工夫]]も参照のこと。
== 線型方程式 ==
* [[/線型方程式|線型方程式序論]]
* [[/行列の基本変形|行列の基本変形]] {{進捗|100%|2009-05-31}}
* [[/逆行列|逆行列]] {{進捗|100%|2009-06-2}}
* [[/線型方程式の解|線型方程式の解]] {{進捗|50%|2009-06-28}}
== 行列式 ==
* [[線形代数学/行列式|行列式]] {{進捗|25%|2021-03-09}}
* [[線形代数学/余因子行列|余因子行列]]
* [[/クラメルの公式|クラメルの公式]]
== 線形空間 ==
* [[/線型空間|線型空間]]
* [[/線形写像|線形写像]]
* [[/基底と次元|基底と次元]]
* [[/計量ベクトル空間|計量ベクトル空間]]
== 対角化と固有値 ==
* [[/固有値と固有ベクトル|固有値と固有ベクトル]]
* [[/行列の三角化|行列の三角化]]
* [[/行列の対角化|行列の対角化]] {{進捗|50%|2018-11-29}}
* [[/二次形式|二次形式]]{{進捗|25%|2020-8-19}}
== ジョルダン標準形 ==
* [[/単因子|単因子]]
* [[/ジョルダン標準形|ジョルダン標準形]]
== 分類依頼 ==
* [[線型代数学/内積]]
{{stub}}
[[Category:線形代数学|*]]
[[Category:数学|せんけいたいすうかく]]
0u3byv0td4qnlz7cxrhrq5qg36q3r93
熱力学
0
2036
301514
270130
2026-07-13T09:53:38Z
AkiR27User
90873
[[熱力学/可逆過程]]追加
301514
wikitext
text/x-wiki
{{Pathnav|自然科学|物理学|frame=1|small=1}}
[[ファイル:Baron Kelvin 1906.jpg|William Thomson, 1st Baron Kelvin|サムネイル]]
{{wikiversity|Topic:熱学|熱学}}
本項は熱力学の解説です。
* [[熱力学/はじめに|はじめに]] {{進捗|25%|2025-2-24}}
* [[熱力学/温度|温度(熱力学の第0法則)]] {{進捗|25%|2025-2-24}}
* [[熱力学/熱と仕事|熱と仕事(熱力学の第1法則)]] {{進捗|25%|2025-2-24}}
* [[熱力学/熱力学第二法則|熱力学第二法則と第三法則]] {{進捗|100%|2025-2-24}}
* [[熱力学/可逆過程|可逆過程]]
* [[熱力学/多成分系|多成分系]]
* [[熱力学/熱力学的なエネルギー|熱力学的なエネルギー]] {{進捗|25%|2025-2-24}}
{{stub}}
{{DEFAULTSORT:ねつりきかく}}
[[Category:熱力学|*]]
{{NDC|426}}
ong898oo337l7yb70c8kgu76f1gz65d
語学
0
2749
301565
294481
2026-07-13T11:53:46Z
AkiR27User
90873
/* インド・イラン語派 */ [[シレット語]]追加
301565
wikitext
text/x-wiki
{{Navi| [[メインページ]] > [[人文科学]] > '''語学'''}}
{{NDC|810}}
{{NDC|820}}
{{NDC|830}}
{{NDC|840}}
{{NDC|850}}
{{NDC|860}}
{{NDC|870}}
{{NDC|880}}
{{NDC|890}}
{| style="float:right"
|-
|{{Wikipedia|語学|語学}}
|-
|{{Wikiquote|ことば|言語}}
|-
|{{Wiktionary|Category:言語|言語}}
|-
|{{Commons|Category:Language}}
|-
|{{wikiversity|School:語学と文学|語学}}
|-
|{{蔵書一覧}}
|-
|{{進捗状況}}
|}
語学に関する教科書が集められています。書き方等は[[Wikibooks:ウィキプロジェクト 語学|ウィキプロジェクト 語学]]を参照してください。
なお、語彙に関しては[[wikt:Wiktionary:メインページ|ウィクショナリー]]をご覧ください。
== 共通情報 ==
* [[新しい言語の習得法]]
* [[国際音声記号]]
== 日本語 ==
* [[日本語]]{{進捗|50%|2023-09-25}}
* [[小学校国語]]
* [[中学校国語]]
* [[高等学校国語]]
** [[高等学校現代の国語|現代の国語]]
** [[高等学校言語文化|言語文化]]
** [[高等学校文学国語|文学国語]]
** [[高等学校論理国語|論理国語]]
** [[高等学校古典探究|古典探究]]
** [[高等学校国語表現|国語表現]]
*[[日本語の方言|方言]](各方言についてはこのページを参照ください)
**[[北海道方言]]
***内陸部方言
***海岸部方言
**[[東北方言]]
***北奥羽方言
***南奥羽方言
**[[関東方言]]
***[[東関東方言]]
***[[西関東方言]]
***[[東京方言]]
***[[首都圏方言]]
**[[東海東山方言]]
***ナヤシ方言
***[[越後方言]]
***ギア方言
**[[八丈方言]]
**[[西日本方言]]
***[[近畿方言]]
***[[北陸方言]]
***[[中国方言]]
***[[雲白方言]]
***[[四国方言]]
**[[九州方言]]
***[[豊日方言]]
***[[肥筑方言]]
***[[薩隅方言]]
{{琉球語/一覧}}
*[[やさしい日本語]]
*[[日本語対応手話]]([[日本手話]]とは異なる)
== 孤立した言語 ==
(日本語を除く)
*[[アイヌ語]]
*[[ニヴフ語]]
*[[朝鮮語]](韓国語)
*[[ユカギール語]]
*[[ブルシャスキ語]]
*[[バスク語]]
*[[シュメール語]]
== シナ・チベット語族 ==
=== シナ語派 ===
*[[中国語]][[画像:25%.svg]]
**[[呉語]]
***[[上海語]]
***[[蘇州語]]
***[[温州語]]
**[[贛語]]
**[[閩語]]
***[[閩東語]]
****[[福州語]]
***[[台湾語]]、[[閩南語]]
****[[潮州語]]
****[[海南語]]
**[[客家語]]
**[[広東語]]
===チベット・ビルマ語派===
**[[チベット語]]
**[[レプチャ語]]
**[[ネワール語]]
**[[ビルマ語]]
**[[ペー語]]
**[[ゾンカ語]]
**[[メイテイ語]](マニプル語)
**[[ミゾ語]](ルシャイ語)
**[[コクバラ語]](コク・ボロック)
== タイ・カダイ語族 ==
*[[タイ語]]
*[[ラーオ語]]
*[[チワン語]]
== オーストロアジア語族 ==
*ベト・ムオン語派
**[[ベトナム語]]
*ムンダ語派
**[[サンタル語]]
**[[ムンダ語]]
*モン・クメール語派
**[[モン語]]
**[[クメール語]](カンボジア語)
**[[パラウン語]]
== オーストロネシア語族 ==
*台湾諸語
**[[タイヤル語]]
**[[アミ語]]
**[[パイワン語]]
**[[ブヌン語]]
**[[ツォウ語]]
*マレー・ポリネシア語派
**[[マレー語]]
**[[インドネシア語]]
**[[フィリピノ語]](タガログ語)
**[[セブアノ語]]
**[[マダガスカル語]](マラガシー語)
**[[ハワイ語]]
**[[マオリ語]]
**[[トンガ語]]
**[[ツバル語]]
**[[タヒチ語]]
**[[フィジー語]]
**[[サモア語]]
**[[パラオ語]]
**[[チャモロ語]]
**[[ナウル語]]
**[[キリバス語]]
== アルタイ諸語 ==
*モンゴル諸語
**[[モンゴル語]]
***[[キリル文字モンゴル語]]
***[[モンゴル文字モンゴル語]]
**[[ブリヤート語]]
**[[カルムイク語]]
*テュルク諸語
**南西語群
***[[トルコ語]]
***[[オスマン語]]
***[[アゼリー語]](アゼルバイジャン語)
***[[トルクメン語]]
**北西語群
***[[カザフ語]]
***[[キルギス語]]
***[[タタール語]]
**南東語群
***[[ウズベク語]]
***[[ウイグル語]]
***[[チャガタイ語]]
**北東語群
***[[トゥヴァ語]]
***[[ハカス語]]
**[[サハ語]](ヤクート語)
**[[チュワシ語]]
*ツングース諸語
**[[満州語]]
**[[シボ語]]
**[[エヴェンキ語]]
**[[ウイルタ語]]
== ウラル語族 ==
*フィン・ウゴル語派
**バルト・フィン諸語
***[[エストニア語]]
***[[フィンランド語]]
***[[リヴォニア語]]
***[[カレリア語]]
**ウゴル諸語
***[[ハンガリー語]]
**ボルガ・フィン諸語
*** [[マリ語]]
== チュクチ・カムチャツカ語族 ==
*[[チュクチ語]]
*[[コリャーク語]]
*[[イテリメン語]]
== エスキモー・アレウト語族 ==
*[[アレウト語]]
*[[ユピック語]]
*[[イニュピアック語]]
*[[イヌクティトゥット語]]
*[[グリーンランド語]]
== ドラヴィダ語族 ==
*南語派
**[[タミル語]]
**[[カンナダ語]]
**[[マラヤーラム語]]
*中南部語派
**[[テルグ語]]
== インド・ヨーロッパ語族 ==
=== インド・イラン語派 ===
*インド諸語
**[[ヒンディー語]]
**[[ウルドゥー語]]
**[[シレット語]]
**[[シンディー語]]
**[[グジャラート語]]
**[[シンハラ語]]
**[[コンカニ語]]
**[[マラーティー語]]
**[[ディベヒ語]]
**[[ネパール語]]
**[[パンジャブ語]]
**[[ベンガル語]]
**[[サンスクリット語]]
**[[パーリ語]]
**[[アッサム語]]
**[[オリヤー語]]
**[[カシミール語]]
*イラン諸語
**[[ペルシア語]]{{進捗|100%|2025-09-18}}
**[[ダリー語]]
**[[タジク語]]
**[[クルド語]]
**[[パシュトゥン語]]
**[[バルチ語]]
**[[オセット語]]
**[[パミール諸語]]
**[[古代ペルシャ語]]
**[[アヴェスタ語]]
**[[パフラヴィー語]]
**[[ソグド語]]
=== ケルト語派 ===
*[[アイルランド語]]
*[[ウェールズ語]]
*[[ブルトン語]]
=== ゲルマン語派 ===
*西ゲルマン語群
** <span id="英語">[[英語]]</span>
***[[中学校英語]]
***高等学校英語
****[[高等学校英語文法]]
****[[高等学校英語リーディング]]
****[[高等学校英語ライティング]]
****[[高等学校英語オーラルコミュニケーション]]
***[[古英語]](古期英語)
***[[中英語]](中期英語)
**[[ドイツ語]]
***[[ドイツ語/表現集]]
**[[オランダ語]]
***[[アフリカーンス語]]
**[[フリジア語]]
*北ゲルマン語群
**[[アイスランド語]]
**[[ノルウェー語]]
**[[スウェーデン語]]
** [[デンマーク語]]
=== イタリック語派 ===
*[[ラテン語]]
*西ロマンス
**[[フランス語]]
**[[スペイン語]]
**[[ポルトガル語]]
**[[カタルーニャ語]]
*東ロマンス
**[[ルーマニア語]]
**[[イタリア語]]
=== スラヴ語派 ===
*東スラヴ語群
**[[ロシア語]]
**[[ウクライナ語]]
**[[ベラルーシ語]]
*西スラヴ語群
**[[ポーランド語]]
**[[カシューブ語]]
**[[チェコ語]]
**[[スロヴァキア語]]
*南スラヴ語群
**[[マケドニア語]]
**[[ブルガリア語]]
**[[スロヴェニア語]]
**[[セルビア語]]
**[[クロアチア語]]
=== バルト語派 ===
*[[リトアニア語]]
*[[ラトヴィア語]]
=== ギリシア語 ===
*[[ギリシア語]]
**[[古代ギリシア語]]
**[[古典ギリシア語]]
**[[新約ギリシア語]](コイネー)
**[[現代ギリシア語]]
=== 他の印欧語 ===
*[[アルバニア語]]
*[[アルメニア語]]
== アフロ・アジア語族 ==
*セム語派
**中央
***[[アラビア語]]
****[[正則アラビア語]](フスハー)
****[[アラビア語エジプト方言|エジプト方言]]
****[[アラビア語マグレブ方言|マグレブ方言]]
****[[マルタ語]]
***[[ヘブライ語]]
***[[アラム語]]
****[[シリア語]]
**南方
***西部
****[[アムハラ語]]
== ニジェール・コンゴ語族 ==
*[[ウォロフ語]]
*[[フラニ語]]
*[[バンバラ語]]
*[[マンディンカ語]]
*[[エウェ語]]
*[[スワヒリ語]]
*[[ズールー語]]
*[[ヨルバ語]]
*[[イボ語]]
== コイサン諸語 ==
*[[コン語]]
*[[ナマ語]] (コエコエ語)
*[[ヌーキ語]] (ヌン語)
*[[ハヅァ語]]
== コーカサス諸語 ==
*南コーカサス語族
**[[ジョージア語]]
**[[ミングレル語]]
*北西コーカサス語族
**[[アブハズ語]]
**[[ウビフ語]]
**[[アディゲ語]]
*北東コーカサス語族
**[[チェチェン語]]
**[[アヴァル語]]
**[[ダルギン語]]
**[[レズギ語]]
== 手話 ==
* [[日本手話]]
* [[イギリス手話]]
* [[アメリカ手話]]
* [[フランス手話]]
* [[ロシア手話]]
* [[中国手話]]
* [[ドイツ手話]]
* [[国際手話]]
== 計画言語・人工言語 ==
*[[エスペラント]]
*[[イド]]
*[[ヴォラピュク]]
*[[クリンゴン語]]
*[[ロジバン]]
*[[トキポナ]]
*[[インタースラーヴィク]]
*[[インターリングア]]
*[[ロマンス・ネオラティーノ]]
== 多言語の語学 ==
*[[トランスリンガル図鑑]]
== カテゴリツリー ==
{{#カテゴリツリー:語学}}
[[Category:語学|*]]
[[Category:書庫|こかく]]
64xuzzi5xi8khb76zw88xutwlvrgomp
TCP/IP
0
2952
301495
248197
2026-07-13T08:49:15Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301495
wikitext
text/x-wiki
== TCP/IPとは ==
TCP/IPは、Transmission Control Protocol (TCP) とInternet Protocol (IP) の組み合わせを指します。これらは、インターネットを含むネットワークでデータ通信を行うための主要なプロトコルです。
; TCP (Transmission Control Protocol) :TCPは、信頼性の高いデータ転送を提供するためのコネクション指向のプロトコルです。データをパケットに分割し、それらのパケットが確実に送信され、順序通りに受信されることを保証します。TCPは、Webブラウジング、ファイル転送、電子メールなどのアプリケーションで広く使用されています。
; IP (Internet Protocol) :IPは、データグラム形式でパケットを送受信するためのプロトコルです。IPは、パケットが送信元から目的地までの経路を決定し、それらのパケットが正しい宛先に届くことを保証します。IPはインターネット上のデータ通信の基盤となっています。
TCP/IPは、世界中のさまざまな種類のネットワークで使用されており、インターネットのコアプロトコルとして広く採用されています。これにより、異なるネットワークやコンピュータ間でのデータ通信が可能になります。
== TCP/IPの歴史 ==
TCP/IPの歴史は、インターネットの発展と密接に関連しています。以下に、その主要なマイルストーンを示します。
; 1960年代後半 : ARPANETの開発が始まり、パケットスイッチング技術が研究されます。この時期に、ARPANETのための通信プロトコルとして、初期の形態のインターネットプロトコルが開発されました。
; 1970年代初頭 : ARPANETの実装に向けて、最初のネットワーキングプロトコルであるNCP(Network Control Protocol)が開発されました。その後、TCP(Transmission Control Protocol)が開発され、1974年に公式に提案されました。
; 1970年代後半 : 1978年、Bob KahnとVint CerfによってTCP/IPプロトコルスイートが提案され、ARPANETでの実装が始まりました。これにより、複数のネットワーク間での通信が可能となり、インターネットの基盤が整いました。
; 1980年代 : TCP/IPプロトコルは広く普及し、ARPANET以外のネットワークにも採用されました。1983年1月1日、ARPANETはTCP/IPに移行し、これが「インターネットの誕生」と見なされています。
; 1980年代後半から1990年代 : インターネットの普及が加速し、世界中の大学、企業、政府機関がネットワークに接続されるようになりました。これにより、TCP/IPは標準的なネットワーキングプロトコルとして確立されました。
; 2000年代以降 : インターネットの急速な普及と発展に伴い、TCP/IPはますます重要な役割を果たすようになりました。新しい技術やアプリケーションが登場し、TCP/IPはその基盤として不可欠な存在となりました。
TCP/IPの歴史は、ネットワーク技術の進化とインターネットの成長に密接に結びついており、その重要性は今後もますます高まるでしょう。
== OSI参照モデル ==
TCP/IPは、OSI(Open Systems Interconnection)参照モデルとは独立して開発および実装されました。OSI参照モデルは、国際標準化機構(ISO)によって提案された7層のネットワークアーキテクチャですが、TCP/IPはその時期にはすでに広く使用されていました。
TCP/IPは、ARPANETおよびその後のインターネットのために開発され、そのデザインは実用性と効率性に焦点を当てています。一方、OSI参照モデルは理論的なモデルであり、TCP/IPとは異なるアプローチを取っています。
TCP/IPは、実際のネットワーク通信において非常に成功し、インターネットの成長と普及に大きく貢献しました。そのため、TCP/IPはOSI参照モデルとは無関係に、広く採用され、現在もインターネットの基盤として重要な役割を果たしています。
== DARPA ==
TCP/IPは、DARPA(Defense Advanced Research Projects Agency)が1960年代後半にARPANETの開発を推進するために開発された通信プロトコルです。DARPAは、米国国防総省の研究開発機関であり、ARPANETは当初、軍事通信ネットワークとしての要件に応えるために設計されました。
ARPANETの目的は、複数のコンピュータを異なる場所に分散配置し、これらのコンピュータ間でデータを交換することで、通信の信頼性と耐障害性を高めることでした。このために、信頼性の高いデータ転送を実現するTCPと、パケットネットワークの基盤となるIPが開発されました。
ARPANETは当初、米国国防総省の研究機関や大学によって使用されましたが、その後、民間部門や他の国の研究機関にも拡大しました。そして、これがインターネットの誕生と成長につながりました。
TCP/IPの開発とARPANETの構築は、軍事通信の要件に応えるだけでなく、異なるコンピュータシステムやネットワーク間の相互接続性を実現するための基盤となりました。その結果、TCP/IPはインターネットの発展に欠かせないプロトコルとなり、現代の情報通信社会を支える基盤として確立されました。
== TCP/IPとBSD ==
TCP/IPとBSD(Berkeley Software Distribution)は、密接に関連しています。以下にその関係を説明します。
; BSDの開発 : BSDは、Unixオペレーティングシステムの一種であり、1970年代から1980年代にかけてカリフォルニア大学バークレー校(UC Berkeley)で開発されました。BSDは、TCP/IPプロトコルスタックなど、多くのネットワーキング機能を含んでいました。
; TCP/IPの統合 : BSDの開発者は、ARPANETとの通信を可能にするためにTCP/IPプロトコルスタックをBSDに統合しました。この統合により、BSDはインターネットの成長と普及に重要な役割を果たしました。
; BSDライセンス : BSDライセンスは、オープンソースソフトウェアのライセンスの1つであり、BSDから派生したソフトウェアのソースコードを自由に使用、変更、再配布することを許可します。BSDライセンスの下でリリースされたソフトウェアは、TCP/IPの普及に大きく貢献しました。
; TCP/IPの普及 : BSDのTCP/IP実装は非常に高い品質であり、多くのUNIX系オペレーティングシステムに採用されました。これにより、TCP/IPは広く利用される標準プロトコルとなり、インターネットの発展に寄与しました。
総じて、BSDの開発とTCP/IPの統合は、インターネットの成長と普及における重要なマイルストーンであり、両者は密接に関連しています。BSDの貢献は、TCP/IPを広く利用可能にし、オープンソースの精神を広めることにも貢献しました。
== IPv4からIPv6へ ==
IPv4からIPv6への移行は、インターネットのアドレス空間の枯渇と新しい技術の導入によるものです。以下に、IPv4からIPv6への移行の背景と主な理由を示します。
; アドレス空間の枯渇 : IPv4は32ビットのアドレス空間を持ち、おおよそ42億のアドレスを提供します。しかし、インターネットの普及と機器の増加に伴い、IPv4のアドレスは枯渇しています。これに対し、IPv6は128ビットのアドレス空間を持ち、圧倒的に大量のアドレスを提供することができます。
; 新しい機能とセキュリティ : IPv6はIPv4に比べて多くの新機能を提供します。例えば、IPv6では自動アドレス構成やモバイルIP、マルチキャストアドレスの改善などが可能です。また、セキュリティ面でもIPv6はより強力な暗号化と認証を提供します。
; ネットワークの拡張性 : IPv6は、インターネット・オブ・シングス(IoT)やモバイルデバイスなど、将来のネットワークの拡張に適したプロトコルです。IPv6は、さまざまな種類のデバイスをインターネットに接続し、効率的な通信を可能にします。
; 技術の進歩と標準化 : IPv6は長年にわたって開発され、標準化されてきました。IPv6の普及に向けた技術的な取り組みや標準化作業が進められ、IPv4からIPv6への移行が推進されています。
総じて、IPv4からIPv6への移行は、インターネットの成長と発展に不可欠な要素であり、アドレス枯渇や新しい技術の導入によって促進されています。
=== ICMPやDHCPなどの統合 ===
IPv6では、従来のTCP/IPスイートに含まれていなかったプロトコルが統合されています。以下にその一部を紹介します。
; ICMPv6(Internet Control Message Protocol version 6) : ICMPv6は、IPv6ネットワークで使用されるコントロールメッセージプロトコルです。IPv4ではICMPv4が使用されていましたが、IPv6ではICMPv6がネットワークの状態やエラーの通知、パケットのフラグメントなどの機能を提供します。
; DHCPv6(Dynamic Host Configuration Protocol version 6) : DHCPv6は、IPv6ネットワークでのホストの動的なIPアドレスの割り当てやネットワーク構成情報の提供を行うプロトコルです。IPv4ではDHCPv4が使用されていましたが、IPv6ではDHCPv6が同様の機能を提供します。
; NDP(Neighbor Discovery Protocol) : NDPは、IPv6ネットワークでのノードの隣接関係の発見や、ルーターの広告、自動アドレス構成、ネイバーキャッシュのメンテナンスなどの機能を提供します。IPv4には存在しないプロトコルであり、IPv6の特徴的な機能の1つです。
; IPv6 over PPP(Point-to-Point Protocol) : PPPは、シリアルリンクを介したポイントツーポイント接続で使用されるプロトコルです。IPv6 over PPPは、PPP接続でIPv6を使用するための仕様であり、IPv6ネットワークの拡張性を向上させます。
; IPv6 over Ethernet : Ethernet上でIPv6を使用するための仕様もあります。これにより、従来のEthernetネットワークでもIPv6をサポートすることが可能となります。
IPv6ではこれらのプロトコルが統合されることで、IPv4からIPv6への移行がスムーズに進み、IPv6ネットワークでの機能や性能が向上します。
== TCP/IPの将来 ==
TCP/IPの将来に関して、いくつかの重要なトレンドや技術があります。HTTP/3でTCPの代わりにQUIC(Quick UDP Internet Connections)が使用されるようになったことは、その一例です。以下に、TCP/IPの将来に関するいくつかのポイントを示します。
; QUICプロトコルの普及 : HTTP/3では、従来のTCPを使用したHTTP/2の代わりに、QUICプロトコルが採用されました。QUICはUDPベースのプロトコルであり、TCPよりも高速で信頼性があり、特に高遅延ネットワークやモバイルネットワークでのパフォーマンスが向上します。将来的には、他のプロトコルやアプリケーションでもQUICが採用される可能性があります。
; IPv6の普及 : IPv6の普及が進み、従来のIPv4との混在状態から徐々に移行していくことが期待されています。IPv6は大規模なアドレス空間を提供し、セキュリティやモバイルデバイスなどの新しい要件に対応しています。将来的には、IPv6がインターネットの主流となることが予想されます。
; IoTや5Gの普及 : インターネット・オブ・シングス(IoT)や5Gの普及により、大量のデバイスがネットワークに接続されることが予想されます。これにより、ネットワークのトラフィックが増加し、新しい要件や課題が生じる可能性があります。TCP/IPプロトコルスタックは、これらの新しい環境に適応して進化する必要があります。
; セキュリティとプライバシーの強化 : インターネットの利用が増えるにつれて、セキュリティとプライバシーの保護がますます重要になります。将来的には、TCP/IPプロトコルスタックにおけるセキュリティ機能の強化や、プライバシー保護のための新しい仕組みが導入される可能性があります。
総じて、TCP/IPプロトコルスタックは、インターネットの基盤として不可欠な存在であり、技術の進化やニーズの変化に適応していく必要があります。将来的には、より高速で信頼性の高い通信を実現するための新しいプロトコルや技術が導入されることが期待されます。
== 用語集 ==
確かに、TCP/IPに関する重要な用語をまとめましょう。
; TCP (Transmission Control Protocol) : 信頼性の高い双方向の通信を行うためのプロトコル。データの順序、重複、損失を処理し、エラー制御を行います。
; IP (Internet Protocol) : ネットワーク層のプロトコル。パケットの論理アドレス指定とルーティングに使用されます。
; ポート番号 : TCP/IPプロトコルスイートでは、ポートを使ってプロセス間の通信を識別します。
; ソケット : プロセス間通信のためのプログラミングインターフェース。
; 3ウェイハンドシェイク : TCP接続を確立する際の手順。クライアントからサーバへの同期シーケンス番号の送信、サーバからの応答、クライアントからの確認応答で構成されます。
; MTU (Maximum Transmission Unit) : ネットワーク経路上で転送できる最大のパケットサイズ。
; フラグメンテーション : 大きなパケットをMTUに合わせて分割すること。
; ウィンドウサイズ : 受信側が一度に受け取れるデータの最大量を通知するメカニズム。
; ナグル化 : 小さなパケットを集約して送信遅延を最小化する技術。
; スロースタート : 輻輳制御アルゴリズムの一種で、通信開始時にウィンドウサイズを徐々に増やす手法。
; ルーティング : ネットワーク間でパケットを転送するための経路選択プロセス。
; ARP (Address Resolution Protocol) : IPアドレスからMACアドレスを解決するプロトコル。
; DHCP (Dynamic Host Configuration Protocol) : IPアドレスを自動的に割り当てるプロトコル。
; DNS (Domain Name System) : ドメイン名とIPアドレスの解決に使われるシステム。
; TCP/IPモデル : インターネット通信のための階層モデル。アプリケーション層、トランスポート層、インターネット層、ネットワークアクセス層で構成される。
これらはTCP/IPに関する代表的な用語の一部ですが、ネットワークの理解には重要な概念となります。
== 下位階層のページ ==
*[[TCP/IP/入門 各層の役割]]
*[[TCP/IP/入門 概要]]
[[Category:TCP/IP]]
i4x3lyk51hlsylt07twnsepucbjkcps
画像映像・音楽入門
0
2957
301561
296832
2026-07-13T11:45:08Z
AkiR27User
90873
* [[WebP]]* [[WebM]]追加
301561
wikitext
text/x-wiki
<small>[[情報技術]]>画像映像・音楽入門</small>
----
== 画像処理・CG ==
画像に関する基礎知識、ソフトを利用した[[画像処理・CG|画像処理やCG]]の作成について説明します。
== ソフトウェア解説 ==
* [[GIMP]]
* [[Inkscape]]
* [[Blender]]
=== 画像フォーマット ===
* [[WebP]]
== 動画 ==
[[動画]]の基礎知識、実際の動画作成方法について説明します。
=== 動画編集 ===
* Adobe After Effects
* [http://helpx.adobe.com/jp/premiere-pro.html Adobe Premiere]
* [https://help.apple.com/finalcutpro/ Apple Final Cut Pro]
* [https://help.apple.com/motion/mac/5.0/jp/motion/usermanual/ Apple Motion]
* [http://avid.force.com/pkb/articles/ja/User_Guide/essential-guide-jp?retURL=%2Fpkb%2Farticles%2Fja%2Fuser_guide%2Fessential-guide-jp&popup=true Avid Media Composer]
=== VJ(ビデオジョッキー) ===
* [[ビデオジョッキー入門]]
** ビデオジョッキーの概要
** ビデオジョッキー機材・準備
==== VJソフトの使い方 ====
* [http://cogevj.hu/wiki/index.php?title=Japanese_Manual CoGe]
* [http://opticious.jp/modul8/2012/04/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%E3%82%92%E5%85%AC%E9%96%8B%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%81/ Modul8]
* [https://www.resolume.com Resolume Avenue]
* [https://vidvox.net VDMX5]
=== プロジェクションマッピング ===
* [[w:プロジェクションマッピング|プロジェクションマッピングの概要]]
=== 動画フォーマット ===
* [[WebM]]
==== ソフト ====
* [[MadMapper]]
* [[Resolume Arena]]
* [[VPT(VideoProjectionTool)]]
==== 参考文献 ====
* 尾崎マサル 『プロジェクション・マッピング入門』 玄光社〈玄光社MOOK〉、2013年。
=== 動画その他 ===
* [[Processing]]
* [[openFrameworks]]
* [[Max(Max/MSP)]]
* [[Pure Data]]
{{デフォルトソート:かそうえいそうおんかくにゆうもん}}
[[Category:芸術]]
[[Category:情報技術]]
2eihnzedci9j0cl15d56fbfbafl7tfj
TCP/IP/入門 概要
0
3010
301491
248027
2026-07-13T08:46:17Z
AkiR27User
90873
AkiR27User がページ「[[TCP/IP入門 概要]]」を「[[TCP/IP/入門 概要]]」に移動しました: ページ体系の変更/明確化
248027
wikitext
text/x-wiki
== TCP/IPとは ==
インターネットの説明の際に必ず出てくるTCP/IPだが、これはネットワークに用いるプロトコル(通信規約。ある通信機能の方式に名前をつけたもの)を機能別に分類し、またその関連性を階層表現でまとめたものを意味する。プロトコルであるTCP、IPと混同してしまいがちだが、この2つのプロトコルが中心的な役割を果たすということで名前をとっているだけであり、実際にはTCPとIPだけでなく、他の多くのプロトコルも含めてTCP/IPと呼ぶ。
本来、ネットワークのプロトコル仕様は、OSI参照モデルという階層表現に準拠して構築されている。しかし、このOSI参照モデルは、あらゆるネットワークや状況に対応できるよう万能なモデルとして考案されたためか、マニアックなプロトコルなども視野に入れられ、またそれらのために全体として複雑な手順を踏むことになってしまう現実があった。まず手順として7階層という多くの手順を順番に踏んでいかなければならないため、処理に時間がかかり、分かりにくさも相まって効率が悪かった。そこで、実用的な機能を厳選し、階層を減らして効率アップを目指したのが、TCP/IPである。OSI参照モデルでの「ネットワーク層」が、TCP/IPでは「インターネット層」と表現されているところから、当初からインターネットへの利用を睨んで考案されたのではないかと思われる。1982年、UNIXの4.2BSDというOSに採用され、その後爆発的な普及をし、現在でもほとんどのネットワークで使用されている。
以下に、OSI参照モデルとTCP/IPとの関係を簡単に示す。
<table align="center" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="78%" id="AutoNumber1" height="299">
<tr>
<td width="28%" height="47" align="center" bgcolor="#FFFF99"><b>OSI参照モデルでの層名</b></td>
<td width="24%" height="47" align="center" bgcolor="#FFFF99"><b>主なプロトコル</b></td>
<td width="25%" height="47" align="center" bgcolor="#FFFF99"><b>使用機器</b></td>
<td width="72%" height="47" align="center" bgcolor="#FFFF99"><b>TCP/IPでの階層名</b></td>
</tr>
<tr>
<td width="28%" height="44" align="center" bgcolor="#CCFFFF">アプリケーション層</td>
<td width="24%" height="44" align="center" bgcolor="#CCFFFF">HTTP FTP POP SMTP Telnet DNS SNMP</td>
<td width="25%" height="107" rowspan="3" align="center" bgcolor="#CCFFFF">ゲートウェイ</td>
<td width="72%" rowspan="3" height="107" align="center" bgcolor="#CCFFFF">アプリケーション層</td>
</tr>
<tr>
<td width="28%" height="33" align="center" bgcolor="#CCFFFF">プレゼンテーション層</td>
<td width="24%" height="33" align="center" bgcolor="#CCFFFF"> mp3 avi lzh zip</td>
</tr>
<tr>
<td width="28%" height="28" align="center" bgcolor="#CCFFFF">セッション層</td>
<td width="24%" height="28" align="center" bgcolor="#CCFFFF">NetBIOS PAP</td>
</tr>
<tr>
<td width="28%" height="47" align="center" bgcolor="#CCFFFF">トランスポート層</td>
<td width="24%" height="47" align="center" bgcolor="#CCFFFF">TCP UDP</td>
<td width="25%" height="47" align="center" bgcolor="#CCFFFF"> </td>
<td width="72%" height="47" align="center" bgcolor="#CCFFFF">トランスポート層</td>
</tr>
<tr>
<td width="28%" height="31" align="center" bgcolor="#CCFFFF">ネットワーク層</td>
<td width="24%" height="31" align="center" bgcolor="#CCFFFF">IP ICMP ARP
RARP</td>
<td width="25%" height="31" align="center" bgcolor="#CCFFFF">ルータ</td>
<td width="72%" height="31" align="center" bgcolor="#CCFFFF">インターネット層</td>
</tr>
<tr>
<td width="28%" height="33" align="center" bgcolor="#CCFFFF">データリンク層</td>
<td width="24%" height="33" align="center" bgcolor="#CCFFFF">Ethernet</td>
<td width="25%" height="33" align="center" bgcolor="#CCFFFF">スイッチ ブリッジ</td>
<td rowspan="2" width="72%" height="33" align="center" bgcolor="#CCFFFF">リンク層</td>
</tr>
<tr>
<td width="28%" height="29" align="center" bgcolor="#CCFFFF">物理層</td>
<td width="24%" height="29" align="center" bgcolor="#CCFFFF">ケーブルの規格、形状など</td>
<td width="25%" height="29" align="center" bgcolor="#CCFFFF">各種ケーブル コネクタ</td>
</tr>
</table>
== TCP/IPを学ぶ意義 ==
TCP/IPを学ぶことは、個人レベルでのネットワーク構築だけでなく、通信やネットワークに関連した様々な業界への足がかりとなる。特に現在はインターネットの爆発的な普及により、通信回線所有世帯や、LANを構築する企業がかなりの増加傾向にある。サーバーなどはホスティングサービスを活用して外注することができても、社内のネットワークについては自社で見ることの場合がほとんどで、日々の業務でも関係が深い情報システム部員にもTCP/IPの知識は持っておきたいものである。
以下に、具体的な関連職、関連資格などを示す。
=== 関連職・業務 ===
*'''ネットワークエンジニア(NE)'''
ルータなどの機器を使用・監視し、ネットワークを永続的に稼働できるよう保守・運用などを行うエンジニア。広義には、サーバの構築や運用保守を行うエンジニアもここに分類される。どちらにしろ、TCP/IPに直接触れることになる職業であり、最も関連性の高い職業の1つであるといえる。ネットワークの爆発的な普及に伴い、人手不足の状況にある。
*'''サーバ関係'''
サーバの構築や保守・運用にも、通信が大いに関わるためTCP/IPの知識は不可欠である。プロトコルで言うと、WebサーバはHTTPやFTPなどを利用しており、DNSサーバでは名前そのままにDNSを基にしており、メールサーバではPOPやSMTPなどのプロトコルが用いられている、といった具合である。サーバは個人レベルならWindowsで利用している人も多いが、専門とする企業では[[Solaris]]などのUNIX系OSを利用するところがほとんどである。
*'''システムエンジニア(SE)'''
ネットワークの普及に伴い、ソフトウェアや基幹システムもネットワークを視野に入れて開発する場面が多くなってきた。そのため、そういったものの開発を担うSEにも、TCP/IPを視野に入れて開発する必要性が出てきた。
===関連資格===
*'''[[w:CCNA|CCNA]]'''
世界的に信頼性の高い、Cisco社の機器の利用に関する知識を問う資格。ネットワークエンジニアの登竜門的な資格でもある。ルータやスイッチ、ブリッジなどのネットワークデバイスを扱うため、TCP/IPの知識は必ず問われることとなる。上位資格であるCCNPなどもまたしかり、である。
*'''その他、IT系資格全般'''
システムアドミニストレータ、基本情報技術者、.com Masterなど、ほとんどのIT系資格で少なからず問われることとなる。特にIP関連については、エンドユーザーレベルの資格(P検など)でも、IPアドレスの部分を中心に出題されることは多い。
=== 個人レベル ===
*'''自宅サーバ構築'''
最近はWindowsでもサーバ構築が大いに可能となっているので、TCP/IPを理解していれば、自宅で自分のPCをサーバとして利用することもたやすい。サーバ関係ではUNIX系のOSが主流だが、ほとんどが無料で手に入るうえにWindowsと同居させられるものも多いので、普段はWindowsを用い、サーバ利用には別のOSを使う、という方法を取ることもできる。
[[Category:TCP/IP]]
2u0bt0bpnjx161unn7k1d9vxlaaen1g
TCP/IP/入門 各層の役割
0
3011
301493
124897
2026-07-13T08:47:24Z
AkiR27User
90873
AkiR27User がページ「[[TCP/IP入門 各層の役割]]」を「[[TCP/IP/入門 各層の役割]]」に移動しました: ページ体系の変更/明確化
124897
wikitext
text/x-wiki
== ※ 図(参照用)==
<table align="center" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="78%" id="AutoNumber1" height="299">
<tr>
<td width="28%" height="47" align="center" bgcolor="#FFFF99"><b>OSI参照モデルでの層名</b></td>
<td width="24%" height="47" align="center" bgcolor="#FFFF99"><b>主なプロトコル</b></td>
<td width="25%" height="47" align="center" bgcolor="#FFFF99"><b>使用機器</b></td>
<td width="72%" height="47" align="center" bgcolor="#FFFF99"><b>TCP/IPでの階層名</b></td>
</tr>
<tr>
<td width="28%" height="44" align="center" bgcolor="#CCFFFF">アプリケーション層</td>
<td width="24%" height="44" align="center" bgcolor="#CCFFFF">HTTP FTP POP SMTP Telnet DNS SNMP</td>
<td width="25%" height="107" rowspan="3" align="center" bgcolor="#CCFFFF">ゲートウェイ</td>
<td width="72%" rowspan="3" height="107" align="center" bgcolor="#CCFFFF">アプリケーション層</td>
</tr>
<tr>
<td width="28%" height="33" align="center" bgcolor="#CCFFFF">プレゼンテーション層</td>
<td width="24%" height="33" align="center" bgcolor="#CCFFFF"> mp3 avi lzh zip</td>
</tr>
<tr>
<td width="28%" height="28" align="center" bgcolor="#CCFFFF">セッション層</td>
<td width="24%" height="28" align="center" bgcolor="#CCFFFF">NetBIOS PAP</td>
</tr>
<tr>
<td width="28%" height="47" align="center" bgcolor="#CCFFFF">トランスポート層</td>
<td width="24%" height="47" align="center" bgcolor="#CCFFFF">TCP UDP</td>
<td width="25%" height="47" align="center" bgcolor="#CCFFFF"> </td>
<td width="72%" height="47" align="center" bgcolor="#CCFFFF">トランスポート層</td>
</tr>
<tr>
<td width="28%" height="31" align="center" bgcolor="#CCFFFF">ネットワーク層</td>
<td width="24%" height="31" align="center" bgcolor="#CCFFFF">IP ICMP ARP
RARP</td>
<td width="25%" height="31" align="center" bgcolor="#CCFFFF">ルータ</td>
<td width="72%" height="31" align="center" bgcolor="#CCFFFF">インターネット層</td>
</tr>
<tr>
<td width="28%" height="33" align="center" bgcolor="#CCFFFF">データリンク層</td>
<td width="24%" height="33" align="center" bgcolor="#CCFFFF">Ethernet</td>
<td width="25%" height="33" align="center" bgcolor="#CCFFFF">スイッチ ブリッジ</td>
<td rowspan="2" width="72%" height="33" align="center" bgcolor="#CCFFFF">リンク層</td>
</tr>
<tr>
<td width="28%" height="29" align="center" bgcolor="#CCFFFF">物理層</td>
<td width="24%" height="29" align="center" bgcolor="#CCFFFF">ケーブルの規格、形状など</td>
<td width="25%" height="29" align="center" bgcolor="#CCFFFF">各種ケーブル コネクタ</td></tr>
</table>
== アプリケーション層 ==
物理層からトランスポート層までが、通信をきちんと成立させるための土台作りとしての機能を持っているのに対し、[[w:アプリケーション層|アプリケーション層]]は、ソフトウェアによる便利なサービスなどを付加するための機能を持っている。すなわち、ユーザが直接触ることになる機能を司っている。インターネット上で技術を駆使して展開されている様々なサービスは、このアプリケーション層に属するプロトコルを利用しているものが多いのである。
具体的な機能としては、ファイルの転送、HTMLの閲覧、メールの送受信、ネットワークを介した時計合わせ(UNIXではプログラムの性質上、重要)、セキュリティの確保などがある。
TCP/IPにおけるアプリケーション層は、OSI参照モデルにおけるアプリケーション層、プレゼンテーション層とセッション層の3つを統合したものである。よって、機能としてもその3つの機能を全て保持している。セッション層やプレゼンテーション層のプロトコルはアプリケーション層のプロトコルの機能とみなされ、それ自体はプロトコルとしては省略されている。
主なプロトコルとしては、'''[[w:File Transfer Protocol|FTP]]'''、'''[[w:TFTP|TFTP]]'''、'''[[w:Domain Name System|DNS]]'''、'''[[w:SNMP|SNMP]]'''、'''[[w:SMTP|SMTP]]'''、'''[[w:HTTP|HTTP]]'''、'''[[w:Telnet|Telnet]]'''などがある。
== トランスポート層 ==
[[w:トランスポート層|トランスポート層]]はその名の通り、データの転送を制御する役割を果たす。もう少し具体的に言うと、データ転送の際にデータの誤りなどを検出し、送信元に再送を要求したりといった機能を持っている。そうして得た正しいデータを、アプリケーション層に属する機能を利用したソフトウェアへ正しい状態で送る、というところまでの役割を持っている。
トランスポート層のプロトコルは、'''[[w:TCP|TCP]]'''と'''[[w:UDP|UDP]]'''である。この2つは互いに密接な関わりを持っており、ネットワークの規模や用途によって使い分ける必要がある。
== [[w:インターネット層|インターネット層]] ==
TCP/IPにおいて、最も重要な層である。IPアドレスの割り当て、データの伝送経路の選択(ルーティングという)などを主に司る。
プロトコルとしては、最も重要な'''[[w:Internet Protocol|IP]]'''と、その補助的な役割を果たす'''[[w:ICMP|ICMP]]'''、ルーティングプロトコルである'''[[w:ARP|ARP]]'''、'''[[w:RARP|RARP]]'''などがある。
== [[w:リンク層|リンク層]] ==
=== [[w:データリンク層|データリンク層]] ===
直結した端末同士での、電気信号の伝送制御、誤り検出、再送要求などの機能を持っている。トランスポート層と類似した役割だが、こちらはより物理的な部分で、データというよりも電気信号そのものを扱う。[[w:スイッチ|スイッチ]]や[[w:ブリッジ|ブリッジ]]といった機器を用いて、送信元や宛先を特定する機能も持っているが、ここではIPアドレスではなく'''[[w:MACアドレス|MACアドレス]]'''(物理アドレス)を用いて行う。
プロトコルとしては、'''[[w:イーサネット|Ethernet]]'''、'''[[w:トークンリング|Token-Ring]]'''、'''[[w:Point-to-Point_Protocol|PPP]]'''などがある。
=== [[w:物理層|物理層]] ===
直接接続された機器や端末において、電気信号を届けるための各種機能を司る。データや電気信号の正誤に関係なく、電気信号がいかに届くかのみに絞られている。
プロトコルとしては、接続するケーブルの形状やコネクタの種類などがそれである。広義には、電柱を伝っている電線や光ファイバーなどもここに位置する。
[[Category:TCP/IP]]
slev90g6eqxkwlmcw6xjmp9sjjpwwt9
PHP
0
3037
301487
292665
2026-07-13T08:34:36Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301487
wikitext
text/x-wiki
{{pathnav|情報技術|プログラミング|frame=1}}
{{Book search|style=1}}
__NOTOC__
PHPはWeb開発において非常に人気のあるサーバーサイドプログラミング言語です。その理由として、PHPはシンプルで学びやすい構文を持ち、特にWebアプリケーションの開発に最適化されている点が挙げられます。また、豊富なオープンソースのフレームワークやライブラリが利用可能であり、個人開発者から大規模なプロジェクトに至るまで、広範なユーザー層に支持されています。
本書では、プログラミング初心者を対象に、PHPの基本的な概念、構文、関数の作成方法、オブジェクト指向プログラミングにおけるクラスの活用方法などを丁寧に解説しています。読者が実際に手を動かしながらコードを記述し、動作確認を行うことで、実践的なスキルを身に付けられるよう構成されています。
2024年11月現在、PHPの唯一の公式サポートバージョンはPHP 8であり、最新の機能とセキュリティ対策が導入されています<ref>{{Cite web|url=https://www.php.net/supported-versions.php|title=PHP: Supported Versions|accessdate=2024-11-08}}</ref>。本書では、PHP 8をベースに、基礎的な知識からWebアプリケーション開発に必要なスキルを順を追って学べるように設計されています。特にPHP初心者が無理なく理解できるよう、豊富なサンプルコードとわかりやすい説明を通じて、ステップバイステップで学習を進めていきます。
なお、PHP 7.4は2022年11月28日に公式サポートが終了しており、セキュリティアップデートなどの提供は行われていません<ref>{{Cite web|url=https://www.php.net/eol.php|title=PHP: Unsupported Branches|accessdate=2024-11-08}}</ref>。そのため、最新バージョンであるPHP 8の使用が推奨されます。
== 目次 ==
# [[/開発環境|開発環境]]
# [[/入門/テキスト表示とコメント|テキスト表示とコメント]]
# [[/入門/変数と値|変数と値]]
# [[/入門/変数の種類|データ型]]
# [[/配列|配列]]
# [[/制御構造|制御構造]]
# [[/関数|関数]]
# [[/クラス|オブジェクト指向]]
# [[/名前空間|名前空間]]
# [[/ファイル入出力|ファイル入出力]]
# [[/データベースとの連動|データベースとの連携]]
# [[/Webアプリケーション向けの機能|Webアプリケーション向けの機能]]
# [[/型ジャグリング|型ジャグリング]]
# [[/エラーハンドリング|エラーハンドリング]]
# [[/セキュリティ|セキュリティ]]
# [[/HTTPリクエストとAPI|HTTPリクエストとAPI]]
# [[/テスト|テスト]]
# [[/パフォーマンス|パフォーマンス]]
# [[/Null安全性|Null安全性]]
# [[/ジェネリックプログラミング|ジェネリックプログラミング]]
# [[/コマンドラインでの活用|コマンドラインでの活用]]
# [[/新機能|バージョンごとの新機能]]
# [[/改廃された技術|改廃された技術]]
== 脚注 ==
{{Wikipedia|PHP (プログラミング言語)}}
<references />
== 下位階層のページ ==
*[[PHP/]]
*[[PHP/Composer]]
*[[PHP/HTMLフォームからのデータ受け取り]]
*[[PHP/HTTPリクエストとAPI]]
*[[PHP/Null安全性]]
*[[PHP/Webアプリケーション向けの機能]]
*[[PHP/エラーハンドリング]]
*[[PHP/クラス]]
*[[PHP/コマンドラインでの活用]]
*[[PHP/ジェネリックプログラミング]]
*[[PHP/セキュリティ]]
*[[PHP/テスト]]
*[[PHP/データベースとの連動]]
*[[PHP/パフォーマンス]]
*[[PHP/ファイル入出力]]
*[[PHP/入門/テキスト表示とコメント]]
*[[PHP/入門/変数と値]]
*[[PHP/入門/変数の種類]]
*[[PHP/入門/関数とは]]
*[[PHP/制御構造]]
*[[PHP/名前空間]]
*[[PHP/型ジャグリング]]
*[[PHP/改廃された技術]]
*[[PHP/新機能]]
*[[PHP/確実に動作させるまで]]
*[[PHP/配列]]
*[[PHP/開発環境]]
*[[PHP/開発環境/インストール]]
*[[PHP/関数]]
{{DEFAULTSORT:PHP}}
[[Category:PHP|*]]
[[Category:スクリプティング言語]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
jzqez7j7hkucavyj9fnwokhg4k4l7px
Wikiversity/プロジェクト関連文書
0
3134
301499
167351
2026-07-13T08:51:42Z
AkiR27User
90873
関連項目追加
301499
wikitext
text/x-wiki
{{Softredirect|v:Wikiversity:プロジェクト関連文書}}
== 関連項目 ==
*[[Wikiversity/ウィキバーシティとは何か]]
*[[Wikiversity/ウィキプロジェクト]]
*[[Wikiversity/コミュニティ・ポータル]]
*[[Wikiversity/プロジェクト関連文書]]
*[[Wikiversity/メインページ]]
[[カテゴリ:ウィキバーシティ|ふろしえくとかんれんふんしよ]]
0tepugty5cmt13i1rf9uqd50lk63hyf
Wikiversity/コミュニティ・ポータル
0
3364
301498
167354
2026-07-13T08:51:26Z
AkiR27User
90873
関連項目追加
301498
wikitext
text/x-wiki
{{Softredirect|v:Wikiversity:コミュニティ・ポータル}}
== 関連項目 ==
*[[Wikiversity/ウィキバーシティとは何か]]
*[[Wikiversity/ウィキプロジェクト]]
*[[Wikiversity/コミュニティ・ポータル]]
*[[Wikiversity/プロジェクト関連文書]]
*[[Wikiversity/メインページ]]
[[カテゴリ:ウィキバーシティ|こみゆにてぃほおたる]]
3sy8w5wjb2786m1leysgioulhharfop
Wikiversity/ウィキプロジェクト
0
3365
301497
167353
2026-07-13T08:51:00Z
AkiR27User
90873
関連項目追加
301497
wikitext
text/x-wiki
{{Softredirect|v:Wikiversity:ウィキプロジェクト}}
== 関連項目 ==
*[[Wikiversity/ウィキバーシティとは何か]]
*[[Wikiversity/ウィキプロジェクト]]
*[[Wikiversity/コミュニティ・ポータル]]
*[[Wikiversity/プロジェクト関連文書]]
*[[Wikiversity/メインページ]]
[[カテゴリ:ウィキバーシティ|ういきふろしえくと]]
mq6kpk4v4bna6h2mjmx99zn1fq0wxtx
Wikiversity/ウィキバーシティとは何か
0
3366
301496
167352
2026-07-13T08:50:44Z
AkiR27User
90873
関連項目追加
301496
wikitext
text/x-wiki
{{Softredirect|v:Wikiversity:ウィキバーシティとは何か}}
== 関連項目 ==
*[[Wikiversity/ウィキバーシティとは何か]]
*[[Wikiversity/ウィキプロジェクト]]
*[[Wikiversity/コミュニティ・ポータル]]
*[[Wikiversity/プロジェクト関連文書]]
*[[Wikiversity/メインページ]]
[[カテゴリ:ウィキバーシティ|ういきはあしていとはなにか]]
ilmnze7atiexekm5qj1t3tjnb1h5e4j
未遂犯論
0
6738
301478
301469
2026-07-12T22:37:35Z
Tomzo
248
/* 諸論 */
301478
wikitext
text/x-wiki
[[法学]]>[[刑事法]]>[[刑法]]>[[刑法総論]]>[[未遂犯論]]
{{wikipedia|未遂}}
== 未遂 ==
[[刑法第43条]]本文は、「犯罪の実行に着手してこれを遂げなかった者は、その刑を減軽することができる。」と定める。これが未遂犯の条文上の根拠である。条文に「減軽することができる」とある通り、未遂犯には任意的減軽が定められており、裁判官は、刑を減軽することも、しないこともできる。
==総説・類型==
===意義===
{| class="wikitable" style="width:100%"
| style="width:30%" |
| style="width:30%; text-align:center" | 近代刑法思想以前
| style="width:40%; text-align:center" | 近代刑法思想
|-
|可罰性の根拠
|行為の結果('''結果責任主義''')
|結果が発生するに至った行為者の心理(意思)⇒'''刑法の主観化'''<br> '''心理的責任主義'''→'''規範的責任主義'''
|-
|ある行為によって結果が発生した。
|行為者の意思に関わらず、発生した結果に従い処罰。
|【'''処罰範囲の限定'''】行為者の意思の範囲で処罰:'''故意論'''
|-
|犯意(「ある犯罪」を犯す意思)をもって行為を行ったが、犯意で想定した結果が発生しなかった。
|結果以上の処罰はできない。
|【'''処罰範囲の拡張'''】未遂・予備の処罰:'''未遂論'''<br> ↓<br>過度の主観化は、刑法の任務を逸脱し人権を侵害する恐れがある。<br>「ある犯罪」が発生する「危険」を評価する必要がある。
|}
===未遂犯の処罰根拠===
#'''主観説'''←近代学派(新派)
#:加害者の「意思の危険(法敵対的な意思:犯意)」に求める。
#::しかしながら、「犯意」の発生のみで可罰性を認めるわけではなく、その意思が多かれ少なかれ客観的な要素(犯意の徴表)に表現された時に初めて処罰される。
#::*未遂罪は個々の法律を要せず可罰的である。→[[刑法第44条|第44条]]に適合しない。
#::*予備・陰謀も一般的に可罰的である
#'''客観説'''←古典学派(旧派)
#::結果発生の「客観的な危険」が発生したことに処罰根拠を求める。即ち、未遂犯は'''[[危険犯]]'''の範疇に入る。
#::この場合において、「犯意」とは行為の客観的危険性の有無・程度を左右する一要素として評価される。
#::*未遂の処罰には個々の法律を要する。→[[刑法第44条|第44条]]に適合。
#::*既遂に比べ、必要的軽減であるべき。
===効果・類型===
#拡張的効果
#:発生した結果だけではなく、犯意に従った犯罪で処罰できる。
#::例.殺すつもりで襲ったが、怪我を負ったのみで死にいたらなかった。
#::*傷害罪の法定刑の上限15年であるが、殺人未遂を適用することにより法定刑の上限は死刑となる。
#拡張適用の制限
#:既遂犯に比べると減軽すべきである。この場合、未遂となった原因により、「'''障害未遂'''」と「'''中止未遂'''」に類別され、各々、軽減等の対応が異なる。
##'''障害未遂'''(第43条本文); 「狭義の未遂犯」
##:自己の意思によらず、未遂に至った場合。'''裁量的減軽'''が可能。
##'''中止未遂'''(第43条但書)
##:自己の意思により、結果が発生しなかった場合。障害未遂と比べると可罰性が低いと評価されるため、'''必要的減軽または刑の免除'''が求められる。「[[#中止犯|中止犯]]」にて詳述。
===未遂犯の成否が問題となる例===
#'''挙動犯'''
#:一定の行為があることで当然に成立し、外形的な結果の発生を要しない犯罪(↔︎結果犯)。偽証罪、公然わいせつ罪など。
#::*(通説)常に既遂であり、未遂罪を概念できない。
#::*(一部学説)未遂罪の成立余地あり、未遂罪が法定されていなければ不可罰。
#:【事例】偽証途中に翻意して真実を述べた。
#::*(通説)偽証罪の既遂。
#::*(一部学説)中止未遂と評価しうる。
#'''過失犯'''
#*従来の通説: 結果の発生が必須であり、概念できない。
#*近時の学説: 過失犯にも結果発生に先行する実行行為があり、障害等により発生しない場合は想定しうる。ただしこれらを罰する法がないため不可罰。
#'''結果的加重犯'''
#:未遂犯の成立を肯定。「故意の結果的加重犯」を認める立場からは当然。
#:しかしながら、強盗致死傷等など「故意の結果的加重犯」は一種の複合犯であり、傷害致死など本来的な結果的加重犯については認めるべきでない。
#:*強盗目的で暴行し傷害を負わせたが、犯行途中で制止する者があり、盗取にいたらなかった。→強盗致傷未遂
== 実行の着手 ==
{{wikipedia|実行の着手}}
===意義===
「'''犯罪の実行に着手して'''これを遂げなかった者(第43条)」
:→可罰性を評価できるのは、どの時点かと言う問題。
{| class="wikitable" style="width:70%"
| style="width:14%; text-align:center" | 不可罰<br>又は「予備」
| style="width:14%; text-align:center" | → 「'''実行の着手'''」 →
| style="width:14%; text-align:center" | 未遂犯
| style="width:14%; text-align:center" | → 「既遂時期」 →
| style="width:14%; text-align:center" | 既遂
|}
===判断基準と学説===
#主観説(近代学派)
##元々の主観説
##:行為者の計画を基礎として一般人の目から見て法益侵害の危険がある行為がなされた。
##:*犯意が、その遂行行為により確定的に認められた時([[w:牧野英一|牧野]])
##:*犯意が、飛躍的に表動した時([[w:宮本英脩|宮本]])
##:*故意の存在が二義を許さず一義的に認められた時([[w:木村亀二|木村]])
##:(批判)基準が不明確であり、未遂罪を広く認める傾向にある。
##修正された主観説(折衷説)
##:主観のみならず客観面も評価。行為は主観と客観の全体構造を持つ統一体であるから、実行の着手も主観と客観の両側面から評価されるべき。
##:→ <u>行為者の計画を基礎として法益侵害の危険にいたる行為中に(客観面)</u>、<u>犯罪意思が明確に表現された(主観面)</u>時
##:(評価)後述の「形式的客観説」に近接。
#客観説(古典学派、現代日本の通説・判例)
#:犯罪につながる行為が、客観的にその犯罪を発生させる危険が生じた。
#:#'''形式的客観説'''(定型説 判例、通説)
#:#:未遂罪を一種の「'''抽象的危険犯'''」と捉える。
#:#:[[構成要件]]に該当する行為に着手→構成要件に密接に関係する行為に着手した時点で実行の着手があると考える。
#:#'''実質的客観説'''(一部学説、[[w:平野龍一|平野]])
#:#:未遂罪を一種の「'''具体的危険犯'''」と捉える。
#:#:法益侵害の危険性がある行為に着手した時点で実行の着手がある。
====諸説の比較====
事例:他人の家に侵入し窃盗を働く行為
{| class="wikitable" style="width:76%"
| style="width:12%; text-align:center" |
| style="width:15%; text-align:center" |住居侵入
| style="width:3%; text-align:center" |→
| style="width:15%; text-align:center" |住居内徘徊<br>盗取物への接近
| style="width:3%; text-align:center" |→
| style="width:15%; text-align:center" |物色・盗取物に接触
| style="width:3%; text-align:center" |→
| style="width:15%; text-align:center" |盗取・住居から退出
|-
|style="text-align:center" |未遂を認める時期
|style="text-align:center" |主観説
||
|style="text-align:center" |折衷説、形式的客観説
||
|style="text-align:center" |実質的客観説
||
||
|}
===判例===
#住居侵入窃盗
#:物色開始時
#:*物色をしようとたんすに手をかけた。(大判 昭9.10.19)
#窃盗目的で土蔵・倉庫に侵入
#:錠を破壊するなどして土蔵に侵入した時点。([[刑法第43条#名古屋高裁判決昭和25年11月24日|名古屋高判 昭25.11.14]])
#すり
#:財布を抜き取ろうとして、ポケットに手を入れた。
#::cf.財布の所在を確認するため服の上からさわる(あたり行為)-未遂にいたらず予備と評価される(不可罰)。
#強姦罪(現・不同意性交等罪)
#:強姦の目的でダンプカーに引きずりこもうとした時。([[刑法第43条#最高裁決定昭和45年7月28日|最判 昭45.7.28]])
===諸論===
#間接正犯
#:着手時期を「利用者」の行為に置くか、「被利用者」の行為に置くか。
##「利用者」基準説; 利用者が被利用者を犯罪行為に誘致する行為を始めた時(主観説、形式的客観説等多数の学説)
##「被利用者」基準説; 被利用者が犯罪行為に着手した時(判例、実質的客観説)
##「折衷説」 一般的には利用者が被利用者を犯罪行為に誘致する行為を始めた時(上記1)とするが、被利用者が「故意ある道具」である場合、被利用者が犯罪行為に着手した時とする。
{| class="wikitable" " style="margin-left:100px"
| style="width:28%; text-align:center" |
| style="width:18%; text-align:center" | 「利用者」基準説
| style="width:18%; text-align:center" | 「被利用者」基準説
| style="width:18%; text-align:center" | 折衷説
|-
||医師(利用者)が、情を知らない看護師(被利用者)によって、毒物を注射させ患者を毒殺しようとした。
|| 医師が、注射の指示をした時
|| 看護師が、注射を打った時
|| 医師が、注射の指示をした時
|-
|| A(利用者)は、SNS上で女性Bの名前で「痴漢募集」の書き込みをして、それを見たC(被利用者)は、これに応じ、痴漢を募集していた女性と思われる女性Bに痴漢(不同意わいせつ)をしようとした。
|| Aが、SNSに書き込んだ時
|| Cが痴漢行為に及ぼうとした時
|| Cが痴漢行為に及ぼうとした時
|}
{{Ol|start=2
|1=[[原因において自由な行為]]
:間接正犯と同様のアナロジーとなり、利用者を意識喪失前の行為、被利用者を意識喪失後の行為として当てはめる。
}}
{| class="wikitable" " style="margin-left:100px; width:54%; text-align:center"
| style="width:18%" | 「利用者」基準説<br>判例においては本説を採用。
| style="width:18%" | 「被利用者」基準説
| style="width:18%" | 折衷説
|-
|style="text-align:left"| 責任能力あるところで行われた原因設定(意識喪失等の)行為
|style="text-align:center"| 意識喪失等後の犯罪着手行為の時
|style="text-align:left"| 責任能力あるところで行われた原因設定(意識喪失等の)行為
|}
{{Ol|start=3
|1=離隔犯
:殺人の目的で毒物入りの飲料を送付した。
::被害者の元に到達した時 - 判例(大判 大7.11.16)、通説も支持。ただし、社会情勢から確実に届くものと判断されるのであれば、発送時と考えても良い。
}}
{{Ol|start=4
|1=[[詐欺罪]]及び[[恐喝罪]]
:詐欺罪及び恐喝罪は、各々、詐欺罪:①詐欺行為(欺罔)→②被害者の錯誤→③財物の処分→④財物の領得、恐喝罪:①暴行・脅迫行為→②被害者の畏怖→③財物の処分→④財物の領得、の一連のプロセスの完成により成立するとされる。従って、①の詐欺行為/暴行・脅迫行為がなされた時点で実行の着手があり未遂罪として可罰性があると考えられる。しかしながら、①の詐欺行為/暴行・脅迫行為があったとしても②の錯誤/畏怖が生じなければ、当該事案では既遂に至る現実的可能性を欠き、その場合においても未遂罪を認めることの妥当性は議論されるであろう。
:学説に沿って、詐欺行為/暴行・脅迫行為に対して錯誤/畏怖が生じなかった場合の未遂罪の成立を整理する。
:#近代学派の純粋主観説
:#:①詐欺行為/暴行・脅迫行為がなされれば、実行の着手があり、それによって②錯誤/畏怖が発生したか否かにかかわらず、未遂罪は成立する。
:#:この場合、②錯誤/畏怖の発生を要しないのであるから、加害者が財物の領得等の意図をもって①詐欺行為/暴行・脅迫行為をなしたのであれば、それが、客観的にはそのような錯誤/畏怖が生じるはずもない以下に示すような荒唐無稽な内容であっても、未遂犯は成立することになる。
:#:*荒唐無稽な内容
:#:**詐欺行為
:#:**:居酒屋で、自分の分を支払ってくれたら、君を総理大臣にしてやると言った。
:#:**脅迫行為
:#:**:居酒屋で、自分の分を支払ってくれなかったら、ロシア軍に日本を攻撃させると言った。
:#折衷説、形式的客観説
:#:①詐欺行為/暴行・脅迫行為が、客観的に一般人を錯誤/畏怖に陥れる危険性が認められる場合は、実行の着手があったと解され未遂犯が成立する。したがって、上記のような荒唐無稽な内容の詐欺行為/暴行・脅迫行為では、未遂罪は成立しない。一方で、客観的には②錯誤/畏怖が生ずる危険性がある程度のものであるが、例えば、たまたま被害者が一般人より高い知識を持っていたために、錯誤が生じなかった場合であっても、抽象的危険は生じているため未遂犯は成立することとなる。
:#実質的客観説
:#:①詐欺行為/暴行・脅迫行為が、客観的にそれを信じても仕方ないと思われる程度に②錯誤/畏怖が生ずる危険性がある場合であっても、被害者の個別の事情で錯誤/畏怖が生じえないのであれば、未遂罪の成立には個別具体的事情の下で法益侵害の現実的危険が認められるかを基準として判断する。
:なお、詐欺行為/暴行・脅迫行為が、荒唐無稽な内容であっても、被害者において錯誤/畏怖が生じた場合(被害者の認知判断力に異常があった場合など)にあっては、実行の着手は、上記の通り純粋主観説では肯定されるが、客観説ではなお一般的・具体的危険性を欠くとして否定する見解があり得る。
}}
== 既遂時期 ==
{{節スタブ}}
===意義===
未遂:「犯罪の実行に着手してこれを遂げなかった者(第43条)」⇔「これを遂げる」ことにより既遂となるが、それはどういうことか。
{| class="wikitable" style="width:70%"
| style="width:14%; text-align:center" | 不可罰<br>又は「予備」
| style="width:14%; text-align:center" | → 「[[#実行の着手|実行の着手]]」 →
| style="width:14%; text-align:center" | 未遂犯
| style="width:14%; text-align:center" | → 「'''既遂時期'''」 →
| style="width:14%; text-align:center" | 既遂
|}
:既遂:故意に従った事実(結果)の発生。
:#どの程度の結果が発生すれば、既遂と言えるか。
:#::例1.放火-どの程度の燃焼があれば「火事」と言えるか。
:#::例2.窃盗など-どのような事態を「自己の支配内に移した」というか。
:#:個々の犯罪が成立するか否か、すなわち構成要件を充足するかの問題であり刑法各論で論じられる。
:#複合犯(強盗致死/致傷、強盗不同意性交など)や併合罪等における一方の犯罪の既遂。
:#「実行の着手」=「結果の発生」となる場合
:##[[挙動犯]]
:##[[過失犯]]
:##[[結果的加重犯]]
:##*ただし、重大な結果に対する偶然又は過失による結果的加重犯をいい、故意による結果的加重犯(いわゆる複合犯)はこれを含まない。
:##[[真正不作為犯]]
== 不能犯 ==
{{wikipedia|不能犯}}
===意義===
犯意をもって行為をしたものの結果が発生しなかった場合、何らかの障害によって発生しなかった場合を未遂罪とするが、そもそも、結果が発生する可能性がなかった場合を、'''不能犯'''という。
理解促進のため以下の類型に整理されている。
#方法の不能
#*殺そうと、ピストルの引金を引いたが弾が入ってなかった。
#*毒殺するつもりで、飲ませた薬が全く効き目のないものであった。
#客体の不能
#*ベッドで寝ているものと思って、銃で打ったが、そこに相手はいなかった。
#主体の不能
#*権限があるものと思って賄賂を受け取ったが、自分にはその権限がなかった。
===不能犯の可罰性===
「迷信犯」 - 丑の刻参りなど。どの学説によっても不可罰。
#主観説(近代学派)
##純粋主観説(戦前の少数説)
##:行為者が犯意を持って行なった限り、結果の発生の可能性は評価すべきではなく、全てが未遂犯となり、不能犯を概念する余地はない。
##抽象的危険説
##:行為の当時、行為者が犯意のとおり計画が進んでいれば犯罪が成立していたとするならば未遂犯であり、計画通り進んでも犯罪が成立しなければ不能犯。
#客観説(古典学派)
##相対的不能説(判例)
##:結果の発生が絶対的に実現しないのであれば不能犯('''絶対的不能''' 最判 昭和25.8.21)。
##:結果が偶然の事情によって発生しなかった('''相対的不能''')のであれば未遂犯。
##具体的危険説(多数説)
##:一般的に観察された事情と行為者が特に認知した事情について、事後的に評価し、犯罪発生の可能性があったか否かを評価する。
===判例===
不能犯認定
*導火線に欠陥があつたため、導火線に点火して投げつけるという方法では、絶対的に爆発しないものであつたのであるから、爆弾の導火線に点火して投げつけたことを、本件爆弾を爆発すべき状態においたものとはいえないとして、爆発物取締罰則第一条の爆発物使用罪の成立を否定([[刑法第43条#東京高裁判決昭和49年10月24日|東京高判 昭和49年10月24日]])
不能犯否定・未遂犯認定
*青酸カリを入れた炊いた米飯を食べさせて殺そうとしたが、炊いたものは黄色く変色し臭気を放っており、食すに耐えられなかった事案([[刑法第43条#最高裁判決昭和24年1月20日|最判 昭和24年1月20日]])
*覚醒剤の製法は正しく了知されていたが、原材料の量が不足しており、覚醒剤は製造できなかったであろうとされる事例([[刑法第43条#最高裁決定昭和35年10月18日|最決 昭和35年10月18日]])
== 中止犯 ==
{{wikipedia|中止犯}}
[[刑法第43条]]但書は、「ただし、自己の意思により犯罪を中止したときは、その刑を減軽し、又は免除する。」と定める。これが中止犯の条文上の根拠である。条文にあるように、中止犯には必要的減免が定められており、中止犯が認められる限り、必ず刑を減軽、または免除しなければならない。
=== 中止犯の減免根拠 ===
中止犯の刑がなぜ減免されるのかについては、'''刑事政策説'''と'''法律説'''の2つの説明があり、さらに法律説の内部で'''違法減少説'''と'''責任減少説'''の対立がある。
'''刑事政策説'''は、中止犯の規定は犯罪者に結果発生の防止を促すために政策的に設けられた規定であると捉える。刑法学者のリストはこれを称して中止犯は「退却のための黄金の橋」であるという。
'''法律説'''は、中止犯には政策的な側面があることを認めながらも、中止犯が減免されるのは犯罪の成立要件の何かが減少しているからではないかと捉える。その「何か」をめぐって、違法減少説と責任減少説が対立する。
:'''責任減少説'''は、中止行為によって[[責任非難]]が減少すると考える。すなわち、責任要素である[[故意]]が放棄されることによって、行為者の非難可能性が減少すると考えるのがこの立場である。
:'''違法減少説'''は、中止行為によって[[違法性]]、すなわち行為者の法敵対性が減少すると考える。[[主観的違法要素]]を認める立場に立脚して、中止犯とは主観的違法要素としての[[故意]]の放棄であるとするのがこの考え方である。
=== 中止犯の要件 ===
====任意性====
43条但書「自己の意思により」という要件が、いわゆる任意性の要件である。この要件が、43条本文の障害未遂と但書の中止未遂とを区別している。
中止未遂が障害未遂と区別され、任意的減軽ではなく必要的減免を認めるためには、何らかの行為者独自の意思決定が介在して中止行為が行われなければならない。そこで、中止行為の契機となった事情が、任意性を認めるのに十分なものであることが必要とされる。そのための判断基準として、客観説と主観説の対立がある。
:'''客観説'''は、契機となった事情が、一般人を基準として、犯罪中止の意思決定に対して強制力を及ぼすような事情であれば、任意性を否定する。いいかえれば、一般通常人であれば当該事情の下で犯罪を続行しないであろうと思われるような場合には、任意性は否定される。
:'''主観説'''は、行為者自身を基準として、「犯罪の続行が可能であったが、中止した」場合には任意性を認める。逆に、犯罪の続行そのものが不可能であった場合には任意性を認めない。
====中止行為====
中止行為といえるためにはいかなる行為が必要とされるかは、着手未遂と実行未遂の場合で異なる。
着手未遂とは、実行に着手したが、実行行為が終了せず、結果が発生しなかった場合をいう。この場合は、ただ次の行為を実行しなければ中止といえる。
実行未遂とは、実行に着手し、まだ結果が発生していない場合をいう。この場合は「結果発生防止のための真摯な努力」がなされなければ中止行為とはいえない。判例の立場では、放火犯が建造物に火をつけたが、後悔して中止しようとする場合は、ただ消防車を呼ぶだけでは足りず、自ら消火活動に加わって積極的に努力する必要があるとされている。
====結果の不発生====
いかに中止のための真摯な努力をしても、結果が発生した場合は中止未遂は認められない。
====因果関係====
中止行為と結果の不発生の間に因果関係を必要とするかどうかについては争いがある。多数説は因果関係不要説をとる。
== 予備・陰謀 ==
{{wikipedia|予備}}
===意義===
;予備
:犯罪の実行を目的として準備を行い、実行に着手しなかった行為。
:*'''有形予備''':殺人に用いる凶器を購入するなど犯罪に使用する道具等を準備する行為
:*'''無形予備''':犯罪の計画にあたって、現場を下見するなどの行為。
;陰謀
:犯罪の実行を目的として、複数の者が謀議し、実行に着手しなかったもの。内乱、外患、私戦のみに認められる
:*実現可能性(発生した場合の危険性)のない単なる謀議は、一種の不能犯として不可罰。
===特徴===
未遂罪よりさらに限定的な犯罪類型であり、結果が重篤な犯罪のみ立法されている。「実行の着手」が認められた時点で、未遂罪または既遂罪に吸収される。
===類型===
#予備という行為を「実行行為」と観念しうるか否か。
##従属予備罪
##:ある犯罪の構成要件の拡張として概念されるもの。
##:*条文中に「〜の罪を犯す目的で」とあるもの
##独立予備罪
##:独立した構成要件「準備」を有するもの。
##:*現行法上、通貨偽造等準備のみがこの範疇となる。
#他人の予備行為を幇助する場合も予備行為と言えるか否か。
##自己予備罪
##:自分又は他人と共同して実行行為をする目的で予備を行なった場合に限り成立し、意思を通じない他人に実行させる目的で予備を行なった場合は成立しないもの。
##他人予備罪
##:自分のみならず、意思を通じない他人が実行する可能性も含め予備を行なった場合に成立するもの。
##:*現行法上、通貨偽造等準備のみがこの範疇となる。
===判例===
*殺人の目的を有する者から、これに使用する毒物の入手を依頼され、その使途を認識しながら、毒物を入手して依頼者に手交した者は、本殺人が予備に終つた場合に、殺人予備罪の共同正犯としての責任を負う。([[刑法第43条#昭和37年11月8日|最決昭和37年11月8日]])
{{stub|law}}
[[Category:刑法総論|みすいはんろん]]
[[category:未遂罪|*]]
[[Category:予備・陰謀罪|*]]
1qfli032ssbeof88pfmc5jtlsrljwsg
中学校音楽
0
8097
301512
290258
2026-07-13T09:48:01Z
AkiR27User
90873
[[君が代]]追加
301512
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[中学校の学習]]>中学校音楽
この書籍は、中学校の教科「中学校音楽」に関する参考書です。{{進捗状況}}
== 目次 ==
=== パノラマ資料 ===
* 日本の楽器
* 管楽器の種類と歴史
* 弦楽器の種類と歴史
* 打楽器の種類と歴史
* 鍵盤楽器の種類と歴史
=== 表現の基礎 ===
* いろいろな音色
* 音色の組み合わせ
* 音符と休符
* 拍と拍子
* [[中学校音楽/速度記号・反復記号|速度記号・反復記号]]{{進捗|50%|2024-03-10}}
* [[中学校音楽/強弱記号・演奏する時に使う記号|強弱記号・演奏する時に使う記号]]{{進捗|25%|2024-03-10}}
* 譜表
* 音名と音程
* 音階
* 調
* 音の重なり(テクスチュア)
* 和音
* コードネーム
* 構成・形式・反復と変化
* [[中学校音楽/発声・合唱について|発声・合唱について]]{{進捗|25%|2025-01-14}}
=== 表現のために ===
* [[中学校音楽/赤とんぼ|赤とんぼ]]{{進捗|75%|2024-03-10}}
* 浜辺の歌
* 夏の思い出
* 荒城の月
* 花
* 早春賦
* 花の街
* サンタ ルチア
* 帰れソレントへ
=== 鑑賞のために ===
* ルネサンスの音楽
* [[バロックの音楽Ⅰ[春]|バロック時代の音楽Ⅰ [春] ]]{{進捗|100%|2025-04-27}}
* バロックの音楽Ⅱ[フーガト短調]
* 古典派の音楽[交響曲第5番ハ短調]
* [[中学校音楽/ロマン派の音楽Ⅰ[魔王]|ロマン派の音楽Ⅰ[魔王]]]{{進捗|100%|2025-04-20}}
* ロマン派の音楽Ⅱ[アイーダ]
* 国民楽派の音楽Ⅰ[展覧会の絵]
* 国民楽派の音楽Ⅱ[ブルタバ]
* 国民楽派の音楽Ⅲ[シェエラザード]
* 近代・現代の音楽Ⅰ[アランフェス協奏曲]
* 近代・現代の音楽Ⅱ[ボレロ]
* バレエ音楽
* ミュージカル
* 映画音楽
* ポピュラー音楽
* 暮らしの中の音・音楽
* 日本の伝統音楽
* 日本の民謡
* 日本の民俗芸能
* 世界の諸民族の音楽・芸能
* 音楽史
* 指揮について
* オペラの舞台「アイーダ」より
* オーケストラを編成する楽器
=== 合唱曲 ===
=== 国歌 ===
*[[中学校音楽/君が代|君が代]]
[[Category:中学校教育|おんかく]]
[[Category:中学校音楽]]
pclnxt9rgfyrafmj66owhwe1fcatfnb
Wikibooks:日本十進分類法
4
9004
301475
301474
2026-07-12T12:03:34Z
Tkkn46tkkn46
89925
/* 783 球技 */ ボウリング を追加。738.9でも。
301475
wikitext
text/x-wiki
__NOTOC__
[[メインページ|ウィキブックス]]の全ての書籍を[[:w:日本十進分類法|日本十進分類法]]に従って分類したものです。
{{進捗状況}}
== 0類 総記 ==
=== 000 総記 ===
*[[ウィキペディアの書き方]]
<!--
==== 002 知識・学問・学術 ====
-->
==== 007 情報科学 ====
*[[情報技術]]
<!--
===== 007.1 情報理論 =====
===== 007.2 歴史 事情 =====
===== 007.3 情報と社会 =====
===== 007.4 情報源 =====
===== 007.5 ドキュメンテーション 情報管理 =====
-->
===== 007.6 データ処理 情報処理 =====
*[[情報処理技術者試験の概要]]
*[[初級システムアドミニストレータ]]
<!--
====== 007.61 システム分析 システム設計 ======
-->
====== 007.63 コンピュータシステム ソフトウェア ======
*[[Freenet]]
*[[Maxima]]
*[[Microsoft Office]]
*[[Mizar]]
*[[OpenOffice.org]]
*[[OSとアプリケーション]]
*[[TeX/LaTeX入門]]{{進捗|25%|2005-05-04}}
*[[vi]]
<!--
======= 007.632 エキスパートシステム =======
-->
====== 007.634 オペレーティングシステム ======
*[[ChromeOS]]
*[[Linuxシステム管理]]
*[[Linuxハードウェア]]
*[[MS-DOS/PC DOS入門]]{{進捗|50%|2005-05-04}}
*[[UNIX/Linux入門]]{{進捗|25%|2005-05-04}}
<!--
======= 007.635 漢字処理システム =======
-->
====== 007.637 図形処理ソフトウェア ======
* [[Inkscape]]
====== 007.64 コンピュータプログラミング ======
*[[機械語]]
*[[ゲームプログラミング]]
*[[数式処理システム]]
*[[ソフトウェア開発技術者]]
*[[プログラミング]]
*[[BASIC]]
*[[Blender 3D]]
*[[C言語]]{{進捗|25%|2005-05-04}}
*[[CPlusPlus|C++]]
*[[CSS]]{{進捗|00%|2005-06-17}}
*[[CGI]]{{進捗|25%|2005-05-04}}
*[[GNOMEフレームワーク]]
*[[Go]]
*[[HTML]]{{進捗|25%|2005-05-04}}
*[[Java]]{{進捗|25%|2005-05-04}}
*[[JavaScript]]{{進捗|25%|2005-05-04}}
*[[Lisp]]
*[[Node.js]]
*[[OpenGL]]
*[[OSS開発ツール]]
*[[Perl]]{{進捗|25%|2005-05-04}}
*[[PHP]]
*[[Ruby]]
*[[Scratch]]
*[[Scheme]]
*[[SVG]]
*[[Swift]]
*[[Xプログラミング]]
<!--
======= 007.642 CG技術 =======
====== 007.65 各種の記憶媒体 ======
====== 007.68 情報検索 機械検索 ======
-->
===== 007.7 情報システム =====
*[[LANとインターネット]]
*[[NTP入門]]
*[[TCP/IP入門]]
<!--
=== 010 図書館・図書館学 ===
==== 011 図書館政策・図書館行財政 ====
==== 012 図書館建築・図書館整備 ====
==== 013 図書館管理 ====
==== 014 資料の収集・資料の整理・資料の保管 ====
==== 015 図書館奉仕・図書館活動 ====
==== 016 各種の図書館 ====
==== 017 学校図書館 ====
==== 018 専門図書館 ====
==== 019 読書・読書法 ====
-->
=== 020 図書・書誌学 ===
==== 021 著作・編集 ====
===== 021.4 編集 編纂 =====
*[[ウィキペディアの書き方 入門編]]{{進捗|50%|2005-05-04}}
<!--
==== 022 写本・刊本・造本 ====
==== 023 出版 ====
-->
==== 024 図書の販売 ====
*[[同人誌即売会参加方法]]{{進捗|75%|2005-05-04}}
<!--
==== 025 一般書誌・全国書誌 ====
==== 026 稀書目録・善本目録 ====
==== 027 特種目録 ====
==== 028 選定図書目録・参考図書目録 ====
==== 029 蔵書目録・総合目録 ====
-->
=== 030 百科事典 ===
==== 031 日本語 ====
*[[w:mainpage|w:wikipedia]]
===== 031.3 日用便覧 =====
*[[ジョーク集]]
<!--
==== 039 用語索引<一般> ====
=== 040 一般論文集・一般講演集 ===
==== 041 日本語 ====
==== 049 雑著 ====
=== 050 逐次刊行物 ===
==== 051 日本の雑誌 ====
==== 059 一般年鑑 ====
=== 060 団体 ===
==== 061 学術・研究機関 ====
==== 063 文化交流機関 ====
==== 065 親睦団体・その他の団体 ====
==== 069 博物館 ====
=== 070 ジャーナリズム・新聞 ===
==== 071 日本 ====
=== 080 叢書・全集・選集 ===
==== 081 日本語 ====
==== 089 その他の諸言語 ====
=== 090 貴重書・郷土資料・その他の特別コレクション ===
-->
== 1類 哲学 ==
=== 100 哲学 ===
*[[哲学・思想]]{{進捗|00%|2005-05-04}}
<!--
==== 101 哲学理論 ====
==== 102 哲学史 ====
==== 103 参考図書 ====
==== 104 論文集・評論集・講演集 ====
==== 105 逐次刊行物 ====
==== 106 団体 ====
==== 107 研究法・指導法・哲学教育 ====
==== 108 叢集・全集・選集 ====
=== 110 哲学各論 ===
==== 111 形而上学・存在論 ====
==== 112 自然哲学・宇宙論 ====
==== 113 人生観・世界観 ====
==== 114 人間学 ====
==== 115 認識論 ====
==== 116 論理学・弁証法・方法論 ====
==== 117 価値哲学 ====
==== 118 文化哲学・技術哲学 ====
-->
=== 120 東洋思想 ===
==== 121 日本思想 ====
==== 122 中国思想・中国哲学 ====
*[[論語巻第一]]
==== 123 経書 ====
==== 124 先秦思想・諸子 ====
==== 125 中世思想・近代思想 ====
==== 126 インド哲学・バラモン教 ====
==== 129 その他のアジア・アラブ哲学 ====
<!--
=== 130 西洋哲学 ===
==== 131 古代哲学 ====
==== 132 中世哲学 ====
==== 133 近代哲学 ====
==== 134 ドイツ・オーストリア哲学 ====
==== 135 フランス・オランダ哲学 ====
==== 136 スペイン・ポルトガル哲学 ====
==== 137 イタリア哲学 ====
==== 138 ロシア哲学 ====
==== 139 その他の哲学 ====
-->
=== 140 心理学 ===
*[[心理学]]{{進捗|25%|2005-05-04}}
<!--
==== 141 普通心理学・心理各論 ====
==== 143 発達心理学 ====
==== 145 異常心理学 ====
==== 146 臨床心理学・精神分析学 ====
==== 147 超心理学・心霊研究 ====
==== 148 相法・易占 ====
==== 149 応用心理学 ====
-->
=== 150 倫理学・道徳 ===
*[[倫理学]]
==== 151 倫理各論 ====
==== 152 家庭倫理・性倫理 ====
==== 153 職業倫理 ====
==== 154 社会倫理 ====
==== 155 国体論・詔勅 ====
==== 156 武士道 ====
==== 157 報徳教・石門心学 ====
==== 158 その他の特定主題 ====
==== 159 人生訓・教訓 ====
<!--
=== 160 宗教 ===
==== 161 宗教学・宗教思想 ====
==== 162 宗教史・事情 ====
==== 163 原始宗教・宗教民族学 ====
==== 164 神話・神話学 ====
===== 164.31 ギリシャ神話 =====
==== 165 比較宗教 ====
==== 166 道教 ====
==== 167 イスラーム ====
==== 168 ヒンドゥー教・ジャイナ教 ====
==== 169 その他の宗教・新興宗教 ====
=== 170 神道 ===
==== 171 神道思想・神道説 ====
==== 172 神祇・神道史 ====
==== 173 神典 ====
==== 174 信仰録・説教集 ====
==== 175 神社・神職 ====
==== 176 祭祀 ====
==== 177 布教・伝道 ====
==== 178 各教派・教派神道 ====
=== 180 仏教 ===
==== 181 仏教教理・仏教哲学 ====
==== 182 仏教史 ====
==== 183 経典 ====
==== 184 法話・説教集 ====
==== 185 寺院・僧職 ====
==== 186 仏会 ====
==== 187 布教・伝道 ====
==== 188 各宗 ====
=== 190 キリスト教 ===
==== 191 教義・キリスト教神学 ====
==== 192 キリスト教史・迫害史 ====
==== 193 聖書 ====
==== 194 信仰録・説教集 ====
==== 195 教会・聖職 ====
==== 196 典礼・祭式・礼拝 ====
==== 197 布教・伝道 ====
==== 198 各教派・教会史 ====
==== 199 ユダヤ教 ====
-->
== 2類 歴史 ==
=== 200 歴史 ===
==== 201 歴史学 ====
*[[歴史学]]
<!--
==== 202 歴史補助学 ====
==== 203 参考図書 ====
==== 204 論文集・評論集・講演集 ====
==== 205 逐次刊行物 ====
==== 206 団体 ====
==== 207 研究法・指導法・歴史教育 ====
==== 208 叢書・全集・選集 ====
-->
==== 209 世界史・文化史 ====
*[[世界史]]{{進捗|25%|2005-05-04}}
=== 210 日本史 ===
*[[日本史]]{{進捗|25%|2005-05-04}}
<!--
===== 210.027 古銭学 =====
==== 211 北海道地方 ====
==== 212 東北地方 ====
==== 213 関東地方 ====
==== 214 北陸地方 ====
==== 215 中部地方 ====
==== 216 近畿地方 ====
==== 217 中国地方 ====
==== 218 四国地方 ====
==== 219 九州地方 ====
-->
=== 220 アジア史・東洋史 ===
<!--
==== 221 朝鮮 ====
-->
==== 222 中国 ====
*[[中国史]]{{進捗|25%|2005-12-01}}
<!--
==== 223 東南アジア ====
==== 224 インドネシア ====
==== 225 インド ====
===== 225.97 モルジブ =====
==== 229 アジアロシア ====
=== 230 ヨーロッパ史・西洋史 ===
==== 231 古代ギリシア ====
==== 232 古代ローマ ====
==== 233 イギリス・英国 ====
==== 234 ドイツ・中欧 ====
==== 235 フランス ====
==== 236 スペイン イスパニア ====
==== 237 イタリア ====
==== 238 ロシア ソビエト連邦 独立国家共同体 ====
==== 239 バルカン諸国 ====
=== 240 アフリカ史 ===
==== 241 北アフリカ ====
==== 242 エジプト ====
==== 243 バーバリ諸国 ====
==== 244 西アフリカ ====
==== 245 東アフリカ ====
==== 248 南アフリカ ====
==== 249 インド洋のアフリカ諸島 ====
=== 250 北アメリカ史 ===
==== 251 カナダ ====
==== 253 アメリカ合衆国 ====
==== 255 ラテンアメリカ 中南米 ====
==== 256 メキシコ ====
==== 257 中央アメリカ 中米諸国 ====
==== 259 西インド諸島 ====
=== 260 南アメリカ史 ===
==== 261 北部諸国 カリブ沿海諸国 ====
==== 262 ブラジル ====
==== 263 パラグアイ ====
==== 264 ウルグアイ ====
==== 265 アルゼンチン ====
==== 266 チリ ====
==== 267 ボリビア ====
==== 268 ペルー ====
=== 270 オセアニア史・両極地方史 ===
==== 271 オーストラリア ====
==== 272 ニュージーランド ====
==== 273 メラネシア ====
==== 274 ミクロネシア ====
==== 275 ポリネシア ====
==== 276 ハワイ ====
==== 277 両極地方 ====
==== 278 北極 北極地方 ====
==== 279 南極 南極地方 ====
=== 280 伝記 ===
==== 281 日本 ====
==== 282 アジア ====
==== 283 ヨーロッパ ====
==== 284 アフリカ ====
==== 285 北アフリカ ====
==== 286 南アフリカ ====
==== 287 オセアニア・両極地方 ====
==== 288 系譜・家史・皇室 ====
==== 289 個人伝記 ====
-->
=== 290 地理・地誌・紀行 ===
*[[地理学]]{{進捗|00%|2005-05-04}}
<!--
==== 290.93 旅行案内記 ====
-->
== 3類 社会科学 ==
<!--
=== 300 社会科学 ===
==== 301 理論・方法論 ====
==== 302 政治・経済・社会・文化事情 ====
==== 303 参考図書 ====
==== 304 論文集・評論集・講演集 ====
==== 305 逐次刊行物 ====
==== 306 団体 ====
==== 307 研究法・指導法・社会科学教育 ====
==== 308 叢書・全集・選集 ====
==== 309 社会思想 ====
=== 310 政治 ===
==== 311 政治学 ====
==== 312 政治史・事情 ====
==== 313 国家の形態・政治体制 ====
==== 314 議会 ====
==== 315 政党・政治結社 ====
==== 316 国家と個人・宗教・民族 ====
==== 317 行政 ====
==== 318 地方自治・地方行政 ====
==== 319 外交・国際問題 ====
-->
=== 320 法律 ===
==== 321 法学 ====
*[[法学]]{{進捗|25%|2005-05-04}}
==== 322 法制史 ====
*[[法制史]]
==== 323 憲法 ====
*[[憲法]]
==== 324 民法 ====
*[[民法]]
==== 325 商法 ====
*[[商法]]
==== 326 刑法・刑事法 ====
*[[刑法]]
==== 327 司法・訴訟手続法 ====
*[[民事訴訟法]]
*[[刑事訴訟法]]
==== 328 諸法 ====
*[[教育基本法]]
*[[知的財産権法]]
==== 329 国際法 ====
*[[国際法]]
=== 330 経済 ===
==== 331 経済学・経済思想 ====
*[[経済学]]{{進捗|25%|2005-05-04}}
*[[経済学基礎]]
==== 332 経済史・事情・経済体制 ====
==== 333 経済政策・国際経済 ====
==== 334 人口・土地・資源 ====
==== 335 企業・経営 ====
==== 336 経営管理 ====
*[[公認会計士試験]]
==== 337 貨幣・通貨 ====
==== 338 金融・銀行・信託 ====
==== 339 保険 ====
=== 340 財政 ===
<!--
==== 341 財政学・財政思想 ====
==== 342 財政史・事情 ====
==== 343 財政政策・財政行政 ====
==== 344 予算・決算 ====
==== 345 租税 ====
==== 347 公債・国債 ====
==== 348 専売・国有財産 ====
==== 349 地方財政 ====
=== 350 統計 ===
==== 351 日本 ====
==== 358 人口統計・国勢調査 ====
==== 359 各種の統計書 ====
-->
=== 360 社会 ===
<!--
==== 361 社会学 ====
==== 362 社会史・社会体制 ====
==== 364 社会保障 ====
==== 365 生活・消費者問題 ====
==== 366 労働経済・労働問題 ====
==== 367 家族問題、男性・女性問題、老人問題 ====
==== 368 社会病理 ====
-->
==== 369 社会福祉 ====
===== 369.3 災害 災害救助 =====
*[[防災]]{{進捗|25%|2006-04-06}}
=== 370 教育 ===
<!--
==== 371 教育学、教育思想 ====
===== 371.42 登校拒否・いじめ =====
-->
==== 372 教育史・事情 ====
*[[教育勅語]]{{進捗|75%|2005-05-04}}
<!--
==== 373 教育政策、教育制度、教育行財政 ====
-->
==== 374 学校経営・管理、学校保健 ====
===== 374.48 学校行事 =====
*[[運動会]]
==== 375 教育課程、学習指導、教科別教育 ====
*[[学校教育]]{{進捗|25%|2005-05-04}}
*[[生活と進路]]{{進捗|50%|2005-05-04}}
===== 374.9 教科書、教科書検定 =====
*[[小学校の学習]]{{進捗|50%|2023-09-25}}
*[[中学校の学習]]{{進捗|50%|2023-09-25}}
*[[高等学校の学習]]{{進捗|00%|2023-09-25}}
**[[高等学校の学習/旧課程]]{{進捗|25%|2023-09-25}}
<!--
* [[小学校算数]] {{進捗|25%|2005-05-04}}
* [[中学校数学]] {{進捗|50%|2005-05-10}}
* [[高等学校世界史A]] {{進捗|25%|2015-08-30}}
* [[高等学校地理B]] {{進捗|25%|2005-11-1}}
* [[高等学校現代社会]] {{進捗|25%|2015-08-30}}
* [[高等学校政治経済]] {{進捗|50%|2015-08-30}}
*[[高等学校倫理]]
*[[高等学校数学]]
*[[高等学校数学基礎]]{{進捗|100%|2005-05-04}}
*[[高等学校数学I]]{{進捗|50%|2005-05-04}}
*[[高等学校数学III]]{{進捗|50%|2005-05-04}}
*[[高等学校数学B]]{{進捗|50%|2005-05-04}}
*[[高等学校数学C]]{{進捗|50%|2005-05-04}}
*[[高等学校理科総合B]]{{進捗|50%|2005-05-04}}
*[[高等学校物理]]{{進捗|50%|2005-11-1}}
* [[高等学校化学]] {{進捗|50%|2015-08-30}}
* [[高等学校生物]] {{進捗|50%|2015-08-30}}
* [[高等学校地学]] {{進捗|25%|2015-08-30}}
*[[高等学校情報A]]
*[[高等学校情報B]]
*[[高等学校情報C]]
-->
*[[小・中・高等学校演習]]
*[[検定教科書]]
==== 376 幼児・初等・中等教育 ====
*[[小学校・中学校・高等学校の学習]]
==== 377 大学、高等・専門教育、学術行政 ====
* [[大学受験ガイド]] {{進捗|50%|2015-08-30}}
<!--
==== 378 障害児教育 ====
==== 379 社会教育 ====
=== 380 風俗習慣・民俗学・民族学 ===
==== 382 風俗史・民俗誌、民族誌 ====
==== 383 衣食住の習俗 ====
==== 384 社会・家庭生活の習俗 ====
==== 385 通過儀礼、冠婚葬祭 ====
==== 386 年中行事、祭礼 ====
==== 387 民間信仰、迷信(俗信) ====
==== 388 伝説、民話(昔話) ====
==== 389 民族学、文化人類学 ====
=== 390 国防・軍事 ===
==== 391 戦争、戦略、戦術 ====
==== 392 国防史・事情、軍事史・事情 ====
==== 393 国防政策・行政・法令 ====
==== 394 軍事医学、兵食 ====
==== 395 軍事施設、軍需品 ====
==== 396 陸軍 ====
==== 397 海軍 ====
==== 398 空軍 ====
==== 399 古代兵法、軍学 ====
-->
== 4類 自然科学 ==
<!--
=== 400 自然科学 ===
==== 401 科学理論・科学哲学 ====
==== 402 科学史・事情 ====
==== 403 参考図書 ====
==== 404 論文集・評論集・講演集 ====
==== 405 逐次刊行物 ====
==== 406 団体 ====
==== 407 研究法・指導法・科学教育 ====
==== 408 叢書・全集・選集 ====
==== 409 科学技術政策・科学技術行政 ====
-->
=== 410 数学 ===
* [[数学]]
* [[初等数学]]
* [[初等数学公式集]]{{進捗|25%|2005-05-04}}
* [[初等数学演習]]{{進捗|25%|2005-05-04}}
* [[初等数学記号集]]
* [[Wikibooks:初等数学用語索引|初等数学用語索引]]{{進捗|25%|2005-05-04}}
* [[中等数学]]
* [[高等数学]]
* [[大学数学公式集]]
==== 411 代数学 ====
===== 411.6 集合論 =====
*[[公理的集合論]]
==== 412 数論 ====
==== 413 解析学 ====
* [[解析学]]
* [[解析学基礎]]{{進捗|25%|2005-05-04}}
==== 414 幾何学 ====
==== 415 位相数学 ====
* [[位相幾何学]]{{進捗|25%|2008-09-03}}
==== 417 確率論、数理統計学 ====
* [[統計学基礎]]{{進捗|25%|2005-05-04}}
<!--
==== 418 計算法 ====
==== 419 和算、中国算法 ====
-->
=== 420 物理学 ===
*[[物理学]]
==== 421 理論物理学 ====
<!--
===== 421.1 基礎理論 エーテル理論 =====
-->
===== 421.2 相対性理論 =====
*[[特殊相対論]]
*[[一般相対性理論]]
===== 421.3 量子力学、量子論 =====
*[[場の量子論]]
*[[量子力学]]{{進捗|50%|2005-05-04}}
===== 421.4 統計力学 =====
*[[統計力学I]]
*[[統計力学II]]
===== 421.5 数理物理学.物理数学 =====
* [[物理数学I]] {{進捗|75%|2023-11-05}}
* [[物理数学II]]
==== 423 力学 ====
*[[解析力学]]
*[[古典力学]]{{進捗|50%|2005-05-04}}
==== 424 振動学、音響学 ====
*[[振動と波動]]
* [[音響学]]
==== 425 光学 ====
*[[光の偏極]]
==== 426 熱学 ====
*[[熱力学]]
==== 427 電磁気学 ====
*[[電磁気学]]
<!--
==== 428 物性物理学 ====
==== 429 原子物理学 ====
-->
=== 430 化学 ===
<!--
==== 431 物理化学. 理論化学 ====
==== 432 実験化学 ====
==== 433 分析化学 ====
==== 434 合成化学 ====
-->
==== 435 無機化学 ====
*[[無機化学]]{{進捗|25%|2005-05-04}}
<!--
==== 436 金属元素とその化合物 ====
-->
==== 437 有機化学 ====
*[[有機化学]]{{進捗|25%|2005-05-21}}
<!--
==== 438 環式化合物の化学 ====
==== 439 天然物質の化学 ====
-->
=== 440 天文学・宇宙科学 ===
* [[天文学]]{{進捗|25%|2005-12-01}}
<!--
==== 441 理論天文学・数理天文学 ====
==== 442 実地天文学・天体観測法 ====
==== 443 恒星・恒星天文学 ====
==== 444 太陽・太陽物理学 ====
==== 445 惑星・衛星 ====
==== 446 月 ====
==== 447 彗星・流星 ====
==== 448 地球・天文地理学 ====
==== 449 時法・暦学 ====
-->
=== 450 地球科学・地学 ===
* [[地球科学]]{{進捗|25%|2005-12-01}}
==== 451 気象学 ====
==== 452 海洋学 ====
==== 453 地震学 ====
===== 453.38 地震予知 =====
==== 454 地形学 ====
==== 455 地質学 ====
==== 456 地史学・層位学 ====
==== 457 古生物学・化石 ====
*[[古生物学]]
==== 458 岩石学 ====
==== 459 鉱物学 ====
=== 460 生物化学・一般生物学 ===
*[[生物学の研究技術]]{{進捗|25%|2005-05-04}}
<!--
==== 461 理論生物学・生命論 ====
==== 462 生物地理・生物誌 ====
==== 463 細胞学 ====
==== 464 生化学 ====
==== 465 微生物学 ====
==== 467 遺伝学 ====
===== 467.25 遺伝子組み換え =====
==== 468 生態学 ====
==== 469 人類学 ====
-->
=== 470 植物学 ===
*[[植物学]]{{進捗|25%|2005-05-04}}
<!--
==== 471 一般植物学 ====
==== 472 植物地理・植物誌 ====
==== 473 葉状植物 ====
==== 474 藻類・菌類 ====
==== 475 コケ植物 ====
==== 476 シダ植物 ====
==== 477 種子植物 ====
==== 478 裸子植物 ====
==== 479 被子植物 ====
=== 480 動物学 ===
==== 481 一般動物学 ====
==== 482 動物地理・動物誌 ====
==== 483 無脊椎動物 ====
==== 484 軟体動物・貝類学 ====
==== 485 節足動物 ====
==== 486 昆虫類 ====
==== 487 脊椎動物 ====
==== 488 鳥類 ====
==== 489 哺乳類 ====
-->
=== 490 医学 ===
* [[医学]]
*[[OsiriX_オンライン解説文書]]{{進捗|75%|2005-05-04}}
==== 491 基礎医学 ====
*[[生理学]]{{進捗|00%|2006-11-09}}
*[[解剖学]]{{進捗|25%|2006-11-09}}
*[[神経解剖学]]{{進捗|00%|2006-11-09}}
*[[組織学]]{{進捗|00%|2006-11-09}}
*[[微生物学]]{{進捗|00%|2006-11-09}}
*[[病理学]]{{進捗|00%|2006-11-09}}
<!--
==== 492 臨床医学 ====
-->
==== 493 内科学 ====
*[[内科学 呼吸器]]{{進捗|00%|2006-11-09}}
<!--
==== 494 外科学 ====
==== 495 産科学,婦人科学 ====
==== 496 眼科学,耳鼻咽喉科学 ====
==== 497 歯科学 ====
==== 498 衛生学,公衆衛生学,予防医学 ====
-->
==== 499 薬学 ====
*[[薬理学]]{{進捗|00%|2006-11-09}}
==5類 技術・工学・工業 ==
=== 500 技術・工学 ===
==== 501 工業基礎学 ====
==== 502 技術史・工学史 ====
==== 503 参考図書 ====
==== 504 論文集・評論集・講演集 ====
==== 505 逐次刊行物 ====
==== 506 団体 ====
==== 507 研究法・指導法・技術教育 ====
==== 508 叢書・全集・選集 ====
==== 509 工業・工業経済 ====
=== 510 建設工学・土木工学 ===
==== 511 土木力学・建設材料 ====
==== 512 測量 ====
==== 513 土木設計・施工法 ====
==== 514 道路工学 ====
==== 515 橋梁工学 ====
==== 516 鉄道工学 ====
==== 517 河海工学・河川工学 ====
==== 518 衛生工学・都市工学 ====
===== 518.523 ごみの再利用 =====
==== 519 公害・環境工学 ====
===== 519.12 環境法 =====
* [[環境法]]
=== 520 建築学 ===
==== 521 日本の建築 ====
==== 522 東洋の建築・アジアの建築 ====
==== 523 西洋の建築・その他の様式の建築 ====
==== 524 建築構造 ====
==== 525 建築計画・施工 ====
==== 526 各種の建築 ====
==== 527 住宅建築 ====
==== 528 建築設備・設備工学 ====
==== 529 建築意匠・装飾 ====
=== 530 機械工学・原子力工学 ===
==== 531 機械力学・材料・設計 ====
==== 532 機械工作・工作機械 ====
==== 533 熱機関・熱工学 ====
==== 534 流体機械・流体工学 ====
==== 535 精密機器・光学機器 ====
==== 536 運輸工学・車輌・運搬機械 ====
==== 537 自動車工学 ====
===== 537.25 電気自動車 =====
==== 538 航空宇宙工学 ====
==== 539 原子力工学 ====
=== 540 電気工学・電子工学 ===
==== 540 電気工学 ====
==== 541 電気回路・計測・材料 ====
==== 542 電気機器 ====
==== 543 発電 ====
==== 544 送電・変電・配電 ====
==== 545 電灯・照明・電熱 ====
==== 546 電気鉄道 ====
==== 547 通信工学・電気通信 ====
*[[スタイルシート言語]]
==== 548 情報工学 ====
==== 549 電子工学 ====
=== 550 海洋工学・船舶工学 ===
==== 551 理論造船学 ====
==== 552 船体構造・材料・施工 ====
==== 553 船体艤装・船舶設備 ====
==== 554 舶用機関[造機] ====
==== 555 船舶修理・保守 ====
==== 556 各種の船舶・艦艇 ====
==== 557 航海・航海学 ====
==== 558 海洋開発 ====
==== 559 兵器、軍事工学 ====
=== 560 金属工学・鉱山工学 ===
==== 561 採鉱・選鉱 ====
==== 562 各種の金属鉱床・採掘 ====
==== 563 冶金・合金 ====
==== 564 鉄鋼 ====
==== 565 非鉄金属 ====
==== 566 金属加工・製造冶金 ====
==== 567 石炭 ====
==== 568 石油 ====
==== 569 非金属鉱物・土石採取業 ====
=== 570 化学工業 ===
==== 571 化学工学・化学機器 ====
==== 572 電気化学工業 ====
==== 573 セラミックス・窯業・珪酸塩化学工業 ====
==== 574 化学薬品 ====
==== 575 燃料・爆発物 ====
==== 576 油脂類 ====
==== 577 染料 ====
==== 578 高分子化学工業 ====
==== 579 その他の化学工業 ====
=== 580 製造工業 ===
==== 581 金属製品 ====
==== 582 事務機器・家庭機器・楽器 ====
==== 583 木工業・木製品 ====
==== 584 皮革工業・皮革製品 ====
==== 585 パルプ・製紙工業 ====
==== 586 繊維工学 ====
==== 587 染色加工・染色業 ====
==== 588 食品工業 ====
==== 589 その他の雑工業 ====
=== 590 家政学・生活科学 ===
<!--
==== 591 家庭経済・経営 ====
==== 592 家庭理工学 ====
==== 593 衣服・裁縫 ====
==== 594 手芸 ====
==== 595 理容・美容 ====
===== 595.6 痩身法 =====
==== 596 食品・料理 ====
*[[料理本]]{{進捗|25%|2005-05-04}}
<!--
==== 597 住居・家具調度 ====
==== 598 家庭衛生 ====
==== 599 育児 ====
-->
==6類 産業 ==
<!--
=== 600 産業 ===
==== 601 産業政策・行政・総合開発 ====
==== 602 産業史・事情・物産誌 ====
==== 603 参考図書 ====
==== 604 論文集・評論集・講演集 ====
==== 605 逐次刊行物 ====
==== 606 団体 ====
==== 607 研究法・指導法・産業教育 ====
==== 608 叢書・全集・選集 ====
==== 609 度量衡、計量法 ====
=== 610 農業 ===
==== 611 農業経済 ====
==== 612 農業史・事情 ====
==== 613 農業基礎学 ====
==== 614 農業工学 ====
==== 615 作物栽培・作物学 ====
==== 616 食用作物 ====
==== 617 工芸作物 ====
==== 618 繊維作物 ====
==== 619 農産物製造・加工 ====
-->
=== 620 園芸 ===
<!--
==== 621 園芸経済・行政・経営 ====
==== 622 園芸史・事情 ====
==== 623 園芸植物学・病虫害 ====
==== 624 温室・温床・園芸用具 ====
==== 625 果樹園芸 ====
-->
==== 626 蔬菜園芸 ====
*[[ダイズの栽培]]{{進捗|00%|2007-02-21}}
==== 627 花卉園芸[草花] ====
*[[サボテンの栽培]]{{進捗|00%|2007-02-21}}
<!--
==== 628 園芸利用 ====
==== 629 造園 ====
=== 630 蚕糸業 ===
==== 631 蚕糸経済・行政・経営 ====
==== 632 蚕糸業史・事情 ====
==== 633 蚕学・蚕業基礎学 ====
==== 634 蚕種 ====
==== 635 飼育法 ====
==== 636 くわ・栽桑 ====
==== 637 蚕室・蚕具 ====
==== 638 まゆ ====
==== 639 製糸・生糸・蚕糸利用 ====
-->
=== 640 畜産業 ===
<!--
==== 641 畜産経済・行政・経営 ====
==== 642 畜産史・事情 ====
==== 643 家畜の繁殖・家畜飼料 ====
==== 644 家畜の管理・畜舎・用具 ====
==== 645 家畜・畜産動物各論 ====
-->
==== 646 家禽各論・飼鳥 ====
*[[ホンセイインコ類の飼育]]{{進捗|00%|2007-02-21}}
<!--
===== 646.9 みつばち・昆虫 =====
==== 648 畜産製造・畜産物 ====
==== 649 獣医学・比較医学 ====
==== 649 獣医学 ====
=== 650 林業 ===
==== 651 林業経済・行政・経営 ====
==== 652 森林史・林業史・事情 ====
==== 653 森林立地・造林 ====
==== 654 森林保護 ====
==== 655 森林施業 ====
==== 656 森林工学 ====
==== 657 森林利用・林産物・木材学 ====
==== 658 林産製造 ====
==== 659 狩猟 ====
=== 660 水産業 ===
==== 661 水産経済・行政・経営 ====
==== 662 水産業および漁業史・事情 ====
==== 663 水産基礎学 ====
==== 664 漁労・漁業各論 ====
==== 665 漁船・漁具 ====
==== 666 水産増殖・養殖業 ====
==== 667 水産製造・水産食品 ====
==== 668 水産物利用・水産利用工業 ====
==== 669 製塩・塩業 ====
=== 670 商業 ===
==== 671 商業政策・行政 ====
==== 672 商業史・事情 ====
==== 673 商業経営・商店 ====
==== 674 広告・宣伝 ====
==== 675 マーケティング ====
==== 676 取引所 ====
==== 678 貿易 ====
=== 680 運輸・交通 ===
==== 681 交通政策・行政・経営 ====
==== 682 交通史・事情 ====
==== 683 海運 ====
==== 684 内水・運河交通 ====
==== 685 陸運・自動車運送 ====
==== 686 鉄道 ====
==== 687 航空運送 ====
==== 688 倉庫業 ====
==== 689 観光事業 ====
=== 690 通信事業 ===
==== 691 通信政策・行政・法令 ====
==== 692 通信事業史・事情 ====
==== 693 郵便・郵政事業 ====
==== 694 電気通信事業 ====
==== 699 放送事業 ====
===== 699.39 アナウンサー =====
-->
== 7類 芸術 ==
<!--
=== 700 芸術・美術 ===
==== 701 芸術理論・美学 ====
==== 702 芸術史・美術史 ====
==== 703 参考図書[レファレンスブック] ====
==== 704 論文集・評論集・講演集 ====
==== 705 逐次刊行物 ====
==== 706 団体 ====
==== 707 研究法・指導法・芸術教育 ====
==== 708 叢書・全集・選集 ====
==== 709 芸術政策・文化財 ====
=== 710 彫刻 ===
==== 711 彫塑材料・技法 ====
==== 712 彫刻史・各国の彫刻 ====
==== 713 木彫 ====
==== 714 石彫 ====
==== 715 金属彫刻・鋳造 ====
==== 717 粘土彫刻・塑造 ====
==== 708 仏像 ====
==== 709 オブジェ ====
=== 720 絵画 ===
==== 721 日本画 ====
==== 722 東洋画 ====
==== 723 洋画 ====
==== 724 絵画材料・技法 ====
==== 725 素描・描画 ====
==== 726 漫画、挿絵、童画 ====
==== 727 グラフィックデザイン、図案 ====
==== 728 書道 ====
=== 730 版画 ===
==== 731 版画材料・技法 ====
==== 732 版画史・各国の版画 ====
==== 733 木版画 ====
==== 734 石版画 ====
==== 735 銅版画・鋼版画 ====
==== 736 リノリウム版画・ゴム版画 ====
==== 737 写真版画・孔版画 ====
==== 739 印章、篆刻、印譜 ====
-->
=== 740 写真 ===
<!--
==== 742 写真器械・材料 ====
==== 743 撮影技術 ====
-->
==== 744 現像・印画 ====
*[[白黒写真の暗室作業]]{{進捗|75%|2007-05-10}}
<!--
==== 745 複写技術 ====
==== 746 特殊写真 ====
==== 747 写真の応用 ====
==== 748 写真集 ====
==== 749 印刷 ====
=== 750 工芸 ===
==== 751 陶磁工芸 ====
==== 752 漆工芸 ====
==== 753 染織工芸 ====
==== 754 木竹工芸 ====
==== 755 宝石・牙角・皮革工芸 ====
==== 756 金工芸 ====
==== 757 デザイン・装飾美術 ====
==== 758 美術家具 ====
==== 759 人形・玩具 ====
-->
=== 760 音楽 ===
==== 761 音楽の一般理論・音楽学 ====
* [[楽典]]
* [[和声学]]
* [[楽式]]
==== 762 音楽史・各国の音楽 ====
* [[西洋音楽史]]
<!--
==== 763 楽器・器楽 ====
==== 764 器楽合奏 ====
==== 765 宗教音楽・聖楽 ====
==== 766 劇音楽 ====
==== 767 声楽 ====
==== 768 邦楽 ====
==== 769 舞踊、バレエ ====
=== 770 演劇 ===
==== 771 劇場・演出・演技 ====
==== 772 演劇史・各国の演劇 ====
==== 773 能楽、狂言 ====
==== 774 歌舞伎 ====
==== 775 各種の演劇 ====
==== 777 人形劇 ====
==== 778 映画 ====
==== 779 大衆演芸 ====
-->
=== 780 スポーツ・体育 ===
*[[スポーツ]]
==== 781 体操、遊戯 ====
==== 782 陸上競技 ====
*[[トライアスロン]]
==== 783 球技 ====
*[[サッカー]]{{進捗|25%|2006-1-7}}
*[[テニス]]{{進捗|25%|2006-1-7}}
*[[バドミントン]]
*[[野球]]{{進捗|25%|2006-1-7}}
*[[ボウリング]]
<!--
==== 784 冬季競技 ====
-->
[]
==== 785 水上競技 ====
*[[セーリング]]{{進捗|25%|2006-1-7}}
==== 786 戸外レクリエーション ====
===== 786.1 登山・山岳競技 =====
*[[登山]]
==== 787 釣魚、遊猟 ====
==== 788 相撲、拳闘、競馬 ====
*[[相撲]]{{進捗|25%|2006-2-23}}
*[[競馬]]{{進捗|25%|2023-09-25}}
==== 789 武術 ====
*[[剣道]]{{進捗|25%|2007-6-30}}
=== 790 諸芸・娯楽 ===
<!--
==== 791 茶道 ====
==== 792 香道 ====
==== 793 花道 ====
==== 794 撞球 ====
-->
==== 795 囲碁 ====
*[[囲碁]]{{進捗|25%|2006-1-7}}
==== 796 将棋 ====
*[[将棋]]{{進捗|25%|2006-1-7}}
<!--
==== 797 射倖ゲーム ====
-->
==== 798 室内娯楽 ====
*[[トランプ]]<!--798.2-->
*[[トランプ/トランプ教科書]]
*[[麻雀]]{{進捗|25%|2006-1-7}}
*[[チェス]]{{進捗|25%|2006-1-7}}
===== 798.5 テレビゲーム =====
*[[Minecraft]]
<!--
==== 799 ダンス ====
-->
== 8類 言語 ==
=== 800 言語 ===
==== 801 言語学 ====
*[[生成文法]]
*[[語学]]
**[[琉球語]]
<!--
==== 809 言語生活 ====
-->
=== 810 日本語 ===
*[[日本語]]{{進捗|25%|2005-05-04}}
<!--
==== 811 音声、音韻、文字 ====
==== 812 語源、意味 ====
==== 813 辞典 ====
==== 814 語彙 ====
==== 815 文法、語法 ====
==== 816 文章、文体、作文 ====
==== 817 読本、解釈、会話 ====
-->
==== 818 方言、訛語 ====
*[[北海道方言]]
*[[讃岐弁]]
*[[沖縄語]]
<!--
=== 820 中国語 ===
-->
==== 829 その他の東洋の諸言語 ====
*[[朝鮮語]]{{進捗|25%|2005-05-04}}
*[[ペルシア語]]
=== 830 英語 ===
*[[英語]]{{進捗|50%|2005-05-04}}
=== 840 ドイツ語 ===
*[[ドイツ語]]{{進捗|50%|2005-05-04}}
<!--
==== 849 その他のゲルマン言語 ====
-->
=== 850 フランス語 ===
*[[フランス語]]{{進捗|25%|2005-05-04}}
<!--
==== 859 プロヴァンス語 ====
=== 860 スペイン語 ===
==== 869 ポルトガル語 ====
=== 870 イタリア語 ===
-->
==== 879 その他のロマンス諸語 ====
*[[ルーマニア語]]
<!--
=== 880 ロシア語 ===
==== 889 その他のスラヴ諸語 ====
=== 890 その他の諸言語 ===
-->
==== 891 ギリシア語 ====
*[[ギリシア語]]
==== 892 ラテン語 ====
*[[ラテン語]]{{進捗|50%|2006-03-21}}
==== 893 その他のヨーロッパの諸言語 ====
*[[デンマーク語]]{{進捗|25%|2005-12-01}}
<!--
==== 894 アフリカの諸言語 ====
==== 895 アメリカの諸言語 ====
==== 897 オーストラリアの諸言語 ====
-->
==== 899 国際語 ====
*[[エスペラント]]{{進捗|00%|2005-05-04}}
== 9類 文学 ==
=== 900 文学 ===
*[[古典文学]]{{進捗|25%|2005-05-15}}
<!--
==== 909 児童文学研究 ====
-->
=== 910 日本文学 ===
<!--
==== 911 詩歌 ====
==== 912 戯曲 ====
-->
==== 913 小説、物語 ====
*[[竹取物語]]{{進捗|25%|2005-05-04}}
==== 914 評論、エッセイ、随筆 ====
*[[方丈記]]
<!--
==== 915 日記、書簡、紀行 ====
==== 916 記録、手記、ルポルタージュ ====
==== 917 箴言、アフォリズム、寸言 ====
==== 918 作品集 ====
==== 919 漢詩文、日本漢文学 ====
-->
=== 920 中国文学 ===
*[[漢詩]]{{進捗|25%|2005-05-04}}
<!--
==== 929 その他の東洋文学 ====
=== 930 英文学・米文学 ===
=== 940 ドイツ文学 ===
==== 949 その他のゲルマン文学 ====
=== 950 フランス文学 ===
==== 959 プロヴァンス文学 ====
=== 960 スペイン文学 ===
==== 969 ポルトガル文学 ====
=== 970 イタリア文学 ===
==== 979 その他のロマンス文学 ====
=== 980 ロシア文学・ソヴィエト文学 ===
==== 989 その他のスラヴ文学 ====
-->
=== 990 その他の諸文学 ===
==== 991 ギリシア文学 ====
==== 992 ラテン文学 ====
*[[ガリア戦記]]
==== 993 その他のヨーロッパ文学 ====
==== 994 アフリカ文学 ====
==== 995 アメリカ先住民語の文学 ====
==== 997 オーストラリア先住民語の文学 ====
==== 999 国際語による文学 ====
== 関連項目 ==
*[[w:日本十進分類法#要目表(第3次区分表)]]
== 外部リンク ==
*<del>[http://www.ndl.go.jp/jp/library/data/zan9.html 日本十進分類法新訂9版分類基準]([http://www.ndl.go.jp/ 国立国会図書館])</del>リンク切れ
*[https://www.kotono8.com/wiki/%E6%97%A5%E6%9C%AC%E5%8D%81%E9%80%B2%E5%88%86%E9%A1%9E%E6%B3%95%EF%BC%88%E8%A9%B3%E7%B4%B0%EF%BC%89 閾ペディアことのは 日本十進分類法(詳細)]
[[Category:日本十進分類法|*]]
[[it:Wikibooks:Classificazione decimale Dewey]]
ral78fz240ciqrzcmuki1gy60f74wb0
301476
301475
2026-07-12T12:04:28Z
Tkkn46tkkn46
89925
/* 783 球技 */ 修正
301476
wikitext
text/x-wiki
__NOTOC__
[[メインページ|ウィキブックス]]の全ての書籍を[[:w:日本十進分類法|日本十進分類法]]に従って分類したものです。
{{進捗状況}}
== 0類 総記 ==
=== 000 総記 ===
*[[ウィキペディアの書き方]]
<!--
==== 002 知識・学問・学術 ====
-->
==== 007 情報科学 ====
*[[情報技術]]
<!--
===== 007.1 情報理論 =====
===== 007.2 歴史 事情 =====
===== 007.3 情報と社会 =====
===== 007.4 情報源 =====
===== 007.5 ドキュメンテーション 情報管理 =====
-->
===== 007.6 データ処理 情報処理 =====
*[[情報処理技術者試験の概要]]
*[[初級システムアドミニストレータ]]
<!--
====== 007.61 システム分析 システム設計 ======
-->
====== 007.63 コンピュータシステム ソフトウェア ======
*[[Freenet]]
*[[Maxima]]
*[[Microsoft Office]]
*[[Mizar]]
*[[OpenOffice.org]]
*[[OSとアプリケーション]]
*[[TeX/LaTeX入門]]{{進捗|25%|2005-05-04}}
*[[vi]]
<!--
======= 007.632 エキスパートシステム =======
-->
====== 007.634 オペレーティングシステム ======
*[[ChromeOS]]
*[[Linuxシステム管理]]
*[[Linuxハードウェア]]
*[[MS-DOS/PC DOS入門]]{{進捗|50%|2005-05-04}}
*[[UNIX/Linux入門]]{{進捗|25%|2005-05-04}}
<!--
======= 007.635 漢字処理システム =======
-->
====== 007.637 図形処理ソフトウェア ======
* [[Inkscape]]
====== 007.64 コンピュータプログラミング ======
*[[機械語]]
*[[ゲームプログラミング]]
*[[数式処理システム]]
*[[ソフトウェア開発技術者]]
*[[プログラミング]]
*[[BASIC]]
*[[Blender 3D]]
*[[C言語]]{{進捗|25%|2005-05-04}}
*[[CPlusPlus|C++]]
*[[CSS]]{{進捗|00%|2005-06-17}}
*[[CGI]]{{進捗|25%|2005-05-04}}
*[[GNOMEフレームワーク]]
*[[Go]]
*[[HTML]]{{進捗|25%|2005-05-04}}
*[[Java]]{{進捗|25%|2005-05-04}}
*[[JavaScript]]{{進捗|25%|2005-05-04}}
*[[Lisp]]
*[[Node.js]]
*[[OpenGL]]
*[[OSS開発ツール]]
*[[Perl]]{{進捗|25%|2005-05-04}}
*[[PHP]]
*[[Ruby]]
*[[Scratch]]
*[[Scheme]]
*[[SVG]]
*[[Swift]]
*[[Xプログラミング]]
<!--
======= 007.642 CG技術 =======
====== 007.65 各種の記憶媒体 ======
====== 007.68 情報検索 機械検索 ======
-->
===== 007.7 情報システム =====
*[[LANとインターネット]]
*[[NTP入門]]
*[[TCP/IP入門]]
<!--
=== 010 図書館・図書館学 ===
==== 011 図書館政策・図書館行財政 ====
==== 012 図書館建築・図書館整備 ====
==== 013 図書館管理 ====
==== 014 資料の収集・資料の整理・資料の保管 ====
==== 015 図書館奉仕・図書館活動 ====
==== 016 各種の図書館 ====
==== 017 学校図書館 ====
==== 018 専門図書館 ====
==== 019 読書・読書法 ====
-->
=== 020 図書・書誌学 ===
==== 021 著作・編集 ====
===== 021.4 編集 編纂 =====
*[[ウィキペディアの書き方 入門編]]{{進捗|50%|2005-05-04}}
<!--
==== 022 写本・刊本・造本 ====
==== 023 出版 ====
-->
==== 024 図書の販売 ====
*[[同人誌即売会参加方法]]{{進捗|75%|2005-05-04}}
<!--
==== 025 一般書誌・全国書誌 ====
==== 026 稀書目録・善本目録 ====
==== 027 特種目録 ====
==== 028 選定図書目録・参考図書目録 ====
==== 029 蔵書目録・総合目録 ====
-->
=== 030 百科事典 ===
==== 031 日本語 ====
*[[w:mainpage|w:wikipedia]]
===== 031.3 日用便覧 =====
*[[ジョーク集]]
<!--
==== 039 用語索引<一般> ====
=== 040 一般論文集・一般講演集 ===
==== 041 日本語 ====
==== 049 雑著 ====
=== 050 逐次刊行物 ===
==== 051 日本の雑誌 ====
==== 059 一般年鑑 ====
=== 060 団体 ===
==== 061 学術・研究機関 ====
==== 063 文化交流機関 ====
==== 065 親睦団体・その他の団体 ====
==== 069 博物館 ====
=== 070 ジャーナリズム・新聞 ===
==== 071 日本 ====
=== 080 叢書・全集・選集 ===
==== 081 日本語 ====
==== 089 その他の諸言語 ====
=== 090 貴重書・郷土資料・その他の特別コレクション ===
-->
== 1類 哲学 ==
=== 100 哲学 ===
*[[哲学・思想]]{{進捗|00%|2005-05-04}}
<!--
==== 101 哲学理論 ====
==== 102 哲学史 ====
==== 103 参考図書 ====
==== 104 論文集・評論集・講演集 ====
==== 105 逐次刊行物 ====
==== 106 団体 ====
==== 107 研究法・指導法・哲学教育 ====
==== 108 叢集・全集・選集 ====
=== 110 哲学各論 ===
==== 111 形而上学・存在論 ====
==== 112 自然哲学・宇宙論 ====
==== 113 人生観・世界観 ====
==== 114 人間学 ====
==== 115 認識論 ====
==== 116 論理学・弁証法・方法論 ====
==== 117 価値哲学 ====
==== 118 文化哲学・技術哲学 ====
-->
=== 120 東洋思想 ===
==== 121 日本思想 ====
==== 122 中国思想・中国哲学 ====
*[[論語巻第一]]
==== 123 経書 ====
==== 124 先秦思想・諸子 ====
==== 125 中世思想・近代思想 ====
==== 126 インド哲学・バラモン教 ====
==== 129 その他のアジア・アラブ哲学 ====
<!--
=== 130 西洋哲学 ===
==== 131 古代哲学 ====
==== 132 中世哲学 ====
==== 133 近代哲学 ====
==== 134 ドイツ・オーストリア哲学 ====
==== 135 フランス・オランダ哲学 ====
==== 136 スペイン・ポルトガル哲学 ====
==== 137 イタリア哲学 ====
==== 138 ロシア哲学 ====
==== 139 その他の哲学 ====
-->
=== 140 心理学 ===
*[[心理学]]{{進捗|25%|2005-05-04}}
<!--
==== 141 普通心理学・心理各論 ====
==== 143 発達心理学 ====
==== 145 異常心理学 ====
==== 146 臨床心理学・精神分析学 ====
==== 147 超心理学・心霊研究 ====
==== 148 相法・易占 ====
==== 149 応用心理学 ====
-->
=== 150 倫理学・道徳 ===
*[[倫理学]]
==== 151 倫理各論 ====
==== 152 家庭倫理・性倫理 ====
==== 153 職業倫理 ====
==== 154 社会倫理 ====
==== 155 国体論・詔勅 ====
==== 156 武士道 ====
==== 157 報徳教・石門心学 ====
==== 158 その他の特定主題 ====
==== 159 人生訓・教訓 ====
<!--
=== 160 宗教 ===
==== 161 宗教学・宗教思想 ====
==== 162 宗教史・事情 ====
==== 163 原始宗教・宗教民族学 ====
==== 164 神話・神話学 ====
===== 164.31 ギリシャ神話 =====
==== 165 比較宗教 ====
==== 166 道教 ====
==== 167 イスラーム ====
==== 168 ヒンドゥー教・ジャイナ教 ====
==== 169 その他の宗教・新興宗教 ====
=== 170 神道 ===
==== 171 神道思想・神道説 ====
==== 172 神祇・神道史 ====
==== 173 神典 ====
==== 174 信仰録・説教集 ====
==== 175 神社・神職 ====
==== 176 祭祀 ====
==== 177 布教・伝道 ====
==== 178 各教派・教派神道 ====
=== 180 仏教 ===
==== 181 仏教教理・仏教哲学 ====
==== 182 仏教史 ====
==== 183 経典 ====
==== 184 法話・説教集 ====
==== 185 寺院・僧職 ====
==== 186 仏会 ====
==== 187 布教・伝道 ====
==== 188 各宗 ====
=== 190 キリスト教 ===
==== 191 教義・キリスト教神学 ====
==== 192 キリスト教史・迫害史 ====
==== 193 聖書 ====
==== 194 信仰録・説教集 ====
==== 195 教会・聖職 ====
==== 196 典礼・祭式・礼拝 ====
==== 197 布教・伝道 ====
==== 198 各教派・教会史 ====
==== 199 ユダヤ教 ====
-->
== 2類 歴史 ==
=== 200 歴史 ===
==== 201 歴史学 ====
*[[歴史学]]
<!--
==== 202 歴史補助学 ====
==== 203 参考図書 ====
==== 204 論文集・評論集・講演集 ====
==== 205 逐次刊行物 ====
==== 206 団体 ====
==== 207 研究法・指導法・歴史教育 ====
==== 208 叢書・全集・選集 ====
-->
==== 209 世界史・文化史 ====
*[[世界史]]{{進捗|25%|2005-05-04}}
=== 210 日本史 ===
*[[日本史]]{{進捗|25%|2005-05-04}}
<!--
===== 210.027 古銭学 =====
==== 211 北海道地方 ====
==== 212 東北地方 ====
==== 213 関東地方 ====
==== 214 北陸地方 ====
==== 215 中部地方 ====
==== 216 近畿地方 ====
==== 217 中国地方 ====
==== 218 四国地方 ====
==== 219 九州地方 ====
-->
=== 220 アジア史・東洋史 ===
<!--
==== 221 朝鮮 ====
-->
==== 222 中国 ====
*[[中国史]]{{進捗|25%|2005-12-01}}
<!--
==== 223 東南アジア ====
==== 224 インドネシア ====
==== 225 インド ====
===== 225.97 モルジブ =====
==== 229 アジアロシア ====
=== 230 ヨーロッパ史・西洋史 ===
==== 231 古代ギリシア ====
==== 232 古代ローマ ====
==== 233 イギリス・英国 ====
==== 234 ドイツ・中欧 ====
==== 235 フランス ====
==== 236 スペイン イスパニア ====
==== 237 イタリア ====
==== 238 ロシア ソビエト連邦 独立国家共同体 ====
==== 239 バルカン諸国 ====
=== 240 アフリカ史 ===
==== 241 北アフリカ ====
==== 242 エジプト ====
==== 243 バーバリ諸国 ====
==== 244 西アフリカ ====
==== 245 東アフリカ ====
==== 248 南アフリカ ====
==== 249 インド洋のアフリカ諸島 ====
=== 250 北アメリカ史 ===
==== 251 カナダ ====
==== 253 アメリカ合衆国 ====
==== 255 ラテンアメリカ 中南米 ====
==== 256 メキシコ ====
==== 257 中央アメリカ 中米諸国 ====
==== 259 西インド諸島 ====
=== 260 南アメリカ史 ===
==== 261 北部諸国 カリブ沿海諸国 ====
==== 262 ブラジル ====
==== 263 パラグアイ ====
==== 264 ウルグアイ ====
==== 265 アルゼンチン ====
==== 266 チリ ====
==== 267 ボリビア ====
==== 268 ペルー ====
=== 270 オセアニア史・両極地方史 ===
==== 271 オーストラリア ====
==== 272 ニュージーランド ====
==== 273 メラネシア ====
==== 274 ミクロネシア ====
==== 275 ポリネシア ====
==== 276 ハワイ ====
==== 277 両極地方 ====
==== 278 北極 北極地方 ====
==== 279 南極 南極地方 ====
=== 280 伝記 ===
==== 281 日本 ====
==== 282 アジア ====
==== 283 ヨーロッパ ====
==== 284 アフリカ ====
==== 285 北アフリカ ====
==== 286 南アフリカ ====
==== 287 オセアニア・両極地方 ====
==== 288 系譜・家史・皇室 ====
==== 289 個人伝記 ====
-->
=== 290 地理・地誌・紀行 ===
*[[地理学]]{{進捗|00%|2005-05-04}}
<!--
==== 290.93 旅行案内記 ====
-->
== 3類 社会科学 ==
<!--
=== 300 社会科学 ===
==== 301 理論・方法論 ====
==== 302 政治・経済・社会・文化事情 ====
==== 303 参考図書 ====
==== 304 論文集・評論集・講演集 ====
==== 305 逐次刊行物 ====
==== 306 団体 ====
==== 307 研究法・指導法・社会科学教育 ====
==== 308 叢書・全集・選集 ====
==== 309 社会思想 ====
=== 310 政治 ===
==== 311 政治学 ====
==== 312 政治史・事情 ====
==== 313 国家の形態・政治体制 ====
==== 314 議会 ====
==== 315 政党・政治結社 ====
==== 316 国家と個人・宗教・民族 ====
==== 317 行政 ====
==== 318 地方自治・地方行政 ====
==== 319 外交・国際問題 ====
-->
=== 320 法律 ===
==== 321 法学 ====
*[[法学]]{{進捗|25%|2005-05-04}}
==== 322 法制史 ====
*[[法制史]]
==== 323 憲法 ====
*[[憲法]]
==== 324 民法 ====
*[[民法]]
==== 325 商法 ====
*[[商法]]
==== 326 刑法・刑事法 ====
*[[刑法]]
==== 327 司法・訴訟手続法 ====
*[[民事訴訟法]]
*[[刑事訴訟法]]
==== 328 諸法 ====
*[[教育基本法]]
*[[知的財産権法]]
==== 329 国際法 ====
*[[国際法]]
=== 330 経済 ===
==== 331 経済学・経済思想 ====
*[[経済学]]{{進捗|25%|2005-05-04}}
*[[経済学基礎]]
==== 332 経済史・事情・経済体制 ====
==== 333 経済政策・国際経済 ====
==== 334 人口・土地・資源 ====
==== 335 企業・経営 ====
==== 336 経営管理 ====
*[[公認会計士試験]]
==== 337 貨幣・通貨 ====
==== 338 金融・銀行・信託 ====
==== 339 保険 ====
=== 340 財政 ===
<!--
==== 341 財政学・財政思想 ====
==== 342 財政史・事情 ====
==== 343 財政政策・財政行政 ====
==== 344 予算・決算 ====
==== 345 租税 ====
==== 347 公債・国債 ====
==== 348 専売・国有財産 ====
==== 349 地方財政 ====
=== 350 統計 ===
==== 351 日本 ====
==== 358 人口統計・国勢調査 ====
==== 359 各種の統計書 ====
-->
=== 360 社会 ===
<!--
==== 361 社会学 ====
==== 362 社会史・社会体制 ====
==== 364 社会保障 ====
==== 365 生活・消費者問題 ====
==== 366 労働経済・労働問題 ====
==== 367 家族問題、男性・女性問題、老人問題 ====
==== 368 社会病理 ====
-->
==== 369 社会福祉 ====
===== 369.3 災害 災害救助 =====
*[[防災]]{{進捗|25%|2006-04-06}}
=== 370 教育 ===
<!--
==== 371 教育学、教育思想 ====
===== 371.42 登校拒否・いじめ =====
-->
==== 372 教育史・事情 ====
*[[教育勅語]]{{進捗|75%|2005-05-04}}
<!--
==== 373 教育政策、教育制度、教育行財政 ====
-->
==== 374 学校経営・管理、学校保健 ====
===== 374.48 学校行事 =====
*[[運動会]]
==== 375 教育課程、学習指導、教科別教育 ====
*[[学校教育]]{{進捗|25%|2005-05-04}}
*[[生活と進路]]{{進捗|50%|2005-05-04}}
===== 374.9 教科書、教科書検定 =====
*[[小学校の学習]]{{進捗|50%|2023-09-25}}
*[[中学校の学習]]{{進捗|50%|2023-09-25}}
*[[高等学校の学習]]{{進捗|00%|2023-09-25}}
**[[高等学校の学習/旧課程]]{{進捗|25%|2023-09-25}}
<!--
* [[小学校算数]] {{進捗|25%|2005-05-04}}
* [[中学校数学]] {{進捗|50%|2005-05-10}}
* [[高等学校世界史A]] {{進捗|25%|2015-08-30}}
* [[高等学校地理B]] {{進捗|25%|2005-11-1}}
* [[高等学校現代社会]] {{進捗|25%|2015-08-30}}
* [[高等学校政治経済]] {{進捗|50%|2015-08-30}}
*[[高等学校倫理]]
*[[高等学校数学]]
*[[高等学校数学基礎]]{{進捗|100%|2005-05-04}}
*[[高等学校数学I]]{{進捗|50%|2005-05-04}}
*[[高等学校数学III]]{{進捗|50%|2005-05-04}}
*[[高等学校数学B]]{{進捗|50%|2005-05-04}}
*[[高等学校数学C]]{{進捗|50%|2005-05-04}}
*[[高等学校理科総合B]]{{進捗|50%|2005-05-04}}
*[[高等学校物理]]{{進捗|50%|2005-11-1}}
* [[高等学校化学]] {{進捗|50%|2015-08-30}}
* [[高等学校生物]] {{進捗|50%|2015-08-30}}
* [[高等学校地学]] {{進捗|25%|2015-08-30}}
*[[高等学校情報A]]
*[[高等学校情報B]]
*[[高等学校情報C]]
-->
*[[小・中・高等学校演習]]
*[[検定教科書]]
==== 376 幼児・初等・中等教育 ====
*[[小学校・中学校・高等学校の学習]]
==== 377 大学、高等・専門教育、学術行政 ====
* [[大学受験ガイド]] {{進捗|50%|2015-08-30}}
<!--
==== 378 障害児教育 ====
==== 379 社会教育 ====
=== 380 風俗習慣・民俗学・民族学 ===
==== 382 風俗史・民俗誌、民族誌 ====
==== 383 衣食住の習俗 ====
==== 384 社会・家庭生活の習俗 ====
==== 385 通過儀礼、冠婚葬祭 ====
==== 386 年中行事、祭礼 ====
==== 387 民間信仰、迷信(俗信) ====
==== 388 伝説、民話(昔話) ====
==== 389 民族学、文化人類学 ====
=== 390 国防・軍事 ===
==== 391 戦争、戦略、戦術 ====
==== 392 国防史・事情、軍事史・事情 ====
==== 393 国防政策・行政・法令 ====
==== 394 軍事医学、兵食 ====
==== 395 軍事施設、軍需品 ====
==== 396 陸軍 ====
==== 397 海軍 ====
==== 398 空軍 ====
==== 399 古代兵法、軍学 ====
-->
== 4類 自然科学 ==
<!--
=== 400 自然科学 ===
==== 401 科学理論・科学哲学 ====
==== 402 科学史・事情 ====
==== 403 参考図書 ====
==== 404 論文集・評論集・講演集 ====
==== 405 逐次刊行物 ====
==== 406 団体 ====
==== 407 研究法・指導法・科学教育 ====
==== 408 叢書・全集・選集 ====
==== 409 科学技術政策・科学技術行政 ====
-->
=== 410 数学 ===
* [[数学]]
* [[初等数学]]
* [[初等数学公式集]]{{進捗|25%|2005-05-04}}
* [[初等数学演習]]{{進捗|25%|2005-05-04}}
* [[初等数学記号集]]
* [[Wikibooks:初等数学用語索引|初等数学用語索引]]{{進捗|25%|2005-05-04}}
* [[中等数学]]
* [[高等数学]]
* [[大学数学公式集]]
==== 411 代数学 ====
===== 411.6 集合論 =====
*[[公理的集合論]]
==== 412 数論 ====
==== 413 解析学 ====
* [[解析学]]
* [[解析学基礎]]{{進捗|25%|2005-05-04}}
==== 414 幾何学 ====
==== 415 位相数学 ====
* [[位相幾何学]]{{進捗|25%|2008-09-03}}
==== 417 確率論、数理統計学 ====
* [[統計学基礎]]{{進捗|25%|2005-05-04}}
<!--
==== 418 計算法 ====
==== 419 和算、中国算法 ====
-->
=== 420 物理学 ===
*[[物理学]]
==== 421 理論物理学 ====
<!--
===== 421.1 基礎理論 エーテル理論 =====
-->
===== 421.2 相対性理論 =====
*[[特殊相対論]]
*[[一般相対性理論]]
===== 421.3 量子力学、量子論 =====
*[[場の量子論]]
*[[量子力学]]{{進捗|50%|2005-05-04}}
===== 421.4 統計力学 =====
*[[統計力学I]]
*[[統計力学II]]
===== 421.5 数理物理学.物理数学 =====
* [[物理数学I]] {{進捗|75%|2023-11-05}}
* [[物理数学II]]
==== 423 力学 ====
*[[解析力学]]
*[[古典力学]]{{進捗|50%|2005-05-04}}
==== 424 振動学、音響学 ====
*[[振動と波動]]
* [[音響学]]
==== 425 光学 ====
*[[光の偏極]]
==== 426 熱学 ====
*[[熱力学]]
==== 427 電磁気学 ====
*[[電磁気学]]
<!--
==== 428 物性物理学 ====
==== 429 原子物理学 ====
-->
=== 430 化学 ===
<!--
==== 431 物理化学. 理論化学 ====
==== 432 実験化学 ====
==== 433 分析化学 ====
==== 434 合成化学 ====
-->
==== 435 無機化学 ====
*[[無機化学]]{{進捗|25%|2005-05-04}}
<!--
==== 436 金属元素とその化合物 ====
-->
==== 437 有機化学 ====
*[[有機化学]]{{進捗|25%|2005-05-21}}
<!--
==== 438 環式化合物の化学 ====
==== 439 天然物質の化学 ====
-->
=== 440 天文学・宇宙科学 ===
* [[天文学]]{{進捗|25%|2005-12-01}}
<!--
==== 441 理論天文学・数理天文学 ====
==== 442 実地天文学・天体観測法 ====
==== 443 恒星・恒星天文学 ====
==== 444 太陽・太陽物理学 ====
==== 445 惑星・衛星 ====
==== 446 月 ====
==== 447 彗星・流星 ====
==== 448 地球・天文地理学 ====
==== 449 時法・暦学 ====
-->
=== 450 地球科学・地学 ===
* [[地球科学]]{{進捗|25%|2005-12-01}}
==== 451 気象学 ====
==== 452 海洋学 ====
==== 453 地震学 ====
===== 453.38 地震予知 =====
==== 454 地形学 ====
==== 455 地質学 ====
==== 456 地史学・層位学 ====
==== 457 古生物学・化石 ====
*[[古生物学]]
==== 458 岩石学 ====
==== 459 鉱物学 ====
=== 460 生物化学・一般生物学 ===
*[[生物学の研究技術]]{{進捗|25%|2005-05-04}}
<!--
==== 461 理論生物学・生命論 ====
==== 462 生物地理・生物誌 ====
==== 463 細胞学 ====
==== 464 生化学 ====
==== 465 微生物学 ====
==== 467 遺伝学 ====
===== 467.25 遺伝子組み換え =====
==== 468 生態学 ====
==== 469 人類学 ====
-->
=== 470 植物学 ===
*[[植物学]]{{進捗|25%|2005-05-04}}
<!--
==== 471 一般植物学 ====
==== 472 植物地理・植物誌 ====
==== 473 葉状植物 ====
==== 474 藻類・菌類 ====
==== 475 コケ植物 ====
==== 476 シダ植物 ====
==== 477 種子植物 ====
==== 478 裸子植物 ====
==== 479 被子植物 ====
=== 480 動物学 ===
==== 481 一般動物学 ====
==== 482 動物地理・動物誌 ====
==== 483 無脊椎動物 ====
==== 484 軟体動物・貝類学 ====
==== 485 節足動物 ====
==== 486 昆虫類 ====
==== 487 脊椎動物 ====
==== 488 鳥類 ====
==== 489 哺乳類 ====
-->
=== 490 医学 ===
* [[医学]]
*[[OsiriX_オンライン解説文書]]{{進捗|75%|2005-05-04}}
==== 491 基礎医学 ====
*[[生理学]]{{進捗|00%|2006-11-09}}
*[[解剖学]]{{進捗|25%|2006-11-09}}
*[[神経解剖学]]{{進捗|00%|2006-11-09}}
*[[組織学]]{{進捗|00%|2006-11-09}}
*[[微生物学]]{{進捗|00%|2006-11-09}}
*[[病理学]]{{進捗|00%|2006-11-09}}
<!--
==== 492 臨床医学 ====
-->
==== 493 内科学 ====
*[[内科学 呼吸器]]{{進捗|00%|2006-11-09}}
<!--
==== 494 外科学 ====
==== 495 産科学,婦人科学 ====
==== 496 眼科学,耳鼻咽喉科学 ====
==== 497 歯科学 ====
==== 498 衛生学,公衆衛生学,予防医学 ====
-->
==== 499 薬学 ====
*[[薬理学]]{{進捗|00%|2006-11-09}}
==5類 技術・工学・工業 ==
=== 500 技術・工学 ===
==== 501 工業基礎学 ====
==== 502 技術史・工学史 ====
==== 503 参考図書 ====
==== 504 論文集・評論集・講演集 ====
==== 505 逐次刊行物 ====
==== 506 団体 ====
==== 507 研究法・指導法・技術教育 ====
==== 508 叢書・全集・選集 ====
==== 509 工業・工業経済 ====
=== 510 建設工学・土木工学 ===
==== 511 土木力学・建設材料 ====
==== 512 測量 ====
==== 513 土木設計・施工法 ====
==== 514 道路工学 ====
==== 515 橋梁工学 ====
==== 516 鉄道工学 ====
==== 517 河海工学・河川工学 ====
==== 518 衛生工学・都市工学 ====
===== 518.523 ごみの再利用 =====
==== 519 公害・環境工学 ====
===== 519.12 環境法 =====
* [[環境法]]
=== 520 建築学 ===
==== 521 日本の建築 ====
==== 522 東洋の建築・アジアの建築 ====
==== 523 西洋の建築・その他の様式の建築 ====
==== 524 建築構造 ====
==== 525 建築計画・施工 ====
==== 526 各種の建築 ====
==== 527 住宅建築 ====
==== 528 建築設備・設備工学 ====
==== 529 建築意匠・装飾 ====
=== 530 機械工学・原子力工学 ===
==== 531 機械力学・材料・設計 ====
==== 532 機械工作・工作機械 ====
==== 533 熱機関・熱工学 ====
==== 534 流体機械・流体工学 ====
==== 535 精密機器・光学機器 ====
==== 536 運輸工学・車輌・運搬機械 ====
==== 537 自動車工学 ====
===== 537.25 電気自動車 =====
==== 538 航空宇宙工学 ====
==== 539 原子力工学 ====
=== 540 電気工学・電子工学 ===
==== 540 電気工学 ====
==== 541 電気回路・計測・材料 ====
==== 542 電気機器 ====
==== 543 発電 ====
==== 544 送電・変電・配電 ====
==== 545 電灯・照明・電熱 ====
==== 546 電気鉄道 ====
==== 547 通信工学・電気通信 ====
*[[スタイルシート言語]]
==== 548 情報工学 ====
==== 549 電子工学 ====
=== 550 海洋工学・船舶工学 ===
==== 551 理論造船学 ====
==== 552 船体構造・材料・施工 ====
==== 553 船体艤装・船舶設備 ====
==== 554 舶用機関[造機] ====
==== 555 船舶修理・保守 ====
==== 556 各種の船舶・艦艇 ====
==== 557 航海・航海学 ====
==== 558 海洋開発 ====
==== 559 兵器、軍事工学 ====
=== 560 金属工学・鉱山工学 ===
==== 561 採鉱・選鉱 ====
==== 562 各種の金属鉱床・採掘 ====
==== 563 冶金・合金 ====
==== 564 鉄鋼 ====
==== 565 非鉄金属 ====
==== 566 金属加工・製造冶金 ====
==== 567 石炭 ====
==== 568 石油 ====
==== 569 非金属鉱物・土石採取業 ====
=== 570 化学工業 ===
==== 571 化学工学・化学機器 ====
==== 572 電気化学工業 ====
==== 573 セラミックス・窯業・珪酸塩化学工業 ====
==== 574 化学薬品 ====
==== 575 燃料・爆発物 ====
==== 576 油脂類 ====
==== 577 染料 ====
==== 578 高分子化学工業 ====
==== 579 その他の化学工業 ====
=== 580 製造工業 ===
==== 581 金属製品 ====
==== 582 事務機器・家庭機器・楽器 ====
==== 583 木工業・木製品 ====
==== 584 皮革工業・皮革製品 ====
==== 585 パルプ・製紙工業 ====
==== 586 繊維工学 ====
==== 587 染色加工・染色業 ====
==== 588 食品工業 ====
==== 589 その他の雑工業 ====
=== 590 家政学・生活科学 ===
<!--
==== 591 家庭経済・経営 ====
==== 592 家庭理工学 ====
==== 593 衣服・裁縫 ====
==== 594 手芸 ====
==== 595 理容・美容 ====
===== 595.6 痩身法 =====
==== 596 食品・料理 ====
*[[料理本]]{{進捗|25%|2005-05-04}}
<!--
==== 597 住居・家具調度 ====
==== 598 家庭衛生 ====
==== 599 育児 ====
-->
==6類 産業 ==
<!--
=== 600 産業 ===
==== 601 産業政策・行政・総合開発 ====
==== 602 産業史・事情・物産誌 ====
==== 603 参考図書 ====
==== 604 論文集・評論集・講演集 ====
==== 605 逐次刊行物 ====
==== 606 団体 ====
==== 607 研究法・指導法・産業教育 ====
==== 608 叢書・全集・選集 ====
==== 609 度量衡、計量法 ====
=== 610 農業 ===
==== 611 農業経済 ====
==== 612 農業史・事情 ====
==== 613 農業基礎学 ====
==== 614 農業工学 ====
==== 615 作物栽培・作物学 ====
==== 616 食用作物 ====
==== 617 工芸作物 ====
==== 618 繊維作物 ====
==== 619 農産物製造・加工 ====
-->
=== 620 園芸 ===
<!--
==== 621 園芸経済・行政・経営 ====
==== 622 園芸史・事情 ====
==== 623 園芸植物学・病虫害 ====
==== 624 温室・温床・園芸用具 ====
==== 625 果樹園芸 ====
-->
==== 626 蔬菜園芸 ====
*[[ダイズの栽培]]{{進捗|00%|2007-02-21}}
==== 627 花卉園芸[草花] ====
*[[サボテンの栽培]]{{進捗|00%|2007-02-21}}
<!--
==== 628 園芸利用 ====
==== 629 造園 ====
=== 630 蚕糸業 ===
==== 631 蚕糸経済・行政・経営 ====
==== 632 蚕糸業史・事情 ====
==== 633 蚕学・蚕業基礎学 ====
==== 634 蚕種 ====
==== 635 飼育法 ====
==== 636 くわ・栽桑 ====
==== 637 蚕室・蚕具 ====
==== 638 まゆ ====
==== 639 製糸・生糸・蚕糸利用 ====
-->
=== 640 畜産業 ===
<!--
==== 641 畜産経済・行政・経営 ====
==== 642 畜産史・事情 ====
==== 643 家畜の繁殖・家畜飼料 ====
==== 644 家畜の管理・畜舎・用具 ====
==== 645 家畜・畜産動物各論 ====
-->
==== 646 家禽各論・飼鳥 ====
*[[ホンセイインコ類の飼育]]{{進捗|00%|2007-02-21}}
<!--
===== 646.9 みつばち・昆虫 =====
==== 648 畜産製造・畜産物 ====
==== 649 獣医学・比較医学 ====
==== 649 獣医学 ====
=== 650 林業 ===
==== 651 林業経済・行政・経営 ====
==== 652 森林史・林業史・事情 ====
==== 653 森林立地・造林 ====
==== 654 森林保護 ====
==== 655 森林施業 ====
==== 656 森林工学 ====
==== 657 森林利用・林産物・木材学 ====
==== 658 林産製造 ====
==== 659 狩猟 ====
=== 660 水産業 ===
==== 661 水産経済・行政・経営 ====
==== 662 水産業および漁業史・事情 ====
==== 663 水産基礎学 ====
==== 664 漁労・漁業各論 ====
==== 665 漁船・漁具 ====
==== 666 水産増殖・養殖業 ====
==== 667 水産製造・水産食品 ====
==== 668 水産物利用・水産利用工業 ====
==== 669 製塩・塩業 ====
=== 670 商業 ===
==== 671 商業政策・行政 ====
==== 672 商業史・事情 ====
==== 673 商業経営・商店 ====
==== 674 広告・宣伝 ====
==== 675 マーケティング ====
==== 676 取引所 ====
==== 678 貿易 ====
=== 680 運輸・交通 ===
==== 681 交通政策・行政・経営 ====
==== 682 交通史・事情 ====
==== 683 海運 ====
==== 684 内水・運河交通 ====
==== 685 陸運・自動車運送 ====
==== 686 鉄道 ====
==== 687 航空運送 ====
==== 688 倉庫業 ====
==== 689 観光事業 ====
=== 690 通信事業 ===
==== 691 通信政策・行政・法令 ====
==== 692 通信事業史・事情 ====
==== 693 郵便・郵政事業 ====
==== 694 電気通信事業 ====
==== 699 放送事業 ====
===== 699.39 アナウンサー =====
-->
== 7類 芸術 ==
<!--
=== 700 芸術・美術 ===
==== 701 芸術理論・美学 ====
==== 702 芸術史・美術史 ====
==== 703 参考図書[レファレンスブック] ====
==== 704 論文集・評論集・講演集 ====
==== 705 逐次刊行物 ====
==== 706 団体 ====
==== 707 研究法・指導法・芸術教育 ====
==== 708 叢書・全集・選集 ====
==== 709 芸術政策・文化財 ====
=== 710 彫刻 ===
==== 711 彫塑材料・技法 ====
==== 712 彫刻史・各国の彫刻 ====
==== 713 木彫 ====
==== 714 石彫 ====
==== 715 金属彫刻・鋳造 ====
==== 717 粘土彫刻・塑造 ====
==== 708 仏像 ====
==== 709 オブジェ ====
=== 720 絵画 ===
==== 721 日本画 ====
==== 722 東洋画 ====
==== 723 洋画 ====
==== 724 絵画材料・技法 ====
==== 725 素描・描画 ====
==== 726 漫画、挿絵、童画 ====
==== 727 グラフィックデザイン、図案 ====
==== 728 書道 ====
=== 730 版画 ===
==== 731 版画材料・技法 ====
==== 732 版画史・各国の版画 ====
==== 733 木版画 ====
==== 734 石版画 ====
==== 735 銅版画・鋼版画 ====
==== 736 リノリウム版画・ゴム版画 ====
==== 737 写真版画・孔版画 ====
==== 739 印章、篆刻、印譜 ====
-->
=== 740 写真 ===
<!--
==== 742 写真器械・材料 ====
==== 743 撮影技術 ====
-->
==== 744 現像・印画 ====
*[[白黒写真の暗室作業]]{{進捗|75%|2007-05-10}}
<!--
==== 745 複写技術 ====
==== 746 特殊写真 ====
==== 747 写真の応用 ====
==== 748 写真集 ====
==== 749 印刷 ====
=== 750 工芸 ===
==== 751 陶磁工芸 ====
==== 752 漆工芸 ====
==== 753 染織工芸 ====
==== 754 木竹工芸 ====
==== 755 宝石・牙角・皮革工芸 ====
==== 756 金工芸 ====
==== 757 デザイン・装飾美術 ====
==== 758 美術家具 ====
==== 759 人形・玩具 ====
-->
=== 760 音楽 ===
==== 761 音楽の一般理論・音楽学 ====
* [[楽典]]
* [[和声学]]
* [[楽式]]
==== 762 音楽史・各国の音楽 ====
* [[西洋音楽史]]
<!--
==== 763 楽器・器楽 ====
==== 764 器楽合奏 ====
==== 765 宗教音楽・聖楽 ====
==== 766 劇音楽 ====
==== 767 声楽 ====
==== 768 邦楽 ====
==== 769 舞踊、バレエ ====
=== 770 演劇 ===
==== 771 劇場・演出・演技 ====
==== 772 演劇史・各国の演劇 ====
==== 773 能楽、狂言 ====
==== 774 歌舞伎 ====
==== 775 各種の演劇 ====
==== 777 人形劇 ====
==== 778 映画 ====
==== 779 大衆演芸 ====
-->
=== 780 スポーツ・体育 ===
*[[スポーツ]]
==== 781 体操、遊戯 ====
==== 782 陸上競技 ====
*[[トライアスロン]]
==== 783 球技 ====
*[[サッカー]]{{進捗|25%|2006-1-7}}
*[[テニス]]{{進捗|25%|2006-1-7}}
*[[バドミントン]]
*[[野球]]{{進捗|25%|2006-1-7}}
*[[ボウリング]]
<!--
==== 784 冬季競技 ====
-->
==== 785 水上競技 ====
*[[セーリング]]{{進捗|25%|2006-1-7}}
==== 786 戸外レクリエーション ====
===== 786.1 登山・山岳競技 =====
*[[登山]]
==== 787 釣魚、遊猟 ====
==== 788 相撲、拳闘、競馬 ====
*[[相撲]]{{進捗|25%|2006-2-23}}
*[[競馬]]{{進捗|25%|2023-09-25}}
==== 789 武術 ====
*[[剣道]]{{進捗|25%|2007-6-30}}
=== 790 諸芸・娯楽 ===
<!--
==== 791 茶道 ====
==== 792 香道 ====
==== 793 花道 ====
==== 794 撞球 ====
-->
==== 795 囲碁 ====
*[[囲碁]]{{進捗|25%|2006-1-7}}
==== 796 将棋 ====
*[[将棋]]{{進捗|25%|2006-1-7}}
<!--
==== 797 射倖ゲーム ====
-->
==== 798 室内娯楽 ====
*[[トランプ]]<!--798.2-->
*[[トランプ/トランプ教科書]]
*[[麻雀]]{{進捗|25%|2006-1-7}}
*[[チェス]]{{進捗|25%|2006-1-7}}
===== 798.5 テレビゲーム =====
*[[Minecraft]]
<!--
==== 799 ダンス ====
-->
== 8類 言語 ==
=== 800 言語 ===
==== 801 言語学 ====
*[[生成文法]]
*[[語学]]
**[[琉球語]]
<!--
==== 809 言語生活 ====
-->
=== 810 日本語 ===
*[[日本語]]{{進捗|25%|2005-05-04}}
<!--
==== 811 音声、音韻、文字 ====
==== 812 語源、意味 ====
==== 813 辞典 ====
==== 814 語彙 ====
==== 815 文法、語法 ====
==== 816 文章、文体、作文 ====
==== 817 読本、解釈、会話 ====
-->
==== 818 方言、訛語 ====
*[[北海道方言]]
*[[讃岐弁]]
*[[沖縄語]]
<!--
=== 820 中国語 ===
-->
==== 829 その他の東洋の諸言語 ====
*[[朝鮮語]]{{進捗|25%|2005-05-04}}
*[[ペルシア語]]
=== 830 英語 ===
*[[英語]]{{進捗|50%|2005-05-04}}
=== 840 ドイツ語 ===
*[[ドイツ語]]{{進捗|50%|2005-05-04}}
<!--
==== 849 その他のゲルマン言語 ====
-->
=== 850 フランス語 ===
*[[フランス語]]{{進捗|25%|2005-05-04}}
<!--
==== 859 プロヴァンス語 ====
=== 860 スペイン語 ===
==== 869 ポルトガル語 ====
=== 870 イタリア語 ===
-->
==== 879 その他のロマンス諸語 ====
*[[ルーマニア語]]
<!--
=== 880 ロシア語 ===
==== 889 その他のスラヴ諸語 ====
=== 890 その他の諸言語 ===
-->
==== 891 ギリシア語 ====
*[[ギリシア語]]
==== 892 ラテン語 ====
*[[ラテン語]]{{進捗|50%|2006-03-21}}
==== 893 その他のヨーロッパの諸言語 ====
*[[デンマーク語]]{{進捗|25%|2005-12-01}}
<!--
==== 894 アフリカの諸言語 ====
==== 895 アメリカの諸言語 ====
==== 897 オーストラリアの諸言語 ====
-->
==== 899 国際語 ====
*[[エスペラント]]{{進捗|00%|2005-05-04}}
== 9類 文学 ==
=== 900 文学 ===
*[[古典文学]]{{進捗|25%|2005-05-15}}
<!--
==== 909 児童文学研究 ====
-->
=== 910 日本文学 ===
<!--
==== 911 詩歌 ====
==== 912 戯曲 ====
-->
==== 913 小説、物語 ====
*[[竹取物語]]{{進捗|25%|2005-05-04}}
==== 914 評論、エッセイ、随筆 ====
*[[方丈記]]
<!--
==== 915 日記、書簡、紀行 ====
==== 916 記録、手記、ルポルタージュ ====
==== 917 箴言、アフォリズム、寸言 ====
==== 918 作品集 ====
==== 919 漢詩文、日本漢文学 ====
-->
=== 920 中国文学 ===
*[[漢詩]]{{進捗|25%|2005-05-04}}
<!--
==== 929 その他の東洋文学 ====
=== 930 英文学・米文学 ===
=== 940 ドイツ文学 ===
==== 949 その他のゲルマン文学 ====
=== 950 フランス文学 ===
==== 959 プロヴァンス文学 ====
=== 960 スペイン文学 ===
==== 969 ポルトガル文学 ====
=== 970 イタリア文学 ===
==== 979 その他のロマンス文学 ====
=== 980 ロシア文学・ソヴィエト文学 ===
==== 989 その他のスラヴ文学 ====
-->
=== 990 その他の諸文学 ===
==== 991 ギリシア文学 ====
==== 992 ラテン文学 ====
*[[ガリア戦記]]
==== 993 その他のヨーロッパ文学 ====
==== 994 アフリカ文学 ====
==== 995 アメリカ先住民語の文学 ====
==== 997 オーストラリア先住民語の文学 ====
==== 999 国際語による文学 ====
== 関連項目 ==
*[[w:日本十進分類法#要目表(第3次区分表)]]
== 外部リンク ==
*<del>[http://www.ndl.go.jp/jp/library/data/zan9.html 日本十進分類法新訂9版分類基準]([http://www.ndl.go.jp/ 国立国会図書館])</del>リンク切れ
*[https://www.kotono8.com/wiki/%E6%97%A5%E6%9C%AC%E5%8D%81%E9%80%B2%E5%88%86%E9%A1%9E%E6%B3%95%EF%BC%88%E8%A9%B3%E7%B4%B0%EF%BC%89 閾ペディアことのは 日本十進分類法(詳細)]
[[Category:日本十進分類法|*]]
[[it:Wikibooks:Classificazione decimale Dewey]]
pl2dw1ex2wv43lvvvq17nq93v74lo18
301521
301476
2026-07-13T10:21:20Z
Tkkn46tkkn46
89925
/* 547 通信工学・電気通信 */ AMPHTML を追加。547.4833でも
301521
wikitext
text/x-wiki
__NOTOC__
[[メインページ|ウィキブックス]]の全ての書籍を[[:w:日本十進分類法|日本十進分類法]]に従って分類したものです。
{{進捗状況}}
== 0類 総記 ==
=== 000 総記 ===
*[[ウィキペディアの書き方]]
<!--
==== 002 知識・学問・学術 ====
-->
==== 007 情報科学 ====
*[[情報技術]]
<!--
===== 007.1 情報理論 =====
===== 007.2 歴史 事情 =====
===== 007.3 情報と社会 =====
===== 007.4 情報源 =====
===== 007.5 ドキュメンテーション 情報管理 =====
-->
===== 007.6 データ処理 情報処理 =====
*[[情報処理技術者試験の概要]]
*[[初級システムアドミニストレータ]]
<!--
====== 007.61 システム分析 システム設計 ======
-->
====== 007.63 コンピュータシステム ソフトウェア ======
*[[Freenet]]
*[[Maxima]]
*[[Microsoft Office]]
*[[Mizar]]
*[[OpenOffice.org]]
*[[OSとアプリケーション]]
*[[TeX/LaTeX入門]]{{進捗|25%|2005-05-04}}
*[[vi]]
<!--
======= 007.632 エキスパートシステム =======
-->
====== 007.634 オペレーティングシステム ======
*[[ChromeOS]]
*[[Linuxシステム管理]]
*[[Linuxハードウェア]]
*[[MS-DOS/PC DOS入門]]{{進捗|50%|2005-05-04}}
*[[UNIX/Linux入門]]{{進捗|25%|2005-05-04}}
<!--
======= 007.635 漢字処理システム =======
-->
====== 007.637 図形処理ソフトウェア ======
* [[Inkscape]]
====== 007.64 コンピュータプログラミング ======
*[[機械語]]
*[[ゲームプログラミング]]
*[[数式処理システム]]
*[[ソフトウェア開発技術者]]
*[[プログラミング]]
*[[BASIC]]
*[[Blender 3D]]
*[[C言語]]{{進捗|25%|2005-05-04}}
*[[CPlusPlus|C++]]
*[[CSS]]{{進捗|00%|2005-06-17}}
*[[CGI]]{{進捗|25%|2005-05-04}}
*[[GNOMEフレームワーク]]
*[[Go]]
*[[HTML]]{{進捗|25%|2005-05-04}}
*[[Java]]{{進捗|25%|2005-05-04}}
*[[JavaScript]]{{進捗|25%|2005-05-04}}
*[[Lisp]]
*[[Node.js]]
*[[OpenGL]]
*[[OSS開発ツール]]
*[[Perl]]{{進捗|25%|2005-05-04}}
*[[PHP]]
*[[Ruby]]
*[[Scratch]]
*[[Scheme]]
*[[SVG]]
*[[Swift]]
*[[Xプログラミング]]
<!--
======= 007.642 CG技術 =======
====== 007.65 各種の記憶媒体 ======
====== 007.68 情報検索 機械検索 ======
-->
===== 007.7 情報システム =====
*[[LANとインターネット]]
*[[NTP入門]]
*[[TCP/IP入門]]
<!--
=== 010 図書館・図書館学 ===
==== 011 図書館政策・図書館行財政 ====
==== 012 図書館建築・図書館整備 ====
==== 013 図書館管理 ====
==== 014 資料の収集・資料の整理・資料の保管 ====
==== 015 図書館奉仕・図書館活動 ====
==== 016 各種の図書館 ====
==== 017 学校図書館 ====
==== 018 専門図書館 ====
==== 019 読書・読書法 ====
-->
=== 020 図書・書誌学 ===
==== 021 著作・編集 ====
===== 021.4 編集 編纂 =====
*[[ウィキペディアの書き方 入門編]]{{進捗|50%|2005-05-04}}
<!--
==== 022 写本・刊本・造本 ====
==== 023 出版 ====
-->
==== 024 図書の販売 ====
*[[同人誌即売会参加方法]]{{進捗|75%|2005-05-04}}
<!--
==== 025 一般書誌・全国書誌 ====
==== 026 稀書目録・善本目録 ====
==== 027 特種目録 ====
==== 028 選定図書目録・参考図書目録 ====
==== 029 蔵書目録・総合目録 ====
-->
=== 030 百科事典 ===
==== 031 日本語 ====
*[[w:mainpage|w:wikipedia]]
===== 031.3 日用便覧 =====
*[[ジョーク集]]
<!--
==== 039 用語索引<一般> ====
=== 040 一般論文集・一般講演集 ===
==== 041 日本語 ====
==== 049 雑著 ====
=== 050 逐次刊行物 ===
==== 051 日本の雑誌 ====
==== 059 一般年鑑 ====
=== 060 団体 ===
==== 061 学術・研究機関 ====
==== 063 文化交流機関 ====
==== 065 親睦団体・その他の団体 ====
==== 069 博物館 ====
=== 070 ジャーナリズム・新聞 ===
==== 071 日本 ====
=== 080 叢書・全集・選集 ===
==== 081 日本語 ====
==== 089 その他の諸言語 ====
=== 090 貴重書・郷土資料・その他の特別コレクション ===
-->
== 1類 哲学 ==
=== 100 哲学 ===
*[[哲学・思想]]{{進捗|00%|2005-05-04}}
<!--
==== 101 哲学理論 ====
==== 102 哲学史 ====
==== 103 参考図書 ====
==== 104 論文集・評論集・講演集 ====
==== 105 逐次刊行物 ====
==== 106 団体 ====
==== 107 研究法・指導法・哲学教育 ====
==== 108 叢集・全集・選集 ====
=== 110 哲学各論 ===
==== 111 形而上学・存在論 ====
==== 112 自然哲学・宇宙論 ====
==== 113 人生観・世界観 ====
==== 114 人間学 ====
==== 115 認識論 ====
==== 116 論理学・弁証法・方法論 ====
==== 117 価値哲学 ====
==== 118 文化哲学・技術哲学 ====
-->
=== 120 東洋思想 ===
==== 121 日本思想 ====
==== 122 中国思想・中国哲学 ====
*[[論語巻第一]]
==== 123 経書 ====
==== 124 先秦思想・諸子 ====
==== 125 中世思想・近代思想 ====
==== 126 インド哲学・バラモン教 ====
==== 129 その他のアジア・アラブ哲学 ====
<!--
=== 130 西洋哲学 ===
==== 131 古代哲学 ====
==== 132 中世哲学 ====
==== 133 近代哲学 ====
==== 134 ドイツ・オーストリア哲学 ====
==== 135 フランス・オランダ哲学 ====
==== 136 スペイン・ポルトガル哲学 ====
==== 137 イタリア哲学 ====
==== 138 ロシア哲学 ====
==== 139 その他の哲学 ====
-->
=== 140 心理学 ===
*[[心理学]]{{進捗|25%|2005-05-04}}
<!--
==== 141 普通心理学・心理各論 ====
==== 143 発達心理学 ====
==== 145 異常心理学 ====
==== 146 臨床心理学・精神分析学 ====
==== 147 超心理学・心霊研究 ====
==== 148 相法・易占 ====
==== 149 応用心理学 ====
-->
=== 150 倫理学・道徳 ===
*[[倫理学]]
==== 151 倫理各論 ====
==== 152 家庭倫理・性倫理 ====
==== 153 職業倫理 ====
==== 154 社会倫理 ====
==== 155 国体論・詔勅 ====
==== 156 武士道 ====
==== 157 報徳教・石門心学 ====
==== 158 その他の特定主題 ====
==== 159 人生訓・教訓 ====
<!--
=== 160 宗教 ===
==== 161 宗教学・宗教思想 ====
==== 162 宗教史・事情 ====
==== 163 原始宗教・宗教民族学 ====
==== 164 神話・神話学 ====
===== 164.31 ギリシャ神話 =====
==== 165 比較宗教 ====
==== 166 道教 ====
==== 167 イスラーム ====
==== 168 ヒンドゥー教・ジャイナ教 ====
==== 169 その他の宗教・新興宗教 ====
=== 170 神道 ===
==== 171 神道思想・神道説 ====
==== 172 神祇・神道史 ====
==== 173 神典 ====
==== 174 信仰録・説教集 ====
==== 175 神社・神職 ====
==== 176 祭祀 ====
==== 177 布教・伝道 ====
==== 178 各教派・教派神道 ====
=== 180 仏教 ===
==== 181 仏教教理・仏教哲学 ====
==== 182 仏教史 ====
==== 183 経典 ====
==== 184 法話・説教集 ====
==== 185 寺院・僧職 ====
==== 186 仏会 ====
==== 187 布教・伝道 ====
==== 188 各宗 ====
=== 190 キリスト教 ===
==== 191 教義・キリスト教神学 ====
==== 192 キリスト教史・迫害史 ====
==== 193 聖書 ====
==== 194 信仰録・説教集 ====
==== 195 教会・聖職 ====
==== 196 典礼・祭式・礼拝 ====
==== 197 布教・伝道 ====
==== 198 各教派・教会史 ====
==== 199 ユダヤ教 ====
-->
== 2類 歴史 ==
=== 200 歴史 ===
==== 201 歴史学 ====
*[[歴史学]]
<!--
==== 202 歴史補助学 ====
==== 203 参考図書 ====
==== 204 論文集・評論集・講演集 ====
==== 205 逐次刊行物 ====
==== 206 団体 ====
==== 207 研究法・指導法・歴史教育 ====
==== 208 叢書・全集・選集 ====
-->
==== 209 世界史・文化史 ====
*[[世界史]]{{進捗|25%|2005-05-04}}
=== 210 日本史 ===
*[[日本史]]{{進捗|25%|2005-05-04}}
<!--
===== 210.027 古銭学 =====
==== 211 北海道地方 ====
==== 212 東北地方 ====
==== 213 関東地方 ====
==== 214 北陸地方 ====
==== 215 中部地方 ====
==== 216 近畿地方 ====
==== 217 中国地方 ====
==== 218 四国地方 ====
==== 219 九州地方 ====
-->
=== 220 アジア史・東洋史 ===
<!--
==== 221 朝鮮 ====
-->
==== 222 中国 ====
*[[中国史]]{{進捗|25%|2005-12-01}}
<!--
==== 223 東南アジア ====
==== 224 インドネシア ====
==== 225 インド ====
===== 225.97 モルジブ =====
==== 229 アジアロシア ====
=== 230 ヨーロッパ史・西洋史 ===
==== 231 古代ギリシア ====
==== 232 古代ローマ ====
==== 233 イギリス・英国 ====
==== 234 ドイツ・中欧 ====
==== 235 フランス ====
==== 236 スペイン イスパニア ====
==== 237 イタリア ====
==== 238 ロシア ソビエト連邦 独立国家共同体 ====
==== 239 バルカン諸国 ====
=== 240 アフリカ史 ===
==== 241 北アフリカ ====
==== 242 エジプト ====
==== 243 バーバリ諸国 ====
==== 244 西アフリカ ====
==== 245 東アフリカ ====
==== 248 南アフリカ ====
==== 249 インド洋のアフリカ諸島 ====
=== 250 北アメリカ史 ===
==== 251 カナダ ====
==== 253 アメリカ合衆国 ====
==== 255 ラテンアメリカ 中南米 ====
==== 256 メキシコ ====
==== 257 中央アメリカ 中米諸国 ====
==== 259 西インド諸島 ====
=== 260 南アメリカ史 ===
==== 261 北部諸国 カリブ沿海諸国 ====
==== 262 ブラジル ====
==== 263 パラグアイ ====
==== 264 ウルグアイ ====
==== 265 アルゼンチン ====
==== 266 チリ ====
==== 267 ボリビア ====
==== 268 ペルー ====
=== 270 オセアニア史・両極地方史 ===
==== 271 オーストラリア ====
==== 272 ニュージーランド ====
==== 273 メラネシア ====
==== 274 ミクロネシア ====
==== 275 ポリネシア ====
==== 276 ハワイ ====
==== 277 両極地方 ====
==== 278 北極 北極地方 ====
==== 279 南極 南極地方 ====
=== 280 伝記 ===
==== 281 日本 ====
==== 282 アジア ====
==== 283 ヨーロッパ ====
==== 284 アフリカ ====
==== 285 北アフリカ ====
==== 286 南アフリカ ====
==== 287 オセアニア・両極地方 ====
==== 288 系譜・家史・皇室 ====
==== 289 個人伝記 ====
-->
=== 290 地理・地誌・紀行 ===
*[[地理学]]{{進捗|00%|2005-05-04}}
<!--
==== 290.93 旅行案内記 ====
-->
== 3類 社会科学 ==
<!--
=== 300 社会科学 ===
==== 301 理論・方法論 ====
==== 302 政治・経済・社会・文化事情 ====
==== 303 参考図書 ====
==== 304 論文集・評論集・講演集 ====
==== 305 逐次刊行物 ====
==== 306 団体 ====
==== 307 研究法・指導法・社会科学教育 ====
==== 308 叢書・全集・選集 ====
==== 309 社会思想 ====
=== 310 政治 ===
==== 311 政治学 ====
==== 312 政治史・事情 ====
==== 313 国家の形態・政治体制 ====
==== 314 議会 ====
==== 315 政党・政治結社 ====
==== 316 国家と個人・宗教・民族 ====
==== 317 行政 ====
==== 318 地方自治・地方行政 ====
==== 319 外交・国際問題 ====
-->
=== 320 法律 ===
==== 321 法学 ====
*[[法学]]{{進捗|25%|2005-05-04}}
==== 322 法制史 ====
*[[法制史]]
==== 323 憲法 ====
*[[憲法]]
==== 324 民法 ====
*[[民法]]
==== 325 商法 ====
*[[商法]]
==== 326 刑法・刑事法 ====
*[[刑法]]
==== 327 司法・訴訟手続法 ====
*[[民事訴訟法]]
*[[刑事訴訟法]]
==== 328 諸法 ====
*[[教育基本法]]
*[[知的財産権法]]
==== 329 国際法 ====
*[[国際法]]
=== 330 経済 ===
==== 331 経済学・経済思想 ====
*[[経済学]]{{進捗|25%|2005-05-04}}
*[[経済学基礎]]
==== 332 経済史・事情・経済体制 ====
==== 333 経済政策・国際経済 ====
==== 334 人口・土地・資源 ====
==== 335 企業・経営 ====
==== 336 経営管理 ====
*[[公認会計士試験]]
==== 337 貨幣・通貨 ====
==== 338 金融・銀行・信託 ====
==== 339 保険 ====
=== 340 財政 ===
<!--
==== 341 財政学・財政思想 ====
==== 342 財政史・事情 ====
==== 343 財政政策・財政行政 ====
==== 344 予算・決算 ====
==== 345 租税 ====
==== 347 公債・国債 ====
==== 348 専売・国有財産 ====
==== 349 地方財政 ====
=== 350 統計 ===
==== 351 日本 ====
==== 358 人口統計・国勢調査 ====
==== 359 各種の統計書 ====
-->
=== 360 社会 ===
<!--
==== 361 社会学 ====
==== 362 社会史・社会体制 ====
==== 364 社会保障 ====
==== 365 生活・消費者問題 ====
==== 366 労働経済・労働問題 ====
==== 367 家族問題、男性・女性問題、老人問題 ====
==== 368 社会病理 ====
-->
==== 369 社会福祉 ====
===== 369.3 災害 災害救助 =====
*[[防災]]{{進捗|25%|2006-04-06}}
=== 370 教育 ===
<!--
==== 371 教育学、教育思想 ====
===== 371.42 登校拒否・いじめ =====
-->
==== 372 教育史・事情 ====
*[[教育勅語]]{{進捗|75%|2005-05-04}}
<!--
==== 373 教育政策、教育制度、教育行財政 ====
-->
==== 374 学校経営・管理、学校保健 ====
===== 374.48 学校行事 =====
*[[運動会]]
==== 375 教育課程、学習指導、教科別教育 ====
*[[学校教育]]{{進捗|25%|2005-05-04}}
*[[生活と進路]]{{進捗|50%|2005-05-04}}
===== 374.9 教科書、教科書検定 =====
*[[小学校の学習]]{{進捗|50%|2023-09-25}}
*[[中学校の学習]]{{進捗|50%|2023-09-25}}
*[[高等学校の学習]]{{進捗|00%|2023-09-25}}
**[[高等学校の学習/旧課程]]{{進捗|25%|2023-09-25}}
<!--
* [[小学校算数]] {{進捗|25%|2005-05-04}}
* [[中学校数学]] {{進捗|50%|2005-05-10}}
* [[高等学校世界史A]] {{進捗|25%|2015-08-30}}
* [[高等学校地理B]] {{進捗|25%|2005-11-1}}
* [[高等学校現代社会]] {{進捗|25%|2015-08-30}}
* [[高等学校政治経済]] {{進捗|50%|2015-08-30}}
*[[高等学校倫理]]
*[[高等学校数学]]
*[[高等学校数学基礎]]{{進捗|100%|2005-05-04}}
*[[高等学校数学I]]{{進捗|50%|2005-05-04}}
*[[高等学校数学III]]{{進捗|50%|2005-05-04}}
*[[高等学校数学B]]{{進捗|50%|2005-05-04}}
*[[高等学校数学C]]{{進捗|50%|2005-05-04}}
*[[高等学校理科総合B]]{{進捗|50%|2005-05-04}}
*[[高等学校物理]]{{進捗|50%|2005-11-1}}
* [[高等学校化学]] {{進捗|50%|2015-08-30}}
* [[高等学校生物]] {{進捗|50%|2015-08-30}}
* [[高等学校地学]] {{進捗|25%|2015-08-30}}
*[[高等学校情報A]]
*[[高等学校情報B]]
*[[高等学校情報C]]
-->
*[[小・中・高等学校演習]]
*[[検定教科書]]
==== 376 幼児・初等・中等教育 ====
*[[小学校・中学校・高等学校の学習]]
==== 377 大学、高等・専門教育、学術行政 ====
* [[大学受験ガイド]] {{進捗|50%|2015-08-30}}
<!--
==== 378 障害児教育 ====
==== 379 社会教育 ====
=== 380 風俗習慣・民俗学・民族学 ===
==== 382 風俗史・民俗誌、民族誌 ====
==== 383 衣食住の習俗 ====
==== 384 社会・家庭生活の習俗 ====
==== 385 通過儀礼、冠婚葬祭 ====
==== 386 年中行事、祭礼 ====
==== 387 民間信仰、迷信(俗信) ====
==== 388 伝説、民話(昔話) ====
==== 389 民族学、文化人類学 ====
=== 390 国防・軍事 ===
==== 391 戦争、戦略、戦術 ====
==== 392 国防史・事情、軍事史・事情 ====
==== 393 国防政策・行政・法令 ====
==== 394 軍事医学、兵食 ====
==== 395 軍事施設、軍需品 ====
==== 396 陸軍 ====
==== 397 海軍 ====
==== 398 空軍 ====
==== 399 古代兵法、軍学 ====
-->
== 4類 自然科学 ==
<!--
=== 400 自然科学 ===
==== 401 科学理論・科学哲学 ====
==== 402 科学史・事情 ====
==== 403 参考図書 ====
==== 404 論文集・評論集・講演集 ====
==== 405 逐次刊行物 ====
==== 406 団体 ====
==== 407 研究法・指導法・科学教育 ====
==== 408 叢書・全集・選集 ====
==== 409 科学技術政策・科学技術行政 ====
-->
=== 410 数学 ===
* [[数学]]
* [[初等数学]]
* [[初等数学公式集]]{{進捗|25%|2005-05-04}}
* [[初等数学演習]]{{進捗|25%|2005-05-04}}
* [[初等数学記号集]]
* [[Wikibooks:初等数学用語索引|初等数学用語索引]]{{進捗|25%|2005-05-04}}
* [[中等数学]]
* [[高等数学]]
* [[大学数学公式集]]
==== 411 代数学 ====
===== 411.6 集合論 =====
*[[公理的集合論]]
==== 412 数論 ====
==== 413 解析学 ====
* [[解析学]]
* [[解析学基礎]]{{進捗|25%|2005-05-04}}
==== 414 幾何学 ====
==== 415 位相数学 ====
* [[位相幾何学]]{{進捗|25%|2008-09-03}}
==== 417 確率論、数理統計学 ====
* [[統計学基礎]]{{進捗|25%|2005-05-04}}
<!--
==== 418 計算法 ====
==== 419 和算、中国算法 ====
-->
=== 420 物理学 ===
*[[物理学]]
==== 421 理論物理学 ====
<!--
===== 421.1 基礎理論 エーテル理論 =====
-->
===== 421.2 相対性理論 =====
*[[特殊相対論]]
*[[一般相対性理論]]
===== 421.3 量子力学、量子論 =====
*[[場の量子論]]
*[[量子力学]]{{進捗|50%|2005-05-04}}
===== 421.4 統計力学 =====
*[[統計力学I]]
*[[統計力学II]]
===== 421.5 数理物理学.物理数学 =====
* [[物理数学I]] {{進捗|75%|2023-11-05}}
* [[物理数学II]]
==== 423 力学 ====
*[[解析力学]]
*[[古典力学]]{{進捗|50%|2005-05-04}}
==== 424 振動学、音響学 ====
*[[振動と波動]]
* [[音響学]]
==== 425 光学 ====
*[[光の偏極]]
==== 426 熱学 ====
*[[熱力学]]
==== 427 電磁気学 ====
*[[電磁気学]]
<!--
==== 428 物性物理学 ====
==== 429 原子物理学 ====
-->
=== 430 化学 ===
<!--
==== 431 物理化学. 理論化学 ====
==== 432 実験化学 ====
==== 433 分析化学 ====
==== 434 合成化学 ====
-->
==== 435 無機化学 ====
*[[無機化学]]{{進捗|25%|2005-05-04}}
<!--
==== 436 金属元素とその化合物 ====
-->
==== 437 有機化学 ====
*[[有機化学]]{{進捗|25%|2005-05-21}}
<!--
==== 438 環式化合物の化学 ====
==== 439 天然物質の化学 ====
-->
=== 440 天文学・宇宙科学 ===
* [[天文学]]{{進捗|25%|2005-12-01}}
<!--
==== 441 理論天文学・数理天文学 ====
==== 442 実地天文学・天体観測法 ====
==== 443 恒星・恒星天文学 ====
==== 444 太陽・太陽物理学 ====
==== 445 惑星・衛星 ====
==== 446 月 ====
==== 447 彗星・流星 ====
==== 448 地球・天文地理学 ====
==== 449 時法・暦学 ====
-->
=== 450 地球科学・地学 ===
* [[地球科学]]{{進捗|25%|2005-12-01}}
==== 451 気象学 ====
==== 452 海洋学 ====
==== 453 地震学 ====
===== 453.38 地震予知 =====
==== 454 地形学 ====
==== 455 地質学 ====
==== 456 地史学・層位学 ====
==== 457 古生物学・化石 ====
*[[古生物学]]
==== 458 岩石学 ====
==== 459 鉱物学 ====
=== 460 生物化学・一般生物学 ===
*[[生物学の研究技術]]{{進捗|25%|2005-05-04}}
<!--
==== 461 理論生物学・生命論 ====
==== 462 生物地理・生物誌 ====
==== 463 細胞学 ====
==== 464 生化学 ====
==== 465 微生物学 ====
==== 467 遺伝学 ====
===== 467.25 遺伝子組み換え =====
==== 468 生態学 ====
==== 469 人類学 ====
-->
=== 470 植物学 ===
*[[植物学]]{{進捗|25%|2005-05-04}}
<!--
==== 471 一般植物学 ====
==== 472 植物地理・植物誌 ====
==== 473 葉状植物 ====
==== 474 藻類・菌類 ====
==== 475 コケ植物 ====
==== 476 シダ植物 ====
==== 477 種子植物 ====
==== 478 裸子植物 ====
==== 479 被子植物 ====
=== 480 動物学 ===
==== 481 一般動物学 ====
==== 482 動物地理・動物誌 ====
==== 483 無脊椎動物 ====
==== 484 軟体動物・貝類学 ====
==== 485 節足動物 ====
==== 486 昆虫類 ====
==== 487 脊椎動物 ====
==== 488 鳥類 ====
==== 489 哺乳類 ====
-->
=== 490 医学 ===
* [[医学]]
*[[OsiriX_オンライン解説文書]]{{進捗|75%|2005-05-04}}
==== 491 基礎医学 ====
*[[生理学]]{{進捗|00%|2006-11-09}}
*[[解剖学]]{{進捗|25%|2006-11-09}}
*[[神経解剖学]]{{進捗|00%|2006-11-09}}
*[[組織学]]{{進捗|00%|2006-11-09}}
*[[微生物学]]{{進捗|00%|2006-11-09}}
*[[病理学]]{{進捗|00%|2006-11-09}}
<!--
==== 492 臨床医学 ====
-->
==== 493 内科学 ====
*[[内科学 呼吸器]]{{進捗|00%|2006-11-09}}
<!--
==== 494 外科学 ====
==== 495 産科学,婦人科学 ====
==== 496 眼科学,耳鼻咽喉科学 ====
==== 497 歯科学 ====
==== 498 衛生学,公衆衛生学,予防医学 ====
-->
==== 499 薬学 ====
*[[薬理学]]{{進捗|00%|2006-11-09}}
==5類 技術・工学・工業 ==
=== 500 技術・工学 ===
==== 501 工業基礎学 ====
==== 502 技術史・工学史 ====
==== 503 参考図書 ====
==== 504 論文集・評論集・講演集 ====
==== 505 逐次刊行物 ====
==== 506 団体 ====
==== 507 研究法・指導法・技術教育 ====
==== 508 叢書・全集・選集 ====
==== 509 工業・工業経済 ====
=== 510 建設工学・土木工学 ===
==== 511 土木力学・建設材料 ====
==== 512 測量 ====
==== 513 土木設計・施工法 ====
==== 514 道路工学 ====
==== 515 橋梁工学 ====
==== 516 鉄道工学 ====
==== 517 河海工学・河川工学 ====
==== 518 衛生工学・都市工学 ====
===== 518.523 ごみの再利用 =====
==== 519 公害・環境工学 ====
===== 519.12 環境法 =====
* [[環境法]]
=== 520 建築学 ===
==== 521 日本の建築 ====
==== 522 東洋の建築・アジアの建築 ====
==== 523 西洋の建築・その他の様式の建築 ====
==== 524 建築構造 ====
==== 525 建築計画・施工 ====
==== 526 各種の建築 ====
==== 527 住宅建築 ====
==== 528 建築設備・設備工学 ====
==== 529 建築意匠・装飾 ====
=== 530 機械工学・原子力工学 ===
==== 531 機械力学・材料・設計 ====
==== 532 機械工作・工作機械 ====
==== 533 熱機関・熱工学 ====
==== 534 流体機械・流体工学 ====
==== 535 精密機器・光学機器 ====
==== 536 運輸工学・車輌・運搬機械 ====
==== 537 自動車工学 ====
===== 537.25 電気自動車 =====
==== 538 航空宇宙工学 ====
==== 539 原子力工学 ====
=== 540 電気工学・電子工学 ===
==== 540 電気工学 ====
==== 541 電気回路・計測・材料 ====
==== 542 電気機器 ====
==== 543 発電 ====
==== 544 送電・変電・配電 ====
==== 545 電灯・照明・電熱 ====
==== 546 電気鉄道 ====
==== 547 通信工学・電気通信 ====
*[[スタイルシート言語]]
*[[AMPHTML]]
==== 548 情報工学 ====
==== 549 電子工学 ====
=== 550 海洋工学・船舶工学 ===
==== 551 理論造船学 ====
==== 552 船体構造・材料・施工 ====
==== 553 船体艤装・船舶設備 ====
==== 554 舶用機関[造機] ====
==== 555 船舶修理・保守 ====
==== 556 各種の船舶・艦艇 ====
==== 557 航海・航海学 ====
==== 558 海洋開発 ====
==== 559 兵器、軍事工学 ====
=== 560 金属工学・鉱山工学 ===
==== 561 採鉱・選鉱 ====
==== 562 各種の金属鉱床・採掘 ====
==== 563 冶金・合金 ====
==== 564 鉄鋼 ====
==== 565 非鉄金属 ====
==== 566 金属加工・製造冶金 ====
==== 567 石炭 ====
==== 568 石油 ====
==== 569 非金属鉱物・土石採取業 ====
=== 570 化学工業 ===
==== 571 化学工学・化学機器 ====
==== 572 電気化学工業 ====
==== 573 セラミックス・窯業・珪酸塩化学工業 ====
==== 574 化学薬品 ====
==== 575 燃料・爆発物 ====
==== 576 油脂類 ====
==== 577 染料 ====
==== 578 高分子化学工業 ====
==== 579 その他の化学工業 ====
=== 580 製造工業 ===
==== 581 金属製品 ====
==== 582 事務機器・家庭機器・楽器 ====
==== 583 木工業・木製品 ====
==== 584 皮革工業・皮革製品 ====
==== 585 パルプ・製紙工業 ====
==== 586 繊維工学 ====
==== 587 染色加工・染色業 ====
==== 588 食品工業 ====
==== 589 その他の雑工業 ====
=== 590 家政学・生活科学 ===
<!--
==== 591 家庭経済・経営 ====
==== 592 家庭理工学 ====
==== 593 衣服・裁縫 ====
==== 594 手芸 ====
==== 595 理容・美容 ====
===== 595.6 痩身法 =====
==== 596 食品・料理 ====
*[[料理本]]{{進捗|25%|2005-05-04}}
<!--
==== 597 住居・家具調度 ====
==== 598 家庭衛生 ====
==== 599 育児 ====
-->
==6類 産業 ==
<!--
=== 600 産業 ===
==== 601 産業政策・行政・総合開発 ====
==== 602 産業史・事情・物産誌 ====
==== 603 参考図書 ====
==== 604 論文集・評論集・講演集 ====
==== 605 逐次刊行物 ====
==== 606 団体 ====
==== 607 研究法・指導法・産業教育 ====
==== 608 叢書・全集・選集 ====
==== 609 度量衡、計量法 ====
=== 610 農業 ===
==== 611 農業経済 ====
==== 612 農業史・事情 ====
==== 613 農業基礎学 ====
==== 614 農業工学 ====
==== 615 作物栽培・作物学 ====
==== 616 食用作物 ====
==== 617 工芸作物 ====
==== 618 繊維作物 ====
==== 619 農産物製造・加工 ====
-->
=== 620 園芸 ===
<!--
==== 621 園芸経済・行政・経営 ====
==== 622 園芸史・事情 ====
==== 623 園芸植物学・病虫害 ====
==== 624 温室・温床・園芸用具 ====
==== 625 果樹園芸 ====
-->
==== 626 蔬菜園芸 ====
*[[ダイズの栽培]]{{進捗|00%|2007-02-21}}
==== 627 花卉園芸[草花] ====
*[[サボテンの栽培]]{{進捗|00%|2007-02-21}}
<!--
==== 628 園芸利用 ====
==== 629 造園 ====
=== 630 蚕糸業 ===
==== 631 蚕糸経済・行政・経営 ====
==== 632 蚕糸業史・事情 ====
==== 633 蚕学・蚕業基礎学 ====
==== 634 蚕種 ====
==== 635 飼育法 ====
==== 636 くわ・栽桑 ====
==== 637 蚕室・蚕具 ====
==== 638 まゆ ====
==== 639 製糸・生糸・蚕糸利用 ====
-->
=== 640 畜産業 ===
<!--
==== 641 畜産経済・行政・経営 ====
==== 642 畜産史・事情 ====
==== 643 家畜の繁殖・家畜飼料 ====
==== 644 家畜の管理・畜舎・用具 ====
==== 645 家畜・畜産動物各論 ====
-->
==== 646 家禽各論・飼鳥 ====
*[[ホンセイインコ類の飼育]]{{進捗|00%|2007-02-21}}
<!--
===== 646.9 みつばち・昆虫 =====
==== 648 畜産製造・畜産物 ====
==== 649 獣医学・比較医学 ====
==== 649 獣医学 ====
=== 650 林業 ===
==== 651 林業経済・行政・経営 ====
==== 652 森林史・林業史・事情 ====
==== 653 森林立地・造林 ====
==== 654 森林保護 ====
==== 655 森林施業 ====
==== 656 森林工学 ====
==== 657 森林利用・林産物・木材学 ====
==== 658 林産製造 ====
==== 659 狩猟 ====
=== 660 水産業 ===
==== 661 水産経済・行政・経営 ====
==== 662 水産業および漁業史・事情 ====
==== 663 水産基礎学 ====
==== 664 漁労・漁業各論 ====
==== 665 漁船・漁具 ====
==== 666 水産増殖・養殖業 ====
==== 667 水産製造・水産食品 ====
==== 668 水産物利用・水産利用工業 ====
==== 669 製塩・塩業 ====
=== 670 商業 ===
==== 671 商業政策・行政 ====
==== 672 商業史・事情 ====
==== 673 商業経営・商店 ====
==== 674 広告・宣伝 ====
==== 675 マーケティング ====
==== 676 取引所 ====
==== 678 貿易 ====
=== 680 運輸・交通 ===
==== 681 交通政策・行政・経営 ====
==== 682 交通史・事情 ====
==== 683 海運 ====
==== 684 内水・運河交通 ====
==== 685 陸運・自動車運送 ====
==== 686 鉄道 ====
==== 687 航空運送 ====
==== 688 倉庫業 ====
==== 689 観光事業 ====
=== 690 通信事業 ===
==== 691 通信政策・行政・法令 ====
==== 692 通信事業史・事情 ====
==== 693 郵便・郵政事業 ====
==== 694 電気通信事業 ====
==== 699 放送事業 ====
===== 699.39 アナウンサー =====
-->
== 7類 芸術 ==
<!--
=== 700 芸術・美術 ===
==== 701 芸術理論・美学 ====
==== 702 芸術史・美術史 ====
==== 703 参考図書[レファレンスブック] ====
==== 704 論文集・評論集・講演集 ====
==== 705 逐次刊行物 ====
==== 706 団体 ====
==== 707 研究法・指導法・芸術教育 ====
==== 708 叢書・全集・選集 ====
==== 709 芸術政策・文化財 ====
=== 710 彫刻 ===
==== 711 彫塑材料・技法 ====
==== 712 彫刻史・各国の彫刻 ====
==== 713 木彫 ====
==== 714 石彫 ====
==== 715 金属彫刻・鋳造 ====
==== 717 粘土彫刻・塑造 ====
==== 708 仏像 ====
==== 709 オブジェ ====
=== 720 絵画 ===
==== 721 日本画 ====
==== 722 東洋画 ====
==== 723 洋画 ====
==== 724 絵画材料・技法 ====
==== 725 素描・描画 ====
==== 726 漫画、挿絵、童画 ====
==== 727 グラフィックデザイン、図案 ====
==== 728 書道 ====
=== 730 版画 ===
==== 731 版画材料・技法 ====
==== 732 版画史・各国の版画 ====
==== 733 木版画 ====
==== 734 石版画 ====
==== 735 銅版画・鋼版画 ====
==== 736 リノリウム版画・ゴム版画 ====
==== 737 写真版画・孔版画 ====
==== 739 印章、篆刻、印譜 ====
-->
=== 740 写真 ===
<!--
==== 742 写真器械・材料 ====
==== 743 撮影技術 ====
-->
==== 744 現像・印画 ====
*[[白黒写真の暗室作業]]{{進捗|75%|2007-05-10}}
<!--
==== 745 複写技術 ====
==== 746 特殊写真 ====
==== 747 写真の応用 ====
==== 748 写真集 ====
==== 749 印刷 ====
=== 750 工芸 ===
==== 751 陶磁工芸 ====
==== 752 漆工芸 ====
==== 753 染織工芸 ====
==== 754 木竹工芸 ====
==== 755 宝石・牙角・皮革工芸 ====
==== 756 金工芸 ====
==== 757 デザイン・装飾美術 ====
==== 758 美術家具 ====
==== 759 人形・玩具 ====
-->
=== 760 音楽 ===
==== 761 音楽の一般理論・音楽学 ====
* [[楽典]]
* [[和声学]]
* [[楽式]]
==== 762 音楽史・各国の音楽 ====
* [[西洋音楽史]]
<!--
==== 763 楽器・器楽 ====
==== 764 器楽合奏 ====
==== 765 宗教音楽・聖楽 ====
==== 766 劇音楽 ====
==== 767 声楽 ====
==== 768 邦楽 ====
==== 769 舞踊、バレエ ====
=== 770 演劇 ===
==== 771 劇場・演出・演技 ====
==== 772 演劇史・各国の演劇 ====
==== 773 能楽、狂言 ====
==== 774 歌舞伎 ====
==== 775 各種の演劇 ====
==== 777 人形劇 ====
==== 778 映画 ====
==== 779 大衆演芸 ====
-->
=== 780 スポーツ・体育 ===
*[[スポーツ]]
==== 781 体操、遊戯 ====
==== 782 陸上競技 ====
*[[トライアスロン]]
==== 783 球技 ====
*[[サッカー]]{{進捗|25%|2006-1-7}}
*[[テニス]]{{進捗|25%|2006-1-7}}
*[[バドミントン]]
*[[野球]]{{進捗|25%|2006-1-7}}
*[[ボウリング]]
<!--
==== 784 冬季競技 ====
-->
==== 785 水上競技 ====
*[[セーリング]]{{進捗|25%|2006-1-7}}
==== 786 戸外レクリエーション ====
===== 786.1 登山・山岳競技 =====
*[[登山]]
==== 787 釣魚、遊猟 ====
==== 788 相撲、拳闘、競馬 ====
*[[相撲]]{{進捗|25%|2006-2-23}}
*[[競馬]]{{進捗|25%|2023-09-25}}
==== 789 武術 ====
*[[剣道]]{{進捗|25%|2007-6-30}}
=== 790 諸芸・娯楽 ===
<!--
==== 791 茶道 ====
==== 792 香道 ====
==== 793 花道 ====
==== 794 撞球 ====
-->
==== 795 囲碁 ====
*[[囲碁]]{{進捗|25%|2006-1-7}}
==== 796 将棋 ====
*[[将棋]]{{進捗|25%|2006-1-7}}
<!--
==== 797 射倖ゲーム ====
-->
==== 798 室内娯楽 ====
*[[トランプ]]<!--798.2-->
*[[トランプ/トランプ教科書]]
*[[麻雀]]{{進捗|25%|2006-1-7}}
*[[チェス]]{{進捗|25%|2006-1-7}}
===== 798.5 テレビゲーム =====
*[[Minecraft]]
<!--
==== 799 ダンス ====
-->
== 8類 言語 ==
=== 800 言語 ===
==== 801 言語学 ====
*[[生成文法]]
*[[語学]]
**[[琉球語]]
<!--
==== 809 言語生活 ====
-->
=== 810 日本語 ===
*[[日本語]]{{進捗|25%|2005-05-04}}
<!--
==== 811 音声、音韻、文字 ====
==== 812 語源、意味 ====
==== 813 辞典 ====
==== 814 語彙 ====
==== 815 文法、語法 ====
==== 816 文章、文体、作文 ====
==== 817 読本、解釈、会話 ====
-->
==== 818 方言、訛語 ====
*[[北海道方言]]
*[[讃岐弁]]
*[[沖縄語]]
<!--
=== 820 中国語 ===
-->
==== 829 その他の東洋の諸言語 ====
*[[朝鮮語]]{{進捗|25%|2005-05-04}}
*[[ペルシア語]]
=== 830 英語 ===
*[[英語]]{{進捗|50%|2005-05-04}}
=== 840 ドイツ語 ===
*[[ドイツ語]]{{進捗|50%|2005-05-04}}
<!--
==== 849 その他のゲルマン言語 ====
-->
=== 850 フランス語 ===
*[[フランス語]]{{進捗|25%|2005-05-04}}
<!--
==== 859 プロヴァンス語 ====
=== 860 スペイン語 ===
==== 869 ポルトガル語 ====
=== 870 イタリア語 ===
-->
==== 879 その他のロマンス諸語 ====
*[[ルーマニア語]]
<!--
=== 880 ロシア語 ===
==== 889 その他のスラヴ諸語 ====
=== 890 その他の諸言語 ===
-->
==== 891 ギリシア語 ====
*[[ギリシア語]]
==== 892 ラテン語 ====
*[[ラテン語]]{{進捗|50%|2006-03-21}}
==== 893 その他のヨーロッパの諸言語 ====
*[[デンマーク語]]{{進捗|25%|2005-12-01}}
<!--
==== 894 アフリカの諸言語 ====
==== 895 アメリカの諸言語 ====
==== 897 オーストラリアの諸言語 ====
-->
==== 899 国際語 ====
*[[エスペラント]]{{進捗|00%|2005-05-04}}
== 9類 文学 ==
=== 900 文学 ===
*[[古典文学]]{{進捗|25%|2005-05-15}}
<!--
==== 909 児童文学研究 ====
-->
=== 910 日本文学 ===
<!--
==== 911 詩歌 ====
==== 912 戯曲 ====
-->
==== 913 小説、物語 ====
*[[竹取物語]]{{進捗|25%|2005-05-04}}
==== 914 評論、エッセイ、随筆 ====
*[[方丈記]]
<!--
==== 915 日記、書簡、紀行 ====
==== 916 記録、手記、ルポルタージュ ====
==== 917 箴言、アフォリズム、寸言 ====
==== 918 作品集 ====
==== 919 漢詩文、日本漢文学 ====
-->
=== 920 中国文学 ===
*[[漢詩]]{{進捗|25%|2005-05-04}}
<!--
==== 929 その他の東洋文学 ====
=== 930 英文学・米文学 ===
=== 940 ドイツ文学 ===
==== 949 その他のゲルマン文学 ====
=== 950 フランス文学 ===
==== 959 プロヴァンス文学 ====
=== 960 スペイン文学 ===
==== 969 ポルトガル文学 ====
=== 970 イタリア文学 ===
==== 979 その他のロマンス文学 ====
=== 980 ロシア文学・ソヴィエト文学 ===
==== 989 その他のスラヴ文学 ====
-->
=== 990 その他の諸文学 ===
==== 991 ギリシア文学 ====
==== 992 ラテン文学 ====
*[[ガリア戦記]]
==== 993 その他のヨーロッパ文学 ====
==== 994 アフリカ文学 ====
==== 995 アメリカ先住民語の文学 ====
==== 997 オーストラリア先住民語の文学 ====
==== 999 国際語による文学 ====
== 関連項目 ==
*[[w:日本十進分類法#要目表(第3次区分表)]]
== 外部リンク ==
*<del>[http://www.ndl.go.jp/jp/library/data/zan9.html 日本十進分類法新訂9版分類基準]([http://www.ndl.go.jp/ 国立国会図書館])</del>リンク切れ
*[https://www.kotono8.com/wiki/%E6%97%A5%E6%9C%AC%E5%8D%81%E9%80%B2%E5%88%86%E9%A1%9E%E6%B3%95%EF%BC%88%E8%A9%B3%E7%B4%B0%EF%BC%89 閾ペディアことのは 日本十進分類法(詳細)]
[[Category:日本十進分類法|*]]
[[it:Wikibooks:Classificazione decimale Dewey]]
ki9iu00tves0m4qiriaxjm1csyho3ec
301522
301521
2026-07-13T10:29:19Z
Tkkn46tkkn46
89925
/* 007.64 コンピュータプログラミング */ ASP.NET Core を追加。007.645(プログラミング )
301522
wikitext
text/x-wiki
__NOTOC__
[[メインページ|ウィキブックス]]の全ての書籍を[[:w:日本十進分類法|日本十進分類法]]に従って分類したものです。
{{進捗状況}}
== 0類 総記 ==
=== 000 総記 ===
*[[ウィキペディアの書き方]]
<!--
==== 002 知識・学問・学術 ====
-->
==== 007 情報科学 ====
*[[情報技術]]
<!--
===== 007.1 情報理論 =====
===== 007.2 歴史 事情 =====
===== 007.3 情報と社会 =====
===== 007.4 情報源 =====
===== 007.5 ドキュメンテーション 情報管理 =====
-->
===== 007.6 データ処理 情報処理 =====
*[[情報処理技術者試験の概要]]
*[[初級システムアドミニストレータ]]
<!--
====== 007.61 システム分析 システム設計 ======
-->
====== 007.63 コンピュータシステム ソフトウェア ======
*[[Freenet]]
*[[Maxima]]
*[[Microsoft Office]]
*[[Mizar]]
*[[OpenOffice.org]]
*[[OSとアプリケーション]]
*[[TeX/LaTeX入門]]{{進捗|25%|2005-05-04}}
*[[vi]]
<!--
======= 007.632 エキスパートシステム =======
-->
====== 007.634 オペレーティングシステム ======
*[[ChromeOS]]
*[[Linuxシステム管理]]
*[[Linuxハードウェア]]
*[[MS-DOS/PC DOS入門]]{{進捗|50%|2005-05-04}}
*[[UNIX/Linux入門]]{{進捗|25%|2005-05-04}}
<!--
======= 007.635 漢字処理システム =======
-->
====== 007.637 図形処理ソフトウェア ======
* [[Inkscape]]
====== 007.64 コンピュータプログラミング ======
*[[機械語]]
*[[ゲームプログラミング]]
*[[数式処理システム]]
*[[ソフトウェア開発技術者]]
*[[プログラミング]]
*[[ASP.NET Core]]
*[[BASIC]]
*[[Blender 3D]]
*[[C言語]]{{進捗|25%|2005-05-04}}
*[[CPlusPlus|C++]]
*[[CSS]]{{進捗|00%|2005-06-17}}
*[[CGI]]{{進捗|25%|2005-05-04}}
*[[GNOMEフレームワーク]]
*[[Go]]
*[[HTML]]{{進捗|25%|2005-05-04}}
*[[Java]]{{進捗|25%|2005-05-04}}
*[[JavaScript]]{{進捗|25%|2005-05-04}}
*[[Lisp]]
*[[Node.js]]
*[[OpenGL]]
*[[OSS開発ツール]]
*[[Perl]]{{進捗|25%|2005-05-04}}
*[[PHP]]
*[[Ruby]]
*[[Scratch]]
*[[Scheme]]
*[[SVG]]
*[[Swift]]
*[[Xプログラミング]]
<!--
======= 007.642 CG技術 =======
====== 007.65 各種の記憶媒体 ======
====== 007.68 情報検索 機械検索 ======
-->
===== 007.7 情報システム =====
*[[LANとインターネット]]
*[[NTP入門]]
*[[TCP/IP入門]]
<!--
=== 010 図書館・図書館学 ===
==== 011 図書館政策・図書館行財政 ====
==== 012 図書館建築・図書館整備 ====
==== 013 図書館管理 ====
==== 014 資料の収集・資料の整理・資料の保管 ====
==== 015 図書館奉仕・図書館活動 ====
==== 016 各種の図書館 ====
==== 017 学校図書館 ====
==== 018 専門図書館 ====
==== 019 読書・読書法 ====
-->
=== 020 図書・書誌学 ===
==== 021 著作・編集 ====
===== 021.4 編集 編纂 =====
*[[ウィキペディアの書き方 入門編]]{{進捗|50%|2005-05-04}}
<!--
==== 022 写本・刊本・造本 ====
==== 023 出版 ====
-->
==== 024 図書の販売 ====
*[[同人誌即売会参加方法]]{{進捗|75%|2005-05-04}}
<!--
==== 025 一般書誌・全国書誌 ====
==== 026 稀書目録・善本目録 ====
==== 027 特種目録 ====
==== 028 選定図書目録・参考図書目録 ====
==== 029 蔵書目録・総合目録 ====
-->
=== 030 百科事典 ===
==== 031 日本語 ====
*[[w:mainpage|w:wikipedia]]
===== 031.3 日用便覧 =====
*[[ジョーク集]]
<!--
==== 039 用語索引<一般> ====
=== 040 一般論文集・一般講演集 ===
==== 041 日本語 ====
==== 049 雑著 ====
=== 050 逐次刊行物 ===
==== 051 日本の雑誌 ====
==== 059 一般年鑑 ====
=== 060 団体 ===
==== 061 学術・研究機関 ====
==== 063 文化交流機関 ====
==== 065 親睦団体・その他の団体 ====
==== 069 博物館 ====
=== 070 ジャーナリズム・新聞 ===
==== 071 日本 ====
=== 080 叢書・全集・選集 ===
==== 081 日本語 ====
==== 089 その他の諸言語 ====
=== 090 貴重書・郷土資料・その他の特別コレクション ===
-->
== 1類 哲学 ==
=== 100 哲学 ===
*[[哲学・思想]]{{進捗|00%|2005-05-04}}
<!--
==== 101 哲学理論 ====
==== 102 哲学史 ====
==== 103 参考図書 ====
==== 104 論文集・評論集・講演集 ====
==== 105 逐次刊行物 ====
==== 106 団体 ====
==== 107 研究法・指導法・哲学教育 ====
==== 108 叢集・全集・選集 ====
=== 110 哲学各論 ===
==== 111 形而上学・存在論 ====
==== 112 自然哲学・宇宙論 ====
==== 113 人生観・世界観 ====
==== 114 人間学 ====
==== 115 認識論 ====
==== 116 論理学・弁証法・方法論 ====
==== 117 価値哲学 ====
==== 118 文化哲学・技術哲学 ====
-->
=== 120 東洋思想 ===
==== 121 日本思想 ====
==== 122 中国思想・中国哲学 ====
*[[論語巻第一]]
==== 123 経書 ====
==== 124 先秦思想・諸子 ====
==== 125 中世思想・近代思想 ====
==== 126 インド哲学・バラモン教 ====
==== 129 その他のアジア・アラブ哲学 ====
<!--
=== 130 西洋哲学 ===
==== 131 古代哲学 ====
==== 132 中世哲学 ====
==== 133 近代哲学 ====
==== 134 ドイツ・オーストリア哲学 ====
==== 135 フランス・オランダ哲学 ====
==== 136 スペイン・ポルトガル哲学 ====
==== 137 イタリア哲学 ====
==== 138 ロシア哲学 ====
==== 139 その他の哲学 ====
-->
=== 140 心理学 ===
*[[心理学]]{{進捗|25%|2005-05-04}}
<!--
==== 141 普通心理学・心理各論 ====
==== 143 発達心理学 ====
==== 145 異常心理学 ====
==== 146 臨床心理学・精神分析学 ====
==== 147 超心理学・心霊研究 ====
==== 148 相法・易占 ====
==== 149 応用心理学 ====
-->
=== 150 倫理学・道徳 ===
*[[倫理学]]
==== 151 倫理各論 ====
==== 152 家庭倫理・性倫理 ====
==== 153 職業倫理 ====
==== 154 社会倫理 ====
==== 155 国体論・詔勅 ====
==== 156 武士道 ====
==== 157 報徳教・石門心学 ====
==== 158 その他の特定主題 ====
==== 159 人生訓・教訓 ====
<!--
=== 160 宗教 ===
==== 161 宗教学・宗教思想 ====
==== 162 宗教史・事情 ====
==== 163 原始宗教・宗教民族学 ====
==== 164 神話・神話学 ====
===== 164.31 ギリシャ神話 =====
==== 165 比較宗教 ====
==== 166 道教 ====
==== 167 イスラーム ====
==== 168 ヒンドゥー教・ジャイナ教 ====
==== 169 その他の宗教・新興宗教 ====
=== 170 神道 ===
==== 171 神道思想・神道説 ====
==== 172 神祇・神道史 ====
==== 173 神典 ====
==== 174 信仰録・説教集 ====
==== 175 神社・神職 ====
==== 176 祭祀 ====
==== 177 布教・伝道 ====
==== 178 各教派・教派神道 ====
=== 180 仏教 ===
==== 181 仏教教理・仏教哲学 ====
==== 182 仏教史 ====
==== 183 経典 ====
==== 184 法話・説教集 ====
==== 185 寺院・僧職 ====
==== 186 仏会 ====
==== 187 布教・伝道 ====
==== 188 各宗 ====
=== 190 キリスト教 ===
==== 191 教義・キリスト教神学 ====
==== 192 キリスト教史・迫害史 ====
==== 193 聖書 ====
==== 194 信仰録・説教集 ====
==== 195 教会・聖職 ====
==== 196 典礼・祭式・礼拝 ====
==== 197 布教・伝道 ====
==== 198 各教派・教会史 ====
==== 199 ユダヤ教 ====
-->
== 2類 歴史 ==
=== 200 歴史 ===
==== 201 歴史学 ====
*[[歴史学]]
<!--
==== 202 歴史補助学 ====
==== 203 参考図書 ====
==== 204 論文集・評論集・講演集 ====
==== 205 逐次刊行物 ====
==== 206 団体 ====
==== 207 研究法・指導法・歴史教育 ====
==== 208 叢書・全集・選集 ====
-->
==== 209 世界史・文化史 ====
*[[世界史]]{{進捗|25%|2005-05-04}}
=== 210 日本史 ===
*[[日本史]]{{進捗|25%|2005-05-04}}
<!--
===== 210.027 古銭学 =====
==== 211 北海道地方 ====
==== 212 東北地方 ====
==== 213 関東地方 ====
==== 214 北陸地方 ====
==== 215 中部地方 ====
==== 216 近畿地方 ====
==== 217 中国地方 ====
==== 218 四国地方 ====
==== 219 九州地方 ====
-->
=== 220 アジア史・東洋史 ===
<!--
==== 221 朝鮮 ====
-->
==== 222 中国 ====
*[[中国史]]{{進捗|25%|2005-12-01}}
<!--
==== 223 東南アジア ====
==== 224 インドネシア ====
==== 225 インド ====
===== 225.97 モルジブ =====
==== 229 アジアロシア ====
=== 230 ヨーロッパ史・西洋史 ===
==== 231 古代ギリシア ====
==== 232 古代ローマ ====
==== 233 イギリス・英国 ====
==== 234 ドイツ・中欧 ====
==== 235 フランス ====
==== 236 スペイン イスパニア ====
==== 237 イタリア ====
==== 238 ロシア ソビエト連邦 独立国家共同体 ====
==== 239 バルカン諸国 ====
=== 240 アフリカ史 ===
==== 241 北アフリカ ====
==== 242 エジプト ====
==== 243 バーバリ諸国 ====
==== 244 西アフリカ ====
==== 245 東アフリカ ====
==== 248 南アフリカ ====
==== 249 インド洋のアフリカ諸島 ====
=== 250 北アメリカ史 ===
==== 251 カナダ ====
==== 253 アメリカ合衆国 ====
==== 255 ラテンアメリカ 中南米 ====
==== 256 メキシコ ====
==== 257 中央アメリカ 中米諸国 ====
==== 259 西インド諸島 ====
=== 260 南アメリカ史 ===
==== 261 北部諸国 カリブ沿海諸国 ====
==== 262 ブラジル ====
==== 263 パラグアイ ====
==== 264 ウルグアイ ====
==== 265 アルゼンチン ====
==== 266 チリ ====
==== 267 ボリビア ====
==== 268 ペルー ====
=== 270 オセアニア史・両極地方史 ===
==== 271 オーストラリア ====
==== 272 ニュージーランド ====
==== 273 メラネシア ====
==== 274 ミクロネシア ====
==== 275 ポリネシア ====
==== 276 ハワイ ====
==== 277 両極地方 ====
==== 278 北極 北極地方 ====
==== 279 南極 南極地方 ====
=== 280 伝記 ===
==== 281 日本 ====
==== 282 アジア ====
==== 283 ヨーロッパ ====
==== 284 アフリカ ====
==== 285 北アフリカ ====
==== 286 南アフリカ ====
==== 287 オセアニア・両極地方 ====
==== 288 系譜・家史・皇室 ====
==== 289 個人伝記 ====
-->
=== 290 地理・地誌・紀行 ===
*[[地理学]]{{進捗|00%|2005-05-04}}
<!--
==== 290.93 旅行案内記 ====
-->
== 3類 社会科学 ==
<!--
=== 300 社会科学 ===
==== 301 理論・方法論 ====
==== 302 政治・経済・社会・文化事情 ====
==== 303 参考図書 ====
==== 304 論文集・評論集・講演集 ====
==== 305 逐次刊行物 ====
==== 306 団体 ====
==== 307 研究法・指導法・社会科学教育 ====
==== 308 叢書・全集・選集 ====
==== 309 社会思想 ====
=== 310 政治 ===
==== 311 政治学 ====
==== 312 政治史・事情 ====
==== 313 国家の形態・政治体制 ====
==== 314 議会 ====
==== 315 政党・政治結社 ====
==== 316 国家と個人・宗教・民族 ====
==== 317 行政 ====
==== 318 地方自治・地方行政 ====
==== 319 外交・国際問題 ====
-->
=== 320 法律 ===
==== 321 法学 ====
*[[法学]]{{進捗|25%|2005-05-04}}
==== 322 法制史 ====
*[[法制史]]
==== 323 憲法 ====
*[[憲法]]
==== 324 民法 ====
*[[民法]]
==== 325 商法 ====
*[[商法]]
==== 326 刑法・刑事法 ====
*[[刑法]]
==== 327 司法・訴訟手続法 ====
*[[民事訴訟法]]
*[[刑事訴訟法]]
==== 328 諸法 ====
*[[教育基本法]]
*[[知的財産権法]]
==== 329 国際法 ====
*[[国際法]]
=== 330 経済 ===
==== 331 経済学・経済思想 ====
*[[経済学]]{{進捗|25%|2005-05-04}}
*[[経済学基礎]]
==== 332 経済史・事情・経済体制 ====
==== 333 経済政策・国際経済 ====
==== 334 人口・土地・資源 ====
==== 335 企業・経営 ====
==== 336 経営管理 ====
*[[公認会計士試験]]
==== 337 貨幣・通貨 ====
==== 338 金融・銀行・信託 ====
==== 339 保険 ====
=== 340 財政 ===
<!--
==== 341 財政学・財政思想 ====
==== 342 財政史・事情 ====
==== 343 財政政策・財政行政 ====
==== 344 予算・決算 ====
==== 345 租税 ====
==== 347 公債・国債 ====
==== 348 専売・国有財産 ====
==== 349 地方財政 ====
=== 350 統計 ===
==== 351 日本 ====
==== 358 人口統計・国勢調査 ====
==== 359 各種の統計書 ====
-->
=== 360 社会 ===
<!--
==== 361 社会学 ====
==== 362 社会史・社会体制 ====
==== 364 社会保障 ====
==== 365 生活・消費者問題 ====
==== 366 労働経済・労働問題 ====
==== 367 家族問題、男性・女性問題、老人問題 ====
==== 368 社会病理 ====
-->
==== 369 社会福祉 ====
===== 369.3 災害 災害救助 =====
*[[防災]]{{進捗|25%|2006-04-06}}
=== 370 教育 ===
<!--
==== 371 教育学、教育思想 ====
===== 371.42 登校拒否・いじめ =====
-->
==== 372 教育史・事情 ====
*[[教育勅語]]{{進捗|75%|2005-05-04}}
<!--
==== 373 教育政策、教育制度、教育行財政 ====
-->
==== 374 学校経営・管理、学校保健 ====
===== 374.48 学校行事 =====
*[[運動会]]
==== 375 教育課程、学習指導、教科別教育 ====
*[[学校教育]]{{進捗|25%|2005-05-04}}
*[[生活と進路]]{{進捗|50%|2005-05-04}}
===== 374.9 教科書、教科書検定 =====
*[[小学校の学習]]{{進捗|50%|2023-09-25}}
*[[中学校の学習]]{{進捗|50%|2023-09-25}}
*[[高等学校の学習]]{{進捗|00%|2023-09-25}}
**[[高等学校の学習/旧課程]]{{進捗|25%|2023-09-25}}
<!--
* [[小学校算数]] {{進捗|25%|2005-05-04}}
* [[中学校数学]] {{進捗|50%|2005-05-10}}
* [[高等学校世界史A]] {{進捗|25%|2015-08-30}}
* [[高等学校地理B]] {{進捗|25%|2005-11-1}}
* [[高等学校現代社会]] {{進捗|25%|2015-08-30}}
* [[高等学校政治経済]] {{進捗|50%|2015-08-30}}
*[[高等学校倫理]]
*[[高等学校数学]]
*[[高等学校数学基礎]]{{進捗|100%|2005-05-04}}
*[[高等学校数学I]]{{進捗|50%|2005-05-04}}
*[[高等学校数学III]]{{進捗|50%|2005-05-04}}
*[[高等学校数学B]]{{進捗|50%|2005-05-04}}
*[[高等学校数学C]]{{進捗|50%|2005-05-04}}
*[[高等学校理科総合B]]{{進捗|50%|2005-05-04}}
*[[高等学校物理]]{{進捗|50%|2005-11-1}}
* [[高等学校化学]] {{進捗|50%|2015-08-30}}
* [[高等学校生物]] {{進捗|50%|2015-08-30}}
* [[高等学校地学]] {{進捗|25%|2015-08-30}}
*[[高等学校情報A]]
*[[高等学校情報B]]
*[[高等学校情報C]]
-->
*[[小・中・高等学校演習]]
*[[検定教科書]]
==== 376 幼児・初等・中等教育 ====
*[[小学校・中学校・高等学校の学習]]
==== 377 大学、高等・専門教育、学術行政 ====
* [[大学受験ガイド]] {{進捗|50%|2015-08-30}}
<!--
==== 378 障害児教育 ====
==== 379 社会教育 ====
=== 380 風俗習慣・民俗学・民族学 ===
==== 382 風俗史・民俗誌、民族誌 ====
==== 383 衣食住の習俗 ====
==== 384 社会・家庭生活の習俗 ====
==== 385 通過儀礼、冠婚葬祭 ====
==== 386 年中行事、祭礼 ====
==== 387 民間信仰、迷信(俗信) ====
==== 388 伝説、民話(昔話) ====
==== 389 民族学、文化人類学 ====
=== 390 国防・軍事 ===
==== 391 戦争、戦略、戦術 ====
==== 392 国防史・事情、軍事史・事情 ====
==== 393 国防政策・行政・法令 ====
==== 394 軍事医学、兵食 ====
==== 395 軍事施設、軍需品 ====
==== 396 陸軍 ====
==== 397 海軍 ====
==== 398 空軍 ====
==== 399 古代兵法、軍学 ====
-->
== 4類 自然科学 ==
<!--
=== 400 自然科学 ===
==== 401 科学理論・科学哲学 ====
==== 402 科学史・事情 ====
==== 403 参考図書 ====
==== 404 論文集・評論集・講演集 ====
==== 405 逐次刊行物 ====
==== 406 団体 ====
==== 407 研究法・指導法・科学教育 ====
==== 408 叢書・全集・選集 ====
==== 409 科学技術政策・科学技術行政 ====
-->
=== 410 数学 ===
* [[数学]]
* [[初等数学]]
* [[初等数学公式集]]{{進捗|25%|2005-05-04}}
* [[初等数学演習]]{{進捗|25%|2005-05-04}}
* [[初等数学記号集]]
* [[Wikibooks:初等数学用語索引|初等数学用語索引]]{{進捗|25%|2005-05-04}}
* [[中等数学]]
* [[高等数学]]
* [[大学数学公式集]]
==== 411 代数学 ====
===== 411.6 集合論 =====
*[[公理的集合論]]
==== 412 数論 ====
==== 413 解析学 ====
* [[解析学]]
* [[解析学基礎]]{{進捗|25%|2005-05-04}}
==== 414 幾何学 ====
==== 415 位相数学 ====
* [[位相幾何学]]{{進捗|25%|2008-09-03}}
==== 417 確率論、数理統計学 ====
* [[統計学基礎]]{{進捗|25%|2005-05-04}}
<!--
==== 418 計算法 ====
==== 419 和算、中国算法 ====
-->
=== 420 物理学 ===
*[[物理学]]
==== 421 理論物理学 ====
<!--
===== 421.1 基礎理論 エーテル理論 =====
-->
===== 421.2 相対性理論 =====
*[[特殊相対論]]
*[[一般相対性理論]]
===== 421.3 量子力学、量子論 =====
*[[場の量子論]]
*[[量子力学]]{{進捗|50%|2005-05-04}}
===== 421.4 統計力学 =====
*[[統計力学I]]
*[[統計力学II]]
===== 421.5 数理物理学.物理数学 =====
* [[物理数学I]] {{進捗|75%|2023-11-05}}
* [[物理数学II]]
==== 423 力学 ====
*[[解析力学]]
*[[古典力学]]{{進捗|50%|2005-05-04}}
==== 424 振動学、音響学 ====
*[[振動と波動]]
* [[音響学]]
==== 425 光学 ====
*[[光の偏極]]
==== 426 熱学 ====
*[[熱力学]]
==== 427 電磁気学 ====
*[[電磁気学]]
<!--
==== 428 物性物理学 ====
==== 429 原子物理学 ====
-->
=== 430 化学 ===
<!--
==== 431 物理化学. 理論化学 ====
==== 432 実験化学 ====
==== 433 分析化学 ====
==== 434 合成化学 ====
-->
==== 435 無機化学 ====
*[[無機化学]]{{進捗|25%|2005-05-04}}
<!--
==== 436 金属元素とその化合物 ====
-->
==== 437 有機化学 ====
*[[有機化学]]{{進捗|25%|2005-05-21}}
<!--
==== 438 環式化合物の化学 ====
==== 439 天然物質の化学 ====
-->
=== 440 天文学・宇宙科学 ===
* [[天文学]]{{進捗|25%|2005-12-01}}
<!--
==== 441 理論天文学・数理天文学 ====
==== 442 実地天文学・天体観測法 ====
==== 443 恒星・恒星天文学 ====
==== 444 太陽・太陽物理学 ====
==== 445 惑星・衛星 ====
==== 446 月 ====
==== 447 彗星・流星 ====
==== 448 地球・天文地理学 ====
==== 449 時法・暦学 ====
-->
=== 450 地球科学・地学 ===
* [[地球科学]]{{進捗|25%|2005-12-01}}
==== 451 気象学 ====
==== 452 海洋学 ====
==== 453 地震学 ====
===== 453.38 地震予知 =====
==== 454 地形学 ====
==== 455 地質学 ====
==== 456 地史学・層位学 ====
==== 457 古生物学・化石 ====
*[[古生物学]]
==== 458 岩石学 ====
==== 459 鉱物学 ====
=== 460 生物化学・一般生物学 ===
*[[生物学の研究技術]]{{進捗|25%|2005-05-04}}
<!--
==== 461 理論生物学・生命論 ====
==== 462 生物地理・生物誌 ====
==== 463 細胞学 ====
==== 464 生化学 ====
==== 465 微生物学 ====
==== 467 遺伝学 ====
===== 467.25 遺伝子組み換え =====
==== 468 生態学 ====
==== 469 人類学 ====
-->
=== 470 植物学 ===
*[[植物学]]{{進捗|25%|2005-05-04}}
<!--
==== 471 一般植物学 ====
==== 472 植物地理・植物誌 ====
==== 473 葉状植物 ====
==== 474 藻類・菌類 ====
==== 475 コケ植物 ====
==== 476 シダ植物 ====
==== 477 種子植物 ====
==== 478 裸子植物 ====
==== 479 被子植物 ====
=== 480 動物学 ===
==== 481 一般動物学 ====
==== 482 動物地理・動物誌 ====
==== 483 無脊椎動物 ====
==== 484 軟体動物・貝類学 ====
==== 485 節足動物 ====
==== 486 昆虫類 ====
==== 487 脊椎動物 ====
==== 488 鳥類 ====
==== 489 哺乳類 ====
-->
=== 490 医学 ===
* [[医学]]
*[[OsiriX_オンライン解説文書]]{{進捗|75%|2005-05-04}}
==== 491 基礎医学 ====
*[[生理学]]{{進捗|00%|2006-11-09}}
*[[解剖学]]{{進捗|25%|2006-11-09}}
*[[神経解剖学]]{{進捗|00%|2006-11-09}}
*[[組織学]]{{進捗|00%|2006-11-09}}
*[[微生物学]]{{進捗|00%|2006-11-09}}
*[[病理学]]{{進捗|00%|2006-11-09}}
<!--
==== 492 臨床医学 ====
-->
==== 493 内科学 ====
*[[内科学 呼吸器]]{{進捗|00%|2006-11-09}}
<!--
==== 494 外科学 ====
==== 495 産科学,婦人科学 ====
==== 496 眼科学,耳鼻咽喉科学 ====
==== 497 歯科学 ====
==== 498 衛生学,公衆衛生学,予防医学 ====
-->
==== 499 薬学 ====
*[[薬理学]]{{進捗|00%|2006-11-09}}
==5類 技術・工学・工業 ==
=== 500 技術・工学 ===
==== 501 工業基礎学 ====
==== 502 技術史・工学史 ====
==== 503 参考図書 ====
==== 504 論文集・評論集・講演集 ====
==== 505 逐次刊行物 ====
==== 506 団体 ====
==== 507 研究法・指導法・技術教育 ====
==== 508 叢書・全集・選集 ====
==== 509 工業・工業経済 ====
=== 510 建設工学・土木工学 ===
==== 511 土木力学・建設材料 ====
==== 512 測量 ====
==== 513 土木設計・施工法 ====
==== 514 道路工学 ====
==== 515 橋梁工学 ====
==== 516 鉄道工学 ====
==== 517 河海工学・河川工学 ====
==== 518 衛生工学・都市工学 ====
===== 518.523 ごみの再利用 =====
==== 519 公害・環境工学 ====
===== 519.12 環境法 =====
* [[環境法]]
=== 520 建築学 ===
==== 521 日本の建築 ====
==== 522 東洋の建築・アジアの建築 ====
==== 523 西洋の建築・その他の様式の建築 ====
==== 524 建築構造 ====
==== 525 建築計画・施工 ====
==== 526 各種の建築 ====
==== 527 住宅建築 ====
==== 528 建築設備・設備工学 ====
==== 529 建築意匠・装飾 ====
=== 530 機械工学・原子力工学 ===
==== 531 機械力学・材料・設計 ====
==== 532 機械工作・工作機械 ====
==== 533 熱機関・熱工学 ====
==== 534 流体機械・流体工学 ====
==== 535 精密機器・光学機器 ====
==== 536 運輸工学・車輌・運搬機械 ====
==== 537 自動車工学 ====
===== 537.25 電気自動車 =====
==== 538 航空宇宙工学 ====
==== 539 原子力工学 ====
=== 540 電気工学・電子工学 ===
==== 540 電気工学 ====
==== 541 電気回路・計測・材料 ====
==== 542 電気機器 ====
==== 543 発電 ====
==== 544 送電・変電・配電 ====
==== 545 電灯・照明・電熱 ====
==== 546 電気鉄道 ====
==== 547 通信工学・電気通信 ====
*[[スタイルシート言語]]
*[[AMPHTML]]
==== 548 情報工学 ====
==== 549 電子工学 ====
=== 550 海洋工学・船舶工学 ===
==== 551 理論造船学 ====
==== 552 船体構造・材料・施工 ====
==== 553 船体艤装・船舶設備 ====
==== 554 舶用機関[造機] ====
==== 555 船舶修理・保守 ====
==== 556 各種の船舶・艦艇 ====
==== 557 航海・航海学 ====
==== 558 海洋開発 ====
==== 559 兵器、軍事工学 ====
=== 560 金属工学・鉱山工学 ===
==== 561 採鉱・選鉱 ====
==== 562 各種の金属鉱床・採掘 ====
==== 563 冶金・合金 ====
==== 564 鉄鋼 ====
==== 565 非鉄金属 ====
==== 566 金属加工・製造冶金 ====
==== 567 石炭 ====
==== 568 石油 ====
==== 569 非金属鉱物・土石採取業 ====
=== 570 化学工業 ===
==== 571 化学工学・化学機器 ====
==== 572 電気化学工業 ====
==== 573 セラミックス・窯業・珪酸塩化学工業 ====
==== 574 化学薬品 ====
==== 575 燃料・爆発物 ====
==== 576 油脂類 ====
==== 577 染料 ====
==== 578 高分子化学工業 ====
==== 579 その他の化学工業 ====
=== 580 製造工業 ===
==== 581 金属製品 ====
==== 582 事務機器・家庭機器・楽器 ====
==== 583 木工業・木製品 ====
==== 584 皮革工業・皮革製品 ====
==== 585 パルプ・製紙工業 ====
==== 586 繊維工学 ====
==== 587 染色加工・染色業 ====
==== 588 食品工業 ====
==== 589 その他の雑工業 ====
=== 590 家政学・生活科学 ===
<!--
==== 591 家庭経済・経営 ====
==== 592 家庭理工学 ====
==== 593 衣服・裁縫 ====
==== 594 手芸 ====
==== 595 理容・美容 ====
===== 595.6 痩身法 =====
==== 596 食品・料理 ====
*[[料理本]]{{進捗|25%|2005-05-04}}
<!--
==== 597 住居・家具調度 ====
==== 598 家庭衛生 ====
==== 599 育児 ====
-->
==6類 産業 ==
<!--
=== 600 産業 ===
==== 601 産業政策・行政・総合開発 ====
==== 602 産業史・事情・物産誌 ====
==== 603 参考図書 ====
==== 604 論文集・評論集・講演集 ====
==== 605 逐次刊行物 ====
==== 606 団体 ====
==== 607 研究法・指導法・産業教育 ====
==== 608 叢書・全集・選集 ====
==== 609 度量衡、計量法 ====
=== 610 農業 ===
==== 611 農業経済 ====
==== 612 農業史・事情 ====
==== 613 農業基礎学 ====
==== 614 農業工学 ====
==== 615 作物栽培・作物学 ====
==== 616 食用作物 ====
==== 617 工芸作物 ====
==== 618 繊維作物 ====
==== 619 農産物製造・加工 ====
-->
=== 620 園芸 ===
<!--
==== 621 園芸経済・行政・経営 ====
==== 622 園芸史・事情 ====
==== 623 園芸植物学・病虫害 ====
==== 624 温室・温床・園芸用具 ====
==== 625 果樹園芸 ====
-->
==== 626 蔬菜園芸 ====
*[[ダイズの栽培]]{{進捗|00%|2007-02-21}}
==== 627 花卉園芸[草花] ====
*[[サボテンの栽培]]{{進捗|00%|2007-02-21}}
<!--
==== 628 園芸利用 ====
==== 629 造園 ====
=== 630 蚕糸業 ===
==== 631 蚕糸経済・行政・経営 ====
==== 632 蚕糸業史・事情 ====
==== 633 蚕学・蚕業基礎学 ====
==== 634 蚕種 ====
==== 635 飼育法 ====
==== 636 くわ・栽桑 ====
==== 637 蚕室・蚕具 ====
==== 638 まゆ ====
==== 639 製糸・生糸・蚕糸利用 ====
-->
=== 640 畜産業 ===
<!--
==== 641 畜産経済・行政・経営 ====
==== 642 畜産史・事情 ====
==== 643 家畜の繁殖・家畜飼料 ====
==== 644 家畜の管理・畜舎・用具 ====
==== 645 家畜・畜産動物各論 ====
-->
==== 646 家禽各論・飼鳥 ====
*[[ホンセイインコ類の飼育]]{{進捗|00%|2007-02-21}}
<!--
===== 646.9 みつばち・昆虫 =====
==== 648 畜産製造・畜産物 ====
==== 649 獣医学・比較医学 ====
==== 649 獣医学 ====
=== 650 林業 ===
==== 651 林業経済・行政・経営 ====
==== 652 森林史・林業史・事情 ====
==== 653 森林立地・造林 ====
==== 654 森林保護 ====
==== 655 森林施業 ====
==== 656 森林工学 ====
==== 657 森林利用・林産物・木材学 ====
==== 658 林産製造 ====
==== 659 狩猟 ====
=== 660 水産業 ===
==== 661 水産経済・行政・経営 ====
==== 662 水産業および漁業史・事情 ====
==== 663 水産基礎学 ====
==== 664 漁労・漁業各論 ====
==== 665 漁船・漁具 ====
==== 666 水産増殖・養殖業 ====
==== 667 水産製造・水産食品 ====
==== 668 水産物利用・水産利用工業 ====
==== 669 製塩・塩業 ====
=== 670 商業 ===
==== 671 商業政策・行政 ====
==== 672 商業史・事情 ====
==== 673 商業経営・商店 ====
==== 674 広告・宣伝 ====
==== 675 マーケティング ====
==== 676 取引所 ====
==== 678 貿易 ====
=== 680 運輸・交通 ===
==== 681 交通政策・行政・経営 ====
==== 682 交通史・事情 ====
==== 683 海運 ====
==== 684 内水・運河交通 ====
==== 685 陸運・自動車運送 ====
==== 686 鉄道 ====
==== 687 航空運送 ====
==== 688 倉庫業 ====
==== 689 観光事業 ====
=== 690 通信事業 ===
==== 691 通信政策・行政・法令 ====
==== 692 通信事業史・事情 ====
==== 693 郵便・郵政事業 ====
==== 694 電気通信事業 ====
==== 699 放送事業 ====
===== 699.39 アナウンサー =====
-->
== 7類 芸術 ==
<!--
=== 700 芸術・美術 ===
==== 701 芸術理論・美学 ====
==== 702 芸術史・美術史 ====
==== 703 参考図書[レファレンスブック] ====
==== 704 論文集・評論集・講演集 ====
==== 705 逐次刊行物 ====
==== 706 団体 ====
==== 707 研究法・指導法・芸術教育 ====
==== 708 叢書・全集・選集 ====
==== 709 芸術政策・文化財 ====
=== 710 彫刻 ===
==== 711 彫塑材料・技法 ====
==== 712 彫刻史・各国の彫刻 ====
==== 713 木彫 ====
==== 714 石彫 ====
==== 715 金属彫刻・鋳造 ====
==== 717 粘土彫刻・塑造 ====
==== 708 仏像 ====
==== 709 オブジェ ====
=== 720 絵画 ===
==== 721 日本画 ====
==== 722 東洋画 ====
==== 723 洋画 ====
==== 724 絵画材料・技法 ====
==== 725 素描・描画 ====
==== 726 漫画、挿絵、童画 ====
==== 727 グラフィックデザイン、図案 ====
==== 728 書道 ====
=== 730 版画 ===
==== 731 版画材料・技法 ====
==== 732 版画史・各国の版画 ====
==== 733 木版画 ====
==== 734 石版画 ====
==== 735 銅版画・鋼版画 ====
==== 736 リノリウム版画・ゴム版画 ====
==== 737 写真版画・孔版画 ====
==== 739 印章、篆刻、印譜 ====
-->
=== 740 写真 ===
<!--
==== 742 写真器械・材料 ====
==== 743 撮影技術 ====
-->
==== 744 現像・印画 ====
*[[白黒写真の暗室作業]]{{進捗|75%|2007-05-10}}
<!--
==== 745 複写技術 ====
==== 746 特殊写真 ====
==== 747 写真の応用 ====
==== 748 写真集 ====
==== 749 印刷 ====
=== 750 工芸 ===
==== 751 陶磁工芸 ====
==== 752 漆工芸 ====
==== 753 染織工芸 ====
==== 754 木竹工芸 ====
==== 755 宝石・牙角・皮革工芸 ====
==== 756 金工芸 ====
==== 757 デザイン・装飾美術 ====
==== 758 美術家具 ====
==== 759 人形・玩具 ====
-->
=== 760 音楽 ===
==== 761 音楽の一般理論・音楽学 ====
* [[楽典]]
* [[和声学]]
* [[楽式]]
==== 762 音楽史・各国の音楽 ====
* [[西洋音楽史]]
<!--
==== 763 楽器・器楽 ====
==== 764 器楽合奏 ====
==== 765 宗教音楽・聖楽 ====
==== 766 劇音楽 ====
==== 767 声楽 ====
==== 768 邦楽 ====
==== 769 舞踊、バレエ ====
=== 770 演劇 ===
==== 771 劇場・演出・演技 ====
==== 772 演劇史・各国の演劇 ====
==== 773 能楽、狂言 ====
==== 774 歌舞伎 ====
==== 775 各種の演劇 ====
==== 777 人形劇 ====
==== 778 映画 ====
==== 779 大衆演芸 ====
-->
=== 780 スポーツ・体育 ===
*[[スポーツ]]
==== 781 体操、遊戯 ====
==== 782 陸上競技 ====
*[[トライアスロン]]
==== 783 球技 ====
*[[サッカー]]{{進捗|25%|2006-1-7}}
*[[テニス]]{{進捗|25%|2006-1-7}}
*[[バドミントン]]
*[[野球]]{{進捗|25%|2006-1-7}}
*[[ボウリング]]
<!--
==== 784 冬季競技 ====
-->
==== 785 水上競技 ====
*[[セーリング]]{{進捗|25%|2006-1-7}}
==== 786 戸外レクリエーション ====
===== 786.1 登山・山岳競技 =====
*[[登山]]
==== 787 釣魚、遊猟 ====
==== 788 相撲、拳闘、競馬 ====
*[[相撲]]{{進捗|25%|2006-2-23}}
*[[競馬]]{{進捗|25%|2023-09-25}}
==== 789 武術 ====
*[[剣道]]{{進捗|25%|2007-6-30}}
=== 790 諸芸・娯楽 ===
<!--
==== 791 茶道 ====
==== 792 香道 ====
==== 793 花道 ====
==== 794 撞球 ====
-->
==== 795 囲碁 ====
*[[囲碁]]{{進捗|25%|2006-1-7}}
==== 796 将棋 ====
*[[将棋]]{{進捗|25%|2006-1-7}}
<!--
==== 797 射倖ゲーム ====
-->
==== 798 室内娯楽 ====
*[[トランプ]]<!--798.2-->
*[[トランプ/トランプ教科書]]
*[[麻雀]]{{進捗|25%|2006-1-7}}
*[[チェス]]{{進捗|25%|2006-1-7}}
===== 798.5 テレビゲーム =====
*[[Minecraft]]
<!--
==== 799 ダンス ====
-->
== 8類 言語 ==
=== 800 言語 ===
==== 801 言語学 ====
*[[生成文法]]
*[[語学]]
**[[琉球語]]
<!--
==== 809 言語生活 ====
-->
=== 810 日本語 ===
*[[日本語]]{{進捗|25%|2005-05-04}}
<!--
==== 811 音声、音韻、文字 ====
==== 812 語源、意味 ====
==== 813 辞典 ====
==== 814 語彙 ====
==== 815 文法、語法 ====
==== 816 文章、文体、作文 ====
==== 817 読本、解釈、会話 ====
-->
==== 818 方言、訛語 ====
*[[北海道方言]]
*[[讃岐弁]]
*[[沖縄語]]
<!--
=== 820 中国語 ===
-->
==== 829 その他の東洋の諸言語 ====
*[[朝鮮語]]{{進捗|25%|2005-05-04}}
*[[ペルシア語]]
=== 830 英語 ===
*[[英語]]{{進捗|50%|2005-05-04}}
=== 840 ドイツ語 ===
*[[ドイツ語]]{{進捗|50%|2005-05-04}}
<!--
==== 849 その他のゲルマン言語 ====
-->
=== 850 フランス語 ===
*[[フランス語]]{{進捗|25%|2005-05-04}}
<!--
==== 859 プロヴァンス語 ====
=== 860 スペイン語 ===
==== 869 ポルトガル語 ====
=== 870 イタリア語 ===
-->
==== 879 その他のロマンス諸語 ====
*[[ルーマニア語]]
<!--
=== 880 ロシア語 ===
==== 889 その他のスラヴ諸語 ====
=== 890 その他の諸言語 ===
-->
==== 891 ギリシア語 ====
*[[ギリシア語]]
==== 892 ラテン語 ====
*[[ラテン語]]{{進捗|50%|2006-03-21}}
==== 893 その他のヨーロッパの諸言語 ====
*[[デンマーク語]]{{進捗|25%|2005-12-01}}
<!--
==== 894 アフリカの諸言語 ====
==== 895 アメリカの諸言語 ====
==== 897 オーストラリアの諸言語 ====
-->
==== 899 国際語 ====
*[[エスペラント]]{{進捗|00%|2005-05-04}}
== 9類 文学 ==
=== 900 文学 ===
*[[古典文学]]{{進捗|25%|2005-05-15}}
<!--
==== 909 児童文学研究 ====
-->
=== 910 日本文学 ===
<!--
==== 911 詩歌 ====
==== 912 戯曲 ====
-->
==== 913 小説、物語 ====
*[[竹取物語]]{{進捗|25%|2005-05-04}}
==== 914 評論、エッセイ、随筆 ====
*[[方丈記]]
<!--
==== 915 日記、書簡、紀行 ====
==== 916 記録、手記、ルポルタージュ ====
==== 917 箴言、アフォリズム、寸言 ====
==== 918 作品集 ====
==== 919 漢詩文、日本漢文学 ====
-->
=== 920 中国文学 ===
*[[漢詩]]{{進捗|25%|2005-05-04}}
<!--
==== 929 その他の東洋文学 ====
=== 930 英文学・米文学 ===
=== 940 ドイツ文学 ===
==== 949 その他のゲルマン文学 ====
=== 950 フランス文学 ===
==== 959 プロヴァンス文学 ====
=== 960 スペイン文学 ===
==== 969 ポルトガル文学 ====
=== 970 イタリア文学 ===
==== 979 その他のロマンス文学 ====
=== 980 ロシア文学・ソヴィエト文学 ===
==== 989 その他のスラヴ文学 ====
-->
=== 990 その他の諸文学 ===
==== 991 ギリシア文学 ====
==== 992 ラテン文学 ====
*[[ガリア戦記]]
==== 993 その他のヨーロッパ文学 ====
==== 994 アフリカ文学 ====
==== 995 アメリカ先住民語の文学 ====
==== 997 オーストラリア先住民語の文学 ====
==== 999 国際語による文学 ====
== 関連項目 ==
*[[w:日本十進分類法#要目表(第3次区分表)]]
== 外部リンク ==
*<del>[http://www.ndl.go.jp/jp/library/data/zan9.html 日本十進分類法新訂9版分類基準]([http://www.ndl.go.jp/ 国立国会図書館])</del>リンク切れ
*[https://www.kotono8.com/wiki/%E6%97%A5%E6%9C%AC%E5%8D%81%E9%80%B2%E5%88%86%E9%A1%9E%E6%B3%95%EF%BC%88%E8%A9%B3%E7%B4%B0%EF%BC%89 閾ペディアことのは 日本十進分類法(詳細)]
[[Category:日本十進分類法|*]]
[[it:Wikibooks:Classificazione decimale Dewey]]
arxnhba43pak43n2cnlsebdnctmxo9s
301524
301522
2026-07-13T10:36:51Z
Tkkn46tkkn46
89925
/* 007.63 コンピュータシステム ソフトウェア */ Google スライド を追加
301524
wikitext
text/x-wiki
__NOTOC__
[[メインページ|ウィキブックス]]の全ての書籍を[[:w:日本十進分類法|日本十進分類法]]に従って分類したものです。
{{進捗状況}}
== 0類 総記 ==
=== 000 総記 ===
*[[ウィキペディアの書き方]]
<!--
==== 002 知識・学問・学術 ====
-->
==== 007 情報科学 ====
*[[情報技術]]
<!--
===== 007.1 情報理論 =====
===== 007.2 歴史 事情 =====
===== 007.3 情報と社会 =====
===== 007.4 情報源 =====
===== 007.5 ドキュメンテーション 情報管理 =====
-->
===== 007.6 データ処理 情報処理 =====
*[[情報処理技術者試験の概要]]
*[[初級システムアドミニストレータ]]
<!--
====== 007.61 システム分析 システム設計 ======
-->
====== 007.63 コンピュータシステム ソフトウェア ======
*[[Freenet]]
*[[Google スライド]]
*[[Maxima]]
*[[Microsoft Office]]
*[[Mizar]]
*[[OpenOffice.org]]
*[[OSとアプリケーション]]
*[[TeX/LaTeX入門]]{{進捗|25%|2005-05-04}}
*[[vi]]
<!--
======= 007.632 エキスパートシステム =======
-->
====== 007.634 オペレーティングシステム ======
*[[ChromeOS]]
*[[Linuxシステム管理]]
*[[Linuxハードウェア]]
*[[MS-DOS/PC DOS入門]]{{進捗|50%|2005-05-04}}
*[[UNIX/Linux入門]]{{進捗|25%|2005-05-04}}
<!--
======= 007.635 漢字処理システム =======
-->
====== 007.637 図形処理ソフトウェア ======
* [[Inkscape]]
====== 007.64 コンピュータプログラミング ======
*[[機械語]]
*[[ゲームプログラミング]]
*[[数式処理システム]]
*[[ソフトウェア開発技術者]]
*[[プログラミング]]
*[[ASP.NET Core]]
*[[BASIC]]
*[[Blender 3D]]
*[[C言語]]{{進捗|25%|2005-05-04}}
*[[CPlusPlus|C++]]
*[[CSS]]{{進捗|00%|2005-06-17}}
*[[CGI]]{{進捗|25%|2005-05-04}}
*[[GNOMEフレームワーク]]
*[[Go]]
*[[HTML]]{{進捗|25%|2005-05-04}}
*[[Java]]{{進捗|25%|2005-05-04}}
*[[JavaScript]]{{進捗|25%|2005-05-04}}
*[[Lisp]]
*[[Node.js]]
*[[OpenGL]]
*[[OSS開発ツール]]
*[[Perl]]{{進捗|25%|2005-05-04}}
*[[PHP]]
*[[Ruby]]
*[[Scratch]]
*[[Scheme]]
*[[SVG]]
*[[Swift]]
*[[Xプログラミング]]
<!--
======= 007.642 CG技術 =======
====== 007.65 各種の記憶媒体 ======
====== 007.68 情報検索 機械検索 ======
-->
===== 007.7 情報システム =====
*[[LANとインターネット]]
*[[NTP入門]]
*[[TCP/IP入門]]
<!--
=== 010 図書館・図書館学 ===
==== 011 図書館政策・図書館行財政 ====
==== 012 図書館建築・図書館整備 ====
==== 013 図書館管理 ====
==== 014 資料の収集・資料の整理・資料の保管 ====
==== 015 図書館奉仕・図書館活動 ====
==== 016 各種の図書館 ====
==== 017 学校図書館 ====
==== 018 専門図書館 ====
==== 019 読書・読書法 ====
-->
=== 020 図書・書誌学 ===
==== 021 著作・編集 ====
===== 021.4 編集 編纂 =====
*[[ウィキペディアの書き方 入門編]]{{進捗|50%|2005-05-04}}
<!--
==== 022 写本・刊本・造本 ====
==== 023 出版 ====
-->
==== 024 図書の販売 ====
*[[同人誌即売会参加方法]]{{進捗|75%|2005-05-04}}
<!--
==== 025 一般書誌・全国書誌 ====
==== 026 稀書目録・善本目録 ====
==== 027 特種目録 ====
==== 028 選定図書目録・参考図書目録 ====
==== 029 蔵書目録・総合目録 ====
-->
=== 030 百科事典 ===
==== 031 日本語 ====
*[[w:mainpage|w:wikipedia]]
===== 031.3 日用便覧 =====
*[[ジョーク集]]
<!--
==== 039 用語索引<一般> ====
=== 040 一般論文集・一般講演集 ===
==== 041 日本語 ====
==== 049 雑著 ====
=== 050 逐次刊行物 ===
==== 051 日本の雑誌 ====
==== 059 一般年鑑 ====
=== 060 団体 ===
==== 061 学術・研究機関 ====
==== 063 文化交流機関 ====
==== 065 親睦団体・その他の団体 ====
==== 069 博物館 ====
=== 070 ジャーナリズム・新聞 ===
==== 071 日本 ====
=== 080 叢書・全集・選集 ===
==== 081 日本語 ====
==== 089 その他の諸言語 ====
=== 090 貴重書・郷土資料・その他の特別コレクション ===
-->
== 1類 哲学 ==
=== 100 哲学 ===
*[[哲学・思想]]{{進捗|00%|2005-05-04}}
<!--
==== 101 哲学理論 ====
==== 102 哲学史 ====
==== 103 参考図書 ====
==== 104 論文集・評論集・講演集 ====
==== 105 逐次刊行物 ====
==== 106 団体 ====
==== 107 研究法・指導法・哲学教育 ====
==== 108 叢集・全集・選集 ====
=== 110 哲学各論 ===
==== 111 形而上学・存在論 ====
==== 112 自然哲学・宇宙論 ====
==== 113 人生観・世界観 ====
==== 114 人間学 ====
==== 115 認識論 ====
==== 116 論理学・弁証法・方法論 ====
==== 117 価値哲学 ====
==== 118 文化哲学・技術哲学 ====
-->
=== 120 東洋思想 ===
==== 121 日本思想 ====
==== 122 中国思想・中国哲学 ====
*[[論語巻第一]]
==== 123 経書 ====
==== 124 先秦思想・諸子 ====
==== 125 中世思想・近代思想 ====
==== 126 インド哲学・バラモン教 ====
==== 129 その他のアジア・アラブ哲学 ====
<!--
=== 130 西洋哲学 ===
==== 131 古代哲学 ====
==== 132 中世哲学 ====
==== 133 近代哲学 ====
==== 134 ドイツ・オーストリア哲学 ====
==== 135 フランス・オランダ哲学 ====
==== 136 スペイン・ポルトガル哲学 ====
==== 137 イタリア哲学 ====
==== 138 ロシア哲学 ====
==== 139 その他の哲学 ====
-->
=== 140 心理学 ===
*[[心理学]]{{進捗|25%|2005-05-04}}
<!--
==== 141 普通心理学・心理各論 ====
==== 143 発達心理学 ====
==== 145 異常心理学 ====
==== 146 臨床心理学・精神分析学 ====
==== 147 超心理学・心霊研究 ====
==== 148 相法・易占 ====
==== 149 応用心理学 ====
-->
=== 150 倫理学・道徳 ===
*[[倫理学]]
==== 151 倫理各論 ====
==== 152 家庭倫理・性倫理 ====
==== 153 職業倫理 ====
==== 154 社会倫理 ====
==== 155 国体論・詔勅 ====
==== 156 武士道 ====
==== 157 報徳教・石門心学 ====
==== 158 その他の特定主題 ====
==== 159 人生訓・教訓 ====
<!--
=== 160 宗教 ===
==== 161 宗教学・宗教思想 ====
==== 162 宗教史・事情 ====
==== 163 原始宗教・宗教民族学 ====
==== 164 神話・神話学 ====
===== 164.31 ギリシャ神話 =====
==== 165 比較宗教 ====
==== 166 道教 ====
==== 167 イスラーム ====
==== 168 ヒンドゥー教・ジャイナ教 ====
==== 169 その他の宗教・新興宗教 ====
=== 170 神道 ===
==== 171 神道思想・神道説 ====
==== 172 神祇・神道史 ====
==== 173 神典 ====
==== 174 信仰録・説教集 ====
==== 175 神社・神職 ====
==== 176 祭祀 ====
==== 177 布教・伝道 ====
==== 178 各教派・教派神道 ====
=== 180 仏教 ===
==== 181 仏教教理・仏教哲学 ====
==== 182 仏教史 ====
==== 183 経典 ====
==== 184 法話・説教集 ====
==== 185 寺院・僧職 ====
==== 186 仏会 ====
==== 187 布教・伝道 ====
==== 188 各宗 ====
=== 190 キリスト教 ===
==== 191 教義・キリスト教神学 ====
==== 192 キリスト教史・迫害史 ====
==== 193 聖書 ====
==== 194 信仰録・説教集 ====
==== 195 教会・聖職 ====
==== 196 典礼・祭式・礼拝 ====
==== 197 布教・伝道 ====
==== 198 各教派・教会史 ====
==== 199 ユダヤ教 ====
-->
== 2類 歴史 ==
=== 200 歴史 ===
==== 201 歴史学 ====
*[[歴史学]]
<!--
==== 202 歴史補助学 ====
==== 203 参考図書 ====
==== 204 論文集・評論集・講演集 ====
==== 205 逐次刊行物 ====
==== 206 団体 ====
==== 207 研究法・指導法・歴史教育 ====
==== 208 叢書・全集・選集 ====
-->
==== 209 世界史・文化史 ====
*[[世界史]]{{進捗|25%|2005-05-04}}
=== 210 日本史 ===
*[[日本史]]{{進捗|25%|2005-05-04}}
<!--
===== 210.027 古銭学 =====
==== 211 北海道地方 ====
==== 212 東北地方 ====
==== 213 関東地方 ====
==== 214 北陸地方 ====
==== 215 中部地方 ====
==== 216 近畿地方 ====
==== 217 中国地方 ====
==== 218 四国地方 ====
==== 219 九州地方 ====
-->
=== 220 アジア史・東洋史 ===
<!--
==== 221 朝鮮 ====
-->
==== 222 中国 ====
*[[中国史]]{{進捗|25%|2005-12-01}}
<!--
==== 223 東南アジア ====
==== 224 インドネシア ====
==== 225 インド ====
===== 225.97 モルジブ =====
==== 229 アジアロシア ====
=== 230 ヨーロッパ史・西洋史 ===
==== 231 古代ギリシア ====
==== 232 古代ローマ ====
==== 233 イギリス・英国 ====
==== 234 ドイツ・中欧 ====
==== 235 フランス ====
==== 236 スペイン イスパニア ====
==== 237 イタリア ====
==== 238 ロシア ソビエト連邦 独立国家共同体 ====
==== 239 バルカン諸国 ====
=== 240 アフリカ史 ===
==== 241 北アフリカ ====
==== 242 エジプト ====
==== 243 バーバリ諸国 ====
==== 244 西アフリカ ====
==== 245 東アフリカ ====
==== 248 南アフリカ ====
==== 249 インド洋のアフリカ諸島 ====
=== 250 北アメリカ史 ===
==== 251 カナダ ====
==== 253 アメリカ合衆国 ====
==== 255 ラテンアメリカ 中南米 ====
==== 256 メキシコ ====
==== 257 中央アメリカ 中米諸国 ====
==== 259 西インド諸島 ====
=== 260 南アメリカ史 ===
==== 261 北部諸国 カリブ沿海諸国 ====
==== 262 ブラジル ====
==== 263 パラグアイ ====
==== 264 ウルグアイ ====
==== 265 アルゼンチン ====
==== 266 チリ ====
==== 267 ボリビア ====
==== 268 ペルー ====
=== 270 オセアニア史・両極地方史 ===
==== 271 オーストラリア ====
==== 272 ニュージーランド ====
==== 273 メラネシア ====
==== 274 ミクロネシア ====
==== 275 ポリネシア ====
==== 276 ハワイ ====
==== 277 両極地方 ====
==== 278 北極 北極地方 ====
==== 279 南極 南極地方 ====
=== 280 伝記 ===
==== 281 日本 ====
==== 282 アジア ====
==== 283 ヨーロッパ ====
==== 284 アフリカ ====
==== 285 北アフリカ ====
==== 286 南アフリカ ====
==== 287 オセアニア・両極地方 ====
==== 288 系譜・家史・皇室 ====
==== 289 個人伝記 ====
-->
=== 290 地理・地誌・紀行 ===
*[[地理学]]{{進捗|00%|2005-05-04}}
<!--
==== 290.93 旅行案内記 ====
-->
== 3類 社会科学 ==
<!--
=== 300 社会科学 ===
==== 301 理論・方法論 ====
==== 302 政治・経済・社会・文化事情 ====
==== 303 参考図書 ====
==== 304 論文集・評論集・講演集 ====
==== 305 逐次刊行物 ====
==== 306 団体 ====
==== 307 研究法・指導法・社会科学教育 ====
==== 308 叢書・全集・選集 ====
==== 309 社会思想 ====
=== 310 政治 ===
==== 311 政治学 ====
==== 312 政治史・事情 ====
==== 313 国家の形態・政治体制 ====
==== 314 議会 ====
==== 315 政党・政治結社 ====
==== 316 国家と個人・宗教・民族 ====
==== 317 行政 ====
==== 318 地方自治・地方行政 ====
==== 319 外交・国際問題 ====
-->
=== 320 法律 ===
==== 321 法学 ====
*[[法学]]{{進捗|25%|2005-05-04}}
==== 322 法制史 ====
*[[法制史]]
==== 323 憲法 ====
*[[憲法]]
==== 324 民法 ====
*[[民法]]
==== 325 商法 ====
*[[商法]]
==== 326 刑法・刑事法 ====
*[[刑法]]
==== 327 司法・訴訟手続法 ====
*[[民事訴訟法]]
*[[刑事訴訟法]]
==== 328 諸法 ====
*[[教育基本法]]
*[[知的財産権法]]
==== 329 国際法 ====
*[[国際法]]
=== 330 経済 ===
==== 331 経済学・経済思想 ====
*[[経済学]]{{進捗|25%|2005-05-04}}
*[[経済学基礎]]
==== 332 経済史・事情・経済体制 ====
==== 333 経済政策・国際経済 ====
==== 334 人口・土地・資源 ====
==== 335 企業・経営 ====
==== 336 経営管理 ====
*[[公認会計士試験]]
==== 337 貨幣・通貨 ====
==== 338 金融・銀行・信託 ====
==== 339 保険 ====
=== 340 財政 ===
<!--
==== 341 財政学・財政思想 ====
==== 342 財政史・事情 ====
==== 343 財政政策・財政行政 ====
==== 344 予算・決算 ====
==== 345 租税 ====
==== 347 公債・国債 ====
==== 348 専売・国有財産 ====
==== 349 地方財政 ====
=== 350 統計 ===
==== 351 日本 ====
==== 358 人口統計・国勢調査 ====
==== 359 各種の統計書 ====
-->
=== 360 社会 ===
<!--
==== 361 社会学 ====
==== 362 社会史・社会体制 ====
==== 364 社会保障 ====
==== 365 生活・消費者問題 ====
==== 366 労働経済・労働問題 ====
==== 367 家族問題、男性・女性問題、老人問題 ====
==== 368 社会病理 ====
-->
==== 369 社会福祉 ====
===== 369.3 災害 災害救助 =====
*[[防災]]{{進捗|25%|2006-04-06}}
=== 370 教育 ===
<!--
==== 371 教育学、教育思想 ====
===== 371.42 登校拒否・いじめ =====
-->
==== 372 教育史・事情 ====
*[[教育勅語]]{{進捗|75%|2005-05-04}}
<!--
==== 373 教育政策、教育制度、教育行財政 ====
-->
==== 374 学校経営・管理、学校保健 ====
===== 374.48 学校行事 =====
*[[運動会]]
==== 375 教育課程、学習指導、教科別教育 ====
*[[学校教育]]{{進捗|25%|2005-05-04}}
*[[生活と進路]]{{進捗|50%|2005-05-04}}
===== 374.9 教科書、教科書検定 =====
*[[小学校の学習]]{{進捗|50%|2023-09-25}}
*[[中学校の学習]]{{進捗|50%|2023-09-25}}
*[[高等学校の学習]]{{進捗|00%|2023-09-25}}
**[[高等学校の学習/旧課程]]{{進捗|25%|2023-09-25}}
<!--
* [[小学校算数]] {{進捗|25%|2005-05-04}}
* [[中学校数学]] {{進捗|50%|2005-05-10}}
* [[高等学校世界史A]] {{進捗|25%|2015-08-30}}
* [[高等学校地理B]] {{進捗|25%|2005-11-1}}
* [[高等学校現代社会]] {{進捗|25%|2015-08-30}}
* [[高等学校政治経済]] {{進捗|50%|2015-08-30}}
*[[高等学校倫理]]
*[[高等学校数学]]
*[[高等学校数学基礎]]{{進捗|100%|2005-05-04}}
*[[高等学校数学I]]{{進捗|50%|2005-05-04}}
*[[高等学校数学III]]{{進捗|50%|2005-05-04}}
*[[高等学校数学B]]{{進捗|50%|2005-05-04}}
*[[高等学校数学C]]{{進捗|50%|2005-05-04}}
*[[高等学校理科総合B]]{{進捗|50%|2005-05-04}}
*[[高等学校物理]]{{進捗|50%|2005-11-1}}
* [[高等学校化学]] {{進捗|50%|2015-08-30}}
* [[高等学校生物]] {{進捗|50%|2015-08-30}}
* [[高等学校地学]] {{進捗|25%|2015-08-30}}
*[[高等学校情報A]]
*[[高等学校情報B]]
*[[高等学校情報C]]
-->
*[[小・中・高等学校演習]]
*[[検定教科書]]
==== 376 幼児・初等・中等教育 ====
*[[小学校・中学校・高等学校の学習]]
==== 377 大学、高等・専門教育、学術行政 ====
* [[大学受験ガイド]] {{進捗|50%|2015-08-30}}
<!--
==== 378 障害児教育 ====
==== 379 社会教育 ====
=== 380 風俗習慣・民俗学・民族学 ===
==== 382 風俗史・民俗誌、民族誌 ====
==== 383 衣食住の習俗 ====
==== 384 社会・家庭生活の習俗 ====
==== 385 通過儀礼、冠婚葬祭 ====
==== 386 年中行事、祭礼 ====
==== 387 民間信仰、迷信(俗信) ====
==== 388 伝説、民話(昔話) ====
==== 389 民族学、文化人類学 ====
=== 390 国防・軍事 ===
==== 391 戦争、戦略、戦術 ====
==== 392 国防史・事情、軍事史・事情 ====
==== 393 国防政策・行政・法令 ====
==== 394 軍事医学、兵食 ====
==== 395 軍事施設、軍需品 ====
==== 396 陸軍 ====
==== 397 海軍 ====
==== 398 空軍 ====
==== 399 古代兵法、軍学 ====
-->
== 4類 自然科学 ==
<!--
=== 400 自然科学 ===
==== 401 科学理論・科学哲学 ====
==== 402 科学史・事情 ====
==== 403 参考図書 ====
==== 404 論文集・評論集・講演集 ====
==== 405 逐次刊行物 ====
==== 406 団体 ====
==== 407 研究法・指導法・科学教育 ====
==== 408 叢書・全集・選集 ====
==== 409 科学技術政策・科学技術行政 ====
-->
=== 410 数学 ===
* [[数学]]
* [[初等数学]]
* [[初等数学公式集]]{{進捗|25%|2005-05-04}}
* [[初等数学演習]]{{進捗|25%|2005-05-04}}
* [[初等数学記号集]]
* [[Wikibooks:初等数学用語索引|初等数学用語索引]]{{進捗|25%|2005-05-04}}
* [[中等数学]]
* [[高等数学]]
* [[大学数学公式集]]
==== 411 代数学 ====
===== 411.6 集合論 =====
*[[公理的集合論]]
==== 412 数論 ====
==== 413 解析学 ====
* [[解析学]]
* [[解析学基礎]]{{進捗|25%|2005-05-04}}
==== 414 幾何学 ====
==== 415 位相数学 ====
* [[位相幾何学]]{{進捗|25%|2008-09-03}}
==== 417 確率論、数理統計学 ====
* [[統計学基礎]]{{進捗|25%|2005-05-04}}
<!--
==== 418 計算法 ====
==== 419 和算、中国算法 ====
-->
=== 420 物理学 ===
*[[物理学]]
==== 421 理論物理学 ====
<!--
===== 421.1 基礎理論 エーテル理論 =====
-->
===== 421.2 相対性理論 =====
*[[特殊相対論]]
*[[一般相対性理論]]
===== 421.3 量子力学、量子論 =====
*[[場の量子論]]
*[[量子力学]]{{進捗|50%|2005-05-04}}
===== 421.4 統計力学 =====
*[[統計力学I]]
*[[統計力学II]]
===== 421.5 数理物理学.物理数学 =====
* [[物理数学I]] {{進捗|75%|2023-11-05}}
* [[物理数学II]]
==== 423 力学 ====
*[[解析力学]]
*[[古典力学]]{{進捗|50%|2005-05-04}}
==== 424 振動学、音響学 ====
*[[振動と波動]]
* [[音響学]]
==== 425 光学 ====
*[[光の偏極]]
==== 426 熱学 ====
*[[熱力学]]
==== 427 電磁気学 ====
*[[電磁気学]]
<!--
==== 428 物性物理学 ====
==== 429 原子物理学 ====
-->
=== 430 化学 ===
<!--
==== 431 物理化学. 理論化学 ====
==== 432 実験化学 ====
==== 433 分析化学 ====
==== 434 合成化学 ====
-->
==== 435 無機化学 ====
*[[無機化学]]{{進捗|25%|2005-05-04}}
<!--
==== 436 金属元素とその化合物 ====
-->
==== 437 有機化学 ====
*[[有機化学]]{{進捗|25%|2005-05-21}}
<!--
==== 438 環式化合物の化学 ====
==== 439 天然物質の化学 ====
-->
=== 440 天文学・宇宙科学 ===
* [[天文学]]{{進捗|25%|2005-12-01}}
<!--
==== 441 理論天文学・数理天文学 ====
==== 442 実地天文学・天体観測法 ====
==== 443 恒星・恒星天文学 ====
==== 444 太陽・太陽物理学 ====
==== 445 惑星・衛星 ====
==== 446 月 ====
==== 447 彗星・流星 ====
==== 448 地球・天文地理学 ====
==== 449 時法・暦学 ====
-->
=== 450 地球科学・地学 ===
* [[地球科学]]{{進捗|25%|2005-12-01}}
==== 451 気象学 ====
==== 452 海洋学 ====
==== 453 地震学 ====
===== 453.38 地震予知 =====
==== 454 地形学 ====
==== 455 地質学 ====
==== 456 地史学・層位学 ====
==== 457 古生物学・化石 ====
*[[古生物学]]
==== 458 岩石学 ====
==== 459 鉱物学 ====
=== 460 生物化学・一般生物学 ===
*[[生物学の研究技術]]{{進捗|25%|2005-05-04}}
<!--
==== 461 理論生物学・生命論 ====
==== 462 生物地理・生物誌 ====
==== 463 細胞学 ====
==== 464 生化学 ====
==== 465 微生物学 ====
==== 467 遺伝学 ====
===== 467.25 遺伝子組み換え =====
==== 468 生態学 ====
==== 469 人類学 ====
-->
=== 470 植物学 ===
*[[植物学]]{{進捗|25%|2005-05-04}}
<!--
==== 471 一般植物学 ====
==== 472 植物地理・植物誌 ====
==== 473 葉状植物 ====
==== 474 藻類・菌類 ====
==== 475 コケ植物 ====
==== 476 シダ植物 ====
==== 477 種子植物 ====
==== 478 裸子植物 ====
==== 479 被子植物 ====
=== 480 動物学 ===
==== 481 一般動物学 ====
==== 482 動物地理・動物誌 ====
==== 483 無脊椎動物 ====
==== 484 軟体動物・貝類学 ====
==== 485 節足動物 ====
==== 486 昆虫類 ====
==== 487 脊椎動物 ====
==== 488 鳥類 ====
==== 489 哺乳類 ====
-->
=== 490 医学 ===
* [[医学]]
*[[OsiriX_オンライン解説文書]]{{進捗|75%|2005-05-04}}
==== 491 基礎医学 ====
*[[生理学]]{{進捗|00%|2006-11-09}}
*[[解剖学]]{{進捗|25%|2006-11-09}}
*[[神経解剖学]]{{進捗|00%|2006-11-09}}
*[[組織学]]{{進捗|00%|2006-11-09}}
*[[微生物学]]{{進捗|00%|2006-11-09}}
*[[病理学]]{{進捗|00%|2006-11-09}}
<!--
==== 492 臨床医学 ====
-->
==== 493 内科学 ====
*[[内科学 呼吸器]]{{進捗|00%|2006-11-09}}
<!--
==== 494 外科学 ====
==== 495 産科学,婦人科学 ====
==== 496 眼科学,耳鼻咽喉科学 ====
==== 497 歯科学 ====
==== 498 衛生学,公衆衛生学,予防医学 ====
-->
==== 499 薬学 ====
*[[薬理学]]{{進捗|00%|2006-11-09}}
==5類 技術・工学・工業 ==
=== 500 技術・工学 ===
==== 501 工業基礎学 ====
==== 502 技術史・工学史 ====
==== 503 参考図書 ====
==== 504 論文集・評論集・講演集 ====
==== 505 逐次刊行物 ====
==== 506 団体 ====
==== 507 研究法・指導法・技術教育 ====
==== 508 叢書・全集・選集 ====
==== 509 工業・工業経済 ====
=== 510 建設工学・土木工学 ===
==== 511 土木力学・建設材料 ====
==== 512 測量 ====
==== 513 土木設計・施工法 ====
==== 514 道路工学 ====
==== 515 橋梁工学 ====
==== 516 鉄道工学 ====
==== 517 河海工学・河川工学 ====
==== 518 衛生工学・都市工学 ====
===== 518.523 ごみの再利用 =====
==== 519 公害・環境工学 ====
===== 519.12 環境法 =====
* [[環境法]]
=== 520 建築学 ===
==== 521 日本の建築 ====
==== 522 東洋の建築・アジアの建築 ====
==== 523 西洋の建築・その他の様式の建築 ====
==== 524 建築構造 ====
==== 525 建築計画・施工 ====
==== 526 各種の建築 ====
==== 527 住宅建築 ====
==== 528 建築設備・設備工学 ====
==== 529 建築意匠・装飾 ====
=== 530 機械工学・原子力工学 ===
==== 531 機械力学・材料・設計 ====
==== 532 機械工作・工作機械 ====
==== 533 熱機関・熱工学 ====
==== 534 流体機械・流体工学 ====
==== 535 精密機器・光学機器 ====
==== 536 運輸工学・車輌・運搬機械 ====
==== 537 自動車工学 ====
===== 537.25 電気自動車 =====
==== 538 航空宇宙工学 ====
==== 539 原子力工学 ====
=== 540 電気工学・電子工学 ===
==== 540 電気工学 ====
==== 541 電気回路・計測・材料 ====
==== 542 電気機器 ====
==== 543 発電 ====
==== 544 送電・変電・配電 ====
==== 545 電灯・照明・電熱 ====
==== 546 電気鉄道 ====
==== 547 通信工学・電気通信 ====
*[[スタイルシート言語]]
*[[AMPHTML]]
==== 548 情報工学 ====
==== 549 電子工学 ====
=== 550 海洋工学・船舶工学 ===
==== 551 理論造船学 ====
==== 552 船体構造・材料・施工 ====
==== 553 船体艤装・船舶設備 ====
==== 554 舶用機関[造機] ====
==== 555 船舶修理・保守 ====
==== 556 各種の船舶・艦艇 ====
==== 557 航海・航海学 ====
==== 558 海洋開発 ====
==== 559 兵器、軍事工学 ====
=== 560 金属工学・鉱山工学 ===
==== 561 採鉱・選鉱 ====
==== 562 各種の金属鉱床・採掘 ====
==== 563 冶金・合金 ====
==== 564 鉄鋼 ====
==== 565 非鉄金属 ====
==== 566 金属加工・製造冶金 ====
==== 567 石炭 ====
==== 568 石油 ====
==== 569 非金属鉱物・土石採取業 ====
=== 570 化学工業 ===
==== 571 化学工学・化学機器 ====
==== 572 電気化学工業 ====
==== 573 セラミックス・窯業・珪酸塩化学工業 ====
==== 574 化学薬品 ====
==== 575 燃料・爆発物 ====
==== 576 油脂類 ====
==== 577 染料 ====
==== 578 高分子化学工業 ====
==== 579 その他の化学工業 ====
=== 580 製造工業 ===
==== 581 金属製品 ====
==== 582 事務機器・家庭機器・楽器 ====
==== 583 木工業・木製品 ====
==== 584 皮革工業・皮革製品 ====
==== 585 パルプ・製紙工業 ====
==== 586 繊維工学 ====
==== 587 染色加工・染色業 ====
==== 588 食品工業 ====
==== 589 その他の雑工業 ====
=== 590 家政学・生活科学 ===
<!--
==== 591 家庭経済・経営 ====
==== 592 家庭理工学 ====
==== 593 衣服・裁縫 ====
==== 594 手芸 ====
==== 595 理容・美容 ====
===== 595.6 痩身法 =====
==== 596 食品・料理 ====
*[[料理本]]{{進捗|25%|2005-05-04}}
<!--
==== 597 住居・家具調度 ====
==== 598 家庭衛生 ====
==== 599 育児 ====
-->
==6類 産業 ==
<!--
=== 600 産業 ===
==== 601 産業政策・行政・総合開発 ====
==== 602 産業史・事情・物産誌 ====
==== 603 参考図書 ====
==== 604 論文集・評論集・講演集 ====
==== 605 逐次刊行物 ====
==== 606 団体 ====
==== 607 研究法・指導法・産業教育 ====
==== 608 叢書・全集・選集 ====
==== 609 度量衡、計量法 ====
=== 610 農業 ===
==== 611 農業経済 ====
==== 612 農業史・事情 ====
==== 613 農業基礎学 ====
==== 614 農業工学 ====
==== 615 作物栽培・作物学 ====
==== 616 食用作物 ====
==== 617 工芸作物 ====
==== 618 繊維作物 ====
==== 619 農産物製造・加工 ====
-->
=== 620 園芸 ===
<!--
==== 621 園芸経済・行政・経営 ====
==== 622 園芸史・事情 ====
==== 623 園芸植物学・病虫害 ====
==== 624 温室・温床・園芸用具 ====
==== 625 果樹園芸 ====
-->
==== 626 蔬菜園芸 ====
*[[ダイズの栽培]]{{進捗|00%|2007-02-21}}
==== 627 花卉園芸[草花] ====
*[[サボテンの栽培]]{{進捗|00%|2007-02-21}}
<!--
==== 628 園芸利用 ====
==== 629 造園 ====
=== 630 蚕糸業 ===
==== 631 蚕糸経済・行政・経営 ====
==== 632 蚕糸業史・事情 ====
==== 633 蚕学・蚕業基礎学 ====
==== 634 蚕種 ====
==== 635 飼育法 ====
==== 636 くわ・栽桑 ====
==== 637 蚕室・蚕具 ====
==== 638 まゆ ====
==== 639 製糸・生糸・蚕糸利用 ====
-->
=== 640 畜産業 ===
<!--
==== 641 畜産経済・行政・経営 ====
==== 642 畜産史・事情 ====
==== 643 家畜の繁殖・家畜飼料 ====
==== 644 家畜の管理・畜舎・用具 ====
==== 645 家畜・畜産動物各論 ====
-->
==== 646 家禽各論・飼鳥 ====
*[[ホンセイインコ類の飼育]]{{進捗|00%|2007-02-21}}
<!--
===== 646.9 みつばち・昆虫 =====
==== 648 畜産製造・畜産物 ====
==== 649 獣医学・比較医学 ====
==== 649 獣医学 ====
=== 650 林業 ===
==== 651 林業経済・行政・経営 ====
==== 652 森林史・林業史・事情 ====
==== 653 森林立地・造林 ====
==== 654 森林保護 ====
==== 655 森林施業 ====
==== 656 森林工学 ====
==== 657 森林利用・林産物・木材学 ====
==== 658 林産製造 ====
==== 659 狩猟 ====
=== 660 水産業 ===
==== 661 水産経済・行政・経営 ====
==== 662 水産業および漁業史・事情 ====
==== 663 水産基礎学 ====
==== 664 漁労・漁業各論 ====
==== 665 漁船・漁具 ====
==== 666 水産増殖・養殖業 ====
==== 667 水産製造・水産食品 ====
==== 668 水産物利用・水産利用工業 ====
==== 669 製塩・塩業 ====
=== 670 商業 ===
==== 671 商業政策・行政 ====
==== 672 商業史・事情 ====
==== 673 商業経営・商店 ====
==== 674 広告・宣伝 ====
==== 675 マーケティング ====
==== 676 取引所 ====
==== 678 貿易 ====
=== 680 運輸・交通 ===
==== 681 交通政策・行政・経営 ====
==== 682 交通史・事情 ====
==== 683 海運 ====
==== 684 内水・運河交通 ====
==== 685 陸運・自動車運送 ====
==== 686 鉄道 ====
==== 687 航空運送 ====
==== 688 倉庫業 ====
==== 689 観光事業 ====
=== 690 通信事業 ===
==== 691 通信政策・行政・法令 ====
==== 692 通信事業史・事情 ====
==== 693 郵便・郵政事業 ====
==== 694 電気通信事業 ====
==== 699 放送事業 ====
===== 699.39 アナウンサー =====
-->
== 7類 芸術 ==
<!--
=== 700 芸術・美術 ===
==== 701 芸術理論・美学 ====
==== 702 芸術史・美術史 ====
==== 703 参考図書[レファレンスブック] ====
==== 704 論文集・評論集・講演集 ====
==== 705 逐次刊行物 ====
==== 706 団体 ====
==== 707 研究法・指導法・芸術教育 ====
==== 708 叢書・全集・選集 ====
==== 709 芸術政策・文化財 ====
=== 710 彫刻 ===
==== 711 彫塑材料・技法 ====
==== 712 彫刻史・各国の彫刻 ====
==== 713 木彫 ====
==== 714 石彫 ====
==== 715 金属彫刻・鋳造 ====
==== 717 粘土彫刻・塑造 ====
==== 708 仏像 ====
==== 709 オブジェ ====
=== 720 絵画 ===
==== 721 日本画 ====
==== 722 東洋画 ====
==== 723 洋画 ====
==== 724 絵画材料・技法 ====
==== 725 素描・描画 ====
==== 726 漫画、挿絵、童画 ====
==== 727 グラフィックデザイン、図案 ====
==== 728 書道 ====
=== 730 版画 ===
==== 731 版画材料・技法 ====
==== 732 版画史・各国の版画 ====
==== 733 木版画 ====
==== 734 石版画 ====
==== 735 銅版画・鋼版画 ====
==== 736 リノリウム版画・ゴム版画 ====
==== 737 写真版画・孔版画 ====
==== 739 印章、篆刻、印譜 ====
-->
=== 740 写真 ===
<!--
==== 742 写真器械・材料 ====
==== 743 撮影技術 ====
-->
==== 744 現像・印画 ====
*[[白黒写真の暗室作業]]{{進捗|75%|2007-05-10}}
<!--
==== 745 複写技術 ====
==== 746 特殊写真 ====
==== 747 写真の応用 ====
==== 748 写真集 ====
==== 749 印刷 ====
=== 750 工芸 ===
==== 751 陶磁工芸 ====
==== 752 漆工芸 ====
==== 753 染織工芸 ====
==== 754 木竹工芸 ====
==== 755 宝石・牙角・皮革工芸 ====
==== 756 金工芸 ====
==== 757 デザイン・装飾美術 ====
==== 758 美術家具 ====
==== 759 人形・玩具 ====
-->
=== 760 音楽 ===
==== 761 音楽の一般理論・音楽学 ====
* [[楽典]]
* [[和声学]]
* [[楽式]]
==== 762 音楽史・各国の音楽 ====
* [[西洋音楽史]]
<!--
==== 763 楽器・器楽 ====
==== 764 器楽合奏 ====
==== 765 宗教音楽・聖楽 ====
==== 766 劇音楽 ====
==== 767 声楽 ====
==== 768 邦楽 ====
==== 769 舞踊、バレエ ====
=== 770 演劇 ===
==== 771 劇場・演出・演技 ====
==== 772 演劇史・各国の演劇 ====
==== 773 能楽、狂言 ====
==== 774 歌舞伎 ====
==== 775 各種の演劇 ====
==== 777 人形劇 ====
==== 778 映画 ====
==== 779 大衆演芸 ====
-->
=== 780 スポーツ・体育 ===
*[[スポーツ]]
==== 781 体操、遊戯 ====
==== 782 陸上競技 ====
*[[トライアスロン]]
==== 783 球技 ====
*[[サッカー]]{{進捗|25%|2006-1-7}}
*[[テニス]]{{進捗|25%|2006-1-7}}
*[[バドミントン]]
*[[野球]]{{進捗|25%|2006-1-7}}
*[[ボウリング]]
<!--
==== 784 冬季競技 ====
-->
==== 785 水上競技 ====
*[[セーリング]]{{進捗|25%|2006-1-7}}
==== 786 戸外レクリエーション ====
===== 786.1 登山・山岳競技 =====
*[[登山]]
==== 787 釣魚、遊猟 ====
==== 788 相撲、拳闘、競馬 ====
*[[相撲]]{{進捗|25%|2006-2-23}}
*[[競馬]]{{進捗|25%|2023-09-25}}
==== 789 武術 ====
*[[剣道]]{{進捗|25%|2007-6-30}}
=== 790 諸芸・娯楽 ===
<!--
==== 791 茶道 ====
==== 792 香道 ====
==== 793 花道 ====
==== 794 撞球 ====
-->
==== 795 囲碁 ====
*[[囲碁]]{{進捗|25%|2006-1-7}}
==== 796 将棋 ====
*[[将棋]]{{進捗|25%|2006-1-7}}
<!--
==== 797 射倖ゲーム ====
-->
==== 798 室内娯楽 ====
*[[トランプ]]<!--798.2-->
*[[トランプ/トランプ教科書]]
*[[麻雀]]{{進捗|25%|2006-1-7}}
*[[チェス]]{{進捗|25%|2006-1-7}}
===== 798.5 テレビゲーム =====
*[[Minecraft]]
<!--
==== 799 ダンス ====
-->
== 8類 言語 ==
=== 800 言語 ===
==== 801 言語学 ====
*[[生成文法]]
*[[語学]]
**[[琉球語]]
<!--
==== 809 言語生活 ====
-->
=== 810 日本語 ===
*[[日本語]]{{進捗|25%|2005-05-04}}
<!--
==== 811 音声、音韻、文字 ====
==== 812 語源、意味 ====
==== 813 辞典 ====
==== 814 語彙 ====
==== 815 文法、語法 ====
==== 816 文章、文体、作文 ====
==== 817 読本、解釈、会話 ====
-->
==== 818 方言、訛語 ====
*[[北海道方言]]
*[[讃岐弁]]
*[[沖縄語]]
<!--
=== 820 中国語 ===
-->
==== 829 その他の東洋の諸言語 ====
*[[朝鮮語]]{{進捗|25%|2005-05-04}}
*[[ペルシア語]]
=== 830 英語 ===
*[[英語]]{{進捗|50%|2005-05-04}}
=== 840 ドイツ語 ===
*[[ドイツ語]]{{進捗|50%|2005-05-04}}
<!--
==== 849 その他のゲルマン言語 ====
-->
=== 850 フランス語 ===
*[[フランス語]]{{進捗|25%|2005-05-04}}
<!--
==== 859 プロヴァンス語 ====
=== 860 スペイン語 ===
==== 869 ポルトガル語 ====
=== 870 イタリア語 ===
-->
==== 879 その他のロマンス諸語 ====
*[[ルーマニア語]]
<!--
=== 880 ロシア語 ===
==== 889 その他のスラヴ諸語 ====
=== 890 その他の諸言語 ===
-->
==== 891 ギリシア語 ====
*[[ギリシア語]]
==== 892 ラテン語 ====
*[[ラテン語]]{{進捗|50%|2006-03-21}}
==== 893 その他のヨーロッパの諸言語 ====
*[[デンマーク語]]{{進捗|25%|2005-12-01}}
<!--
==== 894 アフリカの諸言語 ====
==== 895 アメリカの諸言語 ====
==== 897 オーストラリアの諸言語 ====
-->
==== 899 国際語 ====
*[[エスペラント]]{{進捗|00%|2005-05-04}}
== 9類 文学 ==
=== 900 文学 ===
*[[古典文学]]{{進捗|25%|2005-05-15}}
<!--
==== 909 児童文学研究 ====
-->
=== 910 日本文学 ===
<!--
==== 911 詩歌 ====
==== 912 戯曲 ====
-->
==== 913 小説、物語 ====
*[[竹取物語]]{{進捗|25%|2005-05-04}}
==== 914 評論、エッセイ、随筆 ====
*[[方丈記]]
<!--
==== 915 日記、書簡、紀行 ====
==== 916 記録、手記、ルポルタージュ ====
==== 917 箴言、アフォリズム、寸言 ====
==== 918 作品集 ====
==== 919 漢詩文、日本漢文学 ====
-->
=== 920 中国文学 ===
*[[漢詩]]{{進捗|25%|2005-05-04}}
<!--
==== 929 その他の東洋文学 ====
=== 930 英文学・米文学 ===
=== 940 ドイツ文学 ===
==== 949 その他のゲルマン文学 ====
=== 950 フランス文学 ===
==== 959 プロヴァンス文学 ====
=== 960 スペイン文学 ===
==== 969 ポルトガル文学 ====
=== 970 イタリア文学 ===
==== 979 その他のロマンス文学 ====
=== 980 ロシア文学・ソヴィエト文学 ===
==== 989 その他のスラヴ文学 ====
-->
=== 990 その他の諸文学 ===
==== 991 ギリシア文学 ====
==== 992 ラテン文学 ====
*[[ガリア戦記]]
==== 993 その他のヨーロッパ文学 ====
==== 994 アフリカ文学 ====
==== 995 アメリカ先住民語の文学 ====
==== 997 オーストラリア先住民語の文学 ====
==== 999 国際語による文学 ====
== 関連項目 ==
*[[w:日本十進分類法#要目表(第3次区分表)]]
== 外部リンク ==
*<del>[http://www.ndl.go.jp/jp/library/data/zan9.html 日本十進分類法新訂9版分類基準]([http://www.ndl.go.jp/ 国立国会図書館])</del>リンク切れ
*[https://www.kotono8.com/wiki/%E6%97%A5%E6%9C%AC%E5%8D%81%E9%80%B2%E5%88%86%E9%A1%9E%E6%B3%95%EF%BC%88%E8%A9%B3%E7%B4%B0%EF%BC%89 閾ペディアことのは 日本十進分類法(詳細)]
[[Category:日本十進分類法|*]]
[[it:Wikibooks:Classificazione decimale Dewey]]
pqxnn0032m1cr6gw9bwojb5rkc99drv
301525
301524
2026-07-13T10:40:43Z
Tkkn46tkkn46
89925
/* 007.64 コンピュータプログラミング */ Haskellを追加
301525
wikitext
text/x-wiki
__NOTOC__
[[メインページ|ウィキブックス]]の全ての書籍を[[:w:日本十進分類法|日本十進分類法]]に従って分類したものです。
{{進捗状況}}
== 0類 総記 ==
=== 000 総記 ===
*[[ウィキペディアの書き方]]
<!--
==== 002 知識・学問・学術 ====
-->
==== 007 情報科学 ====
*[[情報技術]]
<!--
===== 007.1 情報理論 =====
===== 007.2 歴史 事情 =====
===== 007.3 情報と社会 =====
===== 007.4 情報源 =====
===== 007.5 ドキュメンテーション 情報管理 =====
-->
===== 007.6 データ処理 情報処理 =====
*[[情報処理技術者試験の概要]]
*[[初級システムアドミニストレータ]]
<!--
====== 007.61 システム分析 システム設計 ======
-->
====== 007.63 コンピュータシステム ソフトウェア ======
*[[Freenet]]
*[[Google スライド]]
*[[Maxima]]
*[[Microsoft Office]]
*[[Mizar]]
*[[OpenOffice.org]]
*[[OSとアプリケーション]]
*[[TeX/LaTeX入門]]{{進捗|25%|2005-05-04}}
*[[vi]]
<!--
======= 007.632 エキスパートシステム =======
-->
====== 007.634 オペレーティングシステム ======
*[[ChromeOS]]
*[[Linuxシステム管理]]
*[[Linuxハードウェア]]
*[[MS-DOS/PC DOS入門]]{{進捗|50%|2005-05-04}}
*[[UNIX/Linux入門]]{{進捗|25%|2005-05-04}}
<!--
======= 007.635 漢字処理システム =======
-->
====== 007.637 図形処理ソフトウェア ======
* [[Inkscape]]
====== 007.64 コンピュータプログラミング ======
*[[機械語]]
*[[ゲームプログラミング]]
*[[数式処理システム]]
*[[ソフトウェア開発技術者]]
*[[プログラミング]]
*[[ASP.NET Core]]
*[[BASIC]]
*[[Blender 3D]]
*[[C言語]]{{進捗|25%|2005-05-04}}
*[[CPlusPlus|C++]]
*[[CSS]]{{進捗|00%|2005-06-17}}
*[[CGI]]{{進捗|25%|2005-05-04}}
*[[GNOMEフレームワーク]]
*[[Go]]
*[[Haskell]]
*[[HTML]]{{進捗|25%|2005-05-04}}
*[[Java]]{{進捗|25%|2005-05-04}}
*[[JavaScript]]{{進捗|25%|2005-05-04}}
*[[Lisp]]
*[[Node.js]]
*[[OpenGL]]
*[[OSS開発ツール]]
*[[Perl]]{{進捗|25%|2005-05-04}}
*[[PHP]]
*[[Ruby]]
*[[Scratch]]
*[[Scheme]]
*[[SVG]]
*[[Swift]]
*[[Xプログラミング]]
<!--
======= 007.642 CG技術 =======
====== 007.65 各種の記憶媒体 ======
====== 007.68 情報検索 機械検索 ======
-->
===== 007.7 情報システム =====
*[[LANとインターネット]]
*[[NTP入門]]
*[[TCP/IP入門]]
<!--
=== 010 図書館・図書館学 ===
==== 011 図書館政策・図書館行財政 ====
==== 012 図書館建築・図書館整備 ====
==== 013 図書館管理 ====
==== 014 資料の収集・資料の整理・資料の保管 ====
==== 015 図書館奉仕・図書館活動 ====
==== 016 各種の図書館 ====
==== 017 学校図書館 ====
==== 018 専門図書館 ====
==== 019 読書・読書法 ====
-->
=== 020 図書・書誌学 ===
==== 021 著作・編集 ====
===== 021.4 編集 編纂 =====
*[[ウィキペディアの書き方 入門編]]{{進捗|50%|2005-05-04}}
<!--
==== 022 写本・刊本・造本 ====
==== 023 出版 ====
-->
==== 024 図書の販売 ====
*[[同人誌即売会参加方法]]{{進捗|75%|2005-05-04}}
<!--
==== 025 一般書誌・全国書誌 ====
==== 026 稀書目録・善本目録 ====
==== 027 特種目録 ====
==== 028 選定図書目録・参考図書目録 ====
==== 029 蔵書目録・総合目録 ====
-->
=== 030 百科事典 ===
==== 031 日本語 ====
*[[w:mainpage|w:wikipedia]]
===== 031.3 日用便覧 =====
*[[ジョーク集]]
<!--
==== 039 用語索引<一般> ====
=== 040 一般論文集・一般講演集 ===
==== 041 日本語 ====
==== 049 雑著 ====
=== 050 逐次刊行物 ===
==== 051 日本の雑誌 ====
==== 059 一般年鑑 ====
=== 060 団体 ===
==== 061 学術・研究機関 ====
==== 063 文化交流機関 ====
==== 065 親睦団体・その他の団体 ====
==== 069 博物館 ====
=== 070 ジャーナリズム・新聞 ===
==== 071 日本 ====
=== 080 叢書・全集・選集 ===
==== 081 日本語 ====
==== 089 その他の諸言語 ====
=== 090 貴重書・郷土資料・その他の特別コレクション ===
-->
== 1類 哲学 ==
=== 100 哲学 ===
*[[哲学・思想]]{{進捗|00%|2005-05-04}}
<!--
==== 101 哲学理論 ====
==== 102 哲学史 ====
==== 103 参考図書 ====
==== 104 論文集・評論集・講演集 ====
==== 105 逐次刊行物 ====
==== 106 団体 ====
==== 107 研究法・指導法・哲学教育 ====
==== 108 叢集・全集・選集 ====
=== 110 哲学各論 ===
==== 111 形而上学・存在論 ====
==== 112 自然哲学・宇宙論 ====
==== 113 人生観・世界観 ====
==== 114 人間学 ====
==== 115 認識論 ====
==== 116 論理学・弁証法・方法論 ====
==== 117 価値哲学 ====
==== 118 文化哲学・技術哲学 ====
-->
=== 120 東洋思想 ===
==== 121 日本思想 ====
==== 122 中国思想・中国哲学 ====
*[[論語巻第一]]
==== 123 経書 ====
==== 124 先秦思想・諸子 ====
==== 125 中世思想・近代思想 ====
==== 126 インド哲学・バラモン教 ====
==== 129 その他のアジア・アラブ哲学 ====
<!--
=== 130 西洋哲学 ===
==== 131 古代哲学 ====
==== 132 中世哲学 ====
==== 133 近代哲学 ====
==== 134 ドイツ・オーストリア哲学 ====
==== 135 フランス・オランダ哲学 ====
==== 136 スペイン・ポルトガル哲学 ====
==== 137 イタリア哲学 ====
==== 138 ロシア哲学 ====
==== 139 その他の哲学 ====
-->
=== 140 心理学 ===
*[[心理学]]{{進捗|25%|2005-05-04}}
<!--
==== 141 普通心理学・心理各論 ====
==== 143 発達心理学 ====
==== 145 異常心理学 ====
==== 146 臨床心理学・精神分析学 ====
==== 147 超心理学・心霊研究 ====
==== 148 相法・易占 ====
==== 149 応用心理学 ====
-->
=== 150 倫理学・道徳 ===
*[[倫理学]]
==== 151 倫理各論 ====
==== 152 家庭倫理・性倫理 ====
==== 153 職業倫理 ====
==== 154 社会倫理 ====
==== 155 国体論・詔勅 ====
==== 156 武士道 ====
==== 157 報徳教・石門心学 ====
==== 158 その他の特定主題 ====
==== 159 人生訓・教訓 ====
<!--
=== 160 宗教 ===
==== 161 宗教学・宗教思想 ====
==== 162 宗教史・事情 ====
==== 163 原始宗教・宗教民族学 ====
==== 164 神話・神話学 ====
===== 164.31 ギリシャ神話 =====
==== 165 比較宗教 ====
==== 166 道教 ====
==== 167 イスラーム ====
==== 168 ヒンドゥー教・ジャイナ教 ====
==== 169 その他の宗教・新興宗教 ====
=== 170 神道 ===
==== 171 神道思想・神道説 ====
==== 172 神祇・神道史 ====
==== 173 神典 ====
==== 174 信仰録・説教集 ====
==== 175 神社・神職 ====
==== 176 祭祀 ====
==== 177 布教・伝道 ====
==== 178 各教派・教派神道 ====
=== 180 仏教 ===
==== 181 仏教教理・仏教哲学 ====
==== 182 仏教史 ====
==== 183 経典 ====
==== 184 法話・説教集 ====
==== 185 寺院・僧職 ====
==== 186 仏会 ====
==== 187 布教・伝道 ====
==== 188 各宗 ====
=== 190 キリスト教 ===
==== 191 教義・キリスト教神学 ====
==== 192 キリスト教史・迫害史 ====
==== 193 聖書 ====
==== 194 信仰録・説教集 ====
==== 195 教会・聖職 ====
==== 196 典礼・祭式・礼拝 ====
==== 197 布教・伝道 ====
==== 198 各教派・教会史 ====
==== 199 ユダヤ教 ====
-->
== 2類 歴史 ==
=== 200 歴史 ===
==== 201 歴史学 ====
*[[歴史学]]
<!--
==== 202 歴史補助学 ====
==== 203 参考図書 ====
==== 204 論文集・評論集・講演集 ====
==== 205 逐次刊行物 ====
==== 206 団体 ====
==== 207 研究法・指導法・歴史教育 ====
==== 208 叢書・全集・選集 ====
-->
==== 209 世界史・文化史 ====
*[[世界史]]{{進捗|25%|2005-05-04}}
=== 210 日本史 ===
*[[日本史]]{{進捗|25%|2005-05-04}}
<!--
===== 210.027 古銭学 =====
==== 211 北海道地方 ====
==== 212 東北地方 ====
==== 213 関東地方 ====
==== 214 北陸地方 ====
==== 215 中部地方 ====
==== 216 近畿地方 ====
==== 217 中国地方 ====
==== 218 四国地方 ====
==== 219 九州地方 ====
-->
=== 220 アジア史・東洋史 ===
<!--
==== 221 朝鮮 ====
-->
==== 222 中国 ====
*[[中国史]]{{進捗|25%|2005-12-01}}
<!--
==== 223 東南アジア ====
==== 224 インドネシア ====
==== 225 インド ====
===== 225.97 モルジブ =====
==== 229 アジアロシア ====
=== 230 ヨーロッパ史・西洋史 ===
==== 231 古代ギリシア ====
==== 232 古代ローマ ====
==== 233 イギリス・英国 ====
==== 234 ドイツ・中欧 ====
==== 235 フランス ====
==== 236 スペイン イスパニア ====
==== 237 イタリア ====
==== 238 ロシア ソビエト連邦 独立国家共同体 ====
==== 239 バルカン諸国 ====
=== 240 アフリカ史 ===
==== 241 北アフリカ ====
==== 242 エジプト ====
==== 243 バーバリ諸国 ====
==== 244 西アフリカ ====
==== 245 東アフリカ ====
==== 248 南アフリカ ====
==== 249 インド洋のアフリカ諸島 ====
=== 250 北アメリカ史 ===
==== 251 カナダ ====
==== 253 アメリカ合衆国 ====
==== 255 ラテンアメリカ 中南米 ====
==== 256 メキシコ ====
==== 257 中央アメリカ 中米諸国 ====
==== 259 西インド諸島 ====
=== 260 南アメリカ史 ===
==== 261 北部諸国 カリブ沿海諸国 ====
==== 262 ブラジル ====
==== 263 パラグアイ ====
==== 264 ウルグアイ ====
==== 265 アルゼンチン ====
==== 266 チリ ====
==== 267 ボリビア ====
==== 268 ペルー ====
=== 270 オセアニア史・両極地方史 ===
==== 271 オーストラリア ====
==== 272 ニュージーランド ====
==== 273 メラネシア ====
==== 274 ミクロネシア ====
==== 275 ポリネシア ====
==== 276 ハワイ ====
==== 277 両極地方 ====
==== 278 北極 北極地方 ====
==== 279 南極 南極地方 ====
=== 280 伝記 ===
==== 281 日本 ====
==== 282 アジア ====
==== 283 ヨーロッパ ====
==== 284 アフリカ ====
==== 285 北アフリカ ====
==== 286 南アフリカ ====
==== 287 オセアニア・両極地方 ====
==== 288 系譜・家史・皇室 ====
==== 289 個人伝記 ====
-->
=== 290 地理・地誌・紀行 ===
*[[地理学]]{{進捗|00%|2005-05-04}}
<!--
==== 290.93 旅行案内記 ====
-->
== 3類 社会科学 ==
<!--
=== 300 社会科学 ===
==== 301 理論・方法論 ====
==== 302 政治・経済・社会・文化事情 ====
==== 303 参考図書 ====
==== 304 論文集・評論集・講演集 ====
==== 305 逐次刊行物 ====
==== 306 団体 ====
==== 307 研究法・指導法・社会科学教育 ====
==== 308 叢書・全集・選集 ====
==== 309 社会思想 ====
=== 310 政治 ===
==== 311 政治学 ====
==== 312 政治史・事情 ====
==== 313 国家の形態・政治体制 ====
==== 314 議会 ====
==== 315 政党・政治結社 ====
==== 316 国家と個人・宗教・民族 ====
==== 317 行政 ====
==== 318 地方自治・地方行政 ====
==== 319 外交・国際問題 ====
-->
=== 320 法律 ===
==== 321 法学 ====
*[[法学]]{{進捗|25%|2005-05-04}}
==== 322 法制史 ====
*[[法制史]]
==== 323 憲法 ====
*[[憲法]]
==== 324 民法 ====
*[[民法]]
==== 325 商法 ====
*[[商法]]
==== 326 刑法・刑事法 ====
*[[刑法]]
==== 327 司法・訴訟手続法 ====
*[[民事訴訟法]]
*[[刑事訴訟法]]
==== 328 諸法 ====
*[[教育基本法]]
*[[知的財産権法]]
==== 329 国際法 ====
*[[国際法]]
=== 330 経済 ===
==== 331 経済学・経済思想 ====
*[[経済学]]{{進捗|25%|2005-05-04}}
*[[経済学基礎]]
==== 332 経済史・事情・経済体制 ====
==== 333 経済政策・国際経済 ====
==== 334 人口・土地・資源 ====
==== 335 企業・経営 ====
==== 336 経営管理 ====
*[[公認会計士試験]]
==== 337 貨幣・通貨 ====
==== 338 金融・銀行・信託 ====
==== 339 保険 ====
=== 340 財政 ===
<!--
==== 341 財政学・財政思想 ====
==== 342 財政史・事情 ====
==== 343 財政政策・財政行政 ====
==== 344 予算・決算 ====
==== 345 租税 ====
==== 347 公債・国債 ====
==== 348 専売・国有財産 ====
==== 349 地方財政 ====
=== 350 統計 ===
==== 351 日本 ====
==== 358 人口統計・国勢調査 ====
==== 359 各種の統計書 ====
-->
=== 360 社会 ===
<!--
==== 361 社会学 ====
==== 362 社会史・社会体制 ====
==== 364 社会保障 ====
==== 365 生活・消費者問題 ====
==== 366 労働経済・労働問題 ====
==== 367 家族問題、男性・女性問題、老人問題 ====
==== 368 社会病理 ====
-->
==== 369 社会福祉 ====
===== 369.3 災害 災害救助 =====
*[[防災]]{{進捗|25%|2006-04-06}}
=== 370 教育 ===
<!--
==== 371 教育学、教育思想 ====
===== 371.42 登校拒否・いじめ =====
-->
==== 372 教育史・事情 ====
*[[教育勅語]]{{進捗|75%|2005-05-04}}
<!--
==== 373 教育政策、教育制度、教育行財政 ====
-->
==== 374 学校経営・管理、学校保健 ====
===== 374.48 学校行事 =====
*[[運動会]]
==== 375 教育課程、学習指導、教科別教育 ====
*[[学校教育]]{{進捗|25%|2005-05-04}}
*[[生活と進路]]{{進捗|50%|2005-05-04}}
===== 374.9 教科書、教科書検定 =====
*[[小学校の学習]]{{進捗|50%|2023-09-25}}
*[[中学校の学習]]{{進捗|50%|2023-09-25}}
*[[高等学校の学習]]{{進捗|00%|2023-09-25}}
**[[高等学校の学習/旧課程]]{{進捗|25%|2023-09-25}}
<!--
* [[小学校算数]] {{進捗|25%|2005-05-04}}
* [[中学校数学]] {{進捗|50%|2005-05-10}}
* [[高等学校世界史A]] {{進捗|25%|2015-08-30}}
* [[高等学校地理B]] {{進捗|25%|2005-11-1}}
* [[高等学校現代社会]] {{進捗|25%|2015-08-30}}
* [[高等学校政治経済]] {{進捗|50%|2015-08-30}}
*[[高等学校倫理]]
*[[高等学校数学]]
*[[高等学校数学基礎]]{{進捗|100%|2005-05-04}}
*[[高等学校数学I]]{{進捗|50%|2005-05-04}}
*[[高等学校数学III]]{{進捗|50%|2005-05-04}}
*[[高等学校数学B]]{{進捗|50%|2005-05-04}}
*[[高等学校数学C]]{{進捗|50%|2005-05-04}}
*[[高等学校理科総合B]]{{進捗|50%|2005-05-04}}
*[[高等学校物理]]{{進捗|50%|2005-11-1}}
* [[高等学校化学]] {{進捗|50%|2015-08-30}}
* [[高等学校生物]] {{進捗|50%|2015-08-30}}
* [[高等学校地学]] {{進捗|25%|2015-08-30}}
*[[高等学校情報A]]
*[[高等学校情報B]]
*[[高等学校情報C]]
-->
*[[小・中・高等学校演習]]
*[[検定教科書]]
==== 376 幼児・初等・中等教育 ====
*[[小学校・中学校・高等学校の学習]]
==== 377 大学、高等・専門教育、学術行政 ====
* [[大学受験ガイド]] {{進捗|50%|2015-08-30}}
<!--
==== 378 障害児教育 ====
==== 379 社会教育 ====
=== 380 風俗習慣・民俗学・民族学 ===
==== 382 風俗史・民俗誌、民族誌 ====
==== 383 衣食住の習俗 ====
==== 384 社会・家庭生活の習俗 ====
==== 385 通過儀礼、冠婚葬祭 ====
==== 386 年中行事、祭礼 ====
==== 387 民間信仰、迷信(俗信) ====
==== 388 伝説、民話(昔話) ====
==== 389 民族学、文化人類学 ====
=== 390 国防・軍事 ===
==== 391 戦争、戦略、戦術 ====
==== 392 国防史・事情、軍事史・事情 ====
==== 393 国防政策・行政・法令 ====
==== 394 軍事医学、兵食 ====
==== 395 軍事施設、軍需品 ====
==== 396 陸軍 ====
==== 397 海軍 ====
==== 398 空軍 ====
==== 399 古代兵法、軍学 ====
-->
== 4類 自然科学 ==
<!--
=== 400 自然科学 ===
==== 401 科学理論・科学哲学 ====
==== 402 科学史・事情 ====
==== 403 参考図書 ====
==== 404 論文集・評論集・講演集 ====
==== 405 逐次刊行物 ====
==== 406 団体 ====
==== 407 研究法・指導法・科学教育 ====
==== 408 叢書・全集・選集 ====
==== 409 科学技術政策・科学技術行政 ====
-->
=== 410 数学 ===
* [[数学]]
* [[初等数学]]
* [[初等数学公式集]]{{進捗|25%|2005-05-04}}
* [[初等数学演習]]{{進捗|25%|2005-05-04}}
* [[初等数学記号集]]
* [[Wikibooks:初等数学用語索引|初等数学用語索引]]{{進捗|25%|2005-05-04}}
* [[中等数学]]
* [[高等数学]]
* [[大学数学公式集]]
==== 411 代数学 ====
===== 411.6 集合論 =====
*[[公理的集合論]]
==== 412 数論 ====
==== 413 解析学 ====
* [[解析学]]
* [[解析学基礎]]{{進捗|25%|2005-05-04}}
==== 414 幾何学 ====
==== 415 位相数学 ====
* [[位相幾何学]]{{進捗|25%|2008-09-03}}
==== 417 確率論、数理統計学 ====
* [[統計学基礎]]{{進捗|25%|2005-05-04}}
<!--
==== 418 計算法 ====
==== 419 和算、中国算法 ====
-->
=== 420 物理学 ===
*[[物理学]]
==== 421 理論物理学 ====
<!--
===== 421.1 基礎理論 エーテル理論 =====
-->
===== 421.2 相対性理論 =====
*[[特殊相対論]]
*[[一般相対性理論]]
===== 421.3 量子力学、量子論 =====
*[[場の量子論]]
*[[量子力学]]{{進捗|50%|2005-05-04}}
===== 421.4 統計力学 =====
*[[統計力学I]]
*[[統計力学II]]
===== 421.5 数理物理学.物理数学 =====
* [[物理数学I]] {{進捗|75%|2023-11-05}}
* [[物理数学II]]
==== 423 力学 ====
*[[解析力学]]
*[[古典力学]]{{進捗|50%|2005-05-04}}
==== 424 振動学、音響学 ====
*[[振動と波動]]
* [[音響学]]
==== 425 光学 ====
*[[光の偏極]]
==== 426 熱学 ====
*[[熱力学]]
==== 427 電磁気学 ====
*[[電磁気学]]
<!--
==== 428 物性物理学 ====
==== 429 原子物理学 ====
-->
=== 430 化学 ===
<!--
==== 431 物理化学. 理論化学 ====
==== 432 実験化学 ====
==== 433 分析化学 ====
==== 434 合成化学 ====
-->
==== 435 無機化学 ====
*[[無機化学]]{{進捗|25%|2005-05-04}}
<!--
==== 436 金属元素とその化合物 ====
-->
==== 437 有機化学 ====
*[[有機化学]]{{進捗|25%|2005-05-21}}
<!--
==== 438 環式化合物の化学 ====
==== 439 天然物質の化学 ====
-->
=== 440 天文学・宇宙科学 ===
* [[天文学]]{{進捗|25%|2005-12-01}}
<!--
==== 441 理論天文学・数理天文学 ====
==== 442 実地天文学・天体観測法 ====
==== 443 恒星・恒星天文学 ====
==== 444 太陽・太陽物理学 ====
==== 445 惑星・衛星 ====
==== 446 月 ====
==== 447 彗星・流星 ====
==== 448 地球・天文地理学 ====
==== 449 時法・暦学 ====
-->
=== 450 地球科学・地学 ===
* [[地球科学]]{{進捗|25%|2005-12-01}}
==== 451 気象学 ====
==== 452 海洋学 ====
==== 453 地震学 ====
===== 453.38 地震予知 =====
==== 454 地形学 ====
==== 455 地質学 ====
==== 456 地史学・層位学 ====
==== 457 古生物学・化石 ====
*[[古生物学]]
==== 458 岩石学 ====
==== 459 鉱物学 ====
=== 460 生物化学・一般生物学 ===
*[[生物学の研究技術]]{{進捗|25%|2005-05-04}}
<!--
==== 461 理論生物学・生命論 ====
==== 462 生物地理・生物誌 ====
==== 463 細胞学 ====
==== 464 生化学 ====
==== 465 微生物学 ====
==== 467 遺伝学 ====
===== 467.25 遺伝子組み換え =====
==== 468 生態学 ====
==== 469 人類学 ====
-->
=== 470 植物学 ===
*[[植物学]]{{進捗|25%|2005-05-04}}
<!--
==== 471 一般植物学 ====
==== 472 植物地理・植物誌 ====
==== 473 葉状植物 ====
==== 474 藻類・菌類 ====
==== 475 コケ植物 ====
==== 476 シダ植物 ====
==== 477 種子植物 ====
==== 478 裸子植物 ====
==== 479 被子植物 ====
=== 480 動物学 ===
==== 481 一般動物学 ====
==== 482 動物地理・動物誌 ====
==== 483 無脊椎動物 ====
==== 484 軟体動物・貝類学 ====
==== 485 節足動物 ====
==== 486 昆虫類 ====
==== 487 脊椎動物 ====
==== 488 鳥類 ====
==== 489 哺乳類 ====
-->
=== 490 医学 ===
* [[医学]]
*[[OsiriX_オンライン解説文書]]{{進捗|75%|2005-05-04}}
==== 491 基礎医学 ====
*[[生理学]]{{進捗|00%|2006-11-09}}
*[[解剖学]]{{進捗|25%|2006-11-09}}
*[[神経解剖学]]{{進捗|00%|2006-11-09}}
*[[組織学]]{{進捗|00%|2006-11-09}}
*[[微生物学]]{{進捗|00%|2006-11-09}}
*[[病理学]]{{進捗|00%|2006-11-09}}
<!--
==== 492 臨床医学 ====
-->
==== 493 内科学 ====
*[[内科学 呼吸器]]{{進捗|00%|2006-11-09}}
<!--
==== 494 外科学 ====
==== 495 産科学,婦人科学 ====
==== 496 眼科学,耳鼻咽喉科学 ====
==== 497 歯科学 ====
==== 498 衛生学,公衆衛生学,予防医学 ====
-->
==== 499 薬学 ====
*[[薬理学]]{{進捗|00%|2006-11-09}}
==5類 技術・工学・工業 ==
=== 500 技術・工学 ===
==== 501 工業基礎学 ====
==== 502 技術史・工学史 ====
==== 503 参考図書 ====
==== 504 論文集・評論集・講演集 ====
==== 505 逐次刊行物 ====
==== 506 団体 ====
==== 507 研究法・指導法・技術教育 ====
==== 508 叢書・全集・選集 ====
==== 509 工業・工業経済 ====
=== 510 建設工学・土木工学 ===
==== 511 土木力学・建設材料 ====
==== 512 測量 ====
==== 513 土木設計・施工法 ====
==== 514 道路工学 ====
==== 515 橋梁工学 ====
==== 516 鉄道工学 ====
==== 517 河海工学・河川工学 ====
==== 518 衛生工学・都市工学 ====
===== 518.523 ごみの再利用 =====
==== 519 公害・環境工学 ====
===== 519.12 環境法 =====
* [[環境法]]
=== 520 建築学 ===
==== 521 日本の建築 ====
==== 522 東洋の建築・アジアの建築 ====
==== 523 西洋の建築・その他の様式の建築 ====
==== 524 建築構造 ====
==== 525 建築計画・施工 ====
==== 526 各種の建築 ====
==== 527 住宅建築 ====
==== 528 建築設備・設備工学 ====
==== 529 建築意匠・装飾 ====
=== 530 機械工学・原子力工学 ===
==== 531 機械力学・材料・設計 ====
==== 532 機械工作・工作機械 ====
==== 533 熱機関・熱工学 ====
==== 534 流体機械・流体工学 ====
==== 535 精密機器・光学機器 ====
==== 536 運輸工学・車輌・運搬機械 ====
==== 537 自動車工学 ====
===== 537.25 電気自動車 =====
==== 538 航空宇宙工学 ====
==== 539 原子力工学 ====
=== 540 電気工学・電子工学 ===
==== 540 電気工学 ====
==== 541 電気回路・計測・材料 ====
==== 542 電気機器 ====
==== 543 発電 ====
==== 544 送電・変電・配電 ====
==== 545 電灯・照明・電熱 ====
==== 546 電気鉄道 ====
==== 547 通信工学・電気通信 ====
*[[スタイルシート言語]]
*[[AMPHTML]]
==== 548 情報工学 ====
==== 549 電子工学 ====
=== 550 海洋工学・船舶工学 ===
==== 551 理論造船学 ====
==== 552 船体構造・材料・施工 ====
==== 553 船体艤装・船舶設備 ====
==== 554 舶用機関[造機] ====
==== 555 船舶修理・保守 ====
==== 556 各種の船舶・艦艇 ====
==== 557 航海・航海学 ====
==== 558 海洋開発 ====
==== 559 兵器、軍事工学 ====
=== 560 金属工学・鉱山工学 ===
==== 561 採鉱・選鉱 ====
==== 562 各種の金属鉱床・採掘 ====
==== 563 冶金・合金 ====
==== 564 鉄鋼 ====
==== 565 非鉄金属 ====
==== 566 金属加工・製造冶金 ====
==== 567 石炭 ====
==== 568 石油 ====
==== 569 非金属鉱物・土石採取業 ====
=== 570 化学工業 ===
==== 571 化学工学・化学機器 ====
==== 572 電気化学工業 ====
==== 573 セラミックス・窯業・珪酸塩化学工業 ====
==== 574 化学薬品 ====
==== 575 燃料・爆発物 ====
==== 576 油脂類 ====
==== 577 染料 ====
==== 578 高分子化学工業 ====
==== 579 その他の化学工業 ====
=== 580 製造工業 ===
==== 581 金属製品 ====
==== 582 事務機器・家庭機器・楽器 ====
==== 583 木工業・木製品 ====
==== 584 皮革工業・皮革製品 ====
==== 585 パルプ・製紙工業 ====
==== 586 繊維工学 ====
==== 587 染色加工・染色業 ====
==== 588 食品工業 ====
==== 589 その他の雑工業 ====
=== 590 家政学・生活科学 ===
<!--
==== 591 家庭経済・経営 ====
==== 592 家庭理工学 ====
==== 593 衣服・裁縫 ====
==== 594 手芸 ====
==== 595 理容・美容 ====
===== 595.6 痩身法 =====
==== 596 食品・料理 ====
*[[料理本]]{{進捗|25%|2005-05-04}}
<!--
==== 597 住居・家具調度 ====
==== 598 家庭衛生 ====
==== 599 育児 ====
-->
==6類 産業 ==
<!--
=== 600 産業 ===
==== 601 産業政策・行政・総合開発 ====
==== 602 産業史・事情・物産誌 ====
==== 603 参考図書 ====
==== 604 論文集・評論集・講演集 ====
==== 605 逐次刊行物 ====
==== 606 団体 ====
==== 607 研究法・指導法・産業教育 ====
==== 608 叢書・全集・選集 ====
==== 609 度量衡、計量法 ====
=== 610 農業 ===
==== 611 農業経済 ====
==== 612 農業史・事情 ====
==== 613 農業基礎学 ====
==== 614 農業工学 ====
==== 615 作物栽培・作物学 ====
==== 616 食用作物 ====
==== 617 工芸作物 ====
==== 618 繊維作物 ====
==== 619 農産物製造・加工 ====
-->
=== 620 園芸 ===
<!--
==== 621 園芸経済・行政・経営 ====
==== 622 園芸史・事情 ====
==== 623 園芸植物学・病虫害 ====
==== 624 温室・温床・園芸用具 ====
==== 625 果樹園芸 ====
-->
==== 626 蔬菜園芸 ====
*[[ダイズの栽培]]{{進捗|00%|2007-02-21}}
==== 627 花卉園芸[草花] ====
*[[サボテンの栽培]]{{進捗|00%|2007-02-21}}
<!--
==== 628 園芸利用 ====
==== 629 造園 ====
=== 630 蚕糸業 ===
==== 631 蚕糸経済・行政・経営 ====
==== 632 蚕糸業史・事情 ====
==== 633 蚕学・蚕業基礎学 ====
==== 634 蚕種 ====
==== 635 飼育法 ====
==== 636 くわ・栽桑 ====
==== 637 蚕室・蚕具 ====
==== 638 まゆ ====
==== 639 製糸・生糸・蚕糸利用 ====
-->
=== 640 畜産業 ===
<!--
==== 641 畜産経済・行政・経営 ====
==== 642 畜産史・事情 ====
==== 643 家畜の繁殖・家畜飼料 ====
==== 644 家畜の管理・畜舎・用具 ====
==== 645 家畜・畜産動物各論 ====
-->
==== 646 家禽各論・飼鳥 ====
*[[ホンセイインコ類の飼育]]{{進捗|00%|2007-02-21}}
<!--
===== 646.9 みつばち・昆虫 =====
==== 648 畜産製造・畜産物 ====
==== 649 獣医学・比較医学 ====
==== 649 獣医学 ====
=== 650 林業 ===
==== 651 林業経済・行政・経営 ====
==== 652 森林史・林業史・事情 ====
==== 653 森林立地・造林 ====
==== 654 森林保護 ====
==== 655 森林施業 ====
==== 656 森林工学 ====
==== 657 森林利用・林産物・木材学 ====
==== 658 林産製造 ====
==== 659 狩猟 ====
=== 660 水産業 ===
==== 661 水産経済・行政・経営 ====
==== 662 水産業および漁業史・事情 ====
==== 663 水産基礎学 ====
==== 664 漁労・漁業各論 ====
==== 665 漁船・漁具 ====
==== 666 水産増殖・養殖業 ====
==== 667 水産製造・水産食品 ====
==== 668 水産物利用・水産利用工業 ====
==== 669 製塩・塩業 ====
=== 670 商業 ===
==== 671 商業政策・行政 ====
==== 672 商業史・事情 ====
==== 673 商業経営・商店 ====
==== 674 広告・宣伝 ====
==== 675 マーケティング ====
==== 676 取引所 ====
==== 678 貿易 ====
=== 680 運輸・交通 ===
==== 681 交通政策・行政・経営 ====
==== 682 交通史・事情 ====
==== 683 海運 ====
==== 684 内水・運河交通 ====
==== 685 陸運・自動車運送 ====
==== 686 鉄道 ====
==== 687 航空運送 ====
==== 688 倉庫業 ====
==== 689 観光事業 ====
=== 690 通信事業 ===
==== 691 通信政策・行政・法令 ====
==== 692 通信事業史・事情 ====
==== 693 郵便・郵政事業 ====
==== 694 電気通信事業 ====
==== 699 放送事業 ====
===== 699.39 アナウンサー =====
-->
== 7類 芸術 ==
<!--
=== 700 芸術・美術 ===
==== 701 芸術理論・美学 ====
==== 702 芸術史・美術史 ====
==== 703 参考図書[レファレンスブック] ====
==== 704 論文集・評論集・講演集 ====
==== 705 逐次刊行物 ====
==== 706 団体 ====
==== 707 研究法・指導法・芸術教育 ====
==== 708 叢書・全集・選集 ====
==== 709 芸術政策・文化財 ====
=== 710 彫刻 ===
==== 711 彫塑材料・技法 ====
==== 712 彫刻史・各国の彫刻 ====
==== 713 木彫 ====
==== 714 石彫 ====
==== 715 金属彫刻・鋳造 ====
==== 717 粘土彫刻・塑造 ====
==== 708 仏像 ====
==== 709 オブジェ ====
=== 720 絵画 ===
==== 721 日本画 ====
==== 722 東洋画 ====
==== 723 洋画 ====
==== 724 絵画材料・技法 ====
==== 725 素描・描画 ====
==== 726 漫画、挿絵、童画 ====
==== 727 グラフィックデザイン、図案 ====
==== 728 書道 ====
=== 730 版画 ===
==== 731 版画材料・技法 ====
==== 732 版画史・各国の版画 ====
==== 733 木版画 ====
==== 734 石版画 ====
==== 735 銅版画・鋼版画 ====
==== 736 リノリウム版画・ゴム版画 ====
==== 737 写真版画・孔版画 ====
==== 739 印章、篆刻、印譜 ====
-->
=== 740 写真 ===
<!--
==== 742 写真器械・材料 ====
==== 743 撮影技術 ====
-->
==== 744 現像・印画 ====
*[[白黒写真の暗室作業]]{{進捗|75%|2007-05-10}}
<!--
==== 745 複写技術 ====
==== 746 特殊写真 ====
==== 747 写真の応用 ====
==== 748 写真集 ====
==== 749 印刷 ====
=== 750 工芸 ===
==== 751 陶磁工芸 ====
==== 752 漆工芸 ====
==== 753 染織工芸 ====
==== 754 木竹工芸 ====
==== 755 宝石・牙角・皮革工芸 ====
==== 756 金工芸 ====
==== 757 デザイン・装飾美術 ====
==== 758 美術家具 ====
==== 759 人形・玩具 ====
-->
=== 760 音楽 ===
==== 761 音楽の一般理論・音楽学 ====
* [[楽典]]
* [[和声学]]
* [[楽式]]
==== 762 音楽史・各国の音楽 ====
* [[西洋音楽史]]
<!--
==== 763 楽器・器楽 ====
==== 764 器楽合奏 ====
==== 765 宗教音楽・聖楽 ====
==== 766 劇音楽 ====
==== 767 声楽 ====
==== 768 邦楽 ====
==== 769 舞踊、バレエ ====
=== 770 演劇 ===
==== 771 劇場・演出・演技 ====
==== 772 演劇史・各国の演劇 ====
==== 773 能楽、狂言 ====
==== 774 歌舞伎 ====
==== 775 各種の演劇 ====
==== 777 人形劇 ====
==== 778 映画 ====
==== 779 大衆演芸 ====
-->
=== 780 スポーツ・体育 ===
*[[スポーツ]]
==== 781 体操、遊戯 ====
==== 782 陸上競技 ====
*[[トライアスロン]]
==== 783 球技 ====
*[[サッカー]]{{進捗|25%|2006-1-7}}
*[[テニス]]{{進捗|25%|2006-1-7}}
*[[バドミントン]]
*[[野球]]{{進捗|25%|2006-1-7}}
*[[ボウリング]]
<!--
==== 784 冬季競技 ====
-->
==== 785 水上競技 ====
*[[セーリング]]{{進捗|25%|2006-1-7}}
==== 786 戸外レクリエーション ====
===== 786.1 登山・山岳競技 =====
*[[登山]]
==== 787 釣魚、遊猟 ====
==== 788 相撲、拳闘、競馬 ====
*[[相撲]]{{進捗|25%|2006-2-23}}
*[[競馬]]{{進捗|25%|2023-09-25}}
==== 789 武術 ====
*[[剣道]]{{進捗|25%|2007-6-30}}
=== 790 諸芸・娯楽 ===
<!--
==== 791 茶道 ====
==== 792 香道 ====
==== 793 花道 ====
==== 794 撞球 ====
-->
==== 795 囲碁 ====
*[[囲碁]]{{進捗|25%|2006-1-7}}
==== 796 将棋 ====
*[[将棋]]{{進捗|25%|2006-1-7}}
<!--
==== 797 射倖ゲーム ====
-->
==== 798 室内娯楽 ====
*[[トランプ]]<!--798.2-->
*[[トランプ/トランプ教科書]]
*[[麻雀]]{{進捗|25%|2006-1-7}}
*[[チェス]]{{進捗|25%|2006-1-7}}
===== 798.5 テレビゲーム =====
*[[Minecraft]]
<!--
==== 799 ダンス ====
-->
== 8類 言語 ==
=== 800 言語 ===
==== 801 言語学 ====
*[[生成文法]]
*[[語学]]
**[[琉球語]]
<!--
==== 809 言語生活 ====
-->
=== 810 日本語 ===
*[[日本語]]{{進捗|25%|2005-05-04}}
<!--
==== 811 音声、音韻、文字 ====
==== 812 語源、意味 ====
==== 813 辞典 ====
==== 814 語彙 ====
==== 815 文法、語法 ====
==== 816 文章、文体、作文 ====
==== 817 読本、解釈、会話 ====
-->
==== 818 方言、訛語 ====
*[[北海道方言]]
*[[讃岐弁]]
*[[沖縄語]]
<!--
=== 820 中国語 ===
-->
==== 829 その他の東洋の諸言語 ====
*[[朝鮮語]]{{進捗|25%|2005-05-04}}
*[[ペルシア語]]
=== 830 英語 ===
*[[英語]]{{進捗|50%|2005-05-04}}
=== 840 ドイツ語 ===
*[[ドイツ語]]{{進捗|50%|2005-05-04}}
<!--
==== 849 その他のゲルマン言語 ====
-->
=== 850 フランス語 ===
*[[フランス語]]{{進捗|25%|2005-05-04}}
<!--
==== 859 プロヴァンス語 ====
=== 860 スペイン語 ===
==== 869 ポルトガル語 ====
=== 870 イタリア語 ===
-->
==== 879 その他のロマンス諸語 ====
*[[ルーマニア語]]
<!--
=== 880 ロシア語 ===
==== 889 その他のスラヴ諸語 ====
=== 890 その他の諸言語 ===
-->
==== 891 ギリシア語 ====
*[[ギリシア語]]
==== 892 ラテン語 ====
*[[ラテン語]]{{進捗|50%|2006-03-21}}
==== 893 その他のヨーロッパの諸言語 ====
*[[デンマーク語]]{{進捗|25%|2005-12-01}}
<!--
==== 894 アフリカの諸言語 ====
==== 895 アメリカの諸言語 ====
==== 897 オーストラリアの諸言語 ====
-->
==== 899 国際語 ====
*[[エスペラント]]{{進捗|00%|2005-05-04}}
== 9類 文学 ==
=== 900 文学 ===
*[[古典文学]]{{進捗|25%|2005-05-15}}
<!--
==== 909 児童文学研究 ====
-->
=== 910 日本文学 ===
<!--
==== 911 詩歌 ====
==== 912 戯曲 ====
-->
==== 913 小説、物語 ====
*[[竹取物語]]{{進捗|25%|2005-05-04}}
==== 914 評論、エッセイ、随筆 ====
*[[方丈記]]
<!--
==== 915 日記、書簡、紀行 ====
==== 916 記録、手記、ルポルタージュ ====
==== 917 箴言、アフォリズム、寸言 ====
==== 918 作品集 ====
==== 919 漢詩文、日本漢文学 ====
-->
=== 920 中国文学 ===
*[[漢詩]]{{進捗|25%|2005-05-04}}
<!--
==== 929 その他の東洋文学 ====
=== 930 英文学・米文学 ===
=== 940 ドイツ文学 ===
==== 949 その他のゲルマン文学 ====
=== 950 フランス文学 ===
==== 959 プロヴァンス文学 ====
=== 960 スペイン文学 ===
==== 969 ポルトガル文学 ====
=== 970 イタリア文学 ===
==== 979 その他のロマンス文学 ====
=== 980 ロシア文学・ソヴィエト文学 ===
==== 989 その他のスラヴ文学 ====
-->
=== 990 その他の諸文学 ===
==== 991 ギリシア文学 ====
==== 992 ラテン文学 ====
*[[ガリア戦記]]
==== 993 その他のヨーロッパ文学 ====
==== 994 アフリカ文学 ====
==== 995 アメリカ先住民語の文学 ====
==== 997 オーストラリア先住民語の文学 ====
==== 999 国際語による文学 ====
== 関連項目 ==
*[[w:日本十進分類法#要目表(第3次区分表)]]
== 外部リンク ==
*<del>[http://www.ndl.go.jp/jp/library/data/zan9.html 日本十進分類法新訂9版分類基準]([http://www.ndl.go.jp/ 国立国会図書館])</del>リンク切れ
*[https://www.kotono8.com/wiki/%E6%97%A5%E6%9C%AC%E5%8D%81%E9%80%B2%E5%88%86%E9%A1%9E%E6%B3%95%EF%BC%88%E8%A9%B3%E7%B4%B0%EF%BC%89 閾ペディアことのは 日本十進分類法(詳細)]
[[Category:日本十進分類法|*]]
[[it:Wikibooks:Classificazione decimale Dewey]]
q486h1guzkqff7b9vnqr8jqfpmgurmw
301526
301525
2026-07-13T10:45:08Z
Tkkn46tkkn46
89925
/* 547 通信工学・電気通信 */ Internet Explorerを追加。547.4833でも。
301526
wikitext
text/x-wiki
__NOTOC__
[[メインページ|ウィキブックス]]の全ての書籍を[[:w:日本十進分類法|日本十進分類法]]に従って分類したものです。
{{進捗状況}}
== 0類 総記 ==
=== 000 総記 ===
*[[ウィキペディアの書き方]]
<!--
==== 002 知識・学問・学術 ====
-->
==== 007 情報科学 ====
*[[情報技術]]
<!--
===== 007.1 情報理論 =====
===== 007.2 歴史 事情 =====
===== 007.3 情報と社会 =====
===== 007.4 情報源 =====
===== 007.5 ドキュメンテーション 情報管理 =====
-->
===== 007.6 データ処理 情報処理 =====
*[[情報処理技術者試験の概要]]
*[[初級システムアドミニストレータ]]
<!--
====== 007.61 システム分析 システム設計 ======
-->
====== 007.63 コンピュータシステム ソフトウェア ======
*[[Freenet]]
*[[Google スライド]]
*[[Maxima]]
*[[Microsoft Office]]
*[[Mizar]]
*[[OpenOffice.org]]
*[[OSとアプリケーション]]
*[[TeX/LaTeX入門]]{{進捗|25%|2005-05-04}}
*[[vi]]
<!--
======= 007.632 エキスパートシステム =======
-->
====== 007.634 オペレーティングシステム ======
*[[ChromeOS]]
*[[Linuxシステム管理]]
*[[Linuxハードウェア]]
*[[MS-DOS/PC DOS入門]]{{進捗|50%|2005-05-04}}
*[[UNIX/Linux入門]]{{進捗|25%|2005-05-04}}
<!--
======= 007.635 漢字処理システム =======
-->
====== 007.637 図形処理ソフトウェア ======
* [[Inkscape]]
====== 007.64 コンピュータプログラミング ======
*[[機械語]]
*[[ゲームプログラミング]]
*[[数式処理システム]]
*[[ソフトウェア開発技術者]]
*[[プログラミング]]
*[[ASP.NET Core]]
*[[BASIC]]
*[[Blender 3D]]
*[[C言語]]{{進捗|25%|2005-05-04}}
*[[CPlusPlus|C++]]
*[[CSS]]{{進捗|00%|2005-06-17}}
*[[CGI]]{{進捗|25%|2005-05-04}}
*[[GNOMEフレームワーク]]
*[[Go]]
*[[Haskell]]
*[[HTML]]{{進捗|25%|2005-05-04}}
*[[Java]]{{進捗|25%|2005-05-04}}
*[[JavaScript]]{{進捗|25%|2005-05-04}}
*[[Lisp]]
*[[Node.js]]
*[[OpenGL]]
*[[OSS開発ツール]]
*[[Perl]]{{進捗|25%|2005-05-04}}
*[[PHP]]
*[[Ruby]]
*[[Scratch]]
*[[Scheme]]
*[[SVG]]
*[[Swift]]
*[[Xプログラミング]]
<!--
======= 007.642 CG技術 =======
====== 007.65 各種の記憶媒体 ======
====== 007.68 情報検索 機械検索 ======
-->
===== 007.7 情報システム =====
*[[LANとインターネット]]
*[[NTP入門]]
*[[TCP/IP入門]]
<!--
=== 010 図書館・図書館学 ===
==== 011 図書館政策・図書館行財政 ====
==== 012 図書館建築・図書館整備 ====
==== 013 図書館管理 ====
==== 014 資料の収集・資料の整理・資料の保管 ====
==== 015 図書館奉仕・図書館活動 ====
==== 016 各種の図書館 ====
==== 017 学校図書館 ====
==== 018 専門図書館 ====
==== 019 読書・読書法 ====
-->
=== 020 図書・書誌学 ===
==== 021 著作・編集 ====
===== 021.4 編集 編纂 =====
*[[ウィキペディアの書き方 入門編]]{{進捗|50%|2005-05-04}}
<!--
==== 022 写本・刊本・造本 ====
==== 023 出版 ====
-->
==== 024 図書の販売 ====
*[[同人誌即売会参加方法]]{{進捗|75%|2005-05-04}}
<!--
==== 025 一般書誌・全国書誌 ====
==== 026 稀書目録・善本目録 ====
==== 027 特種目録 ====
==== 028 選定図書目録・参考図書目録 ====
==== 029 蔵書目録・総合目録 ====
-->
=== 030 百科事典 ===
==== 031 日本語 ====
*[[w:mainpage|w:wikipedia]]
===== 031.3 日用便覧 =====
*[[ジョーク集]]
<!--
==== 039 用語索引<一般> ====
=== 040 一般論文集・一般講演集 ===
==== 041 日本語 ====
==== 049 雑著 ====
=== 050 逐次刊行物 ===
==== 051 日本の雑誌 ====
==== 059 一般年鑑 ====
=== 060 団体 ===
==== 061 学術・研究機関 ====
==== 063 文化交流機関 ====
==== 065 親睦団体・その他の団体 ====
==== 069 博物館 ====
=== 070 ジャーナリズム・新聞 ===
==== 071 日本 ====
=== 080 叢書・全集・選集 ===
==== 081 日本語 ====
==== 089 その他の諸言語 ====
=== 090 貴重書・郷土資料・その他の特別コレクション ===
-->
== 1類 哲学 ==
=== 100 哲学 ===
*[[哲学・思想]]{{進捗|00%|2005-05-04}}
<!--
==== 101 哲学理論 ====
==== 102 哲学史 ====
==== 103 参考図書 ====
==== 104 論文集・評論集・講演集 ====
==== 105 逐次刊行物 ====
==== 106 団体 ====
==== 107 研究法・指導法・哲学教育 ====
==== 108 叢集・全集・選集 ====
=== 110 哲学各論 ===
==== 111 形而上学・存在論 ====
==== 112 自然哲学・宇宙論 ====
==== 113 人生観・世界観 ====
==== 114 人間学 ====
==== 115 認識論 ====
==== 116 論理学・弁証法・方法論 ====
==== 117 価値哲学 ====
==== 118 文化哲学・技術哲学 ====
-->
=== 120 東洋思想 ===
==== 121 日本思想 ====
==== 122 中国思想・中国哲学 ====
*[[論語巻第一]]
==== 123 経書 ====
==== 124 先秦思想・諸子 ====
==== 125 中世思想・近代思想 ====
==== 126 インド哲学・バラモン教 ====
==== 129 その他のアジア・アラブ哲学 ====
<!--
=== 130 西洋哲学 ===
==== 131 古代哲学 ====
==== 132 中世哲学 ====
==== 133 近代哲学 ====
==== 134 ドイツ・オーストリア哲学 ====
==== 135 フランス・オランダ哲学 ====
==== 136 スペイン・ポルトガル哲学 ====
==== 137 イタリア哲学 ====
==== 138 ロシア哲学 ====
==== 139 その他の哲学 ====
-->
=== 140 心理学 ===
*[[心理学]]{{進捗|25%|2005-05-04}}
<!--
==== 141 普通心理学・心理各論 ====
==== 143 発達心理学 ====
==== 145 異常心理学 ====
==== 146 臨床心理学・精神分析学 ====
==== 147 超心理学・心霊研究 ====
==== 148 相法・易占 ====
==== 149 応用心理学 ====
-->
=== 150 倫理学・道徳 ===
*[[倫理学]]
==== 151 倫理各論 ====
==== 152 家庭倫理・性倫理 ====
==== 153 職業倫理 ====
==== 154 社会倫理 ====
==== 155 国体論・詔勅 ====
==== 156 武士道 ====
==== 157 報徳教・石門心学 ====
==== 158 その他の特定主題 ====
==== 159 人生訓・教訓 ====
<!--
=== 160 宗教 ===
==== 161 宗教学・宗教思想 ====
==== 162 宗教史・事情 ====
==== 163 原始宗教・宗教民族学 ====
==== 164 神話・神話学 ====
===== 164.31 ギリシャ神話 =====
==== 165 比較宗教 ====
==== 166 道教 ====
==== 167 イスラーム ====
==== 168 ヒンドゥー教・ジャイナ教 ====
==== 169 その他の宗教・新興宗教 ====
=== 170 神道 ===
==== 171 神道思想・神道説 ====
==== 172 神祇・神道史 ====
==== 173 神典 ====
==== 174 信仰録・説教集 ====
==== 175 神社・神職 ====
==== 176 祭祀 ====
==== 177 布教・伝道 ====
==== 178 各教派・教派神道 ====
=== 180 仏教 ===
==== 181 仏教教理・仏教哲学 ====
==== 182 仏教史 ====
==== 183 経典 ====
==== 184 法話・説教集 ====
==== 185 寺院・僧職 ====
==== 186 仏会 ====
==== 187 布教・伝道 ====
==== 188 各宗 ====
=== 190 キリスト教 ===
==== 191 教義・キリスト教神学 ====
==== 192 キリスト教史・迫害史 ====
==== 193 聖書 ====
==== 194 信仰録・説教集 ====
==== 195 教会・聖職 ====
==== 196 典礼・祭式・礼拝 ====
==== 197 布教・伝道 ====
==== 198 各教派・教会史 ====
==== 199 ユダヤ教 ====
-->
== 2類 歴史 ==
=== 200 歴史 ===
==== 201 歴史学 ====
*[[歴史学]]
<!--
==== 202 歴史補助学 ====
==== 203 参考図書 ====
==== 204 論文集・評論集・講演集 ====
==== 205 逐次刊行物 ====
==== 206 団体 ====
==== 207 研究法・指導法・歴史教育 ====
==== 208 叢書・全集・選集 ====
-->
==== 209 世界史・文化史 ====
*[[世界史]]{{進捗|25%|2005-05-04}}
=== 210 日本史 ===
*[[日本史]]{{進捗|25%|2005-05-04}}
<!--
===== 210.027 古銭学 =====
==== 211 北海道地方 ====
==== 212 東北地方 ====
==== 213 関東地方 ====
==== 214 北陸地方 ====
==== 215 中部地方 ====
==== 216 近畿地方 ====
==== 217 中国地方 ====
==== 218 四国地方 ====
==== 219 九州地方 ====
-->
=== 220 アジア史・東洋史 ===
<!--
==== 221 朝鮮 ====
-->
==== 222 中国 ====
*[[中国史]]{{進捗|25%|2005-12-01}}
<!--
==== 223 東南アジア ====
==== 224 インドネシア ====
==== 225 インド ====
===== 225.97 モルジブ =====
==== 229 アジアロシア ====
=== 230 ヨーロッパ史・西洋史 ===
==== 231 古代ギリシア ====
==== 232 古代ローマ ====
==== 233 イギリス・英国 ====
==== 234 ドイツ・中欧 ====
==== 235 フランス ====
==== 236 スペイン イスパニア ====
==== 237 イタリア ====
==== 238 ロシア ソビエト連邦 独立国家共同体 ====
==== 239 バルカン諸国 ====
=== 240 アフリカ史 ===
==== 241 北アフリカ ====
==== 242 エジプト ====
==== 243 バーバリ諸国 ====
==== 244 西アフリカ ====
==== 245 東アフリカ ====
==== 248 南アフリカ ====
==== 249 インド洋のアフリカ諸島 ====
=== 250 北アメリカ史 ===
==== 251 カナダ ====
==== 253 アメリカ合衆国 ====
==== 255 ラテンアメリカ 中南米 ====
==== 256 メキシコ ====
==== 257 中央アメリカ 中米諸国 ====
==== 259 西インド諸島 ====
=== 260 南アメリカ史 ===
==== 261 北部諸国 カリブ沿海諸国 ====
==== 262 ブラジル ====
==== 263 パラグアイ ====
==== 264 ウルグアイ ====
==== 265 アルゼンチン ====
==== 266 チリ ====
==== 267 ボリビア ====
==== 268 ペルー ====
=== 270 オセアニア史・両極地方史 ===
==== 271 オーストラリア ====
==== 272 ニュージーランド ====
==== 273 メラネシア ====
==== 274 ミクロネシア ====
==== 275 ポリネシア ====
==== 276 ハワイ ====
==== 277 両極地方 ====
==== 278 北極 北極地方 ====
==== 279 南極 南極地方 ====
=== 280 伝記 ===
==== 281 日本 ====
==== 282 アジア ====
==== 283 ヨーロッパ ====
==== 284 アフリカ ====
==== 285 北アフリカ ====
==== 286 南アフリカ ====
==== 287 オセアニア・両極地方 ====
==== 288 系譜・家史・皇室 ====
==== 289 個人伝記 ====
-->
=== 290 地理・地誌・紀行 ===
*[[地理学]]{{進捗|00%|2005-05-04}}
<!--
==== 290.93 旅行案内記 ====
-->
== 3類 社会科学 ==
<!--
=== 300 社会科学 ===
==== 301 理論・方法論 ====
==== 302 政治・経済・社会・文化事情 ====
==== 303 参考図書 ====
==== 304 論文集・評論集・講演集 ====
==== 305 逐次刊行物 ====
==== 306 団体 ====
==== 307 研究法・指導法・社会科学教育 ====
==== 308 叢書・全集・選集 ====
==== 309 社会思想 ====
=== 310 政治 ===
==== 311 政治学 ====
==== 312 政治史・事情 ====
==== 313 国家の形態・政治体制 ====
==== 314 議会 ====
==== 315 政党・政治結社 ====
==== 316 国家と個人・宗教・民族 ====
==== 317 行政 ====
==== 318 地方自治・地方行政 ====
==== 319 外交・国際問題 ====
-->
=== 320 法律 ===
==== 321 法学 ====
*[[法学]]{{進捗|25%|2005-05-04}}
==== 322 法制史 ====
*[[法制史]]
==== 323 憲法 ====
*[[憲法]]
==== 324 民法 ====
*[[民法]]
==== 325 商法 ====
*[[商法]]
==== 326 刑法・刑事法 ====
*[[刑法]]
==== 327 司法・訴訟手続法 ====
*[[民事訴訟法]]
*[[刑事訴訟法]]
==== 328 諸法 ====
*[[教育基本法]]
*[[知的財産権法]]
==== 329 国際法 ====
*[[国際法]]
=== 330 経済 ===
==== 331 経済学・経済思想 ====
*[[経済学]]{{進捗|25%|2005-05-04}}
*[[経済学基礎]]
==== 332 経済史・事情・経済体制 ====
==== 333 経済政策・国際経済 ====
==== 334 人口・土地・資源 ====
==== 335 企業・経営 ====
==== 336 経営管理 ====
*[[公認会計士試験]]
==== 337 貨幣・通貨 ====
==== 338 金融・銀行・信託 ====
==== 339 保険 ====
=== 340 財政 ===
<!--
==== 341 財政学・財政思想 ====
==== 342 財政史・事情 ====
==== 343 財政政策・財政行政 ====
==== 344 予算・決算 ====
==== 345 租税 ====
==== 347 公債・国債 ====
==== 348 専売・国有財産 ====
==== 349 地方財政 ====
=== 350 統計 ===
==== 351 日本 ====
==== 358 人口統計・国勢調査 ====
==== 359 各種の統計書 ====
-->
=== 360 社会 ===
<!--
==== 361 社会学 ====
==== 362 社会史・社会体制 ====
==== 364 社会保障 ====
==== 365 生活・消費者問題 ====
==== 366 労働経済・労働問題 ====
==== 367 家族問題、男性・女性問題、老人問題 ====
==== 368 社会病理 ====
-->
==== 369 社会福祉 ====
===== 369.3 災害 災害救助 =====
*[[防災]]{{進捗|25%|2006-04-06}}
=== 370 教育 ===
<!--
==== 371 教育学、教育思想 ====
===== 371.42 登校拒否・いじめ =====
-->
==== 372 教育史・事情 ====
*[[教育勅語]]{{進捗|75%|2005-05-04}}
<!--
==== 373 教育政策、教育制度、教育行財政 ====
-->
==== 374 学校経営・管理、学校保健 ====
===== 374.48 学校行事 =====
*[[運動会]]
==== 375 教育課程、学習指導、教科別教育 ====
*[[学校教育]]{{進捗|25%|2005-05-04}}
*[[生活と進路]]{{進捗|50%|2005-05-04}}
===== 374.9 教科書、教科書検定 =====
*[[小学校の学習]]{{進捗|50%|2023-09-25}}
*[[中学校の学習]]{{進捗|50%|2023-09-25}}
*[[高等学校の学習]]{{進捗|00%|2023-09-25}}
**[[高等学校の学習/旧課程]]{{進捗|25%|2023-09-25}}
<!--
* [[小学校算数]] {{進捗|25%|2005-05-04}}
* [[中学校数学]] {{進捗|50%|2005-05-10}}
* [[高等学校世界史A]] {{進捗|25%|2015-08-30}}
* [[高等学校地理B]] {{進捗|25%|2005-11-1}}
* [[高等学校現代社会]] {{進捗|25%|2015-08-30}}
* [[高等学校政治経済]] {{進捗|50%|2015-08-30}}
*[[高等学校倫理]]
*[[高等学校数学]]
*[[高等学校数学基礎]]{{進捗|100%|2005-05-04}}
*[[高等学校数学I]]{{進捗|50%|2005-05-04}}
*[[高等学校数学III]]{{進捗|50%|2005-05-04}}
*[[高等学校数学B]]{{進捗|50%|2005-05-04}}
*[[高等学校数学C]]{{進捗|50%|2005-05-04}}
*[[高等学校理科総合B]]{{進捗|50%|2005-05-04}}
*[[高等学校物理]]{{進捗|50%|2005-11-1}}
* [[高等学校化学]] {{進捗|50%|2015-08-30}}
* [[高等学校生物]] {{進捗|50%|2015-08-30}}
* [[高等学校地学]] {{進捗|25%|2015-08-30}}
*[[高等学校情報A]]
*[[高等学校情報B]]
*[[高等学校情報C]]
-->
*[[小・中・高等学校演習]]
*[[検定教科書]]
==== 376 幼児・初等・中等教育 ====
*[[小学校・中学校・高等学校の学習]]
==== 377 大学、高等・専門教育、学術行政 ====
* [[大学受験ガイド]] {{進捗|50%|2015-08-30}}
<!--
==== 378 障害児教育 ====
==== 379 社会教育 ====
=== 380 風俗習慣・民俗学・民族学 ===
==== 382 風俗史・民俗誌、民族誌 ====
==== 383 衣食住の習俗 ====
==== 384 社会・家庭生活の習俗 ====
==== 385 通過儀礼、冠婚葬祭 ====
==== 386 年中行事、祭礼 ====
==== 387 民間信仰、迷信(俗信) ====
==== 388 伝説、民話(昔話) ====
==== 389 民族学、文化人類学 ====
=== 390 国防・軍事 ===
==== 391 戦争、戦略、戦術 ====
==== 392 国防史・事情、軍事史・事情 ====
==== 393 国防政策・行政・法令 ====
==== 394 軍事医学、兵食 ====
==== 395 軍事施設、軍需品 ====
==== 396 陸軍 ====
==== 397 海軍 ====
==== 398 空軍 ====
==== 399 古代兵法、軍学 ====
-->
== 4類 自然科学 ==
<!--
=== 400 自然科学 ===
==== 401 科学理論・科学哲学 ====
==== 402 科学史・事情 ====
==== 403 参考図書 ====
==== 404 論文集・評論集・講演集 ====
==== 405 逐次刊行物 ====
==== 406 団体 ====
==== 407 研究法・指導法・科学教育 ====
==== 408 叢書・全集・選集 ====
==== 409 科学技術政策・科学技術行政 ====
-->
=== 410 数学 ===
* [[数学]]
* [[初等数学]]
* [[初等数学公式集]]{{進捗|25%|2005-05-04}}
* [[初等数学演習]]{{進捗|25%|2005-05-04}}
* [[初等数学記号集]]
* [[Wikibooks:初等数学用語索引|初等数学用語索引]]{{進捗|25%|2005-05-04}}
* [[中等数学]]
* [[高等数学]]
* [[大学数学公式集]]
==== 411 代数学 ====
===== 411.6 集合論 =====
*[[公理的集合論]]
==== 412 数論 ====
==== 413 解析学 ====
* [[解析学]]
* [[解析学基礎]]{{進捗|25%|2005-05-04}}
==== 414 幾何学 ====
==== 415 位相数学 ====
* [[位相幾何学]]{{進捗|25%|2008-09-03}}
==== 417 確率論、数理統計学 ====
* [[統計学基礎]]{{進捗|25%|2005-05-04}}
<!--
==== 418 計算法 ====
==== 419 和算、中国算法 ====
-->
=== 420 物理学 ===
*[[物理学]]
==== 421 理論物理学 ====
<!--
===== 421.1 基礎理論 エーテル理論 =====
-->
===== 421.2 相対性理論 =====
*[[特殊相対論]]
*[[一般相対性理論]]
===== 421.3 量子力学、量子論 =====
*[[場の量子論]]
*[[量子力学]]{{進捗|50%|2005-05-04}}
===== 421.4 統計力学 =====
*[[統計力学I]]
*[[統計力学II]]
===== 421.5 数理物理学.物理数学 =====
* [[物理数学I]] {{進捗|75%|2023-11-05}}
* [[物理数学II]]
==== 423 力学 ====
*[[解析力学]]
*[[古典力学]]{{進捗|50%|2005-05-04}}
==== 424 振動学、音響学 ====
*[[振動と波動]]
* [[音響学]]
==== 425 光学 ====
*[[光の偏極]]
==== 426 熱学 ====
*[[熱力学]]
==== 427 電磁気学 ====
*[[電磁気学]]
<!--
==== 428 物性物理学 ====
==== 429 原子物理学 ====
-->
=== 430 化学 ===
<!--
==== 431 物理化学. 理論化学 ====
==== 432 実験化学 ====
==== 433 分析化学 ====
==== 434 合成化学 ====
-->
==== 435 無機化学 ====
*[[無機化学]]{{進捗|25%|2005-05-04}}
<!--
==== 436 金属元素とその化合物 ====
-->
==== 437 有機化学 ====
*[[有機化学]]{{進捗|25%|2005-05-21}}
<!--
==== 438 環式化合物の化学 ====
==== 439 天然物質の化学 ====
-->
=== 440 天文学・宇宙科学 ===
* [[天文学]]{{進捗|25%|2005-12-01}}
<!--
==== 441 理論天文学・数理天文学 ====
==== 442 実地天文学・天体観測法 ====
==== 443 恒星・恒星天文学 ====
==== 444 太陽・太陽物理学 ====
==== 445 惑星・衛星 ====
==== 446 月 ====
==== 447 彗星・流星 ====
==== 448 地球・天文地理学 ====
==== 449 時法・暦学 ====
-->
=== 450 地球科学・地学 ===
* [[地球科学]]{{進捗|25%|2005-12-01}}
==== 451 気象学 ====
==== 452 海洋学 ====
==== 453 地震学 ====
===== 453.38 地震予知 =====
==== 454 地形学 ====
==== 455 地質学 ====
==== 456 地史学・層位学 ====
==== 457 古生物学・化石 ====
*[[古生物学]]
==== 458 岩石学 ====
==== 459 鉱物学 ====
=== 460 生物化学・一般生物学 ===
*[[生物学の研究技術]]{{進捗|25%|2005-05-04}}
<!--
==== 461 理論生物学・生命論 ====
==== 462 生物地理・生物誌 ====
==== 463 細胞学 ====
==== 464 生化学 ====
==== 465 微生物学 ====
==== 467 遺伝学 ====
===== 467.25 遺伝子組み換え =====
==== 468 生態学 ====
==== 469 人類学 ====
-->
=== 470 植物学 ===
*[[植物学]]{{進捗|25%|2005-05-04}}
<!--
==== 471 一般植物学 ====
==== 472 植物地理・植物誌 ====
==== 473 葉状植物 ====
==== 474 藻類・菌類 ====
==== 475 コケ植物 ====
==== 476 シダ植物 ====
==== 477 種子植物 ====
==== 478 裸子植物 ====
==== 479 被子植物 ====
=== 480 動物学 ===
==== 481 一般動物学 ====
==== 482 動物地理・動物誌 ====
==== 483 無脊椎動物 ====
==== 484 軟体動物・貝類学 ====
==== 485 節足動物 ====
==== 486 昆虫類 ====
==== 487 脊椎動物 ====
==== 488 鳥類 ====
==== 489 哺乳類 ====
-->
=== 490 医学 ===
* [[医学]]
*[[OsiriX_オンライン解説文書]]{{進捗|75%|2005-05-04}}
==== 491 基礎医学 ====
*[[生理学]]{{進捗|00%|2006-11-09}}
*[[解剖学]]{{進捗|25%|2006-11-09}}
*[[神経解剖学]]{{進捗|00%|2006-11-09}}
*[[組織学]]{{進捗|00%|2006-11-09}}
*[[微生物学]]{{進捗|00%|2006-11-09}}
*[[病理学]]{{進捗|00%|2006-11-09}}
<!--
==== 492 臨床医学 ====
-->
==== 493 内科学 ====
*[[内科学 呼吸器]]{{進捗|00%|2006-11-09}}
<!--
==== 494 外科学 ====
==== 495 産科学,婦人科学 ====
==== 496 眼科学,耳鼻咽喉科学 ====
==== 497 歯科学 ====
==== 498 衛生学,公衆衛生学,予防医学 ====
-->
==== 499 薬学 ====
*[[薬理学]]{{進捗|00%|2006-11-09}}
==5類 技術・工学・工業 ==
=== 500 技術・工学 ===
==== 501 工業基礎学 ====
==== 502 技術史・工学史 ====
==== 503 参考図書 ====
==== 504 論文集・評論集・講演集 ====
==== 505 逐次刊行物 ====
==== 506 団体 ====
==== 507 研究法・指導法・技術教育 ====
==== 508 叢書・全集・選集 ====
==== 509 工業・工業経済 ====
=== 510 建設工学・土木工学 ===
==== 511 土木力学・建設材料 ====
==== 512 測量 ====
==== 513 土木設計・施工法 ====
==== 514 道路工学 ====
==== 515 橋梁工学 ====
==== 516 鉄道工学 ====
==== 517 河海工学・河川工学 ====
==== 518 衛生工学・都市工学 ====
===== 518.523 ごみの再利用 =====
==== 519 公害・環境工学 ====
===== 519.12 環境法 =====
* [[環境法]]
=== 520 建築学 ===
==== 521 日本の建築 ====
==== 522 東洋の建築・アジアの建築 ====
==== 523 西洋の建築・その他の様式の建築 ====
==== 524 建築構造 ====
==== 525 建築計画・施工 ====
==== 526 各種の建築 ====
==== 527 住宅建築 ====
==== 528 建築設備・設備工学 ====
==== 529 建築意匠・装飾 ====
=== 530 機械工学・原子力工学 ===
==== 531 機械力学・材料・設計 ====
==== 532 機械工作・工作機械 ====
==== 533 熱機関・熱工学 ====
==== 534 流体機械・流体工学 ====
==== 535 精密機器・光学機器 ====
==== 536 運輸工学・車輌・運搬機械 ====
==== 537 自動車工学 ====
===== 537.25 電気自動車 =====
==== 538 航空宇宙工学 ====
==== 539 原子力工学 ====
=== 540 電気工学・電子工学 ===
==== 540 電気工学 ====
==== 541 電気回路・計測・材料 ====
==== 542 電気機器 ====
==== 543 発電 ====
==== 544 送電・変電・配電 ====
==== 545 電灯・照明・電熱 ====
==== 546 電気鉄道 ====
==== 547 通信工学・電気通信 ====
*[[スタイルシート言語]]
*[[AMPHTML]]
*[[Internet Explorer]]
==== 548 情報工学 ====
==== 549 電子工学 ====
=== 550 海洋工学・船舶工学 ===
==== 551 理論造船学 ====
==== 552 船体構造・材料・施工 ====
==== 553 船体艤装・船舶設備 ====
==== 554 舶用機関[造機] ====
==== 555 船舶修理・保守 ====
==== 556 各種の船舶・艦艇 ====
==== 557 航海・航海学 ====
==== 558 海洋開発 ====
==== 559 兵器、軍事工学 ====
=== 560 金属工学・鉱山工学 ===
==== 561 採鉱・選鉱 ====
==== 562 各種の金属鉱床・採掘 ====
==== 563 冶金・合金 ====
==== 564 鉄鋼 ====
==== 565 非鉄金属 ====
==== 566 金属加工・製造冶金 ====
==== 567 石炭 ====
==== 568 石油 ====
==== 569 非金属鉱物・土石採取業 ====
=== 570 化学工業 ===
==== 571 化学工学・化学機器 ====
==== 572 電気化学工業 ====
==== 573 セラミックス・窯業・珪酸塩化学工業 ====
==== 574 化学薬品 ====
==== 575 燃料・爆発物 ====
==== 576 油脂類 ====
==== 577 染料 ====
==== 578 高分子化学工業 ====
==== 579 その他の化学工業 ====
=== 580 製造工業 ===
==== 581 金属製品 ====
==== 582 事務機器・家庭機器・楽器 ====
==== 583 木工業・木製品 ====
==== 584 皮革工業・皮革製品 ====
==== 585 パルプ・製紙工業 ====
==== 586 繊維工学 ====
==== 587 染色加工・染色業 ====
==== 588 食品工業 ====
==== 589 その他の雑工業 ====
=== 590 家政学・生活科学 ===
<!--
==== 591 家庭経済・経営 ====
==== 592 家庭理工学 ====
==== 593 衣服・裁縫 ====
==== 594 手芸 ====
==== 595 理容・美容 ====
===== 595.6 痩身法 =====
==== 596 食品・料理 ====
*[[料理本]]{{進捗|25%|2005-05-04}}
<!--
==== 597 住居・家具調度 ====
==== 598 家庭衛生 ====
==== 599 育児 ====
-->
==6類 産業 ==
<!--
=== 600 産業 ===
==== 601 産業政策・行政・総合開発 ====
==== 602 産業史・事情・物産誌 ====
==== 603 参考図書 ====
==== 604 論文集・評論集・講演集 ====
==== 605 逐次刊行物 ====
==== 606 団体 ====
==== 607 研究法・指導法・産業教育 ====
==== 608 叢書・全集・選集 ====
==== 609 度量衡、計量法 ====
=== 610 農業 ===
==== 611 農業経済 ====
==== 612 農業史・事情 ====
==== 613 農業基礎学 ====
==== 614 農業工学 ====
==== 615 作物栽培・作物学 ====
==== 616 食用作物 ====
==== 617 工芸作物 ====
==== 618 繊維作物 ====
==== 619 農産物製造・加工 ====
-->
=== 620 園芸 ===
<!--
==== 621 園芸経済・行政・経営 ====
==== 622 園芸史・事情 ====
==== 623 園芸植物学・病虫害 ====
==== 624 温室・温床・園芸用具 ====
==== 625 果樹園芸 ====
-->
==== 626 蔬菜園芸 ====
*[[ダイズの栽培]]{{進捗|00%|2007-02-21}}
==== 627 花卉園芸[草花] ====
*[[サボテンの栽培]]{{進捗|00%|2007-02-21}}
<!--
==== 628 園芸利用 ====
==== 629 造園 ====
=== 630 蚕糸業 ===
==== 631 蚕糸経済・行政・経営 ====
==== 632 蚕糸業史・事情 ====
==== 633 蚕学・蚕業基礎学 ====
==== 634 蚕種 ====
==== 635 飼育法 ====
==== 636 くわ・栽桑 ====
==== 637 蚕室・蚕具 ====
==== 638 まゆ ====
==== 639 製糸・生糸・蚕糸利用 ====
-->
=== 640 畜産業 ===
<!--
==== 641 畜産経済・行政・経営 ====
==== 642 畜産史・事情 ====
==== 643 家畜の繁殖・家畜飼料 ====
==== 644 家畜の管理・畜舎・用具 ====
==== 645 家畜・畜産動物各論 ====
-->
==== 646 家禽各論・飼鳥 ====
*[[ホンセイインコ類の飼育]]{{進捗|00%|2007-02-21}}
<!--
===== 646.9 みつばち・昆虫 =====
==== 648 畜産製造・畜産物 ====
==== 649 獣医学・比較医学 ====
==== 649 獣医学 ====
=== 650 林業 ===
==== 651 林業経済・行政・経営 ====
==== 652 森林史・林業史・事情 ====
==== 653 森林立地・造林 ====
==== 654 森林保護 ====
==== 655 森林施業 ====
==== 656 森林工学 ====
==== 657 森林利用・林産物・木材学 ====
==== 658 林産製造 ====
==== 659 狩猟 ====
=== 660 水産業 ===
==== 661 水産経済・行政・経営 ====
==== 662 水産業および漁業史・事情 ====
==== 663 水産基礎学 ====
==== 664 漁労・漁業各論 ====
==== 665 漁船・漁具 ====
==== 666 水産増殖・養殖業 ====
==== 667 水産製造・水産食品 ====
==== 668 水産物利用・水産利用工業 ====
==== 669 製塩・塩業 ====
=== 670 商業 ===
==== 671 商業政策・行政 ====
==== 672 商業史・事情 ====
==== 673 商業経営・商店 ====
==== 674 広告・宣伝 ====
==== 675 マーケティング ====
==== 676 取引所 ====
==== 678 貿易 ====
=== 680 運輸・交通 ===
==== 681 交通政策・行政・経営 ====
==== 682 交通史・事情 ====
==== 683 海運 ====
==== 684 内水・運河交通 ====
==== 685 陸運・自動車運送 ====
==== 686 鉄道 ====
==== 687 航空運送 ====
==== 688 倉庫業 ====
==== 689 観光事業 ====
=== 690 通信事業 ===
==== 691 通信政策・行政・法令 ====
==== 692 通信事業史・事情 ====
==== 693 郵便・郵政事業 ====
==== 694 電気通信事業 ====
==== 699 放送事業 ====
===== 699.39 アナウンサー =====
-->
== 7類 芸術 ==
<!--
=== 700 芸術・美術 ===
==== 701 芸術理論・美学 ====
==== 702 芸術史・美術史 ====
==== 703 参考図書[レファレンスブック] ====
==== 704 論文集・評論集・講演集 ====
==== 705 逐次刊行物 ====
==== 706 団体 ====
==== 707 研究法・指導法・芸術教育 ====
==== 708 叢書・全集・選集 ====
==== 709 芸術政策・文化財 ====
=== 710 彫刻 ===
==== 711 彫塑材料・技法 ====
==== 712 彫刻史・各国の彫刻 ====
==== 713 木彫 ====
==== 714 石彫 ====
==== 715 金属彫刻・鋳造 ====
==== 717 粘土彫刻・塑造 ====
==== 708 仏像 ====
==== 709 オブジェ ====
=== 720 絵画 ===
==== 721 日本画 ====
==== 722 東洋画 ====
==== 723 洋画 ====
==== 724 絵画材料・技法 ====
==== 725 素描・描画 ====
==== 726 漫画、挿絵、童画 ====
==== 727 グラフィックデザイン、図案 ====
==== 728 書道 ====
=== 730 版画 ===
==== 731 版画材料・技法 ====
==== 732 版画史・各国の版画 ====
==== 733 木版画 ====
==== 734 石版画 ====
==== 735 銅版画・鋼版画 ====
==== 736 リノリウム版画・ゴム版画 ====
==== 737 写真版画・孔版画 ====
==== 739 印章、篆刻、印譜 ====
-->
=== 740 写真 ===
<!--
==== 742 写真器械・材料 ====
==== 743 撮影技術 ====
-->
==== 744 現像・印画 ====
*[[白黒写真の暗室作業]]{{進捗|75%|2007-05-10}}
<!--
==== 745 複写技術 ====
==== 746 特殊写真 ====
==== 747 写真の応用 ====
==== 748 写真集 ====
==== 749 印刷 ====
=== 750 工芸 ===
==== 751 陶磁工芸 ====
==== 752 漆工芸 ====
==== 753 染織工芸 ====
==== 754 木竹工芸 ====
==== 755 宝石・牙角・皮革工芸 ====
==== 756 金工芸 ====
==== 757 デザイン・装飾美術 ====
==== 758 美術家具 ====
==== 759 人形・玩具 ====
-->
=== 760 音楽 ===
==== 761 音楽の一般理論・音楽学 ====
* [[楽典]]
* [[和声学]]
* [[楽式]]
==== 762 音楽史・各国の音楽 ====
* [[西洋音楽史]]
<!--
==== 763 楽器・器楽 ====
==== 764 器楽合奏 ====
==== 765 宗教音楽・聖楽 ====
==== 766 劇音楽 ====
==== 767 声楽 ====
==== 768 邦楽 ====
==== 769 舞踊、バレエ ====
=== 770 演劇 ===
==== 771 劇場・演出・演技 ====
==== 772 演劇史・各国の演劇 ====
==== 773 能楽、狂言 ====
==== 774 歌舞伎 ====
==== 775 各種の演劇 ====
==== 777 人形劇 ====
==== 778 映画 ====
==== 779 大衆演芸 ====
-->
=== 780 スポーツ・体育 ===
*[[スポーツ]]
==== 781 体操、遊戯 ====
==== 782 陸上競技 ====
*[[トライアスロン]]
==== 783 球技 ====
*[[サッカー]]{{進捗|25%|2006-1-7}}
*[[テニス]]{{進捗|25%|2006-1-7}}
*[[バドミントン]]
*[[野球]]{{進捗|25%|2006-1-7}}
*[[ボウリング]]
<!--
==== 784 冬季競技 ====
-->
==== 785 水上競技 ====
*[[セーリング]]{{進捗|25%|2006-1-7}}
==== 786 戸外レクリエーション ====
===== 786.1 登山・山岳競技 =====
*[[登山]]
==== 787 釣魚、遊猟 ====
==== 788 相撲、拳闘、競馬 ====
*[[相撲]]{{進捗|25%|2006-2-23}}
*[[競馬]]{{進捗|25%|2023-09-25}}
==== 789 武術 ====
*[[剣道]]{{進捗|25%|2007-6-30}}
=== 790 諸芸・娯楽 ===
<!--
==== 791 茶道 ====
==== 792 香道 ====
==== 793 花道 ====
==== 794 撞球 ====
-->
==== 795 囲碁 ====
*[[囲碁]]{{進捗|25%|2006-1-7}}
==== 796 将棋 ====
*[[将棋]]{{進捗|25%|2006-1-7}}
<!--
==== 797 射倖ゲーム ====
-->
==== 798 室内娯楽 ====
*[[トランプ]]<!--798.2-->
*[[トランプ/トランプ教科書]]
*[[麻雀]]{{進捗|25%|2006-1-7}}
*[[チェス]]{{進捗|25%|2006-1-7}}
===== 798.5 テレビゲーム =====
*[[Minecraft]]
<!--
==== 799 ダンス ====
-->
== 8類 言語 ==
=== 800 言語 ===
==== 801 言語学 ====
*[[生成文法]]
*[[語学]]
**[[琉球語]]
<!--
==== 809 言語生活 ====
-->
=== 810 日本語 ===
*[[日本語]]{{進捗|25%|2005-05-04}}
<!--
==== 811 音声、音韻、文字 ====
==== 812 語源、意味 ====
==== 813 辞典 ====
==== 814 語彙 ====
==== 815 文法、語法 ====
==== 816 文章、文体、作文 ====
==== 817 読本、解釈、会話 ====
-->
==== 818 方言、訛語 ====
*[[北海道方言]]
*[[讃岐弁]]
*[[沖縄語]]
<!--
=== 820 中国語 ===
-->
==== 829 その他の東洋の諸言語 ====
*[[朝鮮語]]{{進捗|25%|2005-05-04}}
*[[ペルシア語]]
=== 830 英語 ===
*[[英語]]{{進捗|50%|2005-05-04}}
=== 840 ドイツ語 ===
*[[ドイツ語]]{{進捗|50%|2005-05-04}}
<!--
==== 849 その他のゲルマン言語 ====
-->
=== 850 フランス語 ===
*[[フランス語]]{{進捗|25%|2005-05-04}}
<!--
==== 859 プロヴァンス語 ====
=== 860 スペイン語 ===
==== 869 ポルトガル語 ====
=== 870 イタリア語 ===
-->
==== 879 その他のロマンス諸語 ====
*[[ルーマニア語]]
<!--
=== 880 ロシア語 ===
==== 889 その他のスラヴ諸語 ====
=== 890 その他の諸言語 ===
-->
==== 891 ギリシア語 ====
*[[ギリシア語]]
==== 892 ラテン語 ====
*[[ラテン語]]{{進捗|50%|2006-03-21}}
==== 893 その他のヨーロッパの諸言語 ====
*[[デンマーク語]]{{進捗|25%|2005-12-01}}
<!--
==== 894 アフリカの諸言語 ====
==== 895 アメリカの諸言語 ====
==== 897 オーストラリアの諸言語 ====
-->
==== 899 国際語 ====
*[[エスペラント]]{{進捗|00%|2005-05-04}}
== 9類 文学 ==
=== 900 文学 ===
*[[古典文学]]{{進捗|25%|2005-05-15}}
<!--
==== 909 児童文学研究 ====
-->
=== 910 日本文学 ===
<!--
==== 911 詩歌 ====
==== 912 戯曲 ====
-->
==== 913 小説、物語 ====
*[[竹取物語]]{{進捗|25%|2005-05-04}}
==== 914 評論、エッセイ、随筆 ====
*[[方丈記]]
<!--
==== 915 日記、書簡、紀行 ====
==== 916 記録、手記、ルポルタージュ ====
==== 917 箴言、アフォリズム、寸言 ====
==== 918 作品集 ====
==== 919 漢詩文、日本漢文学 ====
-->
=== 920 中国文学 ===
*[[漢詩]]{{進捗|25%|2005-05-04}}
<!--
==== 929 その他の東洋文学 ====
=== 930 英文学・米文学 ===
=== 940 ドイツ文学 ===
==== 949 その他のゲルマン文学 ====
=== 950 フランス文学 ===
==== 959 プロヴァンス文学 ====
=== 960 スペイン文学 ===
==== 969 ポルトガル文学 ====
=== 970 イタリア文学 ===
==== 979 その他のロマンス文学 ====
=== 980 ロシア文学・ソヴィエト文学 ===
==== 989 その他のスラヴ文学 ====
-->
=== 990 その他の諸文学 ===
==== 991 ギリシア文学 ====
==== 992 ラテン文学 ====
*[[ガリア戦記]]
==== 993 その他のヨーロッパ文学 ====
==== 994 アフリカ文学 ====
==== 995 アメリカ先住民語の文学 ====
==== 997 オーストラリア先住民語の文学 ====
==== 999 国際語による文学 ====
== 関連項目 ==
*[[w:日本十進分類法#要目表(第3次区分表)]]
== 外部リンク ==
*<del>[http://www.ndl.go.jp/jp/library/data/zan9.html 日本十進分類法新訂9版分類基準]([http://www.ndl.go.jp/ 国立国会図書館])</del>リンク切れ
*[https://www.kotono8.com/wiki/%E6%97%A5%E6%9C%AC%E5%8D%81%E9%80%B2%E5%88%86%E9%A1%9E%E6%B3%95%EF%BC%88%E8%A9%B3%E7%B4%B0%EF%BC%89 閾ペディアことのは 日本十進分類法(詳細)]
[[Category:日本十進分類法|*]]
[[it:Wikibooks:Classificazione decimale Dewey]]
ab52kbt990b49a7z5hrz77jpto205to
301537
301526
2026-07-13T10:53:09Z
Tkkn46tkkn46
89925
/* 007.63 コンピュータシステム ソフトウェア */ LPIC(level1)を追加。
301537
wikitext
text/x-wiki
__NOTOC__
[[メインページ|ウィキブックス]]の全ての書籍を[[:w:日本十進分類法|日本十進分類法]]に従って分類したものです。
{{進捗状況}}
== 0類 総記 ==
=== 000 総記 ===
*[[ウィキペディアの書き方]]
<!--
==== 002 知識・学問・学術 ====
-->
==== 007 情報科学 ====
*[[情報技術]]
<!--
===== 007.1 情報理論 =====
===== 007.2 歴史 事情 =====
===== 007.3 情報と社会 =====
===== 007.4 情報源 =====
===== 007.5 ドキュメンテーション 情報管理 =====
-->
===== 007.6 データ処理 情報処理 =====
*[[情報処理技術者試験の概要]]
*[[初級システムアドミニストレータ]]
<!--
====== 007.61 システム分析 システム設計 ======
-->
====== 007.63 コンピュータシステム ソフトウェア ======
*[[Freenet]]
*[[Google スライド]]
*[[LPIC(level1)]]
*[[Maxima]]
*[[Microsoft Office]]
*[[Mizar]]
*[[OpenOffice.org]]
*[[OSとアプリケーション]]
*[[TeX/LaTeX入門]]{{進捗|25%|2005-05-04}}
*[[vi]]
<!--
======= 007.632 エキスパートシステム =======
-->
====== 007.634 オペレーティングシステム ======
*[[ChromeOS]]
*[[Linuxシステム管理]]
*[[Linuxハードウェア]]
*[[MS-DOS/PC DOS入門]]{{進捗|50%|2005-05-04}}
*[[UNIX/Linux入門]]{{進捗|25%|2005-05-04}}
<!--
======= 007.635 漢字処理システム =======
-->
====== 007.637 図形処理ソフトウェア ======
* [[Inkscape]]
====== 007.64 コンピュータプログラミング ======
*[[機械語]]
*[[ゲームプログラミング]]
*[[数式処理システム]]
*[[ソフトウェア開発技術者]]
*[[プログラミング]]
*[[ASP.NET Core]]
*[[BASIC]]
*[[Blender 3D]]
*[[C言語]]{{進捗|25%|2005-05-04}}
*[[CPlusPlus|C++]]
*[[CSS]]{{進捗|00%|2005-06-17}}
*[[CGI]]{{進捗|25%|2005-05-04}}
*[[GNOMEフレームワーク]]
*[[Go]]
*[[Haskell]]
*[[HTML]]{{進捗|25%|2005-05-04}}
*[[Java]]{{進捗|25%|2005-05-04}}
*[[JavaScript]]{{進捗|25%|2005-05-04}}
*[[Lisp]]
*[[Node.js]]
*[[OpenGL]]
*[[OSS開発ツール]]
*[[Perl]]{{進捗|25%|2005-05-04}}
*[[PHP]]
*[[Ruby]]
*[[Scratch]]
*[[Scheme]]
*[[SVG]]
*[[Swift]]
*[[Xプログラミング]]
<!--
======= 007.642 CG技術 =======
====== 007.65 各種の記憶媒体 ======
====== 007.68 情報検索 機械検索 ======
-->
===== 007.7 情報システム =====
*[[LANとインターネット]]
*[[NTP入門]]
*[[TCP/IP入門]]
<!--
=== 010 図書館・図書館学 ===
==== 011 図書館政策・図書館行財政 ====
==== 012 図書館建築・図書館整備 ====
==== 013 図書館管理 ====
==== 014 資料の収集・資料の整理・資料の保管 ====
==== 015 図書館奉仕・図書館活動 ====
==== 016 各種の図書館 ====
==== 017 学校図書館 ====
==== 018 専門図書館 ====
==== 019 読書・読書法 ====
-->
=== 020 図書・書誌学 ===
==== 021 著作・編集 ====
===== 021.4 編集 編纂 =====
*[[ウィキペディアの書き方 入門編]]{{進捗|50%|2005-05-04}}
<!--
==== 022 写本・刊本・造本 ====
==== 023 出版 ====
-->
==== 024 図書の販売 ====
*[[同人誌即売会参加方法]]{{進捗|75%|2005-05-04}}
<!--
==== 025 一般書誌・全国書誌 ====
==== 026 稀書目録・善本目録 ====
==== 027 特種目録 ====
==== 028 選定図書目録・参考図書目録 ====
==== 029 蔵書目録・総合目録 ====
-->
=== 030 百科事典 ===
==== 031 日本語 ====
*[[w:mainpage|w:wikipedia]]
===== 031.3 日用便覧 =====
*[[ジョーク集]]
<!--
==== 039 用語索引<一般> ====
=== 040 一般論文集・一般講演集 ===
==== 041 日本語 ====
==== 049 雑著 ====
=== 050 逐次刊行物 ===
==== 051 日本の雑誌 ====
==== 059 一般年鑑 ====
=== 060 団体 ===
==== 061 学術・研究機関 ====
==== 063 文化交流機関 ====
==== 065 親睦団体・その他の団体 ====
==== 069 博物館 ====
=== 070 ジャーナリズム・新聞 ===
==== 071 日本 ====
=== 080 叢書・全集・選集 ===
==== 081 日本語 ====
==== 089 その他の諸言語 ====
=== 090 貴重書・郷土資料・その他の特別コレクション ===
-->
== 1類 哲学 ==
=== 100 哲学 ===
*[[哲学・思想]]{{進捗|00%|2005-05-04}}
<!--
==== 101 哲学理論 ====
==== 102 哲学史 ====
==== 103 参考図書 ====
==== 104 論文集・評論集・講演集 ====
==== 105 逐次刊行物 ====
==== 106 団体 ====
==== 107 研究法・指導法・哲学教育 ====
==== 108 叢集・全集・選集 ====
=== 110 哲学各論 ===
==== 111 形而上学・存在論 ====
==== 112 自然哲学・宇宙論 ====
==== 113 人生観・世界観 ====
==== 114 人間学 ====
==== 115 認識論 ====
==== 116 論理学・弁証法・方法論 ====
==== 117 価値哲学 ====
==== 118 文化哲学・技術哲学 ====
-->
=== 120 東洋思想 ===
==== 121 日本思想 ====
==== 122 中国思想・中国哲学 ====
*[[論語巻第一]]
==== 123 経書 ====
==== 124 先秦思想・諸子 ====
==== 125 中世思想・近代思想 ====
==== 126 インド哲学・バラモン教 ====
==== 129 その他のアジア・アラブ哲学 ====
<!--
=== 130 西洋哲学 ===
==== 131 古代哲学 ====
==== 132 中世哲学 ====
==== 133 近代哲学 ====
==== 134 ドイツ・オーストリア哲学 ====
==== 135 フランス・オランダ哲学 ====
==== 136 スペイン・ポルトガル哲学 ====
==== 137 イタリア哲学 ====
==== 138 ロシア哲学 ====
==== 139 その他の哲学 ====
-->
=== 140 心理学 ===
*[[心理学]]{{進捗|25%|2005-05-04}}
<!--
==== 141 普通心理学・心理各論 ====
==== 143 発達心理学 ====
==== 145 異常心理学 ====
==== 146 臨床心理学・精神分析学 ====
==== 147 超心理学・心霊研究 ====
==== 148 相法・易占 ====
==== 149 応用心理学 ====
-->
=== 150 倫理学・道徳 ===
*[[倫理学]]
==== 151 倫理各論 ====
==== 152 家庭倫理・性倫理 ====
==== 153 職業倫理 ====
==== 154 社会倫理 ====
==== 155 国体論・詔勅 ====
==== 156 武士道 ====
==== 157 報徳教・石門心学 ====
==== 158 その他の特定主題 ====
==== 159 人生訓・教訓 ====
<!--
=== 160 宗教 ===
==== 161 宗教学・宗教思想 ====
==== 162 宗教史・事情 ====
==== 163 原始宗教・宗教民族学 ====
==== 164 神話・神話学 ====
===== 164.31 ギリシャ神話 =====
==== 165 比較宗教 ====
==== 166 道教 ====
==== 167 イスラーム ====
==== 168 ヒンドゥー教・ジャイナ教 ====
==== 169 その他の宗教・新興宗教 ====
=== 170 神道 ===
==== 171 神道思想・神道説 ====
==== 172 神祇・神道史 ====
==== 173 神典 ====
==== 174 信仰録・説教集 ====
==== 175 神社・神職 ====
==== 176 祭祀 ====
==== 177 布教・伝道 ====
==== 178 各教派・教派神道 ====
=== 180 仏教 ===
==== 181 仏教教理・仏教哲学 ====
==== 182 仏教史 ====
==== 183 経典 ====
==== 184 法話・説教集 ====
==== 185 寺院・僧職 ====
==== 186 仏会 ====
==== 187 布教・伝道 ====
==== 188 各宗 ====
=== 190 キリスト教 ===
==== 191 教義・キリスト教神学 ====
==== 192 キリスト教史・迫害史 ====
==== 193 聖書 ====
==== 194 信仰録・説教集 ====
==== 195 教会・聖職 ====
==== 196 典礼・祭式・礼拝 ====
==== 197 布教・伝道 ====
==== 198 各教派・教会史 ====
==== 199 ユダヤ教 ====
-->
== 2類 歴史 ==
=== 200 歴史 ===
==== 201 歴史学 ====
*[[歴史学]]
<!--
==== 202 歴史補助学 ====
==== 203 参考図書 ====
==== 204 論文集・評論集・講演集 ====
==== 205 逐次刊行物 ====
==== 206 団体 ====
==== 207 研究法・指導法・歴史教育 ====
==== 208 叢書・全集・選集 ====
-->
==== 209 世界史・文化史 ====
*[[世界史]]{{進捗|25%|2005-05-04}}
=== 210 日本史 ===
*[[日本史]]{{進捗|25%|2005-05-04}}
<!--
===== 210.027 古銭学 =====
==== 211 北海道地方 ====
==== 212 東北地方 ====
==== 213 関東地方 ====
==== 214 北陸地方 ====
==== 215 中部地方 ====
==== 216 近畿地方 ====
==== 217 中国地方 ====
==== 218 四国地方 ====
==== 219 九州地方 ====
-->
=== 220 アジア史・東洋史 ===
<!--
==== 221 朝鮮 ====
-->
==== 222 中国 ====
*[[中国史]]{{進捗|25%|2005-12-01}}
<!--
==== 223 東南アジア ====
==== 224 インドネシア ====
==== 225 インド ====
===== 225.97 モルジブ =====
==== 229 アジアロシア ====
=== 230 ヨーロッパ史・西洋史 ===
==== 231 古代ギリシア ====
==== 232 古代ローマ ====
==== 233 イギリス・英国 ====
==== 234 ドイツ・中欧 ====
==== 235 フランス ====
==== 236 スペイン イスパニア ====
==== 237 イタリア ====
==== 238 ロシア ソビエト連邦 独立国家共同体 ====
==== 239 バルカン諸国 ====
=== 240 アフリカ史 ===
==== 241 北アフリカ ====
==== 242 エジプト ====
==== 243 バーバリ諸国 ====
==== 244 西アフリカ ====
==== 245 東アフリカ ====
==== 248 南アフリカ ====
==== 249 インド洋のアフリカ諸島 ====
=== 250 北アメリカ史 ===
==== 251 カナダ ====
==== 253 アメリカ合衆国 ====
==== 255 ラテンアメリカ 中南米 ====
==== 256 メキシコ ====
==== 257 中央アメリカ 中米諸国 ====
==== 259 西インド諸島 ====
=== 260 南アメリカ史 ===
==== 261 北部諸国 カリブ沿海諸国 ====
==== 262 ブラジル ====
==== 263 パラグアイ ====
==== 264 ウルグアイ ====
==== 265 アルゼンチン ====
==== 266 チリ ====
==== 267 ボリビア ====
==== 268 ペルー ====
=== 270 オセアニア史・両極地方史 ===
==== 271 オーストラリア ====
==== 272 ニュージーランド ====
==== 273 メラネシア ====
==== 274 ミクロネシア ====
==== 275 ポリネシア ====
==== 276 ハワイ ====
==== 277 両極地方 ====
==== 278 北極 北極地方 ====
==== 279 南極 南極地方 ====
=== 280 伝記 ===
==== 281 日本 ====
==== 282 アジア ====
==== 283 ヨーロッパ ====
==== 284 アフリカ ====
==== 285 北アフリカ ====
==== 286 南アフリカ ====
==== 287 オセアニア・両極地方 ====
==== 288 系譜・家史・皇室 ====
==== 289 個人伝記 ====
-->
=== 290 地理・地誌・紀行 ===
*[[地理学]]{{進捗|00%|2005-05-04}}
<!--
==== 290.93 旅行案内記 ====
-->
== 3類 社会科学 ==
<!--
=== 300 社会科学 ===
==== 301 理論・方法論 ====
==== 302 政治・経済・社会・文化事情 ====
==== 303 参考図書 ====
==== 304 論文集・評論集・講演集 ====
==== 305 逐次刊行物 ====
==== 306 団体 ====
==== 307 研究法・指導法・社会科学教育 ====
==== 308 叢書・全集・選集 ====
==== 309 社会思想 ====
=== 310 政治 ===
==== 311 政治学 ====
==== 312 政治史・事情 ====
==== 313 国家の形態・政治体制 ====
==== 314 議会 ====
==== 315 政党・政治結社 ====
==== 316 国家と個人・宗教・民族 ====
==== 317 行政 ====
==== 318 地方自治・地方行政 ====
==== 319 外交・国際問題 ====
-->
=== 320 法律 ===
==== 321 法学 ====
*[[法学]]{{進捗|25%|2005-05-04}}
==== 322 法制史 ====
*[[法制史]]
==== 323 憲法 ====
*[[憲法]]
==== 324 民法 ====
*[[民法]]
==== 325 商法 ====
*[[商法]]
==== 326 刑法・刑事法 ====
*[[刑法]]
==== 327 司法・訴訟手続法 ====
*[[民事訴訟法]]
*[[刑事訴訟法]]
==== 328 諸法 ====
*[[教育基本法]]
*[[知的財産権法]]
==== 329 国際法 ====
*[[国際法]]
=== 330 経済 ===
==== 331 経済学・経済思想 ====
*[[経済学]]{{進捗|25%|2005-05-04}}
*[[経済学基礎]]
==== 332 経済史・事情・経済体制 ====
==== 333 経済政策・国際経済 ====
==== 334 人口・土地・資源 ====
==== 335 企業・経営 ====
==== 336 経営管理 ====
*[[公認会計士試験]]
==== 337 貨幣・通貨 ====
==== 338 金融・銀行・信託 ====
==== 339 保険 ====
=== 340 財政 ===
<!--
==== 341 財政学・財政思想 ====
==== 342 財政史・事情 ====
==== 343 財政政策・財政行政 ====
==== 344 予算・決算 ====
==== 345 租税 ====
==== 347 公債・国債 ====
==== 348 専売・国有財産 ====
==== 349 地方財政 ====
=== 350 統計 ===
==== 351 日本 ====
==== 358 人口統計・国勢調査 ====
==== 359 各種の統計書 ====
-->
=== 360 社会 ===
<!--
==== 361 社会学 ====
==== 362 社会史・社会体制 ====
==== 364 社会保障 ====
==== 365 生活・消費者問題 ====
==== 366 労働経済・労働問題 ====
==== 367 家族問題、男性・女性問題、老人問題 ====
==== 368 社会病理 ====
-->
==== 369 社会福祉 ====
===== 369.3 災害 災害救助 =====
*[[防災]]{{進捗|25%|2006-04-06}}
=== 370 教育 ===
<!--
==== 371 教育学、教育思想 ====
===== 371.42 登校拒否・いじめ =====
-->
==== 372 教育史・事情 ====
*[[教育勅語]]{{進捗|75%|2005-05-04}}
<!--
==== 373 教育政策、教育制度、教育行財政 ====
-->
==== 374 学校経営・管理、学校保健 ====
===== 374.48 学校行事 =====
*[[運動会]]
==== 375 教育課程、学習指導、教科別教育 ====
*[[学校教育]]{{進捗|25%|2005-05-04}}
*[[生活と進路]]{{進捗|50%|2005-05-04}}
===== 374.9 教科書、教科書検定 =====
*[[小学校の学習]]{{進捗|50%|2023-09-25}}
*[[中学校の学習]]{{進捗|50%|2023-09-25}}
*[[高等学校の学習]]{{進捗|00%|2023-09-25}}
**[[高等学校の学習/旧課程]]{{進捗|25%|2023-09-25}}
<!--
* [[小学校算数]] {{進捗|25%|2005-05-04}}
* [[中学校数学]] {{進捗|50%|2005-05-10}}
* [[高等学校世界史A]] {{進捗|25%|2015-08-30}}
* [[高等学校地理B]] {{進捗|25%|2005-11-1}}
* [[高等学校現代社会]] {{進捗|25%|2015-08-30}}
* [[高等学校政治経済]] {{進捗|50%|2015-08-30}}
*[[高等学校倫理]]
*[[高等学校数学]]
*[[高等学校数学基礎]]{{進捗|100%|2005-05-04}}
*[[高等学校数学I]]{{進捗|50%|2005-05-04}}
*[[高等学校数学III]]{{進捗|50%|2005-05-04}}
*[[高等学校数学B]]{{進捗|50%|2005-05-04}}
*[[高等学校数学C]]{{進捗|50%|2005-05-04}}
*[[高等学校理科総合B]]{{進捗|50%|2005-05-04}}
*[[高等学校物理]]{{進捗|50%|2005-11-1}}
* [[高等学校化学]] {{進捗|50%|2015-08-30}}
* [[高等学校生物]] {{進捗|50%|2015-08-30}}
* [[高等学校地学]] {{進捗|25%|2015-08-30}}
*[[高等学校情報A]]
*[[高等学校情報B]]
*[[高等学校情報C]]
-->
*[[小・中・高等学校演習]]
*[[検定教科書]]
==== 376 幼児・初等・中等教育 ====
*[[小学校・中学校・高等学校の学習]]
==== 377 大学、高等・専門教育、学術行政 ====
* [[大学受験ガイド]] {{進捗|50%|2015-08-30}}
<!--
==== 378 障害児教育 ====
==== 379 社会教育 ====
=== 380 風俗習慣・民俗学・民族学 ===
==== 382 風俗史・民俗誌、民族誌 ====
==== 383 衣食住の習俗 ====
==== 384 社会・家庭生活の習俗 ====
==== 385 通過儀礼、冠婚葬祭 ====
==== 386 年中行事、祭礼 ====
==== 387 民間信仰、迷信(俗信) ====
==== 388 伝説、民話(昔話) ====
==== 389 民族学、文化人類学 ====
=== 390 国防・軍事 ===
==== 391 戦争、戦略、戦術 ====
==== 392 国防史・事情、軍事史・事情 ====
==== 393 国防政策・行政・法令 ====
==== 394 軍事医学、兵食 ====
==== 395 軍事施設、軍需品 ====
==== 396 陸軍 ====
==== 397 海軍 ====
==== 398 空軍 ====
==== 399 古代兵法、軍学 ====
-->
== 4類 自然科学 ==
<!--
=== 400 自然科学 ===
==== 401 科学理論・科学哲学 ====
==== 402 科学史・事情 ====
==== 403 参考図書 ====
==== 404 論文集・評論集・講演集 ====
==== 405 逐次刊行物 ====
==== 406 団体 ====
==== 407 研究法・指導法・科学教育 ====
==== 408 叢書・全集・選集 ====
==== 409 科学技術政策・科学技術行政 ====
-->
=== 410 数学 ===
* [[数学]]
* [[初等数学]]
* [[初等数学公式集]]{{進捗|25%|2005-05-04}}
* [[初等数学演習]]{{進捗|25%|2005-05-04}}
* [[初等数学記号集]]
* [[Wikibooks:初等数学用語索引|初等数学用語索引]]{{進捗|25%|2005-05-04}}
* [[中等数学]]
* [[高等数学]]
* [[大学数学公式集]]
==== 411 代数学 ====
===== 411.6 集合論 =====
*[[公理的集合論]]
==== 412 数論 ====
==== 413 解析学 ====
* [[解析学]]
* [[解析学基礎]]{{進捗|25%|2005-05-04}}
==== 414 幾何学 ====
==== 415 位相数学 ====
* [[位相幾何学]]{{進捗|25%|2008-09-03}}
==== 417 確率論、数理統計学 ====
* [[統計学基礎]]{{進捗|25%|2005-05-04}}
<!--
==== 418 計算法 ====
==== 419 和算、中国算法 ====
-->
=== 420 物理学 ===
*[[物理学]]
==== 421 理論物理学 ====
<!--
===== 421.1 基礎理論 エーテル理論 =====
-->
===== 421.2 相対性理論 =====
*[[特殊相対論]]
*[[一般相対性理論]]
===== 421.3 量子力学、量子論 =====
*[[場の量子論]]
*[[量子力学]]{{進捗|50%|2005-05-04}}
===== 421.4 統計力学 =====
*[[統計力学I]]
*[[統計力学II]]
===== 421.5 数理物理学.物理数学 =====
* [[物理数学I]] {{進捗|75%|2023-11-05}}
* [[物理数学II]]
==== 423 力学 ====
*[[解析力学]]
*[[古典力学]]{{進捗|50%|2005-05-04}}
==== 424 振動学、音響学 ====
*[[振動と波動]]
* [[音響学]]
==== 425 光学 ====
*[[光の偏極]]
==== 426 熱学 ====
*[[熱力学]]
==== 427 電磁気学 ====
*[[電磁気学]]
<!--
==== 428 物性物理学 ====
==== 429 原子物理学 ====
-->
=== 430 化学 ===
<!--
==== 431 物理化学. 理論化学 ====
==== 432 実験化学 ====
==== 433 分析化学 ====
==== 434 合成化学 ====
-->
==== 435 無機化学 ====
*[[無機化学]]{{進捗|25%|2005-05-04}}
<!--
==== 436 金属元素とその化合物 ====
-->
==== 437 有機化学 ====
*[[有機化学]]{{進捗|25%|2005-05-21}}
<!--
==== 438 環式化合物の化学 ====
==== 439 天然物質の化学 ====
-->
=== 440 天文学・宇宙科学 ===
* [[天文学]]{{進捗|25%|2005-12-01}}
<!--
==== 441 理論天文学・数理天文学 ====
==== 442 実地天文学・天体観測法 ====
==== 443 恒星・恒星天文学 ====
==== 444 太陽・太陽物理学 ====
==== 445 惑星・衛星 ====
==== 446 月 ====
==== 447 彗星・流星 ====
==== 448 地球・天文地理学 ====
==== 449 時法・暦学 ====
-->
=== 450 地球科学・地学 ===
* [[地球科学]]{{進捗|25%|2005-12-01}}
==== 451 気象学 ====
==== 452 海洋学 ====
==== 453 地震学 ====
===== 453.38 地震予知 =====
==== 454 地形学 ====
==== 455 地質学 ====
==== 456 地史学・層位学 ====
==== 457 古生物学・化石 ====
*[[古生物学]]
==== 458 岩石学 ====
==== 459 鉱物学 ====
=== 460 生物化学・一般生物学 ===
*[[生物学の研究技術]]{{進捗|25%|2005-05-04}}
<!--
==== 461 理論生物学・生命論 ====
==== 462 生物地理・生物誌 ====
==== 463 細胞学 ====
==== 464 生化学 ====
==== 465 微生物学 ====
==== 467 遺伝学 ====
===== 467.25 遺伝子組み換え =====
==== 468 生態学 ====
==== 469 人類学 ====
-->
=== 470 植物学 ===
*[[植物学]]{{進捗|25%|2005-05-04}}
<!--
==== 471 一般植物学 ====
==== 472 植物地理・植物誌 ====
==== 473 葉状植物 ====
==== 474 藻類・菌類 ====
==== 475 コケ植物 ====
==== 476 シダ植物 ====
==== 477 種子植物 ====
==== 478 裸子植物 ====
==== 479 被子植物 ====
=== 480 動物学 ===
==== 481 一般動物学 ====
==== 482 動物地理・動物誌 ====
==== 483 無脊椎動物 ====
==== 484 軟体動物・貝類学 ====
==== 485 節足動物 ====
==== 486 昆虫類 ====
==== 487 脊椎動物 ====
==== 488 鳥類 ====
==== 489 哺乳類 ====
-->
=== 490 医学 ===
* [[医学]]
*[[OsiriX_オンライン解説文書]]{{進捗|75%|2005-05-04}}
==== 491 基礎医学 ====
*[[生理学]]{{進捗|00%|2006-11-09}}
*[[解剖学]]{{進捗|25%|2006-11-09}}
*[[神経解剖学]]{{進捗|00%|2006-11-09}}
*[[組織学]]{{進捗|00%|2006-11-09}}
*[[微生物学]]{{進捗|00%|2006-11-09}}
*[[病理学]]{{進捗|00%|2006-11-09}}
<!--
==== 492 臨床医学 ====
-->
==== 493 内科学 ====
*[[内科学 呼吸器]]{{進捗|00%|2006-11-09}}
<!--
==== 494 外科学 ====
==== 495 産科学,婦人科学 ====
==== 496 眼科学,耳鼻咽喉科学 ====
==== 497 歯科学 ====
==== 498 衛生学,公衆衛生学,予防医学 ====
-->
==== 499 薬学 ====
*[[薬理学]]{{進捗|00%|2006-11-09}}
==5類 技術・工学・工業 ==
=== 500 技術・工学 ===
==== 501 工業基礎学 ====
==== 502 技術史・工学史 ====
==== 503 参考図書 ====
==== 504 論文集・評論集・講演集 ====
==== 505 逐次刊行物 ====
==== 506 団体 ====
==== 507 研究法・指導法・技術教育 ====
==== 508 叢書・全集・選集 ====
==== 509 工業・工業経済 ====
=== 510 建設工学・土木工学 ===
==== 511 土木力学・建設材料 ====
==== 512 測量 ====
==== 513 土木設計・施工法 ====
==== 514 道路工学 ====
==== 515 橋梁工学 ====
==== 516 鉄道工学 ====
==== 517 河海工学・河川工学 ====
==== 518 衛生工学・都市工学 ====
===== 518.523 ごみの再利用 =====
==== 519 公害・環境工学 ====
===== 519.12 環境法 =====
* [[環境法]]
=== 520 建築学 ===
==== 521 日本の建築 ====
==== 522 東洋の建築・アジアの建築 ====
==== 523 西洋の建築・その他の様式の建築 ====
==== 524 建築構造 ====
==== 525 建築計画・施工 ====
==== 526 各種の建築 ====
==== 527 住宅建築 ====
==== 528 建築設備・設備工学 ====
==== 529 建築意匠・装飾 ====
=== 530 機械工学・原子力工学 ===
==== 531 機械力学・材料・設計 ====
==== 532 機械工作・工作機械 ====
==== 533 熱機関・熱工学 ====
==== 534 流体機械・流体工学 ====
==== 535 精密機器・光学機器 ====
==== 536 運輸工学・車輌・運搬機械 ====
==== 537 自動車工学 ====
===== 537.25 電気自動車 =====
==== 538 航空宇宙工学 ====
==== 539 原子力工学 ====
=== 540 電気工学・電子工学 ===
==== 540 電気工学 ====
==== 541 電気回路・計測・材料 ====
==== 542 電気機器 ====
==== 543 発電 ====
==== 544 送電・変電・配電 ====
==== 545 電灯・照明・電熱 ====
==== 546 電気鉄道 ====
==== 547 通信工学・電気通信 ====
*[[スタイルシート言語]]
*[[AMPHTML]]
*[[Internet Explorer]]
==== 548 情報工学 ====
==== 549 電子工学 ====
=== 550 海洋工学・船舶工学 ===
==== 551 理論造船学 ====
==== 552 船体構造・材料・施工 ====
==== 553 船体艤装・船舶設備 ====
==== 554 舶用機関[造機] ====
==== 555 船舶修理・保守 ====
==== 556 各種の船舶・艦艇 ====
==== 557 航海・航海学 ====
==== 558 海洋開発 ====
==== 559 兵器、軍事工学 ====
=== 560 金属工学・鉱山工学 ===
==== 561 採鉱・選鉱 ====
==== 562 各種の金属鉱床・採掘 ====
==== 563 冶金・合金 ====
==== 564 鉄鋼 ====
==== 565 非鉄金属 ====
==== 566 金属加工・製造冶金 ====
==== 567 石炭 ====
==== 568 石油 ====
==== 569 非金属鉱物・土石採取業 ====
=== 570 化学工業 ===
==== 571 化学工学・化学機器 ====
==== 572 電気化学工業 ====
==== 573 セラミックス・窯業・珪酸塩化学工業 ====
==== 574 化学薬品 ====
==== 575 燃料・爆発物 ====
==== 576 油脂類 ====
==== 577 染料 ====
==== 578 高分子化学工業 ====
==== 579 その他の化学工業 ====
=== 580 製造工業 ===
==== 581 金属製品 ====
==== 582 事務機器・家庭機器・楽器 ====
==== 583 木工業・木製品 ====
==== 584 皮革工業・皮革製品 ====
==== 585 パルプ・製紙工業 ====
==== 586 繊維工学 ====
==== 587 染色加工・染色業 ====
==== 588 食品工業 ====
==== 589 その他の雑工業 ====
=== 590 家政学・生活科学 ===
<!--
==== 591 家庭経済・経営 ====
==== 592 家庭理工学 ====
==== 593 衣服・裁縫 ====
==== 594 手芸 ====
==== 595 理容・美容 ====
===== 595.6 痩身法 =====
==== 596 食品・料理 ====
*[[料理本]]{{進捗|25%|2005-05-04}}
<!--
==== 597 住居・家具調度 ====
==== 598 家庭衛生 ====
==== 599 育児 ====
-->
==6類 産業 ==
<!--
=== 600 産業 ===
==== 601 産業政策・行政・総合開発 ====
==== 602 産業史・事情・物産誌 ====
==== 603 参考図書 ====
==== 604 論文集・評論集・講演集 ====
==== 605 逐次刊行物 ====
==== 606 団体 ====
==== 607 研究法・指導法・産業教育 ====
==== 608 叢書・全集・選集 ====
==== 609 度量衡、計量法 ====
=== 610 農業 ===
==== 611 農業経済 ====
==== 612 農業史・事情 ====
==== 613 農業基礎学 ====
==== 614 農業工学 ====
==== 615 作物栽培・作物学 ====
==== 616 食用作物 ====
==== 617 工芸作物 ====
==== 618 繊維作物 ====
==== 619 農産物製造・加工 ====
-->
=== 620 園芸 ===
<!--
==== 621 園芸経済・行政・経営 ====
==== 622 園芸史・事情 ====
==== 623 園芸植物学・病虫害 ====
==== 624 温室・温床・園芸用具 ====
==== 625 果樹園芸 ====
-->
==== 626 蔬菜園芸 ====
*[[ダイズの栽培]]{{進捗|00%|2007-02-21}}
==== 627 花卉園芸[草花] ====
*[[サボテンの栽培]]{{進捗|00%|2007-02-21}}
<!--
==== 628 園芸利用 ====
==== 629 造園 ====
=== 630 蚕糸業 ===
==== 631 蚕糸経済・行政・経営 ====
==== 632 蚕糸業史・事情 ====
==== 633 蚕学・蚕業基礎学 ====
==== 634 蚕種 ====
==== 635 飼育法 ====
==== 636 くわ・栽桑 ====
==== 637 蚕室・蚕具 ====
==== 638 まゆ ====
==== 639 製糸・生糸・蚕糸利用 ====
-->
=== 640 畜産業 ===
<!--
==== 641 畜産経済・行政・経営 ====
==== 642 畜産史・事情 ====
==== 643 家畜の繁殖・家畜飼料 ====
==== 644 家畜の管理・畜舎・用具 ====
==== 645 家畜・畜産動物各論 ====
-->
==== 646 家禽各論・飼鳥 ====
*[[ホンセイインコ類の飼育]]{{進捗|00%|2007-02-21}}
<!--
===== 646.9 みつばち・昆虫 =====
==== 648 畜産製造・畜産物 ====
==== 649 獣医学・比較医学 ====
==== 649 獣医学 ====
=== 650 林業 ===
==== 651 林業経済・行政・経営 ====
==== 652 森林史・林業史・事情 ====
==== 653 森林立地・造林 ====
==== 654 森林保護 ====
==== 655 森林施業 ====
==== 656 森林工学 ====
==== 657 森林利用・林産物・木材学 ====
==== 658 林産製造 ====
==== 659 狩猟 ====
=== 660 水産業 ===
==== 661 水産経済・行政・経営 ====
==== 662 水産業および漁業史・事情 ====
==== 663 水産基礎学 ====
==== 664 漁労・漁業各論 ====
==== 665 漁船・漁具 ====
==== 666 水産増殖・養殖業 ====
==== 667 水産製造・水産食品 ====
==== 668 水産物利用・水産利用工業 ====
==== 669 製塩・塩業 ====
=== 670 商業 ===
==== 671 商業政策・行政 ====
==== 672 商業史・事情 ====
==== 673 商業経営・商店 ====
==== 674 広告・宣伝 ====
==== 675 マーケティング ====
==== 676 取引所 ====
==== 678 貿易 ====
=== 680 運輸・交通 ===
==== 681 交通政策・行政・経営 ====
==== 682 交通史・事情 ====
==== 683 海運 ====
==== 684 内水・運河交通 ====
==== 685 陸運・自動車運送 ====
==== 686 鉄道 ====
==== 687 航空運送 ====
==== 688 倉庫業 ====
==== 689 観光事業 ====
=== 690 通信事業 ===
==== 691 通信政策・行政・法令 ====
==== 692 通信事業史・事情 ====
==== 693 郵便・郵政事業 ====
==== 694 電気通信事業 ====
==== 699 放送事業 ====
===== 699.39 アナウンサー =====
-->
== 7類 芸術 ==
<!--
=== 700 芸術・美術 ===
==== 701 芸術理論・美学 ====
==== 702 芸術史・美術史 ====
==== 703 参考図書[レファレンスブック] ====
==== 704 論文集・評論集・講演集 ====
==== 705 逐次刊行物 ====
==== 706 団体 ====
==== 707 研究法・指導法・芸術教育 ====
==== 708 叢書・全集・選集 ====
==== 709 芸術政策・文化財 ====
=== 710 彫刻 ===
==== 711 彫塑材料・技法 ====
==== 712 彫刻史・各国の彫刻 ====
==== 713 木彫 ====
==== 714 石彫 ====
==== 715 金属彫刻・鋳造 ====
==== 717 粘土彫刻・塑造 ====
==== 708 仏像 ====
==== 709 オブジェ ====
=== 720 絵画 ===
==== 721 日本画 ====
==== 722 東洋画 ====
==== 723 洋画 ====
==== 724 絵画材料・技法 ====
==== 725 素描・描画 ====
==== 726 漫画、挿絵、童画 ====
==== 727 グラフィックデザイン、図案 ====
==== 728 書道 ====
=== 730 版画 ===
==== 731 版画材料・技法 ====
==== 732 版画史・各国の版画 ====
==== 733 木版画 ====
==== 734 石版画 ====
==== 735 銅版画・鋼版画 ====
==== 736 リノリウム版画・ゴム版画 ====
==== 737 写真版画・孔版画 ====
==== 739 印章、篆刻、印譜 ====
-->
=== 740 写真 ===
<!--
==== 742 写真器械・材料 ====
==== 743 撮影技術 ====
-->
==== 744 現像・印画 ====
*[[白黒写真の暗室作業]]{{進捗|75%|2007-05-10}}
<!--
==== 745 複写技術 ====
==== 746 特殊写真 ====
==== 747 写真の応用 ====
==== 748 写真集 ====
==== 749 印刷 ====
=== 750 工芸 ===
==== 751 陶磁工芸 ====
==== 752 漆工芸 ====
==== 753 染織工芸 ====
==== 754 木竹工芸 ====
==== 755 宝石・牙角・皮革工芸 ====
==== 756 金工芸 ====
==== 757 デザイン・装飾美術 ====
==== 758 美術家具 ====
==== 759 人形・玩具 ====
-->
=== 760 音楽 ===
==== 761 音楽の一般理論・音楽学 ====
* [[楽典]]
* [[和声学]]
* [[楽式]]
==== 762 音楽史・各国の音楽 ====
* [[西洋音楽史]]
<!--
==== 763 楽器・器楽 ====
==== 764 器楽合奏 ====
==== 765 宗教音楽・聖楽 ====
==== 766 劇音楽 ====
==== 767 声楽 ====
==== 768 邦楽 ====
==== 769 舞踊、バレエ ====
=== 770 演劇 ===
==== 771 劇場・演出・演技 ====
==== 772 演劇史・各国の演劇 ====
==== 773 能楽、狂言 ====
==== 774 歌舞伎 ====
==== 775 各種の演劇 ====
==== 777 人形劇 ====
==== 778 映画 ====
==== 779 大衆演芸 ====
-->
=== 780 スポーツ・体育 ===
*[[スポーツ]]
==== 781 体操、遊戯 ====
==== 782 陸上競技 ====
*[[トライアスロン]]
==== 783 球技 ====
*[[サッカー]]{{進捗|25%|2006-1-7}}
*[[テニス]]{{進捗|25%|2006-1-7}}
*[[バドミントン]]
*[[野球]]{{進捗|25%|2006-1-7}}
*[[ボウリング]]
<!--
==== 784 冬季競技 ====
-->
==== 785 水上競技 ====
*[[セーリング]]{{進捗|25%|2006-1-7}}
==== 786 戸外レクリエーション ====
===== 786.1 登山・山岳競技 =====
*[[登山]]
==== 787 釣魚、遊猟 ====
==== 788 相撲、拳闘、競馬 ====
*[[相撲]]{{進捗|25%|2006-2-23}}
*[[競馬]]{{進捗|25%|2023-09-25}}
==== 789 武術 ====
*[[剣道]]{{進捗|25%|2007-6-30}}
=== 790 諸芸・娯楽 ===
<!--
==== 791 茶道 ====
==== 792 香道 ====
==== 793 花道 ====
==== 794 撞球 ====
-->
==== 795 囲碁 ====
*[[囲碁]]{{進捗|25%|2006-1-7}}
==== 796 将棋 ====
*[[将棋]]{{進捗|25%|2006-1-7}}
<!--
==== 797 射倖ゲーム ====
-->
==== 798 室内娯楽 ====
*[[トランプ]]<!--798.2-->
*[[トランプ/トランプ教科書]]
*[[麻雀]]{{進捗|25%|2006-1-7}}
*[[チェス]]{{進捗|25%|2006-1-7}}
===== 798.5 テレビゲーム =====
*[[Minecraft]]
<!--
==== 799 ダンス ====
-->
== 8類 言語 ==
=== 800 言語 ===
==== 801 言語学 ====
*[[生成文法]]
*[[語学]]
**[[琉球語]]
<!--
==== 809 言語生活 ====
-->
=== 810 日本語 ===
*[[日本語]]{{進捗|25%|2005-05-04}}
<!--
==== 811 音声、音韻、文字 ====
==== 812 語源、意味 ====
==== 813 辞典 ====
==== 814 語彙 ====
==== 815 文法、語法 ====
==== 816 文章、文体、作文 ====
==== 817 読本、解釈、会話 ====
-->
==== 818 方言、訛語 ====
*[[北海道方言]]
*[[讃岐弁]]
*[[沖縄語]]
<!--
=== 820 中国語 ===
-->
==== 829 その他の東洋の諸言語 ====
*[[朝鮮語]]{{進捗|25%|2005-05-04}}
*[[ペルシア語]]
=== 830 英語 ===
*[[英語]]{{進捗|50%|2005-05-04}}
=== 840 ドイツ語 ===
*[[ドイツ語]]{{進捗|50%|2005-05-04}}
<!--
==== 849 その他のゲルマン言語 ====
-->
=== 850 フランス語 ===
*[[フランス語]]{{進捗|25%|2005-05-04}}
<!--
==== 859 プロヴァンス語 ====
=== 860 スペイン語 ===
==== 869 ポルトガル語 ====
=== 870 イタリア語 ===
-->
==== 879 その他のロマンス諸語 ====
*[[ルーマニア語]]
<!--
=== 880 ロシア語 ===
==== 889 その他のスラヴ諸語 ====
=== 890 その他の諸言語 ===
-->
==== 891 ギリシア語 ====
*[[ギリシア語]]
==== 892 ラテン語 ====
*[[ラテン語]]{{進捗|50%|2006-03-21}}
==== 893 その他のヨーロッパの諸言語 ====
*[[デンマーク語]]{{進捗|25%|2005-12-01}}
<!--
==== 894 アフリカの諸言語 ====
==== 895 アメリカの諸言語 ====
==== 897 オーストラリアの諸言語 ====
-->
==== 899 国際語 ====
*[[エスペラント]]{{進捗|00%|2005-05-04}}
== 9類 文学 ==
=== 900 文学 ===
*[[古典文学]]{{進捗|25%|2005-05-15}}
<!--
==== 909 児童文学研究 ====
-->
=== 910 日本文学 ===
<!--
==== 911 詩歌 ====
==== 912 戯曲 ====
-->
==== 913 小説、物語 ====
*[[竹取物語]]{{進捗|25%|2005-05-04}}
==== 914 評論、エッセイ、随筆 ====
*[[方丈記]]
<!--
==== 915 日記、書簡、紀行 ====
==== 916 記録、手記、ルポルタージュ ====
==== 917 箴言、アフォリズム、寸言 ====
==== 918 作品集 ====
==== 919 漢詩文、日本漢文学 ====
-->
=== 920 中国文学 ===
*[[漢詩]]{{進捗|25%|2005-05-04}}
<!--
==== 929 その他の東洋文学 ====
=== 930 英文学・米文学 ===
=== 940 ドイツ文学 ===
==== 949 その他のゲルマン文学 ====
=== 950 フランス文学 ===
==== 959 プロヴァンス文学 ====
=== 960 スペイン文学 ===
==== 969 ポルトガル文学 ====
=== 970 イタリア文学 ===
==== 979 その他のロマンス文学 ====
=== 980 ロシア文学・ソヴィエト文学 ===
==== 989 その他のスラヴ文学 ====
-->
=== 990 その他の諸文学 ===
==== 991 ギリシア文学 ====
==== 992 ラテン文学 ====
*[[ガリア戦記]]
==== 993 その他のヨーロッパ文学 ====
==== 994 アフリカ文学 ====
==== 995 アメリカ先住民語の文学 ====
==== 997 オーストラリア先住民語の文学 ====
==== 999 国際語による文学 ====
== 関連項目 ==
*[[w:日本十進分類法#要目表(第3次区分表)]]
== 外部リンク ==
*<del>[http://www.ndl.go.jp/jp/library/data/zan9.html 日本十進分類法新訂9版分類基準]([http://www.ndl.go.jp/ 国立国会図書館])</del>リンク切れ
*[https://www.kotono8.com/wiki/%E6%97%A5%E6%9C%AC%E5%8D%81%E9%80%B2%E5%88%86%E9%A1%9E%E6%B3%95%EF%BC%88%E8%A9%B3%E7%B4%B0%EF%BC%89 閾ペディアことのは 日本十進分類法(詳細)]
[[Category:日本十進分類法|*]]
[[it:Wikibooks:Classificazione decimale Dewey]]
fuj5qktt98yp1e132bxsy87xcgvjwgn
Windows入門
0
9400
301563
292382
2026-07-13T11:48:13Z
AkiR27User
90873
*[[Windows ターミナル]]追加
301563
wikitext
text/x-wiki
{{Pathnav|情報技術|frame=1}}
== Windowsとは ==
Windows(Microsoft Windows)とは、[[w:マイクロソフト|マイクロソフト社]]が開発した[[w:オペレーティングシステム|OS]]。家庭向けから企業向けまで幅広い範囲で使用されている。
== 最新バージョン ==
* Windows 11 バージョン 25H2<ref>{{Cite web
| url = https://learn.microsoft.com/ja-jp/windows/release-health/windows11-release-information
| title = Windows 11 のリリース情報
| date = 2024-10-01
| accessdate = 2024-10-25
}}</ref>
* Windows 10 バージョン 22H2(最終バージョン、サポート期限は2025年10月14日まで)<ref>{{Cite web
| url = https://learn.microsoft.com/ja-jp/windows/release-health/release-information
| title = Windows 10 リリース情報
| date = 2022-10-18
| accessdate = 2023-03-05
}}</ref>
* Windows Server 2025<ref>{{Cite web
| url = https://docs.microsoft.com/ja-jp/windows-server/get-started/windows-server-release-info
| title = Windows Server のリリース情報 {{!}} Microsoft Docs
| date = 2024/11/01
| accessdate = 2024/11/04
}}</ref>
== Windowsの世代別の特徴 ==
Windowsは、MS-DOSおよびPC-DOSのアドオンとして最初にリリースされました。その後、DOSを必要としない9x系が登場し、Windows 95からWindows Meまでのバージョンが展開されました。これらのバージョンの名称には、発行年の下二桁が冠されています(例: Windows 95、Windows 98)。これらのバージョンは一般に「9x系」として知られています。しかし、この系列は動作が不安定であるという問題がありました。そのため、Windows Meを最後に、完全にNT系へと移行しました。
===DOSアドオン時代===
DOSアドオン時代のWindowsは、MS-DOSとPC-DOSの機能を拡張するために開発されました。初期のWindowsは、グラフィカルユーザーインターフェイス(GUI)を提供し、ユーザーがコンピュータをより直感的に操作できるようにすることを目指していました。最初のバージョンであるWindows 1.0は1985年にリリースされ、その後のバージョンでは多くの機能が追加されていきました。
この時代のWindowsは、主にアプリケーションの実行やファイル管理に利用されており、MS-DOSのコマンドライン環境に依存していました。ユーザーは、プログラムを起動する際にDOSのコマンドを使用し、その後GUIに切り替える形で操作を行っていました。Windows 3.0(1990年)は、そのシンプルなデザインとマルチタスク機能により、広く受け入れられ、PC市場での地位を確立しました。
しかし、DOSアドオン時代のWindowsは、MS-DOSの制約により限界がありました。特に、メモリ管理やハードウェアの制御に関する問題が多く、安定性に欠けることがしばしばありました。このため、ユーザーはより高機能で安定したオペレーティングシステムを求めるようになり、結果的にWindows NT系への移行が進むこととなりました。
{|class="wikitable"
|+ DOSアドオン時代のWindows
!|Win Ver.!!DOS Ver.!!プロダクト名!!発売年
|-
|1.0||1.0||[[w:Microsoft Windows 1.0|Microsoft Windows 1.0]]||1985年
|-
|2.0||2.0||[[w:Microsoft Windows 2.0|Microsoft Windows 2.0]]||1987年
|-
|3.0||3.0||[[w:Microsoft Windows 3.0|Microsoft Windows 3.0]]||1990年
|-
|3.1||3.1||[[w:Microsoft Windows 3.1|Microsoft Windows 3.1]]||1993年
|}
Windows 3.1と同時期にリリースされたOS/2 Ver.2.11には、Windows互換環境であるWIN-OS/2が含まれていました。また、Windows 3.1がインストールされているPC向けには、OS/2 Ver.2.11 for Windowsがリリースされ、Windows 3.1を基にWIN-OS/2を構成することが可能でした。
OS/2 V2は完全な32ビットOSであり、その上にマルチDOS仮想マシン環境としてWIN-OS/2が構築されました。このため、16ビットコードと32ビットコードが保護機構なしに混在するWindows 9x系と比べて、OS/2はより安定していました。
===9.x系===
Windows 9.x系は、Windows 95、Windows 98、Windows Meなどを含む、Microsoftのオペレーティングシステムのシリーズです。この系列は、ユーザーに直感的な操作を提供するグラフィカルユーザーインターフェイス(GUI)を採用し、MS-DOSを基盤とした従来のWindowsとは異なり、MS-DOSを必要としない新しいアーキテクチャを導入しました。
Windows 95から始まる9.x系では、独自のカーネルを使用し、MS-DOSの制約から解放されました。これにより、より高いパフォーマンスと安定性を実現し、多くの家庭向けや一般ユーザー向けのアプリケーションに対応しました。しかし、動作が不安定であることや、メモリ管理の問題が指摘され、特に大規模なアプリケーションを実行する際には課題が残りました。
最終的に、9.x系の限界が明らかになるにつれて、より高機能で安定したNT系への移行が進みました。
{|class="wikitable"
|+ Windows 9.x系
!|Win Ver.!!DOS Ver.!!プロダクト名!!発売年
|-
|4.0||7.0<br />(OSR2以降は7.1)||[[w:Microsoft Windows 95|Windows 95]]||1995年
|-
|4.10||7.1||[[w:Microsoft Windows 98|Windows 98]]||1998年
|-
|4.10||7.1||Windows 98 Second Edition||1999年
|-
|4.90||8||[[w:Microsoft Windows Millennium Edition|Windows Me]]||2000年
|-
|}
==== OSR2 ====
OSR2(OEM Service Release 2)は、1996年にリリースされたWindows 95のマイナーアップデート版です。このバージョンは主にOEM(オリジナル機器メーカー)向けに提供され、初期のWindows 95からの改善が多数含まれています。
OSR2では、Internet Explorer 4.0が統合されており、ユーザーがインターネットに簡単に接続できるようになりました。また、USB(Universal Serial Bus)デバイスのサポートも追加され、さまざまな周辺機器を接続する利便性が向上しました。さらに、従来のFAT16ファイルシステムよりも効率的なFAT32が導入され、大容量のハードディスクをより効果的に利用できるようになったことも大きな特徴です。
OSR2は、Windows 95の最終バージョンとして位置づけられ、これによりWindows 98への移行がスムーズに進む重要な役割を果たしました。
:{| class="wikitable"
!style="width:4rem"|項目
!style="width:7rem"|OSR
!OSR2
|-
!発売時期
|1995年8月
|1996年12月
|-
!対象
|一般ユーザー
|OEM
|-
!販売形態
|パッケージ販売
|OEM提供のみ
|-
!主な機能
| -
|FAT32ファイルシステム、Internet Explorer 3.01、DirectX 3.0、USBサポート強化、IEEE 1394サポート、その他バグ修正
|}
=== NT系 ===
NT系(Windows NT)は、Microsoftが開発したオペレーティングシステムのシリーズで、最初のバージョンであるWindows NT 3.1が1993年にリリースされました。NTは「New Technology」の略で、主に企業向けやサーバー環境を想定した設計がされています。
NT系の特徴として、完全32ビットアーキテクチャを採用しており、高度なメモリ管理、セキュリティ機能、マルチタスク処理を実現しています。また、ハードウェアの抽象化層(HAL)を導入することで、さまざまなハードウェアプラットフォームに対応可能です。
この系列は、Windows 2000、Windows XP、Windows Serverなど、後の多くのWindowsバージョンの基盤となり、特にビジネス環境において広く利用されています。NT系は、その安定性とセキュリティにより、個人ユーザーから企業まで幅広いユーザーに支持されています。
Windows 8.1までのOSのサポートは終了している。
以下のオペレーティングシステムがNT系に該当する。なお、発売年は最初に発売された言語版もしくはエディションを記載する。
{|class="wikitable"
|+ Windows NT系のリビジョンと発売年次
|- style="position:sticky; top:0;"
! NT Ver. !! RTM Build !! プロダクト名 !! エディション !! 発売年
|-
|NT 3.1||528||Windows NT 3.1||Windows NT, Windows NT Advanced Server||1993年
|-
|NT 3.5||807||Windows NT 3.5||Workstation, Server||1994年
|-
|NT 3.51||1057||Windows NT 3.51||Workstation, Server||1995年
|-
|NT 4.0||1381||Windows NT 4.0||Workstation, Server, Server Enterprise Edition, Terminal Server, Embedded||1996年
|-
|NT 5.0||2195||[[W:Microsoft Windows 2000|Windows 2000]]||Professional, Server, Advanced Server, Datacenter Server||2000年
|-
|NT 5.1||2600||[[W:Microsoft Windows XP|Windows XP]]||Home, Professional, Media Center, Tablet PC, Starter, Embedded, Nエディション||2001年
|-
|NT 5.1||2600||Windows Fundamentals for Legacy PCs|| - ||2006年
|-
|NT 5.2||3790||[[W:Microsoft Windows Server 2003|Windows Server 2003]]||Standard, Enterprise, Datacenter, Web, Storage, Small Business Server, Compute Cluster Server||2003年
|-
|NT 5.2||3790||[[w:Microsoft Windows XP Professional x64 Edition|Windows XP x64 Edition]]||64-bit Edition, Professional x64 Edition||2003年<br/>2005年
|-
|NT 5.2||3790||[[W:Microsoft Windows Home Server|Windows Home Server]]||||2007年
|-
|NT 6.0||6000||[[W:Microsoft Windows Vista|Windows Vista]]||Starter, Home Basic, Home Premium, Business, Enterprise, Ultimate, N Edition||2006年<ref>ビジネス向け</ref><br />2007年<ref>一般消費者向け</ref>
|-
|NT 6.0||6001||Windows Vista Service Pack 1|| ||2008年
|-
|NT 6.0||6001||[[W:Microsoft Windows Server 2008|Windows Server 2008]]||Standard, Enterprise, Datacenter, Web, Foundation, Itanium-based Systems, Storage, Small Business Server||2008年
|-
|NT 6.0|| 6002 ||Windows Vista Service Pack 2|| ||2009年
|-
|NT 6.0|| 6002 ||Windows Server 2008 Service Pack 2|| ||2009年
|-
|NT 6.1|| 7600 ||[[W:Microsoft Windows 7|Windows 7]]|| Starter, Home Basic, Home Premium, Professional, Enterprise, Ultimate ||2009年
|-
|NT 6.1|| 7600 ||[[w:Windows Server 2008 R2|Windows Server 2008 R2]]||Standard, Enterprise, Datacenter, Web, Foundation, Itanium-based Systems||2009年
|-
|NT 6.2|| 9200 ||[[W:Microsoft Windows 8|Windows 8]]|| 無印, Pro , Enterprise , Windows RT ||2012年
|-
|NT 6.3|| 9600 ||[[W:Microsoft Windows 8#Windows_8.1|Windows 8.1]]<ref>Windows 8.1は、Windows 8の仕様変更・改良版です。</ref>|| 無印, Pro , Enterprise , Windows RT ||2013年
|-
|NT 10.0|| 10240 ||[[W:Microsoft Windows 10|Windows 10]]|| Home, Pro, Education/Pro Education, Enterprise/Enterprise LTSB ||2015年
|-
|NT 10.0|| 14393 ||[[W:Microsoft Windows Server 2016|Windows Server 2016]]||Standard, Enterprise, Datacenter||2016年
|-
|NT 10.0|| (なし) ||[[W:Microsoft Windows Server 2019|Windows Server 2019]]||Standard, Enterprise, Datacenter||2018年
|-
|NT 10.0|| (なし) ||[[W:Microsoft Windows Server 2022|Windows Server 2022]]||Standard, Datacenter, Datacenter: Azure Edition||2021年
|-
|NT 10.0|| (なし) ||[[W:Microsoft Windows Server 2025|Windows Server 2025]]||Standard, Datacenter, Datacenter: Azure Edition||2024年
|-
|NT 10.0|| 22000 ||[[w:Microsoft Windows 11|Windows 11]]||Home, Pro, Education, Pro For Workstations, Enterprise, IoT Enterprise||2024年
|}
==== クライアントOS ====
; Windows NT 3.1
: 1993年にリリースされた最初のNT系オペレーティングシステムで、主にサーバーやワークステーション向けに設計された。
; Windows NT 4.0
: 1996年にリリースされ、Windows 95のGUIを採用し、ユーザーフレンドリーなインターフェイスが特徴。クライアントおよびサーバー向けに広く使用された。
; Windows 2000
: 2000年に登場し、ビジネス向けに特化した機能や、セキュリティ向上が図られた。エンタープライズ環境での利用が推奨された。
; Windows XP
: 2001年にリリースされ、個人向けとビジネス向けの両方のエディションが登場。ユーザーインターフェイスの大幅な改善と、安定性、セキュリティの向上が評価された。
; Windows Vista
: 2007年に登場し、セキュリティ機能の強化や新しいインターフェイスが導入されたが、ハードウェア要件が高く、批判も受けた。
; Windows 7
: 2009年にリリースされ、Vistaの改善版として位置づけられ、使いやすさとパフォーマンスの向上が評価された。
; Windows 8/8.1
: 2012年に登場したWindows 8はタッチスクリーン操作を意識した設計で、2013年に8.1がリリースされ、ユーザーからのフィードバックを反映した改良が行われた。
; Windows 10
: 2015年にリリースされ、ユーザーのフィードバックを取り入れた機能が追加され、Windows 7と8の要素を統合した。定期的なアップデートが行われるサービスモデルを採用。
; Windows 11
: 2021年に発表され、新しいユーザーインターフェイスとともに、タスクバーやウィンドウの操作性が向上。新しいシステム要件が設定された。
==== サーバOS ====
; Windows NT Server 3.1
: 1993年にリリースされた最初のNT系サーバOSで、基本的なサーバ機能を提供し、企業向けに設計された。
; Windows NT Server 4.0
: 1996年に登場し、Windows 95のインターフェイスを採用。リモート管理機能やセキュリティの強化が図られ、広く普及した。
; Windows 2000 Server
: 2000年にリリースされ、Active Directoryを導入。ネットワーク管理が容易になり、信頼性とセキュリティが向上した。
; Windows Server 2003
: 2003年に登場し、Windows 2000 Serverの後継として、セキュリティ機能やパフォーマンスが大幅に改善された。
; Windows Server 2008
: 2008年にリリースされ、仮想化機能のHyper-Vが追加され、クラウド環境への対応が進んだ。また、サーバーマネージャーによる管理の簡素化が図られた。
; Windows Server 2012
: 2012年に登場し、さらに強化されたHyper-V機能や、ストレージ機能の向上が特徴。クラウドサービスとの統合が進められた。
; Windows Server 2016
: 2016年にリリースされ、コンテナ機能のサポートや、セキュリティ強化のための新機能が追加された。さらに、データセンター向けの機能が強化された。
; Windows Server 2019
: 2018年に登場し、Hybrid Cloud機能が強化され、オンプレミスとクラウドの統合が容易になった。また、セキュリティやストレージ機能も改善された。
; Windows Server 2022
: 2021年にリリースされ、セキュリティ強化や、クラウド接続機能の向上が図られ、データセンター向けの新機能も追加された。
; Windows Server 2025
: 2025年にリリースされ、AIや機械学習機能の統合、さらなるセキュリティの強化、クラウドネイティブアプリケーションがサポートされている。
== Windowsのセットアップ(クリーンインストール) ==
# まず、シリアルナンバーを購入します。
# microsoftの公式HPから.isoファイルをダウンロードします。
# DVDまたは、USBにRufusなどのソフトで書きこみます。
# パソコンにDVD、USBを差し込み、起動させてF2などのキーを連打してBIOSを開きます。
# (AMIbiosの場合)BOOTセクションに移動してUSBやディスクを最初に起動できるようにします。
# PCが対応している場合windowsブートロゴが表示され、インストーラが開きます。
# シリルナンバーを入力します。(windows8以降でパソコンのマザーボードを入れ替えるなどの大規模な改造した場合は入力しなくてもあとからMicrosoftアカウントのページに行って、元々使っていたナンバーを使えます。また、マザーボードを入れ替えたりしていない場合シリアルナンバーの入力画面は出ません)
# ライセンス条約を読んで、同意します。
# カスタム:Windows のみをインストールする(詳細設定)を押します。
# インストールするHDDかSSDを選択します。
# インストールが開始します
# セットアップ画面が出るので質問に答えてください。
# 最終処理が始まります(「もうすぐです」などの文字が黒い背景に出ます)
# デスクトップが出ます
# 完了!
== Windowsでの操作方法 ==
この節では基本操作や基礎知識を説明する。
=== スタートボタン ===
Windowsではスタートボタンから、ソフトを起動したり、シャットダウンすることができる。Windows 3.51以前のものとWindows 8を除くすべてのOSでは左下のWindowsマーク([[File:Windows logo - 2012.svg|15px]]など)があるところがスタートボタンと呼ばれる。また、キーボードのショートカットキーはWindowsキーである。
[https://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF#%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF 右クリック]することで、コマンドプロンプトやデバイスマネージャーなどの高度な設定を変更できるツールを開けるバージョンもある。
=== コントロールパネル ===
コントロールパネルは、Windowsオペレーティングシステムにおいて、システムやソフトウェアの設定を行うためのツールで、プリンタの設定から使用中のソフトウェアの管理など幅広い設定が行えます。異なるバージョンのWindowsでは、このツールの名称が異なる場合があります。
=== 設定アプリ ===
Windows 10以降、Microsoftは従来の「コントロールパネル」の機能を新しい「設定⚙」アプリに置き換える取り組みを進めています。設定アプリはより直感的で使いやすいインターフェースを提供し、モバイルデバイスやタッチスクリーンにも適しています。また、設定アプリは従来のコントロールパネルよりもさまざまな設定項目にアクセスしやすくなっており、新しい機能の追加やアップデートも継続的に行われています。このような動きは、Windowsの使いやすさや一貫性を向上させることを目指しています。
また、コントロールパネル内にある項目のいくつかは選択すると設定アプリに移動するようになっています。(回避可能です)
==== Windows Update ====
Windows Updateは、Windowsオペレーティングシステムの更新プログラムに関する情報を提供し、必要に応じてその更新プログラムを表示およびインストールするためのツールです。システムのセキュリティや機能の向上のために定期的な更新プログラムの適用が重要です。
==== デバイス マネージャー====
デバイス マネージャーは、ディスプレイ、プリンター、マウス、キーボードなどの周辺機器、およびPC内部のハードウェアやCPUなどを「デバイス」として管理します。このツールを使用することで、デバイスに関する情報を参照し、設定を変更できます。
また、コマンドプロンプトを使用して、デバイス マネージャーを起動することもできます(「<syntaxhighlight lang="shell" inline> mmc devmgmt.msc </syntaxhighlight>」コマンドを使用)。
また、右クリックメニューからも起動できます。
==== プログラムと機能 ====
「プログラムと機能」は、コンピュータにインストールされているアプリケーションの一覧を表示し、必要に応じてアプリケーションの削除や変更を行うためのツールです。また、Windowsの更新プログラムもここから管理できます。
==== 既定のプログラム ====
「既定のプログラム」は、特定のファイル拡張子やプロトコルに対して、どのアプリケーションが関連づけられるかを設定するためのツールです。例えば、ファイルの拡張子が「.docx」の場合、関連づけられているアプリケーションとして[[Microsoft Word]]を選択できます。
この設定を使用することで、特定のファイルを開く際に使用するアプリケーションを指定できます。
;注意
:Windows 10以降では、「設定⚙」が徐々にコントロールパネルの機能を置き換えつつあり、新しい設定オプションが提供されています。そのため、一部の設定項目はコントロールパネルではなく「設定⚙」で管理されています。ユーザーは特定の設定項目を見つけるために、Windowsのバージョンに応じて設定アプリを活用することをお勧めします。
=== ファイルの使いかた ===
ここでは、ファイルの使い方を説明する。Windowsのファイルでは、おもにWindowsでは、最も標準的なファイル形式を使っている。また、Windows各種では、あらかじめ写真など(イメージ画像など)が入っている場合が多い。
Windows独自の拡張子で代表的なものとしては
.exe (実行可能アプリケーション)
.bin(コマンドファイル)
がある。
また、タスクマネージャというソフトから標準のファイルアプリ「エクスプローラ」を閉じると、タスクバーまで消えてしまう。
=== PC ===
PCはPCに接続されている周辺機器の情報を表示するウインドウである。
カメラなどをUSB接続する場合はPCから開くこともできる。
Windows 8.1から現在の'''PC'''という名称になったが、
[[w:Microsoft Windows XP|Windows XP]]以前は'''マイコンピュータ'''、
[[W:Microsoft Windows Vista|Windows Vista]]では、'''コンピュータ'''、
[[W:Microsoft Windows 7|Windows 7]] と [[W:Microsoft Windows 8|Windows 8]]では、'''コンピューター'''
という名称であった。
=== ホットキー ===
ホットキーとは、画面上のメニューからマウスで選択して実行する命令や、特定の文字列の入力などの利用頻度が高い連続したキー操作を簡単なキー操作で実行する機能である。また、そのために割り当てられたキー入力の組み合わせ入力数を減らしたり、マウスを使わずに操作できる。Windowsには、3つのホットキーが搭載されている(デスクトップパソコンのみ)。
=== クリック/ダブルクリック/ドラッグ/右クリック/ホイール ===
クリックとはマウスの左側のボタンを1回クリックする動作のことを言い、右側を1回クリックすることを右クリックという。右クリックは基本プロパティを開くために使われていて、基本使われることはない。左側を2回クリックすることをダブルクリックと言い、アイコンの上でダブルクリックすると、ソフトウェアが起動する。
:左側のボタンを押したまま動かすとドラッグという動作になる。アイコンの上でドラッグをして、ファイルの移動などで使われるのが一般的である。
:ホイールとは中心にある軸のことを言い、スクロールの操作などに使われる。最近のマウスでは左右に動かせるマウスもある。
:一見どのパソコンにも共通しているような操作だが、微妙に違う。
:設定で左側のボタンと、右側のボタンの操作を入れ替えることができる。
=== 便利な操作 ===
'''ファイル名を指定して実行'''
[[File:Windows logo - 2012.svg|15px]]キーとRを同時に押すことで開ける。
[https://ja.wikipedia.org/wiki/Minecraft Minecraft]のデータを読み込む場合などに使用できる。
== 脚注 ==
<references/>
== 関連項目 ==
{{Commons|Category:Microsoft Windows|Microsoft Windows}}
{{Wikipedia|Microsoft Windows}}
{{Wikipedia|MS-DOS}}
*[[MS-DOS/PC DOS入門]] - [[w:cmd.exe|コマンドプロンプト]]の使い方など
*[[OSとアプリケーション]]
*[[拡張子ハンドブック]]
*[[Windows ターミナル]]
{{Stub|it}}
[[カテゴリ:Microsoft Windows]]
crfi54c75wekill5qqyim23hz0yo7rn
LPIC(level1)
0
9411
301486
296837
2026-07-13T08:30:58Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301486
wikitext
text/x-wiki
{{Pathnav|情報技術|frame=1|small=1}}
'''LPI認定''' (Linux Professional Institute Certified) とは、国際的な非営利団体 (NPO) である「LPI™(Linux Professional Institute:Linux プロフェッショナル協会)」が実施しているLinux技術者のための認定プログラムである。Linuxの認定試験としては、Red Hat社が実施している RHCE (Red Hat Certified Engineer) 試験や、 Turbolinux社の実施する Turbo-CE (Turbolinux Certified Engineer) 試験などがありますが、 LPI認定試験はベンダーやディストリビューションに依存せず、中立的な立場でLinux技術者の技術力認定を行っている。また、世界最大規模のLinux技術者の試験であるとも言える。
== LPI認定レベル1の概要 ==
LPI認定は、レベル1からレベル3まで3段階に分かれており、レベルが上昇するにつれて難易度は高くなる。レベル1は初級者、レベル2は中級者、レベル3は上級者と見なすことができます。 Linux経験年数の目安としては、レベル1では、半年~1年程度、レベル2では、 3〜4年程度とされています。現状では、認定はレベル順に取得していく必要があり、レベル2を取得するにはレベル1を、レベル3を取得するにはレベル2を先に取得しなければなりません。
{| class="wikitable" border="1" style="text-align:left"
! || レベル || 試験番号
|-
| || rowspan="2" | LPI試験レベル1
| 117-101 Linux一般1
|-
| || 117-102 Linux一般2
|-
| || rowspan="2" | LPI試験レベル2
| 117-201 Linux応用管理
|-
| || 117-202 Linuxネットワーク管理
|-
| || rowspan="2" | LPI試験レベル3
| 117-301 LPIC-3 Core
|-
| || 117-302 LPIC-3 Specialty Mixed Environment
|}
LPI認定レベル1の取得に必要な試験科目は「117-101:Linux一般1」と「117-102:Linux一般2」である。
=== Linux一般1試験の概要 ===
117-101(Linux一般1)は、LPI認定試験レベル1取得のための第1関門となります。出題数は、おおよそ65~75問であり、制限時間は90分となっています。合格には、 65%程度の正答率が必要です([[Linux一般1試験の概要]])。
{| class="wikitable" border="1" style="text-align:left"
! || 117-101 Linux一般1 || 内容
|-
| || rowspan="5" | ||1.101 ハードウェアとアーキテクチャ
|-
| ||1.102 Linux のインストールとパッケージ管理
|-
| ||1.103 GNU & UNIX コマンド
|-
| ||1.104 デバイス、ファイルシステム、FHS
|-
| ||1.105 X Windows System
|}
=== Linux一般2試験の概要 ===
117-102(Linux一般2)は、LPI認定試験レベル1取得のための第2関門となります。これが合格すれば、晴れてLPI認定レベル1は合格となり、認定証と認定カードを得られます。出題数は、おおよそ73問であり、制限時間は90分となっています。合格には、 65%程度の正答率が必要です([[Linux一般2試験の概要]])。
{| class="wikitable" border="1" style="text-align:left"
! || 117-102 Linux一般2 || 内容
|-
| ||rowspan="9" | || 1.105 カーネル
|-
| || 1.106 起動、シャットダウン、ランレベル
|-
| || 1.107 印刷
|-
| || 1.108 ドキュメント
|-
| || 1.109 シェルとシェルスクリプト
|-
| || 1.111 システム管理
|-
| || 1.112 ネットワーク基礎
|-
| || 1.113 ネットワークサービス
|-
| || 1.114 セキュリティ
|}
== LPIC (level1) のテキスト ==
=== Linux一般1試験のテキスト===
{| class="wikitable" border="1" style="text-align:left"
! || 117-101 Linux一般1 || テキストの目次
|-
| || rowspan="5" | ||1.101 [[/ハードウェアとアーキテクチャ|ハードウェアとアーキテクチャ]]
|-
| ||1.102 [[/Linux のインストールとパッケージ管理|Linux のインストールとパッケージ管理]]
|-
| ||1.103 [[/GNU & UNIX コマンド|GNU & UNIX コマンド]]
|-
| ||1.104 [[/デバイス、ファイルシステム、FHS|デバイス、ファイルシステム、FHS]]
|-
| ||1.110 [[/X Window System|X Window System]]
|}
=== Linux一般2試験のテキスト===
{| class="wikitable" border="1" style="text-align:left"
! || 117-102 Linux一般2 || テキストの目次
|-
| ||rowspan="9" | || 1.105 [[/カーネル|カーネル]]
|-
| || 1.106 [[/起動、シャットダウン、ランレベル|起動、シャットダウン、ランレベル]]
|-
| || 1.107 [[/印刷|印刷]]
|-
| || 1.108 [[/ドキュメント|ドキュメント]]
|-
| || 1.109 [[/シェルとシェルスクリプト|シェルとシェルスクリプト]]
|-
| || 1.111 [[/システム管理|システム管理]]
|-
| || 1.112 [[/ネットワーク基礎|ネットワーク基礎]]
|-
| || 1.113 [[/ネットワークサービス|ネットワークサービス]]
|-
| || 1.114 [[/セキュリティ|セキュリティ]]
|}
== 関連項目 ==
* [[リーナス・トーバルズ]]
== 下位階層のページ ==
*[[LPIC(level1) /ドキュメント]]
== 外部リンク ==
* [https://www.lpi.or.jp/ LPICの情報]
*[http://www.lpi.org/ja/ LPI日本支部]
* [http://www.linux.or.jp/ 日本のLinux情報]
* [http://jla.linux.or.jp/ 日本 Linux 協会]
[[en:LPI Linux Certification/Junior Level Linux Professional]]
[[Category:情報技術]]
m8g0layhgcxt6r52e14aacmu2mggqni
プログラミング言語
0
10048
301505
263208
2026-07-13T09:03:27Z
AkiR27User
90873
/* 目次 */ 追加
301505
wikitext
text/x-wiki
<!-- [[File:Programming-languages.png|center|Programming Languages]] -->
<div style="margin: auto; width: 12em; text-align: center; font-size: 4.4em; font-weight: bold; color: #AC8022; border: double 1px #2822AC; border-width: thick 0;"><span style="color:#2822AC">λ</span> プログラミング言語 <span style="color:#2822AC">Υ</span></div>
__NOTOC__
== 目次 ==
<!--
{| style="width:100%;"
| style="background-color: #D9DFFF; border: double 2px #BBCCFF; padding: 6px;" |
# [[/Introduction|Introduction]] {{stage short|25%|12 Sept 2005}}
# [[/Syntax Specification|Specifying the Syntax of Programming Languages]] {{stage short|25%|12 Sept 2005}}
# [[/Semantics Specification|Specifying the Semantics of Programming Languages]] {{stage short|50%|12 Sept 2005}}
# [[/Functional Languages|Functional Languages]] {{stage short|00%|12 Sept 2005}}
# [[/Imperative Languages|Imperative Languages]] {{stage short|00%|12 Sept 2005}}
# [[/Object-oriented Languages|Object-oriented Languages]] {{stage short|00%|12 Sept 2005}}
# [[/Scripting Languages|Scripting Languages]] {{stage short|00%|12 Sept 2005}}
# [[/Logical Languages|Logical Languages]] {{stage short|00%|12 Sept 2005}}
# [[/Aspect-oriented Languages|Aspect-oriented Languages]] {{stage short|00%|12 Sept 2005}}
# [[/Domain-specific Languages|Domain-specific Languages]] {{stage short|00%|12 Sept 2005}}
# [[/Procedural Languages/]]
# [[/Concurrent Languages/]]
|}
-->
# [[/はじめに|はじめに]]
# [[/文法仕様|プログラミング言語の文法仕様]]
# [[/意味論|プログラミング言語の意味論]]
# [[/特徴|プログラミング言語の特徴]]
# [[/関数型言語|関数型言語]]
# [[/命令型言語|命令型言語]]
# [[/オブジェクト指向言語|オブジェクト指向言語]]
# [[/スクリプト言語|スクリプト言語]]
# [[/論理型言語|論理型言語]]
# [[/アスペクト言語|アスペクト言語]]
# [[/ドメイン特化型言語|ドメイン特化型言語]]
# [[/プロシージャ型言語|手続き型言語]]
# [[/並行処理言語|並行処理言語]]
[[Category:プログラミング言語|*]]
{{NDC|007.64}}
6jg4gf88wjxyr3llrjjf3xm41d9s2jo
デーヴァナーガリー文字
0
11056
301502
66907
2026-07-13T08:54:30Z
AkiR27User
90873
[[デーヴァナーガリー文字/発音転写]]追加
301502
wikitext
text/x-wiki
{{ヒンディー語}}
デーヴァナーガリー文字は[[ヒンディー語]]、[[w:サンスクリット語]]、[[w:マラーティー語]]、[[w:ネパール語]]にも用いられる。一つの文字は常に一つの音を表す。もともとの表には11の母音と33の子音があり、外来語を表すために追加された母音1文字、子音7文字を加えて52文字ある。
デーヴァナーガリーにある横棒はシローレーカーというもので、単語のつながりを表す。ただし、थなどを含む語ではシローレーカーが途切れることがある。
ヒンディー語では文字の発音は西部(首都[[w:デリー]]など)、と東部([[w:ウッタル・プラデーシュ州]]など)で異なる点がある。
*[[デーヴァナーガリー文字/母音・子音|母音・子音]]
*[[デーヴァナーガリー文字/子音の結合|子音の結合]]
*[[デーヴァナーガリー文字/筆記法|筆記法]]
*[[デーヴァナーガリー文字/発音|発音]]
*[[デーヴァナーガリー文字/発音転写|発音転写]]
{{DEFAULTSORT:てうあなかりもし}}
[[Category:ヒンディー語|デ *]]
[[de:Devanagari]]
[[en:Devanagari]]
[[fr:Devanagari]]
9dpbjg4hzhhhmqmb6dlxupm60pllyhz
刑法第43条
0
12657
301479
295852
2026-07-12T23:35:14Z
Tomzo
248
/* 中止未遂 */
301479
wikitext
text/x-wiki
#[[法学]]>[[刑事法]]>[[刑法]]>[[コンメンタール刑法]]
#[[法学]]>[[コンメンタール]]>[[コンメンタール刑法]]
== 条文 ==
(未遂減免)
; 第43条
: 犯罪の実行に着手してこれを遂げなかった者は、その刑を減軽することができる。ただし、自己の意思により犯罪を中止したときは、その刑を減軽し、又は免除する。
== 解説 ==
{{main|未遂犯論}}
本条は[[未遂犯論|未遂犯]]の刑についての規定である。本条後段の、「自己の意思により犯罪を中止した」場合のことを中止未遂といい、この場合には刑の必要的減免が定められている。ここでいう自己の意思によりとは、犯罪をやろうと思えばでき、中止するような事情がないにもかかわらず自発的に中止することを言い、例えばパトカーが近付いてきたので中止して逃亡したような場合には、中止未遂ではない。これに対して、中止未遂以外の場合を障害未遂といい、この場合の刑の減軽は裁判所の裁量に委ねられている。
==判例==
===未遂罪の成立時期(実行の着手)・予備犯===
#[https://www.courts.go.jp/hanrei/56448/detail2/index.html 住居侵入、窃盗未遂](最高裁判決昭和23年4月17日)
#;窃盗罪の着手
#:被告人等は共謀の上馬鈴薯その他食料品を窃取しようと企てA方養蠶室に侵入し懐中電燈を利用して食料品等を'''物色中'''警察官等に發見せられてその目的を遂げなかつたというのであつて、被告人等は窃盗の目的で他人の屋内に侵入し財物を物色したというのであるからこのとき既に窃盗の着手があつたとみるのは當然である。
#[https://www.courts.go.jp/hanrei/55357/detail2/index.html 強盗殺人未遂、銃砲等保持禁止令違反](最高裁判決 昭和24年12月21日)[[日本国憲法第38条]]、[[刑事訴訟法第319条]]
#;強盗の予備をなしたものがその実行に着手した場合と強盗予備罪の成否
#:強盗の予備をしたものかその実行に着手した以上それが未遂に終ると既遂になるとを問わずその予備行為は未遂または既遂の強盗罪に吸収されて独立して所罰の対象となるものではない。本件において、原審は既に強盗殺人未遂罪を認定所断したのであるから、もはや所論の予備行為は所罰の対象として独立して審判さるべきものではないのである。原判決の事実摘示は、独立した強盗予備罪を構成する罪となるべき事実を認定した意味ではなく単に被告人が本件犯行を為すに至るまでの経過を示しその犯情の一端を明らかにする目的を以て認定掲記したに過ぎない。従つて原審が該事実に対し[[刑法第237条]]を適用しなかつたのはむしろ当然であり原判決には所論のような違法はない。
#<span id="名古屋高裁判決昭和25年11月14日"/>[https://www.courts.go.jp/hanrei/23295/detail2/index.html 窃盗同未遂恐喝同未遂被告事件](名古屋高裁判決昭和25年11月14日)
#;土蔵侵入行為と窃盗未遂
#:一般に土蔵内には、窃取すべき財物のみがあつて他の犯罪の目的となるものがないのが通常であるから、土蔵に侵入する行為又は侵入しようとした行為は、窃盗に著手したものと解すべきである。
#<span id="最高裁決定昭和37年11月8日"/>[https://www.courts.go.jp/hanrei/57007/detail2/index.html 殺人予備](最高裁決定昭和37年11月8日)[[刑法第201条]]
#;殺人予備罪の共同正犯にあたるとされた事例。
#:殺人の目的を有する者から、これに使用する毒物の入手を依頼され、その使途を認識しながら、右毒物を入手して依頼者に手交した者は、右毒物による殺人が予備に終つた場合に、殺人予備罪の共同正犯としての責任を負うものと解すべきである。
#<span id="最高裁決定昭和45年7月28日"/>[https://www.courts.go.jp/hanrei/51000/detail2/index.html 強姦致傷](最高裁決定 昭和45年7月28日)
#;自動車により婦女を他所へ連行したうえ強姦した場合につき婦女を自動車内に引きずり込もうとした時点において強姦罪の実行の着手があるとされた事例
#:被告人が、外一名と共謀のうえ、夜間一人で道路を通行中の婦女を強姦しようと企て、共犯者とともに、必死に抵抗する同女を被告人運転のダンプカーの運転席に引きずり込み、発進して同所から約5,800メートル離れた場所に至り、運転席内でこもごも同女を強姦した本件事実関係のもとにおいては、被告人が同女をダンプカーの運転席に引きずり込もうとした時点において強姦罪の実行の着手があつたものと解するのが相当である。
#::被害者を拘禁した現場と姦淫した現場が乖離し、移動の間に被害者が受傷した事案について、拘禁行為に姦淫行為の実行の着手を認め、結果的加重犯である強姦致傷を認めた事例。
#<span id="最高裁決定平成16年3月22日"/>[https://www.courts.go.jp/hanrei/50059/detail2/index.html 殺人,詐欺被告事件](最高裁決定平成16年3月22日)[[刑法第38条]]
#;被害者を失神させた上自動車ごと海中に転落させてでき死させようとした場合につき被害者を失神させる行為を開始した時点で殺人罪の実行の着手があるとされた事例
#:クロロホルムを吸引させて失神させた被害者を自動車ごと海中に転落させてでき死させようとした場合において,クロロホルムを吸引させて失神させる行為が自動車ごと海中に転落させる行為を確実かつ容易に行うために必要不可欠であり,失神させることに成功すれば,それ以降の殺害計画を遂行する上で障害となるような特段の事情が存しなかったなど判示の事実関係の下では,クロロホルムを吸引させる行為を開始した時点で殺人罪の実行の着手があったと認められる。
#:*<u>犯罪の実行行為自体ではなくとも,実行行為に密接であって,被害を生じさせる客観的な危険性が認められる行為に着手することによっても未遂罪は成立し得る。</u>
#[https://www.courts.go.jp/hanrei/87586/detail2/index.html 詐欺未遂被告事件](最高裁判決平成30年3月22日)
#;詐欺罪につき実行の着手があるとされた事例
#:現金を被害者宅に移動させた上で,警察官を装った被告人に現金を交付させる計画の一環として述べられた嘘について,その嘘の内容が,現金を交付するか否かを被害者が判断する前提となるよう予定された事項に係る重要なものであり,被害者に現金の交付を求める行為に直接つながる嘘が含まれ,被害者にその嘘を真実と誤信させることが,被害者において被告人の求めに応じて即座に現金を交付してしまう危険性を著しく高めるといえるなどの本件事実関係の下においては,<u>当該嘘を一連のものとして被害者に述べた段階</u>で,被害者に現金の交付を求める文言を述べていないとしても,詐欺罪の実行の着手があったと認められる。
===既遂時期===
#[https://www.courts.go.jp/hanrei/55361/detail2/index.html 強盗傷人、住居侵入](最高裁判決昭和23年6月12日)
#;強盗傷人罪の成立
#:強盗に着手した者がその実行行為中被害者に暴行を加へて傷害の結果を生ぜしめた以上財物の奪取未遂の場合でも強盗傷人罪の既遂をもつて論すべきである。
#[https://www.courts.go.jp/hanrei/55508/detail2/index.html 強盗](最高裁判決昭和24年6月14日)
#;強盗の既遂時期
#:強盜の目的で会社の事務所に押入り、居合わせた事務員全部を縛つて、そこに有つた洋服類を着込みその他の物は、荷造りをして持出すばかりにした以上は強盜の既遂を以て論ずべきである。
#[https://www.courts.go.jp/hanrei/55510/detail2/index.html 強盗、住居侵入](最高裁判決昭和24年12月3日)[[刑法第236条]]
#;犯行現場での逮捕と強盜既遂罪の成立
#:被告人等第在宅の家人五人全部を縛り上げ目隠をした後一時間に亘り家内の金品を取出し現金をポケツトに入れ衣類等或は行李、リツクサツクにつめ込み、或は風呂敷に包み、或は着込み又は懐中したときは金品を自己の実力支配内においたことは明らかであるから被告人等が右金品を戸外に持出す前現場で逮捕されたことは強盜既遂罪の成立に影響がない。
#[https://www.courts.go.jp/hanrei/72309/detail2/index.html 酒税法違反](最高裁判所第一小法廷判決、昭和26年9月6日、昭和26年(れ)第845号、最高裁判所裁判集刑事52号179頁)
#;発覚当時濁酒製造の未遂であつたものが起訴当時までに自然と濁酒となつた場合と既遂の認定
#:仮りに所論のごとく濁酒にならない中に税務署員に発見され、従つてその発覚当時(昭和23年11月17日)濁酒製造の未遂であつたとしても、本件起訴当時(昭和23年12月23日)までには、時の経過により自然に濁酒となり、従つて、判示仕込み行為の当然の結果として既遂の段階に達していたこと明白であるから(なお記録50丁の次に添附された昭和23年12月22日附押収濁酒8斗6升買受受取書参照)、結局原判決には所論の違法も認められない。
===中止未遂===
#[https://www.courts.go.jp/hanrei/56488/detail2/index.html 強姦致死](最高裁判決 昭和24年07月09日)
#;強姦の点が未遂に終つた強姦致死罪の擬律
#:強姦致死罪は単一な[[刑法第181条]]の犯罪を構成するものであつて、強姦の点が未遂であるかどうか及びその未遂が中止未遂であるか障礙未遂であるかということは、単に情状の問題にすぎないのであつて、処断刑に変更を来たすべき性質のものではないから、本罪に対しては刑法第181条を適用すれば足り、未遂軽減に関する[[刑法第43条|同法第43条]]本文又は但書を適用すべきものではない。
#;驚愕によつて犯行を中止した場合と中止未遂
#:犯罪の実行に着手した後、驚愕によつて犯行を中止した場合においても、その驚愕の原因となつた諸般の状況が、被告人の犯意の遂行を思い止まらしめる障碍の事情として客観性のあるものと認められるときは、障碍未遂であつて中止未遂ではない。
#[https://www.courts.go.jp/hanrei/56733/detail2/index.html 強姦致傷、不法監禁](最高裁判決 昭和24年07月12日)
#;数名共謀による強姦致傷罪と共犯者の一人の犯行の中止
#:甲が他の数名の者と同一帰女を強姦しようと共謀し、右数名の者が同女を強いて姦淫し、因つて同女に傷害の結果を与えたときは、甲が<u>自己の意思により姦淫することを中止したとしても</u>、甲は他の共犯者と同様強姦致傷罪の共同正犯の責を負い、中止未遂とはならない。
#::「共犯と中止未遂」に関する判例
#:::複数で犯行に及び、途中で翻意して自らの意思で犯罪行為を中止したとしても、共犯による犯罪行為が継続していれば、中止未遂とは評価されない(そもそも未遂でもない)。共犯者に働きかけ犯罪行為を中止させる行為をもって、中止未遂と評価できる。
#[https://www.courts.go.jp/hanrei/70749/detail2/index.html 窃盗未遂](最高裁判決昭和24年12月8日)
#;窃盜の障害未遂に該る一場合と審理不尽の有無
#:原判決は「全家不在に乘じて同家六畳間の箪笥の抽出等から同人所有の衣類等を窃取しようとしていた際偶々家人が外出先から帰ってきたためその目的を遂げなかつたものである」旨を判示している。それ故、本件の未遂は、外界の事情に刺激されることなしに犯人が内心的原因により全く任意に中止したものではなく「全家不在に乗じて」窃盜の実行に着手していた際「たまたま家人が外出先から帰って来た」と言う外界に生起した客観的原因により未遂に終つたものであることは、原判決において明らかに判示されている。従つて、本件を障害未遂と認定した原判決は、相当であつて所論の審理不尽の違法を認めることはできない。
#[https://www.courts.go.jp/hanrei/55455/detail2/index.html 強盗](最高裁判決昭和24年12月17日)
#;共犯者の中一人は自己の意思に因り犯行を中止し他の者が犯行の目的を遂げた場合中止未遂の規定の適用の有無
#:共犯者の中一人が自己の意思に因り犯行を中止しても、他の者の犯行を阻止せず放任し、その者が犯行を遂げた場合は、前者に対し中止未遂の規定を適用することはできない。
#:*被告人において、その共謀者たる一審相被告人Bが判示のごとく右金員を強取することを阻止せず放任した以上、所論のように、被告人のみを中止犯として論ずることはできない。
===不能犯===
#<span id="最高裁判決昭和24年1月20日"/>[https://www.courts.go.jp/hanrei/55271/detail2/index.html 殺人未遂、放火](最高裁判決昭和24年1月20日)旧・刑事訴訟法第360条(現[[刑事訴訟法第335条]]に相当)
##'''青酸加里を入れて炊いたため黄色を呈し臭気を放つている米飯は何人もこれを食べることは絶対にないという実験則の有無'''
##:青酸加里を入れて炊いた本件米飯が黄色を呈し臭気を放つているからといつて何人もこれを食べることは絶対にないと断定することは実験則上これを肯認し得ない。
##'''殺人罪に関する不能犯の主張と旧刑訴法第360条第2項にいわゆる「法律上犯罪ノ成立ヲ阻却スヘキ原由タル事実上ノ主張」'''
##:かかる不能犯の主張は行為と結果との因果関係を不能なりとするものであるから行為の外結果の発生を犯罪の積極的構成要件とする本件殺人罪においては結局罪となるべき事実を否定する主張に帰着する。されば旧刑訴法第360条第2項にいわゆる「法律上犯罪の成立を阻却すべき原由たる事実上の主張」換言すれば、犯罪構成要件以外の事実であつてその事実あるがため法律上犯罪不成立に帰すべき原由たる事実上の主張に該当しない。
#<span id="最高裁判決昭和24年1月20日"/>[https://www.courts.go.jp/hanrei/74744/detail2/index.html 強盗、殺人未遂](最高裁判決昭和23年9月18日)
#;殺人未遂罪と不能犯
#:刑法第43条にいわゆる<u>「犯罪の実行に着手し之を遂げざるもの」とは、その行為を以て犯人の予見する結果を惹起することができる実行行為に着手し、その犯罪を遂げなかつた場合を意味し、その実行行為を以ては絶対に犯人の予見する結果を惹起することができない場合には、同条の未遂罪を以て論ずることができない</u>ことは所論の通りであるが、原判決の認定するところによれば、被告人等は共謀して自動車運転手を殺害して自動車を強奪しようと企て、所携のバンドを自動車運転手Aの頸部に掛けて締め付けたが、偶々該バンドが切れた為めに殺害の目的を遂げなかつたと云うのであり、しかして右バンドが紙製擬革品であつても、右の方法を以つてすれば絶対に人を殺害することができないものではなく、殺害の結果を惹起する危険は十分あつたのであるが、偶々、右バンドが切れたために殺害の目的を遂げることができなかつたと云うに過ぎない。また、犯罪の時刻及び場所が殺人を行うに不適当であつたからと云つて、殺害の結果が発生しないと云うことができないことも自明のことである。したがつて本件殺人未遂の点は、所論のように、いわゆる不能犯にはあたらない。
#<span id="最高裁決定昭和35年10月18日"/>[https://www.courts.go.jp/hanrei/55798/detail2/index.html 覚せい剤取締法違反](最高裁決定昭和35年10月18日)
#;覚せい剤製造未遂犯の成立する事例。
#:いやしくも覚せい剤の製造を企て、それに用いた方法が科学的根拠を有し、当該薬品を使用し、当該工程を実施すれば本来覚せい剤の製造が可能であるが、ただその工程中において触媒として使用せる或る種の薬品の量が必要量以下であつたため、成品を得るに至らず、もしこれを二倍量ないし三倍量用うれば覚せい剤の製造が可能であつたと認められる場合には被告人の所為は覚せい剤製造未遂犯をもつて論ずべく、不能犯と解すべきではない。
#<span id="東京高裁判決昭和49年10月24日"/>[https://www.courts.go.jp/hanrei/20580/detail2/index.html 爆発物取締罰則違反被告事件](東京高裁判決昭和49年10月24日)
#;爆発物取締罰則1条の爆発物の「使用」に当たらないとされた事例
#:導火線を工業雷管に接続するために用いた接着剤が導火線の心薬である黒色火薬に浸透したため、点火しても燃焼が中断し工業雷管を起爆させることのできない本件ピースかん爆弾の導火線に点火して投てきした行為は、爆発物取締罰則1条にいう爆発物の「使用」に当たらない。
#:*「不能犯」である。
------
{{前後
|[[コンメンタール刑法|刑法]]
|[[コンメンタール刑法#1|第1編 総則]]<br>
[[コンメンタール刑法#1-8|第8章 未遂罪]]<br>
|[[刑法第42条]]<br>(自首等)
|[[刑法第44条]]<br>(未遂罪)
}}
{{stub|law}}
[[Category:刑法|043]]
[[Category:未遂罪|043]]
hcm4biz69ik254pgbu6yl54us4x21kt
オペレーティングシステム
0
13844
301511
301328
2026-07-13T09:45:03Z
AkiR27User
90873
/* 関連項目 */ [[/カーネル]]追加
301511
wikitext
text/x-wiki
本書は、コンピュータシステムにおける中心的な役割を果たすオペレーティングシステム(OS)の深層に迫ることを目的としています。OSは、プロセス管理、メモリ管理、ファイルシステム、デバイス管理、セキュリティ、そしてプロセス間通信といった多岐にわたる機能を通じて、コンピュータの効率的な運用と安定性を支えています。本書では、これらの基本的かつ重要な要素に焦点を当て、理論的な背景から実践的な応用に至るまで、読者に体系的かつ深い理解を提供します。
オペレーティングシステムの設計思想とその進化は、現代の計算機科学における基盤であり、システムの性能、セキュリティ、柔軟性に決定的な影響を与えることを本書を通じて明確にします。読者は、OSの構造を単なる抽象的な理論として捉えるのではなく、実際のシステムにおける適用方法とその効果を理解することが求められます。
本書は、学生、研究者、そして業界の実務者が、オペレーティングシステムに関する深い知識を培い、現実の問題解決に結びつけるための道標となることを目指しています。技術的な詳細に立脚しながらも、各章はその背後にある理論と実務の架け橋となることを意図し、全ての読者が実践的な視点をもって学びを深められるように構成されています。
== 序論 ==
=== コンピューターシステムの概要 ===
現代社会において、コンピューターシステムは我々の日常生活やビジネス活動において不可欠な存在となっています。この章では、コンピューターシステムの根幹をなす基本構成要素に焦点を当て、その洗練された構造が如何にして機能するかを探求します。
==== ハードウェアの役割 ====
プロセッサ、メモリ、デバイスなどのハードウェアは、コンピューターシステムの根幹をなす要素であり、計算とデータ処理の基盤を提供しています。プロセッサは高度な演算能力を有し、プログラムの実行やデータ処理を担当します。メモリは、プロセッサが効率的にアクセスできるようにデータや命令を一時的に保持し、効率的な処理を支えます。デバイスは、入出力を制御し、外部機器との連携を担当します。これらのハードウェアコンポーネントが連携することで、コンピューターシステムは多様なタスクを遂行し、我々の日常生活に欠かせない存在となっています。
==== ソフトウェアの役割 ====
ソフトウェアは、ハードウェアを効果的に制御し、様々なタスクを実行します。オペレーティングシステムは、ハードウェア資源を管理し、アプリケーションソフトウェアが効果的に動作する環境を提供します。アプリケーションソフトウェアは、ユーザーのニーズに合わせて機能し、データの処理や情報の提供などを行います。ソフトウェアの協力により、ユーザーエクスペリエンスが向上し、リソースが最適に利用されます。
==== 通信機構の役割 ====
ネットワーク技術や通信プロトコルは、異なるコンピューターシステム同士を結びつけ、情報の共有と連携を可能にします。これにより、データの移動やリモートアクセスが実現され、情報社会の基盤を支えています。通信機構によって、地理的な制約を超えてリソースや情報を利用できるようになり、グローバルなコネクティビティが形成されます。これらの要素が緊密に連携し、複雑な機能を実現しているコンピューターシステムの進化を探求します。
=== オペレーティングシステムの役割と進化 ===
オペレーティングシステム(OS)は、コンピューターシステムにおいて不可欠な仲介者としての役割を果たしています。その基本的な役割は多岐にわたり、コンピュータの効率的な運用とユーザーエクスペリエンスの向上を担保します。この節では、オペレーティングシステムが果たす主要な役割に焦点を当て、その進化と歴史的変遷を明らかにします。
; [[#プロセス管理|プロセス管理]]
: オペレーティングシステムは、同時に複数のプロセスを実行し、リソースの適切な割り当てとスケジューリングを担当します。これにより、複数のタスクが同時に実行され、効率的な利用が可能となります。
; [[#メモリ管理|メモリ管理]]
: メモリの管理は、オペレーティングシステムが物理メモリを仮想メモリにマッピングし、アプリケーションが必要なメモリを確保できるようにする役割を果たします。ページングやセグメンテーションなどの手法が導入され、効率的なメモリ使用が可能となります。
; [[#ファイルシステム|ファイルシステム]]
: オペレーティングシステムは、データの永続的な保存やアクセスを管理するためにファイルシステムを提供します。ディレクトリ構造、ファイルの作成、読み書き、削除などの機能が含まれます。
; [[#デバイス管理|デバイス管理]]
: デバイスドライバや入出力の管理を通じて、オペレーティングシステムは様々なデバイスとの通信を取り持ちます。プリンタ、ハードディスク、ネットワークカードなど、異なるデバイスとの連携を調整し、シームレスな操作を提供します。
==== 進化と挑戦 ====
オペレーティングシステムはその発展の中で、様々な進化と挑戦に直面してきました。時代とともに変わる技術や要件に順応し、新たな機能やアーキテクチャが取り入れられてきました。
以下はその進化の一端を探るものです。
; 分散コンピューティングの台頭: インターネットの普及と共に、分散コンピューティングが注目を浴びました。オペレーティングシステムは、複数のコンピュータが連携して処理を行う分散環境に対応する必要があり、ネットワーキングや通信プロトコルの統合が求められました。
; 仮想化技術の導入: 仮想化技術が台頭する中、オペレーティングシステムはハイパーバイザーといった仮想化層を介して、複数の仮想マシンをホストする能力を備えるようになりました。これにより、物理リソースの柔軟な利用や隔離が可能となりました。
; クラウドコンピューティングの普及: クラウドコンピューティングの浸透により、オペレーティングシステムはクラウド環境に最適化されるよう進化しました。サービス提供者としての要件や、クラウド上で動作するアプリケーションの要求に対応するための新たな機能が組み込まれました。
; セキュリティの強化: インターネットの普及に伴い、セキュリティの脅威も増加しました。オペレーティングシステムは、より堅牢でセキュアな動作を保証するための仕組みを導入し、ユーザーデータやシステムの安全性を向上させる方向に進化しました。
; リアルタイム処理の要請: リアルタイム性が求められるシステムが増加する中、オペレーティングシステムはリアルタイム処理への対応が重要となりました。組み込みシステムや制御システムにおいて、時間的な制約を満たすことが要求されています。
; モバイルデバイスへの適応: スマートフォンやタブレットなどのモバイルデバイスが普及するにつれ、オペレーティングシステムはモバイルプラットフォームに特化した機能やエネルギー効率の向上などに焦点を当てました。
これらの進化と挑戦は、オペレーティングシステムが未来の技術とニーズに対応し続けるための基盤となっています。将来的な展望では、人工知能、量子コンピューティング、エッジコンピューティングなどが新たな課題となり、オペレーティングシステムはこれらの分野においてどのように進化していくかが注目されています。
=== 基本的な概念と用語の紹介 ===
オペレーティングシステムの理解には、複数の基本的な概念や用語への理解が欠かせません。これらの用語の統一的な理解が、後の章で深化する知識の基盤となります。
; プロセス: プロセスは、実行中のプログラムのインスタンスであり、メモリ上での実行状態を指します。オペレーティングシステムはプロセスの生成、スケジューリング、同期、通信などを管理し、複数のプロセスが協調して作業できるようにサポートします。
; メモリ管理: メモリ管理は、プログラムやデータがメモリ内でどのように配置され、アクセスされるかを制御します。仮想メモリ、ページング、セグメンテーションなどの概念が含まれ、オペレーティングシステムがメモリリソースを最適に利用できるようにします。
; ファイル: ファイルはデータを永続的に保存するための概念であり、オペレーティングシステムが提供するファイルシステムによって管理されます。ファイルはディレクトリに組織され、構造的に管理されます。
; デバイス: デバイスは、コンピューターシステムと外部機器とのインターフェースを提供する要素です。デバイスはデバイスドライバによって制御され、オペレーティングシステムとの間で効果的な通信を実現します。
; ファイルディスクリプタ: ファイルディスクリプタは、オープンされたファイルやデバイスへのアクセスを識別するための抽象的な概念です。プロセスはファイルディスクリプタを使用してファイルやデバイスにアクセスし、読み書きなどの操作を行います。
; システムコール: システムコールは、ユーザープログラムがオペレーティングシステムのサービスを利用するための手段です。プロセスがオペレーティングシステムに対してリクエストを送り、必要なサービスを受けることができます。
これらの基本的な概念と用語への理解が、オペレーティングシステムにおけるさまざまな機能やメカニズムを理解する上での出発点となります。深い知識の構築に向けて、これらの概念を綿密に理解していきましょう。
{{コラム|width=stretch|最初のオペレーティングシステムは?|2=最初のオペレーティングシステム(OS)は、1950年代に開発された「GM-NAA I/O」(General Motors - North American Aviation Input/Output System)とされています。これは、IBM 701コンピューターのために開発されたもので、バッチ処理システムとして機能しました。
その後、1956年には「GM-NAA I/O」を拡張し、より洗練された機能を持つオペレーティングシステム「SHARE Operating System」が登場しました。これは、ユーザーが独自のプログラムを開発し、それを他のユーザーと共有するための環境を提供しました。
一方で、UNIVAC Iコンピューターのために開発された「EXEC I」も初期のオペレーティングシステムの一例です。これは、バッチ処理をサポートするもので、1950年代後半に登場しました。
最初のオペレーティングシステムの起源についての議論が存在しますが、Fortranモニタもその一例です。Fortranモニタは、1956年にIBM 704コンピューターのために開発されたもので、バッチ処理をサポートするためのものでした。これは、プログラムの実行順序やリソースの管理を行う初期のオペレーティングシステムの特徴を持っています。
ただし、同時期に他のシステムでもオペレーティングシステムに近い機能を果たるものが開発されており、最初のオペレーティングシステムが何であるかについては議論の余地があります。初期のコンピューターでは、プログラム実行やリソース管理に関する機能が、特定のプログラムやモニタープログラムなどに分散していたことが一般的でした。
これらの初期のオペレーティングシステムは、コンピューターのリソース(特にプリンタやテープドライブなどの入出力装置)を効率的に利用するためのもので、その後の発展に影響を与えました。
}}
<!--
OSをモニタという慣習
"モニタ"(Monitor)という用語がオペレーティングシステムに関連して使われるようになったのは、初期のコンピュータシステムの時代に遡ります。この用語は、コンピュータ科学の歴史の中でいくつかの意味合いで使われてきました。
初期の時点では、"モニタ"はプログラムや処理の監視を指す言葉として使われていました。例えば、FortranモニタやIBM 704のGM-NAA I/Oモニタなどがその一例です。これらのモニタは、バッチ処理やジョブ制御、リソース管理を担当していました。
その後、"モニタ"の概念はオペレーティングシステム全体を指す一般的な用語へと発展しました。1960年代には、オペレーティングシステム全体を指して"モニタプログラム"(Monitor Program)と呼ばれ、これが次第に"オペレーティングシステム"としての意味を帯びるようになりました。
このような言葉の変遷は、初期のコンピュータ科学の発展とともに進み、異なるコンピュータ環境やプロジェクトでの用語の使い方が重なり合って形成されました。
::リアルタイムモニタ・マルチタスクモニタなど
-->
== プロセス管理 ==
=== プロセスの基本概念 ===
プロセスは、コンピュータシステム内で実行されるプログラムの実行単位です。それはプログラムのコード、データ、実行状態など、実行に必要な情報を含みます。プロセスには一意のプロセスIDが割り当てられ、オペレーティングシステムはこれらのプロセスを管理し、リソースの割り当てや制御を担当します。
=== プロセスのスケジューリングと管理 ===
プロセスのスケジューリングと管理
プロセスのスケジューリングは、複数のプロセスが競合する場合に、どのプロセスを優先して実行するかを決定する仕組みです。スケジューリングアルゴリズムは、公平性、優先度、待ち時間などの要因を考慮して、効率的かつ公正なリソース利用を実現します。オペレーティングシステムはまた、プロセスの生成、終了、中断などを管理し、メモリやCPUの効率的な利用を促進します。
=== プロセス同期と通信 ===
複数のプロセスが同時に実行される際に、これらのプロセスが協調して動作するためには、プロセス同期と通信が必要です。同期は、プロセス間での相互の進捗状況を合わせ、競合状態やデータ不整合を防ぎます。通信は、プロセス間でデータを受け渡し、情報を共有するための仕組みです。これにより、連携してタスクを達成することが可能となります。
=== プロセス間通信と同期の機構 ===
オペレーティングシステムは、異なるプロセス間でデータを共有し、同期を図るためにさまざまな機構を提供します。共有メモリ、パイプ、メッセージキュー、セマフォ、モニタなどがその例です。これらの機構を適切に使用することで、プロセス間の協調動作やデータの安全な受け渡しが可能となります。
プロセス管理はオペレーティングシステムの中核的な機能であり、効率的で安定したシステム運用を支えます。各概念や機構の理解は、システム設計やプログラミングにおいて重要です。
==== BSD Socket ====
BSD Socket(Berkeley Software Distribution Socket)は、ネットワーク通信のためのAPI(アプリケーションプログラミングインターフェース)です。BSD UNIXオペレーティングシステムにおいて開発され、後に標準的なネットワークプログラミングのインターフェースとして多くのオペレーティングシステムで採用されました。BSD Socketは、ソケットを用いてプロセス間通信やネットワーク通信を実現するための機能を提供します。
BSD UNIXではSocketを使ってパイプなどのIPC(プロセス間通信)も再実装されました。BSD UNIXが開発された際、Socketを通じたネットワーク通信だけでなく、プロセス間通信の手段としてもSocketが利用され、パイプなどが再構築されました。
BSD Socket APIはその後、SystemVを含む多くのUNIX系オペレーティングシステムに採用され、ネットワークとIPCの両方で幅広く使用されるようになりました。
==== SystemV STREAMS ====
SystemV STREAMS(StreamS)は、UNIX System Vオペレーティングシステムで導入された通信機構です。STREAMSは、モジュール化された通信プロトコルスタックを提供し、柔軟で効率的なデータの受け渡しを可能にします。これは、プロセス間通信やデバイス制御において、標準的なインターフェースとして使用されました。 STREAMSはUNIXの派生版や一部の商用UNIXオペレーティングシステムでサポートされています。
{{コラム|width=stretch|BSDとSystem V|2=BSD(Berkeley Software Distribution)とSystem Vは、UNIXオペレーティングシステムの2つの主要な派生系統です。これらは、UNIXの発展と普及の過程で異なるアプローチや機能を取り入れ、それぞれの特徴を持っています。
; BSD (Berkeley Software Distribution)
: BSDは、カリフォルニア大学バークレー校で開発されたUNIXの派生です。BSD UNIXは、ネットワーク機能の強化やTCP/IPプロトコルの導入、さらにはパフォーマンスの向上など、多くの革新的な機能を提供しました。また、BSDはオープンソースのUNIXシステムとして、多くのUNIX系オペレーティングシステムに影響を与えました。
:主な特徴として、BSD Socket API(ネットワーク通信用のAPI)やファイルシステムの改善、プロセス間通信の機能の追加などがあります。
; System V
: System Vは、AT&T(アメリカン・テレフォン・アンド・テレグラフ)社が開発したUNIXの派生で、商業的なUNIXオペレーティングシステムの基盤として採用されました。System Vは、UNIXの標準規格であるPOSIXに強く準拠し、標準化されたAPIやサービスを提供しました。
: System Vの特徴として、System V IPC(プロセス間通信機構)、標準的なランレベルの導入、共有ライブラリのサポートなどが挙げられます。
; 統合と相互影響
: UNIXの歴史では、これらの2つの系統が相互に影響を与え合いました。多くのUNIXオペレーティングシステムは、BSDとSystem Vの機能を組み合わせて採用しています。例えば、System V IPCとBSD Socket APIを同時にサポートするなどが行われています。
}}
== メモリ管理 ==
オペレーティングシステムのメモリ管理は、コンピュータのメモリ資源を効果的に管理する仕組みです。これにより、複数のプログラムが同時に実行され、物理メモリを適切に利用できます。メモリ管理はプロセスの割り当てや解放、ページング、セグメンテーション、仮想メモリの導入などを含み、システムの安定性と性能を確保します。
=== メモリの階層構造と管理 ===
メモリ管理は、コンピューターシステムにおける重要な側面であり、メモリは階層的な構造を有しています。この階層には、コンピュータがデータを処理する際に使用される異なるタイプのメモリが含まれます。最も高速で直接アクセス可能なのがレジスタであり、次にキャッシュ、主記憶(RAM)、そして補助記憶(ハードディスクなど)が続きます。この章では、各メモリ階層がどのように機能し、効果的に管理されるかを探求します。
レジスタはCPU内部にあり、非常に高速でありながらも容量が非常に小さいため、プロセッサが即座にアクセスできるデータを格納します。キャッシュは主記憶とプロセッサ間のデータ転送を高速化するための中間的なメモリであり、主記憶はプロセッサが直接アクセスする大容量のメモリです。補助記憶は永続的なデータの保存やプログラムの読み込みに用いられます。
=== 仮想記憶とは? ===
仮想記憶は、主記憶装置と補助記憶装置から構成される記憶領域であり、補助記憶装置を安価で大容量のデバイスとして使用することで、プログラマが仮想記憶上で大容量の主記憶装置が実装されているかのようにプログラミングを行うことができる概念です。
=== ページングとセグメンテーション ===
ページングとセグメンテーションは、仮想記憶の管理手法であり、物理メモリの効率的な利用を目指しています。
ページングでは、メモリを固定サイズのページに分割し、プログラムの実行に必要なページだけを動的に読み込みます。これにより、物理メモリの空間が節約され、必要なページだけが物理メモリに配置されます。ページングは、デマンドページングの手法を使用し、プロセスがアクセスしようとするページが物理メモリに存在しない場合にページフォルトが発生し、必要なページが動的に読み込まれます。
一方、セグメンテーションでは、プログラムを論理的なセグメントに分割し、必要なセグメントだけを物理メモリに読み込むことでメモリを効果的に利用します。各セグメントは論理的なまとまりを持ち、柔軟なメモリ管理が可能です。
これらの手法は、コンピュータシステムのメモリ管理において重要であり、効率的なリソース利用と性能向上に寄与しています。
=== 仮想記憶とページフォルト ===
仮想記憶は、物理メモリを補完するための概念であり、プロセスにとっては拡張されたメモリ空間を提供します。通常、プロセスは必要なだけのメモリを仮想的に確保できるため、物理メモリよりも広範なメモリアクセスが可能です。しかし、すべての仮想記憶が物理メモリに常時格納されているわけではありません。
ページフォルトは、プログラムが物理メモリにアクセスしようとした際に発生します。もし必要なページが物理メモリに存在しない場合、オペレーティングシステムはページフォルトを検知し、必要なページをディスクや他の補助記憶装置から読み込みます。これにより、物理メモリの限られたスペースに必要なページだけを動的に配置することが可能となります。
ページフォルトのハンドリングは、仮想記憶の有効活用と効率的なメモリ使用を実現します。オペレーティングシステムは必要なページを要求された時点で読み込むため、大きなプログラムやデータセットを処理する際にも物理メモリを効果的に活用できます。
=== デマンドページング方式の仮想記憶の仕組み ====
デマンドページング方式の仮想記憶は、ページングとPMMU(Paged Memory Management Unit)との連携によって実現されます。
以下に、その仕組みについて簡単に説明します。
;仮想記憶の基本概念:仮想記憶は、物理メモリを補完するための概念であり、プロセスにとっては仮想的に拡張されたメモリ空間を提供します。プロセスが物理メモリよりも大きなメモリ空間を確保できるため、大規模なプログラムやデータセットを扱う際に柔軟性が向上します。
;デマンドページング方式:デマンドページングでは、プロセスの実行に必要な部分だけが物理メモリに読み込まれます。
プロセスが初めてアクセスしようとするメモリ領域に対して、そのページが物理メモリに存在しない場合にページフォルトが発生します。ページフォルトが発生すると、オペレーティングシステムは必要なページを補完的に物理メモリに読み込みます。
;PMMUの役割
: PMMU(Paged Memory Management Unit)は、プログラムが物理メモリにアクセスする際に、それを対応する物理メモリアドレスに変換する役割を果たします。
:仮想メモリ空間から物理メモリへのマッピングを行い、ページテーブルと呼ばれるデータ構造を使用して各ページの対応を管理します。
:ページフォルトが発生すると、PMMUはオペレーティングシステムに通知し、必要なページをディスクから読み込む手続きを開始します。
;具体的な仕組み
:プロセスがアクセスしようとする仮想メモリのページが物理メモリに存在しない場合、PMMUはページフォルトを検知し、オペレーティングシステムに制御を移譲します。
:オペレーティングシステムはディスク上にある対応するページを探し、必要なページを物理メモリに読み込みます。
:読み込まれたページの情報をページテーブルに更新し、PMMUが再度プロセスの実行を再開します。
仮想記憶、デマンドページング、PMMUが組み合わさることで、大容量の仮想メモリを有効に利用しながら、物理メモリを必要に応じて動的に確保し、効率的にプロセスを実行することが可能となります。
==== デマンドページング方式以外の設計と実装 ====
仮想記憶の実装には、デマンドページングとPMMU以外にもいくつかのアプローチが存在します。以下に、その一部を紹介します。
;セグメンテーション
:セグメンテーションは、プログラムやデータを論理的なセグメントに分割し、それぞれのセグメントを物理メモリ上に配置します。
:各セグメントは異なるサイズや属性を持ち、プロセスが必要なセグメントだけを物理メモリに読み込むことができます。
:セグメンテーションは、ページングと組み合わせて使用されることもあります。
;ページングとセグメンテーションの組み合わせ:
:ページングとセグメンテーションを組み合わせたアプローチでは、セグメンテーションで大まかなメモリ管理を行い、各セグメント内でページングを使用して詳細なメモリアクセスを制御します。
:これにより、柔軟性と効率の両方を備えた仮想メモリ管理が可能となります。
;アドレススペースの共有:
:複数のプロセスが同じ物理メモリ領域を共有するアプローチもあります。これにより、プロセス間でデータを共有しやすくなります。
:共有メモリとして知られるこの手法は、IPC(Inter-Process Communication)やスレッド間通信などに利用されることがあります。
;スワッピング:
:スワッピングは、物理メモリ上のページをディスク上に移動させる手法です。これにより、物理メモリの不足時にプロセスの一部をディスクにスワップアウトし、必要なページをスワップインすることができます。
:スワッピングはデマンドページングと併用され、物理メモリの制約に対処します。
これらの手法は、システムの要件や特性によって異なる利用があり、適切な組み合わせが選択されます。
==== 初期の仮想記憶の実装例 ====
===== Atlas Supervisorの仮想記憶 =====
初期の仮想記憶の実装例として、Atlasコンピュータが挙げられます。Atlasは、1960年代初頭にイギリスのマンチェスター大学で開発された大型のコンピュータシステムで、仮想記憶の概念を実現しました。Atlasの仮想記憶システムは、当時のコンピュータシステムと比較して先進的で、ページング・ページテーブル・プロセス間の分離などの特徴がありました。
{{See|[[#Atlas Supervisor (1962)}}}}
Atlasの仮想記憶システムは、その後のコンピュータアーキテクチャの発展に影響を与え、ページングや仮想記憶の考え方が広く受け入れられる基盤を築きました。
===== MULTICS/GE645の仮想記憶 =====
MULTICS(Multiplexed Information and Computing Service)は、仮想記憶を採用した初期の商用オペレーティングシステムの一つです。MULTICSは、General Electric(GE)、Bell Labs(AT&T)、およびMIT(Massachusetts Institute of Technology)の共同開発プロジェクトとして始まり、GE-645メインフレームコンピュータ上で動作しました。
{{See|[[#MULTICS (Multiplexed Information and Computing Service) (1969)]]}}
MULTICSは、セキュリティや拡張性の向上を含む様々な革新的な機能を持っていましたが、その中でも特に注目されたのが仮想記憶の導入でした。MULTICSの仮想記憶は、物理メモリよりも大きな仮想メモリ空間をプログラムに提供し、必要な部分だけを物理メモリに配置することで、大規模なプログラムや複数のプロセスを同時に実行できるようになりました。
MULTICSの仮想記憶は、ページングとセグメンテーションを組み合わせた方式を採用していました。これにより、プログラムやデータを効率的に管理し、ユーザーに対して広い仮想アドレス空間を提供できました。MULTICSの仮想記憶は、その後のオペレーティングシステムにおける仮想記憶の発展に影響を与えました。
==== 最も古い商用仮想記憶実装 ====
商用で最初に導入された仮想記憶システムの一つは、IBMの「System/360 Model 67」が含まれます。このシステムは、1966年に導入されました。System/360 Model 67は、プログラムが物理メモリに収まりきらなくても実行できるようにするために、仮想記憶の概念を採用していました。
System/360 Model 67の仮想記憶システムは、プログラムが実際の物理メモリよりも大きなサイズであっても実行でき、必要な部分だけを物理メモリに読み込む仕組みを持っていました。これにより、大規模で複雑なプログラムを効率的に実行できるようになりました。
=== メモリ保護とアクセス制御 ===
メモリ保護は、プロセスがメモリを読み書きできるかどうかを管理します。アクセス権の設定やセグメンテーションにおけるセグメント保護など、様々な手法が存在します。これらの手法により、オペレーティングシステムはプロセスが正しくメモリにアクセスできるように制御します。
アクセス権は通常、読み取り専用、読み書き可能、実行可能などの形式で指定され、各プロセスが必要な権限を持つかどうかを管理します。セグメンテーションにおいては、各セグメントに対して保護フラグが設定され、プロセスはそれに基づいてメモリへのアクセスを制御します。これにより、異なるプロセスがお互いのメモリを不正にアクセスすることを防ぎ、システム全体のセキュリティを確保します。
=== 用語集 ===
以下は、OSのメモリ管理に関連する用語の一覧です。
;メモリ管理 (Memory Management):コンピュータのメモリリソースを管理し、プロセスが必要なメモリを確保・解放する仕組み。
; 物理メモリ (Physical Memory):コンピュータの本来のメモリ装置で、RAM(ランダムアクセスメモリ)などが該当。
;仮想メモリ (Virtual Memory):物理メモリの拡張として、補助記憶装置(ハードディスクなど)を仮想的にメモリとして利用する概念。
;ページング (Paging):メモリを固定サイズのページに分割し、プロセスの実行に必要なページだけを読み込む手法。
;セグメンテーション (Segmentation):プログラムやデータを論理的なセグメントに分割し、必要なセグメントだけをメモリに読み込む手法。
;ページフォルト (Page Fault):プログラムが物理メモリにアクセスしようとした際に、対応するページが物理メモリに読み込まれていない場合の例外。
;デマンドページング (Demand Paging):プログラムが必要なページだけを必要な時点で読み込む方式。
;MMU (Memory Management Unit):メモリアクセスの制御を担当するハードウェアユニット。
;PMMU (Paged Memory Management Unit):ページングをサポートするためのハードウェアユニット。
;メモリフラグメンテーション (Memory Fragmentation):メモリ領域が小さな断片に分かれることで、効率的なメモリ使用が難しくなる現象。
;スワッピング (Swapping):プロセスが物理メモリからディスク上のスワップ領域に一時的に移動されること。
;メモリプール (Memory Pool):メモリを効率的に管理するために、同一サイズのメモリ領域をまとめてプールとして管理する仕組み。
;メモリマッピング (Memory Mapping):ファイルやデバイスをメモリに対応付け、メモリ上で直接アクセスできるようにする仕組み。
;メモリキャッシュ (Memory Cache):メモリの一部をキャッシュとして使用し、高速なアクセスを可能にする手法。
;メモリアロケーション (Memory Allocation):プロセスに必要なメモリ領域を確保する処理。
;メモリ解放 (Memory Deallocation):プロセスが使用していたメモリ領域を解放し、再利用可能にする処理。
;メモリオーバーヘッド (Memory Overhead):メモリ管理に伴う余分なコストやリソースの使用。
;メモリ保護 (Memory Protection):プロセスが他のプロセスやオペレーティングシステムのメモリにアクセスできないようにする仕組み。
;メモリマネージャ (Memory Manager):オペレーティングシステム内でメモリを管理するソフトウェアコンポーネント。
;セグメントフォルト (Segmentation Fault):プログラムが許可されていないメモリにアクセスしようとした際に発生する例外。
== ファイルシステム ==
オペレーティングシステムのファイルシステムは、データを整理して保存する仕組みです。ファイルやディレクトリを階層的に管理し、アクセスや保護機能を提供します。これにより、ユーザーはデータを構造的に保存・取得でき、プログラムやシステムが必要な情報にアクセスできます。ファイルシステムはデータの整合性と永続性を保ち、効率的なデータ管理を実現します。
=== ファイルとディレクトリの基本 ===
=== ファイルシステムの構造と操作 ===
=== ディスク管理とデータの永続性 ===
=== ファイルシステムとディスクリプタ管理 ===
== デバイス管理 ==
オペレーティングシステムのデバイス管理は、コンピュータ内外のハードウェアデバイスとの効率的な通信を担当します。デバイスドライバを介し、異なるデバイスとのインタラクションを標準化し、アプリケーションやユーザーがハードウェアを利用できるようにします。デバイス管理はデバイスの初期化、資源割り当て、エラーハンドリングなどを通じてシステムの正確かつ円滑な動作を確保します。
=== デバイスドライバとハードウェアインターフェース ===
=== 入出力制御とバッファリング ===
=== デバイスの割り込みとポーリング ===
=== デバイスの仮想化とディスクリプタ管理 ===
== セキュリティとケーパビリティ ==
オペレーティングシステムのセキュリティは、機密性、整合性、可用性を保護し、不正なアクセスからシステムを守ります。一方で、ケーパビリティはユーザーやプロセスが持つ権限や操作可能な範囲を制御し、機能の適切な利用を促進します。セキュリティとケーパビリティの統合は、システム全体の信頼性と安定性を確保します。
=== セキュリティの基本概念 ===
=== セキュリティポリシーとメカニズム ===
=== ケーパビリティと権限管理 ===
=== セキュアなオペレーティングシステムの概念 ===
== プロセス間通信とネットワーキング ==
オペレーティングシステムのプロセス間通信(IPC)は、プロセス間で情報をやり取りするメカニズムで、共有メモリやメッセージパッシングなどが利用されます。ネットワーキングは、複数のシステムが通信してリソースを共有し、分散処理やデータ交換を可能にします。これらはオペレーティングシステムが異なるプロセスやシステム間で効果的なコミュニケーションをサポートする重要な機能です。
=== プロセス間通信の基本概念とメカニズム ===
=== ネットワーキングとオペレーティングシステムの連携 ===
=== 分散オペレーティングシステムの概念 ===
== 実装と最適化 ==
オペレーティングシステムの実装と最適化は、カーネルの構造や設計、システムコールとAPIの効果的な提供、パフォーマンス向上と最適化の手法を含みます。カーネルはOSの中核で、システムコールやAPIはユーザーとOSのやり取りを制御します。最適化は効率的な動作やリソース利用を追求し、高いパフォーマンスを実現します。
=== カーネルの構造と設計 ===
=== システムコールとAPI ===
=== パフォーマンス向上と最適化の手法 ===
== 実際のオペレーティングシステムの設計と実装 ==
ここからは、実在のオペレーティングシステムを題材に、その設計と実装について解説します。
=== Atlas Supervisor (1962) ===
Atlas Supervisorは、Manchester Universityで開発された世界初のバッチ処理オペレーティングシステムの一つです。
Atlasコンピュータ向けに設計され、当初は並列処理やリアルタイム処理をサポートしていました。以下に、Atlas Supervisorが提供していた主な機能について見ていきましょう。
;バッチ処理: Atlas Supervisorは、複数のジョブをまとめて処理するバッチ処理をサポートしていました。これにより、ユーザーはジョブを順次実行し、リソースを最適に利用することができました。
;メモリ管理
:Atlasの仮想記憶システムは、当時のコンピュータシステムと比較して先進的で、以下の特徴がありました:
:;ページング
::Atlasはページング方式を採用していました。メモリは固定サイズのページに分割され、プログラムがアクセスしようとするページが物理メモリに存在しない場合にページフォルトが発生しました。
::ページングは物理メモリの効率的な利用を可能にし、大規模で複雑なプログラムを扱う際に重要な役割を果たしました。
:;プロセス間の分離:
::Atlasでは、各プログラム(プロセス)が独立した仮想記憶空間を持ち、他のプログラムのメモリにアクセスすることが制限されました。これにより、プロセス間のデータ保護が実現されました。
:;ページテーブル:
::Atlasでは、ページングを管理するためにページテーブルが使用されました。ページテーブルには各ページの物理アドレスと仮想アドレスの対応関係が格納され、ページフォルト時に参照されました。
::Atlasの仮想記憶システムは、その後のコンピュータアーキテクチャの発展に影響を与え、ページングや仮想記憶の考え方が広く受け入れられる基盤を築きました。
;プロセス管理: ジョブの実行は、プロセス管理の観点からも注目されました。Atlas Supervisorは、異なるジョブやプロセスが競合することなく実行されるように調整されていました。
;ファイルシステム: ファイルシステムの概念は、Atlas Supervisorにおいても存在していました。ジョブがデータを永続的に保存し、後続のジョブでそれを利用できるようになっていました。
;ユーザーコミュニケーション: 当初のバッチ処理向けのシステムではありますが、Atlas Supervisorはユーザーとの対話も可能でした。ユーザーはジョブのセットアップや結果の確認を行うことができました。
Atlas Supervisorは当時のハードウェアと調和して、計算機利用の合理性を追求した先進的なオペレーティングシステムであり、その後のオペレーティングシステムの発展に影響を与えました。
=== CTSS (Compatible Time-Sharing System) (1961) ===
MIT(マサチューセッツ工科大学)で開発されたCTSSは、1961年に初めて導入されたオペレーティングシステムの一つで、仮想記憶の概念を取り入れていました。これにより、複数のユーザーが同時にメインフレームを使用できるようになりました。
=== IBM System/360 Model 67 (1966) ===
IBM System/360 Model 67は、セグメンテーションとページングを組み合わせた仮想記憶をサポートしたメインフレームコンピュータでした。これにより、大規模な科学計算やビジネスアプリケーション向けに柔軟で効率的なメモリ管理が可能となりました。
=== MULTICS (Multiplexed Information and Computing Service) (1969) ===
MULTICSは、ベル研究所、MIT、およびゼネラル・エレクトリック(GE)が共同で開発したオペレーティングシステムで、セグメンテーションとページングを採用し、仮想記憶の概念を拡張しました。MULTICSのアイディアは後にUNIXに影響を与えました。
MULTICSはUNIXに影響を与えた重要な要因の一つとされています。MULTICSプロジェクトに携わっていたKen Thompson、Dennis Ritchie、そしてその他の開発者たちが、MULTICSの経験から得た教訓を元に新しいオペレーティングシステムであるUNIXを開発しました。
UNIXは、MULTICSよりもシンプルで軽量な設計を持っており、小規模なマシンでも動作可能でした。MULTICSでの経験がUNIXの設計に影響を与え、シェル、ファイルシステム、プロセス管理などの概念が引き継がれました。UNIXは1970年代から広く普及し、その後のオペレーティングシステムの発展に大きな影響を与えました。
UNIXがMULTICSから模倣または影響を受けた具体的な機能や概念はいくつかあります。
以下はその一部です:
;コマンドインタプリタ(シェル)
:;MULTICSの影響: MULTICSは、コマンドとプログラムの実行を補完する強力なコマンド言語を持っていました。
:;UNIXの実装: Ken ThompsonがMULTICSでの経験をもとに、UNIXにはシンプルながら柔軟で拡張可能なシェルが実装されました。初期のUNIXのシェルとしては、ThompsonシェルやBourneシェルがありました。
;階層ファイルシステム:
:;MULTICSの影響: MULTICSは階層型のファイルシステムを採用しており、ユーザーがデータやプログラムを整理しやすい構造を提供していました。
:;UNIXの実装: UNIXはこれを受けて、階層型ファイルシステムを採用しました。ディレクトリやサブディレクトリの概念がUNIXに取り入れられ、パス指定でのファイルアクセスが可能となりました。
;プロセスとプロセス管理:
:;MULTICSの影響: MULTICSでは、プロセスとメモリ管理が重要な概念でした。MULTICSは複数のプロセスを同時に実行し、各プロセスには独自のメモリ空間が割り当てられました。
:;UNIXの実装: UNIXもプロセスの概念を取り入れ、各プロセスが独立して動作することで、安定性やセキュリティが向上しました。
これらの機能や概念は、UNIXがMULTICSの経験から学びながら独自のアプローチで実装され、UNIXが普及する一因となりました。
これらの「UNIXらしさ」と言われる特徴は、MULTICSから影響を受けいますが、UNIXの仮想記憶システムは、MULTICSからの直接の影響は受けていません。UNIXの仮想記憶は、主にKen ThompsonとDennis Ritchieによる独自の設計に基づいています。UNIXが登場した時点では、コンピュータの物理メモリが非常に限られていたため、仮想記憶が導入されました。
MULTICSとUNIXの時代背景を考えると、MULTICSの影響は他の要素に比べて相対的に小さかったと言えます。UNIXは小型でリソースが限られたマシン上で動作することを重視し、シンプルで効率的な設計を採用しました。UNIXの仮想記憶の実装は、MULTICSの大規模かつ複雑な設計からは逸脱しています。
=== UNIX (1969) ===
UNIXは、ベル研究所で開発されたオペレーティングシステムで、Ken Thompson、Dennis Ritchie、およびチームによって生み出されました。シンプルで柔軟な設計を持ち、C言語で記述されたことが特徴です。UNIXは、マルチユーザー、マルチタスク、およびポータブル性を重視し、その後のオペレーティングシステムの基盤となりました。
=== OS-9 (1979) ===
OS-9は、Microware Systems Corporationが開発したリアルタイムオペレーティングシステムで、主に組み込みシステムや産業制御などの用途で利用されました。モジューラ設計を採用しています。8ビットプロセッサであるMC6809をターゲットとしましたがOS-9レベルIIでは仮想記憶をサポートしました。
=== Mach (1985) ===
Machは、カーネギーメロン大学で開発されたマイクロカーネルベースのオペレーティングシステムで、仮想メモリやマルチプロセッシングをサポートしています。Machは、そのマイクロカーネルアーキテクチャから派生して、GNU/Hurdなどのプロジェクトに影響を与えました。
=== OS/2 (1987) ===
OS/2は、IBMとマイクロソフトが共同で開発したオペレーティングシステムで、当初はPC向けに開発されました。マルチタスク、マルチスレッド、およびGUIサポートを提供し、Windowsとの互換性も備えていましたが、後にWindows NTに取って代わられました。
=== Windows NT (1993) ===
Windows NTは、マイクロソフトが開発した32ビットのオペレーティングシステムで、企業向けに設計されました。安定性、セキュリティ、ネットワーキングの向上を重視し、Windowsファミリーの基盤となりました。 Windows 2000やXPなどのバージョンがこれを基にしています。
== 最新のトピックスと動向 ==
=== 仮想化技術 ===
=== コンテナ化 ===
=== クラウドコンピューティングとオペレーティングシステム ===
== ケーススタディとプロジェクト ==
=== 実際のオペレーティングシステムのケーススタディ ===
=== プロジェクトや実習を通じての実践的な学習 ===
[[カテゴリ:オペレーティングシステム|*]]
== 関連項目 ==
*[[MINIX]]
*[[/カーネル]]
6kjzjslzevyz5kskke0ox3ogx3f7qyi
Haskell
0
16202
301483
296706
2026-07-13T08:23:52Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301483
wikitext
text/x-wiki
{{Wikipedia}}
<small>[[情報技術]] > [[プログラミング]] > Haskell</small>
__NOTOC__
== Haskell :: Functional Programming with Types ==
[[File:Haskell-logo.png|right]]
'''Haskell'''は[[w:関数型言語|関数型言語]]であり、他のプログラミング言語を触ったことのある読者なら、Haskellのやり方は他の言語とは多少異なっていることが分かるでしょう。
Haskellの独自性は二つあります。一つは、「純粋」関数型言語であることです。純粋関数型言語では、同じ関数を同じ引数で呼び出した場合、必ず同じ戻り値になることが保証されます。二つ目は、Haskellが極めて現代的な型理論を備えていることです。Haskellでは、型クラスや代数的データ型などの型を扱うことができます。これらの難解な概念は、今は全く理解できないかもしれませんが、この本を読み終えた後には、より身近なものに感じられるでしょう。
さて、Haskellerたちはこの言語のどこに魅力を感じているのでしょうか。ユニークで新しい感覚を得られるからでしょうか。しかし、Haskellの最も優れた性質は、純粋関数のみによって書かれていることで、プログラムを容易に理解でき、プログラムの正しさを簡単に示せることです。さらに、優れた型システムは、誤ったプログラムの修正にも役立ちます。単純なミスだけでなく、根の深い、厄介な問題の解決にも役立つのです。
この本では、Haskellおよびプログラミング一般に関するトピックを扱います。熟練プログラマの読者は、最初の間は少し辛抱して読み進めていただきたいです。Haskellは、読者が慣れ親しんできたであろう他の言語のほとんどと全く異なっており、他の言語での積み上げてきた習慣がかえって理解の妨げになるかもしれません。Haskellの仕組みは単純ですが、他の言語とは異なっているのです。他の言語でのプログラミング経験のある読者は、以前とは全く異なる世界、複雑な対象への巧みなプログラミングと、関数型プログラマの数学的思考法の世界を探検するつもりでいてほしい。
== はじめに ==
この本は3つの部分、初級教程、上級教程、実用プログラミングのセクションからできている。実用プログラミングの項目では、実際の場面で使うプログラミングの方法について解説する。これは初級教程だけの知識で読むことができる。
== 初級教程 ==
このセクションでは、Haskellの最も基本的な部分と、頻繁に利用するライブラリを紹介する。この教程によって、単純なプログラムを書くことができるようになる。ほとんどの章には演習問題があり、新しく学んだ知識について練習することができる。解答つき。
{|width="100%" cellspacing="0" cellpadding="15" valign="top" style="margin:0.8em 0;border:1px solid MediumAquamarine;background:honeydew"
|valign="top" style="border-right: 1px dashed MediumAquamarine"|
=== Haskellの基本 ===
*{{Haskell chapter/Haskell Basics|sep=
*}}
|valign="top" style="border-right: 1px dashed MediumAquamarine"|
=== Haskell - 初級===
*{{Haskell chapter/Elementary Haskell|sep=
*}}
|valign="top" style="border-right: 1px dashed MediumAquamarine"|
=== Haskell - 中級 ===
*{{Haskell chapter/Intermediate Haskell|sep=
*}}
|valign="top"|
=== モナド ===
*{{Haskell chapter/Monads|subsep= - |breaksep=
**|sep=
*}}
|}
== 上級教程 ==
このセクションでは、関数型プログラミング言語Haskellの扱う様々な理論的概念を紹介する。型理論、データ構造の解説に加えて、プログラムの並行性といった実用的な議論もここで行う。
{|width="100%" cellspacing="0" cellpadding="15" valign="top" style="margin:0.8em 0; border: 1px solid SlateBlue; background:#F7F7FF"
|valign="top" style="border-right: 1px dashed SlateBlue"|
=== Haskell - 上級 ===
*{{Haskell chapter/Advanced Haskell|sep=
*}}
|valign="top" style="border-right:1px dashed SlateBlue"|
=== 型のいろいろ ===
*{{Haskell chapter/Fun with Types|sep=
*}}
|valign="top" style="border-right:1px dashed SlateBlue"|
=== より広い理論 ===
*{{Haskell chapter/Wider Theory|sep=
*}}
|valign="top"|
=== Haskellの高速化 ===
*{{Haskell chapter/Haskell Performance|sep=
*}}
|}
== Haskellで実用プログラミング ==
このセクションでは、より実際の問題をプログラミングする場面で必要になる、標準ライブラリの使い方やGUIの作り方、データベースへの接続といった内容を解説する。
{|width="100%" cellspacing="0" cellpadding="15" style="margin-top:0.8em;margin-bottom:0.8em;border:1px solid gold;background:cornsilk"
|valign="top" style="border-right: 1px dashed gold"|
=== Libraries Reference ===
*{{Haskell chapter/Libraries Reference|sep= - |breaksep=
**|firstsep=
*}}
|valign="top" style="border-right: 1px dashed gold"|
=== General Practices ===
*{{Haskell chapter/General Practices|sep=
*}}
|valign="top"|
=== Specialised Tasks ===
*{{Haskell chapter/Specialised Tasks|sep=
*}}
|}
== Appendices ==
:[[/Solutions|Answers to exercises]]
:[[/Authors/|Authors and Acknowledgements]]
:[[/Experimental Modules/|Experimental Modules]]
:[[/List of topics/|List of topics]]
:[[/Notes for contributors/]]
:[[/Syntactic sugar/]]
:[[:Category:Haskell/Templates|Templates for the Haskell wikibook]]
:[[/To do/]]
== Alternate tutorials ==
* [https://www.haskell.org/haskellwiki/Meta-tutorial Haskell Meta-tutorial] - the tutorial to find other tutorials
* [[48時間でSchemeを書こう]] - (imported) An alternate approach to teaching Haskell (and perhaps Scheme), aimed at a more advanced audience (though not necessarily one that knows how to program!)
* [[/YAHT|Yet Another Haskell Tutorial]] - (imported) is aimed at beginners and takes a practical approach to things. It is now part of this wikibook and will eventually be mixed in to the main text.
== Additional resources ==
* [http://www.haskell.org/learning.html haskell.org - Resources for learning Haskell].
* [http://www.cs.kent.ac.uk/people/staff/sjt/craft2e/ The resource page] for ''Haskell: the craft of functional programming
== 下位階層のページ ==
*[[Haskell/改廃された技術]]
[[Category:プログラミング言語]]
[[カテゴリ:Haskell|*]]
8meda92fvyo7endgn424if6cw0sc3x0
Windows API
0
24297
301500
297055
2026-07-13T08:52:40Z
AkiR27User
90873
/* 目次 */ [[Windows API/型とマクロ]]追加
301500
wikitext
text/x-wiki
== 目次 ==
* [[Windows API/初期設定のしかた]]
* [[Windows API/ウィンドウの表示]]
* [[Windows API/Windows デスクトップアプリケーション]]
* [[Windows API/イベントドリブン方式]]
* [[Windows API/文字表示の命令]]
* [[Windows API/図形の描画]] (関数の作りかたも、ここで説明)
* [[Windows API/入力]] (文字入力、キー入力)
* [[Windows API/ファイル入出力]]
* [[Windows API/画像の操作]] (画像のファイル出力はこちら)
* [[Windows API/型とマクロ]]
== 参考リンク ==
Win32 API を入門者むけに全般的に解説したサイトは、日本では少ない。
下記のサイトで、Win32 API を入門者むけに全般的に解説している。いっぽう、書籍などを読んでも、市販の Win32 API の書籍の多くは入門者むけでなく、さらに、その書籍すらも種類が少なく、出版年度も古いものが多い。よって初心者は、当面はwebサイトで勉強するのが合理的である。
* [http://www.wisdomsoft.jp/418.html Wisdomソフト]
* [https://wisdom.sakura.ne.jp/system/winapi/win32/index.html 標準 Windows API] (Wisdomソフト の旧版だが、上記の新版がコンテンツ不足で、Windows APIの画像関係の機能の使い方が、新版では説明が無しなので、旧版を合わせ読む必要がある。)
* [http://k3tec.net/neko_wiki/index.php?%A3%D7%A3%E9%A3%EE%A3%B3%A3%B2%A3%C1%A3%D0%A3%C9%B9%D6%BA%C2 Win32API講座]
* [http://meg.aalip.jp/task/ Win32API] 紹介している画像関係・音声関係の機能の利用法のソースコードが実用的であり、また初心者むけである。
*
*
また、Visual Studio での初期設定「Windows デスクトップアプリケーション」が生成するコード自身も、ときどき参考にしよう。
== 未分類 ==
=== シリアルポート通信 ===
そもそもWindowsでシリアル通信で外部デバイスとのやりとりをするには、どうすればいいか。
:※ 調査中のため、下記の真偽は読者が追加調査してください。
Windows API の <code> GetCommState </code>関数を使うと、通信デバイスのハンドルが取得できるらしい(未確認)。
また、Windows API でファイル操作に使われる <code> CreateFile() </code> 関数が、ポート操作の関数を兼ねているらしい。
「DCB構造体」などの構造体を定義する必要があるらしい。
[[カテゴリ:Windows API|*]]
fc0r461ilfk9xtho9izetc5niq73eea
高等学校 物理基礎
0
24774
301516
299382
2026-07-13T09:57:20Z
AkiR27User
90873
[[高等学校 物理基礎/熱]]追加
301516
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校理科|pagename=物理基礎|frame=1|small=1}}
:* 物理の教科書へのリンク → [[高等学校 物理]]
----
== 1編 物体の運動とエネルギー ==
=== 1章 直線運動の世界 ===
[[高等学校 物理基礎/合成速度と相対速度|合成速度と相対速度]]
==力学==
[[高等学校物理基礎/力学|力学]]{{進捗|75%|2024-03-10}}
以下は旧課程版([[高等学校物理基礎/力学|力学]]の未完成部分)。
#[[高等学校物理/物理I/運動とエネルギー/運動の法則|運動の法則]]{{進捗|50%|2015-07-10}}
#[[高等学校物理/物理I/運動とエネルギー/仕事とエネルギー|仕事と力学的エネルギー]]{{進捗|50%|2015-07-18}}
==熱==
*[[高等学校物理基礎/熱|熱]]{{進捗|75%|2024-04-13}}
*[[高等学校 物理基礎/熱|熱]]
==波動==
#[[高等学校物理基礎/波動|波]]{{進捗|100%}}
#[[高等学校物理基礎/波動#音|音]]{{進捗|50%|2024-04-13}}
==電磁気==
[[高等学校物理基礎/電気と磁気|電気と磁気]]{{進捗|75%|2016-01-23}}
==物理学と社会==
#[[高等学校 物理基礎/エネルギーとその利用|エネルギーとその利用]]{{進捗|00%|2024-04-13}}
#[[高等学校 物理基礎/物理学が拓く世界|物理学が拓く世界]]{{進捗|00%|2024-04-13}}
== 資料 ==
=== 数学の知識 ===
*[[高等学校 物理基礎/物理のための数学|物理基礎のための数学]]{{進捗|25%|2024-04-13}}
=== 物理定数 ===
{| class="wikitable"
|+ 物理定数
|-
! 物理量 !! 概数値 !! 詳しい値
|-
| 標準重力加速度 || 9.8 m/s<sup>2</sup> || 9.806 65 m/s<sup>2</sup>
|-
| 絶対零度 || -273 ℃(=0 K) || -273.15 ℃(定義値)
|-
| 熱の仕事当量 || 4.19 J/cal || 4.184 J/cal(計量法による定義)
|-
| アボガドロ定数 || 6.02×10<sup>23</sup> /mol || 6.022 140 79 × 10<sup>23</sup> /mol(定義値)
|-
| 理想気体の体積(0℃, 1気圧) || 2.24×10<sup>-2</sup> m<sup>3</sup>/mol || 2.241 399 6 × 10<sup>-2</sup> m<sup>3</sup>/mol
|-
| 気体定数 || 8.31 J/(mol・K) || 8.314 472 J/(mol・K)
|-
| 乾燥空気中の音の速さ(0℃) || 331.5 m/s || 331.45 m/s
|-
| 真空中の光の速さ || 3.00×10<sup>8</sup> m/s || 2.997 924 58 × 10<sup>8</sup> m/s(定義値)
|-
| 電気素量 || 1.60×10<sup>-19</sup> C|| 1.602 176 634 × 10<sup>-19</sup> C(定義値)
|-
| 電子の質量 || 9.11×10<sup>-31</sup> kg|| 9.109 382 15 × 10<sup>-31</sup> kg
|}
=== 物理独特の言い回し ===
物理には、専門用語以外にも独特の言い回しが存在する。慣れないうちは分かりにくいかもしれないので、ここで補足しておく。
*軽い
「質量は無視できる」という意味。「軽い糸」「軽い動滑車」などのように言う。
*なめらか
「摩擦は無視できる」の意味。「なめらかな面」「なめらかな滑車」など。
*粗い
「摩擦がある」の意味。「粗い面」「粗い斜面」などのように用いる。
[[category:理科教育|こうとうかつこうふつりきそ]]
[[category:高校理科|ふつりきそ]]
[[category:物理基礎|*]]
4hqk4bbcaw8d5etyl2tsbqgni5k307r
SQLite
0
32820
301489
272314
2026-07-13T08:39:05Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301489
wikitext
text/x-wiki
{{Pathnav|メインページ|工学|情報技術|プログラミング}}
SQLiteは、[[MySQL]]のようなサーバー・クライアント方式ではなく、アプリケーションに直接組み込んで使用することができる[[リレーショナルデータベース管理システム|リレーショナルデータベース管理システム(RDBMS)]] です。
身近なところでは、[[Google Chrome]]や[[Mozilla Firefox]]などの多くのアプリケーションで使用されており、Google AndroidではOSに組み込まれています。
これにより、SQLiteは世界で最もインストールベースの多いRDBMSの1つとして認知されています。
== SQLiteについて ==
SQLiteは、高速かつ軽量なリレーショナルデータベース管理システムです。SQLiteは、コンパクトなライブラリとして提供され、モバイルデバイス、デスクトップアプリケーション、Webブラウザ、組み込みシステムなど、あらゆるプラットフォームで使用されています。
SQLiteは、標準のSQLをサポートし、トランザクション処理、データの完全性維持、およびACID(原子性、一貫性、分離性、耐久性)の保証を提供します。また、多くの主要なプログラミング言語([[C言語|C]]、[[Java]]、[[Python]]、[[PHP]]など)で利用可能であり、簡単に統合することができます。
SQLiteの最も重要な特徴の一つは、ファイルベースのデータベースであることです。つまり、データはファイルに保存され、ファイルを別の場所にコピーするだけで、データを移行したりバックアップしたりすることができます。また、複数のプロセスが同時にデータベースにアクセスすることができるため、アプリケーションのパフォーマンスが向上します。
SQLiteは、他のリレーショナルデータベース管理システムと比較して、データベースが比較的小規模である場合に最適です。大量のデータを処理する必要がある場合や、高い同時アクセスが必要な場合には、より高機能なデータベースシステムを検討する必要があります。
ただし、SQLiteは非常に高速であるため、多くの場合、大量のデータを処理する必要がある場合でも、十分なパフォーマンスを発揮します。SQLiteはまた、カスタム拡張機能を提供することができ、標準のSQLコマンド以外の機能を簡単に実装することができます。
SQLiteは、プログラマにとって非常に使いやすく、学びやすいです。SQLの基本構文を理解しているだけで、すぐにSQLiteを利用することができます。また、SQLiteは非常に広く利用されているため、オンラインで豊富な情報を見つけることができます。
== インストール ==
本書では、SQLite version3の保守管理用のコマンドラインインターフェース <code>sqlite3</code>の操作を中心に、SQLiteの機能の解説を行いますので、まず<code>sqlite3</code>が、ご自身の環境にインストールされているか確認します。
;コマンドラインでsqlite3のバージョンを確認(インストールされている場合)
:<syntaxhighlight lang=console>
$ sqlite3 -version
3.49.1 2025-02-18 13:38:58 873d4e274b4988d260ba8354a9718324a1c26187a4ab4c1cc0227c03d0f10e70 (64-bit)
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
: バージョンは異なるかもしれませんが、この書式で1行表示されたら sqlite3 はインストールされています。
: その場合は、追加のインストール手順は不要ですが、2フィールド目の日付が年オーダーで古い場合は、よりあらたしいバージョンの入手も検討してください。
;コマンドラインでsqlite3のバージョンを確認(インストールされていない場合):<syntaxhighlight lang=console>
$ sqlite3 -version
bash: sqlite3: command not found
</syntaxhighlight>
: メッセージの細部は異なるかもしれませんが、”command not found” や ”コマンドまたはファイル名が違います” のようなメッセージが返された場合は、 sqlite3 はインストールされていません。
: その場合は、下記のインストール手順が必要です。
=== Microsoft Windows ===
SQLite公式([https://www.sqlite.org/download.html ダウンロードページ])の Precompiled Binaries for Windows にある sqlite-tools-win-x64-3490000.zip(6.272 MiB)をダウンロードします(3490000の部分はバージョンによって変わります。この場合は、3.47.0)。
sqlite-tools-win-x64-3450000.zipは、ZIP書庫で
:<syntaxhighlight lang=console>
$ unzip -l sqlite-tools-win-x64-3490000.zip
Archive: sqlite-tools-win-x64-3490000.zip
Length Date Time Name
--------- ---------- ----- ----
3875840 2025-02-06 16:06 sqlite3.exe
3174912 2025-02-06 16:06 sqldiff.exe
4436992 2025-02-06 16:07 sqlite3_analyzer.exe
3111424 2025-02-06 16:07 sqlite3_rsync.exe
--------- -------
14599168 4 files
</syntaxhighlight>
:と4つの実行形式があります。
:これらはインストーラー'''ではなく'''、コマンドそのものです。
:このまま実行できます。
=== Apple macOS ===
2022年11月現在サポートが継続されている macOS には、最初からインストールされています。
Terminalを起動してバージョンを確認してください。
:<syntaxhighlight lang=bash>
% sqlite3 --version
3.28.0 2019-04-15 14:49:49 378230ae7f4b721c8b8d83c8ceb891449685cd23b1702a57841f1be40b5daapl
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
=== FreeBSD ===
ports/pkg の databases/sqlite3 にあります。
;自分でビルド:<syntaxhighlight lang=csh>
% doas make -C /usr/ports/databases/sqlite3/ all install clean
...
% sqlite3 -version
3.46.1 2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69aalt1 (64-bit)
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
;ビルド済パッケージを導入:<syntaxhighlight lang=csh>
% doas pkg install sqlite3-3.46.1,1
...
% sqlite3 -version
3.46.1 2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69aalt1 (64-bit)
</syntaxhighlight>
=== GNU/Linux ===
GNU/Linuxの場合は、ディストーションやパッケージマネージャーによってパッケージの名前やインストール方法が異なるので以下は一例です。
==== Google ChromeOS/Chromebrew ====
Chromebrewは、<code>sqlite</code> の名前で SQLite のパッケージが用意されています。
<syntaxhighlight lang=bash>
$ crew install -sv sqlite
...
$ sqlite3 -version
3.42.0 2023-05-16 12:36:15 831d0fb2836b71c9bc51067c49fee4b8f18047814f2ff22d817d25195cf3alt1
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
==== Debian ====
<syntaxhighlight lang=bash>
$ sudo apt-get install sqlite3
...
$ sqlite3 -version
3.46.1 2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69aalt1 (64-bit)
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
{{:SQLite/基本操作}}
== バックアップ/外部出力の方法 ==
SQLiteのデータベースは、1つの通常のファイルなので、バックアップはファイルをコピーするだけです。
また、<code>sqlite3</code>のコマンドに、<code>.backup</code> コマンドと <code>.restore</code> が用意されています。
=== ダンプ ===
バックアップはファイルレベルのコピーでできますが、障害発生に備えてのバックアップとしては、テキストファイルへのダンプが有用です。
ダンプは、SQLiteのコマンドライン管理インターフェース <code>sqlite3</code>を使います。
==== .dump ====
[[#操作と結果概観|操作と結果概観]]で作成したデータベース <code>periodic.db</code>の テーブル <code>elements</code>をテキストファイル<code>periodic.txt</code> にダンプする例です。
:<syntaxhighlight lang=console line>
$ sqlite3
SQLite version 3.40.0 2022-11-16 12:10:08
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open periodic.db
sqlite> .table
elements
sqlite> .dump elements
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE elements( number, name, symbol );
INSERT INTO elements VALUES(1,'Hydrogen','H');
COMMIT;
sqlite> .output periodic.txt
sqlite> .dump elements
sqlite> .output stdout
sqlite> .quit
$ cat periodic.txt
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE elements( number ,name ,symbol );
INSERT INTO elements VALUES(1,'Hydrogen','H');
COMMIT;
$ _
</syntaxhighlight>
::<syntaxhighlight lang=console line start=6>
sqlite> .open periodic.db
</syntaxhighlight>
:: <code>.open</code> コマンドで、データベース <code>periodic.db</code>を開いています。
::<syntaxhighlight lang=console line start=1>
$ sqlite3 periodic.db
</syntaxhighlight>
::と、最初にコマンドラインからデータベースを指定して開くこともできます。
::<syntaxhighlight lang=console line start=7>
sqlite> .table
elements
</syntaxhighlight>
:: <code>.table</code> コマンドで、開いているデータベースに含まれるテーブル名を表示します。
::<syntaxhighlight lang=console line start=9>
.dump elements
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE elements( number ,name ,symbol );
INSERT INTO elements VALUES(1,'Hydrogen','H');
COMMIT;
</syntaxhighlight>
:: <code>.dump</code> コマンドで、テーブル<code>elements</code>をダンプしています。既定の出力先は標準出力です。
::<syntaxhighlight lang=console line start=15>
sqlite> .output periodic.txt
</syntaxhighlight>
::出力先をファイル<code>periodic.txt</code>に変更。
::<syntaxhighlight lang=console line start=16>
sqlite> .dump elements
</syntaxhighlight>
:: またダンプします。今度の出力先は <code>periodic.txt</code>
::<syntaxhighlight lang=console line start=17>
sqlite> .output stdout
</syntaxhighlight>
::出力先を標準出力に戻します(直後で終了しているので不要とは言えます)。
::<syntaxhighlight lang=console line start=18>
sqlite> .quit
</syntaxhighlight>
:: sqlite3 を終了します。
=== ダンプからの復元 ===
<code>.dump</code>コマンドでダンプしたデータを現在のデータベースにリストアするには <code>.read</code> コマンドを使います。
==== .read ====
:<syntaxhighlight lang=console line>
$ sqlite3
SQLite version 3.40.0 2022-11-16 12:10:08
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open restore.db
sqlite> .read periodic.txt
sqlite> SELECT * FROM elements;
1|Hydrogen|H
</syntaxhighlight>
== 空き領域の開放 ==
SQLiteでは、テーブルにデータが追加されると、データベースファイルのサイズは徐々に大きくなるが、テーブルからデータを削除しても、データベースファイルのサイズはすぐには小さくなりません。
=== VACUUM ===
sqlite3では、VACUUMコマンドで空き領域の開放を行います。
:<syntaxhighlight lang=console line>
$ sqlite3
SQLite version 3.40.0 2022-11-16 12:10:08
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open restore.db
sqlite> VACUUM ;
</syntaxhighlight>
== Pythonからの利用 ==
SQLiteはアプリケーションに組込まれ使われますが、ここでは Python からの利用の例を紹介します。
Pythonでは、[https://peps.python.org/pep-0249/ PEP 249 -- Python Database API Specification v2.0] でデータベースAPIが標準化されており、sqlite3 モジュールでSQLite3をサポートしています。
;[https://paiza.io/projects/Q90iBzW93QoWtWbokaBG_A?language=python3 都道府県コード一覧表(Python版)]:<syntaxhighlight lang=python3 line>
import sqlite3
with sqlite3.connect(":memory:") as conn:
cur = conn.cursor()
cur.execute('CREATE TABLE 都道府県コード一覧表 (都道府県コード INTEGER, 都道府県 STRING, prefectures STRING)')
prefs = """\
01 北海道 Hokkaido
02 青森県 Aomori
03 岩手県 Iwate
04 宮城県 Miyagi
05 秋田県 Akita
06 山形県 Yamagata
07 福島県 Fukushima
08 茨城県 Ibaraki
09 栃木県 Tochigi
10 群馬県 Gumma
11 埼玉県 Saitama
12 千葉県 Chiba
13 東京都 Tokyo
14 神奈川県 Kanagawa
15 新潟県 Niigata
16 富山県 Toyama
17 石川県 Ishikawa
18 福井県 Fukui
19 山梨県 Yamanashi
20 長野県 Nagano
21 岐阜県 Gifu
22 静岡県 Shizuoka
23 愛知県 Aichi
24 三重県 Mie
25 滋賀県 Shiga
26 京都府 Kyoto
27 大阪府 Osaka
28 兵庫県 Hyogo
29 奈良県 Nara
30 和歌山県 Wakayama
31 鳥取県 Tottori
32 島根県 Shimane
33 岡山県 Okayama
34 広島県 Hiroshima
35 山口県 Yamaguchi
36 徳島県 Tokushima
37 香川県 Kagawa
38 愛媛県 Ehime
39 高知県 Kochi
40 福岡県 Fukuoka
41 佐賀県 Saga
42 長崎県 Nagasaki
43 熊本県 Kumamoto
44 大分県 Oita
45 宮崎県 Miyazaki
46 鹿児島県 Kagoshima
47 沖縄県 Okinawa
"""
cur.executemany('INSERT INTO 都道府県コード一覧表 VALUES(?, ?, ?)',
(line.split("\t") for line in prefs.splitlines()))
print('SELECT * FROM 都道府県コード一覧表')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表'):
print(*row, sep=',')
print()
print('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22'):
print(*row, sep=',')
print()
print('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード >= 2 and 都道府県コード <= 7')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード >= 2 and 都道府県コード <= 7'):
print(*row, sep=',')
print()
</syntaxhighlight>
:;sqlite3モジュールのインポート:<syntaxhighlight lang=python3 line>
import sqlite3
</syntaxhighlight>
::python3では、標準でSQLite3をサポートしています。
:;インコアDBへのコネクションを確立:<syntaxhighlight lang=python3 line start=3>
with sqlite3.connect(":memory:") as conn:
</syntaxhighlight>
:: with 文を使うと open関数同様、スコープを抜けると自動的にclose(とcommit)が行われるので、commit忘れを防止するためにも with を使うべきです。
::: try/except で例外にも対応すべきかもしれません。
:: 単一のファイル(かインコアDB)で構成されるSQLite3に '''connect''' するのは奇異に感じますが、これは Python Database API 2 が汎用的に設計されているためで、MySQLのようなサーバークライアントモデルを採用したRDBMSではまさにDBサーバーへの接続(認証付き)で「接続」を行いますので、その意味論に揃えた形です。
:;sqlite3.Cursorオブジェクトの取得:<syntaxhighlight lang=python3 line start=4>
cur = conn.cursor()
</syntaxhighlight>
:;テーブル定義:<syntaxhighlight lang=python3 line start=5>
cur.execute('CREATE TABLE 都道府県コード一覧表 (都道府県コード INTEGER, 都道府県 STRING, prefectures STRING)')
</syntaxhighlight>
:;文字列としてTSVデータを用意しました。:<syntaxhighlight lang=python3 line start=6>
prefs = """\
01 北海道 Hokkaido
02 青森県 Aomori
03 岩手県 Iwate
︙
47 沖縄県 Okinawa
"""
</syntaxhighlight>
:;複数レコードの一括登録:<syntaxhighlight lang=python3 line start=55>
cur.executemany('INSERT INTO 都道府県コード一覧表 VALUES(?, ?, ?)',
(line.split("\t") for line in prefs.splitlines()))
</syntaxhighlight>
:: .executemany()は、プレースホルダー(?)を含むSQL文にリストの内容を順に渡します。
:: プレースホルダーを使うこのやり方は、SQLインジェクションへの耐性を上げることができると考えられています。
:;全レコード取得:<syntaxhighlight lang=python3 line start=58>
print('SELECT * FROM 都道府県コード一覧表')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表'):
print(*row, sep=',')
print()
</syntaxhighlight>
:;都道府県コード = 22のレコードを取得:<syntaxhighlight lang=python3 line start=63>
print('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22'):
print(*row, sep=',')
print()
</syntaxhighlight>
:;都道府県コード >= 2 and 都道府県コード <= 7なレコードを取得(東北地方):<syntaxhighlight lang=python3 line start=68>
print('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード >= 2 and 都道府県コード <= 7')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード >= 2 and 都道府県コード <= 7'):
print(*row, sep=',')
</syntaxhighlight>
;[https://paiza.io/projects/xAoitZVydOzwPdZK9k4DcQ?language=python3 周期律表(Python版)]:<syntaxhighlight lang=python3 line>
import sqlite3
with sqlite3.connect("periodic.db") as conn:
cur = conn.cursor()
cur.execute('CREATE TABLE 周期律表 (原子番号 INTEGER PRIMARY KEY AUTOINCREMENT, 和名 STRING, 英名 STRING, 元素記号 STRING)')
#cur.execute('INSERT INTO 周期律表 (name, symbol) VALUES("H", "Hydrogen")')
cur.executemany('INSERT INTO 周期律表(和名,英名,元素記号) VALUES(?, ?, ?)', [
("水素", "Hydrogen", "H"),
("ヘリウム", "Helium", "He"),
("リチウム", "Lithium", "Li"),
("ベリリウム", "Beryllium", "Be"),
("硼素", "Boron", "B"),
("炭素", "Carbon", "C"),
("窒素", "Nitrogen","N"),
("酸素", "Oxygen", "O"),
("弗素", "Fluorine", "F"),
("ネオン", "Neon", "Ne"),
("ナトリウム", "Sodium", "Na"),
("マグネシウム", "Magnesium", "Mg"),
])
cur.execute('INSERT INTO 周期律表 VALUES(null, "アルミニウム", "Al", "Aluminium")')
cur.execute('INSERT INTO 周期律表 VALUES(null, "珪素", "Si", "Silicon")')
with sqlite3.connect("periodic.db") as conn2:
cur = conn2.cursor()
print("テーブルスキーマーは、PRAGMA table_info(TABLE) で取得できます。")
for row in cur.execute('PRAGMA table_info("周期律表") '):
print(*row, sep=',')
print('SELECT * FROM 周期律表')
print(*(row[1] for row in cur.execute('PRAGMA table_info("周期律表") ')),sep=',')
for row in cur.execute('SELECT * FROM 周期律表'):
print(*row, sep=',')
print("VIEW は、仮想的なテーブルで検索式に名前をつけたような働きをします")
cur.execute('CREATE VIEW 原子番号4未満の元素 AS SELECT 英名, 元素記号 FROM 周期律表 WHERE 原子番号 < 4')
for row in cur.execute('SELECT * FROM 原子番号4未満の元素'):
print(*row, sep=',')
print("INDEX は、検索性能が向上する一方レコード追加時にオーバーヘッドが生じるというトレードオフがあります。")
cur.execute('CREATE INDEX 英名インデックス ON 周期律表(英名)')
print("UNIQUE INDEX は、同一のテーブル内で値の重複のないフィールドを使ったインデックスです。")
cur.execute('CREATE UNIQUE INDEX 原子番号英名ユニークインデックス ON 周期律表(原子番号,英名)')
print("sqlite_master はデータベース毎にあるテーブルの台帳です。")
for row in cur.execute('SELECT * FROM sqlite_master'):
print(*row, sep=',')
print("----")
for row in cur.execute('SELECT name,sql FROM sqlite_master WHERE type="table"'):
print(*row, sep=',')
for row in cur.execute('PRAGMA database_list'):
print(*row, sep=',')
print(cur.execute('SELECT sqlite_version()').fetchone())
print("----")
for line in conn2.iterdump():
print(line)
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text line>
テーブルスキーマーは、PRAGMA table_info(TABLE) で取得できます。
0,原子番号,INTEGER,0,None,1
1,和名,STRING,0,None,0
2,英名,STRING,0,None,0
3,元素記号,STRING,0,None,0
SELECT * FROM 周期律表
原子番号,和名,英名,元素記号
1,水素,Hydrogen,H
2,ヘリウム,Helium,He
3,リチウム,Lithium,Li
4,ベリリウム,Beryllium,Be
5,硼素,Boron,B
6,炭素,Carbon,C
7,窒素,Nitrogen,N
8,酸素,Oxygen,O
9,弗素,Fluorine,F
10,ネオン,Neon,Ne
11,ナトリウム,Sodium,Na
12,マグネシウム,Magnesium,Mg
13,アルミニウム,Al,Aluminium
14,珪素,Si,Silicon
VIEW は、仮想的なテーブルで検索式に名前をつけたような働きをします
Hydrogen,H
Helium,He
Lithium,Li
INDEX は、検索性能が向上する一方レコード追加時にオーバーヘッドが生じるというトレードオフがあります。
UNIQUE INDEX は、同一のテーブル内で値の重複のないフィールドを使ったインデックスです。
sqlite_master はデータベース毎にあるテーブルの台帳です。
table,周期律表,周期律表,2,CREATE TABLE 周期律表 (原子番号 INTEGER PRIMARY KEY AUTOINCREMENT, 和名 STRING, 英名 STRING, 元素記号 STRING)
table,sqlite_sequence,sqlite_sequence,3,CREATE TABLE sqlite_sequence(name,seq)
view,原子番号4未満の元素,原子番号4未満の元素,0,CREATE VIEW 原子番号4未満の元素 AS SELECT 英名, 元素記号 FROM 周期律表 WHERE 原子番号 < 4
index,英名インデックス,周期律表,4,CREATE INDEX 英名インデックス ON 周期律表(英名)
index,原子番号英名ユニークインデックス,周期律表,5,CREATE UNIQUE INDEX 原子番号英名ユニークインデックス ON 周期律表(原子番号,英名)
----
周期律表,CREATE TABLE 周期律表 (原子番号 INTEGER PRIMARY KEY AUTOINCREMENT, 和名 STRING, 英名 STRING, 元素記号 STRING)
sqlite_sequence,CREATE TABLE sqlite_sequence(name,seq)
0,main,/workspace/periodic.db
('3.31.1',)
----
BEGIN TRANSACTION;
DELETE FROM "sqlite_sequence";
INSERT INTO "sqlite_sequence" VALUES('周期律表',14);
CREATE TABLE 周期律表 (原子番号 INTEGER PRIMARY KEY AUTOINCREMENT, 和名 STRING, 英名 STRING, 元素記号 STRING);
INSERT INTO "周期律表" VALUES(1,'水素','Hydrogen','H');
INSERT INTO "周期律表" VALUES(2,'ヘリウム','Helium','He');
INSERT INTO "周期律表" VALUES(3,'リチウム','Lithium','Li');
INSERT INTO "周期律表" VALUES(4,'ベリリウム','Beryllium','Be');
INSERT INTO "周期律表" VALUES(5,'硼素','Boron','B');
INSERT INTO "周期律表" VALUES(6,'炭素','Carbon','C');
INSERT INTO "周期律表" VALUES(7,'窒素','Nitrogen','N');
INSERT INTO "周期律表" VALUES(8,'酸素','Oxygen','O');
INSERT INTO "周期律表" VALUES(9,'弗素','Fluorine','F');
INSERT INTO "周期律表" VALUES(10,'ネオン','Neon','Ne');
INSERT INTO "周期律表" VALUES(11,'ナトリウム','Sodium','Na');
INSERT INTO "周期律表" VALUES(12,'マグネシウム','Magnesium','Mg');
INSERT INTO "周期律表" VALUES(13,'アルミニウム','Al','Aluminium');
INSERT INTO "周期律表" VALUES(14,'珪素','Si','Silicon');
CREATE VIEW 原子番号4未満の元素 AS SELECT 英名, 元素記号 FROM 周期律表 WHERE 原子番号 < 4;
CREATE INDEX 英名インデックス ON 周期律表(英名);
CREATE UNIQUE INDEX 原子番号英名ユニークインデックス ON 周期律表(原子番号,英名);
COMMIT;
</syntaxhighlight>
== PHPからの利用 ==
SQLiteはアプリケーションに組込まれ使われますが、ここでは [[PHP]] からの利用の例を紹介します。
=== PDO ===
PHPでは、PDOでデータベースAPIが抽象化/標準化されており、SQLiteもPDO経由で使用できます。
;[https://paiza.io/projects/2u1WkYJObi_VqdSH4bAVcQ?language=php 都道府県コード一覧表(PHP/PDO版)]:<syntaxhighlight lang=php line>
<?php
// SQLite3/PDOを使用したデータベースハンドリング
declare(strict_types=1);
header('Content-Type: text/plain');
$db = new PDO("sqlite::memory:");
$db->exec(
"CREATE TABLE 都道府県コード一覧表 (都道府県コード INTEGER, 都道府県 STRING, prefectures STRING)"
);
$insert = $db->prepare("INSERT INTO 都道府県コード一覧表 VALUES (:n,:ja,:en)");
$db->beginTransaction();
try {
foreach (
array_map(
fn($line): array => explode("\t", $line),
explode(
"\n",
<<<EOS
01 北海道 Hokkaido
02 青森県 Aomori
03 岩手県 Iwate
04 宮城県 Miyagi
05 秋田県 Akita
06 山形県 Yamagata
07 福島県 Fukushima
08 茨城県 Ibaraki
09 栃木県 Tochigi
10 群馬県 Gumma
11 埼玉県 Saitama
12 千葉県 Chiba
13 東京都 Tokyo
14 神奈川県 Kanagawa
15 新潟県 Niigata
16 富山県 Toyama
17 石川県 Ishikawa
18 福井県 Fukui
19 山梨県 Yamanashi
20 長野県 Nagano
21 岐阜県 Gifu
22 静岡県 Shizuoka
23 愛知県 Aichi
24 三重県 Mie
25 滋賀県 Shiga
26 京都府 Kyoto
27 大阪府 Osaka
28 兵庫県 Hyogo
29 奈良県 Nara
30 和歌山県 Wakayama
31 鳥取県 Tottori
32 島根県 Shimane
33 岡山県 Okayama
34 広島県 Hiroshima
35 山口県 Yamaguchi
36 徳島県 Tokushima
37 香川県 Kagawa
38 愛媛県 Ehime
39 高知県 Kochi
40 福岡県 Fukuoka
41 佐賀県 Saga
42 長崎県 Nagasaki
43 熊本県 Kumamoto
44 大分県 Oita
45 宮崎県 Miyazaki
46 鹿児島県 Kagoshima
47 沖縄県 Okinawa
EOS
)
)
as $pref
) {
$insert->bindParam(":n", $pref[0]);
$insert->bindParam(":ja", $pref[1]);
$insert->bindParam(":en", $pref[2]);
$insert->execute();
}
$db->commit();
} catch (PDOException $e) {
echo $e;
$db->rollback();
throw $e;
}
$insert = null;
$query = "PRAGMA table_info('都道府県コード一覧表')";
echo "$query", PHP_EOL;
foreach ($db->query($query)->fetchAll(PDO::FETCH_ASSOC) as $assoc) {
$fields[] = $assoc['name'];
}
$assoc = null;
echo implode(',',$fields),PHP_EOL;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22;";
echo "$query", PHP_EOL;
foreach ($db->query($query)->fetchAll(PDO::FETCH_ASSOC) as $assoc) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表 WHERE 都道府県 LIKE '%京都%';";
echo "$query", PHP_EOL;
foreach ($db->query($query)->fetchAll(PDO::FETCH_ASSOC) as $assoc) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表;";
echo "$query", PHP_EOL;
foreach ($db->query($query)->fetchAll(PDO::FETCH_ASSOC) as $assoc) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text line>
PRAGMA table_info('都道府県コード一覧表')
都道府県コード,都道府県,prefectures
SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22;
都道府県コード:22, 都道府県:静岡県, prefectures:Shizuoka
SELECT * FROM 都道府県コード一覧表 WHERE 都道府県 LIKE '%京都%';
都道府県コード:13, 都道府県:東京都, prefectures:Tokyo
都道府県コード:26, 都道府県:京都府, prefectures:Kyoto
SELECT * FROM 都道府県コード一覧表;
都道府県コード:1, 都道府県:北海道, prefectures:Hokkaido
都道府県コード:2, 都道府県:青森県, prefectures:Aomori
都道府県コード:3, 都道府県:岩手県, prefectures:Iwate
都道府県コード:4, 都道府県:宮城県, prefectures:Miyagi
都道府県コード:5, 都道府県:秋田県, prefectures:Akita
都道府県コード:6, 都道府県:山形県, prefectures:Yamagata
都道府県コード:7, 都道府県:福島県, prefectures:Fukushima
都道府県コード:8, 都道府県:茨城県, prefectures:Ibaraki
都道府県コード:9, 都道府県:栃木県, prefectures:Tochigi
都道府県コード:10, 都道府県:群馬県, prefectures:Gumma
都道府県コード:11, 都道府県:埼玉県, prefectures:Saitama
都道府県コード:12, 都道府県:千葉県, prefectures:Chiba
都道府県コード:13, 都道府県:東京都, prefectures:Tokyo
都道府県コード:14, 都道府県:神奈川県, prefectures:Kanagawa
都道府県コード:15, 都道府県:新潟県, prefectures:Niigata
都道府県コード:16, 都道府県:富山県, prefectures:Toyama
都道府県コード:17, 都道府県:石川県, prefectures:Ishikawa
都道府県コード:18, 都道府県:福井県, prefectures:Fukui
都道府県コード:19, 都道府県:山梨県, prefectures:Yamanashi
都道府県コード:20, 都道府県:長野県, prefectures:Nagano
都道府県コード:21, 都道府県:岐阜県, prefectures:Gifu
都道府県コード:22, 都道府県:静岡県, prefectures:Shizuoka
都道府県コード:23, 都道府県:愛知県, prefectures:Aichi
都道府県コード:24, 都道府県:三重県, prefectures:Mie
都道府県コード:25, 都道府県:滋賀県, prefectures:Shiga
都道府県コード:26, 都道府県:京都府, prefectures:Kyoto
都道府県コード:27, 都道府県:大阪府, prefectures:Osaka
都道府県コード:28, 都道府県:兵庫県, prefectures:Hyogo
都道府県コード:29, 都道府県:奈良県, prefectures:Nara
都道府県コード:30, 都道府県:和歌山県, prefectures:Wakayama
都道府県コード:31, 都道府県:鳥取県, prefectures:Tottori
都道府県コード:32, 都道府県:島根県, prefectures:Shimane
都道府県コード:33, 都道府県:岡山県, prefectures:Okayama
都道府県コード:34, 都道府県:広島県, prefectures:Hiroshima
都道府県コード:35, 都道府県:山口県, prefectures:Yamaguchi
都道府県コード:36, 都道府県:徳島県, prefectures:Tokushima
都道府県コード:37, 都道府県:香川県, prefectures:Kagawa
都道府県コード:38, 都道府県:愛媛県, prefectures:Ehime
都道府県コード:39, 都道府県:高知県, prefectures:Kochi
都道府県コード:40, 都道府県:福岡県, prefectures:Fukuoka
都道府県コード:41, 都道府県:佐賀県, prefectures:Saga
都道府県コード:42, 都道府県:長崎県, prefectures:Nagasaki
都道府県コード:43, 都道府県:熊本県, prefectures:Kumamoto
都道府県コード:44, 都道府県:大分県, prefectures:Oita
都道府県コード:45, 都道府県:宮崎県, prefectures:Miyazaki
都道府県コード:46, 都道府県:鹿児島県, prefectures:Kagoshima
都道府県コード:47, 都道府県:沖縄県, prefectures:Okinawa
</syntaxhighlight>
: メモリー上にデータベースを構築し、問合わせと応答を表示しています。
: PDO::prepare() を使うことで、プレースホルダー経由でSQLを実行し、SQLインジェクションの驚異を低減しています。
: $変数 = null; を随所で行っているのは、PHPでは変数のスコープをループに閉じ込めることができないためで、特にループから脱走したリファレンスが関係したバグは原因の特定が困難になりがちです。
=== SQLite3クラス ===
[[#PDO|PDO]]とは別に、SQLite専用のSQLite3クラスも用意されています。
;[https://paiza.io/projects/QhNiBQZ4tToKX73tuYbaMQ?language=php 都道府県コード一覧表(PHP/ベンダー固有コード版)]:<syntaxhighlight lang=php line>
<?php
// SQLite3を使用したデータベースハンドリング
declare(strict_types=1);
header("Content-Type: text/plain");
$db = new SQLite3(":memory:");
$db->exec(
"CREATE TABLE 都道府県コード一覧表 (都道府県コード INTEGER, 都道府県 STRING, prefectures STRING)"
);
$insert = $db->prepare("INSERT INTO 都道府県コード一覧表 VALUES (:n,:ja,:en)");
try {
foreach (
array_map(
fn($line): array => explode("\t", $line),
explode(
"\n",
<<<EOS
01 北海道 Hokkaido
02 青森県 Aomori
03 岩手県 Iwate
04 宮城県 Miyagi
05 秋田県 Akita
06 山形県 Yamagata
07 福島県 Fukushima
08 茨城県 Ibaraki
09 栃木県 Tochigi
10 群馬県 Gumma
11 埼玉県 Saitama
12 千葉県 Chiba
13 東京都 Tokyo
14 神奈川県 Kanagawa
15 新潟県 Niigata
16 富山県 Toyama
17 石川県 Ishikawa
18 福井県 Fukui
19 山梨県 Yamanashi
20 長野県 Nagano
21 岐阜県 Gifu
22 静岡県 Shizuoka
23 愛知県 Aichi
24 三重県 Mie
25 滋賀県 Shiga
26 京都府 Kyoto
27 大阪府 Osaka
28 兵庫県 Hyogo
29 奈良県 Nara
30 和歌山県 Wakayama
31 鳥取県 Tottori
32 島根県 Shimane
33 岡山県 Okayama
34 広島県 Hiroshima
35 山口県 Yamaguchi
36 徳島県 Tokushima
37 香川県 Kagawa
38 愛媛県 Ehime
39 高知県 Kochi
40 福岡県 Fukuoka
41 佐賀県 Saga
42 長崎県 Nagasaki
43 熊本県 Kumamoto
44 大分県 Oita
45 宮崎県 Miyazaki
46 鹿児島県 Kagoshima
47 沖縄県 Okinawa
EOS
)
)
as $pref
) {
$insert->bindParam(":n", $pref[0], SQLITE3_INTEGER);
$insert->bindParam(":ja", $pref[1], SQLITE3_TEXT);
$insert->bindParam(":en", $pref[2], SQLITE3_TEXT);
$insert->execute();
}
} catch (Exception $e) {
echo "Caught exception: " . $e->getMessage();
}
$insert = null;
$query = "PRAGMA table_info('都道府県コード一覧表')";
echo "$query", PHP_EOL;
for (
$result = $db->query($query);
($assoc = $result->fetchArray(SQLITE3_ASSOC));
$fields[] = $assoc["name"]
) {}
$assoc = null;
echo implode(",", $fields), PHP_EOL;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22;";
echo "$query", PHP_EOL;
for (
$result = $db->query($query);
($assoc = $result->fetchArray(SQLITE3_ASSOC));
) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表 WHERE 都道府県 LIKE '%京都%';";
echo "$query", PHP_EOL;
for (
$result = $db->query($query);
($assoc = $result->fetchArray(SQLITE3_ASSOC));
) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表;";
echo "$query", PHP_EOL;
for (
$result = $db->query($query);
($assoc = $result->fetchArray(SQLITE3_ASSOC));
) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
</syntaxhighlight>
== 脚註 ==
<references />
== 下位階層のページ ==
[[SQLite/SQLリファレンス]]
[[SQLite/コマンドリファレンス]]
== 関連リンク ==
* [[SQL]] SQL一般の仕様や文法についての解説
{{DEFAULTSORT:SQLITE}}
[[Category:SQLite|*]]
[[Category:リレーショナルデータベース管理システム]]
c0v7pv1dh69m4i7yypu7cu69nhcn2gq
301507
301489
2026-07-13T09:09:01Z
AkiR27User
90873
/* 下位階層のページ */ 箇条書きに
301507
wikitext
text/x-wiki
{{Pathnav|メインページ|工学|情報技術|プログラミング}}
SQLiteは、[[MySQL]]のようなサーバー・クライアント方式ではなく、アプリケーションに直接組み込んで使用することができる[[リレーショナルデータベース管理システム|リレーショナルデータベース管理システム(RDBMS)]] です。
身近なところでは、[[Google Chrome]]や[[Mozilla Firefox]]などの多くのアプリケーションで使用されており、Google AndroidではOSに組み込まれています。
これにより、SQLiteは世界で最もインストールベースの多いRDBMSの1つとして認知されています。
== SQLiteについて ==
SQLiteは、高速かつ軽量なリレーショナルデータベース管理システムです。SQLiteは、コンパクトなライブラリとして提供され、モバイルデバイス、デスクトップアプリケーション、Webブラウザ、組み込みシステムなど、あらゆるプラットフォームで使用されています。
SQLiteは、標準のSQLをサポートし、トランザクション処理、データの完全性維持、およびACID(原子性、一貫性、分離性、耐久性)の保証を提供します。また、多くの主要なプログラミング言語([[C言語|C]]、[[Java]]、[[Python]]、[[PHP]]など)で利用可能であり、簡単に統合することができます。
SQLiteの最も重要な特徴の一つは、ファイルベースのデータベースであることです。つまり、データはファイルに保存され、ファイルを別の場所にコピーするだけで、データを移行したりバックアップしたりすることができます。また、複数のプロセスが同時にデータベースにアクセスすることができるため、アプリケーションのパフォーマンスが向上します。
SQLiteは、他のリレーショナルデータベース管理システムと比較して、データベースが比較的小規模である場合に最適です。大量のデータを処理する必要がある場合や、高い同時アクセスが必要な場合には、より高機能なデータベースシステムを検討する必要があります。
ただし、SQLiteは非常に高速であるため、多くの場合、大量のデータを処理する必要がある場合でも、十分なパフォーマンスを発揮します。SQLiteはまた、カスタム拡張機能を提供することができ、標準のSQLコマンド以外の機能を簡単に実装することができます。
SQLiteは、プログラマにとって非常に使いやすく、学びやすいです。SQLの基本構文を理解しているだけで、すぐにSQLiteを利用することができます。また、SQLiteは非常に広く利用されているため、オンラインで豊富な情報を見つけることができます。
== インストール ==
本書では、SQLite version3の保守管理用のコマンドラインインターフェース <code>sqlite3</code>の操作を中心に、SQLiteの機能の解説を行いますので、まず<code>sqlite3</code>が、ご自身の環境にインストールされているか確認します。
;コマンドラインでsqlite3のバージョンを確認(インストールされている場合)
:<syntaxhighlight lang=console>
$ sqlite3 -version
3.49.1 2025-02-18 13:38:58 873d4e274b4988d260ba8354a9718324a1c26187a4ab4c1cc0227c03d0f10e70 (64-bit)
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
: バージョンは異なるかもしれませんが、この書式で1行表示されたら sqlite3 はインストールされています。
: その場合は、追加のインストール手順は不要ですが、2フィールド目の日付が年オーダーで古い場合は、よりあらたしいバージョンの入手も検討してください。
;コマンドラインでsqlite3のバージョンを確認(インストールされていない場合):<syntaxhighlight lang=console>
$ sqlite3 -version
bash: sqlite3: command not found
</syntaxhighlight>
: メッセージの細部は異なるかもしれませんが、”command not found” や ”コマンドまたはファイル名が違います” のようなメッセージが返された場合は、 sqlite3 はインストールされていません。
: その場合は、下記のインストール手順が必要です。
=== Microsoft Windows ===
SQLite公式([https://www.sqlite.org/download.html ダウンロードページ])の Precompiled Binaries for Windows にある sqlite-tools-win-x64-3490000.zip(6.272 MiB)をダウンロードします(3490000の部分はバージョンによって変わります。この場合は、3.47.0)。
sqlite-tools-win-x64-3450000.zipは、ZIP書庫で
:<syntaxhighlight lang=console>
$ unzip -l sqlite-tools-win-x64-3490000.zip
Archive: sqlite-tools-win-x64-3490000.zip
Length Date Time Name
--------- ---------- ----- ----
3875840 2025-02-06 16:06 sqlite3.exe
3174912 2025-02-06 16:06 sqldiff.exe
4436992 2025-02-06 16:07 sqlite3_analyzer.exe
3111424 2025-02-06 16:07 sqlite3_rsync.exe
--------- -------
14599168 4 files
</syntaxhighlight>
:と4つの実行形式があります。
:これらはインストーラー'''ではなく'''、コマンドそのものです。
:このまま実行できます。
=== Apple macOS ===
2022年11月現在サポートが継続されている macOS には、最初からインストールされています。
Terminalを起動してバージョンを確認してください。
:<syntaxhighlight lang=bash>
% sqlite3 --version
3.28.0 2019-04-15 14:49:49 378230ae7f4b721c8b8d83c8ceb891449685cd23b1702a57841f1be40b5daapl
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
=== FreeBSD ===
ports/pkg の databases/sqlite3 にあります。
;自分でビルド:<syntaxhighlight lang=csh>
% doas make -C /usr/ports/databases/sqlite3/ all install clean
...
% sqlite3 -version
3.46.1 2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69aalt1 (64-bit)
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
;ビルド済パッケージを導入:<syntaxhighlight lang=csh>
% doas pkg install sqlite3-3.46.1,1
...
% sqlite3 -version
3.46.1 2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69aalt1 (64-bit)
</syntaxhighlight>
=== GNU/Linux ===
GNU/Linuxの場合は、ディストーションやパッケージマネージャーによってパッケージの名前やインストール方法が異なるので以下は一例です。
==== Google ChromeOS/Chromebrew ====
Chromebrewは、<code>sqlite</code> の名前で SQLite のパッケージが用意されています。
<syntaxhighlight lang=bash>
$ crew install -sv sqlite
...
$ sqlite3 -version
3.42.0 2023-05-16 12:36:15 831d0fb2836b71c9bc51067c49fee4b8f18047814f2ff22d817d25195cf3alt1
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
==== Debian ====
<syntaxhighlight lang=bash>
$ sudo apt-get install sqlite3
...
$ sqlite3 -version
3.46.1 2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69aalt1 (64-bit)
</syntaxhighlight>
:<code>-version</code>の前の <code>-</code>(ハイフン)は1つです。
{{:SQLite/基本操作}}
== バックアップ/外部出力の方法 ==
SQLiteのデータベースは、1つの通常のファイルなので、バックアップはファイルをコピーするだけです。
また、<code>sqlite3</code>のコマンドに、<code>.backup</code> コマンドと <code>.restore</code> が用意されています。
=== ダンプ ===
バックアップはファイルレベルのコピーでできますが、障害発生に備えてのバックアップとしては、テキストファイルへのダンプが有用です。
ダンプは、SQLiteのコマンドライン管理インターフェース <code>sqlite3</code>を使います。
==== .dump ====
[[#操作と結果概観|操作と結果概観]]で作成したデータベース <code>periodic.db</code>の テーブル <code>elements</code>をテキストファイル<code>periodic.txt</code> にダンプする例です。
:<syntaxhighlight lang=console line>
$ sqlite3
SQLite version 3.40.0 2022-11-16 12:10:08
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open periodic.db
sqlite> .table
elements
sqlite> .dump elements
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE elements( number, name, symbol );
INSERT INTO elements VALUES(1,'Hydrogen','H');
COMMIT;
sqlite> .output periodic.txt
sqlite> .dump elements
sqlite> .output stdout
sqlite> .quit
$ cat periodic.txt
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE elements( number ,name ,symbol );
INSERT INTO elements VALUES(1,'Hydrogen','H');
COMMIT;
$ _
</syntaxhighlight>
::<syntaxhighlight lang=console line start=6>
sqlite> .open periodic.db
</syntaxhighlight>
:: <code>.open</code> コマンドで、データベース <code>periodic.db</code>を開いています。
::<syntaxhighlight lang=console line start=1>
$ sqlite3 periodic.db
</syntaxhighlight>
::と、最初にコマンドラインからデータベースを指定して開くこともできます。
::<syntaxhighlight lang=console line start=7>
sqlite> .table
elements
</syntaxhighlight>
:: <code>.table</code> コマンドで、開いているデータベースに含まれるテーブル名を表示します。
::<syntaxhighlight lang=console line start=9>
.dump elements
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE elements( number ,name ,symbol );
INSERT INTO elements VALUES(1,'Hydrogen','H');
COMMIT;
</syntaxhighlight>
:: <code>.dump</code> コマンドで、テーブル<code>elements</code>をダンプしています。既定の出力先は標準出力です。
::<syntaxhighlight lang=console line start=15>
sqlite> .output periodic.txt
</syntaxhighlight>
::出力先をファイル<code>periodic.txt</code>に変更。
::<syntaxhighlight lang=console line start=16>
sqlite> .dump elements
</syntaxhighlight>
:: またダンプします。今度の出力先は <code>periodic.txt</code>
::<syntaxhighlight lang=console line start=17>
sqlite> .output stdout
</syntaxhighlight>
::出力先を標準出力に戻します(直後で終了しているので不要とは言えます)。
::<syntaxhighlight lang=console line start=18>
sqlite> .quit
</syntaxhighlight>
:: sqlite3 を終了します。
=== ダンプからの復元 ===
<code>.dump</code>コマンドでダンプしたデータを現在のデータベースにリストアするには <code>.read</code> コマンドを使います。
==== .read ====
:<syntaxhighlight lang=console line>
$ sqlite3
SQLite version 3.40.0 2022-11-16 12:10:08
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open restore.db
sqlite> .read periodic.txt
sqlite> SELECT * FROM elements;
1|Hydrogen|H
</syntaxhighlight>
== 空き領域の開放 ==
SQLiteでは、テーブルにデータが追加されると、データベースファイルのサイズは徐々に大きくなるが、テーブルからデータを削除しても、データベースファイルのサイズはすぐには小さくなりません。
=== VACUUM ===
sqlite3では、VACUUMコマンドで空き領域の開放を行います。
:<syntaxhighlight lang=console line>
$ sqlite3
SQLite version 3.40.0 2022-11-16 12:10:08
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open restore.db
sqlite> VACUUM ;
</syntaxhighlight>
== Pythonからの利用 ==
SQLiteはアプリケーションに組込まれ使われますが、ここでは Python からの利用の例を紹介します。
Pythonでは、[https://peps.python.org/pep-0249/ PEP 249 -- Python Database API Specification v2.0] でデータベースAPIが標準化されており、sqlite3 モジュールでSQLite3をサポートしています。
;[https://paiza.io/projects/Q90iBzW93QoWtWbokaBG_A?language=python3 都道府県コード一覧表(Python版)]:<syntaxhighlight lang=python3 line>
import sqlite3
with sqlite3.connect(":memory:") as conn:
cur = conn.cursor()
cur.execute('CREATE TABLE 都道府県コード一覧表 (都道府県コード INTEGER, 都道府県 STRING, prefectures STRING)')
prefs = """\
01 北海道 Hokkaido
02 青森県 Aomori
03 岩手県 Iwate
04 宮城県 Miyagi
05 秋田県 Akita
06 山形県 Yamagata
07 福島県 Fukushima
08 茨城県 Ibaraki
09 栃木県 Tochigi
10 群馬県 Gumma
11 埼玉県 Saitama
12 千葉県 Chiba
13 東京都 Tokyo
14 神奈川県 Kanagawa
15 新潟県 Niigata
16 富山県 Toyama
17 石川県 Ishikawa
18 福井県 Fukui
19 山梨県 Yamanashi
20 長野県 Nagano
21 岐阜県 Gifu
22 静岡県 Shizuoka
23 愛知県 Aichi
24 三重県 Mie
25 滋賀県 Shiga
26 京都府 Kyoto
27 大阪府 Osaka
28 兵庫県 Hyogo
29 奈良県 Nara
30 和歌山県 Wakayama
31 鳥取県 Tottori
32 島根県 Shimane
33 岡山県 Okayama
34 広島県 Hiroshima
35 山口県 Yamaguchi
36 徳島県 Tokushima
37 香川県 Kagawa
38 愛媛県 Ehime
39 高知県 Kochi
40 福岡県 Fukuoka
41 佐賀県 Saga
42 長崎県 Nagasaki
43 熊本県 Kumamoto
44 大分県 Oita
45 宮崎県 Miyazaki
46 鹿児島県 Kagoshima
47 沖縄県 Okinawa
"""
cur.executemany('INSERT INTO 都道府県コード一覧表 VALUES(?, ?, ?)',
(line.split("\t") for line in prefs.splitlines()))
print('SELECT * FROM 都道府県コード一覧表')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表'):
print(*row, sep=',')
print()
print('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22'):
print(*row, sep=',')
print()
print('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード >= 2 and 都道府県コード <= 7')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード >= 2 and 都道府県コード <= 7'):
print(*row, sep=',')
print()
</syntaxhighlight>
:;sqlite3モジュールのインポート:<syntaxhighlight lang=python3 line>
import sqlite3
</syntaxhighlight>
::python3では、標準でSQLite3をサポートしています。
:;インコアDBへのコネクションを確立:<syntaxhighlight lang=python3 line start=3>
with sqlite3.connect(":memory:") as conn:
</syntaxhighlight>
:: with 文を使うと open関数同様、スコープを抜けると自動的にclose(とcommit)が行われるので、commit忘れを防止するためにも with を使うべきです。
::: try/except で例外にも対応すべきかもしれません。
:: 単一のファイル(かインコアDB)で構成されるSQLite3に '''connect''' するのは奇異に感じますが、これは Python Database API 2 が汎用的に設計されているためで、MySQLのようなサーバークライアントモデルを採用したRDBMSではまさにDBサーバーへの接続(認証付き)で「接続」を行いますので、その意味論に揃えた形です。
:;sqlite3.Cursorオブジェクトの取得:<syntaxhighlight lang=python3 line start=4>
cur = conn.cursor()
</syntaxhighlight>
:;テーブル定義:<syntaxhighlight lang=python3 line start=5>
cur.execute('CREATE TABLE 都道府県コード一覧表 (都道府県コード INTEGER, 都道府県 STRING, prefectures STRING)')
</syntaxhighlight>
:;文字列としてTSVデータを用意しました。:<syntaxhighlight lang=python3 line start=6>
prefs = """\
01 北海道 Hokkaido
02 青森県 Aomori
03 岩手県 Iwate
︙
47 沖縄県 Okinawa
"""
</syntaxhighlight>
:;複数レコードの一括登録:<syntaxhighlight lang=python3 line start=55>
cur.executemany('INSERT INTO 都道府県コード一覧表 VALUES(?, ?, ?)',
(line.split("\t") for line in prefs.splitlines()))
</syntaxhighlight>
:: .executemany()は、プレースホルダー(?)を含むSQL文にリストの内容を順に渡します。
:: プレースホルダーを使うこのやり方は、SQLインジェクションへの耐性を上げることができると考えられています。
:;全レコード取得:<syntaxhighlight lang=python3 line start=58>
print('SELECT * FROM 都道府県コード一覧表')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表'):
print(*row, sep=',')
print()
</syntaxhighlight>
:;都道府県コード = 22のレコードを取得:<syntaxhighlight lang=python3 line start=63>
print('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22'):
print(*row, sep=',')
print()
</syntaxhighlight>
:;都道府県コード >= 2 and 都道府県コード <= 7なレコードを取得(東北地方):<syntaxhighlight lang=python3 line start=68>
print('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード >= 2 and 都道府県コード <= 7')
for row in cur.execute('SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード >= 2 and 都道府県コード <= 7'):
print(*row, sep=',')
</syntaxhighlight>
;[https://paiza.io/projects/xAoitZVydOzwPdZK9k4DcQ?language=python3 周期律表(Python版)]:<syntaxhighlight lang=python3 line>
import sqlite3
with sqlite3.connect("periodic.db") as conn:
cur = conn.cursor()
cur.execute('CREATE TABLE 周期律表 (原子番号 INTEGER PRIMARY KEY AUTOINCREMENT, 和名 STRING, 英名 STRING, 元素記号 STRING)')
#cur.execute('INSERT INTO 周期律表 (name, symbol) VALUES("H", "Hydrogen")')
cur.executemany('INSERT INTO 周期律表(和名,英名,元素記号) VALUES(?, ?, ?)', [
("水素", "Hydrogen", "H"),
("ヘリウム", "Helium", "He"),
("リチウム", "Lithium", "Li"),
("ベリリウム", "Beryllium", "Be"),
("硼素", "Boron", "B"),
("炭素", "Carbon", "C"),
("窒素", "Nitrogen","N"),
("酸素", "Oxygen", "O"),
("弗素", "Fluorine", "F"),
("ネオン", "Neon", "Ne"),
("ナトリウム", "Sodium", "Na"),
("マグネシウム", "Magnesium", "Mg"),
])
cur.execute('INSERT INTO 周期律表 VALUES(null, "アルミニウム", "Al", "Aluminium")')
cur.execute('INSERT INTO 周期律表 VALUES(null, "珪素", "Si", "Silicon")')
with sqlite3.connect("periodic.db") as conn2:
cur = conn2.cursor()
print("テーブルスキーマーは、PRAGMA table_info(TABLE) で取得できます。")
for row in cur.execute('PRAGMA table_info("周期律表") '):
print(*row, sep=',')
print('SELECT * FROM 周期律表')
print(*(row[1] for row in cur.execute('PRAGMA table_info("周期律表") ')),sep=',')
for row in cur.execute('SELECT * FROM 周期律表'):
print(*row, sep=',')
print("VIEW は、仮想的なテーブルで検索式に名前をつけたような働きをします")
cur.execute('CREATE VIEW 原子番号4未満の元素 AS SELECT 英名, 元素記号 FROM 周期律表 WHERE 原子番号 < 4')
for row in cur.execute('SELECT * FROM 原子番号4未満の元素'):
print(*row, sep=',')
print("INDEX は、検索性能が向上する一方レコード追加時にオーバーヘッドが生じるというトレードオフがあります。")
cur.execute('CREATE INDEX 英名インデックス ON 周期律表(英名)')
print("UNIQUE INDEX は、同一のテーブル内で値の重複のないフィールドを使ったインデックスです。")
cur.execute('CREATE UNIQUE INDEX 原子番号英名ユニークインデックス ON 周期律表(原子番号,英名)')
print("sqlite_master はデータベース毎にあるテーブルの台帳です。")
for row in cur.execute('SELECT * FROM sqlite_master'):
print(*row, sep=',')
print("----")
for row in cur.execute('SELECT name,sql FROM sqlite_master WHERE type="table"'):
print(*row, sep=',')
for row in cur.execute('PRAGMA database_list'):
print(*row, sep=',')
print(cur.execute('SELECT sqlite_version()').fetchone())
print("----")
for line in conn2.iterdump():
print(line)
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text line>
テーブルスキーマーは、PRAGMA table_info(TABLE) で取得できます。
0,原子番号,INTEGER,0,None,1
1,和名,STRING,0,None,0
2,英名,STRING,0,None,0
3,元素記号,STRING,0,None,0
SELECT * FROM 周期律表
原子番号,和名,英名,元素記号
1,水素,Hydrogen,H
2,ヘリウム,Helium,He
3,リチウム,Lithium,Li
4,ベリリウム,Beryllium,Be
5,硼素,Boron,B
6,炭素,Carbon,C
7,窒素,Nitrogen,N
8,酸素,Oxygen,O
9,弗素,Fluorine,F
10,ネオン,Neon,Ne
11,ナトリウム,Sodium,Na
12,マグネシウム,Magnesium,Mg
13,アルミニウム,Al,Aluminium
14,珪素,Si,Silicon
VIEW は、仮想的なテーブルで検索式に名前をつけたような働きをします
Hydrogen,H
Helium,He
Lithium,Li
INDEX は、検索性能が向上する一方レコード追加時にオーバーヘッドが生じるというトレードオフがあります。
UNIQUE INDEX は、同一のテーブル内で値の重複のないフィールドを使ったインデックスです。
sqlite_master はデータベース毎にあるテーブルの台帳です。
table,周期律表,周期律表,2,CREATE TABLE 周期律表 (原子番号 INTEGER PRIMARY KEY AUTOINCREMENT, 和名 STRING, 英名 STRING, 元素記号 STRING)
table,sqlite_sequence,sqlite_sequence,3,CREATE TABLE sqlite_sequence(name,seq)
view,原子番号4未満の元素,原子番号4未満の元素,0,CREATE VIEW 原子番号4未満の元素 AS SELECT 英名, 元素記号 FROM 周期律表 WHERE 原子番号 < 4
index,英名インデックス,周期律表,4,CREATE INDEX 英名インデックス ON 周期律表(英名)
index,原子番号英名ユニークインデックス,周期律表,5,CREATE UNIQUE INDEX 原子番号英名ユニークインデックス ON 周期律表(原子番号,英名)
----
周期律表,CREATE TABLE 周期律表 (原子番号 INTEGER PRIMARY KEY AUTOINCREMENT, 和名 STRING, 英名 STRING, 元素記号 STRING)
sqlite_sequence,CREATE TABLE sqlite_sequence(name,seq)
0,main,/workspace/periodic.db
('3.31.1',)
----
BEGIN TRANSACTION;
DELETE FROM "sqlite_sequence";
INSERT INTO "sqlite_sequence" VALUES('周期律表',14);
CREATE TABLE 周期律表 (原子番号 INTEGER PRIMARY KEY AUTOINCREMENT, 和名 STRING, 英名 STRING, 元素記号 STRING);
INSERT INTO "周期律表" VALUES(1,'水素','Hydrogen','H');
INSERT INTO "周期律表" VALUES(2,'ヘリウム','Helium','He');
INSERT INTO "周期律表" VALUES(3,'リチウム','Lithium','Li');
INSERT INTO "周期律表" VALUES(4,'ベリリウム','Beryllium','Be');
INSERT INTO "周期律表" VALUES(5,'硼素','Boron','B');
INSERT INTO "周期律表" VALUES(6,'炭素','Carbon','C');
INSERT INTO "周期律表" VALUES(7,'窒素','Nitrogen','N');
INSERT INTO "周期律表" VALUES(8,'酸素','Oxygen','O');
INSERT INTO "周期律表" VALUES(9,'弗素','Fluorine','F');
INSERT INTO "周期律表" VALUES(10,'ネオン','Neon','Ne');
INSERT INTO "周期律表" VALUES(11,'ナトリウム','Sodium','Na');
INSERT INTO "周期律表" VALUES(12,'マグネシウム','Magnesium','Mg');
INSERT INTO "周期律表" VALUES(13,'アルミニウム','Al','Aluminium');
INSERT INTO "周期律表" VALUES(14,'珪素','Si','Silicon');
CREATE VIEW 原子番号4未満の元素 AS SELECT 英名, 元素記号 FROM 周期律表 WHERE 原子番号 < 4;
CREATE INDEX 英名インデックス ON 周期律表(英名);
CREATE UNIQUE INDEX 原子番号英名ユニークインデックス ON 周期律表(原子番号,英名);
COMMIT;
</syntaxhighlight>
== PHPからの利用 ==
SQLiteはアプリケーションに組込まれ使われますが、ここでは [[PHP]] からの利用の例を紹介します。
=== PDO ===
PHPでは、PDOでデータベースAPIが抽象化/標準化されており、SQLiteもPDO経由で使用できます。
;[https://paiza.io/projects/2u1WkYJObi_VqdSH4bAVcQ?language=php 都道府県コード一覧表(PHP/PDO版)]:<syntaxhighlight lang=php line>
<?php
// SQLite3/PDOを使用したデータベースハンドリング
declare(strict_types=1);
header('Content-Type: text/plain');
$db = new PDO("sqlite::memory:");
$db->exec(
"CREATE TABLE 都道府県コード一覧表 (都道府県コード INTEGER, 都道府県 STRING, prefectures STRING)"
);
$insert = $db->prepare("INSERT INTO 都道府県コード一覧表 VALUES (:n,:ja,:en)");
$db->beginTransaction();
try {
foreach (
array_map(
fn($line): array => explode("\t", $line),
explode(
"\n",
<<<EOS
01 北海道 Hokkaido
02 青森県 Aomori
03 岩手県 Iwate
04 宮城県 Miyagi
05 秋田県 Akita
06 山形県 Yamagata
07 福島県 Fukushima
08 茨城県 Ibaraki
09 栃木県 Tochigi
10 群馬県 Gumma
11 埼玉県 Saitama
12 千葉県 Chiba
13 東京都 Tokyo
14 神奈川県 Kanagawa
15 新潟県 Niigata
16 富山県 Toyama
17 石川県 Ishikawa
18 福井県 Fukui
19 山梨県 Yamanashi
20 長野県 Nagano
21 岐阜県 Gifu
22 静岡県 Shizuoka
23 愛知県 Aichi
24 三重県 Mie
25 滋賀県 Shiga
26 京都府 Kyoto
27 大阪府 Osaka
28 兵庫県 Hyogo
29 奈良県 Nara
30 和歌山県 Wakayama
31 鳥取県 Tottori
32 島根県 Shimane
33 岡山県 Okayama
34 広島県 Hiroshima
35 山口県 Yamaguchi
36 徳島県 Tokushima
37 香川県 Kagawa
38 愛媛県 Ehime
39 高知県 Kochi
40 福岡県 Fukuoka
41 佐賀県 Saga
42 長崎県 Nagasaki
43 熊本県 Kumamoto
44 大分県 Oita
45 宮崎県 Miyazaki
46 鹿児島県 Kagoshima
47 沖縄県 Okinawa
EOS
)
)
as $pref
) {
$insert->bindParam(":n", $pref[0]);
$insert->bindParam(":ja", $pref[1]);
$insert->bindParam(":en", $pref[2]);
$insert->execute();
}
$db->commit();
} catch (PDOException $e) {
echo $e;
$db->rollback();
throw $e;
}
$insert = null;
$query = "PRAGMA table_info('都道府県コード一覧表')";
echo "$query", PHP_EOL;
foreach ($db->query($query)->fetchAll(PDO::FETCH_ASSOC) as $assoc) {
$fields[] = $assoc['name'];
}
$assoc = null;
echo implode(',',$fields),PHP_EOL;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22;";
echo "$query", PHP_EOL;
foreach ($db->query($query)->fetchAll(PDO::FETCH_ASSOC) as $assoc) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表 WHERE 都道府県 LIKE '%京都%';";
echo "$query", PHP_EOL;
foreach ($db->query($query)->fetchAll(PDO::FETCH_ASSOC) as $assoc) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表;";
echo "$query", PHP_EOL;
foreach ($db->query($query)->fetchAll(PDO::FETCH_ASSOC) as $assoc) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text line>
PRAGMA table_info('都道府県コード一覧表')
都道府県コード,都道府県,prefectures
SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22;
都道府県コード:22, 都道府県:静岡県, prefectures:Shizuoka
SELECT * FROM 都道府県コード一覧表 WHERE 都道府県 LIKE '%京都%';
都道府県コード:13, 都道府県:東京都, prefectures:Tokyo
都道府県コード:26, 都道府県:京都府, prefectures:Kyoto
SELECT * FROM 都道府県コード一覧表;
都道府県コード:1, 都道府県:北海道, prefectures:Hokkaido
都道府県コード:2, 都道府県:青森県, prefectures:Aomori
都道府県コード:3, 都道府県:岩手県, prefectures:Iwate
都道府県コード:4, 都道府県:宮城県, prefectures:Miyagi
都道府県コード:5, 都道府県:秋田県, prefectures:Akita
都道府県コード:6, 都道府県:山形県, prefectures:Yamagata
都道府県コード:7, 都道府県:福島県, prefectures:Fukushima
都道府県コード:8, 都道府県:茨城県, prefectures:Ibaraki
都道府県コード:9, 都道府県:栃木県, prefectures:Tochigi
都道府県コード:10, 都道府県:群馬県, prefectures:Gumma
都道府県コード:11, 都道府県:埼玉県, prefectures:Saitama
都道府県コード:12, 都道府県:千葉県, prefectures:Chiba
都道府県コード:13, 都道府県:東京都, prefectures:Tokyo
都道府県コード:14, 都道府県:神奈川県, prefectures:Kanagawa
都道府県コード:15, 都道府県:新潟県, prefectures:Niigata
都道府県コード:16, 都道府県:富山県, prefectures:Toyama
都道府県コード:17, 都道府県:石川県, prefectures:Ishikawa
都道府県コード:18, 都道府県:福井県, prefectures:Fukui
都道府県コード:19, 都道府県:山梨県, prefectures:Yamanashi
都道府県コード:20, 都道府県:長野県, prefectures:Nagano
都道府県コード:21, 都道府県:岐阜県, prefectures:Gifu
都道府県コード:22, 都道府県:静岡県, prefectures:Shizuoka
都道府県コード:23, 都道府県:愛知県, prefectures:Aichi
都道府県コード:24, 都道府県:三重県, prefectures:Mie
都道府県コード:25, 都道府県:滋賀県, prefectures:Shiga
都道府県コード:26, 都道府県:京都府, prefectures:Kyoto
都道府県コード:27, 都道府県:大阪府, prefectures:Osaka
都道府県コード:28, 都道府県:兵庫県, prefectures:Hyogo
都道府県コード:29, 都道府県:奈良県, prefectures:Nara
都道府県コード:30, 都道府県:和歌山県, prefectures:Wakayama
都道府県コード:31, 都道府県:鳥取県, prefectures:Tottori
都道府県コード:32, 都道府県:島根県, prefectures:Shimane
都道府県コード:33, 都道府県:岡山県, prefectures:Okayama
都道府県コード:34, 都道府県:広島県, prefectures:Hiroshima
都道府県コード:35, 都道府県:山口県, prefectures:Yamaguchi
都道府県コード:36, 都道府県:徳島県, prefectures:Tokushima
都道府県コード:37, 都道府県:香川県, prefectures:Kagawa
都道府県コード:38, 都道府県:愛媛県, prefectures:Ehime
都道府県コード:39, 都道府県:高知県, prefectures:Kochi
都道府県コード:40, 都道府県:福岡県, prefectures:Fukuoka
都道府県コード:41, 都道府県:佐賀県, prefectures:Saga
都道府県コード:42, 都道府県:長崎県, prefectures:Nagasaki
都道府県コード:43, 都道府県:熊本県, prefectures:Kumamoto
都道府県コード:44, 都道府県:大分県, prefectures:Oita
都道府県コード:45, 都道府県:宮崎県, prefectures:Miyazaki
都道府県コード:46, 都道府県:鹿児島県, prefectures:Kagoshima
都道府県コード:47, 都道府県:沖縄県, prefectures:Okinawa
</syntaxhighlight>
: メモリー上にデータベースを構築し、問合わせと応答を表示しています。
: PDO::prepare() を使うことで、プレースホルダー経由でSQLを実行し、SQLインジェクションの驚異を低減しています。
: $変数 = null; を随所で行っているのは、PHPでは変数のスコープをループに閉じ込めることができないためで、特にループから脱走したリファレンスが関係したバグは原因の特定が困難になりがちです。
=== SQLite3クラス ===
[[#PDO|PDO]]とは別に、SQLite専用のSQLite3クラスも用意されています。
;[https://paiza.io/projects/QhNiBQZ4tToKX73tuYbaMQ?language=php 都道府県コード一覧表(PHP/ベンダー固有コード版)]:<syntaxhighlight lang=php line>
<?php
// SQLite3を使用したデータベースハンドリング
declare(strict_types=1);
header("Content-Type: text/plain");
$db = new SQLite3(":memory:");
$db->exec(
"CREATE TABLE 都道府県コード一覧表 (都道府県コード INTEGER, 都道府県 STRING, prefectures STRING)"
);
$insert = $db->prepare("INSERT INTO 都道府県コード一覧表 VALUES (:n,:ja,:en)");
try {
foreach (
array_map(
fn($line): array => explode("\t", $line),
explode(
"\n",
<<<EOS
01 北海道 Hokkaido
02 青森県 Aomori
03 岩手県 Iwate
04 宮城県 Miyagi
05 秋田県 Akita
06 山形県 Yamagata
07 福島県 Fukushima
08 茨城県 Ibaraki
09 栃木県 Tochigi
10 群馬県 Gumma
11 埼玉県 Saitama
12 千葉県 Chiba
13 東京都 Tokyo
14 神奈川県 Kanagawa
15 新潟県 Niigata
16 富山県 Toyama
17 石川県 Ishikawa
18 福井県 Fukui
19 山梨県 Yamanashi
20 長野県 Nagano
21 岐阜県 Gifu
22 静岡県 Shizuoka
23 愛知県 Aichi
24 三重県 Mie
25 滋賀県 Shiga
26 京都府 Kyoto
27 大阪府 Osaka
28 兵庫県 Hyogo
29 奈良県 Nara
30 和歌山県 Wakayama
31 鳥取県 Tottori
32 島根県 Shimane
33 岡山県 Okayama
34 広島県 Hiroshima
35 山口県 Yamaguchi
36 徳島県 Tokushima
37 香川県 Kagawa
38 愛媛県 Ehime
39 高知県 Kochi
40 福岡県 Fukuoka
41 佐賀県 Saga
42 長崎県 Nagasaki
43 熊本県 Kumamoto
44 大分県 Oita
45 宮崎県 Miyazaki
46 鹿児島県 Kagoshima
47 沖縄県 Okinawa
EOS
)
)
as $pref
) {
$insert->bindParam(":n", $pref[0], SQLITE3_INTEGER);
$insert->bindParam(":ja", $pref[1], SQLITE3_TEXT);
$insert->bindParam(":en", $pref[2], SQLITE3_TEXT);
$insert->execute();
}
} catch (Exception $e) {
echo "Caught exception: " . $e->getMessage();
}
$insert = null;
$query = "PRAGMA table_info('都道府県コード一覧表')";
echo "$query", PHP_EOL;
for (
$result = $db->query($query);
($assoc = $result->fetchArray(SQLITE3_ASSOC));
$fields[] = $assoc["name"]
) {}
$assoc = null;
echo implode(",", $fields), PHP_EOL;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表 WHERE 都道府県コード = 22;";
echo "$query", PHP_EOL;
for (
$result = $db->query($query);
($assoc = $result->fetchArray(SQLITE3_ASSOC));
) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表 WHERE 都道府県 LIKE '%京都%';";
echo "$query", PHP_EOL;
for (
$result = $db->query($query);
($assoc = $result->fetchArray(SQLITE3_ASSOC));
) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
$query = "SELECT * FROM 都道府県コード一覧表;";
echo "$query", PHP_EOL;
for (
$result = $db->query($query);
($assoc = $result->fetchArray(SQLITE3_ASSOC));
) {
array_walk($assoc, function(&$v, $k) { $v = "$k:$v"; });
echo implode(",", $assoc), PHP_EOL;
}
$assoc = null;
echo PHP_EOL;
</syntaxhighlight>
== 脚註 ==
<references />
== 下位階層のページ ==
*[[SQLite/SQLリファレンス]]
*[[SQLite/コマンドリファレンス]]
== 関連リンク ==
* [[SQL]] SQL一般の仕様や文法についての解説
{{DEFAULTSORT:SQLITE}}
[[Category:SQLite|*]]
[[Category:リレーショナルデータベース管理システム]]
ad58z9h5w0o3qsv26jxxmvz81dyn4pl
Rust
0
32885
301488
273185
2026-07-13T08:37:10Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301488
wikitext
text/x-wiki
{{Pathnav|メインページ|工学|情報技術|プログラミング}}
Rustは、安全性とパフォーマンスを兼ね備えたモダンなシステムプログラミング言語です。本書では、Rustの基礎から応用までを網羅し、実践的なプログラミングスキルの習得を目指します。Rustは初めてのプログラミング言語としても、既存のスキルをさらに強化するためにも最適です。その特徴である所有権システムや並行性モデルについても詳しく解説し、堅牢で効率的なプログラムを構築するための知識を提供します。一緒にRustの世界を探求し、その魅力を存分に体験していきましょう。
== はじめに ==
Rust(ラスト)は、高性能かつ安全な並行処理を実現するために設計されたマルチパラダイム汎用プログラミング言語です<ref>{{cite web
|url=https://graydon2.dreamwidth.org/247406.html
|title=Rust is mostly safety
|last=Hoare
|first=Graydon
|date=2016-12-28
|website=Graydon2
|publisher=Dreamwidth Studios
|access-date=2021-12-03
|archive-date=2019-05-02
|archive-url=https://web.archive.org/web/20190502181357/https://graydon2.dreamwidth.org/247406.html
|url-status=live }}</ref>。
Rustの構文はC++に似ており、ボローチェッカーを利用して参照の検証を行い、メモリ安全性を保証しています。ボローチェッカーはRustコンパイラによって提供される静的解析ツールで、所有権システムに基づいてコード内の不正な借用(ボロー)を検出します。これにより、メモリ管理においてガベージコレクターを使わずに安全性を実現し、場合によってはリファレンスカウントによるメモリ管理も行えます。
また、Rustはシステムプログラミング言語でありながら、関数型プログラミングの要素も取り入れ、低レベルのメモリ管理を可能にしています。これにより、高度な制御が求められるアプリケーション開発に適しており、実行時エラーの発生を抑えながら、安全で信頼性の高いコードを作成することができます。Rustを通じて、効率的かつ堅牢なプログラム構築のための新しい可能性を探求していきましょう。
{{コラム|width=100%|セルフホスティング|2=セルフホスティングとは、ソフトウェアが自分自身をコンパイルできる状態を指し、他のコンパイラを用意することなく、そのソフトウェア自体で再構築が可能であることを意味します。コンパイラにおけるセルフホスティングは、最初に構築されたコンパイラを用いて同じ言語で書かれたソースコードを再コンパイルし、新しいコンパイラを生成する手法です。このプロセスを繰り返すことで、コンパイラを改良したバージョンに更新していけるのが特徴です。
セルフホスティングは、信頼性と安定性を高める手段でもあり、自分自身をコンパイルできる状態であることがソフトウェアの品質向上に寄与します。また、コンパイラの開発者にとっても、その言語やコンパイラの動作原理や構造について理解を深める機会となり、より効率的でパフォーマンスの良いソフトウェアの開発につながります。Rustもセルフホスティングを実現しており、こうした継続的な改善を通じて、安全性とパフォーマンスの向上を目指しています。
}}
== クイックツアー ==
Rustはメモリ安全性、並行性、パフォーマンスの向上に焦点を当てたモダンなプログラミング言語です。以下のRustのクイックツアーで、基本的な概念とコード例を紹介します。
# 基本構文:
#: Rustプログラムは<code>main</code>関数から始まります。<code>println!</code> マクロを使って標準出力に文字列を出力できます。
#;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=65f8e3b00b49ca5c691cd61bfc32d1b7 hello.rs]:<syntaxhighlight lang=rust copy>
fn main() {
println!("Hello, world!");
}
</syntaxhighlight>
#;実行結果:<syntaxhighlight lang=text>
Hello, world!
</syntaxhighlight>
#: [https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=65f8e3b00b49ca5c691cd61bfc32d1b7 hello.rs]は、[https://play.rust-lang.org/ Playground]に作った、このプログラムへのリンクになっています。
# データ型:
#: Rustには整数、浮動小数点数、真偽値などの基本データ型があります。
#:<syntaxhighlight lang=rust copy>
let age: i32 = 25;
let salary: f64 = 50000.50;
let is_rust_fun: bool = true;
let message: &str = "Hello, Rust!";
</syntaxhighlight>
# 制御構造:
#: <code>if</code>、<code>else if</code>、<code>else</code> 文で条件分岐ができます。
#: <code>while</code> ループや <code>for</code> ループで繰り返し処理ができます。
#:<syntaxhighlight lang=rust copy>
let num = 10;
if num > 0 {
println!("Positive");
} else if num < 0 {
println!("Negative");
} else {
println!("Zero");
}
for i in 0..5 {
println!("Iteration {}", i);
}
</syntaxhighlight>
# 関数:
#: 関数は <code>fn</code> キーワードを使って宣言します。
#:<syntaxhighlight lang=rust copy>
fn add(a: i32, b: i32) -> i32 {
a + b
}
fn main() {
let result = add(5, 3);
println!("Sum: {}", result);
}
</syntaxhighlight>
# 所有権システム:
#: Rustは所有権ベースのメモリ管理を採用しており、値の所有権が明確に定義されています。
#:<syntaxhighlight lang=rust copy>
fn main() {
let s1 = String::from("Hello");
let s2 = s1; // s1の所有権がs2に移動する(所有権の転送)
// println!("{}", s1); // エラー!s1はもう有効ではない
println!("{}", s2); // 正常に動作
}
</syntaxhighlight>
# 構造体とメソッド:
#: 構造体はデータをまとめるためのカスタム型で、メソッドを持つことができます。
#:<syntaxhighlight lang=rust copy>
struct Car {
model: String,
year: u32,
}
impl Car {
fn display_info(&self) {
println!("Model: {}, Year: {}", self.model, self.year);
}
}
fn main() {
let my_car = Car {
model: String::from("TOYOTA 86"),
year: 2022,
};
my_car.display_info();
}
</syntaxhighlight>
ここでは、Rustの基本的な構文とコンセプトを簡単に紹介しました。
== rustcのバージョン確認 ==
やや力技ですが、Rustのコンパイラ rustc のバージョンをコードから確認できます。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=db39d32bceac679dd79591501075d7f6 version.rs]:<syntaxhighlight lang=rust copy>
fn main() {
let version = std::process::Command::new("rustc")
.arg("--version")
.output()
.expect("Failed to get Rust version");
if version.status.success() {
let stdout = String::from_utf8_lossy(&version.stdout);
println!("Rust version: {}", stdout);
} else {
eprintln!("Failed to retrieve Rust version information");
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Rust version: rustc 1.84.0-nightly (1e4f10ba6 2024-10-29)
</syntaxhighlight>
このコードは、Rustのプログラム内で<code>rustc --version</code>コマンドを実行し、その結果(Rustコンパイラのバージョン情報)を取得しています。
# <code>std::process::Command::new("rustc")</code>: <code>Command</code>構造体を使って新しいコマンドを作成しています。ここでは<code>rustc</code>というコマンドを実行するよう指定しています。
# <code>.arg("--version")</code>: <code>rustc</code>コマンドに<code>--version</code>引数を渡しています。これにより、Rustコンパイラのバージョン情報を取得するよう指示しています。
# <code>.output()</code>: <code>Command</code>を実行して、その結果を取得します。ここでは<code>--version</code>を指定した<code>rustc</code>コマンドを実行し、その出力を取得しています。
# <code>.expect("Failed to get Rust version")</code>: コマンドの実行が失敗した場合にエラーメッセージを表示します。
# <code>if version.status.success() { ... } else { ... }</code>: 実行結果の<code>status</code>をチェックして、コマンドが正常に終了したかどうかを確認します。もし成功していた場合は、コマンドの出力結果(Rustコンパイラのバージョン情報)を取得し、それを標準出力に表示します。もし失敗していた場合は、エラーメッセージを標準エラー出力に表示します。
このコードは、Rustのプログラム内で外部コマンドを実行してその出力を取得する方法を示しています。具体的には、Rustコンパイラのバージョン情報を取得してそれを表示する例です。
== コメント ==
Rustのコメントには、[[C言語]]/[[C++]]と同じく一行コメントと範囲コメントがあります。
;一行コメント: <code>//</code>から行末までがコメントと見なされます。
;範囲コメント
: <code>/*</code>から<code>*/</code>までがコメントと見なされます。
: ネストは許されません。
;コメントの例:<syntaxhighlight lang=rust copy>
/*
* プログラムのエントリーポイントは、main 関数です。
* 関数定義は fn から始まります。
*/
fn main() {
println!("Hello, world!"); // println! は関数ではなくマクロで、マクロは識別子の末尾に ! が付きます。
}
</syntaxhighlight>
== 変数と型 ==
Rustでは、変数を宣言する際にはデフォルトでimmutable(不変)です。変更可能な変数を宣言するには、<code>mut</code> キーワードを使用します。変数の型はコンパイラによって推論されることが一般的ですが、型を明示的に指定することもできます。
例えば、変数の宣言と型指定は以下のようになります:
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=8cddaf15c8b53acb5e0a2013a5cb8cc2 decl.rs]:<syntaxhighlight lang=rust copy>
fn main() {
// 型推論による変数の宣言
let x = 5; // 整数型 i32 として推論される
let y = 3.14; // 浮動小数点型 f64 として推論される
println!("x = {x}, y = {y}");
// 型を明示的に指定する
let z: i64 = 100; // 64ビット整数型 i64
println!("z = {z}");
}
</syntaxhighlight>
Rustの基本的なデータ型には以下があります:
* 整数型 (<code>i8</code>, <code>i16</code>, <code>i32</code>, <code>i64</code>, <code>i128</code>, <code>u8</code>, <code>u16</code>, <code>u32</code>, <code>u64</code>, <code>u128</code>など)
* 浮動小数点型 (<code>f32</code>, <code>f64</code>)
* 論理値型 (<code>bool</code>)
* 文字型 (<code>char</code>)
* ポインタ型
* タプル型
* 配列型
* 列挙型
* 構造体型
* 文字列型 (<code>&str</code>, <code>String</code>)
Rustは静的型付け言語であり、変数の型はコンパイル時に確定されます。型の安全性に対する厳格なチェックを行うため、コンパイル時に型の整合性が確認されます。これにより、メモリの安全性やスレッドセーフなコードを書く際の支援が期待できます。
=== 変数とミュータブル・イミュータブル ===
Rustでは、変数を宣言するにはキーワード '''let'''を使います。
ディフォルトでは[[#イミュータブル|イミュータブル]](''Immutable'';宣言後には代入不能)な変数が宣言されます。
[[#ミュータブル|ミュータブル]](''Mutable'';宣言後に代入可能)な変数を宣言するには、追加のキーワード '''mut''' を使います。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=9032ae8999c6cb3bf5412988320e50d7 hello-variables.rs]:<syntaxhighlight lang=rust highlight=2 line copy>
fn main() {
let hello : &str = "Hello, world!";
println!("{}", hello);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello, world!
</syntaxhighlight>
:2行目の<syntaxhighlight lang=rust inline>let hello : &str = "Hello, world!";</syntaxhighlight>が変数宣言です<ref>文字リテラルであることを強調するなら<syntaxhighlight lang=rust inline>let hello : &'static str = "Hello, world!";</syntaxhighlight>とすべきだったかもしれません。</ref>。
::&str(文字列のスライスのリファレンス)を型とする変数 <var>hello</var> を宣言し、"Hello, world!"で初期化しています。
::Rustには強力な[[#型推論|型推論]]があり多くの場合不要ですが、<code>let 変数名 : 型名</code>の書式で型を伴い変数宣言することも出来ます。
mut をつけない場合には変数に「代入不能」と聞くと、C言語などを知っている人は「定数」を思い浮かべるかもしれませが、
Rustにおいて「定数」は, const 宣言された定数や, static 宣言されかつ mut で修飾されていない変数が相当します。
==== 型推論 ====
Rust では、変数宣言が初期値を伴っていた場合、変数の型を省略することができ、初期値の型が変数の型になります。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=ac2b2d100ee8ea175178ebe9b1e26c61 hello-type-inference.rs]:<syntaxhighlight lang=rust highlight=2 line copy>
fn main() {
let hello = "Hello, world!";
println!("{hello}");
}
</syntaxhighlight>
;実行結果:上に同じ
==== イミュータブル ====
Rust では、値が一度変数に let で束縛されると変更できません。これをイミュータブルと言います。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=d13ccba2d1b5efef4ca929012eece549 hello-immutable.rs]:<syntaxhighlight lang=rust highlight='2,4' line copy>
fn main() {
let hello : &str = "Hello, world!";
println!("{hello}");
hello = "Hello, rust!";
println!("{hello}");
}
</syntaxhighlight>
;コンパイル結果:<syntaxhighlight lang=text>
error[E0384]: cannot assign twice to immutable variable `hello`
--> src/main.rs:4:5
|
2 | let hello : &str = "Hello, world!";
| -----
| |
| first assignment to `hello`
| help: consider making this binding mutable: `mut hello`
3 | println!("{hello}");
4 | hello = "Hello, rust!";
| ^^^^^^^^^^^^^^^^^^^^^^ cannot assign twice to immutable variable
For more information about this error, try `rustc --explain E0384`.
error: could not compile `playground` (bin "playground") due to 1 previous error
</syntaxhighlight>
:イミュータブルな変数には、代入できないというコンパイルエラーです。
==== ミュータブル ====
代入可能、すなわちミュータブルにするためには、変数宣言にあたり '''let''' に続けて '''mut''' をつけます。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=6bbb520249ebc44f7e341988dfad92a3 hello-mutable.rs]:<syntaxhighlight lang=rust highlight=2 line copy>
fn main() {
let mut hello : &str = "Hello, world!";
println!("{hello}");
hello = "Hello, rust!";
println!("{hello}");
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello, world!
Hello, rust!
</syntaxhighlight>
==== 同じ変数名での宣言 ====
同一スコープで同じ変数名での宣言は可能です。
同じ型である必要はありません。ミュータブルであるかイミュータブルであるかも問いません。
'''同じ変数名での宣言によって、それまで変数に束縛されていた値への参照がなくなります。'''
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=0604ce8c08449bba14b64f80c405815d 同じ変数名での宣言]:<syntaxhighlight lang=rust highlight='2,4' line copy>
fn main() {
let hello : &str = "Hello, world!";
println!("{}", hello);
let hello = 154649;
println!("{}", hello);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello, world!
154649
</syntaxhighlight>
==== 定数 ====
Rustには2種類の定数があり、どちらもグローバルスコープを含む任意のスコープで宣言することができます。また、どちらも明示的な型を持っている必要があります。
* const: 不変の値
* static: 静的寿命を持つミュータブルな値 静的寿命は推論されるので、指定する必要はありません。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=901ef30e5d150a91c9fed78d63a4971d 2種類の定数]:<syntaxhighlight lang=rust highlight='2,3' line copy>
const HELLO : &str = "Hello, world!";
static LANGUAGE: &str = "Rust";
fn main() {
println!("{HELLO}");
println!("{LANGUAGE}");
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello, world!
Rust
</syntaxhighlight>
コードを書き換えてconst宣言や(ミュータブルな)static宣言された変数に代入をしようとすると、エラーになります。
==== パターン ====
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=9e938e1309c6ba12f760a6c6f0c9d210 pattern.rs]:<syntaxhighlight lang=rust line highlight=5 copy>
fn main() {
let (mut x, mut y) = (5, 29);
println!("x={x} y={y}");
(x, y) = (y, x);
println!("x={x} y={y}");
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
x=5 y=29
x=29 y=5
</syntaxhighlight>
このコードは、<code>x</code> と <code>y</code> の値を交換するRustの機能を示しています。
* 最初の行では、<code>x</code> に 5 を、<code>y</code> に 29 を代入しています。
* 次の行では、<code>println!</code> マクロでは、交換後の <code>x</code> と <code>y</code> の値を表示しています。
* 次の行では、<code>(x, y) = (y, x);</code> という操作を行っています。これは、タプルを使って複数の変数に同時に値を代入しています。この場合、<code>(y, x)</code> というタプルの中身を <code>(x, y)</code> に順番に代入しています。これにより、<code>x</code> の値に <code>y</code> の値が入り、<code>y</code> の値に <code>x</code> の値が入ります。これによって <code>x</code> と <code>y</code> の値が交換されます。
*最後の <code>println!</code> マクロでは、交換後の <code>x</code> と <code>y</code> の値を表示しています。
このコードは、Rustのタプルを使った多値代入の機能を示しています。
=== データ型 ===
Restには豊富なデータ型(''Data Types'')があり、それらを組み合わせて新しい型を作ることができます<ref>{{Cite web
|url=https://doc.rust-lang.org/book/ch03-02-data-types.html
|title=Data Types - The Rust Programming Language
|accessdate=2021/12/08
}}</ref>。
==== スカラー型(''Scalar Types'') ====
スカラー型は単一の値を表します。Rustには、整数、浮動小数点数、論理値、文字という4つの主要なスカラ型があります。
===== 整数型(''Integer Types'') =====
Rustの整数型は、符号の有無とビット幅から12種類のバリエーションがあります。
:{| class=wikitable
|+ Rustの整数型
!型名!!説明
|-
!i8
|符号付き8ビット整数
|-
!u8
|符号なし8ビット整数
|-
!i16
|符号付き16ビット整数
|-
!u16
|符号なし16ビット整数
|-
!i32
|符号付き32ビット整数
|-
!u32
|符号なし32ビット整数
|-
!i64
|符号付き64ビット整数
|-
!u64
|符号なし64ビット整数
|-
!i128
|符号付き128ビット整数
|-
!u128
|符号なし128ビット整数
|-
!isize
|符号付きでポインタと同じサイズの整数
|-
!usize
|符号なしでポインタと同じサイズの整数
|}
:isizeとusizeのビット幅はプロセッサーのアーキテクチャーによって定義され、32ビットプロセッサーならば32、64ビットプロセッサーならば64です。
===== 整数リテラル(''Integer literals'') =====
リテラル(''Literals'')とは、プログラミングのソースコードで使用される、数値や文字列などのデータを直接表現したものです。
:{| class=wikitable style="float:left"
|+ 様々な整数リテラル
!基数!!表現
|-
!10
|19_800
|-
!16
|0xbadbeef
|-
!8
|0o777
|-
!2
|0b101_111_011
|-
!バイト(u8のみ)
|b'Q'
|}
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=9c41862df3833ee7bd16169631d74de7 例]:<syntaxhighlight lang=rust style="float:left;width:24em; margin: 1em">
fn main() {
println!("{:?}", 19_800);
println!("{:x}", 0xbadbeef);
println!("{:o}", 0o777);
println!("{:b}", 0b101_111_011);
println!("{}", b'Q');
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text style="float:left;width:12em; margin: 1em">
19800
badbeef
777
101111011
81
</syntaxhighlight>
:<br style="clear:both">
:数値リテラルには、123u8 の様に型名をタイプサーフィックス(''type suffix'')として補うことで、ビット幅を明記できます(オプショナル)。
::指定されない場合は(バイト以外は)i32が仮定されます(isizeではありません)。
:数値リテラルには、読みやすさのため 9_281_636 のように、アンダースコア _ を補うことができます(オプショナル)。
なお、<code>{:x}</code>の<code>{x}</code>部分は[[#プレースホルダー|プレースホルダー]]の[[#フォーマッティング・トレイツ(Formatting traits)|ファーマッティング・トレイツ]]です。「x」なら16進数、oなら8進数、bなら2進数で出力します。
===== 浮動小数点数型(''Floating-Point Types'') =====
Rustには、浮動小数点数を表現するための2つの主要な型があります。それぞれの型は、IEEE-754規格に従っています。
# <code>f32</code>: 32ビットの単精度浮動小数点数型です。精度は約6桁です。
# <code>f64</code>: 64ビットの倍精度浮動小数点数型です。精度は約15桁です。
Rustでは、浮動小数点数リテラルを書く場合、デフォルトで <code>f64</code> 型になります。例えば、<code>3.14</code> という浮動小数点数リテラルは、<code>f64</code> 型の数値になります。
以下は、<code>f32</code> 型と <code>f64</code> 型の浮動小数点数の使用例です。
:<syntaxhighlight lang=rust copy>
fn main() {
// デフォルトでは f64 型になる浮動小数点数
let my_float1 = 3.14; // f64 型
// サイズを明示して f32 型にする
let my_float2: f32 = 2.718; // f32 型
// 浮動小数点数同士の計算
let sum = my_float1 + f64::from(my_float2); // f64 型にキャストして計算
println!("Sum: {}", sum); // f64 型の結果が出力される
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=rust copy>
Sum: 5.857999935150147
</syntaxhighlight>
浮動小数点数は、数値計算や科学的な計算など、精度が求められる場面で使用されます。しかし、浮動小数点数の性質や精度による注意が必要な場面もありますので、注意深く扱う必要があります。
===== 論理値型(''The Boolean Type'') =====
Rustにおける論理値型の型名は <code>bool</code> で、真の値は <code>true</code>、偽の値は <code>false</code> です。この型は非常に基本的で、条件分岐やブール演算などで使用されます。
以下は <code>bool</code> 型の使用例です。
:<syntaxhighlight lang=rust copy>
fn main() {
let is_rust_cool = true; // 真の値を持つ変数
let is_java_cool = false; // 偽の値を持つ変数
if is_rust_cool {
println!("Rust is cool!"); // 条件が true の場合に実行される
} else {
println!("Rust is not cool."); // 条件が false の場合に実行される
}
// 論理演算
let result = is_rust_cool && is_java_cool; // 論理積 (AND) の例
println!("Result of logical AND: {}", result); // false が出力される
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Rust is cool!
Result of logical AND: false
</syntaxhighlight>
<code>bool</code> 型は条件式の評価や論理演算に広く使用され、プログラムの流れを制御するための基本的な手段として重要な役割を果たします。
===== 文字型(''The Character Type'') =====
Rustの文字型 <code>char</code> はUnicodeの単一の文字を表し、32ビットで符号化されます。Unicodeのサロゲートペアを含む広範な範囲の文字を表現できます。
以下のコードは、<code>char</code>型を使用してUnicode文字やサロゲートペアを扱う例です。
:<syntaxhighlight lang=rust copy>
fn main() {
// 単一のUnicode文字の表現
let unicode_char = '😊'; // 笑顔の絵文字 (U+1F60A)
println!("Unicode char: {}", unicode_char);
// サロゲートペアの表現
let surrogate_pair = '\u{1F601}'; // 涙の絵文字 (U+1F601)
println!("Surrogate pair: {}", surrogate_pair);
// char型のサイズを取得
println!("Size of char: {} bytes", std::mem::size_of::<char>());
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Unicode char: 😊
Surrogate pair: 😁
Size of char: 4 bytes
</syntaxhighlight>
ここでは、<code>'😊'</code> という絵文字や <code>\u{1F601}</code> というサロゲートペアを <code>char</code>型として表現しています。絵文字やサロゲートペアも正しく表示されることを確認できます。また、<code>std::mem::size_of::<char>()</code> を使って <code>char</code>型のサイズを表示しています。
===== 文字列型(''The String Type'') =====
Rustには2つの主要な文字列型があります。
# <code>&str</code>型 (文字列スライス):
#* メモリ内のデータへの不変の参照を表します。
#* UTF-8でエンコードされた文字列を参照します。
#* 文字列リテラルや他のデータ構造の一部として使用されます。
#:<syntaxhighlight lang=rust copy>
let string_slice: &str = "Hello, Rust!"; // 文字列リテラルから作成された文字列スライス
</syntaxhighlight>
# <code>String</code>型:
#* ヒープ上に確保された可変の文字列データを持ちます。
#* 動的に変更可能で、文字列の追加や削除、変更が可能です。
#:<syntaxhighlight lang=rust copy>
let mut string_object = String::from("Hello"); // String型のインスタンスを生成
string_object.push_str(", Rust!"); // 文字列を追加
</syntaxhighlight>
これらの型は互いに相互変換できます。例えば、<code>&str</code>から<code>String</code>への変換は<code>to_string()</code>メソッドを使用できます。
:<syntaxhighlight lang=rust copy>
let my_string: String = "Hello".to_string(); // &strからStringへの変換
</syntaxhighlight>
また、<code>String</code>から<code>&str</code>への変換は、<code>&</code>演算子を使用して参照を取得します。
:<syntaxhighlight lang=rust copy>
let my_string: String = String::from("Hello");
let string_ref: &str = &my_string; // Stringから&strへの変換
</syntaxhighlight>
文字列操作に関しては、<code>String</code>型が動的に変更可能で柔軟性があり、<code>&str</code>型は主に静的な文字列の参照として使用されます。
;様々な文字列リテラル
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=9c41862df3833ee7bd16169631d74de7 string.rs]:<syntaxhighlight lang=rust copy>
fn main() {
println!("{:?}", "hello"); // エスケープされた文字列
println!("{:?}", r#"hello"#); // エスケープされないraw文字列
println!("{:?}", b"hello"); // エスケープされたバイト文字列
println!("{:?}", br#"hello"#); // エスケープされないrawバイト文字列
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
"hello"
"hello"
[104, 101, 108, 108, 111]
[104, 101, 108, 108, 111]
</syntaxhighlight>
* <code>"{:?}"</code> はデバッグ用のフォーマット指定子で、デバッグ表示用の形式で出力します。
* <code>r#"..."#</code> はエスケープされない raw 文字列リテラルで、内部のエスケープが無視されます。
* <code>b"..."</code> はバイト文字列リテラルで、ASCII文字のバイト値の配列を示します。
* <code>br#"..."#</code> はエスケープされない raw バイト文字列リテラルです。
これらのリテラルは、異なる用途で利用されることがあり、それぞれの特性や振る舞いが異なります。
===== ユニット型(''The Unit Type'') =====
Rustにおけるユニット型は<code>()</code>で表されます。ユニット型は特別な型であり、単一の値 <code>()</code> だけから成り立ちます。主に2つの用途があります:
# 関数の戻り値としての利用: 副作用のない関数や手続きにおいて、何も返す必要がない場合にユニット型 <code>()</code> が使用されます。
#:<syntaxhighlight lang=rust copy>
fn do_something() {
// 何らかの処理
}
fn main() {
let result = do_something(); // 戻り値は () になる
println!("result = {:?}", result);
}
</syntaxhighlight>
# 構造体のフィールドとしての利用: 構造体のフィールドとしてユニット型を持つことで、その構造体のインスタンスが存在することを示す場合に使用されます。
#:<syntaxhighlight lang=rust copy>
#[derive(Debug)]
struct MarkerUnit;
fn main() {
let marker = MarkerUnit; // ユニット型を持つ構造体のインスタンス化
println!("marker = {:?}", marker);
}
</syntaxhighlight>
ユニット型は一見すると何も持たない型ですが、プログラムの構造を表現するために重要な役割を果たしています。特に関数の戻り値として使用されることが多いです。
==== 複合型(''Compound Types'') ====
複合型(''Compound Types'')は、複数の値を1つの型にまとめることができます。
Rustにはタプルとアレイという2つのプリミティブな複合型があります。
===== タプル型(''The Tuple Type'') =====
タプル(''The Tuple'')は、さまざまな型の値を1つの複合型にまとめる一般的な方法です。
タプルの長さは固定されており、一度宣言すると大きくしたり小さくしたりすることはできません。
===== 配列型(''The Array Type'') =====
複数の値の集まりを持つもう一つの方法として、配列(''The Array'')があります。
タプルとは異なり、配列の各要素は同じ型でなければなりません。
Rustの配列は、タプルと同じく長さが固定されています。
== プレースホルダー ==
Rustの<code>println!</code>マクロなどの文字列表示マクロでは、文字列中の<code>{}</code>の位置に指定された書式に基づいて値が展開されます<ref>[https://doc.rust-lang.org/std/fmt/ Module std::fmt]</ref>。
=== フォーマッティング・トレイツ (Formatting traits) ===
Rustにおけるフォーマッティング・トレイツは、データを指定されたフォーマットで整形するためのトレイト(trait)です。例えば、空のプレースホルダー<code>{}</code>を指定すれば、その型に適した自然なフォーマット(例:100ならば "100")で表示できます。これには、[https://doc.rust-lang.org/std/fmt/trait.Display.html fmt::Display]トレイトが使用されます。
一方、基数を変更して16進数、8進数、2進数などの異なる表現で表示したい場合には、フォーマッティング・トレイツを活用します<ref>[https://doc.rust-lang.org/std/fmt/#formatting-traits Formatting traits]</ref>。
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=3e0f75ec3db6eaa2f1db03cefefb5b44 Formatting traits]:<syntaxhighlight lang=rust copy>
fn main() {
println!("{:?}", 100); // Debug
println!("{:x}", 100); // LowerHex
println!("{:o}", 100); // Octal
println!("{:b}", 100); // Binary
println!("{}", 100); // Display
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
100
64
144
1100100
100
</syntaxhighlight>
フォーマッティング・トレイツは、Rustプログラミング言語でデータをフォーマットするためのメカニズムを提供します。これらのトレイツは、<code>std::fmt</code>モジュールに定義されており、さまざまなフォーマット方法を提供します。代表的なものは以下の通りです:
* '''Display''': <code>std::fmt::Display</code>トレイトは、<code>{}</code>を使用し、一般的に人間が読みやすい形式でデータを表示します。<code>println!</code>や<code>format!</code>マクロなどで使用されます。
* '''Debug''': <code>std::fmt::Debug</code>トレイトは、<code>{:?}</code>を使ってデバッグ目的で表示を行います。通常、開発中にデータの内容を調べるために使用されます。
* '''Binary''': <code>std::fmt::Binary</code>トレイトは、<code>{:#b}</code>でバイナリ形式での表示を提供します。
* '''Octal''': <code>std::fmt::Octal</code>トレイトは、<code>{:#o}</code>で8進数形式の表示を提供します。
* '''LowerHex / UpperHex''': <code>std::fmt::LowerHex</code>および<code>std::fmt::UpperHex</code>トレイトは、それぞれ<code>{:#x}</code>および<code>{:#X}</code>で16進数の小文字・大文字形式で表示します。
これらのトレイツは、カスタム型のデータを整形するために実装することができ、例えば<code>Display</code>トレイトを実装することで、カスタム型のデータを<code>{}</code>形式で表示できるようになります。
以下は、構造体<code>Person</code>に<code>Display</code>トレイトを実装し、<code>{}</code>を使用してカスタム型を表示する例です。
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=1dc6f34658b858b48dad035ca7ef7117 カスタムDisplayトレイトの例]
:<syntaxhighlight lang=rust copy>
use std::fmt;
// 構造体を定義
struct Person {
name: String,
age: u32,
}
// Displayトレイトの実装
impl fmt::Display for Person {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
// カスタムフォーマットを定義する
write!(f, "Name: {}, Age: {}", self.name, self.age)
}
}
fn main() {
let person = Person {
name: String::from("Alice"),
age: 30,
};
// {}を使ってPerson型を表示
println!("Person Details: {}", person);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Person Details: Name: Alice, Age: 30
</syntaxhighlight>
この例では、<code>Person</code>という構造体を定義し、<code>fmt::Display</code>トレイトを実装しています。<code>Formatter</code>型を使ってカスタムフォーマットを定義し、<code>write!</code>マクロを使って書式設定を行っています。<code>main</code>関数内で、<code>println!</code>マクロを使って<code>Person</code>型のインスタンスを表示し、<code>{}</code>を使用してカスタム型を整形する方法を示しています。
=== 浮動小数点数のフォーマット ===
浮動小数点数の表示には、<code>std::fmt::Float</code> トレイトを使います。以下の書式を使って、浮動小数点数の表現をフォーマットできます。
* '''e''': 指数形式(例:<code>1.23e4</code>)
* '''f''': 固定小数点形式(例:<code>123.456</code>)
* '''g''': 自動的に指数形式または固定小数点形式に切り替える(例:<code>1.23</code>)
* '''p''': 精度の高い16進数形式(例:<code>0x1.9p+1</code>)
例えば、以下のように浮動小数点数を表示することができます:
:<syntaxhighlight lang=rust copy>
let pi = 3.141592;
println!("{:.2}", pi); // 固定小数点形式で小数点以下2桁表示
println!("{:e}", pi); // 指数形式で表示
println!("{:g}", pi); // 自動的に形式を切り替える
println!("{:p}", pi); // 精度の高い16進数形式
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
3.14
3.141592e0
3.14159
0x1.921fb6p+1
</syntaxhighlight>
==== 浮動小数点の精度指定 ====
浮動小数点数の表示において、精度(小数点以下の桁数)を指定するには、書式の中で <code>.</code> の後に桁数を指定します(例:<code>{:.2f}</code>)。デフォルトでは、浮動小数点数の精度は6桁ですが、<code>{:.8e}</code> や <code>{:.12f}</code> で精度を変更することができます。
=== 文字列のフォーマット ===
文字列のフォーマットには、<code>std::fmt::Display</code> トレイトに基づいて、さまざまなオプションがあります。文字列に対しては、特に幅やアライメントを指定することができます。以下のような書式を使用できます:
* '''Width''': フィールドの幅を指定します。例えば、<code>{:10}</code> と書くと、最小で10文字分のスペースが確保され、足りない分は空白で埋められます。
* '''Alignment''': 左寄せ、右寄せ、中央寄せを指定できます。左寄せは <code><</code>、右寄せは <code>></code>、中央寄せは <code>^</code> を使います。
以下に文字列のフォーマット例を示します:
:<syntaxhighlight lang=rust copy>
let s = "Rust";
println!("{:>10}", s); // 右寄せで幅10
println!("{:<10}", s); // 左寄せで幅10
println!("{:^10}", s); // 中央寄せで幅10
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Rust
Rust
Rust
</syntaxhighlight>
上記の例では、文字列 <code>"Rust"</code> に対して異なるアライメント(右寄せ、左寄せ、中央寄せ)を指定しています。
== 所有権システム ==
Rustの所有権システムは、メモリ管理とリソースの安全な扱いを通じて安全性と並行性を確保する、言語の重要な特徴です。ここでは、Rustの所有権、借用、参照について、コードを交えて解説します。
=== 所有概念 ===
Rustの所有概念は、変数がリソースの所有権を持ち、スコープを抜ける際にそのリソースを自動的に解放する仕組みです。この仕組みは、メモリ安全性を高めるための中心的な考え方です。
=== コピーとムーブ ===
Rustでは、変数が参照しているデータがスタック上かヒープ上かによって、コピーやムーブの挙動が異なります。スタック上のプリミティブ型はコピーされますが、ヒープ上のデータはムーブされ、所有権が移動します。
; コピーされるデータ
:<syntaxhighlight lang=rust line copy>
fn main() {
let x = 5;
let y = x; // xの値がコピーされる
println!("x: {}, y: {}", x, y); // 両方の変数が利用可能
}
</syntaxhighlight>
この例では、整数型<code>x</code>の値がコピーされるため、<code>x</code>と<code>y</code>の両方が使用できます。
; ムーブされるデータ
:<syntaxhighlight lang=rust line copy>
fn main() {
let s1 = String::from("Hello");
let s2 = s1; // s1の所有権がs2に移動
// println!("{}", s1); // コンパイルエラー:s1はもう使用できない
println!("{}", s2); // 正常に出力される
}
</syntaxhighlight>
ここでは、<code>s1</code>の所有権が<code>s2</code>に移動するため、<code>s1</code>は利用できなくなります。
次に、コピーとムーブの違いを簡単に表にまとめます。
:{| class=wikitable
|+ コピーとムーブの違い
! データ種別!! コピー !! ムーブ
|-
! プリミティブ型(整数型、bool型など)
| コピーされる
| コピーされる
|-
! ヒープ上のデータ(String型、Vec型など)
| されない
| 所有権が移動する
|}
=== 借用と参照 ===
所有権を移動せずにデータを利用する方法として、借用(参照)があります。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=91624181f640bfff93914d318547bfae 借用と参照の例]
:<syntaxhighlight lang=rust line copy>
fn main() {
let s1 = String::from("Hello");
// s1を借用する(イミュータブルな参照)
let len = calculate_length(&s1);
println!("The length of '{}' is {}.", s1, len); // 正常に出力される
}
fn calculate_length(s: &String) -> usize {
s.len()
}
</syntaxhighlight>
この例では、<code>calculate_length</code>関数が<code>&String</code>型のイミュータブルな参照を受け取っているため、<code>s1</code>の所有権を渡すことなく値を参照できます。
=== ミュータブルな参照 ===
可変の値を変更するには、ミュータブルな参照を使います。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=1ef888bfe58461858b4cefe84d3b6fae ミュータブルな参照の例]
:<syntaxhighlight lang=rust line copy>
fn main() {
let mut s = String::from("Hello");
change_string(&mut s);
println!("{}", s); // "Hello, goodbye"が出力される
}
fn change_string(s: &mut String) {
s.push_str(", goodbye");
}
</syntaxhighlight>
<code>&mut String</code>型のミュータブルな参照を利用して<code>change_string</code>関数で文字列を変更しています。
=== 関数のパラメータにした変数は関数にムーブされる ===
Rustでは、関数の引数として変数を渡すと、所有権が関数にムーブされる場合があります。例で見てみましょう。
:<syntaxhighlight lang=rust copy>
fn main() {
let original = String::from("Hello, Rust!"); // String型の変数originalを作成
let moved = move_ownership(original); // originalがmove_ownership関数にムーブ
// println!("original: {}", original); // コンパイルエラー
println!("moved: {}", moved); // 正常に動作
}
fn move_ownership(input: String) -> String {
input
}
</syntaxhighlight>
この例では、<code>original</code>が関数<code>move_ownership</code>にムーブされ、<code>original</code>は使用できなくなります。
=== クローン ===
所有権を共有したい場合、<code>clone</code>メソッドでデータの複製が可能です。
:<syntaxhighlight lang=rust copy>
fn main() {
let data1 = vec![1, 2, 3];
let data2 = data1.clone(); // データの複製
println!("{:?}", data1); // data1は所有権を保持している
println!("{:?}", data2); // data2はクローンされたデータを持つ
}
</syntaxhighlight>
この例では、<code>data1</code> の <code>clone</code> メソッドを呼び出すことで、ヒープ上にあるデータの複製を作成し、<code>data2</code> に格納します。このとき、<code>data1</code> と <code>data2</code> はそれぞれ独立した所有権を持つため、どちらかを変更してももう一方には影響しません。
クローンを作成することで、所有権が必要な場合でも、元のデータをそのまま保持しながらコピーを生成できるため、データの安全な扱いが可能です。
=== ライフタイム ===
ライフタイムは、参照が有効である期間を示すRustの注釈で、所有権と借用のルールと密接に関係しています。ライフタイムを指定することで、コンパイラがメモリの安全性を保証し、不正なメモリアクセスや参照の無効化を防ぎます。
:<syntaxhighlight lang=rust copy>
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
</syntaxhighlight>
この例では、<code>'a</code> というライフタイムパラメータを使って、<code>x</code> と <code>y</code> の参照が同じライフタイムを共有することをコンパイラに伝えています。これにより、返り値のライフタイムも入力引数と同じ期間で有効であることが保証されます。
ライフタイムは複雑な場面では特に重要となり、Rustの所有権システムがさらに強力にメモリ安全を保証する仕組みとなっています。
=== Rc, Box と Drop ===
==== Rc (Reference Counting) ====
<code>Rc</code>は参照カウントを用いたスマートポインタで、複数の所有者が同じデータを共有できるようにします。主にマルチスレッドを必要としない環境で利用され、<code>clone</code>メソッドでカウントを増加させることで、同じデータを複数の変数が所有できます。
:<syntaxhighlight lang=rust copy>
use std::rc::Rc;
let a = Rc::new(5);
let b = Rc::clone(&a); // aとbが同じデータを共有
</syntaxhighlight>
<code>Rc</code>はスレッドセーフではありませんが、シングルスレッドの環境でデータ共有を簡単に行えるため便利です。
==== Box (Heap Allocation) ====
<code>Box</code>はデータをヒープに格納し、そのポインタをスタック上で保持するスマートポインタです。スタックではなくヒープにデータを配置したい場合に使用します。<code>Box</code>は最も単純なスマートポインタで、シングルオーナーのデータの所有権を提供します。
:<syntaxhighlight lang=rust copy>
let b = Box::new(5);
println!("b = {}", b); // ヒープ上に格納されたデータにアクセス
</syntaxhighlight>
ボックスは特に再帰的なデータ構造の作成やヒープメモリ管理に適しており、ポインタの解放はスコープを外れたときに自動で行われます。
==== Drop (Resource Cleanup) ====
<code>Drop</code>トレイトは、オブジェクトがスコープを外れるときにリソースをクリーンアップするための機構を提供します。カスタムデストラクタを実装する際に使用され、例えばファイルハンドルやネットワークリソースなどのリソース解放に役立ちます。
:<syntaxhighlight lang=rust copy>
struct CustomResource;
impl Drop for CustomResource {
fn drop(&mut self) {
println!("CustomResourceが解放されました");
}
}
let resource = CustomResource;
// スコープを抜けるときにdropメソッドが呼ばれる
</syntaxhighlight>
<code>Drop</code>トレイトにより、Rustは自動的にリソース管理を行い、メモリリークやリソースの取りこぼしを防ぎます。手動で<code>drop</code>を呼び出すことも可能ですが、通常はスコープ終了時に自動で解放されます。
; まとめ
Rustの所有権システムは、メモリ管理とデータ競合の予防において非常に強力な機能です。所有、借用、ムーブ、コピー、クローンといった各機能を活用することで、安全かつ効率的にメモリを管理できるようになります。特に、Rustではコンパイル時にこれらのルールが強制されるため、意図しないバグを未然に防ぐことができます。
Rustの所有権システムを深く理解することは、効率的で安全なコードを書くための第一歩です。<!ーー
RcやBoxやDropもここか?
ーー>
== 制御構造 ==
Rust では、{{code|if}}や{{code|for}}などの制御構造も式です。
=== 分岐 ===
Rust は、[[#if|if]] と [[#match|match]] の2つの分岐構文を持ちます。
==== if ====
ifは、条件式に基づき分岐し、分岐先の式を評価します。
ifの値は、分岐先の式の値です。
elseを省略し条件式が偽であった場合のifの値は <code>()</code> です。
;構文:<syntaxhighlight lang=ebnf>
if-expr := if 条件式 '{' 式1 '}' [ else '{' 式2 ] '}'
</syntaxhighlight>
:;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=84117443c135c52137b9005717322e82 条件式に整数を使うと]:<syntaxhighlight lang=Rust line copy>
fn main() {
let i = 0;
if i {
println!("zero");
}
}
</syntaxhighlight>
:;コンパイルエラー:<syntaxhighlight lang=text>
error[E0308]: mismatched types
--> src/main.rs:4:8
|
4 | if i {
| ^ expected `bool`, found integer
For more information about this error, try `rustc --explain E0308`.
</syntaxhighlight>
:: Rustでは、ifに限らず、条件式は、bool 型でなければいけません。
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=2c8960df447a87aaeaecced963d20cde if.rs]:<syntaxhighlight lang=rust line copy>
fn main() {
let i = 0;
if i == 0 {
println!("零");
} else {
println!("非零");
}
let s = if i == 0 {
"ゼロ"
} else {
"非ゼロ"
};
println!("{}", s);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
零
ゼロ
</syntaxhighlight>
:気をつけたいのは、式の値が参照されるifでは、それぞれの式(ここでは <code>"ゼロ"</code> と <code>"非ゼロ"</code>)にセミコロン<code> ; </code>を付けてはいけない点です。
:: もし セミコロン<code> ; </code> をつけると、ブロックの値は、Unit 型 <code>()</code> になります。
:: ifの、分岐先の2つの式の型は同じでなければいけません。
:: else節が省略された場合は、Unit 型を返さなければいけません。
::: 式の最後に、セミコロン<code>};</code> が必要ということです<ref>C言語系では、式を文にする為に<code>};</code> が必要です。Rustもそう説明されている場合がありますが、Rustでは式の型の一致が目的です。</ref>。
:また、<syntaxhighlight lang=rust inline>let s = if i == 0 {</syntaxhighlight>の文末の<code>};</code> のセミコロンも忘れがちです。
:Rust では if に限らず、コードブロックは式の一種で値を返します<ref>コードブロックが値を持つプログラミング言語としては、BCPL, [[Ruby]], [[Scala]]や[[Kotlin]]があります。</ref>。その場合、コードブロックの最後の式がコードブロックの値となりセミコロン<code> ; </code>は不要で、もし、<code> ; </code>をつけると<code> ; </code>の次の式(=空文)の値<code> () </code>がコードブロックの値になります。
この特徴は、関数型プログラミングを意識したものですが、同時に後に説明する所有権の移譲で重要な役割を果たします。
===== if と else の連鎖 =====
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=e3c9a903bc6baab687f697a83bde8928 if-else.rs]:<syntaxhighlight lang=rust line copy>
fn main() {
let n = 0.0 / 0.0;
if n < 0.0 {
println!("負の数");
} else if n > 0.0 {
println!("正の数");
} else if n == 0.0 {
println!("零");
} else {
println!("{n}");
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
NaN
</syntaxhighlight>
このコードの中で、次のことが行われています:
# <code>n</code> に NaN(Not a Number)を代入しています。<code>0.0 / 0.0</code> は浮動小数点数のゼロで割り算を表し、NaN を返します。
# <code>if</code> 文で <code>n</code> の値に応じて条件分岐しています。
# <code>n</code> が負の数より小さい場合は、"負の数" と出力します。
# <code>n</code> が正の数より大きい場合は、"正の数" と出力します。
# <code>n</code> がゼロと等しい場合は、"零" と出力します。
# それ以外の場合は、<code>n</code> の値を <code>{n}</code> という形式で出力します。
しかし、Rustの浮動小数点数型では、NaN は <code><</code> や <code>></code> 、<code>==</code> などの比較演算子によって、他の数値との大小や等価性を比較することはできません。なぜなら NaN は "not a number" であり、数値としての大小関係が定義されていないためです。
そのため、このコードでは <code>n</code> が NaN である場合、どの条件にも合致せず、最後の <code>else</code> ブロックが実行されることになります。このブロックでは、<code>n</code> の値そのものを <code>{n}</code> という形式で出力しようとしています。
==== Some() ====
Some()の"Some"は「(何かの値が)ある」という意味です。これに対しNoneは、他の言語でいうnullに相当します。Rustでは、C言語におけるNULLに相当する値はNoneです。
詳しくはOption型の解説で述べますが、Rustでは値が存在しない可能性がある場合、Some(値) または None で明示的に値の有無を示すことができます。
これにより、JavaにおけるNullPointerExceptionのような予期せぬエラーを防ぐ設計になっています。
通常の変数は None の代入は受付けませんが、Some() を使うと None を取り得る変数が宣言できます<ref>[https://doc.rust-lang.org/stable/std/option/enum.Option.html Option in std::option - Rust]</ref>。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=afb9193c50a316090b6e3119f994f8cf some.rs]:<syntaxhighlight lang=rust line copy>
fn main() {
let mut x = Some(0);
println!("{:?}({})", x, type_of(x));
x = None;
println!("{:?}({})", x, type_of(x));
}
fn type_of<T>(_: T) -> &'static str {
std::any::type_name::<T>()
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Some(0)(core::option::Option<i32>)
None(core::option::Option<i32>)
</syntaxhighlight>
Some() 及び None は、標準ライブラリ std::option で定義されていますが、初期化済みなので Use することなく、接頭辞Option::なしで使えます。
==== if let ====
Rustには、<code>if let</code>という特別な制御構造があります。<code>if let</code>は、<code>match</code>式を簡略化するために使用されます。<code>if let</code>式は、単一のパターンを使用して、変数が指定された値にマッチした場合にのみ式を実行します。<code>if let</code>を使用すると、冗長なマッチングのコードを削減できます。
以下は、<code>if let</code>を使用した例です。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=0614af1127dbc6ec0d871443b16e6a67 if-let.rs]:<syntaxhighlight lang=rust style="width:40em">
fn main() {
let mut v = vec![2, 3, 5];
if let Some(x) = v.pop() {
println!("x = {}", x)
} else {
println!("done!")
}
if let Some(x) = v.pop() {
println!("x = {}", x)
} else {
println!("done!")
}
if let Some(x) = v.pop() {
println!("x = {}", x)
} else {
println!("done!")
}
if let Some(x) = v.pop() {
println!("x = {}", x)
} else {
println!("done!")
}
if let Some(x) = v.pop() {
println!("x = {}", x)
} else {
println!("done!")
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text style="width:40em">
x = 5
x = 3
x = 2
done!
done!
</syntaxhighlight>
: <code>.pop()</code>メソッドは、ベクターから最後の要素を取り出し、それを返します。ただし、ベクターが空である場合は<code>None</code>を返します。
: 最初の行では、<code>vec![2, 3, 5]</code>という3つの要素を持つベクターを作成しています。
: その後、5回の<code>if let</code>式を使用して、ベクターから要素を取り出し、それを表示するか、ベクターが空の場合には<code>done!</code>と表示します。
: 各<code>if let</code>式では、変数<code>x</code>を定義しています。
:: <code>v.pop()</code>の返り値が<code>Some</code>であれば、ベクターの最後の要素が変数<code>x</code>に束縛され、<code>println!</code>マクロを使用して<code>x</code>を表示します。
:: そうでない場合、すなわち、ベクターが空である場合は、<code>else</code>節が実行されて、<code>done!</code>が表示されます。
==== match ====
<code>match</code>は、値とパターンをマッチングして、対応するコードブロックを実行します。これは、複数の条件に基づいて処理を行う場合に非常に便利です。例えば、列挙型(enum)を使った状況では、<code>match</code>は特に有用です。
:<syntaxhighlight lang=rust copy>
enum Coin {
Penny,
Nickel,
Dime,
Quarter,
}
fn value_in_cents(coin: Coin) -> u32 {
match coin {
Coin::Penny => {
println!("Lucky penny!");
1
},
Coin::Nickel => 5,
Coin::Dime => 10,
Coin::Quarter => 25,
}
}
</syntaxhighlight>
上記の例では、<code>Coin</code>型の列挙子を受け取り、それぞれのコインに対する価値を返す関数が定義されています。<code>match</code>は<code>Coin</code>の値を取り、各列挙子に対応するコードブロックを実行します。例えば、<code>Coin::Penny</code>の場合、"Lucky penny!"というメッセージが表示され、1が返されます。
<code>match</code>は、パターンに加えて<code>if</code>条件も組み合わせて使用できます。
:<syntaxhighlight lang=rust copy>
fn main() {
let some_value = Some(5);
match some_value {
Some(x) if x < 5 => println!("Less than 5: {}", x),
Some(x) => println!("Value: {}", x),
None => println!("No value"),
}
}
</syntaxhighlight>
この例では、<code>Some</code>型の値を持つ変数を<code>match</code>で処理しています。<code>if</code>条件は<code>Some</code>型であり、かつその値が5未満の場合にマッチします。それ以外の場合、単に値を表示します。
<code>match</code>はRustの強力なツールであり、パターンマッチングにより、安全性と表現力を向上させます。
=== 反復 ===
Rustには、以下のような反復構文があります。
# <code>[[#for|for]]</code>ループ
## <code>[[#iter()|iter()]]</code>メソッドを使用した反復処理
## <code>[[#enumerate()|enumerate()]]</code>メソッドを使用した反復処理
## <code>[[#zip()|zip()]]</code>メソッドを使用した反復処理
# <code>[[#while|while]]</code>ループ
# <code>[[#loop|loop]]</code>ループ
それぞれの構文について、詳しく解説していきます。
==== for ====
Rust の '''for''' は、指定された範囲内の値を反復処理するために使用されます。通常、配列、ベクトル、範囲、またはイテレータなどの反復可能オブジェクトに対して使用されます。
;構文:<syntaxhighlight lang=ebnf>
for_expression = "for" loop_variable "in" expression "{" statement* "}";
loop_variable = pattern;
expression = (expression_binop | expression_unop | expression) ;
pattern = identifier | "_" | literal ;
</syntaxhighlight>
: <code>for_expression</code>はforループを表し、 <code>loop_variable</code>は反復処理のために使用される変数、 <code>expression</code>は反復処理の対象となるデータのソース、 <code>statement</code>はループ内で実行される文を表します。 <code>pattern</code>は、ループ変数の型と一致するパターンを表します。
: <code>identifier</code>は、識別子の名前を表します。 <code>literal</code>は、文字列、数値、真偽値などのリテラル値を表します。
: forループは、 <code>loop_variable</code>によって定義された変数に <code>expression</code>で指定されたデータソースの値を順番に割り当て、それぞれの値に対して <code>statement</code>を実行します。
: <code>identifier</code>は識別子を、<code>literal</code>はリテラルをしめします。
===== Range =====
Rustにおける<code>range</code>は、範囲を表す型です。範囲の生成には2つの主要な方法があります。
;..(半開区間)
* <code>start..end</code>の形式で使用され、<code>start</code>から<code>end</code>の手前(<code>end</code>は含まれない)までの範囲を生成します。
例えば、<code>1..5</code>は1から4までの範囲を生成します。
; ..= (閉区間)
* <code>start..=end</code>の形式で使用され、<code>start</code>から<code>end</code>までの閉区間を生成します(<code>end</code>も含まれます)。
例えば、<code>1..=5</code>は1から5までの範囲を生成します。
これらの範囲は<code>for</code>ループの反復やイテレータの作成など、さまざまな場面で使用されます。例えば、<code>for</code>ループやイテレータを使って範囲内の要素を処理することができます。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=a3cd190fbd860ce8efb0d6276fb0858a for-in-range.rs]:<syntaxhighlight lang=rust copy>
fn main() {
// 半開区間の使用例
for i in 1..5 {
println!("{i}"); // 1, 2, 3, 4が出力される
}
// 閉区間の使用例
for i in 1..=5 {
println!("{i}"); // 1, 2, 3, 4, 5が出力される
}
}
</syntaxhighlight>
範囲は整数や文字など、多くの型で使用できます。範囲の使用はイテレーションや特定の範囲内の操作を行う際に便利です。
===== iter() =====
<code>Rust</code>における<code>iter()</code>は、コレクション(ベクター、配列、ハッシュマップなど)をイテレート可能な形に変換するメソッドです。イテレータは、コレクション内の要素を1つずつ処理するための仕組みを提供します。
基本的な使い方は以下のようになります:
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=d45c8c0ad55adb01e50456dd7270983c iter.rs]:<syntaxhighlight lang=rust copy>
fn main() {
let vec = vec![1, 2, 3, 4, 5];
// ベクターのイテレータを作成する
let mut iter = vec.iter();
// イテレータを使って要素に順番にアクセスする
while let Some(value) = iter.next() {
println!("{value}");
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
1
2
3
4
5
</syntaxhighlight>
<code>iter()</code>メソッドは、イテレータを作成するための最も基本的な手段ですが、さまざまな応用もあります。
# <code>.map()</code>: イテレータを他の形に変換する場合に使われます。たとえば、各要素に対して関数を適用して新しいイテレータを作成します。
#:<syntaxhighlight lang=rust copy>
fn main() {
let vec = vec![1, 2, 3, 4, 5];
// 各要素を2倍する新しいイテレータを作成する
let doubled_iter = vec.iter().map(|x| x * 2);
for value in doubled_iter {
println!("{value}");
}
}
</syntaxhighlight>
# <code>.filter()</code>: 条件に一致する要素のみを含む新しいイテレータを作成します。
#:<syntaxhighlight lang=rust copy>
fn main() {
let vec = vec![1, 2, 3, 4, 5];
// 偶数の要素だけを含む新しいイテレータを作成する
let even_iter = vec.iter().filter(|&x| x % 2 == 0);
for value in even_iter {
println!("{value}");
}
}
</syntaxhighlight>
# <code>.fold()</code>: イテレータ内の要素を畳み込んで単一の値に集約します。
#:<syntaxhighlight lang=rust copy>
fn main() {
let vec = vec![1, 2, 3, 4, 5];
// 要素の合計を計算する
let sum = vec.iter().fold(0, |acc, &x| acc + x);
println!("合計: {sum}");
}
</syntaxhighlight>
# <code>.reduce()</code>: イテレータ内の要素を畳み込んで単一の値に集約します。
#:<syntaxhighlight lang=rust copy>
fn main() {
let vec = vec![1, 2, 3, 4, 5];
// 要素の合計を計算する
let sum = vec.into_iter().reduce(|acc, x| acc + x);
println!("合計: {:?}", sum);
}
</syntaxhighlight>
これらは<code>iter()</code>を基盤として利用する機能の一部です。<code>Rust</code>のイテレータは非常に強力で、関数型プログラミングの概念を取り入れながら、効率的で安全なコードを記述するための重要な手段となっています。
====== rev() ======
<code>iter()</code>メソッドに加えて、<code>rev()</code>メソッドを使用すると、要素を逆順で取り出すこともできます。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=83d50bb12645221a766052413a9d73b8 iter-rev.rs]:<syntaxhighlight lang=rust copy>
fn main() {
let v = vec![1, 3, 5, 7, 11];
for x in v.iter().rev() {
println!("x = {}", x)
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
x = 11
x = 7
x = 5
x = 3
x = 1
</syntaxhighlight>
: このRustのコードは、 <code>for</code>ループを使用して、ベクトル <code>v</code>の要素を反復処理し、各要素の値を出力するものです。ただし、 <code>v</code>の要素を逆順に処理します。
: <code>v.iter().rev()</code>は、 <code>v</code>のイテレータを取得し、そのイテレータを逆順にするためのメソッドです。これにより、ベクトルの最後の要素から始まり、最初の要素まで逆順に反復処理します。
: <code>for</code>ループの本体では、 <code>println!</code>マクロを使用して、現在の <code>x</code>の値を表示しています。 <code>{}</code>はプレースホルダーであり、その場所に変数の値が挿入されます。この例では、 <code>{}</code>の中に <code>x</code>を指定して、ループの反復ごとに変化する <code>x</code>の値を表示しています。
===== enumerate() =====
<code>enumerate()</code>メソッドを使用すると、要素のインデックスと値を同時に取り出すこともできます。
;コード例:<syntaxhighlight lang=rust line copy>
let v = vec![1, 2, 3];
for (i, val) in v.iter().enumerate() {
println!("{}: {}", i, val);
}
</syntaxhighlight>
: このコードでは、<code>v.iter().enumerate()</code>メソッドを使用して、<code>v</code>のイテレータを作成し、各要素のインデックスと値を同時に反復処理しています。<code>for</code>ループの本体では、変数<code>i</code>を使ってインデックス、<code>val</code>を使って値を表示しています。
===== zip() =====
<code>zip()</code>メソッドを使用すると、複数のイテレータを同時に取り出すことができます。
;コード例:<syntaxhighlight lang=rust line copy>
let v1 = vec![1, 2, 3];
let v2 = vec!["one", "two", "three"];
for (i, val) in v1.iter().zip(v2.iter()) {
println!("{}: {}", i, val);
}
</syntaxhighlight>
: このコードは、<code>zip()</code>メソッドを使用して、2つのベクトルを同時に反復処理する方法を示しています。
: 最初の行で、整数のベクトル<code>v1</code>と文字列のベクトル<code>v2</code>を定義しています。
: 次に、<code>for</code>ループを使用して、<code>v1.iter()</code>と<code>v2.iter()</code>のイテレータを同時に取り出します。このとき、<code>(i, val)</code>というタプルの形式で、それぞれのイテレータから次の要素を取り出します。
: <code>println!</code>マクロの中で、<code>{}</code>に<code>i</code>と<code>val</code>をそれぞれ表示しています。<code>{}</code>の中にある<code>:</code>は区切り文字で、<code>i</code>と<code>val</code>を区別するために使用されています。
==== while ====
Rustにおいて、<code>while</code>は指定した条件式が<code>true</code>である限り、ブロック内のコードを繰返し実行する制御構文です。
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=47dc5b7c9d866b3f5913a77b9a55988e while.rs]:<syntaxhighlight lang=rust copy>
fn main() {
let mut i = 0;
while i < 5 {
println!("i = {}", i);
i += 1
};
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
i = 0
i = 1
i = 2
i = 3
i = 4
</syntaxhighlight>
: このプログラムは、0から4までの数字を順番に表示するプログラムです。whileループを使用して、条件式<code>i < 5</code>が<code>true</code>である間、ループを継続します。ループの各イテレーションでは、<code>println!</code>マクロを使用して、変数<code>i</code>の現在の値を表示します。<code>i</code>の値は、ループ本文の最後で<code>i += 1</code>によって1ずつ増加します。条件式<code>i < 5</code>が<code>false</code>になったとき、ループが終了します。最終的に、0から4までの数字が順番に表示されます。
===== while let =====
Rustの<code>while let</code>は、ループ処理の一種で、パターンマッチングを行い、パターンにマッチする値をループ内で取り出しながらループを繰り返します。
<code>while let</code>は、<code>match</code>構文の糖衣構文で、一つの値を取り出してパターンマッチングを行い、パターンにマッチする場合は値を取り出し、マッチしない場合はループを終了します。
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=0764d8389e3afc0854b4223b8db5a32b while-let.rs]:<syntaxhighlight lang=rust copy>
fn main() {
let mut n = Some(0);
while let Some(i) = n {
n = if i > 5 {
None
} else {
println!("i = {}", i);
Some(i + 1)
}
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
</syntaxhighlight>
: このコードは、<code>n</code> という <code>Option<i32></code> 型の変数を定義し、初期値を <code>Some(0)</code> として設定します。そして、<code>while</code> ループを使って <code>n</code> の値を取り出しながら、それが <code>None</code> でなければループを続けます。
: <code>while let</code> の条件式では、<code>n</code> が <code>Some(i)</code> とパターンマッチされ、<code>i</code> に値がバインディングされます。このパターンマッチにより、<code>n</code> が <code>Some(i)</code> でなければループは終了します。
: ループ本体では、<code>i</code> が <code>5</code> を超える場合は、<code>n</code> を <code>None</code> に更新してループを終了します。そうでなければ、<code>i</code> を表示して、<code>Some(i + 1)</code> を <code>n</code> に代入してループを継続します。
: このプログラムの出力は、0 から 5 までの数値が順番に表示されます。最後に <code>None</code> が表示されます。
===== while let とベクトル =====
Rustの<code>while let</code>は、反復可能な値に対して、パターンマッチングを行いながら反復処理を行うことも出来ます。ベクトルに対してwhile letを使うと、ベクトルの末尾から要素を取り出しながら反復処理を行うことができます。
;[https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=6b252d13f67df88f533e55dab5d3397c while-let-again.rs]:<syntaxhighlight lang=rust copy>
fn main() {
let mut v = vec![1, 3, 5, 7, 11];
while let Some(x) = v.pop() {
println!("x = {}", x)
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
x = 11
x = 7
x = 5
x = 3
x = 1
</syntaxhighlight>
: このコードは、可変長配列<code>v</code>に値を追加し、whileループでその配列から値を取り出し、それを表示するものです。
: まず、可変長配列<code>v</code>に<code>vec![1, 3, 5, 7, 11]</code>という値を設定しています。その後、<code>while let</code>式を使って、<code>v.pop()</code>の戻り値が<code>Some(x)</code>である限り、ループが継続されます。<code>v.pop()</code>は、<code>v</code>の最後の要素を取り出し、その要素があれば<code>Some</code>で包んで返し、なければ<code>None</code>を返します。
: <code>while let</code>式では、取り出した値が<code>Some(x)</code>である場合に、<code>println!("x = {}", x)</code>を実行して<code>x</code>の値を表示します。
: つまり、このコードは<code>v</code>の末尾から要素を取り出しながら、取り出した要素の値を表示するという処理を続け、最後に配列が空になったらループを終了します。
{{コラム|Rustにdo-whileはありません|2=
Rustにdo-whileはありません。while の条件式に do のブロックを詰め込むことで同じことが実現できます。
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=534d7cfaf805c7e8d99d4c1ba95ed3ab pseudo-do-while.rs]:<syntaxhighlight lang=rust highlight=6 line copy>
fn main() {
let mut i = 100;
while {
println!("{}", i);
i += 1;
i < 10
} {}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
100
</syntaxhighlight>
:whileの条件式が省略されたかのように見えますが、4,5,6行目を含むブロックが、while の条件式となり値はブロックの最後の6行目の式の値です。
:7行目の {} がループ本体です。
;loopを使った例:<syntaxhighlight lang=rust line copy>
fn main() {
let mut i = 100;
loop {
println!("{}", i);
i += 1;
if !(i < 10) {
break;
}
}
}
</syntaxhighlight>
: loop のブロックの最後に脱出条件を書いた方がわかりやすいかもしれません。
}}
==== loop ====
<code>loop</code>は、明示的な条件式の指定がない限り、無限に繰り返されます。
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=9349b3eff79e311c70c87d20942cf8f2 loop-and-break.rs]:<syntaxhighlight lang=rust copy>
fn main() {
let mut i = 0;
let result = loop {
if i > 3 {
break 100;
}
println!("i = {}", i);
i += 1;
};
println!("result = {}", result);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
i = 0
i = 1
i = 2
i = 3
result = 100
</syntaxhighlight>
: 最初に、変数<code>i</code>を0に初期化します。そして、<code>loop</code>構文で、<code>i</code>が3より大きくなるまで繰り返します。
: 各反復中に、<code>if</code>文が使用されています。<code>if</code>の条件式は、<code>i</code>が3より大きくなった場合には<code>break 100;</code>が実行され、<code>loop</code>から脱出します。そうでない場合は、<code>println!()</code>関数を使用して、<code>i</code>の値を出力し、<code>i</code>を1増やします。
: 最後に、<code>loop</code>から脱出した後に<code>result</code>変数に格納される値は、<code>break</code>文の引数で指定された<code>100</code>です。そして、<code>println!()</code>関数を使用して、<code>result</code>の値を出力します。
: つまり、このコードは、<code>i</code>を0から3まで順に増やしながら、各値を出力し、<code>i</code>が3より大きくなったら100を返し、その後に<code>result</code>の値を出力するという処理を行っています。
==== continue ====
<code>continue</code> を実行すると、ループのブロック内の残りの処理がスキップされ、反復処理が続行されます。
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=49f7412cec92162b9d77881e08f43138 continue.rs]:<syntaxhighlight lang=rust highlight=9 line copy>
fn main() {
let mut i = 0;
let result = loop {
if i > 10 {
break 100;
}
if i % 2 == 0 {
i += 1;
continue;
}
println!("i = {}", i);
i += 1;
};
println!("result = {}", result);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
i = 1
i = 3
i = 5
i = 7
i = 9
result = 100
</syntaxhighlight>
: このコードは、0から10までの奇数を出力するプログラムです。
: まず、<code>i</code>変数を定義して0で初期化し、<code>result</code>変数を宣言しています。次に、<code>loop</code>キーワードでループを開始します。
: ループ本体では、<code>if</code>文を使って<code>i</code>が10より大きくなったら、<code>break</code>キーワードを使ってループを抜けます。これにより、11以上の奇数が出力されることはありません。
: 次に、<code>i</code>が偶数である場合は、<code>continue</code>キーワードを使ってループの先頭に戻ります。これにより、偶数はスキップされます。
: 最後に、<code>println!</code>マクロを使って現在の<code>i</code>の値を出力し、<code>i</code>を1増やします。
:ループが終了したら、最後に<code>result</code>の値を出力します。<code>break</code>キーワードが値を返すため、このループは<code>result</code>に100を設定します。
{{コラム|width=stretch|Rustのプログラミングでつまづきやすいところ|2=Rustはセーフティ、パフォーマンス、そしてエクスプレッションの柔軟性を組み合わせた高度なプログラミング言語です。初めてRustを使う場合、以下のようなトピックでつまづくことがよくあります。
#所有権と借用: Rustでは、各値には所有者があり、値のライフサイクルを追跡する必要があります。また、他のコードに値を渡すときは、その値を一時的に借りる必要があります。これらの概念が理解しづらい場合があります。
#ライフタイム: Rustでは、各値にはライフタイムがあり、その値が使用される期間を決定します。ライフタイムの概念が不明瞭になりがちで、特に複雑なデータ構造を扱う場合に問題が発生することがあります。
#パフォーマンスの最適化: Rustは高速な実行時パフォーマンスを提供しますが、それを達成するためには、手動でメモリ管理や最適化を行う必要があります。これらの最適化は、Rustの型システムと他の言語との違いを理解する必要があります。
#コンパイラエラー: Rustのコンパイラは非常に厳格で、コードがコンパイルできない場合があります。エラーメッセージは詳細で役に立ちますが、初めて見た場合は驚くかもしれません。
本書では、これらのトピックについて順次取り上げてゆきます。
}}
== 演算子 ==
Rustでは、演算子を利用して変数やリテラルの値を操作することができます。これらは算術計算、比較、論理操作、ビット操作など、さまざまな目的に応じて使用されます。Rustの演算子は、型安全性と明確性を重視して設計されており、他のプログラミング言語と似た点も多いですが、いくつかの独自の特性も持っています。
=== 算術演算子 ===
算術演算子は、数値型に対する基本的な計算を行います。これには以下が含まれます。
* <code>+</code>(加算):2つの値を加算します。
* <code>-</code>(減算):1つ目の値から2つ目の値を減算します。
* <code>*</code>(乗算):2つの値を掛け算します。
* <code>/</code>(除算):1つ目の値を2つ目の値で割ります。ただし、整数型の場合、結果は切り捨てられます。
* <code>%</code>(剰余):1つ目の値を2つ目の値で割った余りを求めます。
例:
:<syntaxhighlight lang=rust copy>
let a = 10;
let b = 3;
println!("加算: {}", a + b); // 出力: 加算: 13
println!("除算: {}", a / b); // 出力: 除算: 3
println!("剰余: {}", a % b); // 出力: 剰余: 1
</syntaxhighlight>
=== 比較演算子 ===
比較演算子は、値同士を比較し、<code>true</code>または<code>false</code>を返します。
* <code>==</code>(等価):2つの値が等しい場合に<code>true</code>。
* <code>!=</code>(非等価):2つの値が等しくない場合に<code>true</code>。
* <code><</code>(小なり):左の値が右の値より小さい場合に<code>true</code>。
* <code>></code>(大なり):左の値が右の値より大きい場合に<code>true</code>。
* <code><=</code>(小なりイコール):左の値が右の値以下の場合に<code>true</code>。
* <code>>=</code>(大なりイコール):左の値が右の値以上の場合に<code>true</code>。
例:
:<syntaxhighlight lang=rust copy>
let x = 5;
let y = 10;
println!("x < y: {}", x < y); // 出力: x < y: true
println!("x == y: {}", x == y); // 出力: x == y: false
</syntaxhighlight>
=== 論理演算子 ===
論理演算子は、真理値を操作します。
* <code>&&</code>(論理AND):両方が<code>true</code>のときに<code>true</code>。
* <code>||</code>(論理OR):どちらか一方が<code>true</code>のときに<code>true</code>。
* <code>!</code>(論理NOT):真理値を反転させます。
例:
:<syntaxhighlight lang=rust copy>
let a = true;
let b = false;
println!("a && b: {}", a && b); // 出力: a && b: false
println!("!a: {}", !a); // 出力: !a: false
</syntaxhighlight>
=== ビット演算子 ===
ビット演算子は、整数型に対してビット単位の操作を行います。
* <code>&</code>(ビットAND):対応するビットが両方とも1の場合に1。
* <code>|</code>(ビットOR):対応するビットのどちらかが1の場合に1。
* <code>^</code>(ビットXOR):対応するビットが異なる場合に1。
* <code><<</code>(左シフト):ビットを指定した数だけ左に移動。
* <code>>></code>(右シフト):ビットを指定した数だけ右に移動。
例:
:<syntaxhighlight lang=rust copy>
let n = 0b1100; // 12 (2進数)
println!("n << 1: {:b}", n << 1); // 出力: 11000 (24)
println!("n & 0b1010: {:b}", n & 0b1010); // 出力: 1000 (8)
</syntaxhighlight>
=== その他の演算子 ===
* <code>=</code>(代入):変数に値を代入します。ただし、Rustではイミュータブルな変数に対して代入はできません。
* <code>+=</code>、<code>-=</code>、<code>*=</code>、<code>/=</code>、<code>%=</code>:加算や減算などを行った結果を代入します。
例:
:<syntaxhighlight lang=rust copy>
let mut z = 5;
z += 3; // zは8になります
</syntaxhighlight>
Rustの演算子は型ごとに適切な制約が設けられており、不正な操作をコンパイル時に防ぐ仕組みが備わっています。これにより、安全かつ効率的なコードの記述が可能となります。
=== 演算子オーバーロード ===
Rustでは、一部の演算子をオーバーロードすることが可能です。演算子オーバーロードは、<code>std::ops</code>モジュールに定義されているトレイトを実装することで実現します。これにより、独自の型に対して演算子の動作を定義することができます。
たとえば、加算演算子(<code>+</code>)をオーバーロードするには、<code>std::ops::Add</code>トレイトを実装します。このトレイトには<code>add</code>メソッドが含まれ、演算の具体的な挙動を指定します。
==== 加算演算子のオーバーロード例 ====
以下は、ベクトル型に対して加算演算子をオーバーロードする例です。
:<syntaxhighlight lang=rust copy>
use std::ops::Add;
#[derive(Debug)]
struct Vector {
x: i32,
y: i32,
}
impl Add for Vector {
type Output = Vector;
fn add(self, other: Vector) -> Vector {
Vector {
x: self.x + other.x,
y: self.y + other.y,
}
}
}
fn main() {
let v1 = Vector { x: 1, y: 2 };
let v2 = Vector { x: 3, y: 4 };
let v3 = v1 + v2; // 加算演算子が使用可能
println!("{:?}", v3); // 出力: Vector { x: 4, y: 6 }
}
</syntaxhighlight>
この例では、<code>Add</code>トレイトの<code>add</code>メソッドを実装することで、<code>Vector</code>型に対して<code>+</code>演算子を適用できるようにしています。
==== 他の演算子のオーバーロード ====
Rustでは他にも多くの演算子がトレイトとして定義されており、同様にオーバーロードが可能です。以下はその一部です。
* <code>std::ops::Sub</code>:減算演算子(<code>-</code>)
* <code>std::ops::Mul</code>:乗算演算子(<code>*</code>)
* <code>std::ops::Div</code>:除算演算子(<code>/</code>)
* <code>std::ops::Rem</code>:剰余演算子(<code>%</code>)
* <code>std::ops::Neg</code>:単項マイナス(<code>-</code>)
* <code>std::ops::BitAnd</code>:ビットAND(<code>&</code>)
* <code>std::ops::Shl</code>:左シフト(<code><<</code>)
==== 注意点 ====
演算子オーバーロードは便利ですが、過剰な使用はコードの可読性を損なう可能性があります。特に、直感的でない動作を定義する場合は、利用者に混乱を与えるおそれがあります。そのため、オーバーロードを使用する際は、型の意味や使用意図を明確に反映させることが重要です。
このように、Rustの演算子オーバーロード機能は、型安全性と柔軟性を両立させながら、独自の型に対して直感的な操作を実現する手段を提供します。
== パターンマッチング ==
=== パターンマッチングの概要 ===
==== パターンマッチングの基本概念 ====
パターンマッチングは、プログラミング言語において特定のパターンとデータを照合し、条件に基づいた処理を行う手法です。この手法は、コードの可読性や柔軟性を高めるために広く使用されます。パターンマッチングの基本的な概念は、与えられたデータが特定のパターンに一致するかどうかを検査し、それに応じた処理を行います。
==== Rustにおけるパターンマッチングの役割と重要性 ====
Rustでは、パターンマッチングは非常に重要な機能です。パターンマッチングは、異なる条件に基づいてコードをブロックに分割し、それぞれの条件に対して適切な処理を行うことができます。これにより、コードの複雑さが軽減され、可読性が向上します。また、Rustの型システムとの統合により、安全性やエラーハンドリングの向上も実現されます。
=== 基本的なパターン ===
==== リテラルパターン ====
リテラルパターンは、値そのものとマッチさせるための最も基本的なパターンです。以下の例では、<code>x</code>の値が<code>1</code>の場合にマッチします。
:<syntaxhighlight lang=rust copy>
let x = 1;
match x {
1 => println!("one"),
_ => println!("not one"),
}
</syntaxhighlight>
==== 特定の値とのマッチング ====
リテラルパターンは、数値や文字列、真理値などの様々なリテラル値とマッチさせることができます。
:<syntaxhighlight lang=rust copy>
let x = 'c';
match x {
'a' => println!("apple"),
'b' => println!("banana"),
'c' => println!("cherry"), // この行が実行される
_ => println!("other"),
}
</syntaxhighlight>
==== 変数パターン ====
変数パターンは、値を新しい変数にバインドするためのパターンです。以下の例では、<code>x</code>の値が<code>5</code>の場合に<code>y</code>に<code>5</code>がバインドされます。
:<syntaxhighlight lang=rust copy>
let x = 5;
match x {
y => println!("x is {}", y), // この行が実行され、y = 5
}
</syntaxhighlight>
==== 値を変数にバインドするパターン ====
変数パターンは、値をパターン内の変数にバインドすることができます。これは、値を後で使用したり、条件分岐に利用したりするのに便利です。
:<syntaxhighlight lang=rust copy>
let x = 10;
match x {
0 => println!("x is zero"),
y if y > 0 => println!("x is positive: {}", y), // この行が実行される
y => println!("x is negative: {}", y),
}
</syntaxhighlight>
==== ワイルドカードパターン ====
ワイルドカードパターン(<code>_</code>)は、任意の値とマッチします。これは、特定の値を無視したい場合や、残りのパターンを捕捉したい場合に便利です。
:<syntaxhighlight lang=rust copy>
let x = 42;
match x {
0 => println!("x is zero"),
_ => println!("x is something else"), // この行が実行される
}
</syntaxhighlight>
==== 任意の値とのマッチング ====
ワイルドカードパターンを使えば、任意の値とマッチさせることができます。これは、値を確認する必要がない場合や、デフォルトの処理を実行したい場合に役立ちます。
:<syntaxhighlight lang=rust copy>
let x = 123;
match x {
0 => println!("x is zero"),
_ => println!("x is not zero"), // この行が実行される
}
</syntaxhighlight>
=== 列挙型とパターンマッチング ===
==== 列挙型の定義と使い方 ====
Rustには、列挙型と呼ばれる特別な型があります。列挙型は、いくつかの列挙値のいずれかを取ることができる型です。以下の例では、<code>Direction</code>という列挙型を定義しています。
:<syntaxhighlight lang=rust copy>
enum Direction {
Up,
Down,
Left,
Right,
}
</syntaxhighlight>
列挙型の値を作成するには、列挙型名とコロン(<code>:</code>)を使用します。
:<syntaxhighlight lang=rust copy>
let up = Direction::Up;
let down = Direction::Down;
</syntaxhighlight>
==== 列挙型に対するパターンマッチングの活用 ====
列挙型とパターンマッチングを組み合わせると、非常に強力なコードを書くことができます。以下の例では、<code>Direction</code>列挙型の値に対してパターンマッチングを行っています。
:<syntaxhighlight lang=rust copy>
enum Direction {
Up,
Down,
Left,
Right,
}
fn get_direction_name(dir: Direction) -> &'static str {
match dir {
Direction::Up => "上",
Direction::Down => "下",
Direction::Left => "左",
Direction::Right => "右",
}
}
fn main() {
let up = Direction::Up;
let down = Direction::Down;
println!("up: {}", get_direction_name(up)); // 上
println!("down: {}", get_direction_name(down)); // 下
}
</syntaxhighlight>
この例では、<code>get_direction_name</code>関数が列挙型<code>Direction</code>の値に対してパターンマッチングを行い、対応する文字列を返しています。
=== 構造体とタプルのパターンマッチング ===
==== 構造体の定義と使い方 ====
Rustでは、構造体を使ってデータを表現することができます。構造体は、フィールドと呼ばれる複数の値を持つことができます。以下の例では、<code>Person</code>という構造体を定義しています。
:<syntaxhighlight lang=rust copy>
struct Person {
name: String,
age: u32,
}
</syntaxhighlight>
構造体のインスタンスを作成するには、構造体名とフィールド値を指定します。
:<syntaxhighlight lang=rust copy>
let person = Person {
name: String::from("Alice"),
age: 30,
};
</syntaxhighlight>
==== タプルの定義と使い方 ====
タプルは、異なる型の値を含むことができる集合体です。タプルは括弧<code>()</code>で囲んで定義します。
:<syntaxhighlight lang=rust copy>
let tuple = (1, 3.14, "hello");
</syntaxhighlight>
タプルの要素にアクセスするには、インデックスを使用します。
:<syntaxhighlight lang=rust copy>
let x = tuple.0; // 1
let y = tuple.1; // 3.14
let z = tuple.2; // "hello"
</syntaxhighlight>
==== 構造体とタプルに対するパターンマッチングの活用 ====
構造体やタプルに対してパターンマッチングを行うことができます。これは、データの構造に基づいて処理を行う場合に非常に便利です。
:<syntaxhighlight lang=rust copy>
struct Person {
name: String,
age: u32,
}
fn print_person_info(person: Person) {
match person {
Person { name, age } => println!("名前: {}, 年齢: {}", name, age),
}
}
fn main() {
let alice = Person {
name: String::from("Alice"),
age: 30,
};
print_person_info(alice);
}
</syntaxhighlight>
この例では、<code>print_person_info</code>関数が<code>Person</code>構造体のインスタンスに対してパターンマッチングを行い、名前と年齢を出力しています。
タプルに対してもパターンマッチングを行うことができます。
:<syntaxhighlight lang=rust copy>
fn print_tuple_info(tuple: (u32, f64, &str)) {
match tuple {
(x, y, z) => println!("x: {}, y: {}, z: {}", x, y, z),
}
}
fn main() {
let tuple = (42, 3.14, "hello");
print_tuple_info(tuple);
}
</syntaxhighlight>
この例では、<code>print_tuple_info</code>関数がタプル<code>(u32, f64, &str)</code>に対してパターンマッチングを行い、その要素を出力しています。
=== パターンガード ===
==== パターンガードの概要 ====
パターンガードは、パターンマッチングに条件を追加するための機能です。パターンに一致する値に対して、追加の条件を指定することで、より柔軟な処理を行うことができます。
==== パターンガードの実装方法と使いどころ ====
パターンガードは、パターンに矢印(<nowiki><code>=></code></nowiki>)と条件式を追加することで実装します。条件式が真の場合のみ、パターンに一致したものとして処理されます。
:<syntaxhighlight lang=rust copy>
let x = 10;
match x {
2 | 5 | 10 if x % 2 == 0 => println!("x は偶数です"),
_ => println!("x は奇数です"),
}
</syntaxhighlight>
この例では、<code>x</code> が 2、5、10 のいずれかで、かつ偶数の場合は、"x は偶数です" と出力されます。
パターンガードは、様々な場面で活用することができます。
* 特定の条件を満たす値のみを処理したい場合
* エラー処理を行う場合
* 複雑なパターンを処理する場合
==== ネストしたパターン ====
==== ネストしたパターンの例 ====
ネストしたパターンは、複数のパターンを組み合わせたパターンです。パターンガードと組み合わせることで、より複雑な条件を処理することができます。
:<syntaxhighlight lang=rust copy>
enum Color {
Red,
Green,
Blue,
}
struct Point {
x: i32,
y: i32,
color: Color,
}
let point = Point { x: 10, y: 20, color: Color::Red };
match point {
Point { x, y, color: Color::Red } => println!("赤い点が ({}, {}) にあります", x, y),
Point { x, y, color } => println!("({}, {}) に {} 色の点がいます", x, y, color),
}
</syntaxhighlight>
この例では、<code>point</code> が <code>Point { x, y, color: Color::Red }</code> の形式の構造体である場合のみ、"赤い点が ({}, {}) にあります" と出力されます。<code>point</code> が <code>Point { x, y, color }</code> の形式の構造体である場合は、"({}, {}) に {} 色の点がいます" と出力され、<code>color</code> には <code>point</code> の <code>color</code> フィールドの値が格納されます。
==== ネストしたパターンの利点と注意点 ====
ネストしたパターンを使用すると、複雑な条件を処理しやすくなります。しかし、パターンが複雑になりすぎると、コードが読みづらくなる可能性があります。
==== エラーハンドリングとパターンマッチング ====
==== ResultやOptionとの組み合わせ ====
<code>Result</code> や <code>Option</code> などの型とパターンマッチングを組み合わせることで、エラーハンドリングを効率的に行うことができます。
:<syntaxhighlight lang=rust copy>
let result = read_file("filename.txt");
match result {
Ok(contents) => println!("ファイルの内容: {}", contents),
Err(error) => println!("エラー: {}", error),
}
</syntaxhighlight>
この例では、<code>read_file</code> 関数が成功した場合のみ、ファイルの内容が出力されます。失敗した場合は、エラーメッセージが出力されます。
==== エラーハンドリングにおけるパターンマッチングの有用性 ====
パターンマッチングを使用すると、エラー処理をより簡潔かつ分かりやすく記述することができます。また、エラーの種類ごとに異なる処理を行うこともできます。
=== 高度なパターンマッチング ===
==== パターンマッチングにおける複雑なパターンの扱い方 ====
パターンマッチングは、複雑なパターンを処理するために様々な機能を提供しています。
; パターンガード : パターンに一致する値に対して、追加の条件を指定することができます。
; ネストしたパターン : 複数のパターンを組み合わせたパターンを作成することができます。
; パターン分解 : パターンに一致した値を複数の変数に格納することができます。
; ガード付きパターン : パターンに一致する値に対して、条件分岐を実行することができます。
これらの機能を組み合わせることで、複雑なデータ構造を効率的に処理することができます。
==== 複数のパターンに一致する場合の処理方法 ====
複数のパターンに一致する場合は、パターンガードやネストしたパターンを使用して、どのパターンに一致するかを判別する必要があります。
== マクロ ==
Rustのマクロは、<code>macro_rules!</code>を使ったマクロと<code>proc_macro</code>を使ったプロシージャマクロの2種類があります。<code>macro_rules!</code>を使ったマクロはパターンマッチングを用いて簡易的なマクロを定義します。一方、<code>proc_macro</code>を使ったプロシージャマクロは、Rustのコードを受け取り、変換したり、新しいコードを生成するためのより柔軟なマクロです。
=== <code>macro_rules!</code>を使ったマクロ ===
<code>macro_rules!</code>は、パターンに基づいてマッチングし、そのパターンに一致した場合に指定されたコードを生成する簡易なマクロを定義します。
例えば、<code>vec!</code>マクロは、可変長のベクタを生成するマクロです。これは<code>macro_rules!</code>を使って次のように実装されています。
:<syntaxhighlight lang=rust line copy>
macro_rules! vec {
// パターンマッチで要素を取得して新しいベクタを生成
( $( $x:expr ),* ) => {
{
let mut temp_vec = Vec::new();
$(temp_vec.push($x);)*
temp_vec
}
};
}
fn main() {
// `vec!`マクロを使ってベクタを生成
let my_vec = vec![1, 2, 3, 4];
// 生成されたベクタを表示
println!("{:?}", my_vec);
}
</syntaxhighlight>
これは、<code>vec![1, 2, 3]</code>を使うと、<code>[1, 2, 3]</code>というベクタを生成します。このマクロは、<code>$( $x:expr ),*</code>のパターンに一致して、指定された式(<code>$x</code>)をベクタに挿入するコードを生成します。
=== <code>proc_macro</code>を使ったプロシージャマクロ ===
<code>macro_rules!</code>を使わずにマクロを定義する方法もあります。これは、プロシージャマクロ(<code>proc_macro</code>)を使用した方法です。<code>proc_macro</code>は、<code>macro</code>キーワードによって定義される関数の一種で、Rustのコードを受け取り、そのコードを操作して変換することができます。
例えば、<code>vec!</code>マクロを<code>macro_rules!</code>ではなく、プロシージャマクロとして定義する場合は、<code>proc_macro</code>を使います。
:<syntaxhighlight lang=rust line copy>
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, Expr, parse_quote};
#[proc_macro]
pub fn my_vec(input: TokenStream) -> TokenStream {
// 入力をパース
let input_expr: Expr = parse_macro_input!(input);
// 入力を取得して新しいベクタを生成するコードを生成
let expanded = quote! {
{
let mut temp_vec = Vec::new();
temp_vec.push(#input_expr);
temp_vec
}
};
// TokenStreamに変換して返す
TokenStream::from(expanded)
}
</syntaxhighlight>
この例では、<code>proc_macro</code>として<code>my_vec</code>という新しいマクロを定義しています。<code>my_vec</code>は、<code>proc_macro</code>の関数として定義され、Rustのコードを受け取り、それを操作して新しいコードを生成します。
このプロシージャマクロを使うと、次のようにマクロを呼び出すことができます。
:<syntaxhighlight lang=rust line copy>
fn main() {
let my_vec = my_vec!(42);
println!("{:?}", my_vec); // [42]
}
</syntaxhighlight>
この例では、<code>my_vec!</code>マクロを使用して、引数として<code>42</code>を渡しています。このマクロは、引数を含むベクタを生成するもので、<code>my_vec!(42)</code>は<code>[42]</code>というベクタを生成します。
この方法では、<code>proc_macro</code>を使用して、<code>macro_rules!</code>を使わずに独自のマクロを定義できます。ただし、この方法では<code>proc_macro</code>と関連するライブラリ(<code>syn</code>、<code>quote</code>など)を使用する必要があります。
=== マクロ関数 ===
マクロ関数は、<code>macro_rules!</code>マクロを使って定義されます。
これは、マクロのパターンとそれに対する置換を定義するマクロです。
マクロの呼び出し元は、パターンにマッチする式を渡し、置換が適用されたコードが生成されます。
;マクロ関数の例:<syntaxhighlight lang=rust line copy>
macro_rules! say_hello {
() => {
println!("Hello, world!");
};
}
fn main() {
say_hello!();
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello, world!
</syntaxhighlight>
;解説
:上記の例では、<code>say_hello!()</code>マクロを定義しています。これは、空の引数リストに対して<code>println!("Hello, world!")</code>を生成するマクロです。
=== マクロ属性 ===
マクロ属性はRustのコンパイル時にコードを修飾するために使用されます。
通常は、関数や構造体、列挙型、フィールドなどに適用されます。
マクロ属性を使用することで、コンパイル時に生成されるコードに追加の情報を提供できます。
;マクロ属性の例:<syntaxhighlight lang=rust line copy>
#[derive(Debug)]
struct MyStruct {
my_field: i32,
}
fn main() {
let my_struct = MyStruct { my_field: 42 };
println!("{:?}", my_struct);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
MyStruct { my_field: 42 }
</syntaxhighlight>
;解説
:上記の例では、<code>#[derive(Debug)]</code>マクロ属性を使用しています。これは、<code>MyStruct</code>に<code>Debug</code>トレイトを実装するために必要なコードを生成するマクロ属性です。<code>println!</code>マクロで<code>my_struct</code>を表示する際に、<code>Debug</code>トレイトのメソッドを呼び出して情報を表示することができます。
== クレートとは ==
* '''Rustのパッケージ単位:''' Rustでは、コードのパッケージングや再利用のために「クレート」(Crate)という単位が使われます。1つのクレートには、1つ以上の関連するモジュールやデータ型が含まれます。
* '''Cargoによる管理:''' クレートは、RustのパッケージマネージャであるCargoによって管理されます。Cargoは、クレートの作成、ビルド、依存関係の解決などを自動化するツールです。
{{See also|Cargoハンドブック}}
=== クレートの構造 ===
典型的なRustのクレートは、次のような構造を持ちます:
:<syntaxhighlight lang=text>
my_crate/
├── src/
│ ├── main.rs
│ ├── lib.rs
│ └── other_module.rs
├── Cargo.toml
└── README.md
</syntaxhighlight>
* '''src/:''' クレートのソースコードを含むディレクトリ。
* '''src/main.rs:''' クレートを実行するためのエントリポイント。
* '''src/lib.rs:''' ライブラリとしてコンパイルされる場合に使用されるエントリポイント。
* '''src/other_module.rs:''' 他のモジュール。
* '''Cargo.toml:''' クレートのメタデータ、依存関係、ビルド構成などを含むファイル。
* '''README.md:''' クレートのドキュメント。
=== クレートの作成 ===
新しいクレートを作成する手順は以下の通りです:
# <code>cargo new</code>コマンドを使用して新しいクレートのディレクトリを作成します。
# <code>Cargo.toml</code>ファイルを編集して、クレートのメタデータを定義します。
# 必要に応じて、<code>src/main.rs</code>や他のモジュールを編集して、クレートのコードを実装します。
# <code>cargo run</code>コマンドを使用してクレートをビルドして実行します。
=== クレートの公開 ===
クレートを他の開発者と共有するためには、それをcrates.ioという公式のクレートレジストリに公開する必要があります。公開手順は以下の通りです:
# crates.ioにアカウントを作成します。
# <code>cargo login</code>コマンドを使用してcrates.ioにログインします。
# クレートのバージョン番号を更新します。
# <code>cargo publish</code>コマンドを使用してクレートを公開します。
=== まとめ ===
Rustのクレートは、コードのパッケージングや再利用を容易にする重要な概念です。Cargoを使用してクレートを管理し、必要に応じてcrates.ioに公開することで、他の開発者とクレートを共有することができます。
Rustにおいて、パッケージはクレートと呼ばれます。クレートは、Rustのコードやライブラリをパッケージ化して共有できるようにするための仕組みです。クレートは、依存関係を解決するためのメタデータと、コードとその他のファイルから構成されています。
Rustには、<code>crates.io</code>という公式のクレートレジストリがあり、開発者はそこでクレートを共有したり、他の開発者が作成したクレートを使用したりできます。
<!--
*クレートとは何か
**クレートの概要
**クレートとは何を提供するか
**クレートの種類(バイナリ、ライブラリ、依存関係)
*クレートの作成
**クレートの作成方法
**クレートの名前とバージョン管理
**クレートのファイル構造
**クレートのライセンス
*クレートのビルド
**Cargoの概要
**Cargoのインストールと初期化
**Cargo.tomlファイルの説明
*クレートのビルド方法
*クレートのテスト
**テストの重要性
**ユニットテストと統合テストの違い
**テストの書き方と実行方法
**テストの結果の確認方法
*クレートの公開
**クレートの公開方法
**crates.ioにクレートをアップロードする方法
**クレートのバージョン管理と更新方法
**クレートのドキュメントの生成と公開方法
*クレートの依存関係
**依存関係の概要
**依存関係の設定方法
**Cargo.lockファイルの役割
**依存関係のアップデート方法
*クレートのプロジェクト管理
**複数のクレートを管理する方法
**クレートの相互依存関係
**ワークスペースの作成と利用方法
**ワークスペースでの依存関係の管理方法
-->
== 代数的データ型 ==
Rustにおける代数的データ型は、構造体(<code>struct</code>)と列挙型(<code>enum</code>)を指します。これらは複雑なデータ構造を表現するのに役立ちます。
=== 構造体(struct) ===
構造体は異なる型のフィールドを持つことができ、それぞれのフィールドは名前を持ちます。例えば:
:<syntaxhighlight lang=rust copy>
struct Point {
x: i32,
y: i32,
}
impl Point {
fn new(x: i32, y: i32) -> Self {
Self { x, y }
}
fn print(&self) {
println!("x: {}, y: {}", self.x, self.y);
}
}
fn main() {
let origin = Point::new(0, 0);
origin.print();
}
</syntaxhighlight>
=== 列挙型(enum) ===
列挙型は、いくつかの異なるバリアント(variant)の中から選択することができます。それぞれのバリアントはデータを持つことができます。
:<syntaxhighlight lang=rust copy>
enum Shape {
Circle(f64), // 半径を持つ
Rectangle(f64, f64), // 幅と高さを持つ
Square(f64), // 1辺の長さを持つ
}
impl Shape {
fn area(&self) -> f64 {
match self {
Shape::Circle(radius) => std::f64::consts::PI * radius * radius,
Shape::Rectangle(width, height) => width * height,
Shape::Square(side) => side * side,
}
}
}
fn main() {
let shapes = vec![
Shape::Circle(5.0),
Shape::Rectangle(10.0, 20.0),
Shape::Square(15.0),
];
for shape in &shapes {
println!("Area: {}", shape.area());
}
}
</syntaxhighlight>
これらの代数的データ型は、Rustで柔軟なデータ構造を表現する際に役立ちます。
== 属性(Attribute) ==
Rustの属性(Attribute)は、コンパイラに対してコードに関する追加情報や指示を提供するための注釈です。これらはコードの振る舞いや最適化、データレイアウト、コード生成に影響を与えます。属性は<code>#[...]</code>の形式で記述され、コンパイラやコードの挙動を制御します。Rustでは、属性を使用することでコードの効率性や可読性を高め、特定の機能を拡張できます。
==== よく使用される属性 ====
# '''<code>#[derive(...)]</code>'''
#* 自動導出(Derive Attribute)は、特定のトレイトを自動的に実装するために使用されます。
#* 例: <code>#[derive(Debug)]</code>は、構造体や列挙型に<code>Debug</code>トレイトを自動的に実装させ、<code>println!</code>でその内容を表示可能にします。
# '''<code>#[cfg(...)]</code>'''
#* コンパイル時の条件を指定するために使います。条件に応じてコードの一部をコンパイルするかどうかを制御します。
#* 例: <code>#[cfg(target_os = "linux")]</code>は、ターゲットOSがLinuxの場合のみ有効です。
# '''<code>#[allow(...)]</code> / <code>#[deny(...)]</code> / <code>#[warn(...)]</code>'''
#* コンパイラ警告のレベルを制御します。これにより、警告を許可、エラー化、または警告として表示させることができます。
#* 例: <code>#[deny(warnings)]</code>は、すべての警告をエラーとして扱います。
# '''<code>#[repr(...)]</code>'''
#* データのレイアウト方法を指定します。構造体や列挙型のメモリ配置を変更するために使用されます。
#* 例: <code>#[repr(C)]</code>は、C言語と互換性のあるレイアウトを指定します。
# '''<code>#[inline]</code> / <code>#[noinline]</code>'''
#* インライン展開の制御を行います。関数呼び出しのオーバーヘッドを削減するために使われ、最適化のためにインライン展開を促進します。
#* 例: <code>#[inline(always)]</code>は、関数が常にインライン展開されるように指定します。
# '''<code>#[test]</code> / <code>#[bench]</code>'''
#* ユニットテストやベンチマークテストをマークするために使います。
#* 例: <code>#[test]</code>は関数をテスト対象として指定し、テストランナーによって自動的に実行されます。
# '''<code>#[macro_use]</code>'''
#* マクロを利用する際に、外部クレートからマクロをインポートするために使います。
#* 例: <code>#[macro_use] extern crate serde_json;</code>で、<code>serde_json</code>クレートのマクロを利用できます。
# '''<code>#[feature(...)]</code>'''
#* 実験的な機能を有効にするために使われます。安定版Rustで使用するには、<code>nightly</code>ビルドが必要です。
#* 例: <code>#[feature(proc_macro)]</code>はプロシージャマクロ機能を有効にします。
=== Debugトレイト ===
<code>Debug</code>トレイトは、構造体や列挙型などのデータ構造をフォーマットして表示するために使われます。このトレイトを実装することで、デバッグ情報を簡単に出力することができます。
==== 使用例 ====
:<syntaxhighlight lang=rust>
#[derive(Debug)]
struct MyStruct {
name: String,
age: u32,
}
fn main() {
let my_data = MyStruct {
name: String::from("Alice"),
age: 30,
};
// Debugトレイトを使用して構造体を表示
println!("My data: {:?}", my_data);
}
</syntaxhighlight>
;出力例:
:<syntaxhighlight lang=text>
My data: MyStruct { name: "Alice", age: 30 }
</syntaxhighlight>
このコード例では、<code>#[derive(Debug)]</code>を使って<code>MyStruct</code>構造体に<code>Debug</code>トレイトを実装し、<code>println!</code>マクロで<code>{:?}</code>フォーマット指定子を使って内容を表示しています。<code>Debug</code>トレイトを手動で実装することなく、簡単にデバッグ情報を出力できます。
=== その他の属性 ===
* '''<code>#[allow(dead_code)]</code>'''
** 使用されていないコードに対する警告を無視します。特にデバッグコードや一時的な実装で便利です。
* '''<code>#[cfg_attr(...)]</code>'''
** 条件付きで属性を適用するために使います。<code>#[cfg]</code>と組み合わせることで、特定の条件下で属性を追加できます。
* '''<code>#[must_use]</code>'''
** 戻り値が使われなければコンパイラから警告を出します。戻り値を意図的に無視することを防ぎます。
Rustの属性は、コードの最適化やコンパイラの挙動、エラーチェックを制御するために強力なツールです。それぞれの属性は特定の目的を持っており、正しく使用することでコードの品質を向上させることができます。
== ジェネリックス ==
Rustにおけるジェネリクスは、特定の型に依存せず、複数の型で動作するコードを作成するための重要な機能です。ジェネリクスを使用することで、同じコードを複数の型で再利用したり、型安全性を保ちながら柔軟性を持たせたりすることができます。
=== 基本的なジェネリクスの使用 ===
:<syntaxhighlight lang=rust copy>
// Tというジェネリックな型を持つ関数
fn print_value<T: std::fmt::Display>(value: T) {
println!("Value is: {}", value);
}
fn main() {
// 使用例
print_value(10); // Tはi32として推論される
print_value(2.73 as f32); // Tはf32として推論される
print_value("Hello"); // Tは&strとして推論される
}
</syntaxhighlight>
:この例では、<code>print_value</code>関数がジェネリックな型<code>T</code>を持ち、<code>T</code>は<code>std::fmt::Display</code>トレイトを実装している型に制限されています。<code>std::fmt::Display</code>トレイトは、<code>{}</code>でフォーマット可能な型を表します。
:引数<code>value</code>の型はコンパイル時に推論されます。
=== ジェネリックな構造体 ===
:<syntaxhighlight lang=rust copy>
// ジェネリックな構造体
struct Pair<T, U> {
first: T,
second: U,
}
fn main() {
// 使用例
let pair_of_int_and_str = Pair { first: 10, second: "Hello" };
println!("first = {:?}, second = {:?}", pair_of_int_and_str.first, pair_of_int_and_str.second);
}
</syntaxhighlight>
:<code>Pair</code>構造体は2つの異なる型を持つことができます。使用する際に具体的な型を指定することで、ジェネリックな構造体を作成できます。
=== ジェネリックなトレイト ===
:<syntaxhighlight lang=rust copy>
// ジェネリックなトレイト
trait Printable {
fn print(&self);
}
// TがPrintableトレイトを実装していることを要求する関数
fn print_trait<T: Printable>(item: T) {
item.print();
}
// 使用例
struct MyType;
impl Printable for MyType {
fn print(&self) {
println!("Printing MyType");
}
}
fn main() {
let obj = MyType;
print_trait(obj); // Printableトレイトを実装したMyTypeのインスタンスを受け取る
}
</syntaxhighlight>
:ここでは、<code>Printable</code>というジェネリックなトレイトを定義し、<code>print_trait</code>関数で<code>Printable</code>トレイトを実装した型<code>T</code>を受け取る方法を示しています。
ジェネリクスは、関数、構造体、列挙型、トレイトなどのRustのさまざまな要素で使用できます。これにより、柔軟性のあるコードを作成し、再利用性を高めることができます。
=== 型制約 ===
ジェネリックスにおいては、型制約(type constraint)は、ジェネリックな型パラメータに対して特定の条件やトレイトの制約を課すことを指します。これにより、ジェネリックな型が特定の性質を持つことを保証し、安全性を確保することができます。
Rustでは、<code>trait</code>を使用して型制約を実装します。例えば、<code>std::fmt::Display</code>トレイトを持つ型に制約を課したい場合、以下のように実装します。
:<syntaxhighlight lang=rust copy>
fn print_value<T: std::fmt::Display>(value: T) {
println!("Value is: {}", value);
}
</syntaxhighlight>
ここでは<code><T: std::fmt::Display></code>という構文を使用して、<code>T</code>が<code>std::fmt::Display</code>トレイトを実装している必要があることを宣言しています。この制約により、<code>print_value</code>関数は<code>std::fmt::Display</code>トレイトを実装した型に対してのみ呼び出しが可能になります。
また、複数のトレイト制約を持つこともできます。例えば、<code>std::fmt::Debug</code>と<code>std::fmt::Display</code>トレイトの両方を実装した型を要求する場合は、次のように書きます。
:<syntaxhighlight lang=rust copy>
fn print_value<T: std::fmt::Debug + std::fmt::Display>(value: T) {
println!("Value is: {:?}", value);
}
#[derive(Debug)]
struct Point<T> {
x: T,
y: T,
}
// Point<T>型に対するDisplayトレイトの実装
impl<T: std::fmt::Display> std::fmt::Display for Point<T> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "Point({}, {})", self.x, self.y)
}
}
fn main() {
let int_point = Point { x: 5, y: 10 };
print_value(int_point); // `Point`型は`std::fmt::Debug`と`std::fmt::Display`を実装している
let float_point = Point { x: 1.5, y: 3.2 };
print_value(float_point); // 同様に、`Point`型は`std::fmt::Debug`と`std::fmt::Display`を実装している
}
</syntaxhighlight>
<code>T</code>が<code>std::fmt::Debug</code>と<code>std::fmt::Display</code>の両方を実装している必要があります。
これにより、ジェネリックなコードをより安全に、かつ特定の条件下で使用できるように制約を課すことができます。
== エラーハンドリング ==
Rustでは、<code>Result</code>型と<code>panic</code>によるエラーハンドリングが一般的です。<code>Result</code>型は成功または失敗を表す列挙型で、<code>Ok</code>は成功時の値、<code>Err</code>はエラー時の情報を持ちます。
まず、<code>Result</code>型を使用した例を見てみましょう:
:<syntaxhighlight lang=rust copy>
use std::fs::File;
use std::io::{self, Read};
fn read_file_contents(file_path: &str) -> Result<String, io::Error> {
let mut file = File::open(file_path)?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
Ok(contents)
}
fn main() {
let file_path = "/etc/hosts";
match read_file_contents(file_path) {
Ok(contents) => println!("File contents: {}", contents),
Err(e) => println!("Error reading file: {:?}", e),
}
}
</syntaxhighlight>
この例では、<code>read_file_contents</code>関数が<code>Result<String, io::Error></code>を返します。これは、成功時には文字列を<code>Ok</code>で、エラー時には<code>io::Error</code>を<code>Err</code>で返すことを示しています。ファイルを開いたり、読み込んだりするメソッドの呼び出しには<code>?</code>演算子を使用し、エラーが発生した場合は早期リターンしてエラーを返します。
<code>match</code>ブロックでは、<code>read_file_contents</code>の戻り値に対して<code>Ok</code>と<code>Err</code>の両方の可能性に対処し、それぞれ成功時の振る舞いとエラー時の振る舞いを定義しています。これにより、関数の呼び出し元で適切にエラーハンドリングを行うことができます。
=== except() ===
また、Rustには<code>panic!</code>マクロを使用してプログラムを異常終了させる方法もあります。これは致命的なエラーが発生した場合に使用されますが、エラーを適切に処理するために<code>Result</code>型を使うことが推奨されます。
:<syntaxhighlight lang=rust copy>
fn main() {
let v = vec![1, 2, 3];
let index = 5;
let value = v.get(index).expect("Failed to get the value at index");
println!("Value at index {}: {}", index, value);
}
</syntaxhighlight>
この例では、<code>get</code>メソッドは<code>Option</code>型を返し、<code>expect</code>メソッドは<code>Some</code>の場合は中の値を返し、<code>None</code>の場合は指定したメッセージとともにプログラムを<code>panic</code>させます。
ただし、<code>expect</code>を使う際には、<code>panic</code>が発生した際に表示されるメッセージは注意深く選ぶ必要があります。
=== panic!() ===
<code>panic!()</code>は通常、予期せぬ状況やプログラムの継続が不可能な状況で使われることがあります。以下はそのような例です。
:<syntaxhighlight lang=rust copy>
fn divide(a: i32, b: i32) -> i32 {
if b == 0 {
panic!("Attempted to divide by zero!"); // 0で割ろうとした場合、致命的なエラーとしてpanic!()を呼ぶ
}
a / b // 正常な割り算を行う
}
fn main() {
let dividend = 10;
let divisor = 0;
let result = divide(dividend, divisor); // divide関数を呼び出す
println!("Result of division: {}", result);
}
</syntaxhighlight>
この例では、<code>divide()</code>関数で<code>b</code>が0の場合に<code>panic!()</code>が呼ばれています。0で割ることは数学的に定義されていないため、これは致命的なエラーであり、プログラムの実行を中断させます。
<code>panic!()</code>は、このような状況に直面した場合に、プログラムを停止させるための手段として使われます。しかし、このようなエラーは通常、<code>if</code>文や<code>match</code>文などの条件分岐を使用して事前にチェックして、エラーハンドリングを行うことが推奨されます。
<code>Result</code>を使ってエラーハンドリングを行うことで、<code>panic!()</code>に頼らずにエラーを適切に処理できます。
:<syntaxhighlight lang=rust copy>
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
if b == 0 {
Err("Attempted to divide by zero!") // 0で割ろうとした場合、エラーをResultで返す
} else {
Ok(a / b) // 正常な割り算の結果をOkで返す
}
}
fn main() {
let dividend = 10;
let divisor = 0;
match divide(dividend, divisor) {
Ok(result) => println!("Result of division: {}", result),
Err(e) => println!("Error: {}", e), // エラーを適切に処理する
}
}
</syntaxhighlight>
<code>divide()</code>関数は<code>Result<i32, &'static str></code>を返し、0で割るエラーの場合には<code>Err</code>を、正常な計算の場合には<code>Ok</code>を返します。<code>match</code>ブロックでは、<code>Ok</code>と<code>Err</code>の両方のケースを処理し、エラーが発生した場合にはエラーメッセージを表示します。
このように<code>Result</code>型を使用することで、エラーハンドリングを柔軟かつ安全に行うことができます。<code>panic!()</code>に頼るよりも、エラーを予測し、適切に処理する方が望ましいです。
=== Option型 ===
<code>Option</code>型は、何らかの値が存在するかどうかを表現するRustの列挙型です。<code>Option</code>型は<code>Some</code>と<code>None</code>の2つのバリアントを持ち、<code>Some</code>は値が存在することを示し、<code>None</code>は値が存在しないことを示します。
<code>Option</code>型は、特定の操作が値を返さない可能性がある場合や、値が存在しない場合にエラーを返す代わりに<code>None</code>を返すために使われます。このような状況では、<code>Result</code>型を使用せずに、<code>Option</code>型が利用されることがあります。
以下は<code>Option</code>型の例です:
:<syntaxhighlight lang=rust copy>
fn divide(a: i32, b: i32) -> Option<i32> {
if b == 0 {
None // 0で割ろうとした場合、Noneを返す
} else {
Some(a / b) // 正常な割り算の結果をSomeで返す
}
}
fn main() {
let dividend = 10;
let divisor = 0;
match divide(dividend, divisor) {
Some(result) => println!("Result of division: {}", result), // Someの場合は値を表示
None => println!("Error: Division by zero!"), // Noneの場合はエラーメッセージを表示
}
}
</syntaxhighlight>
この例では、<code>divide()</code>関数は<code>Option<i32></code>を返し、0で割るエラーの場合には<code>None</code>を、正常な計算の場合には<code>Some</code>を返します。<code>match</code>ブロックでは、<code>Some</code>と<code>None</code>の両方のケースを処理し、<code>None</code>の場合はエラーメッセージを表示します。
<code>Option</code>型は、特に値が存在しないことが普通に起こり得る場面で、エラー処理や結果の取り扱いを行う際に有用です。例外的な状況ではなく、むしろ普通の操作の一部として考えられる「値の有無」を扱う際に利用されることが多いです。
== イテレーター ==
Rustの<code>Iterator</code>トレイトは、コレクションやデータのシーケンスを反復処理するための非常に強力な機能です。<code>Iterator</code>は、<code>next()</code> メソッドを提供し、それを使用して次の要素を返し、シーケンスの終わりに達した場合は <code>None</code> を返します。
基本的な使い方は次のようになります:
# イテレータの作成: コレクションやデータからイテレータを作成します。<code>iter()</code>や<code>into_iter()</code>、<code>iter_mut()</code>などのメソッドを使用して、それぞれイミュータブルな参照、所有権、ミュータブルな参照を使ったイテレータを取得できます。
#:<syntaxhighlight lang=rust copy>
let numbers = vec![1, 2, 3, 4, 5];
let mut iter = numbers.iter(); // イミュータブルなイテレータ
</syntaxhighlight>
# <code>next()</code>を使用した反復処理: <code>next()</code>メソッドを使って、イテレータから次の要素を取得します。
#:<syntaxhighlight lang=rust copy>
match iter.next() {
Some(number) => println!("Number: {}", number),
None => println!("End of sequence"),
}
</syntaxhighlight>
# forループを使用した反復処理: 一般的には、<code>for</code>ループを使用してイテレータを処理します。
#:<syntaxhighlight lang=rust copy>
for number in numbers.iter() {
println!("Number: {}", number);
}
</syntaxhighlight>
=== Iteratorトレイト ===
<code>Iterator</code>トレイトは、<code>map()</code>、<code>filter()</code>、<code>fold()</code>などの便利なメソッドも提供しており、これらを組み合わせることでデータを効果的に処理できます。
:<syntaxhighlight lang=rust copy>
let numbers = vec![1, 2, 3, 4, 5];
// 各要素を2倍して新しいベクターを作成する
let doubled: Vec<i32> = numbers.iter().map(|x| x * 2).collect();
// 偶数のみをフィルタリングする
let evens: Vec<i32> = numbers.into_iter().filter(|&x| x % 2 == 0).collect();
// 全要素を合計する
let sum: i32 = numbers.iter().sum();
</syntaxhighlight>
<code>Iterator</code>トレイトは、Rustでのデータ処理を非常に柔軟で効率的にします。関数型プログラミングの考え方に基づいた強力な機能を提供しています。
=== 独自イテレータの実装 ===
<code>Iterator</code>トレイトを使用して独自のイテレータを実装する例を示します。
例えば、0から始まり、指定されたステップごとに増加するカウンターを作成するイテレータを実装してみましょう。
:<syntaxhighlight lang=rust copy>
struct Counter {
current: u32,
step: u32,
max: Option<u32>,
}
impl Counter {
fn new(start: u32, step: u32, max: Option<u32>) -> Counter {
Counter {
current: start,
step,
max,
}
}
}
impl Iterator for Counter {
type Item = u32;
fn next(&mut self) -> Option<Self::Item> {
match self.max {
Some(max) if self.current >= max => None,
_ => {
let result = self.current;
self.current += self.step;
Some(result)
}
}
}
}
fn main() {
let counter = Counter::new(0, 2, Some(10));
for num in counter {
println!("{}", num);
}
}
</syntaxhighlight>
この例では、<code>Counter</code>構造体は<code>Iterator</code>トレイトを実装しています。<code>next()</code>メソッドは、現在の値を返し、カウンターを指定されたステップで増分させます。また、<code>max</code>値が設定されており、その値に達するとイテレータは終了します。
<code>main()</code>関数内では、<code>Counter</code>イテレータを使用して0から10まで2ずつ増加する数列を生成しています。
<code>Iterator</code>トレイトを実装することで、独自のイテレータを作成し、柔軟な反復処理を行うことができます。
== impl ==
<code>impl</code>キーワードは、Rustで特定の型に対してメソッドやトレイトを実装するために使用されます。基礎から応用的な使い方まで見ていきましょう。
=== 基礎的な使用例 ===
; メソッドの実装
:<syntaxhighlight lang=rust copy>
struct MyStruct {
value: i32,
}
impl MyStruct {
// MyStruct型に対するメソッドの実装
fn new(value: i32) -> MyStruct {
MyStruct { value }
}
fn get_value(&self) -> i32 {
self.value
}
}
fn main() {
let instance = MyStruct::new(42);
println!("Value: {}", instance.get_value()); // メソッド呼び出し
}
</syntaxhighlight>
<code>impl</code>ブロック内で、<code>MyStruct</code>に対する<code>new</code>メソッドと<code>get_value</code>メソッドを実装しています。<code>main</code>関数でこれらのメソッドを使用しています。
=== 応用的な使用例 ===
; トレイトの実装
:<syntaxhighlight lang=rust copy>
trait Printable {
fn print(&self);
}
struct MyType {
value: i32,
}
impl Printable for MyType {
fn print(&self) {
println!("Value: {}", self.value);
}
}
fn main() {
let obj = MyType { value: 10 };
obj.print();
}
</syntaxhighlight>
{{コラム|width=100%|トレイトとインターフェイスやプロトコルとの類似性|2=トレイトは他の言語でのインターフェースやプロトコルに似ています。これらの概念は、異なる型や構造体が共通の振る舞いを持つことを許可し、それによってポリモーフィズム(多様性)を実現します。
;インターフェース
:共通の振る舞い: インターフェースは、異なるクラスが共通の振る舞いを持つことを保証します。他の言語では、この振る舞いはインターフェースで定義され、クラスはそれを実装します。
:メソッドの宣言: インターフェースでは、クラスが実装しなければならないメソッドの宣言が含まれます。
:多重継承の代替: インターフェースは多重継承の代替手段としても使われ、クラスは複数のインターフェースを実装することができます。
;プロトコル
:抽象的な振る舞いの定義: プロトコルは、特定の振る舞いや機能を表す抽象的な規約です。Swiftなどの言語ではプロトコルが使われ、クラスや構造体はそれらを適合させます。
:メソッドの要求: プロトコルは、適合する型によって実装されるメソッドやプロパティの要求を定義します。
:型の適合性の強化: プロトコルに適合することで、様々な型を同じ抽象的な概念に束縛することができます。
;Rustのトレイト
:共通の振る舞いの提供: トレイトは、構造体や他の型に共通の振る舞いを提供します。それぞれの型はトレイトを実装することで、その振る舞いを持つことができます。
:メソッドの宣言: トレイトではメソッドの宣言が行われ、それを実装することでトレイトが利用できるようになります。
:型間の相互運用性と柔軟性: トレイトは型間での相互運用性や柔軟性を提供し、異なる型が同じ振る舞いを共有することができます。
}}
=== ジェネリックな実装 ===
; ジェネリックな構造体に対する実装
:<syntaxhighlight lang=rust copy>
struct MyGeneric<T> {
value: T,
}
impl<T> MyGeneric<T> {
fn new(value: T) -> MyGeneric<T> {
MyGeneric { value }
}
fn get_value(&self) -> &T {
&self.value
}
}
fn main() {
let instance = MyGeneric::new(42);
println!("Value: {:?}", instance.get_value());
let instance_str = MyGeneric::new("hello");
println!("Value: {:?}", instance_str.get_value());
}
</syntaxhighlight>
このコードは、<code>MyGeneric</code>を<code>i32</code>型と<code>&str</code>型の両方でインスタンス化しています。ジェネリックなデータ構造体とそのジェネリックなメソッドを利用して、異なる型に対して同じメソッドを使用する様子を示しています。<code>println!</code>マクロ内の<code>{:?}</code>は、<code>Debug</code>トレイトを実装する型の値を表示するためのフォーマット指定子です。
=== 他の例 ===
; 単純なトレイトの実装
:<syntaxhighlight lang=rust copy>
trait Summary {
fn summarize(&self) -> String;
}
struct Book {
title: String,
author: String,
}
impl Summary for Book {
fn summarize(&self) -> String {
format!("{} by {}", self.title, self.author)
}
}
fn summarize_any(item: &impl Summary) -> String {
item.summarize()
}
fn main() {
let book = Book {
title: String::from("Harry Potter"),
author: String::from("J.K. Rowling"),
};
println!("Summary: {}", summarize_any(&book));
}
</syntaxhighlight>
この例では、<code>Summary</code>トレイトを実装した様々な型に対して共通の<code>summary_any</code>関数を使用して、異なる型の値に対して要約を取得できます。
== 関数 ==
Rustでの関数は、プログラム内で再利用可能なコードブロックを定義するために使われます。関数は特定のタスクを実行するための手続きを含み、必要に応じて引数を受け取り、結果を返すことができます。基本的な関数の定義と使用方法を以下に示します。
=== 関数の定義 ===
:<syntaxhighlight lang=rust copy>
// 関数の定義
fn add(a: i32, b: i32) -> i32 {
a + b // 最後の式の結果が自動的に返り値になる
}
</syntaxhighlight>
この例では、<code>add</code>という名前の関数が定義されています。<code>a</code>と<code>b</code>は整数型(<code>i32</code>)の引数を受け取ります。<code>-> i32</code>は関数が<code>i32</code>型の値を返すことを示しています。
=== 関数の呼び出し ===
:<syntaxhighlight lang=rust copy>
let result = add(3, 5);
println!("Result: {}", result); // "Result: 8"が出力される
</syntaxhighlight>
<code>add</code>関数は<code>3</code>と<code>5</code>を引数に取り、それらを足して<code>8</code>を返します。<code>println!</code>マクロを使ってその結果を出力しています。
=== 引数と戻り値 ===
* 引数: 関数に渡す値。関数の定義において、引数は型を指定する必要があります。
* 戻り値: <code>-></code>演算子を使って関数が返す値の型を指定します。Rustでは最後の式の結果が自動的に返り値となります。
=== パターンマッチングを使用した複数の戻り値 ===
Rustの関数は複数の値を返すこともできます。
:<syntaxhighlight lang=rust copy>
fn calculate(a: i32, b: i32) -> (i32, i32) {
(a + b, a - b)
}
let (sum, difference) = calculate(10, 5);
println!("Sum: {}, Difference: {}", sum, difference); // "Sum: 15, Difference: 5"が出力される
</syntaxhighlight>
=== 関数の機能 ===
* 再帰: 自分自身を呼び出すことができます。
* クロージャ: 無名の関数を作成し、変数にキャプチャさせることができます。
* ジェネリクス: 型を指定せずに関数を定義することができ、後から具体的な型を指定できます。
Rustの関数は安全性、速度、パターンマッチング、ジェネリクス、所有権など、言語の多くの特徴を活用しています。これらの特性は、Rustを強力なプログラミング言語にしています。
=== ライフタイム: ===
Rustの関数とライフタイムは、関連性がありますが、関数のシグネチャ内でライフタイムを使用することは必ずしも必要ではありません。しかし、関数が参照を含む場合や、ジェネリクスを使う場合には、ライフタイムの指定が必要になることがあります。
==== 関数内のライフタイム ====
:<syntaxhighlight lang=rust copy>
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
</syntaxhighlight>
この例では、<code>longest</code>関数は2つの文字列スライスを引数として受け取り、それらのうち長さが長い方の参照を返します。<code>'a</code>はライフタイムパラメータであり、2つの引数と返り値の参照のライフタイムが同じことを示しています。これにより、返される参照が有効なスコープを保証します。
==== ライフタイムの省略 ====
Rustでは、ライフタイムの省略規則があります。特定のパターンにおいては、コンパイラが暗黙的にライフタイムを推論することができます。例えば、次のような関数シグネチャではライフタイムの省略が行われます。
:<syntaxhighlight lang=rust copy>
fn longest(x: &str, y: &str) -> &str {
// ...
}
</syntaxhighlight>
このような場合、コンパイラは適切なライフタイムを自動的に推論します。ただし、ライフタイムの省略は特定の条件に限定され、全ての場面で使えるわけではありません。
ライフタイムは主に、参照の有効期間を指定するために使用され、特に関数内で参照を扱う際に重要な役割を果たします。関数が複数の参照を扱い、それらの有効期間を整理する必要がある場合には、ライフタイムの指定が必要になることがあります。
=== クロージャ: ===
Rustではクロージャも関数として扱われます。クロージャは自身のスコープ外の変数をキャプチャして利用できます。これは非常に便利で、関数よりも柔軟な振る舞いを提供します。
次のコード例では、クロージャと関数の組み合わせを使って、外部スコープの変数をキャプチャして利用する方法を示します。
:<syntaxhighlight lang=rust copy>
fn main() {
let base_number = 10;
// クロージャの定義
let add_to_base = |x| x + base_number;
let new_number = 7;
// クロージャの使用
let result = add_to_base(new_number);
println!("Result: {}", result); // "Result: 17"が出力される
}
</syntaxhighlight>
この例では、<code>base_number</code>という変数が<code>add_to_base</code>クロージャにキャプチャされ、後でクロージャ内で使用されています。クロージャは外部の変数をキャプチャすることができ、そのコンテキストを保持して使用できる点が関数とは異なる特徴です。
Rustの関数は、パターンマッチングやジェネリクス、ライフタイム、クロージャなどの機能と組み合わせて、安全で効率的なコードを記述するための強力なツールです。
== 高階関数 ==
Rustは、関数型プログラミングの要素を備えた汎用プログラミング言語です。Rustでは、関数を変数やデータ構造に格納したり、関数を関数のパラメータとして渡したりすることができます。これらの機能は、高階関数として知られています。
Rustで高階関数を使用すると、コードの再利用性と保守性を向上させることができます。また、コードをより簡潔で読みやすくすることもできます。
Rustで高階関数を使用する方法はいくつかあります。
=== 関数を変数に格納する ===
Rustでは、関数を変数に格納することができます。これにより、関数を繰り返し使用したり、関数を別の関数に渡したりすることができます。
:<syntaxhighlight lang=rust copy>
fn square(x: i32) -> i32 {
x * x
}
let square_function = square;
println!("The square of 5 is {}", square_function(5));
</syntaxhighlight>
このコードでは、square()関数をsquare_function変数に格納しています。その後、square_function()関数を呼び出すことで、square()関数と同じ結果を得ることができます。
=== 関数を関数のパラメータとして渡す ===
Rustでは、関数を関数のパラメータとして渡すことができます。これにより、関数を別の関数に処理させることができます。
:<syntaxhighlight lang=rust copy>
fn map_numbers(numbers: &[i32], f: fn(i32) -> i32) -> Vec<i32> {
let mut result = Vec::new();
for number in numbers {
result.push(f(number));
}
result
}
fn square(x: i32) -> i32 {
x * x
}
let numbers = [1, 2, 3, 4, 5];
let squared_numbers = map_numbers(numbers, square);
println!("The squared numbers are: {:?}", squared_numbers);
</syntaxhighlight>
このコードでは、map_numbers()関数は、numbers配列の各要素をf関数に渡し、その結果を新しい配列に格納します。
=== クロージャを使用する ===
Rustでは、クロージャを使用して高階関数を作成することができます。クロージャは、関数本体の一部として定義された関数です。クロージャは、変数やデータ構造を捕捉して、関数本体内で使用することができます。
:<syntaxhighlight lang=rust copy>
fn filter_numbers(numbers: &[i32], f: impl Fn(i32) -> bool) -> Vec<i32> {
let mut result = Vec::new();
for number in numbers {
if f(number) {
result.push(number);
}
}
result
}
fn is_even(x: i32) -> bool {
x % 2 == 0
}
let numbers = [1, 2, 3, 4, 5];
let even_numbers = filter_numbers(numbers, is_even);
println!("The even numbers are: {:?}", even_numbers);
</syntaxhighlight>
このコードでは、filter_numbers()関数は、numbers配列の各要素をfクロージャに渡し、その結果がtrueである場合、その要素を新しい配列に格納します。
Rustで高階関数を使用すると、コードの再利用性と保守性を向上させることができます。また、コードをより簡潔で読みやすくすることもできます。
== 標準ライブラリー ==
Rustの標準ライブラリー(Standard Library)は、Rustコンパイラにバンドルされており、基本的なデータ構造、OSとのやり取り、スレッド、ファイルI/O、ネットワーキングなどの多くの機能を提供しています。以下に、標準ライブラリーの主要なカテゴリを紹介します。
=== コレクション(Collections) ===
* <code>Vec</code>, <code>VecDeque</code>: ベクターや双方向キューなどの動的な配列。
* <code>HashMap</code>, <code>BTreeMap</code>: ハッシュマップやBツリーマップなどのキーと値のペアを保持するマップ。
* <code>HashSet</code>, <code>BTreeSet</code>: ハッシュセットやBツリーセットなどのユニークな値を保持するセット。
=== スレッドと同期(Concurrency) ===
* <code>std::thread</code>: スレッドの生成と操作を提供。
* <code>std::sync</code>: Mutex、Atomicなどの同期機能を提供するモジュール。
=== ファイルI/Oとネットワーキング(I/O and Networking) ===
* <code>std::fs</code>: ファイルシステムとの相互作用を可能にするモジュール。
* <code>std::net</code>: ネットワーキングのためのモジュール。
=== プリミティブ型(Primitive Types) ===
* <code>std::primitive</code>: Rustのプリミティブ型(整数、浮動小数点数など)の機能を提供。
=== OS相互作用とその他(OS Interactions and Miscellaneous) ===
* <code>std::env</code>: 環境変数の取得などのOS環境に関する操作。
* <code>std::time</code>: 時間に関する機能を提供。
=== 入出力(Input/Output) ===
* <code>std::io</code>: 標準入出力やバッファリング、ファイルI/OなどのI/O操作を提供。
=== 文字列処理(String Manipulation) ===
* <code>std::str</code>: 文字列の操作、変換、検索などの機能を提供。
=== メモリ管理(Memory Management) ===
* <code>std::alloc</code>: メモリの割り当てと解放のための機能。
=== コンパイラ支援(Compiler Support) ===
* <code>std::marker</code>: マーカートレイトを提供し、コンパイラへのヒントを与える。
これらは標準ライブラリーの一部であり、Rustの基本的な機能を提供しています。開発者はこれらのモジュールや機能を組み合わせて、安全で効率的なプログラムを構築できます。
== コードギャラリー ==
このコードギャラリーは、さまざまなRustの機能やパターン、ベストプラクティスを示すためのサンプルコード集です。
=== エラトステネスの篩 ===
:<syntaxhighlight lang=rust copy>
fn eratosthenes(n: usize) {
let mut sieve = vec![true; n + 1];
sieve[0] = false;
sieve[1] = false;
for i in 2..=n {
if sieve[i] {
// jをi*iから始める
for j in (i * i..=n).step_by(i) {
sieve[j] = false;
}
}
if i * i >= n {
break;
}
}
for i in 2..=n {
if sieve[i] {
println!("{}", i);
}
}
}
fn main() {
eratosthenes(100);
}
</syntaxhighlight>
このRustのコードは、エラトステネスの篩を使用して与えられた範囲内の素数を見つけるものです。
# <code>eratosthenes</code> 関数は、与えられた <code>n</code> までの素数を見つけるためのエラトステネスの篩アルゴリズムを実装しています。このアルゴリズムでは、最初に <code>n + 1</code> サイズの <code>sieve</code> というブール型の配列を作成します。この配列は、各インデックスが素数かどうかを示します。
# <code>sieve[0]</code> と <code>sieve[1]</code> は素数ではないので、それらを <code>false</code> に設定します。
# 2 から <code>n</code> までの各数について、その数が素数である場合は、その数の倍数を素数ではないとマークします。これにより、素数の倍数を持つ数は素数ではないことがわかります。
# <code>main</code> 関数では、<code>eratosthenes</code> 関数を呼び出し、100までの素数を見つけます。見つかった素数は画面に出力されます。
このアルゴリズムは素数を見つけるための効率的な方法の一つであり、与えられた範囲内の素数を見つけることができます。
=== 最大公約数と最小公倍数 ===
:<syntaxhighlight lang=rust copy>
fn gcd2(m: i32, n: i32) -> i32 {
if n == 0 {
m
} else {
gcd2(n, m % n)
}
}
fn gcd(ints: &[i32]) -> i32 {
ints.iter().cloned().fold(ints[0], gcd2)
}
fn lcm2(m: i32, n: i32) -> i32 {
m * n / gcd2(m, n)
}
fn lcm(ints: &[i32]) -> i32 {
ints.iter().cloned().fold(ints[0], lcm2)
}
fn main() {
println!("gcd2(30, 45) => {}", gcd2(30, 45));
println!("gcd(&[30, 72, 12]) => {}", gcd(&[30, 72, 12]));
println!("lcm2(30, 72) => {}", lcm2(30, 72));
println!("lcm(&[30, 42, 72]) => {}", lcm(&[30, 42, 72]));
}
</syntaxhighlight>
このコードは高階関数を利用しています。<code>fold</code>関数は特に重要で、与えられた配列内の要素に対して特定の操作を順番に適用することができます。
まず、<code>gcd</code>関数では、<code>ints</code>配列内の要素に対して<code>fold</code>関数を使って最大公約数(<code>gcd2</code>関数)を計算しています。<code>fold</code>は初期値として<code>ints[0]</code>を受け取り、各要素<code>value</code>に対して<code>gcd2</code>を適用し、次の要素に対して再帰的に<code>gcd2</code>を適用します。これにより、配列内のすべての要素の最大公約数が計算されます。
同様に、<code>lcm</code>関数も<code>fold</code>を利用しています。ここでは<code>lcm2</code>関数が利用され、各要素に対して最小公倍数を求めるための計算が行われます。
高階関数の利用により、配列内の要素に対して繰り返し処理を行う必要がある場合でも、シンプルで効率的なコードを書くことができます。
=== 二分法 ===
[[W:二分法|二分法]]
:<syntaxhighlight lang=rust copy>
fn bisection(low: f64, high: f64, f: impl Fn(f64) -> f64) -> f64 {
let x = (low + high) / 2.0;
let fx = f(x);
match () {
_ if (fx.abs() - 1.0e-10) < f64::EPSILON => x,
_ if fx < 0.0 => bisection(x, high, f),
_ => bisection(low, x, f),
}
}
fn main() {
let result1 = bisection(0.0, 3.0, |x| x - 1.0);
println!("{}", result1);
let result2 = bisection(0.0, 3.0, |x| x * x - 1.0);
println!("{}", result2);
}
</syntaxhighlight>
: [[旧課程(-2012年度)高等学校数学B/数値計算とコンピューター#2分法]]の例を Rust に移植しました。
このRustのコードは、二分法(bisection method)を使って与えられた関数の根を見つけるものです。
<code>bisection</code>関数は、<code>low</code>から<code>high</code>の範囲で与えられた関数 <code>f</code> の根を探します。<code>f</code> は <code>Fn(f64) -> f64</code> のトレイトを実装しており、実際の関数の定義は呼び出し時に与えられます。
この関数は再帰的に呼び出されます。与えられた区間 <code>[low, high]</code> の中央値 <code>x</code> を求め、その点での関数の値 <code>f(x)</code> を計算します。この値が非常に小さいか(ここでは <code>1.0e-10</code>未満)、または非常に近い数になるまで <code>low</code> または <code>high</code> を更新して、区間を狭めていきます。
<code>main</code>関数では、2つの異なる関数 <code>x - 1</code> と <code>x^2 - 1</code> に対して <code>bisection</code> 関数を呼び出して、それぞれの関数の根を探し、<code>println!</code> マクロを使って根を表示しています。
=== 構造体とメソッド ===
Rustにクラスはありませんが、構造体がメソッドを持つことが出来ます。
:<syntaxhighlight lang=rust copy>
#[derive(Debug)]
struct Hello {
s: String,
}
impl Hello {
fn new(s: &str) -> Hello {
// 空文字列の場合は "world" を使用
let s = if s.is_empty() { "world" } else { s };
Hello { s: s.to_string() }
}
fn to_string(&self) -> String {
format!("Hello {}!", self.s)
}
fn print(&self) {
println!("{}", self.to_string()); // 直接to_stringを呼び出す
}
}
fn main() {
let hello1 = Hello::new("");
hello1.print(); // to_string()を呼ぶ必要がなくなる
let hello2 = Hello::new("my friend");
hello2.print(); // 同上
println!(
"Hello.constructor.name => Hello\nhello1 => {:?}\nhello2.s => {}",
hello1, hello2.s
);
}
</syntaxhighlight>
このRustのコードは、<code>Hello</code>という名前の構造体を定義し、その構造体に関連するメソッドや、<code>main()</code>関数を含んでいます。
まず、<code>Hello</code>構造体は<code>String</code>型の<code>s</code>フィールドを持っています。<code>#[derive(Debug)]</code>アトリビュートは、この構造体に<code>Debug</code>トレイトを自動的に実装するようコンパイラに指示しています。<code>Debug</code>トレイトを実装することで、デバッグ目的で構造体の内容を出力できるようになります。
<code>impl Hello</code>ブロックでは、<code>Hello</code>構造体に対するメソッドが定義されています。
* <code>new</code>メソッドは、引数として文字列を受け取り、それが空文字列の場合はデフォルトの文字列 "world" を持つ<code>Hello</code>構造体を生成します。それ以外の場合は、引数で渡された文字列を使用して<code>Hello</code>構造体を作成します。
* <code>to_string</code>メソッドは、<code>Hello</code>構造体のインスタンスに対して、挨拶文を含む文字列を生成します。
* <code>print</code>メソッドは、<code>Hello</code>構造体のインスタンスの<code>s</code>フィールド(挨拶文)を標準出力に表示します。
<code>main()</code>関数では、<code>Hello</code>構造体を使ってインスタンスを生成し、メソッドを呼び出しています。<code>println!</code>マクロを使用して、構造体やそのフィールドをデバッグ出力しています。最後の<code>println!</code>マクロでは、<code>hello1</code>のデバッグ表示(<code>{:?}</code>)と<code>hello2</code>の<code>s</code>フィールドを出力しています。
=== 構造体とメソッド(2) ===
[[Go/メソッドとインターフェース]]からの移植です。
:<syntaxhighlight lang=go>
use std::f64::consts::PI;
#[derive(Debug)]
struct GeoCoord {
longitude: f64,
latitude: f64,
}
impl GeoCoord {
/// 地球の半径(キロメートル)
const EARTH_RADIUS: f64 = 6371.008;
/// 緯度・経度をラジアンに変換するための係数
const RADIAN_CONVERSION: f64 = PI / 180.0;
/// 2つの地理座標間の距離を計算する
fn distance(&self, other: &GeoCoord) -> f64 {
let lat_i = self.latitude * Self::RADIAN_CONVERSION;
let other_lat_i = other.latitude * Self::RADIAN_CONVERSION;
let long_diff_i = (self.longitude - other.longitude) * Self::RADIAN_CONVERSION;
let sin_lat = f64::sin(lat_i) * f64::sin(other_lat_i);
let cos_lat = f64::cos(lat_i) * f64::cos(other_lat_i);
let cos_long_diff = f64::cos(long_diff_i);
let distance = f64::acos(sin_lat + cos_lat * cos_long_diff) * Self::EARTH_RADIUS;
distance
}
}
impl std::fmt::Display for GeoCoord {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let (ew, ns, long, lat) = format_coordinates(self.longitude, self.latitude);
write!(f, "({}: {:.6}, {}: {:.6})", ew, long, ns, lat)
}
}
/// 緯度・経度の値を適切にフォーマットする関数
fn format_coordinates(longitude: f64, latitude: f64) -> (&'static str, &'static str, f64, f64) {
let (ew, long) = if longitude < 0.0 {
("西経", -longitude)
} else {
("東経", longitude)
};
let (ns, lat) = if latitude < 0.0 {
("南緯", -latitude)
} else {
("北緯", latitude)
};
(ew, ns, long, lat)
}
fn main() {
let sites = vec![
("東京駅", GeoCoord { longitude: 139.7673068, latitude: 35.6809591 }),
("シドニー・オペラハウス", GeoCoord { longitude: 151.215278, latitude: -33.856778 }),
("グリニッジ天文台", GeoCoord { longitude: -0.0014, latitude: 51.4778 }),
];
for (name, gc) in &sites {
println!("{}: {}", name, gc);
}
for i in 0..sites.len() {
let current_site = &sites[i];
let next_site = &sites[(i + 1) % sites.len()];
println!(
"{} - {}: {:.2} [km]",
current_site.0,
next_site.0,
current_site.1.distance(&next_site.1)
);
}
}
</syntaxhighlight>
=== 逆ポーランド記法の解析と評価 ===
{{先頭に戻る|title=コード・ギャラリーに戻る|label=コードギャラリー|style=border-top:1px solid gray;}}
逆ポーランド記法は、数式の演算子を後置記法で表現する方法です。通常の中置記法では演算子がオペランドの間に置かれますが、逆ポーランド記法では演算子がオペランドの後ろに置かれます。これにより、括弧や演算子の優先順位を考える必要がなくなり、計算機で容易に評価できる形式になります。
例えば、中置記法での式 <code>3 + 4 * 5</code> は、逆ポーランド記法では <code>3 4 5 * +</code> と表現されます。この記法では、演算子が対象のオペランドに対して順番に適用されます。
:<syntaxhighlight lang=rust copy>
enum Token {
Add,
Sub,
Mul,
Div,
Operand(i32),
}
impl Token {
fn evaluate(&self, stack: &mut Vec<i32>) -> Result<(), &'static str> {
match self {
Token::Add | Token::Sub | Token::Mul | Token::Div => {
if stack.len() < 2 {
return Err("Invalid expression: not enough operands for operator");
}
let operand2 = stack.pop().unwrap();
let operand1 = stack.pop().unwrap();
match self {
Token::Add => stack.push(operand1 + operand2),
Token::Sub => stack.push(operand1 - operand2),
Token::Mul => stack.push(operand1 * operand2),
Token::Div => {
if operand2 == 0 {
return Err("Division by zero");
}
stack.push(operand1 / operand2);
}
_ => unreachable!(),
}
}
Token::Operand(num) => {
stack.push(*num);
}
}
Ok(())
}
}
fn evaluate_expression(expression: &str) -> Result<i32, &'static str> {
let mut stack: Vec<i32> = Vec::new();
let tokens: Vec<Token> = expression
.split_whitespace()
.map(|token| {
if let Ok(parsed_num) = token.parse::<i32>() {
Token::Operand(parsed_num)
} else {
match token {
"+" => Token::Add,
"-" => Token::Sub,
"*" => Token::Mul,
"/" => Token::Div,
_ => unreachable!(),
}
}
})
.collect();
for token in tokens {
if let Err(err) = token.evaluate(&mut stack) {
return Err(err);
}
}
if stack.len() != 1 {
return Err("Invalid expression: too many operands or operators");
}
Ok(stack[0])
}
fn main() {
let expression = "5 3 2 * + 8 2 / -";
match evaluate_expression(expression) {
Ok(result) => println!("Result: {}", result),
Err(err) => println!("Error: {}", err),
}
}
</syntaxhighlight>
このコードは、<code>Token</code>という列挙型を使って逆ポーランド記法の式を評価する関数を実装しています。
まず、<code>Token</code>は<code>Add</code>、<code>Sub</code>、<code>Mul</code>、<code>Div</code>、<code>Operand</code>の5つのバリアントを持ちます。<code>Operand</code>は整数値を保持します。
<code>Token</code>には<code>evaluate</code>というメソッドが実装されています。このメソッドでは、<code>Token</code>の各バリアントに対する処理が行われます。<code>Add</code>、<code>Sub</code>、<code>Mul</code>、<code>Div</code>の場合は、スタックから2つの値を取り出して、それらを演算し結果をスタックに積みます。<code>Operand</code>の場合は、その値をスタックに積みます。
<code>evaluate_expression</code>関数では、与えられた式をトークン化して<code>Token</code>のベクターに変換し、それぞれのトークンに対して<code>evaluate</code>メソッドを実行します。各トークンの評価においてエラーが発生した場合、そのエラーメッセージが直ちに返されます。最終的に、スタックに残った値が1つでない場合もエラーが返されます。
<code>main</code>関数では、<code>evaluate_expression</code>の結果に応じて結果を出力するか、エラーを表示します。これにより、逆ポーランド記法の式を評価し、正常な結果またはエラーメッセージを表示できます。
=== 式を逆ポーランド記法に変換する(手書き) ===
{{先頭に戻る|title=コード・ギャラリーに戻る|label=コードギャラリー|style=border-top:1px solid gray;}}
:<syntaxhighlight lang=rust copy>
#[derive(Debug, Clone, Copy)]
enum Token {
Number(i32),
Plus,
Minus,
Multiply,
Divide,
}
fn main() {
let input = "12+34*56/78";
let tokens = parse_input(input);
let rpn = infix_to_rpn(tokens);
println!("{:?}", rpn);
}
fn parse_input(input: &str) -> Vec<Token> {
let mut tokens = Vec::new();
let mut num = String::new();
for c in input.chars() {
match c {
'0'..='9' => num.push(c), // 数字を収集
'+' | '-' | '*' | '/' => {
if !num.is_empty() {
let n = num.parse().unwrap();
tokens.push(Token::Number(n)); // 数字をトークンに追加
num.clear(); // 数字をリセット
}
// 演算子をトークンに追加
match c {
'+' => tokens.push(Token::Plus),
'-' => tokens.push(Token::Minus),
'*' => tokens.push(Token::Multiply),
'/' => tokens.push(Token::Divide),
_ => unreachable!(),
}
}
_ => panic!("Invalid character in input!"), // 無効な文字の場合
}
}
// 最後の数値をトークンに追加
if !num.is_empty() {
let n = num.parse().unwrap();
tokens.push(Token::Number(n));
}
tokens
}
fn infix_to_rpn(tokens: Vec<Token>) -> Vec<Token> {
let mut rpn = Vec::new();
let mut stack = Vec::new();
for token in tokens {
match token {
Token::Number(_) => rpn.push(token), // 数字はそのままRPNに追加
Token::Plus | Token::Minus | Token::Multiply | Token::Divide => {
while let Some(&top) = stack.last() {
if precedence(&token) <= precedence(&top) {
rpn.push(stack.pop().unwrap()); // 優先順位が高い演算子を出力
} else {
break; // 自分より優先順位が低い演算子が来たら中断
}
}
stack.push(token); // 演算子をスタックに追加
}
}
}
// スタックに残った演算子を全てRPNに追加
while let Some(op) = stack.pop() {
rpn.push(op);
}
rpn
}
fn precedence(token: &Token) -> i32 {
match token {
Token::Multiply | Token::Divide => 2,
Token::Plus | Token::Minus => 1,
_ => 0,
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
[Number(12), Number(34), Number(56), Multiply, Number(78), Divide, Plus]
</syntaxhighlight>
このコードは、与えられた文字列を逆ポーランド記法(RPN)に変換するプログラムです。以下にその構造を解説します:
# <code>Token</code> 列挙型: 数字と演算子を表す列挙型です。<code>Number</code> は数字を、<code>Plus</code>, <code>Minus</code>, <code>Multiply</code>, <code>Divide</code> はそれぞれ演算子を表します。<code>derive(Debug, Clone, Copy)</code> が付与されており、デバッグ表示やクローン、コピーが可能です。
# <code>parse_input</code> 関数: 与えられた文字列をトークンに分割します。数字の場合は文字列を数値に変換して <code>Token::Number</code> に、演算子の場合は対応する <code>Token</code> に変換し、それらを <code>Vec<Token></code> に収集します。
# <code>infix_to_rpn</code> 関数: 中置記法のトークンのベクターを逆ポーランド記法に変換します。スタックとRPNベクターを使用して、トークンを処理します。演算子の場合、スタックのトップとの優先順位を比較して、適切な順序でRPNに追加します。
# <code>precedence</code> 関数: 演算子の優先順位を返します。乗算と除算が優先され、それ以外の演算子は同じ優先順位です。
このコードは、入力された文字列を数値と演算子に分割し、それらを逆ポーランド記法に変換する機能を持っています。特定の演算子の優先順位を考慮しながら適切な順序で演算子を配置し、RPNを生成します。
=== 式を逆ポーランド記法に変換する(手書き:別解:再帰下降パーサー) ===
{{先頭に戻る|title=コード・ギャラリーに戻る|label=コードギャラリー|style=border-top:1px solid gray;}}
:<syntaxhighlight lang=rust copy>
#[derive(Debug, Clone, PartialEq)] // Cloneトレイトを追加
enum Token {
Number(f64),
Plus,
Minus,
Multiply,
Divide,
LParen,
RParen,
EOF,
}
struct Lexer<'a> {
input: &'a str,
position: usize,
}
impl<'a> Lexer<'a> {
fn new(input: &'a str) -> Lexer<'a> {
Lexer { input, position: 0 }
}
// 空白をスキップする
fn skip_whitespace(&mut self) {
while self.position < self.input.len() && self.input.chars().nth(self.position).unwrap().is_whitespace() {
self.position += 1;
}
}
// 次のトークンを取得する
fn next_token(&mut self) -> Token {
self.skip_whitespace();
if self.position >= self.input.len() {
return Token::EOF;
}
let current_char = self.input.chars().nth(self.position).unwrap();
self.position += 1; // 次の位置に進める
match current_char {
'+' => Token::Plus,
'-' => Token::Minus,
'*' => Token::Multiply,
'/' => Token::Divide,
'(' => Token::LParen,
')' => Token::RParen,
_ if current_char.is_digit(10) || current_char == '.' => {
let start = self.position - 1; // トークンの開始位置
while self.position < self.input.len() && (self.input.chars().nth(self.position).unwrap().is_digit(10) || self.input.chars().nth(self.position).unwrap() == '.') {
self.position += 1;
}
let number_str = &self.input[start..self.position];
Token::Number(number_str.parse::<f64>().unwrap())
}
_ => panic!("Invalid character found: {}", current_char),
}
}
}
struct Parser<'a> {
lexer: Lexer<'a>,
current_token: Token,
}
impl<'a> Parser<'a> {
fn new(mut lexer: Lexer<'a>) -> Parser<'a> {
let current_token = lexer.next_token();
Parser { lexer, current_token }
}
// トークンを消費する
fn eat(&mut self, token: Token) {
if self.current_token == token {
self.current_token = self.lexer.next_token();
} else {
panic!("Invalid syntax");
}
}
// 項を解析する
fn factor(&mut self) -> Vec<Token> {
match self.current_token {
Token::Number(num) => {
self.eat(Token::Number(num));
vec![Token::Number(num)]
}
Token::LParen => {
self.eat(Token::LParen);
let result = self.expr();
self.eat(Token::RParen);
result
}
_ => panic!("Invalid syntax"),
}
}
// 積項を解析する
fn term(&mut self) -> Vec<Token> {
let mut result = self.factor();
while matches!(self.current_token, Token::Multiply | Token::Divide) {
let op = self.current_token.clone();
self.eat(op.clone());
let mut next_factor = self.factor();
result.append(&mut next_factor);
result.push(op);
}
result
}
// 式を解析する
fn expr(&mut self) -> Vec<Token> {
let mut result = self.term();
while matches!(self.current_token, Token::Plus | Token::Minus) {
let op = self.current_token.clone();
self.eat(op.clone());
let mut next_term = self.term();
result.append(&mut next_term);
result.push(op);
}
result
}
}
// 逆ポーランド記法を生成する関数
fn generate_reverse_polish_notation(input: &str) -> Vec<Token> {
let lexer = Lexer::new(input);
let mut parser = Parser::new(lexer);
parser.expr()
}
fn main() {
let result = generate_reverse_polish_notation("12 + 34 * 56 / 78");
println!("{:?}", result);
}
</syntaxhighlight>
コードは、与えられた数式を逆ポーランド記法に変換するためのプログラムです。ここでは、Lexer(字句解析器)とParser(構文解析器)という2つの主要な構成要素があります。
; Token
: <code>Token</code> 列挙型は、数式をトークンに分割するために使用されます。数字、演算子、および括弧のトークンを定義します。
; Lexer
: <code>Lexer</code> は、与えられた数式文字列をトークンに分割する役割を担います。<code>next_token</code> メソッドは、数式の文字列を走査して、各文字がどの種類のトークンに対応するかを判断します。
; Parser
: <code>Parser</code> は、Lexer によって生成されたトークンのストリームを受け取り、逆ポーランド表記に変換します。再帰的に式を解析し、優先順位を考慮しながら、逆ポーランド表記のトークン列を生成します。
:* <code>factor()</code> メソッドは、数または括弧で始まる要素(ファクター)を解析します。
:* <code>term()</code> メソッドは、乗算と除算の演算子を解析します。
:* <code>expr()</code> メソッドは、加算と減算の演算子を解析します。
; generate_reverse_polish_notation 関数
: この関数は、与えられた数式文字列を逆ポーランド表記に変換します。Lexer を使ってトークンに分割し、Parser を使って逆ポーランド表記のトークン列を生成します。
; main 関数
: <code>generate_reverse_polish_notation</code> を使って、指定された式を逆ポーランド表記で出力します。
逆ポーランド記法は、演算子がオペランドの後ろに置かれるので、式を解析してトークン列に変換することで、演算の優先順位を反映した形で数式を表現することができます。
----
これらのコードは、与えられた数学式を逆ポーランド記法(Reverse Polish Notation, RPN)に変換する方法を示していますが、アプローチが異なります。
1番目のコードは、文字列を直接解析してトークンに分割し、その後逆ポーランド記法に変換しています。一方、2番目のコードは、字句解析器(lexer)とパーサー(parser)を使用して、トークンに分割し、その後パースして逆ポーランド記法に変換しています。
1番目のコードは、基本的な数値と演算子の処理に集中しています。一方で、2番目のコードは字句解析や構文解析の段階を厳密に分離しています。また、2番目のコードは小数点もサポートしており、より柔軟な数値表現を可能にしています。
どちらのコードも同じ目的を果たしていますが、アプローチの違いが見られます。1番目のコードはシンプルで直感的ですが、拡張性に欠けるかもしれません。
一方で、2番目のコードはより複雑ですが、より柔軟で拡張性があります。それぞれのコードには長所と短所がありますが、どちらも与えられた数式を逆ポーランド記法に変換する点では同等の結果を提供します。実際には2番めのコードは不動小数点数やカッコに対応しています。
=== 式を逆ポーランド記法に変換する(nom版) ===
{{先頭に戻る|title=コード・ギャラリーに戻る|label=コードギャラリー|style=border-top:1px solid gray;}}
:<syntaxhighlight lang=rust copy>
use nom::character::complete::{char, digit1};
use nom::combinator::map;
use nom::multi::many0;
use nom::sequence::delimited;
use nom::IResult;
#[derive(Debug, Clone, Copy)]
enum Token {
Number(i32),
Plus,
Minus,
Multiply,
Divide,
}
fn main() {
let input = "12+34*56/78";
let (_, tokens) = parse_input(input).unwrap();
let rpn = infix_to_rpn(tokens);
println!("{:?}", rpn);
}
fn parse_input(input: &str) -> IResult<&str, Vec<Token>> {
many0(parse_token)(input)
}
fn parse_token(input: &str) -> IResult<&str, Token> {
let (input, token) = delimited(
nom::character::complete::space0,
nom::branch::alt((
map(digit1, |s: &str| Token::Number(s.parse().unwrap())),
map(char('+'), |_| Token::Plus),
map(char('-'), |_| Token::Minus),
map(char('*'), |_| Token::Multiply),
map(char('/'), |_| Token::Divide),
)),
nom::character::complete::space0,
)(input)?;
Ok((input, token))
}
fn infix_to_rpn(tokens: Vec<Token>) -> Vec<Token> {
let mut rpn = Vec::new();
let mut stack = Vec::new();
for token in tokens {
match token {
Token::Number(_) => rpn.push(token),
Token::Plus | Token::Minus | Token::Multiply | Token::Divide => {
while let Some(top) = stack.last().copied() {
if precedence(&token) <= precedence(&top) {
rpn.push(stack.pop().unwrap());
} else {
break;
}
}
stack.push(token);
}
}
}
while let Some(op) = stack.pop() {
rpn.push(op);
}
rpn
}
fn precedence(token: &Token) -> i32 {
match token {
Token::Multiply | Token::Divide => 2,
Token::Plus | Token::Minus => 1,
_ => 0,
}
}
</syntaxhighlight>
このコードは、<code>nom</code>というパーサーコンビネータライブラリを使用して、与えられた文字列を解析し、トークンに分割する機能を持っています。前のコードと比較してみましょう。
# <code>parse_input</code> 関数: <code>many0</code>コンビネータを使って、<code>parse_token</code>を繰り返し適用し、入力文字列をトークンのベクターに変換します。<code>IResult</code>型を返します。
# <code>parse_token</code> 関数: <code>delimited</code>コンビネータを使用してトークンの前後のスペースを処理し、与えられた文字列を様々なルールにマッチングさせます。数字、演算子それぞれのパースを行い、<code>Token</code>列挙型のトークンを返します。
# <code>infix_to_rpn</code> 関数: 前のコードと同じですが、与えられたトークンのベクターを逆ポーランド記法に変換する機能を持っています。
このコードは、<code>nom</code>を使ってトークン分割を行い、より柔軟なパースを可能にしています。<code>nom</code>を使用することで、トークンのパースやスペースの処理など、より複雑なルールを柔軟に記述できるようになります。
=== 複素数式評価器 ===
{{先頭に戻る|title=コード・ギャラリーに戻る|label=コードギャラリー|style=border-top:1px solid gray;}}
:<syntaxhighlight lang=rust copy>
extern crate num_complex;
use num_complex::Complex;
#[derive(Debug, PartialEq, Clone)]
enum Token {
Number(Complex<f64>),
Plus,
Minus,
Multiply,
Divide,
LParen,
RParen,
EOF,
}
struct Lexer<'a> {
input: &'a str,
position: usize,
}
impl<'a> Lexer<'a> {
fn new(input: &'a str) -> Lexer<'a> {
Lexer { input, position: 0 }
}
fn skip_whitespace(&mut self) {
while self.position < self.input.len() && self.input.chars().nth(self.position).unwrap().is_whitespace() {
self.position += 1;
}
}
fn next_token(&mut self) -> Token {
self.skip_whitespace();
if self.position >= self.input.len() {
return Token::EOF;
}
let current_char = self.input.chars().nth(self.position).unwrap();
match current_char {
'+' => {
self.position += 1;
Token::Plus
}
'-' => {
self.position += 1;
Token::Minus
}
'*' => {
self.position += 1;
Token::Multiply
}
'/' => {
self.position += 1;
Token::Divide
}
'(' => {
self.position += 1;
Token::LParen
}
')' => {
self.position += 1;
Token::RParen
}
'i' => {
self.position += 1;
Token::Number(Complex::new(0.0, 1.0))
}
_ if current_char.is_digit(10) || current_char == '.' => {
let start = self.position;
while self.position < self.input.len()
&& (self.input.chars().nth(self.position).unwrap().is_digit(10)
|| self.input.chars().nth(self.position).unwrap() == '.')
{
self.position += 1;
}
let number_str = &self.input[start..self.position];
let number = number_str.parse::<f64>().unwrap();
if let Some('i') = self.input.chars().nth(self.position) {
self.position += 1;
Token::Number(Complex::new(0.0, number))
} else {
Token::Number(Complex::new(number, 0.0))
}
}
_ => panic!("Invalid character found: {}", current_char),
}
}
}
struct Parser<'a> {
lexer: Lexer<'a>,
current_token: Token,
}
impl<'a> Parser<'a> {
fn new(mut lexer: Lexer<'a>) -> Parser<'a> {
let current_token = lexer.next_token();
Parser { lexer, current_token }
}
fn eat(&mut self, token: Token) {
if self.current_token == token {
self.current_token = self.lexer.next_token();
} else {
panic!("Invalid syntax");
}
}
fn factor(&mut self) -> Complex<f64> {
let token = self.current_token.clone();
match token {
Token::Number(num) => {
self.eat(Token::Number(num));
num
}
Token::LParen => {
self.eat(Token::LParen);
let result = self.expr();
self.eat(Token::RParen);
result
}
_ => panic!("Invalid syntax"),
}
}
fn term(&mut self) -> Complex<f64> {
let mut result = self.factor();
while vec![Token::Multiply, Token::Divide].contains(&self.current_token) {
let token = self.current_token.clone();
match token {
Token::Multiply => {
self.eat(Token::Multiply);
let next_factor = self.factor();
result = result * next_factor;
}
Token::Divide => {
self.eat(Token::Divide);
let next_factor = self.factor();
result = result / next_factor;
}
_ => panic!("Invalid syntax"),
}
}
result
}
fn expr(&mut self) -> Complex<f64> {
let mut result = self.term();
while vec![Token::Plus, Token::Minus].contains(&self.current_token) {
let token = self.current_token.clone();
match token {
Token::Plus => {
self.eat(Token::Plus);
let next_term = self.term();
result = result + next_term;
}
Token::Minus => {
self.eat(Token::Minus);
let next_term = self.term();
result = result - next_term;
}
_ => panic!("Invalid syntax"),
}
}
result
}
}
fn main() {
let lexer = Lexer::new("(2+ 3i)*4i");
let mut parser = Parser::new(lexer);
let result = parser.expr();
println!("{:?}", result);
}
</syntaxhighlight>
このコードは、数式をパースして複素数を計算する簡単な計算機の基本的な実装です。Rustの機能を活用して、トークン列を生成するLexerと、そのトークン列を解析して計算を行うParserを定義しています。
<code>Token</code>は、パーサーが認識するトークンの種類を表すenumです。<code>Lexer</code>は文字列を受け取り、その文字列をトークンに分割する役割を果たします。各トークンは、演算子や数値、括弧などを表現しています。<code>Parser</code>は、Lexerが生成したトークン列を受け取り、それを解析して数式を計算します。
<code>Lexer</code>は空白をスキップし、文字列を一文字ずつ見ていき、トークン列を生成します。<code>Parser</code>はトークン列を再帰的に解析し、四則演算を行って複素数を計算します。演算子の優先順位や括弧の処理も考慮されています。
このコードは、入力文字列 <code>(2+ 3i)*4i</code> を受け取り、それを計算して結果を表示します。各段階でトークンが正しく識別され、演算子や数値が正しく解釈されることを期待しています。
コード内のパニックは、予期しないトークンや構文エラーがあった場合に発生します。これらのエラーは、コードが期待する形式に文字列が合致しなかった場合に発生します。
このコードを用いると、複雑な数式も計算できますが、入力の検証やエラー処理についてはまだ改善の余地があります。
=== 複素数 ===
:<syntaxhighlight lang=rust copy>
extern crate num_complex;
use num_complex::Complex;
fn main() {
// 複素数の作成
let a = Complex::new(3.0, 4.0);
let b = Complex::new(-2.0, 5.0);
println!("a: {a}");
println!("b: {b}");
println!("a + b: {}", a + b);
println!("a - b: {}", a - b);
println!("a * b: {}", a * b);
println!("a / b: {}", a / b);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
a: 3+4i
b: -2+5i
a + b: 1+9i
a - b: 5-1i
a * b: -26+7i
a / b: 0.4827586206896552-0.7931034482758621i
</syntaxhighlight>
このコードは、<code>num-complex</code>クレートを使用して複素数を扱うRustの例です。
# <code>extern crate num_complex;</code> および <code>use num_complex::Complex;</code> は、<code>num-complex</code>クレートから<code>Complex</code>型を使えるようにするためのインポートです。
# <code>Complex::new(3.0, 4.0);</code> および <code>Complex::new(-2.0, 5.0);</code> は、実部と虚部を指定して複素数を作成しています。
# <code>println!("a: {a}");</code> および <code>println!("b: {b}");</code> は、複素数 <code>a</code> と <code>b</code> を出力しています。
b: {}", a * b);</code>、<code>println!("a / b: {}", a / b);</code> は、それぞれ複素数 <code>a</code> と <code>b</code> の加算、減算、乗算、除算を行っています。結果を文字列として出力しています。
修正されたコードは次のようになります:
== 改廃された技術 ==
Rustの改廃された技術や利用が推奨されない技術は、言語標準の進化、安全性の向上、エコシステムの成熟などによって置き換えられます。以下に、代表的な技術を示します。
=== try! マクロ ===
* '''サポート開始年:''' 2015年
* '''サポート終了年:''' 2018年(非推奨化)
; 廃止または衰退の理由
: より簡潔で表現力のある<code>?</code>演算子が導入され、エラーハンドリングがより簡単になりました。
; 代替技術
: <code>?</code>演算子の使用が推奨されます。
=== std::sync::Arc::get_mut_unchecked ===
* '''サポート開始年:''' 2015年
* '''サポート終了年:''' 2018年(非推奨化)
; 利用推奨されない理由
: 安全性の問題があり、データ競合を引き起こす可能性があります。
; 代替技術
: <code>get_mut()</code>または<code>make_mut()</code>の使用が推奨されます。
=== std::env::home_dir ===
* '''対象:''' ホームディレクトリのパス取得
* '''サポート終了年:''' 2019年(非推奨化)
; 廃止または衰退の理由
: プラットフォーム間での一貫性の問題と、エッジケースでの不正確な結果。
; 代替技術
: <code>dirs</code>クレートや<code>home</code>クレートの使用が推奨されます。
=== catch_unwind_safe ===
* '''サポート開始年:''' 2016年
* '''サポート終了年:''' 2018年(非推奨化)
; 廃止または衰退の理由
: 安全性の保証に関する問題と、より良い代替手段の存在。
; 代替技術
: <code>std::panic::catch_unwind</code>と適切なパニック安全性の設計が推奨されます。
=== std::error::Error::description ===
* '''サポート開始年:''' 2015年
* '''サポート終了年:''' 2019年(非推奨化)
; 廃止または衰退の理由
: エラーメッセージの国際化や詳細な文脈提供が困難でした。
; 代替技術
: Display実装とError::sourceメソッドの使用が推奨されます。
=== 古いRaw Pointersの特定の使用法 ===
* '''対象:''' 特定の生ポインタ操作
* '''サポート終了年:''' 継続的に改善
; 廃止または衰退の理由
: メモリ安全性とプログラムの正確性に関する問題。
; 代替技術
: 参照、Box、Rc、Arcなどの安全な所有権型の使用が推奨されます。
=== std::thread::scoped ===
* '''サポート開始年:''' 2015年
* '''サポート終了年:''' 2015年(早期に削除)
; 廃止または衰退の理由
: メモリ安全性の問題が発見され、より安全な代替手段が必要とされました。
; 代替技術
: <code>crossbeam::scope</code>や<code>rayon</code>のスコープ付き並列処理が推奨されます。
=== 古いマクロ定義構文 ===
* '''サポート開始年:''' 2015年
* '''サポート終了年:''' なし(ただし新構文推奨)
; 廃止または衰退の理由
: 可読性とデバッグの困難さ、より表現力のある新しい構文の登場。
; 代替技術
: <code>macro_rules!</code>の新しい構文やproc-macroの使用が推奨されます。
=== std::ascii::AsciiExt ===
* '''サポート開始年:''' 2015年
* '''サポート終了年:''' 2019年(非推奨化)
; 廃止または衰退の理由
: トレイトの設計が最適でなく、より良い代替手段が標準ライブラリに追加されました。
; 代替技術
: str、charの組み込みメソッドの使用が推奨されます。
=== 古いFuture実装 ===
* '''対象:''' futures 0.1系
* '''サポート終了年:''' なし(ただし非推奨)
; 廃止または衰退の理由
: async/await構文の導入により、より簡潔で理解しやすい非同期プログラミングが可能になりました。
; 代替技術
: futures 0.3系とasync/await構文の使用が推奨されます。
== ほかの言語からの移植例 ==
=== 順列・組合わせ ===
Goから[[Go/関数#順列・組合わせ|順列・組合わせ]]を移植
==== 順列 ====
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=73612aa97bd4a1541a0313f38effde87 順列]:<syntaxhighlight lang=rust line copy>
fn permutation<T: Clone>(s: &[T], n: usize) -> Vec<Vec<T>> {
if s.is_empty() {
panic!("slice is nil");
}
if n == 1 {
let mut result = Vec::new();
for v in s.iter() {
result.push(vec![v.clone()]);
}
return result;
}
let mut result = Vec::new();
for (i, v) in s.iter().enumerate() {
let mut sf = Vec::new();
for (j, w) in s.iter().enumerate() {
if j != i {
sf.push(w.clone());
}
}
for w in permutation(&sf, n - 1) {
let mut v_w = vec![v.clone()];
v_w.extend_from_slice(&w);
result.push(v_w);
}
}
result
}
fn main() {
println!("{:?}", permutation(&[1, 2, 3], 1));
println!("{:?}", permutation(&[0, 1, 2], 2));
println!(
"{:?}",
permutation(&["abc".to_string(), "def".to_string(), "xyz".to_string()], 3)
);
println!("{:?}", permutation::<i32>(&[], 2));
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
[[1], [2], [3]]
[[0, 1], [0, 2], [1, 0], [1, 2], [2, 0], [2, 1]]
[["abc", "def", "xyz"], ["abc", "xyz", "def"], ["def", "abc", "xyz"], ["def", "xyz", "abc"], ["xyz", "abc", "def"], ["xyz", "def", "abc"]]
</syntaxhighlight>
;解説
:上記の移植において、主に以下の点に注意が必要でした。
:* ジェネリック型の宣言方法がGoとは異なるため、<code>func Permutation[T any](s []T, n int)</code> のような書き方はできません。Rustでは、<code>fn permutation<T: Clone>(s: &[T], n: usize)</code> のように、<code><T></code>の前に<code>:</code>を付けてジェネリック境界を宣言します。
:* Goの<code>make</code>は、新しい配列やスライスを作成するための組み込み関数ですが、Rustでは<code>Vec::with_capacity()</code>や<code>Vec::new()</code>を使用します。
:* <code>panic!("slice is nil")</code>は、Rustのパニック処理において、エラーメッセージを伴うパニックを発生させるために使用されます。
:* <code>Vec</code>に要素を追加するには、Goの<code>append</code>に相当するRustのメソッドである<code>Vec::push()</code>や、<code>Vec::extend_from_slice()</code>を使用します。また、<code>Vec</code>の要素数は、<code>len()</code>ではなく<code>len()</code>と<code>Vec::capacity()</code>の両方を使って取得する必要があります。
==== 組合わせ ====
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=06e15597fcf3bdc585abeccd3edb9454 組合わせ]:<syntaxhighlight lang=rust line copy>
fn combination<T: Clone>(s: &[T], n: usize) -> Vec<Vec<T>> {
if s.is_empty() {
panic!("slice is empty");
}
if n == 1 {
let mut result = Vec::new();
for v in s {
result.push(vec![v.clone()]);
}
return result;
}
let mut result = Vec::new();
for i in 0..=(s.len() - n) {
let v = s[i].clone();
for w in combination(&s[i + 1..], n - 1) {
let mut res = vec![v.clone()];
res.extend(w);
result.push(res);
}
}
return result;
}
fn main() {
println!("{:?}", combination(&[1, 2, 3], 1));
println!("{:?}", combination(&[0, 1, 2], 2));
println!(
"{:?}",
combination(&["abc", "def", "xyz"], 3)
);
// println!("{:?}", combination(&[], 2)); 要素型が確定できない
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
[[1], [2], [3]]
[[0, 1], [0, 2], [1, 2]]
[["abc", "def", "xyz"]]
</syntaxhighlight>
;解説
:上記の移植において、主に以下の点に注意が必要でした。
:*Rustのジェネリック関数の型パラメータには制約が必要なため、<code>T</code>がクローン可能であることを示す<code>Clone</code>トレイトを指定する必要があります。
:*Goのスライスと異なり、Rustのスライスは要素数が0の場合にも安全であるため、<code>ErrNilSlice</code>に相当する処理は<code>slice.is_empty()</code>で判定することができます。
:*Goのスライスと異なり、Rustのスライスは範囲外アクセスがパニックを引き起こすため、再帰呼び出し時にはスライスの範囲を明示的に指定する必要があります。
{{See also|JavaScript/オブジェクト#順列を求めるメソッドを配列に追加する|JavaScript/オブジェクト#組合わせを求めるメソッドを配列に追加する}}
== 脚註 ==
<references />
== 下位階層のページ ==
*[[Rust/キーワード]]
== 関連項目 ==
*[[Rustで学ぶGTK4]]
== 外部リンク ==
{{Wikipedia|Rust (プログラミング言語)|Rust}}
* [https://www.rust-lang.org/ 公式サイト(英語)]
* [https://www.rust-lang.org/ja/ 公式サイト(日本語)]
* [https://doc.rust-jp.rs/book-ja/title-page.html The Rust Programming Language 日本語版]
* [https://doc.rust-lang.org/book/title-page.html The Rust Programming Language (英語版)]
== 参考文献 ==
* {{Cite
|author=Jim Blandy, Jason Orendorff
|translator=中田 秀基
|title=プログラミングRust
|edition=第2版
|publisher=オライリージャパン
|isbn=978-4873119786
|date=2022年1月19日
}}
* {{Cite
|author=Jim Blandy, Jason Orendorff
|translator=中田 秀基
|title=プログラミングRust
|edition=第1版
|publisher=オライリージャパン
|isbn=978-4873118550
|date=2018年8月10日
}}
{{DEFAULTSORT:RUST}}
[[Category:Rust|*]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
iew6fbd37y39c8ts1v0xrhjy6yyxzxt
Google スライド
0
33783
301482
251351
2026-07-13T08:21:23Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301482
wikitext
text/x-wiki
== Google スライド チュートリアル ==
== はじめに ==
'''Google スライド'''は、クラウド型のプレゼンテーション作成ソフトです。無料で利用でき、ブラウザ上で動作するため、インストール不要で簡単に利用することができます。
Google スライドを使うと、以下のようなことができます。
* '''プレゼンテーション作成''': スライドを作成して、テキスト、画像、動画などを挿入して、プレゼンテーションを作成することができます。
* '''デザイン''': テーマ、フォント、色などを設定して、プレゼンテーションをデザインすることができます。
* '''アニメーション''': スライドやオブジェクトにアニメーションを設定して、プレゼンテーションをより魅力的にすることができます。
* '''発表''': 作成したプレゼンテーションをオンラインまたはオフラインで発表することができます。
* '''共有''': プレゼンテーションを共有リンクを使って、他のユーザーと共有することができます。
* '''共同編集''': 複数人で同時に同じプレゼンテーションを編集することができます。
このチュートリアルでは、Google スライドの基本的な操作を習得し、プレゼンテーション作成を効率的に行えるようになることを目指します。
== 対象読者 ==
このチュートリアルは、Google スライドを初めて利用する初心者向けです。
== 所要時間 ==
約90分
== チュートリアル ==
=== 1. はじめに ===
==== 1.1 Google スライドとは ====
Google スライドは、クラウド型のプレゼンテーション作成ソフトです。Google アカウントがあれば、無料で利用することができます。
==== 1.2 Google スライドを使うメリット ====
Google スライドを使うメリットは、以下の通りです。
* '''インストール不要''': ブラウザ上で動作するため、インストール不要で簡単に利用することができます。
* '''どこでもアクセスできる''': 作成したプレゼンテーションはオンラインに保存されるため、インターネット環境があれば、どこからでもアクセスすることができます。
* '''複数人で同時に編集できる''': 複数人で同時に同じプレゼンテーションを編集することができます。
* '''保存の心配がない''': オンラインに保存されるため、保存の心配がありません。
* '''豊富な機能''': テキスト入力、デザイン、アニメーション、発表など、豊富な機能を搭載しています。
==== 1.3 チュートリアルに必要な準備 ====
このチュートリアルを利用するには、以下の準備が必要です。
* '''Google アカウント''': Google スライドを利用するには、Google アカウントが必要です。
* '''Web ブラウザ''': Google スライドは、Web ブラウザ上で動作します。Chrome、Firefox、Safariなどの主要なブラウザに対応しています。
=== 2. 基本操作 ===
==== 2.1 新規プレゼンテーションの作成 ====
Google スライドで新規プレゼンテーションを作成するには、以下の手順を行います。
# Google ドライブにアクセスします。 (<nowiki>https://drive.google.com/drive/my-drive</nowiki>)
# 左上の '''新規''' ボタンをクリックします。
# '''Google スライド''' を選択します。
# プレゼンテーションの名前を入力して '''作成''' ボタンをクリックします。
==== 2.2 スライドの追加と削除 ====
スライドを追加するには、以下の手順を行います。
# 左下の '''スライド''' ペインで、 '''新しいスライド''' ボタンをクリックします。
# スライドのレイアウトを選択します。
スライドを削除するには、以下の手順を行います。
# 左下の '''スライド''' ペインで、削除したいスライドを選択します。
# '''Delete''' キーを押します。
==== 2.3 テキスト入力と編集 ====
テキストを入力するには、以下の方法があります。
* プレースホルダーをクリックして入力する
* テキストボックスを挿入して入力する
テキストを編集するには、以下の方法があります。
* カーソルを移動して編集する
* コピー&ペーストする
* 書式設定する
* 検索と置換を行う
==== 2.4 デザイン ====
プレゼンテーションのデザインを変更するには、以下の方法があります。
* テーマを選択する
* フォントを変更する
* 色を変更する
* 背景を変更する
==== 2.5 画像と動画の挿入 ====
画像と動画を挿入するには、以下の手順を行います。
# メニューバーから '''挿入''' を選択します。
# '''画像''' または '''動画''' を選択します。
# 挿入したい画像または動画を選択します。
# '''挿入''' ボタンをクリックします。
挿入した画像と動画を編集するには、以下の方法があります。
* サイズを変更する
* 位置を変更する
* トリミングする
* アニメーションを設定する
==== 2.6 アニメーション ====
スライドやオブジェクトにアニメーションを設定するには、以下の手順を行います。
# アニメーションを設定したいスライドまたはオブジェクトを選択します。
# メニューバーから '''挿入''' > '''アニメーション''' を選択します。
# アニメーションの種類を選択します。
# アニメーションの設定を変更します。
==== 2.7 発表 ====
プレゼンテーションを発表するには、以下の手順を行います。
# 発表したいプレゼンテーションを開きます。
# 右上の '''発表''' ボタンをクリックします。
# 発表方法を選択します。
#* '''プレゼンテーションモード''': 全画面でプレゼンテーションを表示します。
#* '''スライドショーから''': スライドショー形式でプレゼンテーションを表示します。
#* '''Web で発表''': プレゼンテーションをWebブラウザで表示します。
#* '''Google Meet で発表''': Google Meet でプレゼンテーションを発表します。
# 発表設定を変更します。
#* '''発表者ノート''': 発表者のみ表示されるノートです。
#* '''レーザーポインタ''': レーザーポインタを使って発表を操作できます。
#* '''自動再生''': スライドを自動的に再生します。
#* '''ループ再生''': スライドを繰り返し再生します。
# '''開始''' ボタンをクリックして発表を開始します。
== 3. 応用 ==
==== 3.1 表の挿入と編集 ====
表を挿入するには、以下の手順を行います。
# メニューバーから '''挿入''' > '''表''' を選択します。
# 表の行数と列数を入力します。
# '''作成''' ボタンをクリックします。
表を編集するには、以下の方法があります。
* セルの入力と編集
* 行列の挿入・削除
* セルの結合と分割
* 表の書式設定
==== 3.2 図形の挿入と編集 ====
図形を挿入するには、以下の手順を行います。
# メニューバーから '''挿入''' > '''図形''' を選択します。
# 挿入したい図形を選択します。
# 図形を描画します。
図形を編集するには、以下の方法があります。
* サイズを変更する
* 位置を変更する
* 回転する
* 色を変更する
* 線を変更する
==== 3.3 音声と動画の挿入 ====
音声と動画を挿入するには、以下の手順を行います。
# メニューバーから '''挿入''' を選択します。
# '''音声''' または '''動画''' を選択します。
# 挿入したい音声または動画を選択します。
# '''挿入''' ボタンをクリックします。
挿入した音声と動画を編集するには、以下の方法があります。
* 再生位置を変更する
* 音量を変更する
* トリミングする
* アニメーションを設定する
==== 3.4 質問と回答 ====
質問と回答機能を使って、発表中に参加者から質問を受け付けることができます。
質問と回答機能を使うには、以下の手順を行います。
# メニューバーから '''ツール''' > '''質問と回答''' を選択します。
# '''質問を受け付ける''' を選択します。
# 参加者が質問を送信できます。
# 発表者は質問に回答することができます。
==== 3.5 ノート ====
発表者ノートを使って、発表中に自分自身へのメモを取ることができます。
発表者ノートを作成するには、以下の手順を行います。
# メニューバーから '''ツール''' > '''発表者ノート''' を選択します。
# 発表者ノートにメモを入力します。
==== 3.6 共有 ====
プレゼンテーションを共有するには、以下の手順を行います。
# 共有したいプレゼンテーションを開きます。
# 右上の '''共有''' ボタンをクリックします。
# 共有方法を選択します。
#* '''公開''': どなたでも閲覧・編集できます。
#* '''限定''': 特定のユーザーのみ閲覧・編集できます。
#* '''リンク''': 共有リンクを発行して、共有できます。
# 共有設定を変更します。
#* '''アクセス許可''': 閲覧者のみ、コメントのみ、編集可などを設定できます。
#* '''ロール''': 特定のユーザーに管理者権限などを付与できます。
# '''送信''' ボタンをクリックします。
==== 3.7 共同編集 ====
複数人で同時に同じプレゼンテーションを編集することができます。
共同編集するには、以下の手順を行います。
# 共有したいプレゼンテーションを開きます。
# 右上の '''共有''' ボタンをクリックします。
# 共有方法を選択します。
#* '''限定''': 特定のユーザーのみ閲覧・編集できます。
#* '''リンク''': 共有リンクを発行して、共有できます。
# 共有設定を変更します。
#* '''アクセス許可''': 閲覧者のみ、コメントのみ、編集可などを設定できます。
#* '''ロール''': 特定のユーザーに管理者権限などを付与できます。
# '''送信''' ボタンをクリックします。
共有されたプレゼンテーションは、複数人で同時に編集することができます。
== 下位階層のページ ==
*[[Google スライド/入門]]
[[Category:Google Workspace|すらいと]]
1mwc6rq4s5da2ewkp35vfrm4k0lg3pc
高等学校公共
0
34701
301517
301421
2026-07-13T09:59:16Z
AkiR27User
90873
[[/国会]]追加
301517
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]> [[高等学校の学習]]>[[高等学校公民]]>高等学校公共
[[w:高等学校|高等学校]]「[[w:公民|公民]]」の科目の一つです。当科目は[[w:必修科目|必修科目]]です。
「高等学校公共」では、昨今の共通テスト難化から「政治経済」の内容も含めて解説しています。また、発展講義【高得点を狙う人向け】として、公務員試験専門科目の憲法・行政法・政治学・社会政策・国際関係・経営学・労働法・行政学・経済史・経済原論・社会学の内容も各種公共・政治経済の資料集で掲載している内容は全て取り入れています。
そのため、公共の教科書内容と内容を大きく変えている部分もありますが、学習の参考になれば幸いです。
以下の見出しは清水書院の教科書『高等学校 公共』【公共705】に従っています。
* 「公共」を学ぶ前に(学習方法など)
== 第1編 公共の扉をひらく ==
{{進捗状況}}
=== 第1章 公共的な空間を作る私達 ===
# [[高等学校公共/私達の人生と社会|私達の人生と社会]]{{進捗|100%|2023-01-11}}
# [[高等学校公共/青年期の心理と課題Ⅰ|青年期の心理と課題Ⅰ]]{{進捗|25%|2024-03-10}}
# 哲学の始源と発展
# 一神教の教え
# 東洋の宗教と思想
# 日本の風土と神仏への信仰
# 江戸時代の学問と近代化への歩み
=== 第2章 公共的な空間における人間 ===
# 義務論と功利主義
# 生命倫理
# 環境倫理
=== 第3章 公共的な空間における基本的原理 ===
# 近代的人間像の誕生
# 国家社会と人間性
# 公共性の復権と他者についての思考
# 公正な社会と個人
== 第2編 基本的人権の尊重と法 ==
=== 第1章 民主政治の原理 ===
# 近代国家と立憲主義
# 日本国憲法の成立
=== 第2章 人権の尊重と日本国憲法 ===
# 日本国憲法の三原理と人権保障{{進捗|00%|2022-09-11}}
# 平和主義と国際社会
# 平等権
# 自由権
# 社会権
# 参政権の保障と国務請求権
# 新しい人権[幸福追求権]Ⅰ{{進捗|00%|2024-03-17}}(新しい人権[幸福追求権]の意味)
# 新しい人権[幸福追求権]Ⅱ{{進捗|00%|2024-03-17}}(プライバシー権)
# [[高等学校公共/新しい人権[幸福追求権]Ⅲ|新しい人権[幸福追求権]Ⅲ]]{{進捗|100%|2024-05-05}}(環境権)
# [[高等学校公共/新しい人権[幸福追求権]Ⅳ|新しい人権[幸福追求権]Ⅳ]]{{進捗|00%|2024-03-17}}(自己決定権)
# グローバル化と国際人権
〈移動予定〉
===第3章 公共的な空間における基本原理===
# [[高等学校公共/個人の尊重と社会|個人の尊重と社会]]
# [[高等学校公共/民主主義,立憲主義|民主主義,立憲主義]]{{進捗|25%|2022-09-11}}
# [[高等学校公共/法はなぜ必要なのか|法はなぜ必要なのか]]{{進捗|25%|2022-11-08}}
== 第3編 現代の民主政治と社会参画 ==
=== 第1章 民主政治の成立と課題 ===
# 自由民主主義の成立と危機
# 現代の自由民主主義と課題
# 世論の形成と民主社会
# 政治参加と主権者
# 選挙と政党
=== 第2章 日本の政治機構 ===
# 国会の役割と仕組みⅠ(統治総論)
# [[高等学校公共/国会の役割と仕組みⅡ|国会の役割と仕組みⅡ]](国会の地位)
# 国会の役割と仕組みⅢ(国会の組織)
# 国会の役割と仕組みⅣ(国会議員の地位)
# 国会の役割と仕組みⅤ(国会の活動)
# 国会の役割と仕組みⅥ(国会の権能①)
# 国会の役割と仕組みⅦ(国会の権能②)
# 国会の役割と仕組みⅧ(国会の権能③)
# [[高等学校公共/国会の役割と仕組みⅨ|国会の役割と仕組みⅨ]](議院の権能)
# 内閣と行政機関Ⅰ(議院内閣制)
# 内閣と行政機関Ⅱ(内閣の組織)
# 内閣と行政機関Ⅲ(内閣総理大臣)
# 内閣と行政機関Ⅳ(内閣の権能と責任)
# 内閣と行政機関Ⅴ()
# 内閣と行政機関Ⅵ(行政の民主化)
# 裁判所の役割と仕組み
# 市民生活と司法参加
# [[高等学校公共/地方自治と住民の生活Ⅰ|地方自治と住民の生活Ⅰ]]{{進捗|100%|2024-03-17}}(戦前日本の地方制度【発展講義】)
# [[高等学校公共/地方自治と住民の生活Ⅱ|地方自治と住民の生活Ⅱ]]{{進捗|25%|2024-03-18}}(戦後日本の地方自治)
# 地方自治と住民の生活Ⅲ{{進捗|00%|2024-00-00}}(地方分権の動向)
# [[高等学校公共/地方自治と住民の生活Ⅳ|地方自治と住民の生活Ⅳ]]{{進捗|25%|2024-03-18}}(シャウプ勧告と地方財政【発展講義】)
# 地方自治と住民の生活Ⅴ{{進捗|00%|2024-03-18}}()
# 地方自治と住民の生活Ⅵ{{進捗|00%|2024-03-18}}()
# 地方自治と住民の生活Ⅶ{{進捗|00%|2024-03-18}}()
# 地方自治と住民の生活Ⅷ{{進捗|00%|2024-03-18}}()
# 地方自治と住民の生活Ⅸ{{進捗|00%|2024-03-18}}()
# 地方自治と住民の生活Ⅹ{{進捗|00%|2024-03-18}}()
# 地方自治と住民の生活Ⅺ{{進捗|00%|2024-03-18}}()
# 地方自治と住民の生活Ⅻ{{進捗|00%|2024-03-18}}()
# 地方自治と住民の生活ⅩⅢ{{進捗|00%|2024-03-18}}()
# 地方自治と住民の生活ⅩⅣ{{進捗|00%|2024-03-18}}()
=== 第3章 国際政治の仕組みと役割 ===
# 国際政治の成り立ち
# 国際連合の設立とその役割
# 冷戦とその終焉
# 軍縮と安全保障
# リージョナリズム
# グローバル化と国家
=== 第4章 国際政治の現状と課題 ===
# 現代の紛争
# 多文化・多民族社会に向けて
# 移民と難民
# 日本の戦後外交と課題
〈移動予定〉
#[[高等学校公共/個人と法|個人と法]]
#[[高等学校公共/統治総論|統治総論]]
#[[高等学校公共/日本の統治機構Ⅱ|日本の統治機構Ⅱ]](統治の基本原理)
#[[高等学校公共/内閣の仕組みと働きⅠ|内閣の仕組みと働きⅠ]]{{進捗|00%|2023-00-00}}
#[[高等学校公共/内閣の仕組みと働きⅡ|内閣の仕組みと働きⅡ]]{{進捗|00%|2023-00-00}}
#[[高等学校公共/内閣|内閣の仕組みと働きⅤ]]{{進捗|00%|2023-00-00}}
#[[高等学校公共/裁判所Ⅰ|裁判所Ⅰ]]{{進捗|00%|2022-10-08}}
#[[高等学校公共/裁判所Ⅲ|裁判所Ⅲ]]{{進捗|100%|2022-10-09}}
== 第4編 現代の経済社会と国民生活 ==
=== 第1章 私達と経済活動 ===
# 私達と経済
# 消費者の権利と責任
# 仕事と社会
# 国民経済とGDP
=== 第2章 経済社会の仕組みと役割 ===
# 社会の仕組みとしての市場
# 市場の機能
# 市場の限界
# 金融とその働き
# 財政とその働き
# 現代の企業
# 労働問題
# 社会保障の役割
# 少子高齢化と財政の維持可能性
〈移動予定〉
*[[高等学校公共/企業の経済的役割|企業の経済的役割]]{{進捗|25%|2023-01-25}}
* [[高等学校公共/日本経済の進展 戦後から現代の課題|日本経済の進展 戦後から現代の課題]]
* [[高等学校公共/国民所得と私たちの生活|国民所得と私たちの生活]]{{進捗|100%|2022-09-07}}
* [[高等学校公共/労働と雇用 よりよいはたらき方をめざして|労働と雇用 よりよいはたらき方をめざして]]{{進捗|25%|2022-08-04}}
* [[高等学校公共/社会保障制度|社会保障制度の意義]]
=== 第3章 国際経済の現状と課題 ===
# 国際取引と国際収支{{進捗|00%|2023-01-15}}
# 自由貿易とグローバル化{{進捗|00%|2023-01-15}}
# 国際経済のこれから
*[[高等学校公共/国際社会と国際法Ⅰ|国際社会と国際法Ⅰ]]{{進捗|25%|2023-01-15}}(国際法①)
==第5編 持続可能な社会を創る==
[[カテゴリ:高等学校教育]]
* 人間は人工知能とどのように共存すればよいか?
* 何のために環境を守るのか?
* 食料と水資源の配分をどう考えるか?
* 少子高齢化と社会保障の問題を考える
* 地域とつながり、地域に生きる、地域社会との接点
* 課題探究のスキル
== 資料出所・読書案内 ==
[[高等学校公共/資料出所・読書案内|資料出所・読書案内]]
== 分類依頼 ==
* [[/国会|国会]]
9i02y8mlun37p0inrs85jl33pko6kg3
補助
0
36990
301556
223308
2026-07-13T11:32:01Z
~2026-39697-75
92014
301556
wikitext
text/x-wiki
#redirect[[w:補助]]
不足している部分を補うこと。その助けの元となる総称。ユーザーの厳密な探索からの目的から結果を得られることが多い。
e5i15xaceoo8u8bj5hr9l258dnmmm8l
ASP.NET Core
0
39420
301481
267716
2026-07-13T08:18:30Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301481
wikitext
text/x-wiki
== ASP.NET Coreの概要 ==
=== ASP.NET Coreの概要と特徴 ===
ASP.NET Coreは、2016年にMicrosoftによって発表された新しいオープンソースのWebアプリケーションフレームワークです。従来のASP.NETを全面的に刷新したものであり、.NET Coreプラットフォーム上で動作します(.NET 5 からは名前に Core はつかなくなりましたが、.NET は旧来の .NET Frameworksと関係技術の略称にも使われていたので、以下 .NET Core 表記を用います)。
ASP.NET Coreの主な特徴は以下の通りです:
* '''クロスプラットフォーム対応''': Windows、macOS、Linuxの各プラットフォームで動作可能
* '''高パフォーマンス''': 軽量で高速な動作が可能
* '''クラウド/コンテナ対応''': クラウド環境やDockerコンテナでの利用に適している
* '''モジュール化''': 必要な機能のみをNuGetパッケージとしてインストールできる
* '''Owin(Open Web Interface for .NET)対応''': IISに依存せずに、さまざまなホスト環境で動作可能
* '''オープンソース''': GitHubでソースコードが公開されており、コミュニティによる開発が進められている
=== ASP.NET との違いの解説 ===
従来のASP.NETは、Microsoftが開発したWindowsのみで動作するWebアプリケーションフレームワークでした。.NET Frameworkを使用し、主にWindowsのIISサーバー上で動作するよう設計されていました。
一方、ASP.NET Coreは、.NET Coreプラットフォームを使用することで、WindowsだけでなくmacOSやLinuxなどのクロスプラットフォームに対応しています。また、IISに依存せずに、Kestrelなどの自前のWebサーバーで動作させることも可能です。
性能面でも、ASP.NET Coreは大幅な高速化を実現しており、クラウドやコンテナ環境での利用に適しています。モジュール化された設計により、必要な機能のみをインストールできるため、リソース使用量も抑えられます。
さらに、オープンソース化されたことで、コミュニティによる活発な開発と改善が行われています。これにより、最新のWebテクノロジーに迅速に対応できるようになっています。
=== ASP.NET Coreの導入メリット ===
ASP.NET Coreを採用することで、以下のようなメリットが得られます:
# '''クロスプラットフォーム対応''': Windowsだけでなく、macOSやLinuxでも開発及びデプロイが可能になるため、開発環境の柔軟性が向上します。
# '''高パフォーマンス''': 軽量で高速な動作が可能なため、スケーラビリティの高いWebアプリケーションの構築が可能です。
# '''クラウド/コンテナ対応''': クラウド環境やDockerコンテナでの利用に適しているため、インフラの柔軟性が向上します。
# '''モジュール化''': 必要な機能のみをNuGetパッケージとしてインストールできるため、リソース使用量を最適化できます。
# '''オープンソース''': GitHubでソースコードが公開されており、コミュニティによる活発な開発と改善が行われています。
# '''最新技術への対応''': オープンソース化されたことで、最新のWebテクノロジーへの迅速な対応が可能になります。
これらのメリットにより、ASP.NET Coreは、モダンなWebアプリケーション開発に最適なフレームワークと言えるでしょう。
== 開発環境の準備 ==
=== .NET Coreのインストール ===
ASP.NET Coreアプリケーションを開発するには、まずはお使いのOSに合わせて.NET Coreランタイムをインストールする必要があります。
[https://dotnet.microsoft.com/download .NET Core公式サイト]から、お使いのOSに対応したランタイムをダウンロードし、インストーラーに従ってインストールを行います。
Windows環境の場合は、Visual Studioを使用する際に、.NET Coreが自動的にインストールされるため、別途インストールする必要はありません。一方、macOSやLinux環境では、.NET Coreランタイムをあらかじめインストールしておく必要があります。
=== Visual StudioまたはVisual Studio Codeの設定 ===
ASP.NET Coreの開発には、Visual StudioまたはVisual Studio Codeを使用できます。
Visual Studioを使用する場合は、"Visual Studio Installer"からASP.NET and web development ワークロードをインストールすることで、ASP.NET Core開発に必要な機能が揃います。
一方、Visual Studio Codeを使用する場合は、C#拡張機能をインストールし、アプリケーションのプロジェクトフォルダーを開くことで、ASP.NET Coreの開発が可能です。また、OmniSharpエクステンションをインストールすると、より高度な機能が利用できます。
=== 初期プロジェクトの作成 ===
開発環境が準備できたら、次は新しいASP.NET Coreプロジェクトを作成します。
Visual Studioの場合は、"ファイル" > "新規作成" > "プロジェクト"から、"ASP.NET Core Webアプリケーション"を選択します。
Visual Studio Codeの場合は、コマンドパレットから"dotnet new"コマンドを実行し、"web"を選択することで、新しいASP.NET Coreプロジェクトを作成できます。
プロジェクトテンプレートには、Webアプリケーション(モデル-ビュー-コントローラー)、Web API、空のプロジェクトなどがあり、用途に合わせて選択できます。
これで、ASP.NET Coreの開発環境が整いました。次は、基本的な構造と機能について見ていきましょう。
{{コラム|ASP.NET Coreの公用語|2=ASP.NET Coreの公用語は主にC#([[C Sharp]])言語です。
ASP.NET Coreアプリケーションの開発では、C#を使用してコントローラー、サービス、モデルなどのサーバーサイドのロジックを実装します。C#は.NET Coreプラットフォームのデフォルトの言語であり、ASP.NET Coreの設計思想に合致しているため、主要な言語として採用されています。
一方、クライアントサイドでは、JavaScript、TypeScript、Blazorなども使用できます。BlazorはサーバーサイドのC#とWebAssemblyを使ってクライアントサイドのUIを構築する機能を提供しています。
ただし、ASP.NET Coreのコア部分およびフレームワークそのものはC#で実装されているため、サーバーサイドの開発においてC#を使用することが一般的です。F#などの他の言語を使用することも可能ですが、ASP.NET Coreの機能を最大限に活用するためには、C#でプログラミングすることが推奨されています。
}}
== 基本的な構造と機能 ==
=== プロジェクトの構造 ===
ASP.NET Coreのプロジェクトは、以下のような構成となっています。
* <code>wwwroot/</code>: 静的ファイル (CSS、JavaScript、画像など) が置かれるディレクトリ
* <code>Controllers/</code>: アプリケーションのコントローラークラスが置かれるディレクトリ
* <code>Models/</code>: アプリケーションのデータモデルが置かれるディレクトリ
* <code>Views/</code>: アプリケーションのビューファイル (Razor) が置かれるディレクトリ
* <code>Startup.cs</code>: アプリケーションの起動時の設定を行うクラス
* <code>Program.cs</code>: アプリケーションのエントリーポイントとなるクラス
このような構造により、MVC(Model-View-Controller)アーキテクチャに基づいたWebアプリケーションの開発が可能になります。
=== Startupクラスとミドルウェアの設定 ===
<code>Startup.cs</code>クラスは、アプリケーションの起動時の設定を行うクラスです。ここでは、以下のような処理を行います。
* 使用するミドルウェアの設定
* 依存性注入の設定
* ルーティングの設定
* その他、アプリケーションの初期化に関する設定
ミドルウェアとは、HTTPリクエストの前後で実行されるコンポーネントのことです。ASP.NET Coreでは、ミドルウェアを柔軟に組み合わせることで、リクエスト処理パイプラインをカスタマイズできます。
=== ルーティングとコントローラー ===
ASP.NET Coreでは、URLとアプリケーションの処理をマッピングするルーティング機能を提供しています。
ルーティングの設定は、<code>Startup.cs</code>の<code>Configure</code>メソッド内で行います。
また、アプリケーションの処理ロジックは、コントローラークラスに実装します。コントローラークラスは<code>Controllers/</code>ディレクトリ内に置かれ、HTTPリクエストに応じて適切な処理を行います。
=== ビューとRazorテンプレートエンジン ===
ビューは、コントローラーから渡されたモデルデータを表示するためのファイルです。ASP.NET Coreでは、Razorテンプレートエンジンを使ってビューを記述します。
Razorは、C#とHTMLを組み合わせて記述できる構文で、動的なWebページを作成するのに適しています。
ビューファイルは<code>Views/</code>ディレクトリ内に置かれ、コントローラーからViewメソッドを通して呼び出されます。
{{See also|ASP.NET Core/Razor Core}}
=== 依存性注入の活用 ===
ASP.NET Coreは、依存性注入(Dependency Injection)のメカニズムを標準で提供しています。
依存性注入とは、オブジェクトの生成と依存関係の管理を集中的に行う設計パターンです。
<code>Startup.cs</code>の<code>ConfigureServices</code>メソッドで、アプリケーション全体で共有するサービスを登録します。
そして、コントローラーのコンストラクタ引数に依存するサービスを宣言することで、自動的にサービスのインスタンスが注入されます。
これにより、疎結合で柔軟な設計が可能になり、テストの容易性も高まります。
以上が、ASP.NET Coreの基本的な構造と機能の概要です。次は、データアクセスとモデルについて見ていきましょう。
== データアクセスとモデル ==
=== Entity Framework Coreによるデータアクセス ===
ASP.NET Coreでは、データアクセスにEntity Framework Coreを使用することが一般的です。Entity Framework Coreは、.NET Coreに最適化された軽量なオブジェクト・リレーショナル・マッパー(ORM)ライブラリです。
Entity Framework Coreを使うと、データベースのテーブルをクラスで表現できるようになり、SQL文を直接書く必要がなくなります。CLRオブジェクトとデータベースのデータを自動的に変換してくれるため、開発の生産性が大幅に向上します。
Entity Framework Coreを使ったデータアクセスの典型的な流れは以下の通りです:
# データベースのテーブルに対応するモデルクラスを定義する
# DbContextクラスを作成し、データベースへの接続設定を行う
# モデルクラスのインスタンスを使ってCRUD操作を行う
このようにEntity Framework Coreを活用することで、効率的にデータベースとの連携を実現できます。
{{See also|ASP.NET Core/Entity Framework Core}}
=== データベースマイグレーション ===
ASP.NET Coreでは、データベースの構造変更を管理するためのデータベースマイグレーション機能を提供しています。
マイグレーションを使うと、モデルクラスの変更をコードで表現し、それに基づいてデータベースの構造を自動的に更新できます。これにより、開発中のデータベース変更を確実に反映させることができ、本番環境への移行も容易になります。
マイグレーションの主な手順は以下の通りです:
# モデルクラスの変更を加える
# <code>Add-Migration</code>コマンドを実行してマイグレーションファイルを生成する
# <code>Update-Database</code>コマンドを実行してデータベースを更新する
このようにマイグレーション機能を活用することで、モデルとデータベースの同期を簡単に行えます。
=== モデルバインディングとバリデーション ===
ASP.NET Coreでは、HTTPリクエストからモデルオブジェクトを自動的に生成する「モデルバインディング」機能を提供しています。
これにより、リクエストパラメーターをモデルクラスのプロパティにマッピングする手間が省けます。また、モデルクラスにバリデーションルールを定義することで、入力値のチェックも簡単に行えます。
バリデーションは、モデルクラスにデコレーターを適用して定義します。例えば、<code>[Required]</code>属性を使えば必須入力のチェックができ、<code>[StringLength]</code>属性を使えば文字列長のチェックができます。
コントローラーのアクションメソッドでは、<code>ModelState.IsValid</code>プロパティを確認することで、バリデーションの結果を簡単に取得できます。
このようにモデルバインディングとバリデーション機能を使うことで、Webアプリケーションの入力チェックを効率的に実装できます。
以上がASP.NET Coreにおけるデータアクセスとモデルの基本的な概要です。次は、セキュリティについて見ていきましょう。
== セキュリティ ==
=== 認証(Cookie認証、OpenID Connect) ===
ASP.NET Coreでは、ユーザー認証にCookie認証やOpenID Connectなどの認証方式を使用できます。
'''Cookie認証'''は、ログイン時にサーバー側で認証情報をCookieに格納し、以降のリクエストでそのCookieを検証することで認証を行う方式です。ASP.NET Coreの標準機能で簡単に実装できます。
一方、'''OpenID Connect'''は、外部の認証プロバイダ(Google、Facebook、Microsoft Accountなど)を使ってユーザー認証を行う方式です。アプリケーション側はプロバイダの認証結果を受け取ることで、ユーザー認証を実現できます。
これらの認証方式は、ミドルウェアを介して<code>Startup.cs</code>で設定します。適切な認証方式を選択し、設定することで、安全な認証機能を実装できます。
=== 認可(ポリシーベースの認可) ===
認証が完了すると、次は認可(認証済みユーザーの機能アクセス制限)の設定が必要になります。
ASP.NET Coreでは、ポリシーベースの認可方式を採用しています。ポリシーとは、ユーザーの属性やロールに応じてアクセス可能な機能を定義したものです。
ポリシーは、<code>Startup.cs</code>の<code>ConfigureServices</code>メソッドで設定します。そして、コントローラーやアクションメソッドに<code>[Authorize(Policy = "PolicyName")]</code>のようにアノテーションを付けることで、ポリシーに基づいた認可が実現できます。
この方式により、柔軟な認可ロジックを実装できるようになります。
{{See also|ASP.NET Core/Identity}}
=== HTTPS, CORS, XSS対策 ===
ASP.NET Coreでは、セキュリティ対策として以下のような機能が提供されています。
; HTTPS
: リクエストをHTTPSで強制的に行うよう設定できる
: 証明書の設定も簡単に行える
; CORS(Cross-Origin Resource Sharing)
: 異なるオリジンからのアクセスを制御できる
: 許可するオリジンを柔軟に設定できる
; XSS(Cross-Site Scripting)対策
: Razor ViewEngineがデフォルトでHTMLエンコーディングを行う
: HTML出力時にHTMLタグがエスケープされる
これらの機能を適切に設定することで、アプリケーションのセキュリティを強化できます。
以上がASP.NET Coreにおけるセキュリティ対策の基本的な概要です。次はWeb APIの構築について見ていきましょう。
== Web APIの構築 ==
=== Web APIコントローラーの実装 ===
ASP.NET Coreでは、Web APIコントローラーを通して、RESTfulなWebサービスを簡単に実装できます。コントローラークラスは、<code>[ApiController]</code>属性を付けることで、Web APIコントローラーとして認識されます。
コントローラーのアクションメソッドでは、HTTPメソッド(Get、Post、Put、Delete)に対応するアノテーションを付け、リクエストパラメーターをモデルクラスで受け取ることができます。
また、アクションメソッドの戻り値はIActionResultインターフェイスを実装したクラスで返すのが一般的です。これにより、ステータスコードやレスポンスデータを柔軟に設定できるようになります。
=== JSON/XMLのシリアル化/デシリアル化 ===
ASP.NET Coreでは、JSONやXMLのシリアル化/デシリアル化を標準で行えます。
リクエストデータをモデルクラスにバインドする際は、自動的にJSON/XMLのデシリアル化が行われます。また、アクションメソッドの戻り値をJSON/XMLで返す場合は、<code>JsonResult</code>や<code>XmlResult</code>クラスを使用できます。
さらに、<code>[Produces("application/json")]</code>などのフォーマット指定アノテーションを使えば、クライアントからのAcceptヘッダに応じて適切なレスポンスフォーマットを返せるようになります。
=== Swaggerによるドキュメンテーション ===
Swaggerは、Web APIのドキュメンテーションを自動生成するツールです。ASP.NET Coreでは、Swaggerを簡単に導入できます。
Swaggerを使うと、Web APIコントローラーのアクションメソッドから、リクエストパラメーター、レスポンスデータ、HTTPメソッドなどの情報を自動的に収集できます。これらの情報を基に、美しいドキュメントページを生成できるため、API利用者にとって大変便利です。
Swaggerの導入は、わずかな設定で完了するため、Web APIを開発する際は、ぜひ活用しましょう。
{{See also|Swagger}}
== 非同期処理とリアルタイム通信 ==
=== Asyncプログラミング ===
ASP.NET Coreでは、非同期処理を簡単に実装できるようになっています。アクションメソッドやサービスメソッドに<code>async</code>修飾子を付け、<code>await</code>キーワードを使うことで、非同期処理を記述できます。
非同期処理を使うことで、CPU資源の無駄がなくなり、スループットの向上が期待できます。特に、データベースアクセスや外部APIコールなど、I/Oが絡む処理で効果的です。
<code>Task</code>や<code>ValueTask</code>などの非同期型を活用し、適切にエラー処理やキャンセル処理を行うことで、ロバストな非同期アプリケーションを構築できます。
=== SignalRによるリアルタイム通信 ===
ASP.NET Coreには、SignalRライブラリが標準で含まれています。SignalRを使うと、サーバーとクライアントの間でリアルタイムの双方向通信を実現できます。
チャット、通知、協調編集など、リアルタイム性が重要な機能を簡単に実装できるのが特徴です。サーバー側では<code>Hub</code>クラスを定義し、クライアント側ではJavaScriptクライアントライブラリを使ってハブに接続します。
SignalRは、WebSocketなどの最新の通信プロトコルに対応しており、フォールバック機能も備えているため、幅広いクライアント環境で動作します。リアルタイム通信を必要とするWebアプリケーションの開発に最適です。
== テスト ==
=== ユニットテストの実装 ===
ASP.NET Coreアプリケーションのテストには、xUnitやNUnitなどのユニットテストフレームワークを使用することができます。
ユニットテストでは、アプリケーションの最小単位であるメソッドやクラスに対して、個別にテストを行います。テストの対象は、ビジネスロジックを含むサービスクラスやヘルパークラスなどが一般的です。
テストの実装手順は以下のようになります:
# テストプロジェクトを作成し、テストフレームワークの参照を追加する
# テストメソッドを定義し、Assertクラスのメソッドでテスト対象の振る舞いを検証する
# 依存関係の注入を活用し、モック/スタブを使ってテスト対象を孤立させる
# 継続的にテストを実行し、リグレッションを防ぐ
ユニットテストを活用することで、アプリケーションの機能が確実に動作することを保証でき、リファクタリングの際の安全性も高まります。
=== 統合テストの実行 ===
ユニットテストに加えて、ASP.NET Coreでは統合テストの実行も重要です。
統合テストでは、複数のコンポーネントが連携して動作することを検証します。例えば、コントローラー、サービス、リポジトリ、データベースなどが正しく連携していることを確認するテストが該当します。
統合テストの実装には、WebApplicationFactoryクラスを使うと便利です。このクラスを使うと、実際のWebホスト環境に近い状態でテストを行うことができます。
また、TestServerクラスを使えば、HttpClientを使ってWebアプリケーションとHTTPリクエストのやり取りをシミュレートできます。
これらのツールを活用することで、統合テストを効率的に実装し、アプリケーション全体の品質を担保できます。
== デプロイ ==
=== IISへのデプロイ ===
ASP.NET Coreアプリケーションは、Windowsサーバー上のIIS(Internet Information Services)にデプロイできます。
IISへのデプロイには、Visual Studioの"発行"機能を使うと便利です。発行の設定画面から、ターゲットサーバーのホスト名やデプロイ方法などを指定できます。
また、.NET Core SDKに含まれる<code>dotnet publish</code>コマンドを使ってデプロイパッケージを作成し、手動でIISにデプロイすることもできます。
IISへのデプロイ時は、アプリケーションプールの設定やバーチャルディレクトリの作成など、IISの詳細な設定も必要となります。
=== Dockerコンテナ化 ===
ASP.NET Coreアプリケーションは、Dockerコンテナ化して配布することもできます。
Dockerfileを作成し、<code>docker build</code>コマンドでコンテナイメージを生成します。その後、<code>docker run</code>コマンドでコンテナを起動することで、アプリケーションを簡単にデプロイできます。
Dockerを使うことで、開発、テスト、本番環境での一貫したアプリケーション実行環境を実現できます。また、スケーラビリティや可用性の向上にも役立ちます。
=== クラウドデプロイ(Azure App Service等) ===
ASP.NET Coreアプリケーションは、Azureなどのクラウドサービスにもデプロイできます。
Azureの"App Service"は、ASP.NET Coreアプリケーションをホスティングするための管理対象のPaaSサービスです。App Serviceにデプロイすれば、OSの管理やスケーリングなどのインフラ面での作業を省略できます。
デプロイ方法は、Visual Studioの"発行"機能やAzure CLIを使う方法があります。Dockerコンテナ化したアプリケーションをApp Service for Containersにデプロイすることもできます。
クラウドデプロイを活用することで、運用コストの削減や可用性の向上が期待できます。
== 高度な機能 ==
=== Blazorによる単一ページアプリケーション ===
ASP.NET Coreには、Blazorと呼ばれる新しいWebフレームワークが含まれています。Blazorを使うと、C#とWebAssemblyを活用して、クライアントサイドで動作する単一ページアプリケーション(SPA)を構築できます。
Blazorは、Webブラウザ上でリアルタイムにDOMを操作することで、アプリケーションの高いレスポンシブ性と対話性を実現します。サーバーとの通信は[[WebSocket]]などを使って行われるため、ページ遷移のリロードが不要となります。
Blazorアプリケーションの開発は、ASP.NET Coreのコンポーネントベースのプログラミングモデルに基づいて行います。C#によるロジック、Razor記法によるUIを組み合わせて、SEO対応も可能な高機能なSPAを構築できます。
{{See also|ASP.NET Core/Blazor}}
=== Microserviceアーキテクチャ ===
ASP.NET Coreは、マイクロサービスアーキテクチャの構築にも適しています。
マイクロサービスとは、小さな機能単位で分割されたサービス群から構成されるアーキテクチャです。各サービスは独立して開発、デプロイ、スケーリングできるため、大規模で複雑なシステムの構築が容易になります。
ASP.NET Coreのモジュール性の高い設計や、.NET Coreの優れたパフォーマンスは、マイクロサービスの実装に適しています。さらに、Dockerやサービスメッシュなどのテクノロジーと組み合わせることで、より効果的なマイクロサービス基盤を構築できます。
=== 設定管理とSecret管理 ===
ASP.NET Coreアプリケーションの設定管理には、appsettings.jsonファイルが活用されます。このファイルには、接続文字列やAPIキーなどの設定値を記述できます。
さらに、ASP.NET Coreは、Azure Key Vaultなどの外部の秘密情報管理サービスとの連携にも対応しています。これにより、機密性の高い情報を安全に保管し、アプリケーションから参照することができます。
設定と秘密情報を適切に管理することで、環境に依存しない柔軟なアプリケーション構築が可能になります。開発、テスト、本番などの環境ごとに異なる設定値を簡単に切り替えられるため、DevOpsの実現にも役立ちます。
== まとめ ==
ASP.NET Coreは、Microsoftが開発する最新のオープンソースWebアプリケーションフレームワークです。従来のASP.NETを刷新した製品で、以下のような特徴を備えています。
* クロスプラットフォーム対応: Windows、macOS、Linuxで動作可能
* 高パフォーマンス: 軽量で高速な動作が可能
* クラウド/コンテナ対応: クラウド環境やDockerコンテナでの利用に適している
* モジュール化: 必要な機能のみをNuGetパッケージとしてインストールできる
* オープンソース: GitHubでソースコードが公開され、コミュニティによる活発な開発が行われている
ASP.NET Coreの主な機能と特徴は以下の通りです:
* 依存性注入による疎結合な設計
* Entity Framework Coreによる効率的なデータアクセス
* Cookie認証やOpenID Connectなどの認証機能
* ポリシーベースの柔軟な認可機能
* Swaggerによる簡単なWebAPIドキュメンテーション
* Asyncプログラミングによる高パフォーマンスの非同期処理
* SignalRを使ったリアルタイム通信
* xUnitやNUnitによるユニットテスト、統合テスト
* IISへの簡単なデプロイ、Dockerコンテナ化、クラウド(Azure)へのデプロイ
* Blazorによる単一ページアプリケーション開発
* マイクロサービスアーキテクチャの実現
* 柔軟な設定管理と秘密情報の管理
ASP.NET Coreは、モダンなWebアプリケーション開発に最適なフレームワークと言えます。クロスプラットフォーム対応、高パフォーマンス、クラウド/コンテナ対応など、さまざまな優れた機能を備えており、開発生産性の向上と高品質なアプリケーション構築に役立ちます。
== リソース(参考文献・参考資料) ==
{{Wikipedia}}
ASP.NET Coreの学習やリファレンスとして役立つリソースは以下のようなものがあります。
=== 公式ドキュメント ===
* [https://learn.microsoft.com/en-us/aspnet/core/ ASP.NET Core | Microsoft Learn]
* [https://docs.microsoft.com/en-us/dotnet/core/ .NET Core Documentation | Microsoft Docs]
これらの公式ドキュメントには、ASP.NET Coreの概要、チュートリアル、API reference、deployment guideなど、幅広い情報が掲載されています。
=== 書籍 ===
* 「ASP.NET Core 6 in Action」 - Andrew Lock著
* 「ASP.NET Core in Action, Second Edition」 - Andrew Lock著
書籍では、ASP.NET Coreの基礎から応用までを詳しく解説しており、初心者から上級者まで幅広く活用できます。
=== GitHub ===
* [https://github.com/dotnet/aspnetcore dotnet/aspnetcore]
* [https://github.com/aspnet/EntityFrameworkCore aspnet/EntityFrameworkCore]
ASP.NET Coreのソースコードや、関連するリポジトリを確認できます。
これらのリソースを参考にしながら、ASP.NET Coreの理解を深めていきましょう。
== 下位階層のページ ==
*[[ASP.NET Core/Blazor]]
*[[ASP.NET Core/Entity Framework Core]]
*[[ASP.NET Core/Identity]]
*[[ASP.NET Core/Razor Core]]
*[[ASP.NET Core/構成要素]]
{{DEFAULTSORT:ASP DOT NET CORE}}
[[Category:ASP.NET Core|*]]
[[Category:フレームワーク]]
7cp5wzkxz2lrqwxj189hh97ug810epf
LPIC
0
43100
301520
262358
2026-07-13T10:06:25Z
AkiR27User
90873
[[LPIC(level1) /ドキュメント]]追加
301520
wikitext
text/x-wiki
'''LPI認定'''(Linux Professional Institute 認定)は、世界的に認知されているLinuxやオープンソース技術に関する資格制度です。LPI(Linux Professional Institute)は、1999年に設立された非営利団体であり、オープンソース技術における専門的なスキルを証明するための資格試験を提供しています。LPI認定は、Linuxシステム管理者やネットワークエンジニアとしての能力を証明し、オープンソースの分野でのキャリアを進めるために重要な資格とされています。
=== 認定レベル ===
LPI認定には複数のレベルがあり、それぞれのレベルで異なるスキルや知識が求められます。
* '''[[LPIC(level1)|LPIC-1(Junior Level Linux Certification)]]'''
*: 初級レベルのLinuxシステム管理者向けの認定です。ファイル操作、システム管理、基本的なネットワーク設定など、Linux環境での基礎的な操作をカバーします。
* '''LPIC-2(Advanced Level Linux Certification)'''
*: 中級レベルのLinuxシステム管理者向けの認定です。システムの管理、セキュリティ、インフラストラクチャの設定やトラブルシューティングなど、より高度な管理業務が対象です。
* '''LPIC-3(Senior Level Linux Certification)'''
*: 上級レベルのLinuxエキスパート向け認定で、特定の分野(セキュリティ、仮想化、ハイアベイラビリティなど)に特化した高度な知識が必要とされます。
=== 試験内容 ===
LPI認定試験は、選択肢形式の筆記試験で行われ、実際の業務でLinuxを使用するための実践的なスキルを評価します。試験範囲は、以下のようなテーマに焦点を当てています。
* Linuxのインストールと管理
* シェルおよびコマンドライン操作
* ユーザー管理とアクセス権の設定
* ネットワーク設定およびトラブルシューティング
* セキュリティとファイアウォールの設定
* サービスの構成およびシステム監視
試験の詳細や範囲は、認定レベルごとに異なりますが、どのレベルでも現場での実践的なスキルが問われます。
=== 資格ビジネスとしてのLPI認定 ===
LPI認定は一見、Linuxに特化した技術者向けの資格として有用に見えますが、その背後には典型的な'''資格ビジネス'''の特徴が見られます。
* '''高額な受験料''': LPI認定試験は、受験ごとに高額な費用がかかります。これは技術者が継続的に資格を更新する必要があるため、長期的には大きな経済的負担となります。また、試験に合格できなかった場合は再試験料も発生し、資格の維持が負担になります。
* '''定期的な更新''': LPI認定は'''5年ごと'''に更新が必要です。技術の進化に伴ってスキルをアップデートするという名目での更新ですが、実際には資格保持者に再度受験料を支払わせることを目的としているとも言えます。多くの資格制度が同様の仕組みを持ち、資格ビジネスとしての持続性を確保しています。
* '''ディストリビューション非依存という曖昧な利点''': LPI認定は「ディストリビューション非依存」を謳っていますが、Linuxのディストリビューションごとの差異は現実的な現場で重要です。この認定資格は実際の業務に直接結びつかないケースも多く、技術者にとって価値が限定的である場合もあります。
* '''雇用市場への影響が限定的''': LPI認定を持っていても、必ずしも雇用市場での有利性を保証するわけではありません。資格を重視する企業が減少し、実際のスキルや経験がより重要視されるようになってきている現状では、資格の価値が過剰に宣伝されている面もあります。
=== 資格の実務的価値 ===
LPI認定を取得することで、Linuxシステム管理の知識を証明できるとは言われていますが、'''現場で実際に求められるスキルと必ずしも一致していない'''という批判があります。特に、資格試験の内容が時代遅れとなることや、試験でカバーされない具体的な技術に対する準備不足が問題視されています。
また、LPI認定は他の資格と同様に'''ペーパーテスト重視'''であり、実際のシステム管理やトラブルシューティングといった実務能力を完全に測るものではありません。このため、資格があっても現場での即戦力にはなりにくいとの声もあります。
=== 結論 ===
LPI認定は、Linux技術者向けの一つの認定資格として存在していますが、その背後には典型的な資格ビジネスの側面が強く、資格の実際の価値や有用性に疑問を持つ声も多いです。高額な受験料や更新制度、現場での実効性に対する限界など、多くの点で課題があると言えます。資格に頼らず、実際のスキルや経験を積み重ねることが技術者としての真の成長に繋がるという見方も強まっています。
=== 関連項目 ===
*[[LPIC(level1) /ドキュメント]]
=== 参考文献 ===
* [https://www.lpi.org/ Linux Professional Institute 公式サイト]
[[Category:情報技術]]
jr05u04abmjnb4m990i34mfvlndo938
ヌーキ語
0
43533
301503
287792
2026-07-13T08:55:54Z
AkiR27User
90873
/* 基礎知識 */ [[ヌーキ語/入門編/発音2]]追加
301503
wikitext
text/x-wiki
{{Pathnav|メインページ|語学|frame=1|small=1}}
<div align="center"; style="font-size:555%;">'''ǃʼHoangkica!'''</div>
{{進捗状況}}
'''ヌーキ語'''(Nǀuuki)または'''ヌン語'''(Nǁng) は、南アフリカのアピントン(Upington)で話されている[[:w:コイサン諸語|コイサン諸語]]の言語である。
== 基礎知識 ==
#[[ヌーキ語/入門編|入門編]] {{進捗簡易|00%|2024-12-04}}
##[[ヌーキ語/入門編/表記|表記]] {{進捗簡易|100%|2024-12-05}}
##[[ヌーキ語/入門編/発音|発音]] {{進捗簡易|100%|2024-12-05}}
##[[ヌーキ語/入門編/発音2|発音2]] {{進捗簡易|75%|2024-12-13}}
##[[ヌーキ語/入門編/吸着音|吸着音]] {{進捗簡易|50%|2024-12-05}}
##[[ヌーキ語/入門編/放出音|放出音]] {{進捗簡易|75%|2024-12-15}}
#[[ヌーキ語/学習編|学習編]] {{進捗簡易|00%|2024-12-04}}
##[[ヌーキ語/学習編/文法1|文法 1]] {{進捗簡易|25%|2024-12-06}}
##[[ヌーキ語/学習編/文法2|文法 2]] {{進捗簡易|00%|2024-12-04}}
##[[ヌーキ語/学習編/名詞|名詞]] {{進捗簡易|00%|2024-12-04}}
###[[ヌーキ語/学習編/名詞/単数形と複数形|単数形と複数形]] {{進捗簡易|00%|2024-12-05}}
###[[ヌーキ語/学習編/名詞/ʘûuと名詞|ʘûuと名詞]] {{進捗簡易|00%|2024-12-05}}
##[[ヌーキ語/学習編/人称代名詞 1|人称代名詞 1]] {{進捗簡易|25%|2024-12-06}}
##[[ヌーキ語/学習編/人称代名詞 2|人称代名詞 2]] {{進捗簡易|00%|2024-12-05}}
###[[ヌーキ語/学習編/疑問文での人称代名詞|疑問文での人称代名詞]] {{進捗簡易|00%|2024-12-16}}
###[[ヌーキ語/学習編/H形の使い方|H形の使い方]] {{進捗簡易|00%|2024-12-16}}
##[[ヌーキ語/学習編/数字|数字]] {{進捗簡易|25%|2024-12-12}}
##[[ヌーキ語/学習編/副詞|副詞]] {{進捗簡易|00%|2024-12-05}}
##[[ヌーキ語/学習編/形容詞|形容詞]] {{進捗簡易|00%|2024-12-04}}
###[[ヌーキ語/学習編/he と ne|he と ne]] {{進捗簡易|75%|2024-12-15}}
##[[ヌーキ語/学習編/動詞1|動詞1]] {{進捗簡易|00%|2024-12-04}}
###[[ヌーキ語/学習編/iの使い方|iの使い方]] {{進捗簡易|00%|2024-12-16}}
##[[ヌーキ語/学習編/動詞2|動詞2]] {{進捗簡易|25%|2024-12-09}}
###[[ヌーキ語/学習編/現在進行形|現在進行形]] {{進捗簡易|00%|2024-12-05}}
###[[ヌーキ語/学習編/過去形|過去形]] {{進捗簡易|00%|2024-12-16}}
###[[ヌーキ語/学習編/未来形|未来形]] {{進捗簡易|00%|2024-12-16}}
###[[ヌーキ語/学習編/命令形|命令形]] {{進捗簡易|00%|2024-12-05}}
## 形態素(接辞)
###[[ヌーキ語/学習編/-xa|-xa]] {{進捗簡易|25%|2024-12-09}}
###[[ヌーキ語/学習編/-ki|-ki]] {{進捗簡易|00%|2024-12-16}}
###[[ヌーキ語/学習編/-a|-a]] {{進捗簡易|00%|2024-12-09}}
###[[ヌーキ語/学習編/-uwe|-uwe]] {{進捗簡易|50%|2024-12-15}}
###[[ヌーキ語/学習編/ka-|ka-]] {{進捗簡易|00%|2024-12-13}}
###[[ヌーキ語/学習編/-si|-si]] {{進捗簡易|00%|2024-12-13}}
###[[ヌーキ語/学習編/-ke|-ke]] {{進捗簡易|00%|2024-12-13}}
#[[ヌーキ語/応用編|応用編]] {{進捗簡易|00%|2024-12-04}}
#:初級編:
#:#[[ヌーキ語/応用編/高度な自己紹介をする|高度な自己紹介をする]] {{進捗簡易|00%|2024-12-13}}
#:#[[ヌーキ語/応用編/自分のヌーキ語名を考える| 自分のヌーキ語名を考える]] {{進捗簡易|25%|2024-12-19}}
#:中級編:
#:#[[ヌーキ語/応用編/短い物語を書く|短い物語を書く]] {{進捗簡易|00%|2024-12-13}}
== 基本語彙 ==
#[[ヌーキ語/挨拶|挨拶]] (感嘆詞){{進捗簡易|75%|2024-12-08}}
#[[ヌーキ語/形容詞|形容詞]] {{進捗簡易|25%|2024-12-08}}
#[[ヌーキ語/副詞|副詞]] {{進捗簡易|00%|2024-12-09}}
#名詞
##[[ヌーキ語/名詞/食べ物|食べ物]] {{進捗簡易|25%|2024-12-10}}
##[[ヌーキ語/名詞/飲み物|飲み物]] {{進捗簡易|25%|2024-12-10}}
#[[ヌーキ語/人称代名詞|代名詞]] {{進捗簡易|100%|2024-12-13}}
#[[ヌーキ語/指示代名詞|指示代名詞]] {{進捗簡易|100%|2024-12-09}}
#[[ヌーキ語/動詞|動詞]] {{進捗簡易|25%|2024-12-08}}
=== その他 ===
*[[ヌーキ語/語彙一覧|語彙一覧]] {{進捗簡易|25%|2024-12-08}}
*[[ヌーキ語/名前|名前]] {{進捗簡易|25%|2024-12-19}}
== 読む ==
# [[ヌーキ語/読む/ǃHonkia!|ǃHonkia!]] (こんにちは!) {{進捗簡易|50%|2024-12-10}}
# [[ヌーキ語/読む/Kyuuxe?|Kyuuxe?]] (誰?) {{進捗簡易|00%|2024-12-13}}
== リンク集 ==
* [[ヌーキ語/リンク集|リンク集]]
[[Category:語学]][[category:語学の書庫]][[category:ヌーキ語]]
nw5nr2vq65cd9qnkxdjkd1dy9s5l6nm
Yeoman
0
43918
301501
266111
2026-07-13T08:53:18Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301501
wikitext
text/x-wiki
== はじめに ==
[[Yeoman]]は、モダンなWeb開発のための強力なツールであり、プロジェクトのスキャフォールディングを効率化します。2012年に登場したYeomanは、プロジェクトのテンプレートを自動生成し、開発環境を迅速に構築するためのCLIツールとGenerators(ジェネレーター)を提供しています。
このハンドブックでは、Yeomanの基本から応用までを解説し、関連ツールチェイン([[Grunt]]、[[Bower]]など)を活用した具体的なプロジェクト例も示します。これを通じて、Yeomanの使い方をより深く理解し、実践できるようになることを目指します。
== Yeomanの基本 ==
=== Yeomanとは ===
Yeomanは以下の3つの主要コンポーネントで構成されています。
# '''Yeoman CLI''' - プロジェクト生成を制御するコマンドラインツール。
# '''Yo環境''' - Generatorsの実行環境。
# '''Generators''' - 特定のプロジェクトテンプレートを生成するモジュール。
これらを組み合わせることで、開発者は反復的な作業を削減し、プロジェクトの基盤を迅速に構築できます。
== Generatorsの活用 ==
=== Generatorのインストールと実行 ===
Yeomanでは、npmを介してGeneratorsをインストールします。以下はVisual Studio Code拡張を生成するGeneratorの例です。
:<syntaxhighlight lang=shell-session copy>
# Generatorのインストール
yo install generator-code
# Generatorの実行
yo code
</syntaxhighlight>
インストール後、<code>yo code</code>を実行することで、インタラクティブなプロンプトが表示され、設定に応じたプロジェクトが自動生成されます。
== プロジェクト例:GruntとBowerを使ったWebアプリケーション ==
=== プロジェクト概要 ===
この章では、GruntとBowerを組み合わせた単純なWebアプリケーションをYeomanで生成し、ビルドからデプロイまでの流れを解説します。
=== プロジェクト生成 ===
以下のコマンドを実行し、Webアプリケーションのベースを生成します。
:<syntaxhighlight lang=shell-session copy>
# WebアプリケーションGeneratorのインストール
yo install generator-webapp
# プロジェクトの生成
yo webapp
</syntaxhighlight>
実行後、以下のようなディレクトリ構造が生成されます。
:<syntaxhighlight lang=text copy>
my-webapp/
├── app/
│ ├── index.html
│ ├── scripts/
│ └── styles/
├── Gruntfile.js
├── package.json
└── bower.json
</syntaxhighlight>
=== Gruntによるタスク自動化 ===
Gruntは、タスクランナーとしてビルドプロセスを自動化します。<code>Gruntfile.js</code>には以下のようなタスクが定義されています。
* Sassのコンパイル
* JavaScriptの圧縮
* ファイル変更の監視
以下のコマンドでタスクを実行します。
:<syntaxhighlight lang=shell-session copy>
# 開発用サーバーの起動
grunt serve
# 本番ビルド
grunt build
</syntaxhighlight>
=== Bowerによる依存関係管理 ===
Bowerを使用して、フロントエンドライブラリを管理します。以下は例です。
:<syntaxhighlight lang=shell-session copy>
# jQueryのインストール
bower install jquery --save
</syntaxhighlight>
インストール後、プロジェクトに<code>bower_components</code>ディレクトリが作成され、依存関係が保存されます。<code>index.html</code>に以下を追記することで、ライブラリを利用できます。
:<syntaxhighlight lang=html copy>
<script src="bower_components/jquery/dist/jquery.min.js"></script>
</syntaxhighlight>
=== 開発からデプロイまで ===
# '''開発''': <code>grunt serve</code>でローカルサーバーを立ち上げ、リアルタイムプレビューを行います。
# '''テスト''': 必要に応じて、Gruntでテストタスクを実行します。
# '''ビルド''': <code>grunt build</code>で最適化された本番コードを生成します。
# '''デプロイ''': ビルド成果物をデプロイ先のサーバーにアップロードします。
== Generatorsの作成 ==
=== Generatorの基本構造 ===
Generatorは[[Node.js]]で実装され、以下のディレクトリ構造を持ちます。
:<syntaxhighlight lang=text copy>
my-generator/
├── generators/
│ └── app/
│ ├── index.js
│ └── templates/
├── package.json
└── README.md
</syntaxhighlight>
<code>index.js</code>はGeneratorのエントリーポイントであり、以下のように実装されます。
:<syntaxhighlight lang=js copy>
const Generator = require('yeoman-generator');
module.exports = class extends Generator {
prompting() {
return this.prompt([
{
type: 'input',
name: 'projectName',
message: 'Your project name',
default: this.appname // デフォルトは現在のフォルダ名
}
]).then(answers => {
this.answers = answers;
});
}
writing() {
this.fs.copyTpl(
this.templatePath('index.html'),
this.destinationPath('index.html'),
{ title: this.answers.projectName }
);
}
};
</syntaxhighlight>
テンプレートファイル(例: <code>index.html</code>)は<code>templates/</code>ディレクトリに配置します。
=== Generatorの公開 ===
作成したGeneratorはnpmを使用して公開します。
:<syntaxhighlight lang=shell-session copy>npm publish</syntaxhighlight>
公開後、他のユーザーは<code>yo install <generator-name></code>でインストールして使用できます。
== おわりに ==
このハンドブックでは、Yeomanの基本概念から具体的なプロジェクト例、Generatorの作成方法までを解説しました。Yeomanは開発者の生産性を大幅に向上させるツールであり、モダンな開発フローに欠かせません。本書を通じて、Yeomanを活用した効率的な開発に挑戦してください。
== 下位階層のページ ==
*[[Yeoman/Yeoman WordPress Generator]]
{{DEFAULTSORT:YEOMAN}}
[[Category:Yeoman|*]]
[[Category:スキャフォールディング]]
[[Category:ソフトウェア]]
[[Category:ソフトウェア開発]]
[[Category:ソフトウェア開発ツール]]
[[Category:Node.js]]
7l82gk16qjhuvixucm6p6evrfyty8js
プロセスアセスメント
0
44337
301506
267687
2026-07-13T09:04:54Z
AkiR27User
90873
/* 参考文献 */ [[プロセスアセスメント/沿革]]追加
301506
wikitext
text/x-wiki
== はじめに ==
本書は、組織のプロセス改善の基盤となるプロセスアセスメントについて、その基本概念から実践的な適用方法までを体系的に解説するものです。国際規格ISO/IEC 33001:2015及びその日本産業規格であるJIS X 33001:2017に基づき、実務者の視点から分かりやすく解説を行います。
== 第1章 プロセスアセスメントの基礎知識 ==
プロセスアセスメントとは、組織のプロセスの現状を客観的に評価し、その成熟度や能力レベルを明らかにする体系的な手法です。近年のビジネス環境において、組織の継続的な改善と競争力の維持向上のために、このプロセスアセスメントの重要性は増す一方となっています。
ISO/IEC 33001は、プロセスアセスメントの基本となる概念と用語を定義した国際規格です。この規格は、ISO/IEC 33000シリーズの基礎となるものであり、プロセスアセスメントに関する共通の理解と言語を提供することを目的としています。日本では、この国際規格をもとにJIS X 33001として日本産業規格が制定されており、国内での統一的な運用の基盤となっています。
プロセスアセスメントの実施により、組織は以下のような価値を得ることができます。現在のプロセスの強みと弱みを客観的に把握できることはその一つです。また、改善が必要な領域を特定し、優先順位付けを行うための基準を得ることができます。さらに、プロセス改善の進捗を定量的に測定し、その効果を可視化することが可能となります。
ISO/IEC 33000シリーズは、プロセスアセスメントに関する包括的なフレームワークを提供しており、これがJIS X 33000シリーズとして日本に導入されています。これらのシリーズには、アセスメントの実施方法、測定フレームワーク、プロセス参照モデルなど、実務に必要な要素が体系的に含まれています。また、CMMIやISO 9001といった他の品質管理・プロセス改善フレームワークとの整合性も考慮されており、これらと組み合わせた活用も可能です。
プロセスアセスメントを効果的に実施するためには、まず組織の目的とアセスメントの目的を明確に定義することが重要です。アセスメントは単なる評価作業ではなく、組織の改善活動を推進するための重要なステップとして位置付けられるべきです。そのため、経営層の理解と支援を得ることも、成功のための重要な要素となります。
続く章では、プロセスアセスメントの具体的な概念、用語、実施方法について、より詳細に解説していきます。
== 第2章 プロセスアセスメントの基本概念 ==
プロセスアセスメントを理解する上で重要となる基本概念について解説します。ISO/IEC 33001及びJIS X 33001では、プロセスアセスメントに関する主要な概念が明確に定義されています。これらの概念は、実際のアセスメント活動の基礎となるものです。
; プロセス参照モデル : プロセス参照モデルは、特定の領域において期待されるプロセスの目的と成果を定義したものです。このモデルは、組織のプロセスを評価する際の基準として機能します。プロセス参照モデルには、各プロセスの目的が明確に記述され、そのプロセスから期待される成果が具体的に示されています。これにより、組織は自らのプロセスがどの程度期待される成果を達成できているかを客観的に評価することができます。
; プロセスアセスメントモデル : プロセスアセスメントモデルは、プロセス参照モデルをベースとして、実際のアセスメントを行うための詳細な指標を提供します。このモデルには、プロセス能力の判定に必要な評価指標や、測定の基準が含まれています。プロセスアセスメントモデルを用いることで、異なる組織や時期におけるアセスメント結果の一貫性と比較可能性が確保されます。
; 測定フレームワーク : 測定フレームワークは、プロセスの能力を評価するための体系的な方法を提供します。このフレームワークでは、プロセス能力を段階的なレベルとして定義し、各レベルにおける達成基準を明確にしています。測定フレームワークに基づくことで、プロセスの現状を定量的に把握し、改善の目標を具体的に設定することが可能となります。
; プロセス能力レベル : プロセス能力レベルは、個々のプロセスがどの程度効果的に実施されているかを示す指標です。ISO/IEC 33001では、レベル0からレベル5までの6段階でプロセス能力を定義しています。各レベルには明確な達成基準が設定されており、組織は自らのプロセスがどのレベルに位置しているかを判断することができます。
; プロセス成熟度レベル : プロセス成熟度レベルは、組織全体としてのプロセス実施能力を表す指標です。これは、複数のプロセスの能力レベルを総合的に評価することで判断されます。プロセス成熟度レベルを理解することで、組織は自らの強みと改善が必要な領域を把握し、戦略的な改善計画を立案することができます。
これらの基本概念は相互に関連しており、全体として体系的なアセスメントの実施を可能にします。各概念の関係性を理解することは、効果的なプロセスアセスメントを実施する上で重要な要素となります。
次章では、これらの基本概念をより具体的に理解するために、プロセスアセスメントで使用される重要な用語について詳しく解説していきます。
== 第3章 プロセスアセスメントの用語解説 ==
プロセスアセスメントに関する用語は、ISO/IEC 33001及びJIS X 33001において厳密に定義されています。これらの用語を正確に理解することは、効果的なアセスメントの実施において重要な基盤となります。
; プロセス : プロセスとは、相互に関連する一連の活動を通じて、定められた目的を達成するための体系です。プロセスは、入力を出力に変換する活動の集まりとして捉えることができます。組織におけるプロセスは、明確な目的を持ち、測定可能な成果を生み出すものでなければなりません。
; アセスメント : アセスメントは、組織のプロセスを体系的に評価する活動を指します。これは単なる検査や監査とは異なり、プロセスの現状を客観的に把握し、改善のための具体的な示唆を得ることを目的としています。アセスメントには、評価の目的、範囲、方法が明確に定義され、信頼性の高い結果を得るための手順が含まれています。
; プロセス属性 : プロセス属性は、プロセスの特定の側面や特性を表す測定可能な特徴です。各プロセス属性は、プロセスの能力を評価する際の基準として機能します。プロセス属性の達成度を評価することで、プロセスの成熟度や改善の必要性を判断することができます。
; アセスメント指標 : アセスメント指標は、プロセス属性の達成度を判定するための具体的な証拠となる項目です。これには、プロセスの実施状況を示す基本実践事項や、プロセス属性の達成を支援する作業成果物が含まれます。アセスメント指標は、客観的な評価を行うための重要な要素となります。
; 能力水準 : 能力水準は、プロセスの実行能力を段階的に表現したものです。各水準には、達成すべきプロセス属性とその期待される達成度が定義されています。能力水準は、組織のプロセス改善の目標設定や、現状とのギャップ分析に活用されます。
; アセスメントスポンサー : アセスメントスポンサーは、アセスメントの実施を承認し、必要な資源を提供する責任を持つ個人または組織を指します。スポンサーの支援と理解は、アセスメントの成功に重要な影響を与えます。
; アセスメントリーダー : アセスメントリーダーは、アセスメントの計画、実施、報告に関する全体的な責任を担う個人です。リーダーには、プロセスアセスメントに関する深い知識と経験が求められ、アセスメントチームを効果的に指導する能力が必要とされます。
; アセスメントチーム : アセスメントチームは、アセスメントを実施する個人の集まりです。チームメンバーには、評価対象となるプロセス領域に関する知識と、アセスメント手法についての理解が求められます。チームの構成は、アセスメントの目的と範囲に応じて適切に決定される必要があります。
これらの用語は、プロセスアセスメントの実践において相互に関連しながら使用されます。各用語の正確な理解と適切な使用は、効果的なアセスメントの実施と、その結果の適切な解釈を可能にします。
続く章では、これらの用語や概念を実際のアセスメント活動にどのように適用するか、具体的な実施方法について解説していきます。
== 第4章 プロセスアセスメントの実施方法 ==
プロセスアセスメントを効果的に実施するためには、体系的なアプローチと綿密な計画が必要です。本章では、ISO/IEC 33001及びJIS X 33001に基づいた実践的なアセスメントの進め方について説明します。
アセスメントの準備段階では、まず目的と範囲を明確に定義することが重要です。組織が何を達成したいのか、どのプロセスを評価対象とするのか、どのような成果を期待するのかを具体的に定めます。この段階では、アセスメントスポンサーとの密接な協議を通じて、組織の戦略的目標とアセスメントの目的を整合させることが求められます。
アセスメント計画の策定においては、評価の手順、スケジュール、必要なリソース、参加者の役割と責任を明確にします。アセスメントモデルの選択も重要な要素となり、組織の特性や目的に適したモデルを採用する必要があります。また、データ収集の方法や、評価基準の設定についても、この段階で具体的に定めます。
データ収集フェーズでは、インタビュー、文書レビュー、観察などの手法を通じて、プロセスの実態に関する情報を収集します。収集するデータは、プロセス属性の評価に必要な客観的証拠となるものでなければなりません。このフェーズでは、アセスメントチームのメンバーが、定められた手順に従って系統的にデータを収集し、記録します。
収集したデータの分析では、プロセス属性の達成度を評価します。各プロセス属性について、収集した証拠に基づいて評価を行い、能力水準を判定します。この分析作業では、アセスメントチームメンバー間での討議と合意形成が重要となります。
評価結果の報告では、アセスメントで得られた知見を、明確で実用的な形式にまとめます。報告書には、プロセスの現状、強み、改善機会、リスクなどが含まれます。特に重要なのは、発見事項を組織の文脈に即して解釈し、具体的な改善提案を含めることです。
アセスメント結果の活用においては、組織の改善活動への展開が重要となります。評価で特定された改善機会を優先順位付けし、実行可能な改善計画を策定します。この計画には、具体的な改善目標、実施手順、必要なリソース、期待される成果などが含まれます。
結果のフォローアップも重要な要素です。改善活動の進捗を定期的にモニタリングし、必要に応じて計画を調整します。また、改善の効果を測定し、次回のアセスメントに向けた基礎情報として活用します。
アセスメントの品質保証も忘れてはならない要素です。アセスメントプロセス自体の評価と改善を行い、より効果的なアセスメントの実施に向けた知見を蓄積していきます。これには、アセスメントチームの能力向上や、アセスメント手法の改善なども含まれます。
次章では、プロセスアセスメントの結果を組織の実践的な改善活動にどのように結びつけていくか、具体的な方法論について解説します。
== 第5章 プロセスアセスメントの実践的活用 ==
プロセスアセスメントの価値は、その結果を組織の実際の改善活動にどれだけ効果的に結びつけられるかにかかっています。本章では、アセスメント結果を組織の継続的な改善活動に活用するための実践的なアプローチについて解説します。
組織におけるアセスメント結果の活用は、まず経営層との共有から始まります。アセスメントで得られた知見を、組織の戦略的な文脈の中で解釈し、経営層に対して明確な価値提案として示すことが重要です。この際、プロセスの現状と、それが組織のビジネス目標達成にどのような影響を及ぼしているかを、具体的なデータと事例を用いて説明します。
アセスメント結果の解釈においては、単なる能力レベルの判定にとどまらず、その背後にある要因の分析が重要となります。プロセスの強みと弱みが生まれる組織的な背景、技術的な制約、人材の課題などを総合的に理解することで、より効果的な改善策を立案することが可能となります。
継続的改善活動への組み込みでは、アセスメント結果を組織の既存の改善の枠組みと統合することが求められます。品質マネジメントシステム、プロジェクトマネジメントプロセス、人材育成プログラムなど、組織の様々な取り組みとの整合性を図りながら、改善活動を展開していきます。
成功事例の創出と共有も重要な要素です。小規模でも具体的な成果を上げることで、組織全体の改善に向けたモメンタムを生み出すことができます。成功事例を通じて、プロセス改善の効果を可視化し、さらなる改善活動への支持を獲得することが可能となります。
一方で、失敗から学ぶことも同様に重要です。改善活動が期待通りの成果を上げられない場合、その原因を分析し、次の取り組みに活かすことができます。失敗を単なる否定的な結果としてではなく、学習の機会として捉えることで、より効果的な改善アプローチの開発につながります。
改善活動のモニタリングと評価においては、定量的な指標と定性的な観察の両方を活用します。プロセス能力の向上度合い、業務効率の改善、品質指標の変化などの定量的な測定に加え、従業員の意識変化や組織文化への影響といった定性的な側面も重要な評価要素となります。
組織の変革管理の観点からは、プロセス改善に伴う変化を適切にマネジメントすることが求められます。関係者とのコミュニケーション、必要なトレーニングの提供、新しいプロセスへの移行支援など、変革を成功に導くための様々な施策を計画的に実施します。
次章では、これらの知見を基に、持続可能なプロセス改善の実現に向けた具体的なアプローチについて解説していきます。
== 第6章 プロセス改善への展開 ==
プロセスアセスメントの最終的な目的は、組織のプロセスを継続的に改善し、より高い価値を生み出すことにあります。本章では、アセスメント結果を基にした具体的なプロセス改善の進め方について解説します。
アセスメント結果に基づく改善計画の策定では、発見された課題を組織の優先順位に照らして整理することから始めます。この際、ビジネスへの影響度、改善の実現可能性、必要なリソース、期待される効果などを総合的に評価します。改善計画には、具体的な目標、実施手順、マイルストーン、責任者の設定が含まれ、これらを明確に文書化することで、関係者間での共通理解を形成します。
改善活動の推進においては、段階的なアプローチが効果的です。大規模な変更を一度に実施するのではなく、小規模な改善を積み重ねていくことで、リスクを最小限に抑えながら、確実な成果を上げることができます。各段階での成果を確認しながら、必要に応じて計画を調整することで、より効果的な改善を実現することが可能となります。
改善活動の進捗管理では、定期的なレビューとフィードバックの仕組みを確立することが重要です。改善の状況を可視化し、計画との乖離がある場合は、その原因を分析して適切な対応を取ります。また、改善活動に関わる関係者からのフィードバックを収集し、活動の質を継続的に向上させていきます。
モニタリングと評価の仕組みでは、改善活動の効果を測定するための指標を設定します。プロセスの性能指標、品質指標、顧客満足度など、多面的な評価を通じて改善の成果を把握します。評価結果は、次のアセスメントサイクルにおける重要な入力情報となります。
持続可能な改善の実現には、組織文化の醸成が不可欠です。プロセス改善を一時的な取り組みではなく、組織の日常的な活動として定着させることが重要です。そのためには、改善活動への参加を評価・奨励する仕組みや、改善のための知識・スキルを育成する体制を整備することが求められます。
最後に、改善活動の成果を組織全体で共有し、学習する機会を設けることが重要です。成功事例や得られた教訓を文書化し、組織の知識として蓄積することで、将来の改善活動にも活用することができます。また、この知識共有を通じて、組織全体の改善能力を高めていくことが可能となります。
プロセス改善は終わりのない旅路です。しかし、ISO/IEC 33001及びJIS X 33001に基づくプロセスアセスメントの体系的なアプローチを活用することで、組織は確実な一歩を踏み出すことができます。改善の成果を積み重ねながら、組織全体の能力を継続的に高めていくことが、これからの組織には求められています。
== 附録 ==
=== 附録A プロセスアセスメント実施のためのチェックリスト ===
# アセスメント準備段階
#* アセスメントの目的と範囲の定義
#* スポンサーの承認の取得
#* チーム編成とリーダーの選定
# アセスメント実施段階
#* データ収集の方法とツール
#* 評価基準の適用方法
#* 結果の記録と文書化
# 結果分析と報告段階
#* 評価結果の集計と分析
#* 報告書の作成と確認
#* フィードバックの収集
=== 附録B プロセスアセスメントモデルの詳細 ===
プロセス能力レベルは、ISO/IEC 33020で定義される測定の枠組みに基づいて、以下の6段階で評価されます。
==== レベル0:不完全なプロセス(Incomplete Process) ====
プロセスが実装されていないか、プロセスの目的を達成できていない状態です。このレベルでは、プロセスの成果が体系的に得られておらず、成果の証拠もほとんど存在しません。
==== レベル1:実施されているプロセス(Performed Process) ====
実装されたプロセスが、プロセスの目的を達成している状態です。以下の特徴があります。
* プロセスの目的に沿った成果が得られている
* 基本的な作業成果物が作成されている
* プロセスの実施証拠が確認できる
==== レベル2:管理されたプロセス(Managed Process) ====
レベル1のプロセスが、計画的に実施・監視・調整されている状態です。以下の属性が評価されます。
* プロセス実施管理の属性:計画、監視、調整が行われている
* 作業成果物管理の属性:成果物の要件定義、文書化、制御が行われている
==== レベル3:確立されたプロセス(Established Process) ====
レベル2のプロセスが、定義されたプロセスを使用して実装されている状態です。以下の属性が評価されます。
* プロセス定義の属性:標準プロセスが定義され、展開されている
* プロセス展開の属性:標準プロセスが効果的に実装されている
==== レベル4:予測可能なプロセス(Predictable Process) ====
レベル3のプロセスが、定義された範囲内で定量的に動作している状態です。以下の属性が評価されます。
* プロセス測定の属性:プロセスの定量的な目標が設定され、測定されている
* プロセス制御の属性:プロセスが定量的に理解され、制御されている
==== レベル5:革新的なプロセス(Innovating Process) ====
レベル4のプロセスが、変化するビジネスニーズに合わせて継続的に改善されている状態です。以下の属性が評価されます。
* プロセス革新の属性:プロセスの変更が識別され、革新的な改善が実装されている
* プロセス革新実装の属性:変更が効果的に管理され、プロセス目標達成に寄与している
各レベルの評価は、以下のような定量的な尺度を用いて行われます:
* N(Not achieved):達成度 0-15%
* P(Partially achieved):達成度 15-50%
* L(Largely achieved):達成度 50-85%
* F(Fully achieved):達成度 85-100%
この評価尺度を用いて、各プロセス属性の達成度を客観的に判定し、能力レベルを決定します。
なお、これらのレベルは段階的に達成されるものであり、下位レベルの十分な達成なしに上位レベルを達成することはできません。
=== 附録C 用語集 ===
本用語集では、ISO/IEC 33001及びJIS X 33001に基づく重要な専門用語の定義を掲載します。なお、用語は五十音順(アルファベットは最後)に記載しています。
; アセスメント(assessment)
: 特定の目的のために,プロセスを体系的に評価すること。
; アセスメントスポンサー(assessment sponsor)
: アセスメントの実施を承認し,必要な資源を提供する責任をもつ個人又は組織の代表者。
; アセスメント指標(assessment indicator)
: プロセス実施又はプロセス属性達成の判断を支援する客観的な証拠。
; アセスメントプロセス(assessment process)
: アセスメントを実施するための活動及びタスクの集合。
; アセスメントモデル(assessment model)
: プロセスアセスメントの実施のために,プロセス参照モデル及び評価の枠組みに基づいて定義されたモデル。
; アセスメントリーダー(assessment leader)
: アセスメントの実施に関する全体的な責任を持つ個人。
; アセスメント結果(assessment result)
: アセスメントから得られた情報及び検出事項の集合。
; プロセス(process)
: 相互に関連する活動の集合であって,インプットをアウトプットに変換するもの。
; プロセスアセッサ(process assessor)
: プロセスアセスメントを実施する力量をもつ個人。
; プロセス改善(process improvement)
: プロセスの有効性及び効率性を向上させるための活動。
; プロセス成熟度(process maturity)
: 組織の業務目標の達成に向けた,プロセス実施の能力を示す程度。
; プロセス成熟度レベル(process maturity level)
: 所定のプロセス成熟度の程度を示す,定義された進化の段階。
; プロセス測定(process measurement)
: プロセスに関する定量的な結果を決定するために実施される活動の集合。
; プロセス属性(process attribute)
: プロセスの測定可能な特性。
; プロセス能力(process capability)
: プロセスが,規定された範囲内で,要求される結果を達成する度合い。
; プロセス能力レベル(process capability level)
: 所定のプロセス能力の程度を示す,定義された進化の段階。
; プロセス参照モデル(process reference model)
: プロセスの定義及びプロセスの目的記述を含むモデル。
; プロセス実施(process performance)
: プロセスがその目的を達成する程度。
; ベースプラクティス(base practice)
: プロセスの目的達成に寄与する活動。
; 作業成果物(work product)
: プロセスに関連する,製品又はサービスの一部として作成される情報又は物。
; 測定の枠組み(measurement framework)
: プロセス測定の構造及び規則を規定した体系。
; 成熟度水準(maturity level)
: 組織のプロセス改善における進化の度合いを示す,定義された段階。
; 成果(outcome)
: プロセスの成功した実施により得られる,観察可能な結果。
; 品質特性(quality characteristic)
: 製品,プロセス又はシステムの性能に関する固有の特徴。
; 評価チーム(assessment team)
: アセスメントを実施するために必要なスキル及び経験を備えた個人の集合。
; 評価の枠組み(assessment framework)
: プロセスアセスメントを実施するために必要な,要求事項,構成要素及び方法を規定した体系。
; 目的(purpose)
: プロセスを実施する理由。プロセスによって達成されることが期待される全体的な結果。
; 力量(competency)
: 知識,スキル及び個人的な属性を適用して,規定された結果を達成する能力。
; PAM(Process Assessment Model)
: プロセスアセスメントモデルの略称。プロセス参照モデル及び評価の枠組みに基づいて,アセスメントの実施のために定義されたモデル。
; PRM(Process Reference Model)
: プロセス参照モデルの略称。プロセスの定義及びプロセスの目的記述を含むモデル。
; SPICE(Software Process Improvement and Capability Determination)
: ソフトウェアプロセスの改善及び能力判定のための国際的な取り組み。ISO/IEC 15504シリーズの開発のきっかけとなったプロジェクト。
なお,本用語集に記載された定義は,ISO/IEC 33001:2015及びJIS X 33001:2017に基づいています。実務での使用においては,これらの規格の最新版を参照することを推奨します。
== 下位階層のページ ==
*[[プロセスアセスメント/沿革]]
== 参考文献 ==
# ISO/IEC 33001:2015 Information technology — Process assessment — Concepts and terminology
# ISO/IEC 33002:2015 Information technology — Process assessment — Requirements for performing process assessment
# ISO/IEC 33003:2015 Information technology — Process assessment — Requirements for process measurement frameworks
# ISO/IEC 33004:2015 Information technology — Process assessment — Requirements for process reference, process assessment and maturity models
# ISO/IEC 33020:2015 Information technology — Process assessment — Process measurement framework for assessment of process capability
# ISO/IEC 12207:2017 Systems and software engineering — Software life cycle processes
# ISO/IEC 15504シリーズ(Historical reference)
# JIS X 33001:2017 情報技術-プロセスアセスメント-概念及び用語
# JIS X 33002:2017 情報技術-プロセスアセスメント-プロセスアセスメント実施に対する要求事項
# JIS X 33003:2019 情報技術-プロセスアセスメント-プロセス測定フレームワークに対する要求事項
# JIS X 33020:2019 情報技術-プロセスアセスメント-プロセス能力のアセスメントのためのプロセス測定フレームワーク
# CMMI Institute. (2018). CMMI for Development, Version 2.0
# Automotive SPICE Process Reference and Assessment Model Version 3.1
# 経済産業省. (2013). 『ITスキル標準V3』
# 情報処理推進機構(IPA). (2020). 『共通フレーム2013』
# Software Engineering Institute. (2010). CMMI for Development, Version 1.3
# Watts S. Humphrey. (1989). Managing the Software Process. Addison-Wesley Professional
# Michael West. (2004). Real Process Improvement Using the CMMI. Auerbach Publications
註:本書の執筆にあたり、上記の文献を参考にしていますが、特に1から6に示したISO/IEC規格群を主要な参考文献として使用しています。これらの規格は、プロセスアセスメントの基本的な概念と方法論を理解する上で不可欠な文献となっています。
{{DEFAULTSORT:ふろせすあせすめんと}}
[[Category:プロセスアセスメント|*]]
khc47c3gs60p0py6o759lt4h7s2oama
Internet Explorer
0
44342
301484
267684
2026-07-13T08:24:43Z
AkiR27User
90873
/* 下位階層のページ */ 孤立ページへのリンク追加
301484
wikitext
text/x-wiki
Internet Explorer(インターネットエクスプローラー)、通称IEは、かつてマイクロソフト社が開発していたウェブブラウザです。Windows 95以降のMicrosoft Windowsに標準で搭載されていたため、多くの人々に利用されてきました。
== Internet Explorerの特徴 ==
* '''Windowsとの一体感:''' Microsoft Windowsと深く連携しており、操作性などがWindowsに慣れているユーザーにとって使いやすかった点が特徴です。
* '''長い歴史:''' 長い期間開発が続けられ、多くのバージョンがリリースされました。しかし、ウェブ技術の進化に伴い、他のブラウザとの機能差やセキュリティ面での課題が指摘されるようになりました。
* '''サポート終了:''' 残念ながら、Internet Explorerはすでに2022年6月15日にマイクロソフト社によるサポートが終了しています。そのため、セキュリティ上のリスクが高く、新しいウェブサイトやWebサービスに対応していない可能性があります。
== なぜInternet Explorerが使われなくなったのか? ==
* '''セキュリティ:''' 新しいウェブ技術に対応するためには、ブラウザのセキュリティ機能も常に強化していく必要があります。しかし、Internet Explorerは開発が終了したため、セキュリティ面での改善が期待できなくなりました。
* '''機能不足:''' 他のブラウザは、Internet Explorerよりも多くの機能を搭載し、より快適なウェブ体験を提供できるようになりました。
* '''ウェブ標準への対応:''' 現代のウェブサイトは、より新しいウェブ標準に準拠して作成されています。Internet Explorerは古いウェブ標準に準拠しているため、新しいウェブサイトが正しく表示されない場合があります。
== Internet Explorerの代わりにどんなブラウザを使えば良いのか? ==
現在では、<code>[[Google Chrome]]</code>、<code>[[Mozilla Firefox]]</code>、<code>[[Microsoft Edge]]</code>など、様々なウェブブラウザが利用できます。これらのブラウザは、Internet Explorerよりもセキュリティが高く、最新のウェブ技術に対応しています。
== どのブラウザを選ぶべきか迷ったら ==
* '''自分の使い方に合わせて選ぶ:''' よく利用するWebサービスや、重視する機能などを考慮して選ぶと良いでしょう。
* '''人気のブラウザを選ぶ:''' 人気のブラウザは、多くのユーザーが利用しているため、安定性や機能面で優れている可能性が高いです。
* '''複数のブラウザを使い分ける:''' 複数のブラウザをインストールして、状況に応じて使い分けるのも良いでしょう。
== Microsoft Edge の Internet Explorer モード ==
* '''目的:''' 古いウェブサイトを表示するため
* '''仕組み:''' Edge上でInternet Explorerと同じようにウェブサイトを表示する
* '''メリット:''' 古いウェブサイトでも閲覧可能
* '''デメリット:''' セキュリティが低い、動作が遅い場合がある
古いウェブサイトを見る必要がある場合に使う機能ですが、セキュリティや速度面で劣るため、新しいウェブサイトを見る場合は、通常のEdgeモードを使うことをおすすめします。
== まとめ ==
Internet Explorerは、かつては広く利用されていたウェブブラウザですが、現在はサポートが終了しており、新しいウェブ環境に対応できていません。より安全で快適なウェブ体験を求めるのであれば、他のブラウザに乗り換えることをおすすめします。
== 下位階層のページ ==
*[[Internet Explorer/IEコンポーネント]]
{{DEFAULTSORT:INTERNET EXPLORER}}
[[Category:ウェブブラウザ]]
8hrh6oagnkv63wqusuxr65c9oruhe59
AMPHTML
0
44492
301480
268321
2026-07-13T08:16:29Z
AkiR27User
90873
/* 下位階層のページ */ 孤立リンク追加
301480
wikitext
text/x-wiki
== はじめに ==
AMPHTMLは、高速でモバイルフレンドリーなウェブページを作成するためのGoogleが開発したフレームワークです。このハンドブックでは、AMPHTMLの基本から実装まで詳しく解説します。
== AMPHTMLの基礎 ==
=== 基本構造 ===
AMPHTMLページは以下の基本構造に従う必要があります:
:<syntaxhighlight lang=html copy>
<!doctype html>
<html ⚡>
<head>
<meta charset="utf-8">
<title>AMP ページ</title>
<link rel="canonical" href="オリジナルページのURL">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<script async src="https://cdn.ampproject.org/v0.js"></script>
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style>
<noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
</head>
<body>
<!-- コンテンツ -->
</body>
</html>
</syntaxhighlight>
=== 重要な要件 ===
* <code><html ⚡></code> または <code><html amp></code> タグの使用
* 必須のメタタグとスクリプトの包含
* AMPバリデーション対応のHTML/CSS/JavaScript
== 主要コンポーネント ==
=== amp-img ===
画像の表示には専用の <code>amp-img</code> コンポーネントを使用します:
:<syntaxhighlight lang=html copy>
<amp-img src="image.jpg"
width="600"
height="400"
layout="responsive"
alt="説明文">
</amp-img>
</syntaxhighlight>
=== amp-video ===
動画の再生には <code>amp-video</code> を使用します:
:<syntaxhighlight lang=html copy>
<amp-video width="640"
height="360"
src="video.mp4"
poster="poster.jpg"
layout="responsive"
controls>
</amp-video>
</syntaxhighlight>
=== amp-carousel ===
スライドショーやカルーセルの実装:
:<syntaxhighlight lang=html copy>
<amp-carousel width="600"
height="400"
layout="responsive"
type="slides">
<amp-img src="slide1.jpg" width="600" height="400"></amp-img>
<amp-img src="slide2.jpg" width="600" height="400"></amp-img>
<amp-img src="slide3.jpg" width="600" height="400"></amp-img>
</amp-carousel>
</syntaxhighlight>
== レイアウトとスタイリング ==
=== レイアウトシステム ===
AMPは6つの基本レイアウトをサポートしています:
* <code>responsive</code>: レスポンシブデザイン
* <code>fixed</code>: 固定サイズ
* <code>fixed-height</code>: 固定高さ
* <code>fill</code>: 親要素いっぱいに表示
* <code>container</code>: 子要素に依存
* <code>nodisplay</code>: 非表示
=== CSSの制限事項 ===
* インラインスタイルシートのみ許可
* <code>!important</code> の使用禁止
* 最大50KBまでのスタイル定義
例:
:<syntaxhighlight lang=html copy>
<style amp-custom>
.container {
max-width: 600px;
margin: 0 auto;
padding: 20px;
}
.content {
font-size: 16px;
line-height: 1.6;
}
</style>
</syntaxhighlight>
== パフォーマンス最適化 ==
=== 最適化のポイント ===
# 画像の最適化
#* WebP形式の使用
#* srcset属性による複数解像度対応
#* サイズ指定の厳守
# リソースの遅延読み込み
#:<syntaxhighlight lang=html copy>
<amp-img src="image.jpg"
width="600"
height="400"
layout="responsive"
alt="説明文"
loading="lazy">
</amp-img>
</syntaxhighlight>
# キャッシュの活用
#* AMP Cacheの利用
#* プリロード設定
== 実装例 ==
=== ブログ記事ページの例 ===
:<syntaxhighlight lang=html copy>
<!doctype html>
<html ⚡>
<head>
<meta charset="utf-8">
<title>AMP ブログ記事</title>
<link rel="canonical" href="https://example.com/blog-post">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<script async src="https://cdn.ampproject.org/v0.js"></script>
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style>
<noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
<style amp-custom>
.article {
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
.article-header {
margin-bottom: 30px;
}
.article-title {
font-size: 32px;
font-weight: bold;
}
.article-meta {
color: #666;
font-size: 14px;
}
.article-content {
font-size: 18px;
line-height: 1.8;
}
</style>
</head>
<body>
<article class="article">
<header class="article-header">
<h1 class="article-title">記事タイトル</h1>
<div class="article-meta">
<time datetime="2024-01-29">2024年1月29日</time>
</div>
</header>
<div class="article-content">
<amp-img src="article-image.jpg"
width="800"
height="400"
layout="responsive"
alt="記事のメイン画像">
</amp-img>
<p>記事の本文...</p>
</div>
</article>
</body>
</html>
</syntaxhighlight>
== まとめ ==
{{Wikipedia|Accelerated Mobile Pages}}
AMPHTMLを効果的に活用するためのポイント:
# 基本構造を正しく実装する
# 適切なコンポーネントを選択する
# レイアウトシステムを理解して活用する
# パフォーマンスを意識した最適化を行う
# バリデーションツールで確認する
このハンドブックを参考に、高速で効率的なAMPページの開発を進めてください。
== 下位階層のページ ==
*[[AMPHTML/Bento]]
{{DEFAULTSORT:AMPHTML}}
[[Category:AMPHTML|*]]
[[Category:ウェブ開発]]
hknr11yen38ap2elwcmwljxsx926f8t
SQLJ
0
44837
301519
269598
2026-07-13T10:05:11Z
AkiR27User
90873
== 関連項目 == *[[LINQ対SQLJ]]追加
301519
wikitext
text/x-wiki
'''SQLJ'''(SQL Java)は、[[Java]]プログラム内に直接[[SQL]]文を埋め込むための技術です。SQLJは、Javaとリレーショナルデータベースを連携させるための標準的な方法を提供し、[[JDBC]](Java Database Connectivity)と並んでJavaアプリケーションでデータベース操作を行うための主要な手段の一つです。以下に、SQLJの概要、特徴、およびJDBCとの比較を解説します。
== SQLJの概要 ==
SQLJは、Javaプログラム内にSQL文を直接埋め込むための仕組みです。SQLJは、以下のような特徴を持っています。
# '''SQL文の埋め込み''':
#* Javaコード内に直接SQL文を記述できる。
#* 例: <code>#sql { SELECT * FROM employees WHERE id = :id };</code>
# '''プリコンパイル''':
#* SQLJは、Javaコードをコンパイルする前にSQL文を解析し、適切なJDBCコードに変換する。
#* これにより、実行時のパフォーマンスが向上する。
# '''型安全性''':
#* SQLJは、コンパイル時にSQL文の構文チェックや型チェックを行うため、実行時のエラーを減らすことができる。
# '''標準化''':
#* SQLJは、ANSI/ISO標準として規格化されている。
== SQLJの特徴 ==
=== 1. SQL文の埋め込み ===
SQLJでは、Javaコード内にSQL文を直接埋め込むことができます。以下は、SQLJの基本的な構文例です。
:<syntaxhighlight lang=java copy>
// SQLJの例
#sql {
INSERT INTO employees (id, name, salary)
VALUES (:id, :name, :salary)
};
</syntaxhighlight>
=== 2. プリコンパイル ===
SQLJは、Javaコードをコンパイルする前にSQL文を解析し、適切なJDBCコードに変換します。これにより、実行時のパフォーマンスが向上します。
=== 3. 型安全性 ===
SQLJは、コンパイル時にSQL文の構文チェックや型チェックを行うため、実行時のエラーを減らすことができます。例えば、以下のようなエラーを検出できます。
* テーブル名やカラム名の誤り
* データ型の不一致
* SQL文の構文エラー
=== 4. 標準化 ===
SQLJは、ANSI/ISO標準として規格化されており、異なるデータベースベンダー間での互換性が高いです。
== SQLJとJDBCの比較 ==
SQLJとJDBCは、Javaアプリケーションでデータベース操作を行うための主要な手段ですが、以下のような違いがあります。
=== 1. 記述方法 ===
* '''SQLJ''':
** Javaコード内に直接SQL文を埋め込む。
** 例: <code>#sql { SELECT * FROM employees };</code>
* '''JDBC''':
** SQL文を文字列として記述し、<code>Statement</code>や<code>PreparedStatement</code>を使用して実行する。
** 例: <code>String sql = "SELECT * FROM employees";</code>
=== 2. 型安全性 ===
* '''SQLJ''':
** コンパイル時にSQL文の構文チェックや型チェックを行うため、型安全性が高い。
* '''JDBC''':
** SQL文は文字列として扱われるため、コンパイル時のチェックが行われない。
=== 3. パフォーマンス ===
* '''SQLJ''':
** プリコンパイルにより、実行時のパフォーマンスが向上する。
* '''JDBC''':
** SQL文は実行時に解析されるため、SQLJに比べてパフォーマンスが劣る場合がある。
=== 4. 可読性 ===
* '''SQLJ''':
** SQL文がJavaコード内に直接埋め込まれるため、可読性が高い。
* '''JDBC''':
** SQL文が文字列として記述されるため、可読性が低い場合がある。
== SQLJの使用例 ==
以下は、SQLJを使用してデータベースからデータを取得する簡単な例です。
:<syntaxhighlight lang=java copy>
// SQLJの例
import java.sql.SQLException;
import sqlj.runtime.ref.DefaultContext;
import sqlj.runtime.ConnectionContext;
public class EmployeeQuery {
public static void main(String[] args) {
try {
// データベース接続
ConnectionContext ctx = DefaultContext.getDefaultContext();
// SQLJによるクエリ実行
int id = 1;
String name;
double salary;
#sql {
SELECT name, salary INTO :name, :salary
FROM employees
WHERE id = :id
};
// 結果の表示
System.out.println("Name: " + name);
System.out.println("Salary: " + salary);
// 接続のクローズ
ctx.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
</syntaxhighlight>
== SQLJの利点と欠点 ==
=== 利点 ===
# '''型安全性''':
#* コンパイル時にSQL文のチェックが行われるため、実行時のエラーを減らせる。
# '''可読性''':
#* SQL文がJavaコード内に直接埋め込まれるため、コードの可読性が高い。
# '''パフォーマンス''':
#* プリコンパイルにより、実行時のパフォーマンスが向上する。
=== 欠点 ===
# '''学習コスト''':
#* SQLJの構文やツールを学ぶ必要がある。
# '''ツールの制約''':
#* SQLJに対応したツールや環境が必要であり、すべての開発環境で利用できるわけではない。
# '''普及度''':
#* JDBCに比べて普及度が低く、情報やサンプルコードが少ない。
== まとめ ==
SQLJは、Javaプログラム内にSQL文を直接埋め込むための技術で、以下のような特徴を持っています。
* '''SQL文の埋め込み''': Javaコード内に直接SQL文を記述できる。
* '''プリコンパイル''': 実行時のパフォーマンスが向上する。
* '''型安全性''': コンパイル時にSQL文のチェックが行われる。
SQLJは、JDBCに比べて型安全性や可読性が高い一方で、学習コストやツールの制約といった課題もあります。SQLJは、特に大規模なデータベース操作を行うアプリケーションで有用ですが、JDBCと比較して普及度が低いため、プロジェクトの要件に応じて適切な技術を選択することが重要です。
== 関連項目 ==
*[[LINQ対SQLJ]]
{{DEFAULTSORT:SQLJ}}
[[Category:SQL]]
[[Category:Java]]
[[Category:問い合わせ言語]]
ekw02sy6l4milhl6xyb0vl0a321l18s
統合言語クエリ
0
44838
301518
269599
2026-07-13T10:04:23Z
AkiR27User
90873
== 関連項目 == *[[LINQ対SQLJ]]追加
301518
wikitext
text/x-wiki
== 第1章 LINQの基礎 ==
=== 1.1 LINQとは ===
統合言語クエリ(Language Integrated Query: LINQ)は、[[.NET Framework]]に組み込まれたデータクエリ機能です。[[データベース]]や[[XML]]、メモリ上のコレクションなど、様々なデータソースに対して統一的な方法でクエリを記述することができます。
従来のプログラミングでは、データソースごとに異なる方法でデータ操作を行う必要がありました。たとえば、SQLデータベースにはSQL文を、XMLにはXPath式を使用するといった具合です。LINQの登場により、プログラマは単一の構文でこれらのデータソースを扱えるようになりました。
; 以下に簡単な例を示します:
:<syntaxhighlight lang=csharp copy>
// メモリ上のコレクションに対するLINQ
var numbers = new[] { 1, 2, 3, 4, 5 };
var evenNumbers = from n in numbers
where n % 2 == 0
select n;
// 同じクエリをメソッド構文で記述
var evenNumbers2 = numbers.Where(n => n % 2 == 0);
</syntaxhighlight>
LINQの主な利点は、型安全性、IntelliSenseによるサポート、そしてデータソースに依存しない統一的なアプローチにあります。また、クエリの構文が宣言的であり、「何を」したいのかに焦点を当てて記述できることも大きな特徴です。
=== 1.2 LINQの動作原理 ===
LINQの重要な特徴の一つが遅延評価(Lazy Evaluation)です。クエリを定義した時点ではデータは取得されず、実際にデータが必要になった時点で評価が行われます。
:<syntaxhighlight lang=csharp copy>
// クエリの定義(この時点では実行されない)
var query = from n in numbers
where n > 3
select n * 2;
// クエリの実行(この時点で評価が行われる)
foreach (var item in query)
{
Console.WriteLine(item);
}
</syntaxhighlight>
イミディエイト実行を行いたい場合は、ToList()やToArray()などのメソッドを使用します:
:<syntaxhighlight lang=csharp copy>
// 即座に評価が行われ、結果がリストに格納される
var results = query.ToList();
</syntaxhighlight>
IEnumerable<T>とIQueryable<T>の違いも重要です。IEnumerable<T>はメモリ上のデータに対して操作を行う際に使用され、IQueryable<T>はデータベースなどの外部データソースに対して使用されます。
=== 1.3 基本的なクエリ操作 ===
データソースの選択から始めて、フィルタリング、射影、並び替えといった基本的な操作を見ていきましょう。
:<syntaxhighlight lang=csharp copy>
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}
// サンプルデータ
var products = new List<Product>
{
new Product { Id = 1, Name = "ノートPC", Price = 80000, Category = "電化製品" },
new Product { Id = 2, Name = "デスクトップPC", Price = 120000, Category = "電化製品" },
new Product { Id = 3, Name = "キーボード", Price = 8000, Category = "周辺機器" }
};
// フィルタリング:特定の条件に合致するデータの取得
var expensiveProducts = from p in products
where p.Price > 100000
select p;
// 射影:必要なプロパティのみを選択
var productNames = from p in products
select p.Name;
// 並び替え:価格の昇順でソート
var sortedProducts = from p in products
orderby p.Price
select p;
</syntaxhighlight>
これらの操作は、メソッド構文を使用して以下のように書くこともできます:
:<syntaxhighlight lang=csharp copy>
var expensiveProducts = products.Where(p => p.Price > 100000);
var productNames = products.Select(p => p.Name);
var sortedProducts = products.OrderBy(p => p.Price);
</syntaxhighlight>
クエリ式とメソッド構文はどちらも同じ結果を生成しますが、状況に応じて読みやすい方を選択することができます。一般的に、単純な操作にはメソッド構文が、複雑な操作にはクエリ式が適しています。
== 第2章 データ操作 ==
=== 2.1 集約操作 ===
データの集約操作は、コレクション全体から単一の値を導出する重要な機能です。LINQは様々な集約メソッドを提供しており、データ分析やレポート生成に活用できます。
最も基本的な集約操作として、Count、Sum、Average、Min、Maxがあります。
:<syntaxhighlight lang=csharp copy>
var products = new List<Product>
{
new Product { Id = 1, Name = "ノートPC", Price = 80000, Category = "電化製品" },
new Product { Id = 2, Name = "デスクトップPC", Price = 120000, Category = "電化製品" },
new Product { Id = 3, Name = "キーボード", Price = 8000, Category = "周辺機器" },
new Product { Id = 4, Name = "マウス", Price = 5000, Category = "周辺機器" }
};
decimal averagePrice = products.Average(p => p.Price); // 平均価格
decimal totalPrice = products.Sum(p => p.Price); // 総額
int productCount = products.Count(); // 製品数
decimal maxPrice = products.Max(p => p.Price); // 最高価格
decimal minPrice = products.Min(p => p.Price); // 最低価格
</syntaxhighlight>
より複雑な集約にはGroupByを使用します。GroupByはデータをカテゴリごとにグループ化し、各グループに対して集約操作を適用できます。
:<syntaxhighlight lang=csharp copy>
var categoryAnalysis = products.GroupBy(p => p.Category)
.Select(g => new
{
Category = g.Key,
AveragePrice = g.Average(p => p.Price),
ProductCount = g.Count(),
TotalRevenue = g.Sum(p => p.Price)
});
foreach (var category in categoryAnalysis)
{
Console.WriteLine($"カテゴリ: {category.Category}");
Console.WriteLine($"平均価格: {category.AveragePrice:C}");
Console.WriteLine($"製品数: {category.ProductCount}");
Console.WriteLine($"総売上: {category.TotalRevenue:C}\n");
}
</syntaxhighlight>
さらに柔軟な集約処理にはAggregateメソッドを使用します。Aggregateは任意の集約ロジックを実装できる強力なメソッドです。
:<syntaxhighlight lang=csharp copy>
// 製品名を「, 」で連結する例
string productList = products.Aggregate("製品リスト: ",
(current, product) => current + product.Name + ", ",
result => result.TrimEnd(',', ' '));
</syntaxhighlight>
=== 2.2 結合操作 ===
データベースの結合操作と同様に、LINQも複数のデータソースを結合する機能を提供します。
:<syntaxhighlight lang=csharp copy>
var categories = new List<Category>
{
new Category { Id = 1, Name = "電化製品" },
new Category { Id = 2, Name = "周辺機器" }
};
// 内部結合
var productDetails = from p in products
join c in categories
on p.Category equals c.Name
select new
{
ProductName = p.Name,
Category = c.Name,
Price = p.Price
};
// グループ結合
var categoryProducts = from c in categories
join p in products
on c.Name equals p.Category into productGroup
select new
{
CategoryName = c.Name,
Products = productGroup
};
</syntaxhighlight>
<!--
# 統合言語クエリ(LINQ)ハンドブック
== 第1章 LINQの基礎 ==
=== 1.1 LINQとは ===
==== LINQの概要と特徴 ====
==== なぜLINQが必要か ====
==== LINQの利点と制限事項 ====
=== 1.2 LINQの動作原理 ===
==== 遅延評価とイミディエイト実行 ====
==== クエリ式とメソッド構文 ====
==== IEnumerable<T>とIQueryable<T>の違い ====
=== 1.3 基本的なクエリ操作 ===
==== データソースの選択 ====
==== フィルタリング(Where) ====
==== 射影(Select) ====
==== 並び替え(OrderBy) ====
== 第2章 データ操作 ==
=== 2.1 集約操作 ===
==== Count, Sum, Average, Min, Max ====
==== GroupBy ====
==== Aggregate ====
=== 2.2 結合操作 ===
==== Join ====
==== GroupJoin ====
==== Zip ====
=== 2.3 集合操作 ===
==== Distinct ====
==== Union, Intersect, Except ====
==== Concat ====
== 第3章 高度なLINQ ==
=== 3.1 パフォーマンスの最適化 ===
==== クエリの実行タイミング ====
==== メモリ使用量の最適化 ====
==== 並列処理(PLINQ) ====
=== 3.2 カスタム拡張メソッド ===
==== 独自の拡張メソッドの作成 ====
==== 既存のLINQ拡張 ====
==== ベストプラクティス ====
=== 3.3 エラーハンドリング ===
==== 一般的なエラーとその対処 ====
==== NULLの扱い ====
==== 例外処理 ====
== 第4章 実践的なLINQ ==
=== 4.1 データベース操作 ===
==== Entity Frameworkとの連携 ====
==== SQL生成の理解 ====
==== パフォーマンスの考慮点 ====
=== 4.2 XML操作 ===
==== LINQ to XML ====
==== XMLの読み書き ====
==== XML変換 ====
=== 4.3 実践的なユースケース ===
==== データ変換 ====
==== レポート生成 ====
==== データ分析 ====
== 第5章 デバッグとテスト ==
=== 5.1 デバッグ技法 ===
==== クエリの可視化 ====
==== パフォーマンス測定 ====
==== 一般的な問題のトラブルシューティング ====
=== 5.2 単体テスト ===
==== LINQクエリのテスト方法 ====
==== モックの使用 ====
==== テストパターン ====
== 附録 ==
=== A. LINQメソッドリファレンス ===
=== B. パフォーマンスチューニングガイド ===
=== C. ベストプラクティス集 ===
=== D. サンプルコード集 ===
-->
== 第5章 デバッグとテスト ==
=== 5.1 デバッグ技法 ===
==== クエリの可視化 ====
==== パフォーマンス測定 ====
==== 一般的な問題のトラブルシューティング ====
=== 5.2 単体テスト ===
==== LINQクエリのテスト方法 ====
==== モックの使用 ====
==== テストパターン ====
== 附録 ==
=== A. LINQメソッドリファレンス ===
=== B. パフォーマンスチューニングガイド ===
=== C. ベストプラクティス集 ===
=== D. サンプルコード集 ===
== 関連項目 ==
*[[LINQ対SQLJ]]
{{DEFAULTSORT:とうこうけんこくえり}}
[[Category:問い合わせ言語]]
apqcjvp23wbn7at1l5c859ftfb0yw2z
帝国主義
0
45390
301508
273408
2026-07-13T09:14:01Z
三田レンジ
90031
301508
wikitext
text/x-wiki
帝国主義とは、国家が自国の利益や勢力拡大を目的として、政治的、経済的、軍事的に他国を侵略・支配・抑圧する思想や政策、運動を指します。主に19世紀後半から20世紀初頭にかけて、欧米列強が植民地獲得や市場独占を目指して海外に進出した時代に顕著になりました。具体的には、イギリス、フランス、ドイツ、ロシアなどが植民地を拡大し、アジアやアフリカを支配下に置きました。
詳細:<br>
目的:<br>
帝国主義の主な目的は、自国の経済的利益を拡大し、国際的な地位を高めることでした。そのため、植民地を開発し、そこからの原材料や市場を独占しようとしました。<br>
方法:<br>
帝国主義は、政治的・経済的・軍事的な手段を用いて、他国を支配下に置くことを目指しました。具体的には、軍事力で植民地を占領し、政治的な支配体制を構築し、経済的な搾取を強行しました.
影響:<br>
帝国主義は、植民地を支配した欧米列強に経済的な利益をもたらしましたが、被支配国にとっては、政治的・経済的な独立が奪われ、大きな苦難をもたらしました。また、植民地間の摩擦や衝突も頻発し、第一次世界大戦の勃発にも一因しました.<br>
日本:<br>
日本も明治維新以降、欧米列強の模倣として帝国主義政策を進め、日清戦争、日露戦争を通じて植民地を獲得しました。その後、満州事変、太平洋戦争へと発展し、日本も帝国主義政策の末端に位置することになりました.<br>
現代:<br>
帝国主義は19世紀から20世紀初頭の歴史現象として理解されますが、現代においても、先進国と発展途上国の格差、経済的な不平等、軍事的な介入などが、帝国主義の現代的な形として指摘されることがあります.
{{stub}}
7qou400a9yfll307s4tew2zx4r6p8iv
黒ひげ危機一発
0
48193
301510
300141
2026-07-13T09:32:11Z
三田レンジ
90031
301510
wikitext
text/x-wiki
{{Pathnav|ゲーム|frame=1}}
{{Wikipedia}}
'''黒ひげ危機一発'''は、タカラトミーが1975年に発売したアクション玩具。樽に入った黒ひげ人形が、プレイヤーの差し込む剣によって飛び出す仕組みになっている。
==遊び方==
;1.樽の準備
:樽に人形をセットし、押し込んでロックする。
;2.剣を配る
:色とりどりの剣をプレイヤーに均等に配る。
;3.順番に剣を差す
:樽の穴に剣を順番に差し込む。
;4.人形が飛び出したら
:人形を飛び出させたプレイヤーの負け<ref>当初は「人形を飛ばした人の勝ち」というルールだった。</ref>。
==仕組み==
内部構造は単純で、人形を押し込むと内部のバネがロックされ、特定の穴に剣を差すとロックが外れて飛び出す。
*ロックされる穴は毎回ランダム。
*バネの強さは安全基準に合わせて調整されている。
*飛び出す高さは製品によって異なる。
==バリエーション==
黒ひげ危機一発には多くの派生版が存在する。
*超飛びジャンボ黒ひげ危機一発 - 通常より大きく、飛び出しも派手。
*黒ひげ危機一発MAX5 - 5つのギミックを搭載。
*キャラクターコラボ版 - ONE PIECE、ドラえもんなど
==類似玩具==
また、黒ひげ危機一発に類似した玩具も存在する。
*ドキドキアンパンチ - アガツマが発売する「それいけ!アンパンマン」版。樽はバイキン城、黒ひげ人形はばいきんまん、剣はアンパンマンに置き換わっている。バリエーションは5種類。
*チビチビクミタテール つくる!あそぶ!ドキドキロケットゲーム - バンダイが発売する「妖怪ウォッチ」版。樽はロケット、黒ひげ人形はUSAピョン、剣は妖怪の描かれたプレートに置き換わっている。
いずれも、人形を飛ばしたら勝ちという黒ひげ危機一発の初期ルールを意識している。
==脚注==
[[カテゴリ:ゲーム]]
qf7ro0bp7mrxs5s85i7kfogioymxiph
利用者:AkiR27User/その他
2
48230
301564
301463
2026-07-13T11:50:01Z
AkiR27User
90873
/* 運動 */ *[[ボウリング]]追加
301564
wikitext
text/x-wiki
下記は[[利用者:AkiR27User|AkiR27User]]が作成・編集した、[[トランプ|トランプゲーム]]や[[野球]]以外に関するページです。
何か気になることがあれば、このページのトークページではなく、こちらの[[利用者・トーク:AkiR27User|'''トークページ''']]までお願いします。
==== '''編集ページ(wikibooks関連)''' ====
* [[Wikibooks:ウィキブックスは何でないか]]
* [[ウィキペディアの書き方/中級編/便利なテクニック]]
* [[ウィキペディアの書き方/中級編/管理作業入門]]
* [[wikibooks:削除依頼]]
* [[Wikibooks:コミュニティ・ポータル]]
* [[テンプレート:メインページメニュー]]
* [[Wikibooks:ビューロクラット]]
* [[Wikibooks:管理者]]
* [[テンプレート:管理者]]
* [[wikibooks:利用者ページ]]
* [[WB:UP]]
* [[WB:USER]]
==== '''プログラミング''' ====
'''編集'''
*[[Scratch]]
'''作成'''
*[[Scratch/ブロック]]
*[[Scratch/ブロック/動き]]
*[[Scratch/ブロック/見た目]]
*[[Scratch/ブロック/音]]
*[[Scratch/ブロック/イベント]]
*[[Scratch/ブロック/制御]]
*[[Scratch/ブロック/調べる]]
*[[Scratch/ブロック/演算]]
*[[Scratch/ブロック/変数]]
*[[Scratch/ブロック/ブロック定義]]
*[[Scratch/ブロック/拡張機能]]
*[[Scratch/作品]]
*[[Scratch/作品/猫が歩く]]
*[[Scratch/作品/猫が回る]]
*[[Scratch/作品/色を変える]]
*[[Scratch/作品/クリックで音が出る]]
*[[Scratch/作品/ボールが跳ねる]]
==== '''転送ページ''' ====
*
===='''ゲーム'''====
======'''編集'''======
*[[ゲーム]]
*[[マリオカート]]
*[[スーパーマリオカート]]
*[[マリオカート64]]
*[[マリオカートアドバンス]]
*[[マリオカート ダブルダッシュ!!]]
*[[マリオカートDS]]
*[[マリオカート7]]
*[[マリオカート8]]
*[[マリオカートワールド]]
*[[マリオカートアーケードグランプリ2]]
*[[マリオカートアーケードグランプリDX]]
*[[バドミントン]]
======'''作成'''======
*[[椅子取りゲーム]]
*[[フルーツバスケット]]
*[[缶蹴り]]
*[[けいどろ]]
*[[お手玉]]
*[[折り紙]]
*[[めんこ]]
*[[かるた]]
*[[ドミノ]]
*[[紙飛行機]]
*[[ゲーム]]
*[[ジェンガ]]
*[[人生ゲーム]]
*[[ベーゴマ]]
*[[こま回し]]
*[[おはじき]]
*[[あやとり]]
*[[竹とんぼ]]
*[[ヨーヨー]]
*[[伝言ゲーム]]
*[[ジェスチャーゲーム]]
*[[連想ゲーム]]
*[[マジカルバナナ]]
*[[山手線ゲーム]]
*[[ワードウルフ]]
*[[カテゴリ:マリオカート]]
*[[Wii]]
*[[Wii Sports]]
*[[Wii Fit Plus]]
====== 運動 ======
*[[運動会]]
*[[徒競走]]
*[[かけっこ]]
*[[リレー]]
*[[二人三脚(運動会)]]
*[[綱引き]]
*[[大玉転がし]]
*[[棒引き]]
*[[台風の目]]
*[[玉入れ]]
*[[借り物競争]]
*[[ムカデ競争]]
*[[大縄跳び]]
*[[応援合戦]]
*[[パン食い競走]]
*[[騎馬戦]]
*[[団体演技]]
*[[:カテゴリ:運動会]]
*[[トライアスロン]]
*[[ボウリング]]
======'''転送ページ'''======
*[[どろじゅん]]
gayip1vu1pmfhe0t17gzbs14jkaddz4
TCP/IP入門 概要
0
48492
301492
2026-07-13T08:46:17Z
AkiR27User
90873
AkiR27User がページ「[[TCP/IP入門 概要]]」を「[[TCP/IP/入門 概要]]」に移動しました: ページ体系の変更/明確化
301492
wikitext
text/x-wiki
#転送 [[TCP/IP/入門 概要]]
0rt4ladl7q55uwvprhrscujip7mqfvr
TCP/IP入門 各層の役割
0
48493
301494
2026-07-13T08:47:24Z
AkiR27User
90873
AkiR27User がページ「[[TCP/IP入門 各層の役割]]」を「[[TCP/IP/入門 各層の役割]]」に移動しました: ページ体系の変更/明確化
301494
wikitext
text/x-wiki
#転送 [[TCP/IP/入門 各層の役割]]
85c5a9euzc6m332jr8u12le9u83q3h5