hpprc/jawiki-books huggingface dataset:
Go/定数と変数

定数には、真偽値定数、ルーン定数、整数定数、浮動小数点定数、複素数定数、文字列定数があります。ルーン定数、整数定数、浮動小数点定数、複素数定数を総称して数値定数と呼びます。
定数値は、ルーン、整数、浮動小数点、虚数、文字列リテラル、定数を示す識別子、定数式、結果が定数となる変換、あるいは、unsafe.Sizeof関数を任意の値に、capやlenをいくつかの式に、realやimagを複素数定数に、complexを数値定数に適用するなど、いくつかの組み込み関数の結果値で表されます。真偽値は、事前に宣言された定数trueとfalseで表されます。宣言済み識別子 iota は、整数定数を表します。
一般に、複素数定数は定数表現の一形態であり、定数式の項で説明します。
数値定数は、任意の精度の正確な値を表し、オーバーフローしません。そのため、IEEE-754の負のゼロ、無限大、および数字ではない値を表す定数はありません。
定数には、型付きのものと型無しのものがあります。リテラル定数、true、false、iota、および型付けされていない定数オペランドのみを含む特定の定数式は、型付けされていません。
定数は、定数宣言や変換によって明示的に型が与えられる場合と、変数宣言や代入、式のオペランドとして使用される場合に暗黙的に型が与えられる場合があります。定数の値がそれぞれの型の値として表現できない場合はエラーになります。
型付けされていない定数には、デフォルトの型があります。これは、型付けされた値が必要とされる文脈、例えば、i := 0のように明示的な型がない短い変数宣言の中で、定数が暗黙的に変換される型です。型付けされていない定数のデフォルトの型は、bool、rune、int、float64、complex128、stringのいずれであるかに応じて、それぞれ異なります。
実装上の制約。数値定数は言語上では任意の精度を持っていますが、コンパイラは精度が制限された内部表現を使って実装することができます。とはいえ、すべての実装は以下のようにしなければなりません。
これらの要件は、リテラル定数にも、定数式の評価結果にも適用されます。
定数宣言(A constant declaration)は、識別子のリスト(定数の名前)を定数式のリストの値に結びつける(binds)ものです。識別子の数は式の数と等しくなければならず、左からn番目の識別子は右からn番目の式の値に束縛(bound)されます。
型のある場合、すべての定数は指定された型を取り、式はその型に割り当て可能でなければなりません。型が省略された場合、定数は対応する式の個々の型を取ります。式の値が型付けされていない定数である場合、宣言された定数は型付けされていないままであり、定数の識別子が定数の値を表します。例えば、式が浮動小数点リテラルの場合は、リテラルの小数部がゼロであっても、定数識別子は浮動小数点定数を表します。
括弧付きの const 宣言リストの中では、最初の ConstSpec 以外は式リストを省略することができます。このような空のリストは、最初の先行する空でない式のリストと、もしあればその型をテキストで置換することと同じです。したがって、式のリストを省略することは、前のリストを繰り返すことと同じです。識別子の数は、前のリストの式の数と等しくなければなりません。iota定数ジェネレータと一緒に使うと、このメカニズムは、連続した値の軽量な宣言を可能にします。
定数宣言の中で、宣言済み識別子 iota は、連続する型付けされていない整数定数を表します。その値は、定数宣言内のそれぞれのConstSpecのインデックスで、ゼロから始まります。この識別子は、関連する定数のセットを構築するために使用できます。
定義によると、同じConstSpec内でiotaを複数回使用すると、すべて同じ値になります。
この最後の例は、最後の空でない式のリストの暗黙の繰り返しを利用しています。
変数(A variable)とは、値を保持するための記憶場所のことです。許容される値のセットは、変数の型によって決まります。
変数宣言(A variable declaration)や、関数の仮引数(function parameters)や戻値(results)の場合は、関数宣言(a function declaration)や関数リテラル(function literal)のシグネチャ(the signature)が、名前の付いた変数のストレージを確保します。組み込み関数newを呼び出したり、複合リテラルのアドレスを取得したりすると、実行時に変数の格納場所が確保されます。このような匿名変数は、(おそらく暗黙の)ポインタ間接(pointer indirection)によって参照されます。
配列型、スライス型、構造体型の構造化変数は、個別にアドレスを指定できる要素やフィールドを持っています。このような要素は、それぞれ変数のように動作します。
変数の静的な型(または単に型)は、その宣言で与えられた型、新規呼び出しまたは複合リテラルで提供された型、または構造化変数の要素の型です。これは、実行時に変数に代入される値の具体的な型です(ただし、宣言済みの識別子であるnilは型を持ちません)。動的型は実行中に変化する可能性がありますが、インターフェイス変数に格納された値は常に変数の静的型に割り当てられます。
変数の値(A variable's value)は、式の中でその変数を参照することで取得され、その変数に割り当てられた最新の値となります。変数にまだ値が割り当てられていない場合、その値はその型のゼロ値となります。
変数宣言では、1つまたは複数の変数を作成し、対応する識別子を結合し、それぞれに型と初期値を与えます。
式のリストが与えられた場合、変数は代入のルールに従って式で初期化されます。それ以外の場合、各変数はゼロ値に初期化されます。
型が指定されている場合、各変数はその型で初期化されます。 それ以外の場合は、各変数には、割り当てられた対応する初期化値の型が与えられます。 その値が型付けされていない定数であれば、まずデフォルトの型に暗黙的に変換され、型付けされていない真理値であれば、まず論理型(bool)に暗黙的に変換されます。 型が明示されていない変数の初期化に、宣言済みの値であるnilを使用することはできません。
実装上の制限:コンパイラーは、変数が使用されない場合に、関数本体内で変数を宣言することを違法とする場合があります。
短い変数宣言(A short variable declaration)の構文
通常の変数宣言とは異なり、短い変数宣言では、同じブロック(ブロックが関数本体の場合は仮引数リスト(the parameter lists))内で同じ型で以前に宣言された変数を再宣言(redeclare)することができ、空白ではない変数のうち少なくとも1つは新しいものです。 そのため、再宣言は複数変数の短い宣言の中でのみ行われます。再宣言は新しい変数を導入するものではなく、元の変数に新しい値を割り当てるだけです。
短い変数宣言は、関数内でのみ使用できます。"if"、"for"、"switch" 文の初期化子など、いくつかの文脈では、ローカルな一時変数を宣言するために使用することができます。
Go/型と値の特性

型と値の特性(Properties of types and values)
各型Tには、基礎となる型(underlying type)があります。 Tがあらかじめ宣言された論理型、数値型、文字列型、あるいは型リテラルのいずれかである場合、対応する基礎となる型はT自身です。 そうでない場合、Tの基礎となる型は、Tが宣言の中で参照する型の基礎となる型です。 型パラメーターの場合は、その型制約の基礎となる型で、それは常にインターフェースです。
非インタフェース型Tはそれぞれコア型(core type)を持ち、それはTの基礎となる型と同じです。 インターフェースTがコア型を持つのは、以下の条件のいずれかが満たされる場合である。
他のインターフェースはコア型を持たない。
インターフェースのコアタイプは、満たされる条件によって、次のいずれかになります。
定義上、コア型は定義された型、型パラメータ、インタフェース型ではありません。
型同一性(Type identity)
2つの型の間にある関係は、同じか異なるかのどちらかです。
定義された型は、常に他の型とは異なります。それ以外の場合、2つの型は、その基礎となる型リテラルが構造的に等価である場合、つまり、同じリテラル構造を持ち、対応するコンポーネントが同じ型を持つ場合、同一の型となります。詳しくは:
次に示す宣言があったとき
これらの型は同一です。
func(int, float64) *B0 と func(x int, y float64) *[]string は、B0 が []string と異なるため、異なるものとなります。
代入可能性(Assignability)
値x がT 型の変数に代入可能である(「x はTに代入可能である」)のは、次のいずれかの条件が当てはまる場合である。
表現可能性(Representability)
定数 xは、以下の条件のいずれかに当てはまる場合、T 型の値で表現可能(representable)である。
Go/ブロック・宣言とスコープ

ブロック(Blocks)は、一致する波括弧の中に宣言とステートメントを並べた、空の可能性のあるシーケンスです。
ソースコードには、明示的なブロックの他に、暗黙のブロックがあります。
ブロックはスコーピングに影響を与えます。
宣言とスコープ(Declarations and scope)
宣言は、空白でない識別子を、定数、型、変数、関数、ラベル、パッケージに結びつけるものです。 プログラム内のすべての識別子は宣言されなければなりません。 同一ブロック内で2回宣言することはできず、ファイルブロックとパッケージブロックの両方で宣言することはできません。
空白の識別子は、他の識別子と同様に宣言の中で使用することができますが、結合を導入しないため、宣言されません。 パッケージブロックでは、識別子initはinit関数の宣言にのみ使用することができ、空白の識別子のように新しいバインディングを導入することはありません。
宣言された識別子のスコープは、その識別子が指定された定数、型、変数、関数、ラベル、パッケージを示すソーステキストの範囲です。
Goはブロックを使って語彙的にスコープを設定します。
ブロックで宣言された識別子は、内側のブロックで再宣言することができる。内側の宣言の識別子がスコープ内にある間は、内側の宣言によって宣言されたエンティティを表します。
package節は宣言ではなく、パッケージ名はどのスコープにも表示されない。その目的は、同じパッケージに属するファイルを識別することと、インポート宣言のデフォルトのパッケージ名を指定することです。
ラベルはラベル付きステートメントで宣言され、break, continue, goto 文で使用されます。 一度も使用されないラベルを定義することは違法です。 他の識別子とは異なり、ラベルはブロックスコープを持たず、ラベルではない識別子とは衝突しません。 ラベルのスコープは、ラベルが宣言されている関数のボディであり、ネストされた関数のボディは含まれません。
ラベル付けされたステートメントは、goto, break, continue 文のターゲットになることがあります。
ブランク識別子はアンダースコア文字「_」で表されます。 通常の(ブランクではない)識別子の代わりに匿名のプレースホルダーとして機能し、宣言、オペランド、代入において特別な意味を持ちます。
ユニバースブロックでは、いくつかの識別子が暗黙的に宣言されています。
識別子は、他のパッケージからのアクセスを可能にするためにエクスポートすることができます。識別子は以下の場合にエクスポートされます。
それ以外の識別子はエクスポートされません。
識別子の集合が与えられたとき、識別子が集合内の他のすべてのものと異なる場合、その識別子は一意と呼ばれます。 2つの識別子が異なる場合とは、スペルが異なる場合や、異なるパッケージに含まれていてエクスポートされない場合などです。 それ以外の場合は、同じです。
定数宣言は、識別子のリスト(定数の名前)を定数式のリストの値に束縛します。 識別子の数は式の数と等しくなければならず、左からn番目の識別子は右からn番目の式の値に束縛されます。
定数宣言の中で、宣言済み識別子 iota は、連続する型付けされていない整数定数を表します。その値は、定数宣言内のそれぞれのConstSpecのインデックスで、ゼロから始まります。この識別子は、関連する定数のセットを構築するために使用できます
型宣言は、識別子である型名を型に結びつけるものです。型宣言には、エイリアス宣言と型定義の2つの形式があります。。
識別子のスコープ内では、型のエイリアスとして機能します。
新しい型は、定義された型と呼ばれます。この型は、作成された型を含め、他の型とは異なります。
変数宣言では、1つまたは複数の変数を作成し、対応する識別子を結合し、それぞれに型と初期値を与えます。
関数宣言(Function declarations)は、識別子である関数名を関数に結びつけるものです。
関数のシグネチャが結果仮引数を宣言している場合、関数本体のステートメントリストは終了ステートメントで終わらなければなりません。
関数宣言で型パラメータを指定した場合、関数名はジェネリック関数を表します。ジェネリック関数は、呼び出したり値として使用したりする前に、インスタンス化されなければなりません。
型パラメータを持たない関数宣言では、ボディを省略することができます。 このような宣言は、アセンブリルーチンのようなGoの外部で実装される関数のシグネチャを提供します。
メソッド(A method)とは、レシーバーを持つ関数です。メソッド宣言では、識別子であるメソッド名をメソッドに結びつけ、そのメソッドとレシーバーの基底型を関連付けます。
レシーバーは、メソッド名の前にある追加の仮引数・セクションで指定されます。 この仮引数・セクションでは、単一の非可変仮引数であるレシーバーを宣言しなければなりません。 その型は、定義済みの型Tまたは定義済みの型Tへのポインタでなければならず、その後に角括弧で囲まれた型パラメータ名 [P1, P2, ...] のリストが続く場合もあります。 Tはレシーバー基底型と呼ばれます。レシーバー基底型はポインタやインタフェース型であってはならず、メソッドと同じパッケージで定義されなければなりません。メソッドはそのレシーバー基底型に束縛されていると言われ、メソッド名は型Tまたは*Tのセレクター内でのみ表示されます。
空白ではないレシーバーの識別子は、メソッドの署名(Signature)の中で一意でなければなりません。レシーバーの値がメソッドの内部で参照されない場合、その識別子は宣言で省略することができます。これは、関数やメソッドの仮引数についても同様です。
基底型の場合、それに束縛されるメソッドの空白でない名前は一意でなければならない。基本型が構造体の場合、空白でないメソッド名とフィールド名は一意でなければなりません。
型 Point が定義されている場合の宣言は
レシーバーの型が*PointであるメソッドLengthとScaleを基本型Pointにバインドします。
レシーバーの基本型がジェネリック型の場合、レシーバー仕様(receiver specification)はメソッドが使用する対応する型パラメータを宣言する必要があります。 これにより、レシーバー型パラメータはメソッドから利用できるようになります。 型パラメタの宣言は、文法的にはレシーバー基本型のインスタンス化のようなもので、型引数は宣言された型パラメタを示す識別子で、レシーバー基本型の各型パラメタに対して1つずつ宣言する必要があります。 型パラメータ名はレシーバー基本型の定義にある対応するパラメータ名と一致する必要はなく、空白でないパラメータ名はすべてレシーバー仮引数セクションとメソッドシグネチャーで一意である必要があります。レシーバー型パラメターの制約は、レシーバー基本型の定義が暗示するものであり、対応する型パラメターは対応する制約を持ちます。
Go/メソッドチェイン

Goのメソッドは、メソッドチェイン(method chaining)が可能です。
28行目がメソッドチェーンです。 メソッド PrintName() と PrintAge() とも戻り値はレシーバと同じ Student で、この様なメソッドは戻り値を次のメソッドのレシーバーにできます。 レシーバーと戻り値の型が一致していなくてもメソッドチェインは可能ですが、型の組合せを慎重に考える必要があります。
架空世界の作り方

ここでは、主に現代的な架空世界の作り方を説明します。
架空世界とは、その名の通り現実ではない想像上の世界のことです。なお、この本では、過去の歴史を改変し、現在とは違う世界線を作り出すもの(歴史改変SF、パラレルワールド)も架空世界として扱います。
リアリティのあるものを作るのにあたって、
などは必須道具となりますが、あなたの頭の中で作り上げることも可能ではあります。
また、もっとリアルなものを制作したいのであれば、
などの道具を用意することを検討してみてください。
架空世界を作る上での基本的な知識や方法について。
より、リアリティを出す方法について。
あなたの作った架空世界を公開したり、それらを舞台とするコンテンツの作り方について。
ガリア戦記/ガリア語の名前

『ガリア戦記』で言及されるガリア人の地名・部族名・人名などの名前(固有名詞)について解説する。
ガリア語 (羅 Lingua Gallica、英 Gaulish、仏 Gaulois) とは、ガリア (ガッリア)・イタリア半島北部・ヒスパニア中部・ルシタニアなどで5世紀頃まで話されていたケルト諸語の一派で、他の地域に居住する話者も母語として話していたとされている。ガリア語は死語ではあるが、多くの単語がヨーロッパ諸語、とりわけ地名に残されている。
下の表および右下の系統樹に、ガリア語を含むケルト諸語の言語学的分類を示す。ただし、これはケルト諸語を「島嶼ケルト」「大陸ケルト」に二分する伝統的な分類法であるが、近年では「Pケルト語」「Qケルト語」に二分する分類法もある。これは例えば、『ガリア戦記』でも言及されているように、アトレバテース族 Atrebates がブリタンニア島と大陸の双方にまたがって居住していたように、単純に島嶼・大陸と分けにくいことにもよる。
以下では、仏語訳を緑色で示す。アステリスク * は再構を表わす。
Go/パッケージ

このページでは、Goのパッケージに関する構文と意味を解説しています。 標準パッケージライブラリーについては、Go/標準ライブラリーを参照してください。
式(An expression)は、 Goプログラムは、パッケージ(Packages)をリンクして構築されます。パッケージは、そのパッケージに属する定数、型、変数、関数を宣言した1つまたは複数のソースファイルから構成されます。これらの要素は、エクスポートして別のパッケージで使用することができます。
ソースファイルの構成(Source file organization)
各ソースファイルは、所属するパッケージを定義するパッケージ節、使用するパッケージを宣言するimport宣言(空の場合もある)、関数、型、変数、定数の宣言(空の場合もある)から構成されています。
パッケージ節(Package clause;PackageClause)は、各ソースファイルの先頭にあり、そのファイルが属するパッケージを定義します。
PackageNameは、ブランク識別子であってはなりません。
同じPackageName(パッケージ名)を持つファイルの集合が、パッケージの実装となります。パッケージの実装では、パッケージのすべてのソースファイルが同じディレクトリに存在することが要求される場合があります。
インポート宣言(Import declarations)とは、その宣言を含むソース・ファイルが、インポートされたパッケージの機能(§プログラムの初期化と実行)に依存し、そのパッケージのエクスポートされた識別子へのアクセスを可能にすることを意味します。インポートには、アクセスに使用する識別子(PackageName)と、インポートするパッケージを指定するImportPathが指定されます。
PackageNameは、インポートするソースファイル内のパッケージのエクスポートされた識別子にアクセスするための修飾識別子として使用されます。これは、ファイルブロックで宣言されています。PackageNameが省略された場合は、インポートされたパッケージのpackage節で指定された識別子がデフォルトとなります。名前の代わりに明示的なピリオド(.)が現れた場合、そのパッケージのpackage節で宣言された全てのパッケージのエクスポートされた識別子は、インポート元ファイルのfile節で宣言され、修飾子なしでアクセスしなければなりません。
ImportPathの解釈は実装に依存しますが、通常はコンパイルされたパッケージの完全なファイル名の部分文字列であり、インストールされたパッケージのリポジトリへの相対パスかもしれません。
実装上の制限。コンパイラは、ImportPathを、UnicodeのL、M、N、P、Sの一般カテゴリに属する文字(スペースを含まないグラフィック文字)のみを使用した空でない文字列に制限することができます。また、文字 !"#$%&'()*,:;<=>?[\]^`{|} および Unicode の置換文字 U+FFFD を除外することもできます。
関数Sinをエクスポートするパッケージ節package mathを含むパッケージをコンパイルし、コンパイルしたパッケージを「lib/math」で識別されるファイルにインストールしたとします。次の表は、さまざまなタイプのインポート宣言の後にパッケージをインポートするファイルで、Sinにどのようにアクセスするかを示しています。
インポート宣言は、インポートするパッケージとインポートされるパッケージの間に依存関係を宣言します。パッケージが自分自身を直接または間接的にインポートしたり、エクスポートされた識別子を参照せずにパッケージを直接インポートすることは違法です。副作用(初期化)のみを目的としてパッケージをインポートする場合は、空白の識別子を明示的なパッケージ名として使用します。
以下は、同時進行の素数ふるいを実装した完全なGoパッケージです。
Go/プログラムの初期化と実行

プログラムの初期化と実行(Program initialization and execution)
ゼロ値(The zero value) -- 宣言やnewの呼び出しによって変数にストレージが割り当てられたとき、あるいは複合リテラルやmakeの呼び出しによって新しい値が生成されたとき、明示的な初期化が行われなければ、その変数や値にはデフォルト値が与えられます。このような変数や値の各要素には、その型に応じたゼロ値が設定されます。ブーリアンはfalse、数値型は0、文字列は""、ポインタ、関数、インターフェース、スライス、チャンネル、マップはnilとなります。この初期化は再帰的に行われるので、例えば、構造体の配列の各要素は、値が指定されていない場合、そのフィールドがゼロになります。
この2つの単純な宣言は等価です。
上を踏まえて
とすると、次のようになります。
また、次のようにしても同じことが言えます。
パッケージの初期化(Package initialization) -- パッケージ内では、パッケージレベルの変数の初期化が段階的に行われます。各段階では、未初期化の変数に依存していない、宣言順で最も早い変数が選択されます。
より正確には、パッケージレベルの変数がまだ初期化されておらず、初期化式を持たないか、初期化式が未初期化の変数に依存していない場合、初期化の準備ができているとみなされます。初期化は、初期化可能な変数がなくなるまで、宣言順序が最も早く、初期化可能な次のパッケージレベルの変数を繰り返し初期化することで進行します。
この処理が終了した時点でまだ初期化されていない変数がある場合、その変数は1つ以上の初期化サイクルの一部であり、プログラムは有効ではありません。
右辺の単一(多値)式で初期化された変数宣言の左辺にある複数の変数は、まとめて初期化されます。左辺の変数のいずれかが初期化された場合、それらの変数はすべて同じステップで初期化されます。
パッケージの初期化のために、ブランク変数は宣言の中で他の変数と同じように扱われます。
複数のファイルで宣言された変数の宣言順序は、ファイルがコンパイラーに提示される順序によって決まります。最初のファイルで宣言された変数は、2番目のファイルで宣言されたどの変数よりも先に宣言され、以下同様です。
依存性分析は、変数の実際の値には依存せず、ソース中の変数への字句の参照のみを過渡的に分析します。例えば、変数xの初期化式が、本体が変数yを参照している関数を参照している場合、xはyに依存していることになります。
例えば、次のような宣言があるとします。
の場合、初期化の順序は d, b, c, a となります。なお、初期化式の部分式の順序は関係ありません。a = c + bとa = b + cは、この例では同じ初期化順序になります。
依存関係の分析はパッケージごとに行われます。現在のパッケージで宣言された変数、関数、(インターフェイスではない)メソッドを参照しているものだけが考慮されます。変数間に他の隠れたデータ依存性が存在する場合、それらの変数間の初期化順序は特定されません。
たとえば,次のような宣言があったとします。
変数 a は b の後に初期化されますが、x が b の前に初期化されるのか、b と a の間に初期化されるのか、a の後に初期化されるのか、したがって sideEffect() が呼び出される瞬間(x が初期化される前か後か)も指定されていません。
変数は、パッケージブロックで宣言された init という名前の関数を使って、引数や結果のパラメータを指定せずに初期化することもできます。
このような関数は、1つのソース・ファイル内であっても、パッケージごとに複数定義することができます。パッケージ・ブロックでは、init識別子はinit関数を宣言するためにのみ使用できますが、 識別子自体は宣言されません。したがって、init関数はプログラムのどこからも参照できません。
インポートのないパッケージは、パッケージレベルの変数に初期値を割り当てた後、すべての init関数を、コンパイラに提示された順に呼び出すことで初期化されます (複数のファイルに分かれている場合もあります)。パッケージがインポートされている場合、インポートされたパッケージは、パッケージ自体を初期化する前に初期化されます。複数のパッケージがあるパッケージをインポートしている場合、インポートされたパッケージは一度だけ初期化されます。パッケージのインポートは、構造上、周期的な初期化の依存関係が存在しないことを保証します。
パッケージの初期化(変数の初期化とinit関数の呼び出し)は、単一のゴルーチンで、一度に一つのパッケージを順番に実行します。init関数は、他のゴルーチンを起動することができ、初期化コードと同時に実行することができます。しかし、初期化は常にinit関数を順番に実行し、前の関数が戻るまで次の関数を起動しません。
再現性のある初期化動作を保証するために、ビルドシステムは、同じパッケージに属する複数のファイルを、辞書的なファイル名の順序でコンパイラに提示することが推奨されます。
プログラムの実行(Program execution) -- 完全なプログラムは、mainパッケージと呼ばれる単一の非インポートパッケージと、そのパッケージがインポートするすべてのパッケージを過渡的にリンクすることで作成されます。mainパッケージはパッケージ名mainを持ち、引数を取らず値を返さない関数mainを宣言しなければならない。
プログラムの実行は、mainパッケージを初期化し、関数mainを呼び出すことから始まります。その関数の呼び出しが戻ると、プログラムは終了します。
他の(mainではない)goroutines が完了するのを待つことはありません。
Go/エラー

エラー(Errors) -- 宣言済みの型であるerrorは次のように定義されています。
これは、エラー状態を表現するための従来のインターフェースで、nil値はエラーがないことを表します。例えば、ファイルからデータを読み取る関数が定義されているとします。
Goにおいて、配列の範囲外のインデックスを参照するなどの実行時エラーが発生した場合、ランタイム・パニック(Run-time panics)と呼ばれるエラーが発生します。このエラーは、ランタイムに発生するエラーであり、予期しない状況が発生したことを示しています。
ランタイム・パニックが発生した場合、プログラムは中断されます。この状況を回避するためには、プログラム内でエラー処理を実装する必要があります。ランタイム・パニックが発生した場合、組み込み関数 panic が呼び出され、実装で定義されたインタフェース型runtime.Error型のインタフェース値が生成されます。このエラーは、事前に宣言されたインタフェース型errorを満たします。
ランタイム・パニックは、Goのコンパイラによって検出できないエラーです。このため、ランタイム・パニックを回避するためには、コードを慎重にテストする必要があります。ランタイム・パニックが発生した場合、エラー値は不定であり、異なるランタイム・エラー条件を表すことがあります。
Go言語では、エラーハンドリングや例外処理を行うために、error インターフェースを使います。一般的に、関数は error を返すことがあります。エラーが発生した場合、error が nil でないことを確認し、適切な処理を行います。以下は、基本的な例です。
この例では、divide 関数は2つの引数を受け取り、割り算を行います。もしゼロで割ろうとした場合は、エラーを返します。main 関数では、divide を使って計算を行い、エラーがある場合はエラーメッセージを表示します。
Goでは、error が nil であればエラーが発生していないことを示し、nil でなければエラーがあることを示します。このようにして、エラーハンドリングと例外処理を行います。
システム面での注意点(System considerations)
組込みパッケージ unsafe は、コンパイラーに知られており、インポート・パス "unsafe"でアクセスでき、型システムに違反する操作を含む低レベルのプログラミングのための機能を提供します。unsafeを使用したパッケージは、手動で型安全性を吟味する必要があり、ポータブルではないかもしれません。パッケージは以下のインタフェースを提供します。
Pointer はポインター型ですが、Pointer の値はdereferencedできません。基礎となる uintptr 型の任意のポインターまたは値は、基礎となる Pointer 型の型に変換することができ、その逆も可能です。Pointer と uintptr の間の変換の効果は、実装で定義されます。
関数 Alignof および Sizeof は、任意の型の式 x を受け取り、あたかも var v = x で v が宣言されたかのように、仮想変数 v のアラインメントまたはサイズをそれぞれ返します。
Offsetof 関数は、s または *s で示される構造体のフィールド f を示す(括弧で囲まれた)セレクタ s.fを受け取り、構造体のアドレスに対するフィールドのオフセットをバイト単位で返します。
f が埋め込みフィールドの場合は、構造体のフィールドを介してポインタの間接性なしに到達可能でなければなりません。
フィールド f を持つ構造体 s の場合。
コンピューター・アーキテクチャーでは、メモリー・アドレスを整列(aligned)することが要求される場合があります。つまり、変数のアドレスは、変数の型の整列を表す係数の倍数でなければなりません。関数 Alignof は、任意の型の変数を示す式を受け取り、(その型の)変数のアラインメントをバイト単位で返す。
変数 x の場合。
Alignof, Offsetof, Sizeof の呼び出しは、uintptr 型のコンパイル時定数式です。
関数 Add は、len を ptr に追加し、更新されたポインター unsafe.Pointer(uintptr(ptr) + uintptr(len)) を返します。len 引数は、整数型または型付けされていない定数でなければなりません。定数の len 引数は int 型の値で表現できなければなりません。型付けされていない定数の場合は int 型になります。Pointer の有効な使用法に関する規則も適用されます。
関数 Slice は、基底となる配列が ptr で始まり、長さと容量が len であるスライスを返します。Slice(ptr, len) は以下と同じです。
ただし、特殊なケースとして、ptr が nil で len が0の場合、Slice は nil を返します。
len 引数は整数型または型付けされていない定数でなければなりません。定数 len の引数は非負で、int型の値で表現できなければなりません。型付けされていない定数の場合は、int型が与えられます。実行時に len が負の値の場合、あるいは ptr が nil で len が 0 でない場合、ランタイム・パニックが発生します。
サイズとアライメントの保証(Size and alignment guarantees) -- 数値型では、以下のサイズが保証されています。
以下のミニマムアライメント特性が保証されています。
構造体や配列型は、ゼロより大きなサイズを持つフィールド(または要素)を含まない場合、サイズがゼロになります。2つの異なるゼロサイズの変数が、メモリ上で同じアドレスを持つことがあります。
民事訴訟法/略式手続

たとえば請求金額が十数万円程度のトラブルを解決するのにあたり、弁護士などに依頼して請求金額を大幅に上回る費用を投じることは、コストが割に合わない。
このような少額のトラブルを訴訟制度で解決するために、少額訴訟という制度がある。
当初は30万円以下の金銭請求を扱っていたが、制度の好評につき、平成15(2003)年より訴額の上限が60万円に引き上げられた。金融業者などの利用を抑えるため、少額訴訟手続きを利用出きる回数は年10回以下に利用が制限されている(368条1項、規233条)。
ともかく、少額訴訟は上述のような目的のための制度なので、簡易にして迅速である必要がある。
現状、少額訴訟は簡易裁判所で扱われる。
訴額60万円以下の金銭請求であれば、少額訴訟の制度を利用できる。
原告は、少額の訴訟をする際、少額訴訟の制度を利用するか、それとも通常の制度を利用するかを、選ぶ亊ができる。
少額訴訟による審理を求める際、その旨を自分の訴えを扱っている簡裁に申述しなければならない(368条2項)。
また、被告は、原告の少額訴訟の要望に従う必要は無い。つまり被告は、口頭弁論前なら、少額訴訟手続を通常の訴訟に戻すように申述する亊ができる(373条1項)。少額訴訟の制度は後述するように上訴が禁止されるなどの制約があるので、被告の防御権を充分に保障するためには、被告に通常訴訟に戻すための選択肢が与えられるのは当然であろう
少額訴訟は原則として、審理は1回の口頭弁論で済まされる。また、このような事情を考えれば当然だが、口頭弁論を終えたあとに被告が少額訴訟から通常訴訟に戻すように申述する亊はできないとされている(373条2項)。
手続の円滑な進行のため、民事訴訟規則では裁判所書記官および裁判官から、原告・被告の当事者にそれぞれ少額訴訟手続の説明がなされる(規222条)。実務的には書面を用いて説明することもある。
少額訴訟の要件を欠く場合、裁判所が職権で通常の訴訟手続に戻す(373条3項)。
少額訴訟の審理は、原則として1日で行われる亊となっているので(370条)、最初に開かれた口頭弁論期日において審理が完了する。 また、このためもあって、反訴も許されない(369条)。終局判決に対する控訴も許されない(377条)。
証拠調べも即日で取り調べられる証拠に限られるが(371条)、疎明ではなく証明が必要とされている。
証人尋問および当事者尋問の順序は、裁判官が適切だと認める順序で行う。

督促手続は、金銭あるいは有価証券などの金銭的な債務に限り、債務名義を簡易・迅速に債権者に取得させる手続である。督促に仮執行宣言というものが記載されていれば、仮差押ができる。少額訴訟手続とは違い督促手続には回数制限も無く、そのためもあり実務的にはクレジット業者や消費者金融業者などの金融業者にも督促手続はよく使われている。
強力であるが、しかし債務者が2週間以内に異議申立をすれば通常の訴訟に移行する。
仮執行宣言付き支払督促の送達を受けた債務者が2週間以内に督促異議の申し立てをしないなら、支払督促じゃ確定判決と同一の効力を持つに至り、したがって債務名義となる(396条、民執22条7号)。
さて、強力であるので、もし仮に請求権のない不当な要求であっても、金銭債務のように回復が比較的容易な債務でなければならず、よって条文でもそのような配慮がなされている。 条文では「金銭その他の代替物又は有価証券の一定の数量の給付を目的とする請求」に限られる(382条本文)とある。
具体的には、督促手続とは、債権者が督促の申立をすれば、簡裁の裁判所書記官は債務者を交えずに、「支払え」という内容の督促をいきなり債務者に発する手続である。
この督促に対し、債務者から異議(督促意義)の申立があれば、通常の訴訟に移行する。また、督促手続に異議を申し立てる機会を債務者に保障する必要もあるので、督促手続は公示送達の方法によらずに債務者に送達できなければ、効力が生じない(382条但書、388条)。
督促手続のオンライン化対応がなされており、既に2020年の時点でもある程度はオンラインで督促の申立をする亊ができる(397条〜402条)。東京簡裁がオンライン化対応の管理をしている。督促する側がオンライン督促を利用の仕組みについては、あらかじめ電子証明書などの事前準備が必要であり、インターネットを利用し、督促オンラインシステムのフォームに従って申立てができるという仕組みになっている。
刑事訴訟法/公訴

刑事訴訟では、検察が訴えない状態で審理が始まることは禁止されているのが原則である。つまり、検察官が訴えないかぎり、裁判所は事件を審理することができない。これを不告不理の原則という。
なお、この考えは古代ローマ法源「訴える者がなければ審判人もいない」(Nemo judex sine actore)をもとにしている。
現行法では、起訴は検察だけが行える。 これを起訴独占主義という。
私人が起訴できないのはもちろん、検察以外のどの国家機関も起訴できないのが原則であるが、検察審査会の場合など若干の例外がある。 検察審査会の場合、弁護士が公訴する(検審41条の9)。
どちらの場合にせよ、警察は起訴を禁じられている。

戦前は、検察の証拠資料が、公判前に裁判所に提出されていた。 このことが、裁判官に予断を与えるとして、裁判官の中立性を害するという批判があったので、現行刑訴法ではこのような仕組みではない。
現行刑訴法では、検察官は起訴にあたって、起訴状だけを提出しなければならず、捜査資料の提出および引用は禁じられている(256条6項)。このような、起訴では起訴状しか出していけない規則のことを「起訴状一本主義」という。
公訴の提起は、検察官が起訴状を裁判官に提出して、これを行わなければならない(256条)。口頭による起訴は許されない。 起訴状には、「被告人を特定するに足りる事項」として「被告人の氏名その他」を記載しなければならない(256条2項)。
また、起訴状には
を記載しなければならない(256条2項2)。
その他、刑事訴訟規則によると「被告人の年齢・職業・住所・本籍」などの情報も記載されるが、これらの事項(年齢など)が不明な場合はその旨を記載すれば足りる(規164条)。
被告人とは別に真犯人が別にいる事が判明した場合、もとの被告人には無罪を言い渡す。

罪名は、「適用すべき罰条を示して」記載しなければならない(256条4項)。
たとえば刑法犯なら「窃盗 刑法 第235条」のように、あるいは特別法犯なら「覚せい剤取締法違反 同法第41条の3第1項第1号、第19条」のように記載されるのが通例である。
もし罪名・罰条に誤りがあっても、これらは正確を期すための措置にすぎないので、そのため誤りが被告人の防御に実質的な不利益を与えないかぎり、公訴提起の効力には影響を及ぼさない(256条4項但書)。
検察審査会は、検察審査会法によって定められている。
仕事内容は
である。
衆議院議院の選挙権を持つ有権者の中から無作為にくじで選定された11人の検察審査員によって、任期6年の検察審査会が構成される。
検察が不起訴処分をした場合、検察審査会は、「不起訴不当」、「不起訴相当」、「起訴相当」のいずれかの議決を行う(検審35条〜39条の5)。
原則的に議決は多数決によるが、しかし「起訴相当」は8人以上の多数でなければならない(同27条、39条の5)。
ぞして、検察審査会が、審査の結果の議決をしたときは、理由を付した議決書を作成し、その謄本を当該警察官を指揮監督する検事正および検察官適格審査会に送付する(検審40条)。
2004年の法改正によって、※調査中
検察の不起訴に不満がある場合の手続として、対象犯罪が公務員職権乱用罪(刑193条)などいくつかの犯罪に限られる手続であるが、それらの対象犯罪を検察が不起訴にした場合には、告訴者が直接的に裁判所に起訴できる。これを付審判手続という。
付審判手続が行われたとき、裁判所は一応は起訴を検察にうながすように確認を検察に取るものの、その確認の結果として検察は引き続き不起訴をつらぬく意志である場合も多いので、検察が不起訴をつらぬく場合には代わりに、裁判官の指定した弁護士に訴訟を維持させる(指定弁護士)。
検察審査会や付審判手続は、不当な不起訴処分に対して、検察とは異なる組織によって抑制するための制度であった。
一方、不当な起訴処分に対する抑制については、制度が存在しない。
学説的には、公訴権濫用論というのが ・・・※調査中
簡易裁判所は、管轄とする軽微な事件に対して、100万円以下の罰金または科料を科すことができる(461条)。これを略式手続という。
略式手続の特徴として、公判を開かずに、書面による非公開の審理で迅速に処理するのが特徴である。
検察官は、あらかじめ被疑者に対して、略式手続を理解させるために必要な事項を説明し、通常の審判を受けることができる亊を説明しなければならない(461条の 2)。そして、検察官が略式手続で起訴(略式起訴)するには、上述の説明をして理解させたことを明らかにする書面を請求書に添付しなければならない。
略式命令を受けた被告人または検察官は、その告知を受けた日から14日以内に、正式裁判を請求することができる(465条)。請求を受けた裁判所は、請求が適法であると判断すれば通常の審判をするが、不適法であると判断すれば棄却をする。
被疑者および被告人は、いつでも弁護人をつける亊ができ(30条1項)、被疑者または被告人が選んだ弁護人のことを私選弁護人という。被告人本人のほか、その法定代理人や保佐人など一定の関係者も、被告人のための私選弁護人を選任できる(30条)。
また、被疑者・被告人およびその代理人などは、選んだ私選弁護人をいつでも解任できる。
これに対し、国選弁護人とは、裁判所が選んだ弁護人のことである。被告人が経済的理由などで弁護人を選べない場合、裁判所は国選弁護人を付けなければならない(36条)。 国選弁護人の解任については、裁判所が判断および決定をする。38条に所定の解任自由が定められている。
私選弁護人も国選弁護人も、弁護士が選ばれる(私選は31条1項、国選は38条)。
弁護人の権限などについては、選任方法の違いを除けば、私選弁護人と国選弁護人とで基本的に同じ権利・義務である。
私選弁護人について、公訴前に選任した私選弁護人を公訴後にも有効にするには、弁護人選任届を検察官または司法警察員に差し出さなければならない(規17条)。 また、その弁護人選任届には、被疑者(または被告人)と弁護人との両方の氏名の署名が必要である(規18条)。判例では、両者の署名がなければ、選任が無効になる(福岡地決昭和47・6・27刑月4巻6号1244頁参照)。
国選弁護人の人数は原則1人だが、死刑または無期懲役または無期の禁錮にあたる罪において特に必要の場合は2人まで可能である(37条の5)。
被疑者の国選弁護人については、2004年の刑訴法改正から導入されており、2006年から勾留段階の国選弁護人の制度が施行されている。当初は対象事件が死刑または無期などの重大事件だけだったが、しかし2016年以降は対象が全ての事件に拡大された。
しかし現状、逮捕段階の国選弁護の制度は無い。
Go/Goのプログラムがどんなアセンブリにコンパイルされるか？

Goは簡素化された構文とキャッシュの使用により、非常に高速にコンパイルされますが、(中間コードではなく)ネイティブな機械語を生成します。
では、実際にどのようなコードが生成されるかを検証してみましょう。
上のような単純で完全なプログラム hello.go を用意します。
ar(1) のアーカイブです。
展開してみても
よく見ると、ソースの fmt.Println("Hello, World") が、fmt.Fprintln(os.Stdout,) に置き換えられておりインライン展開が行われていることがわかります。
Goはコンパイラーですが、コンパイラー自体がGoで書かれ、ソースコードとともに配布されており、他にも
や
の様なハウスキーピング用のコマンドがあります(機会を見て紹介します)。
Go/クロスコンパイル

Goは、クロスコンパイルが容易なことで知られています。
go tool dist list で対応しているOSとアーキテクチャーの一覧が表示されます。
以下のような条件で、Hello World をクロスコンパイルしてみましょう。
ターゲットでの実行には特別なランタイム・ライブラリーなどは不要です。
Go/cgoでGoのコードからCの関数を利用する

GoのコードからCの関数を利用するには、cgo という仕組みを使います。
Cの標準ライブラリー関数に、整数で分子と分母を与えると商と剰余を返す関数 div() があります。 Goの多値返しと似ているので、Goから呼べるようにしてみました。
ハイブリッド・アート

ハイブリッド・アートとは美術と様々なフィールドの要素を融合したヒューリスティクスな非定型的な芸術のことである。
現代美術、メディアアート、パフォーマンスアートまで、インターデシプリナリーな多様性と最先端の技術の複合、再統合の反復により生み出される芸術を社会学者の松本良多 (Ryota Matsumoto)は複合芸術 (ハイブリッド・アート)と定義した。その概念は従来のエクレクティクなクリエイテビティの広義なフレームワークにとどまらない。ドナ・ハラウェイ (Donna Haraway)のサイボーグ理論をはじめとする科学や哲学、幅広い様式からのマルチバレントな要素をとりいれ、伝統的な芸術のタイポロジーの延長線上ではなく、むしろそのコンセプトを再定義する脱領土化と生成の複合性を焦点においた美術である。
バイオアートのアーティストであるエドゥアルド・カック (Eduardo Kac)、ポストヒューマニズムを具現化したステラーク (Stelarc)、ポストデジタルの松本良多 (Ryota Matsumoto) があげられる。
離婚

形式婚主義である日本法の離婚の成立要件は、戸籍において離婚の事実が記載されることとなる。ただし、届出が真正の意思によるものであるか否かについては別途評価される。
離婚によって以下の法的効果が離婚成立の日以降将来にわたって発生する。なお、本効果は「婚姻の取消し」においても準用される(民法第749条)。
民事訴訟法/複数請求訴訟

ひとつの訴えの中で、原告は複数の請求を主張することができる。
訴えの当初から、原告が複数の請求をしている場合、これを「請求の客体的併合」といい、これが可能だという亊が定められている(136条)。 「訴えの客観的併合」とも言われるが、しかし複数の訴訟を併合しているわけではない。
さて、原告が請求の併合を求めていても、逆に裁判官によって分離がされる場合もある。たとえば手形訴訟などは、通常の訴訟とは仕組みが異なるので、これらは訴訟を分けたほうが効率的な場合もある。
手形訴訟、少額手続訴訟は、通常の訴訟とはちがった異種の手続である。なので、これらの訴訟に属する内容の請求は、場合によっては分離され、必要があれば他の裁判所などに移送される場合もある(16条1項) 。
同種の内容の請求同士であれば、請求を併合できる。
人事訴訟も、通常の訴訟とはちがった異種の請求ではあるが、しかし人訴法は一定の範囲で通常訴訟との併合を許している(人訴17条)。

※調査中
※調査中
たとえば請求金額を増減させたり、あるいは請求を追加したりするなどの、訴えの変更ができる場合がある
口頭弁論の終結前なら、場合によっては、請求の内容を変更できる。
その要件は下記の通り。
・請求の基礎に変更が無いこと(143条1項)。
・訴訟を著しく遅延させないこと(143条1項但書)。
・事実審の口頭弁論終結前であること(143条1項本文)。
・上告審は法律審なので、上告審では原則として請求内容を変更できない(最判平成14・6・11民集56巻5号958頁参照)。
訴えの変更の申立ては、書面でしなければならず(143条2項)、かつ、その書面は被告に送達されなければならない(3項)。
反訴とは、訴訟の継続中に、被告が原告に対して、同じ訴訟手続のなかで訴えを提起することである。
「反訴」に対する用語として、原告が訴えている継続中の訴訟のことを「本訴」という。
反訴を請求する被告は、反訴との関係では「反訴原告」となる。反訴の請求を受けた本訴原告は、反訴との関係では、「反訴被告」となる。
反訴の要件として、
などがある。
手続に関しては、反訴の手続きは書面によることが規定されている(146条1項)。
控訴審での反訴については、相手方(本訴原告=反訴被告)の同意があることが要件になる(300条1項)。

裁判所に係属する事件について、当事者は、さらに同じ訴えを提起することができないと定められており、これを重複訴訟の禁止、または二重起訴の禁止などという(142条)。
この条文の趣旨は、学説的には、同一内容の訴訟が重ねて提起されると、両訴訟で矛盾する結果が生じるおそれがあるから、などと説明されている。また、裁判所や当事者の資源が無駄遣いされ、訴訟上の不経済にもなる。
さて、問題は、すでに訴えた訴訟にある請求と共通している部分は多いが、微妙に内容の異なる請求がされた場合、どうすべきか、である。
たとえば、当事者が一部異なっていたりなどして、訴えを併合できない場合もあり、そのような別々の訴えにおいて、似たような内容の請求がそれぞれの当事者によって提起される場合もある。
このように微妙に内容が異なる場合には、もし142条にのっとって後訴を棄却してしまうと、後訴だけに参加している当事者が不利益を被るなどして不公平である等の問題点があるので、よって裁判所のとるべき対応としては142条とは別の処理が必要になる場合もありうる。
事件が似通っているが、微妙の異なる訴訟を起こす必要が生じた場合、どちらか一方の裁判所に移送して、送られた側の裁判所では訴えの追加的変更(143条)による訴えの併合をするなどして、どちらかの裁判所にその内容の訴えを片寄せをする亊がある。先行する訴訟(先行訴訟)をしている裁判所に、後訴の内容を移送して、片寄せする亊が比較的に多い。
民事訴訟法/不服申立て

上訴をするには原則、訴える側に、上訴後に勝訴した場合の実質的な利益がなければならない。 このような亊を、「上訴の利益」(「不服の利益」ともいう)が上訴を起こす側に存在している、などのように言い、具体的には下記のような内容である。
たとえば、上訴前の判決で全部勝訴した側の当事者が上訴しても、棄却されるのが通常である。つまり、全部勝訴の場合には、上訴の利益は無いのが原則である。一部認容判決の場合は、原告・被告両方に上訴の権利がある。
また、単に判決理由が納得できないという程度の理由では、上訴は基本的に認められない。
適法に上訴がなされると、原裁判は確定しなくなり、このことを確定遮断効という(116条2項)。また上訴により、上級の裁判所が審理が移動するが、これを移審効という(規174条)。また、この2つの効果の適用範囲については、上訴した側の不服申立ての限度にかかわらず、元裁判の全体に確定遮断効と移審効が適用される(上訴不可分の原則)。

抗告とは、判決以外の決定または命令に対して不服を申し立てる独立の簡易な上訴である。 事件の本体についての訴訟とまとめてしまうと訴訟経済的に不経済なので、独立して抗告という制度が存在している。
「通常抗告」には、抗告期間の定めがなく、いつでも抗告できるが、執行停止能が無い。
一方、「即時抗告」は、抗告期間が1週間以内であるが、執行停止能がある(332条)。
最高裁判所に対する抗告として「特別抗告」が存在しており、これは憲法違反を理由とした抗告であり、高等裁判所の命令・決定に対して最高裁へ抗告できる。
「許可抗告」とは、最高裁判所などの判例に反する決定・命令が高等裁判所から出された場合に、最高裁判所に抗告することで、最高裁判所による法令解釈の統一性を図る制度である(337条)。
平成8年に許可広告は制定され、比較的に新しい制度である。8年以前には最高裁への抗告は、特別抗告しかなかった。
民法第757条

法学>民事法>コンメンタール民法>第4編 親族 (コンメンタール民法)
削除(1989年(平成元年)改正)
1989年改正にて削除、削除前には、明治民法第795条を継承する以下の条項があった。
(夫婦財産契約の対抗要件-外国人の場合)
明治民法において、本条には以下の規定があった。
日本のすがた 地理 都道府県/奈良県

小学校・中学校・高等学校の学習 > 中学校の学習 > 中学校社会 > 中学校社会 地理> 日本のすがた 地理 都道府県 >地理 奈良県
奈良県(ならけん)は、近畿地方に位置し、奈良市を県庁所在地とする都道府県の一つである。
主な市町村:
奈良市や橿原市、生駒市などは交通の便が良く、大阪や京都などのベッドタウンとなっているため、人口が奈良県内では多い。
県の面積は全国で40位と、狭い。奈良県は海に接していない内陸県。
県は近畿地方の紀伊半島(きいはんとう)の中央部に位置し、大阪府、和歌山県、三重県、京都府の4つの都道府県に接し、囲まれている。
北西部には奈良盆地(なら ぼんち)という盆地(山に囲まれた低地)があり、北東部には大和高原(やまと こうげん)という高原(高いところにあるなだらかなところ)がある。 南部には、標高が高い紀伊山地(きい さんち)がある。県で一番高い山は八経ヶ岳(はっきょう がたけ)である。標高は1915m。
・川:紀の川、大和川など。
奈良県には昔都が置かれていた。特に奈良時代の平城京(へいじょうきょう)は有名である。
前述の通り、奈良には昔都が置かれていたこともあって、奈良県にはたくさんの文化財がある。特に奈良市には多い、県全体で「古都奈良の文化財(ことならのぶんかざい)」、「法隆寺地域の仏教建造物(ほうりゅうじちいきのぶっきょうけんぞうぶつ)」、「紀伊山地の霊場と参詣道(きいさんちのれいじょうとさんけいみち)」という3つの世界遺産があり(いずれも世界文化遺産)、これは鹿児島県とならんで全国最多である。 「古都奈良の文化財」で有名なのは東大寺、薬師寺、唐招提寺、春日大社など。 「法隆寺地域の仏教建造物」で有名なのは法隆寺、法起寺など。
県外ではあまり有名ではないが、奈良市はいちごの栽培が盛んで、古都華、あすかルビーといった品種がある。また、大和高原では「大和茶」と呼ばれるお茶がある。
奈良県南西部の五條市では、柿の栽培が盛んで、奈良県の柿の生産量は和歌山県に次いで全国2位となっている。市町村別では、五條市は柿の生産量が全国一位である。
奈良県中南部の吉野地域は、吉野杉(よしのすぎ)という杉が有名で、林業が盛んである。歴史が古く、室町時代から植林が始まっており、大阪城の建築にも使われた。日本三大人工美林の一つに数えられている。
奈良県には3つの伝統的工芸品がある(奈良筆、奈良墨、高山茶筌)。奈良筆は主に奈良市と大和郡山市で作られている。筆の歴史はとても古く、1200年前頃に筆作りが始まっていたとされている。