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.44.0-wmf.1
first-letter
メディア
特別
トーク
利用者
利用者・トーク
Wikibooks
Wikibooks・トーク
ファイル
ファイル・トーク
MediaWiki
MediaWiki・トーク
テンプレート
テンプレート・トーク
ヘルプ
ヘルプ・トーク
カテゴリ
カテゴリ・トーク
Transwiki
Transwiki‐ノート
TimedText
TimedText talk
モジュール
モジュール・トーク
プログラミング
0
846
262862
262587
2024-10-31T23:48:20Z
Ef3
694
/* プログラミングに関するトピック */ * [[/リフレクション|リフレクション]]
262862
wikitext
text/x-wiki
<small>{{Pathnav|メインページ|工学|情報技術}}</small>
----
プログラミングとは、コンピューターに特定のタスクを実行させるための命令や指示を記述する作業を指します。コンピューターはプログラムと呼ばれる一連の命令を実行することで機能します。これらの命令は、プログラミング言語を使って記述されます。
具体的には以下のようなことが含まれます。
; 問題の分析と設計
: プログラムを作成する前に、解決したい問題を分析し、アルゴリズム(解決方法)を設計します。
; コーディング
: 設計したアルゴリズムをコンピューターが理解できる形式の命令(プログラミング言語)で記述します。
; テストとデバッグ
: 作成したプログラムが意図した通りに動作するかをテストし、エラー(バグ)があれば修正します。
; 実装とデプロイ
: テストを経て完成したプログラムを実際のシステムやアプリケーションに実装し、デプロイします
; 保守とアップデート
: デプロイ後も、新しい要求や環境の変化に合わせてプログラムを保守・更新していきます。
プログラミングには様々な言語とツールが使われますが、根本的には以下の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)があります。
これらのコンピューター言語は、それぞれ異なる目的や文脈で使用され、コンピューターとのインタラクションやデータ処理を可能にします。
=== アセンブリ言語 ===
* [[x86アセンブラ]] {{進捗|50%|2020-07-11}}
* [[CASL]] - 国家試験「[[基本情報技術者試験]]」に出題するために開発されたアセンブリ言語。
----
<categorytree mode="pages" hideroot="on"> アセンブリ言語 </categorytree>
=== プログラミング言語 ===
<!--
:(※編集者への注意)言語名はなるべくアルファベット順に並べてください。
* [[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]]
----
<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]]
* [[/ジェネリックプログラミング|ジェネリックプログラミング]]
* [[/ダックタイピング|ダックタイピング]]
* [[/テンソル|テンソル]]
* [[/データ構造|データ構造]]
* [[/プログラミング・パラダイム|プログラミング・パラダイム]]
* [[/リテラル|リテラル]]
* [[/列挙型|列挙型]]
* [[/リフレクション|リフレクション]]
* [[/型推論|型推論]]
* [[/変数|変数]]
* [[/式と演算子|式と演算子]]
* [[/固定幅整数|固定幅整数]]
* [[/浮動小数点数|浮動小数点数]]
* [[/多倍長整数|多倍長整数]]
* [[/短絡評価|短絡評価]]
* [[/連想配列|連想配列]]
* [[/遅延評価|遅延評価]]
* [[/配列|配列]]
* [[/関数型プログラミング|関数型プログラミング]]
== カテゴリツリー ==
{{#カテゴリツリー:プログラミング}}
<!--
== 下位階層のページ ==
{{特別:前方一致ページ一覧/プログラミング}}
-->
{{DEFAULTSORT:ふろくらみんく}}
[[Category:コンピューター言語]]
[[Category:プログラミング|*]]
[[Category:計算機科学]]
[[Category:情報技術]]
{{NDC|007.64}}
7agt79y3onsn2tm88d2274psutgfohs
高等学校数学III/積分法
0
1933
262842
261895
2024-10-31T12:40:50Z
2400:4051:4460:AA00:90FF:8E47:8773:593B
/* 速度と道のり */
262842
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校数学|高等学校数学III|pagename=積分法|frame=1|small=1}}
ここでは、数学IIの[[高等学校数学II/微分・積分の考え|微分・積分の考え]]で学んだ積分の性質についてより詳しく扱う。また、三角関数や指数・対数関数などの関数の積分についても学習する。
[[高等学校数学]]の全ての分野を学んだ後に学習に取り組んでほしい。
== 不定積分 ==
=== 積分の基本的な性質 ===
積分法について
<math>\int \{ f(x) + g(x) \} dx = \int f(x) dx + \int g(x) dx ,</math>
<math>\int af(x) dx = a \int f(x) dx</math>(aは定数)
が成り立つ。
導出
<math>\int \{ f(x) + g(x) \} dx = \int f(x) dx + \int g(x) dx</math>
の両辺を微分すると、
左辺 =右辺 = <math> f + g</math>
が従う。
よって、
<math>\int \{ f(x) + g(x) \} dx = \int f(x) dx + \int g(x) dx</math>
の両辺は一致する。
(実際には2つの関数の導関数が一致するとき、
それらの関数には定数だけのちがいがある。
仮に、F(x)とG(x)が共通の導関数h(x)を持ったとする。
このとき、
<math>(F(x)-G(x) )' = h(x)- h(x) = 0</math>
となるが、0の原始関数は定数Cであることが分かる。
よって、両辺を積分すると、
<math>F(x)-G(x) = C</math>
となり、F(x)とG(x)には定数だけの差しかないことが確かめられた。
よって、
<math>\int \{ f(x) + g(x) \} dx = \int f(x) dx + \int g(x) dx</math>
は定数だけのちがいを含んで成り立つ式である。
より一般に、不定積分が絡む等式は定数分の差を含めて成り立つというのが通例である。)
<math>\int af(x) dx = a \int f(x) dx</math>
についても両辺を微分すると、
左辺=右辺= a f(x)
が従う。
よって、
<math>\int af dx = a\int f dx</math>
が成り立つことが分る。
関数 <math>f(x)</math> の原始関数を <math>F(x)</math> とすると
<math>\int_a^b f(x) \, = F(b)-F(a) = -(F(a)-F(b)) = -\int_b^af(x)\, dx</math> である。
<math>\int_{a}^{c} f(x) \, dx + \int_{c}^{b} f(x) \, dx = (F(c) - F(a)) + (F(b) - F(c)) = F(b) - F(a) = \int_{a}^{b} f(x) \, dx</math>
=== 置換積分法 ===
関数の原始関数を求める手段として、
積分変数を別の変数で置き換えて積分を行なう手段が知られている。
これを置換積分と呼ぶ。
<math>\int f(g(x)) dg(x) = \int f(g(x)) g'(x) dx</math>
導出
<math>\int f(g(x)) dg(x) =F(g(x))</math>を<math>x</math>について微分すると、
<math>F'(g(x)) = f(g(x))g'(x)</math>
再び<math>x</math>について積分すると、
<math>\int f(g(x)) dg(x) = \int f(g(x)) g'(x) dx</math>
また、特に
*<math>\int f(ax+b) dx = \frac{1}{a} \int f(ax+b) d(ax+b)</math>
*<math>\int \{f(x)\}^n f'(x) dx = \frac{1}{n+1} \{f(x)\}^{n+1} + C (n \ne -1)</math>
*<math>\int \frac{f'(x)}{f(x)} dx = \log | f(x) | + C</math>
例えば、<math>\int (ax+b)^2 dx</math>を考える。
<math>t = ax+b</math>と置く。
この両辺を微分すると
<math>dt = adx</math>
が成り立つことを考慮すると、
{|
|-
|<math>\int t^2 \frac {dt} a</math>
|<math>=\frac{ t^3} {3a} + C</math>
|-
|
|<math>=\frac{ (ax+b)^3} {3a} + C</math>
|}
となることがわかる。
実際この式をxで微分すると
<math>
(ax+b)^2
</math>
と一致することが分る。
置換積分を使わずに計算することも出来る。
{|
|-
|<math>\int (ax+b)^2 dx</math>
|<math>=\int (a^2x^2+2abx +b^2) dx</math>
|-
|
|<math>= \frac {a^2} 3 x^3 +abx^2 +b^2x + C'</math>
|-
|
|<math>= \frac {a^2} 3 x^3 +abx^2 +b^2x + \frac {b^3} {3a} +C</math>
|}
(<math>C'=\frac {b^3} {3a} +C</math>と置き換えた。)
<math>=\frac{ (ax+b)^3} {3a} + C</math>
となり確かに一致する。
=== 部分積分法 ===
関数の積の積分を行なうときある関数の微分だけを取りだして積分すると、うまく積分できる場合がある。関数 <math>g(x)</math> の原始関数を <math>G(x)</math> とすると
<math>\int f(x) g(x) \, dx = f(x) G(x) - \int f'(x) G(x) \, dx</math>
導出
積の微分法より <math>\{f(x)G(x)\}' = f'(x)G(x) + f(x)g(x)</math> である。これを移項して
<math>f(x)g(x) = \{f(x)G(x)\}' - f'(x)G(x)</math>
である。両辺をxで積分して
<math>\int f(x) g(x) \, dx = f(x) G(x) - \int f'(x) G(x) \, dx</math>
が得られる。
例えば、
{|
|-
|<math>\int x (ax+b)^3 dx</math>
|<math>=\int x \left(\frac {(ax+b)^4} {4a} \right)' dx</math>
|-
|
|<math>=x \left(\frac {(ax+b)^4} {4a} \right)- \int (x)' \frac {(ax+b)^4} {4a} dx</math>
|-
|
|<math>=x \left(\frac {(ax+b)^4} {4a} \right)- \int (x)' \frac {(ax+b)^4} {4a} dx</math>
|-
|
|<math>=x \left(\frac {(ax+b)^4} {4a} \right)- \int \frac {(ax+b)^4} {4a} dx</math>
|-
|
|<math>=x \left(\frac {(ax+b)^4} {4a} \right)- \frac {(ax+b)^5} {20a^2} </math>
|}
部分積分を <math>n</math> 回行うと、
<math>\begin{align}
\int f(x) g(x) \, dx &= f(x) g^{(-1)}(x) - \int f'(x) g^{(-1)}(x) \, dx \\
&= f(x) g^{(-1)}(x) -f'(x) g^{(-2)}(x) + \int f''(x) g^{(-2)}(x) \, dx \\
&= f(x) g^{(-1)}(x) - f'(x) g^{(-2)}(x) + f''(x) g^{(-3)}(x) + \cdots + (-1)^n \int f^{(n)}(x) g^{(-n)}(x) \, dx
\end{align}</math>
となる。 ここで、<math>g^{(-1)}(x)</math> は <math>g(x)</math> の不定積分の任意の一つ。<math>g^{(-2)}(x)</math> は <math>g^{(-1)}(x)</math> の不定積分の任意の一つ。... <math>g^{(-n)}(x)</math> は <math>g^{(-n+1)}(x)</math> の不定積分の任意の一つというように定める。このように、積分記号で何回も不定積分を計算するのはやや面倒なので、次のような表を作ってみると計算しやすい。
{|class="wikitable" style="background: #ffffff; text-align: center;"
|+
!符号
!微分
!積分
|-
|<math>+</math>
|<Math>f(x)</math>
|<Math>g(x)</math>
|-
|<math>-</math>
|<Math>f'(x)</math>
|<Math>g^{(-1)}(x)</math>
|-
|<math>+</math>
|<Math>f''(x)</math>
|<Math>g^{(-2)}(x)</math>
|-
|<math>-</math>
|<Math>f^{(3)}(x)</math>
|<Math>g^{(-3)}(x)</math>
|-
|<math>\cdots</math>
|<Math>\cdots</math>
|<Math>\cdots</math>
|-
|<math>(-)^n</math>
|<Math>f^{(n)}(x)</math>
|<Math>g^{(-n)}(x)</math>
|}
この表から、部分積分を <math>n</math> 回行った結果は、
一行目の符号 × 一行目の微分 × 二行目の積分 + 二行目の符号 × 二行目の微分 × 三行目の積分 + ... + <math>\int</math> n行目の符号 × n行目の微分 × n行目の積分 dx
と求まる。n行目の微分 が 0 であった場合は、最後の積分は消えて、不定積分は
一行目の符号 × 一行目の微分 × 二行目の積分 + 二行目の符号 × 二行目の微分 × 三行目の積分 + ... + n-1行目の符号 × n-1行目の微分 × n行目の積分 + C
となる。
この方法は俗に'''瞬間部分積分法'''と呼ばれており、部分積分を複数回繰り返す際の計算を非常に簡略化できるため、受験数学では重宝されるテクニックの一つである。記述で用いる場合、上の表をそのまま記述するよりも、「部分積分を繰り返し用いると」という文言の後に瞬間部分積分で求めた結果を記述するのが無難である。
=== いろいろな関数の積分===
==== 多項式関数の積分 ====
<math>n \ne -1</math>のとき、<math>\left(\frac{1}{n+1} x^{n+1}\right)'=x^n</math>なので、
<math>\int x^n dx = \frac{1}{n+1} x^{n+1} + C</math>
<math>n = -1</math>のとき、<math>(\log |x| )' = \frac{1}{x} = x^{-1}</math>なので、
<math>\int x^{-1} dx = \int \frac {1}{x} dx = \log |x| + C</math>
が成り立つ。
==== 三角関数の積分 ====
*<math>(\sin x )' = \cos x</math>
*<math>(\cos x )' = -\sin x</math>
*<math>(\tan x )' = \frac{1}{\cos^2 x}</math>
が成り立つことを考慮すると、
*<math>\int \cos x dx= \sin x + C</math>
*<math>\int \sin x dx = - \cos x + C</math>
*<math>\int \frac{1}{\cos^2 x } dx = \tan x + C</math>
となることが分る。
<math>\int \tan x dx</math>は、置換積分法を使って
{|
|-
|<math>\int \tan x dx</math>
|<math>=\int \frac{\sin x}{\cos x} dx</math>
|-
|
|<math>=\int \frac{-(\cos x)'}{\cos x} dx</math>
|-
|
|<math>= - \int \frac{(\cos x)'}{\cos x} dx</math>
|-
|
|<math>= - \log | \cos x | + C</math>
|}
:
:なお同様に、<math>\frac{1}{\tan x} = \frac{\cos x}{\sin x}</math> であるので、<math>\int \frac{1}{\tan x} dx = \int \frac{\cos x}{\sin x} dx =\int \frac{(\sin x)'}{\sin x} dx = \log \left|\sin x\right| + C</math>
:
より一般に有理関数 <math>R(x,y)</math> に対して、<math>\int R(\sin\theta,\cos\theta) \,d\theta</math> について考える。 <math>t = \tan \frac{\theta}{2}</math> とおく。 <math>\tan^2\frac{\theta}{2} + 1 = \frac{1}{\cos^2\frac{\theta}{2}}</math> よって <math>\cos^2\frac{\theta}{2} = \frac{1}{1+t^2}</math>である。<math>\frac{dt}{d\theta} = \frac{d}{d\theta}\tan\frac{\theta}{2} = \frac{1}{2\cos^2\frac{\theta}{2}} = \frac{1}{2}(t^2+1)</math> であり、<math>\cos\theta = 2\cos^2\frac{\theta}{2} - 1 = \frac{1-t^2}{1+t^2}</math> かつ <math>\sin\theta = \tan\theta\cos\theta = \frac{2\tan\frac{\theta}{2}}{1-\tan^2\frac{\theta}{2}}\cos\theta =
\frac{2t}{1+t^2}</math>
である。よって
<math>\int R(\sin\theta,\cos\theta) \,d\theta
= \int R\left(\frac{2t}{1+t^2}, \frac{1-t^2}{1+t^2}\right) \, \frac{2dt}{1+t^2}</math>
と有理関数の積分にもち込める。
幾何学的は、この変換は単位円上の点 <math>P(\cos \theta, \sin \theta)</math>と点 <math>A(-1,0)</math> を結ぶ直線の勾配 <math>t</math> で変換したものである。実際円周角の定理より <math>\angle xAP = \frac 1 2 \angle xOP = \frac \theta 2</math>より <math>t = \tan \frac{\theta} 2.</math>
被積分関数の周期が <math>\pi</math> の場合は、被積分関数は <math>\sin 2\theta,\cos 2 \theta</math> の有理関数なので、 <math>t = \tan\theta</math> と置換すると計算が楽だ。被積分関数が <math>\sin^2\theta,\cos^2\theta,\sin\theta\cos\theta</math> の有理関数となるときもこの範疇に属する。<math>t = \tan\theta</math> と置換したとき、<math>\cos^2\theta = \frac{1}{1+\tan^2\theta}=\frac{1}{1+t^2}</math>, <math>\sin^2\theta = \tan^2 \theta \cos^2 \theta = \frac{t^2}{1+t^2}</math> , <math>\sin\theta \cos\theta = \pm\sqrt{\sin^2\theta \cos^2\theta} = \frac{t}{1+t^2}</math> (<math>\sin\theta \cos\theta</math> と <math>\tan\theta = \frac{\sin\theta}{\cos\theta}</math> の正負は一致するため), <math>d \theta = \frac {dt}{1 + t^2}</math> となる。
例 <math>\int\frac{1}{\sin x \cos x}dx</math> は <math>t = \tan x</math> と置換すると、<math>\int \frac {1}{\sin x \cos x}dx = \int \frac {1+t^2}{t} \frac { dt}{1+t^2} = \ln|\tan x| + C. </math> <math>t = \tan \frac{\theta}{2}</math> と置換してしまうと、<math>\int \frac{1}{\sin x \cos x}\,dx = \int \frac {1+t^2}{t(1-t^2)}\,dt = \ln \left|\frac{t}{1-t^2}\right| + C' = \ln|\tan x| + C </math> と計算量が少し増える。
==== 指数・対数関数の積分 ====
指数関数について
<math>(e^x )' = e^x</math>
が成り立つことを用いると、
<math>\int e^x dx = e^x + C</math>
が得られる。
また、 <math>\left(\frac{a^x}{\ln a}\right)' = a^x</math> なので、 <math>\int a^x \, dx=\frac{a^x}{\ln a}</math> である。
また、<math>\log |x|</math>の
原始関数も求めることが出来る。
{|
|<math>\int \log |x| dx </math>
|<math>=\int (x)' \log |x| dx </math>
|-
|
|<math>=x \log |x| -\int x (\log |x|)' dx </math>
|-
|
|<math>=x \log |x| -\int x \frac 1 x dx </math>
|-
|
|<math>=x \log |x| -\int dx </math>
|-
|
|<math>=x \log |x| -x + C</math>
|}
となる。
有理関数 <math>R(x)</math> に対して、積分 <math>\int R(e^x) \, dx</math> は <math>t = e^x</math> すると <math>\frac{dt}{dx} = e^x = t</math> より
<math>\int R(e^x) \, dx = \int R(t) \frac{dt}{t}.</math>
==== 二次無理関数の積分(発展) ====
有理関数 <math>R(x,y)</math> に対して、積分 <math>\int R(x,\sqrt{ax^2 + bx + c}) \, dx</math> について考えよう。平方根の中身は平方完成することによって、<math>\sqrt{p^2-x^2},\sqrt{x^2+p^2},\sqrt{x^2-p^2}</math>のいずれかの形になる。それぞれの場合について、<math>x = p\sin \theta,x = p\tan\theta,x = \frac{p}{\cos \theta}</math> と変数変換すると三角関数の積分に帰着する。
また、<math>y^2 = ax^2 +bx + c</math> は二次曲線で、特に <math>a>0</math> のときは双曲線となる(<math>y^2 -a\left(x+\frac{b}{2a}\right)^2 = \frac{-b^2 + 4ac}{4a}</math>より<ref>右辺が0のとき双曲線とはならないが、このときは簡単に平方根を外すことが出来るので考える必要はない。</ref>)。このとき、<math>y=\pm \sqrt a x + t</math> すなわち <math>t = \mp \sqrt a x + \sqrt{ax^2 + bx + c}</math> と変換するとうまく計算できる(符号はどちらを選択しても良い)。幾何学的には、双曲線の漸近線に平行で切片が <math>t</math> の直線 <math>y=\pm \sqrt a x + t</math> と双曲線のただ一つの交点 <math>(x,y)</math> を変数 <math>t</math> で表したものである。
例 <math>\int \frac{dx}{\sqrt{x^2-1}} </math> は <math>t = x + \sqrt{ x^2-1}</math> と置換すると、<math>\frac 1 t = x - \sqrt{x^2-1}</math> なので、<math>t + \frac 1 t = 2x</math> すなわち <math>2dx = \left(1 - \frac 1 {t^2}\right)dt</math> また、 <math>t - \frac 1 t = 2\sqrt{x^2-1}</math>.なので、<math>\int \frac{dx}{\sqrt{x^2-1}} = \int \frac{1-\frac{1}{t^2}}{t-\frac 1 t}dt = \int \frac{dt}{t} = \ln |x + \sqrt{x^2-1}| + C </math> である。
ところで、この変換は双曲線 <math>y^2 = x^2 - 1</math> と直線 <math>y = -x + t</math> のただ一つの交点による変換であった。その交点を方程式を解いて <math>t</math> で表すと、<math>x = \frac 1 2 \left(t + \frac 1 t\right), \, y =\frac 1 2 \left(t - \frac 1 t\right)</math> を得る。これは双曲線の媒介変数表示の一つである。また、 <math>t \rightarrow e^t</math> とすると、<math>x = \frac{e^t + e^{ -t} }{2} = \cosh t, \, y = \frac{e^t - e^{-t}}{2} = \sinh t.</math> これは <math>x > 0</math> の部分の双曲線の媒介変数表示である。最右辺は双曲線関数と呼ばれ、三角関数と似た性質を持つ。関数名の <math>\mathrm{h}</math> はhyperbolaに由来する。例えば、双曲線の方程式より得られる <math>\cosh^2 t - \sinh^2 t = 1</math> は <math>\sin^2\theta + \cos^2\theta = 1</math> とよく似ている。例示の不定積分は <math>x = \cosh t</math> と置換しても解くことが出来るが、ほとんど同じことなので省略する。
== 定積分 ==
定積分について、不定積分と同じように以下が成り立つ。
'''定積分の置換積分法'''
<math>\alpha < \beta</math>のとき、開区間<math>[\alpha, \beta]</math>で微分可能な関数<math>x=g(t)</math>に対し、<math>a=g(\alpha), b=g(\beta)</math>ならば<math>\int_{a}^{b} f(x) \, dx = \int_{\alpha}^{\beta} f(g(t)) g'(t) \, dt </math>
'''定積分の部分積分法'''
<math>\int_{a}^{b} f(x) g'(x) \, dx = \left[ f(x) g(x) \right]^{a}_{b} - \int_{a}^{b} f'(x) g(x) \, dx </math>
*問題
**以下の定積分を求めよ(Hint:5, 6は漸化式を利用する)
**#<math>\int_{0}^{1} |e^x - \frac{3}{2}| \, dx</math>
**#<math>\int_{1}^{0} \frac{x-2}{(3-x)^2} \, dx</math>
**#<math>\int_{-5}^{5} x \sqrt{x^2-9} \, dx</math>
**#<math>\int_{3}^{7} x \log (x^2 - 2) \, dx </math>
**#<math>\int_{0}^{\frac{\pi}{2}} \sin^n x \, dx</math>
**#<math>\int_{0}^{\frac{\pi}{4}} \tan^n x \, dx</math>
=== 特殊な定積分 ===
==== 円 ====
<math>a < b</math> とする。積分 <math>\int_a ^b \sqrt{(x-a)(b-x)}\, dx</math> は <math>y = \sqrt{(x-a)(b-x)}</math> とすると、<math>\left(x-\frac{a+b}{2} \right) + y^2 = \left(\frac{a-b}{2} \right)^2</math> より、被積分関数 <math>y</math> は中心 <math>\frac{a+b}{2}</math> で半径 <math>\frac{b-a}{2}</math>の円周の上半分であり、積分区間もその両端なので、積分の値は半円の面積に等しく、<math>\int_a ^b \sqrt{(x-a)(b-x)} \, dx = \frac{\pi}{2}\left(\frac{b-a}{2}\right)^2</math> である。
==== King Property ====
一般に、関数 <math>f(a-x)</math> のグラフは関数 <math>f(x)</math> のグラフを直線 <math>x = \frac a 2</math> で対称移動したものである。
従って、連続関数 <math>f(x)</math> を区間 <math>\left[\frac{a+b}{2},b\right]</math> で積分した値 <math>\int_{\frac{a+b}{2}}^{b} f(x) \, dx</math> と、連続関数 <math>f(a+b-x)</math> を区間 <math>\left[a,\frac{a+b}{2}\right]</math> で積分した値 <math>\int_{a}^{\frac{a+b}{2}} f(a+b-x)\, dx</math> は等しい:
:<math>\int_{\frac{a+b}{2}}^{b} f(x) \, dx = \int_{a}^{\frac{a+b}{2}} f(a+b-x) \, dx.</math>
この等式は単に、 <math>x \to a+b-x</math> の変数変換によっても導出できる。
この等式より、 <math>\int_a^b f(x) \, dx = \int_{a}^{\frac{a+b}{2}} f(x)\, dx +\int_{\frac{a+b}{2}}^{b} f(x) \, dx = \int_{a}^{\frac{a+b}{2}} [f(x) + f(a+b-x)] \, dx </math> が導かれる。
この公式は、<math>f(x) + f(a+b-x)</math> が簡単な形になる定積分で役に立つ。
例えば、<math>\begin{align}\int_{0}^{\frac{\pi}{2}} \frac{\sin x}{\sin x + \cos x} \, dx &= \int_{0}^{\frac{\pi}{4}} \left[\frac{\sin x}{\sin x + \cos x} +\frac{\sin (\frac{\pi}{2}-x)}{\sin (\frac{\pi}{2}-x) + \cos (\frac{\pi}{2}-x)}\right]\, dx \\
&= \int_{0}^{\frac{\pi}{4}} \left[\frac{\sin x}{\sin x + \cos x} +\frac{\cos x}{\cos x + \sin x}\right]\, dx \\ &= \int_{0}^{\frac{\pi}{4}}dx = \frac{\pi}{4}.\end{align} </math>
King Property の応用例は <math>\int_{-1}^{1} \frac{x^2}{1+e^x} \, dx = \frac 1 3</math> , <math>\int_0^{\frac \pi 4} \ln(1+\tan x)\, dx = \frac \pi 8 \log 2</math> , <math>\int_0^{\frac \pi 2} \ln \sin x \, dx = -\frac{\pi}{2}\log 2</math> などがある。計算してみよ。
=== 定積分と不等式 ===
一般に、連続関数について次のことが成り立つ。
:開区間<math>[a, b]</math>において<math>f(x) \leqq g(x)</math>ならば、<math>\int_{a}^{b} f(x) \, dx \leqq \int_{a}^{b} g(x) \, dx</math>
:等号成立条件は開区間<math>[a, b]</math>において恒等的に<math>f(x) = g(x)</math>であること。
*例題
:調和級数の第n部分和が<math>\log(n+1)</math>より大きいことを証明せよ。
*解答
自然数kに対して<math>k \leqq x \leqq k+1</math>のとき<math>\frac{1}{k} \geqq \frac{1}{x}</math>であり、等号は常には成り立たないので<math>\int_{k}^{k+1} \frac{dx}{k} > \int_{k}^{k+1} \frac{dx}{x}</math>である。故に<math>\sum_{k=1}^{n} \int_{k}^{k+1} \frac{dx}{k} > \sum_{k=1}^{n} \int_{k}^{k+1} \frac{dx}{x}</math>。
このとき、(左辺)<math>= \sum_{k=1}^{n} \frac{1}{k} \int_{k}^{k+1} dx = \sum_{k=1}^n \frac{1}{k}</math>より左辺は調和級数の第n部分和であり、(右辺)<math>= \sum_{k=1}^{n} \int_{k}^{k+1} \frac{dx}{x} = \int_{1}^{n+1} \frac{dx}{x} = \left[ \log(x) \right]_{1}^{n+1} = \log(n+1) - \log(1) = \log(n+1)</math>なので、題意は示された。
'''演習問題1'''
次の不定積分を求めよ。
:(1)<math>\int \tan xdx</math>
:(2)<math>\int \frac{1}{\cos ^2x}dx</math>
:(3)<math>\int \log xdx</math>
:(4)<math>\int x\log xdx</math>
:(5)<math>\int x^2\log xdx</math>
:(6)<math>\int x^3\log xdx</math>
:(7)<math>\int x\sin xdx</math>
:(8)<math>\int x^2\sin xdx</math>
:(9)<math>\int x^2e^xdx</math>
*解答
:(1)<math>-\log (\cos x)+C</math>
:(2)<math>\tan x+C</math>
:(3)<math>x\log x-x+C</math>
:(4)<math>\frac{x^2\log x}{2}-\frac{x^2}{4}+C</math>
:(5)<math>\frac{x^3\log x}{3}-\frac{x^3}{9}+C</math>
:(6)<math>\frac{x^4\log x}{4}-\frac{x^4}{16}+C</math>
:(7)<math>\sin x-x\cos x+C</math>
:(8)<math>2x\sin x+(2-x^2)\cos x+C</math>
:(9)<math>(x^2-2x+2)e^x+C</math>
:
'''演習問題2'''
'''第一問(Wallis の積分)'''
:<math>n</math> は非負整数とし、<math>I_n = \int_{0}^{\frac \pi 2}\sin^n x \, dx</math> とする。
:(1) <math>\int_{0}^{\frac{\pi}{2}}\sin^n x \, dx = \int_{0}^{\frac{\pi}{2}}\cos^n x \, dx</math> を示せ。
:(2) <math>I_n = \frac{n-1}{n}I_{n-2}\quad (n \ge 2)</math> を示せ。
:(3) <math>I_n</math> を求めよ。
'''第二問(ベータ関数の特殊値)'''
:<math>m,n</math> は非負整数、<math>\alpha,\beta</math> は <math>\beta > \alpha</math> なる実数とし、<math>I_{m,n} = \int_\alpha^\beta (x-\alpha)^m(\beta - x)^n \, dx</math> とする。
:(1) <math>I_{m,n} = \frac{n}{m+1} I_{m+1,n-1} \quad (n\ge 1) </math> を示せ。
:(2) <math>I_{m,n}</math> を求めよ。
:(3) <math>\int_0^{\frac{\pi}{2}} \sin^{2m+1}\theta \cos^{2n+1}\theta d\theta </math> を求めよ。
==積分の応用==
=== 面積 ===
ある関数f(x)の原始関数を求める演算は
f(x)とx軸にはさまれた領域の面積を求める演算に等しい。
このことを用いて
ある関数によって作られた領域の面積を求めることが出来る。
[[画像:Integral_x%5E2_0-1.png|right|x^2の0から1までの積分]]
例えば、
<math>
\int _0 ^1 x^2 dx = \frac 1 3
</math>
は、放物線<math> y = x^2</math>について
<math>0 < x < 1</math>の範囲でかこまれる面積に等しい。
'''面積(Ⅰ)'''
曲線<math>y=f(x)</math>と2直線<math>x=a, x=b</math>及びx軸で囲まれた領域の面積は、
閉区間<math>[a, b]</math>で常に<math>f(x) \geqq 0</math>のとき<math>S = \int_{a}^{b} f(x) dx</math>
閉区間<math>[a, b]</math>で常に<math>f(x) \leqq 0</math>のとき<math>S = -\int_{a}^{b} f(x) dx </math>
厳密な証明は既に数学Ⅱで扱った。
2曲線で囲まれた領域の面積についても、同様である。
'''面積(Ⅱ)'''
2曲線<math>y=f(x), y=g(x)</math>と2直線<math>x=a, x=b</math>で囲まれた領域の面積は、
閉区間<math>[a, b]</math>で常に<math>f(x) \geqq g(x)</math>のとき<math>S = \int_{a}^{b} \{ f(x) - g(x) \} dx</math>
y軸まわりで考えた場合も同様である。
'''面積(Ⅲ)'''
2曲線<math>x=h(y), x=i(y)</math>と2直線<math>y=c, y=d</math>で囲まれた領域の面積は、
閉区間<math>[c, d]</math>で常に<math>h(y) \geqq i(y)</math>のとき<math>S = \int_{c}^{d} \{ h(y) - i(y) \} dy</math>
媒介変数表示された曲線の場合、xとyの好きな方で面積の式を考えてパラメータに関する式へと置換積分すれば良い。
{{コラム|ガウス=グリーンの定理|
'''ガウス=グリーンの定理'''という以下のような公式が存在する。
:閉曲面Sで囲まれた空間の領域をV、曲面の外向き法線の方向余弦を(l, m, n)、微分可能な関数をf, g, hとするとき、<math>\int_{V} (\frac{\partial f}{\partial x} + \frac{\partial g}{\partial y} + \frac{\partial h}{\partial z}) dV = \int_{S} (fl+gm+hn) dS </math>
この定理を高校レベルの求積で使えるように調整すると、以下のようになる。
:曲線<math>\begin{cases} x = f(t) \\ y = g(t) \end{cases}</math>について、<math>[a, b]</math>の範囲でtの増加とともに点<math>P(f(t), g(t))</math>がxy平面上を原点中心に反時計回りに動くときに線分<math>OP</math>が通過する領域の面積は、<math>\int_{a}^{b} \frac{1}{2} \{ x g'(t) - y f'(t) \} dt</math>
この定理を用いると、通常の積分で面積を求めるよりも遙かに計算量が少なくて済む。
もちろん記述では使えないが、答えのみ書けば良い場合や検算用のツールとしては非常に役立つ。
}}
; '''発展:極座標系における面積'''
[[高等学校数学C/平面上の曲線#極座標|極座標系]]においても、直交座標系と同様に微積分を考えることができる。ここでは、その一例として極方程式で表された曲線における面積について扱う。
'''面積(Ⅳ)'''
曲線<math>r=r(\theta)</math>と2直線<math>\theta = \alpha, \theta = \beta</math>で囲まれた部分の面積は、
<math>S = \int_{\alpha}^{\beta} \frac{1}{2} \{ r(\theta) \}^2 d\theta</math>
*証明
基本的には直交座標の場合と同様である。
:曲線<math>r=r(\theta)</math>と2直線<math>\theta = \alpha, \theta = \tau</math>で囲まれた部分の面積を<math>S(\tau)</math>とおく。
:<math>\Delta \tau > 0</math>として<math>\tau + \Delta \tau</math>の場合を考える。
:閉区間<math>[\tau, \tau + \Delta \tau]</math>における<math>r(\theta)</math>の最小値を<math>m</math>、最大値を<math>M</math>とおくと、微小な扇形の面積を考えることにより<math>\frac{1}{2}m^2\Delta \tau \leqq S(\tau + \Delta \tau) - S(\tau) \leqq \frac{1}{2} M^2 \Delta \tau</math>が得られる。
:上の不等式の各辺を<math>\Delta \tau</math>で割ると、<math>\frac{1}{2}m^2 \leqq \frac{S(\tau + \Delta \tau) - S(\tau)}{\Delta \tau} \leqq \frac{1}{2}M^2</math>
:<math>\Delta \tau \to 0</math>の極限を考えると、
::<math>r(\tau)</math>は連続関数なので<math>\frac{1}{2} m^2 \to \frac{1}{2} \{ r(\tau) \}^2, \frac{1}{2} M^2 \to \frac{1}{2} \{ r(\tau) \}^2</math>
::微分の定義より<math>\frac{S(\tau + \Delta \tau) - S(\tau)}{\Delta \tau} \to S'(\tau)</math>
:よってはさみうちの原理より<math>S'(\tau) = \frac{1}{2} \{ r(\tau) \}^2</math>
:これにて示された。
この公式は、'''<math>\theta</math>が偏角である場合のみ用いることができる'''。もし<math>\theta</math>が偏角ではない場合、<math>\theta</math>と偏角<math>\phi</math>の関係を求めて置換積分する必要がある。
; '''楕円の面積'''
'''楕円の面積'''
楕円<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}=1</math>の面積は、
<math>S=\pi ab</math>
*導出
楕円<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}=1</math>を<math>y</math>について解くと
:<math>y=\pm\frac{b}{a}\sqrt{a^2-x^2}</math>
となる。そのうち<math>y=\frac{b}{a}\sqrt{a^2-x^2}</math>は半楕円(楕円の上半分)を示している。その半楕円の面積を2倍したものが楕円の面積''S''となるので
:<math>S=2\int _{-a} ^a \frac{b}{a}\sqrt{a^2-x^2} = \frac{2b}{a}\int _{-a} ^a \sqrt{a^2-x^2} = \frac{2b}{a} \times \frac{\pi a^2}{2} = \pi ab</math>
となる。
=== 体積 ===
ある立体<math>V_0</math>の<math>x = t</math>における断面積が有限な値で、その値が <math>t</math>の関数<math>S(t)</math>となるとき、この立体を平面<math>x = a</math>,<math>x = b</math>(ただし、<math>a < b</math>)で切り取った領域の体積は、底面積<math>S(t)</math>に極めて小さい高さ<math>dt</math><ref>なお、この時、<math>dt</math>が<math>S(t)</math>に対して積分区間で常に鉛直方向の関係にあることが保証されていなければならない。</ref>の積<math>S(t) \, dt</math>の区間<math>[a,b]</math>における累積であるので、以下の式で表すことができる。
:<math> V = \int_a^{b} S(t) \, dt</math>
(例1)
:<math>O(0,0,0), A(1,0,0), B(1,1,0), C(1,0,2)</math>である三角錐を考える。
:この三角錐を平面<math>x=t (0\leqq t \leqq 1)</math>で切断すると、断面の三角形の各座標は<math>A_t(t,0,0), B_t(t,t,0), C_t(t,0,2t)</math>となる。この時、<math>\triangle{A_t B_t C_t}</math>の面積<math>S(t)=t^2</math>となる。
:これを、区間<math>[0,1]</math>で積分すると、
:<math> V = \int_0^{1} S(t) \, dt = \int_0^{1} t^2 \, dt = \left[ \frac{t^3}{3}\right]_{0}^{1} = \frac{1}{3}</math>となる<ref>三角錐<math>O-ABC</math>は、<math>\triangle{ABC}</math>を底面(<math>S=1</math>)とし、<math>OA</math>を高さ(<math>1</math>)とする三角錐なので、体積は、<math>\frac{1}{3}</math>となり、正しい。</ref>。
(例2)
:設問
:#<math>O(0,0,0), A(1,0,0), B(0,1,0), C(1,1,0), D(0,0,1), E(1,0,1), F(0,1,1), G(1,1,1)</math>である立方体を想定。
:#平面<math>x=t (0\leqq t \leqq 1)</math>で切断し、<math>\square{O_t A_t B_t C_t}</math>を得る。
:#線分<math>O_t A_t , A_t B_t , B_t C_t , C_t O_t </math>に、各々点<math>O_t, A_t, B_t, C_t</math>から、長さ<math>t</math>である点<math>H_t, I_t, J_t, K_t</math>をとり、<math>\square{H_t I_t J_t K_t}</math>を<math>S_t</math>とする。
:#<math>t</math>を区間<math>[0,1]</math>で変化させた時、<math>S_t</math>が通過する部分の体積<math>V</math>を求めよ。なお、<math>S_t</math>が正方形である証明は省略してよい。
:解答
:#<math>S_t</math>の1辺の長さを<math>l</math>とおくと、<math>l^2 = t^2 + (1-t)^2 = 2t^2 - 2t + 1</math>
:#<math>S_t</math>の面積<math>S(t)</math>は<math>l^2</math>であるから、<math>S(t) = 2t^2 - 2t + 1</math>
:#これを、区間<math>[0,1]</math>で積分すると、
:#<math> V = \int_0^{1} S(t) \, dt = \int_0^{1} (2t^2 - 2t + 1) \, dt = \left[ \frac{2t^3}{3} - t^2 +t \right]_{0}^{1} = \frac{2}{3}</math>となる。
==== 回転体の体積 ====
<math>y= f(x) (a \le x \le b )</math>
で与えられる曲線をx軸の回りに回転させて作られる
立体の体積Vは、
<math>
V = \int _a ^b \pi \{ f(x) \}^2 dx
</math>
で与えられる。
導出
立体をx軸に垂直であり、x=cを満たす面とx=c+hを満たす面で切ると(hは小さな
定数)、その切断面で挟まれた立体は半径 f(c)の円と半径 f(c+h)の円
ではさまれた立体となる。
しかし、hが極めて小さいとき、この図形は半径f(c),高さhの円柱で
近似できる。
よってこの2つの面に関して、得られた図形の体積は
<math>
h \times \pi (f(c) )^2
</math>
となる。
これを<math>a<c<b</math>満たす全てのcについて足し合わせると、
<math>
S = \int _a ^b \pi ( f(x))^2 dx
</math>
が得られる。
同様に、<math>x = g(y) (c \le x \le d )</math>で与えられる曲線をy軸の回りに回転させて作られる立体の体積Vは、
:<math>V = \int _c ^d \pi \{ g(y) \}^2 dy</math>
で与えられる。
例えば、
<math>
y= x^2 ~(0<x<1)
</math>
をx軸の回りに回転させて得られる図形の体積は、
:図形の絵?
<math>
S = \int_0^1 \pi (x^2)^2 dx
</math>
<math>
=\pi \int_0^1 x^4 dx
</math>
<math>
=\frac {\pi} 5
</math>
となる。
;球の体積
球の体積<math>V=\frac{4}{3}\pi r^3</math>の導出
半径''r''の球は半円<math>y=\sqrt{r^2-x^2}</math>を''x''軸の周りに回転させてつくることができる。
:<math>V=\pi \int_{-r}^r \sqrt{r^2-x^2}^2 dx=\pi \int_{-r}^r (r^2-x^2) dx= \frac{4}{3}\pi r^3</math>
また体積を''r''で微分すると球の表面積<math>S=4\pi r^2</math>が得られる。
; 補:バームクーヘン積分
上記の回転体の公式の導出では「円盤の面積を積分」しているが、「円筒の側面積」を積分しても同様の結果が得られる。この考え方を'''バームクーヘン積分(円筒分割積分)'''と呼ぶ。
バームクーヘン積分による回転体の体積の公式
曲線<math>y=f(x)</math>とx軸、直線<math>x=a, x=b</math>に囲まれた部分をx軸周りに一回転した立体の体積は、
<math>V = 2\pi \int_{a}^{b} x f(x) dx</math>
*導出
:閉区間<math>[x, x + \Delta x](\Delta x > 0)</math>においてx軸と曲線<math>y=f(x)</math>で挟まれた領域をy軸周りに一回転してできる立体の体積を<math>\Delta V</math>とし、同区間におけるf(x)の最小値をm、最大値をMとおく。
:このとき、<math>\pi \{(x + \Delta x)^2 - x^2 \}m \leqq \Delta V \leqq \pi \{(x + \Delta x)^2 - x^2 \}M</math>
:変形すると<math>\pi(2x + \Delta x)m \leqq \frac{\Delta V}{\Delta x} \leqq \pi (2x + \Delta x)M</math>
:<math>\lim_{\Delta x \to + 0} m = \lim_{\Delta x \to + 0} M = f(x)</math>なのではさみうちの原理より<math>\lim_{\Delta x \to + 0} \frac{\Delta V}{\Delta x} = 2 \pi x f(x)</math>
:<math>\therefore \frac{dV}{dx} = 2 \pi x f(x)</math>
:<math>\Delta x < 0</math>でも同様。
:この微分方程式を解く(詳細は[[高等学校理数数学#微分方程式|こちら]])と、
::<math>dV = 2 \pi x f(x) dx</math>
::<math>\int dV = \int 2 \pi x f(x) dx</math>
::<math>V = 2 \pi \int x f(x) dx + C</math>(Cは積分定数)
:閉区間<math>[a, b]</math>で定積分を考えると、<math>V = 2 \pi \int_{a}^{b} x f(x) dx</math>となる。
記述問題で用いる場合、念のため上のように証明しておくと良い。
; 補:パップス・ギュルダンの定理
図形Aを、図形Aと交わらない直線の周りに一回転してできる立体の体積は、V=(Aの重心が描く円の円周長)×(Aの面積)で求まる。
この定理は大学入試においては非常に有名な裏技であり知っておいて損はないが、記述で用いると完全にアウトである。この定理を用いるのは、選択肢形式の問題かどうしても記述の白紙解答を避けたい場合のみに限ろう。(もっとも、重心がわかる図形で出題されるのはごく稀だが。)
{{コラム|一般の軸を中心とした回転体の体積の求め方|
一般に空間中の直線Lの周りの回転体('''斜軸回転体''')の体積は、回転軸Lに垂直な平面で回転体を切った断面積を考えて求めることができる。
ここでは、回転前の図形が座標平面上に存在する場合を扱う。
; '''例題'''
xy平面において<math>L:y=x, C:y=x^2</math>で囲まれた部分を, 直線Lの周りに一回転してできる立体の体積を求めよ。
解答)
:曲線C上の点<math>P(x, x^2)</math>から直線Lに下ろした垂線の足を<math>H(t, t)</math>とし、直線L上に点<math>Q(x, x)</math>をとる。
:与えられた条件より<math>0 \leqq x \leqq 1</math>である。
:このとき<math>\overline{PH} = \frac{|x-x^2|}{\sqrt{2}} = \frac{x-x^2}{\sqrt{2}} (\because 0 \leqq x \leqq 1 \implies x \geqq x^2)</math>より、
:<math>t = \overline{OH} = \overline{OQ} - \overline{HQ} = \overline{OQ} - \overline{PH} = \sqrt{2}x - \frac{x-x^2}{\sqrt{2}} = \frac{x+x^2}{\sqrt{2}}</math>
:<math>\therefore dt = \frac{1+2x}{\sqrt{2}} dx</math>
:tの積分範囲は0→√2なので、xの積分範囲は0→1である。
:故に、<math>V = \pi \int_{0}^{\sqrt{2}} \overline{PH}^2 dt = \pi \int_{0}^{1} (\frac{x-x^2}{\sqrt{2}})^2 \cdot \frac{1+2x}{\sqrt{2}} dx</math>
:<math>= \frac{\pi}{2 \sqrt{2}} \int_{0}^{1} (2x^5-3x^4+x^2) dx = \frac{\sqrt{2} \pi}{4} [ \frac{1}{3} x^6 - \frac{3}{5} x^5 + \frac{1}{3} x^3 ]_{0}^{1} = \frac{\sqrt{2} \pi}{60}</math>
この解答を簡潔に纏めると、直線Lをt軸と見做してt軸についての回転体の式を立て、それをx軸についての回転体の式へと置換積分している。
斜軸回転体の体積を求める方法は他にもあるので、簡潔に纏める。
①傘型分割積分
上の例題で考えると、長さ<math>\overline{PQ}</math>、微小幅<math>\Delta x</math>の部分をLの周りに一回転すると、傘型状の図形(円錐の側面)になる。
その面積(正確には微小体積)を積分すると回転体の体積が出てくる。この考え方を'''傘型分割積分'''という。不足なく論理展開を記述できれば、入試でこの考え方を用いても減点される可能性は低いだろう。
この過程を一般化すると、以下の公式を導くことができる。
:曲線<math>y=f(x)</math>と直線<math>mx+n, x=a, x=b</math>で囲まれた部分を直線<math>y=mx+n</math>の周りで一回転した体積は、
:<math>V = \pi \cos \theta \int_{a}^{b} \{ f(x) - (mx+n) \}^2 dx</math>
:ただし、<math>\tan \theta = m</math>(回転軸がx軸となす角がθである)
この公式は完全に裏技なので、記述問題では(証明なしに)使用しない方が無難である。
②回転移動の利用
図形全体を回転移動することにより、回転軸をx軸(もしくはy軸)に重ねることで、強引に回転体の公式に代入する方法。
回転移動には[[高等学校数学C/複素数平面#回転移動|複素数平面の知識]]、[[高等学校数学C/数学的な表現の工夫#一次変換|行列の知識]]のどちらを用いても良い。
この方法では、回転後の図形の方程式が媒介変数表示で出現する場合がある。その場合、回転体の公式を媒介変数についての積分へと置換積分すれば良い。
}}
=== 曲線の長さと運動の道のり ===
==== 曲線の長さ ====
曲線<math>\begin{cases} x=f(t) \\ y=g(t) \end{cases}</math>の長さを考える。
:<math>f(t), g(t)</math>とも2階微分可能(第一次導関数が連続)とする。
:<math>a \leqq t \leqq b</math>として閉区間<math>[a, t]</math>における曲線の長さを<math>s(t)</math>とおく。
:<math>t</math>の増分<math>\Delta t</math>が十分小さいとき、<math>\Delta s \fallingdotseq \sqrt{(\Delta x)^2 + (\Delta y)^2}</math>より<math>\frac{\Delta s}{\Delta t} = \sqrt{(\frac{\Delta x}{\Delta t})^2 + (\frac{\Delta y}{\Delta t})^2}</math>
:<math>\Delta t \to 0</math>のとき、<math>\frac{ds}{dt} = \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}</math>
:この微分方程式を解くと、
::<math>ds = \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt</math>
::<math>\int ds = \int \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt</math>
::<math>s = \int \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt + C</math>(Cは積分定数)
:ここで<math>s(t)</math>の定義より<math>s(b) - s(a) = \int_{a}^{b} \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt</math>
よって、以下のようになる。
曲線の長さ(Ⅰ)
曲線<math>\begin{cases} x=f(t) \\ y=g(t) \end{cases}</math>の閉区間<math>[a, b]</math>における長さLは、
<math>L = \int_{a}^{b} \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt</math>
曲線の式が<math>y=f(x)</math>で与えられている場合、<math>\begin{cases} x=t \\ y=f(t) \end{cases}</math>と考えて上の公式に代入すると、以下のようになる。
曲線の長さ(Ⅱ)
曲線<math>y=f(x)</math>の閉区間<math>[a, b]</math>における長さLは、
<math>L = \int_{a}^{b} \sqrt{1 + (\frac{dy}{dx})^2}dt</math>
==== 速度と道のり ====
[[高等学校数学III/微分法#速度と加速度|微分法で学んだ]]ように、数直線上を運動する点Pの時刻tにおける位置,速度がそれぞれ<math>x(t), v(t)</math>で与えられるとき、<math>v(t) = \frac{d}{dt} x(t)</math>という関係式が成り立った。微分と積分は逆演算の関係にあるので、<math>x(t) = \int v(t) dt + C</math>(Cは積分定数)という関係も成り立つ。このとき、積分定数Cは初期位置<math>x_0</math>を表す。
点Pが<math>t=a</math>から<math>t=b</math>まで運動するとき、位置の変化量は<math>x(b) - x(a) = \int_{a}^{b} v(t) dt</math>で与えられる。すなわち<math>x(b) = x(a) + \int_{a}^{b} v(t) dt</math>であり、<math>x(a)</math>が初期位置<math>x_0</math>を表すことが確かめられた。
また、上の場合において道のりは<math>\int_{a}^{b} |v(t)| dt</math>と計算できる。位置の変化量と道のりが一致するのは、恒等的に<math>x(t) \geqq 0</math>が成り立つ場合のみである。
平面上の運動も同様である。
なお、位置は加速度を二階積分すれば求まる。よって、時刻tにおける加速度が<math>a(t) = a</math>であるときの位置は、<math>x(t) = \int \! \int a(t) dt \; dt = \int (at + v_0) dt = \frac{1}{2}t^2 + v_0 t + x_0</math>である。([[高等学校物理基礎/力学#等加速度直線運動|等加速度直線運動]]の式)
{{コラム|ベクトル関数|変数tの値を決めるとベクトルA(t)の値が一意に定まるとき、A(t)をtの'''[[物理数学I ベクトル解析#ベクトル関数の定義|ベクトル関数]]'''という。基本ベクトルを用いると、ベクトル関数は基本ベクトルのスカラー倍の足し算に分解することができる。このとき、基本ベクトルにかかる係数をベクトル関数の'''成分'''という。ベクトル関数の定義より、成分はtの関数になる。
つまり、'''ベクトル関数に関する微積分はその成分をそれぞれ微分/積分すれば良い'''ということがわかる。
例えば、速度を表すベクトル関数<math>\vec{v}(t) = \begin{pmatrix} 2t \\ 3t^2-1 \end{pmatrix}</math>があったとして、初期位置<math>\begin{pmatrix} x_0 \\ y_0 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix}</math>とすると時刻tにおける位置は<math>\vec{x}(t) = \int \vec{v}(t) dt = \begin{pmatrix} \int (2t) dt \\ \int (3t^2-1) dt \end{pmatrix} = \begin{pmatrix} t^2 \\ t^3-t \end{pmatrix}</math>、時刻tにおける加速度は<math>\vec{a}(t)
= \frac{d}{dt} \vec{v}(t) = \begin{pmatrix} \frac{d}{dt}(2t) \\ \frac{d}{dt}(3t^2-1) \end{pmatrix} = \begin{pmatrix} 2 \\ 6t \end{pmatrix}</math>というベクトル関数になる。また、<math>t=0</math>から<math>t=2</math>まで運動したときの位置の変化量ベクトルは<math>\begin{pmatrix} \Delta x \\ \Delta y \end{pmatrix} = \int_{0}^{2} \vec{v}(t) dt = \begin{pmatrix} \int_{0}^{2} (2t) dt \\ \int_
{0}^{2} (3t^2-1) dt \end{pmatrix} = \begin{pmatrix} [t^2]_{0}^{2} \\ [t^3-t]_{0}^{2} \end{pmatrix} = \begin{pmatrix} 4 \\ 6 \end{pmatrix}</math>と求まる 。
すなわち、速度・加速度・位置・道のり等に関する問題はベクトル関数の微積分を計算する問題であると言える。
}}
== 区分求積法 ==
これまでに学んだように、積分は微分の逆演算であると同時に、座標平面上での面積計算でもある。この項では、座標平面上の面積計算の方法の一つである区分求積法、および積分法との関連について学ぶ。
[[File:Riemann Integration 1.png|thumb|300px|面積計算]]
右図のようなある曲線<math>y=f(x)</math>がある。単純のため、ここではつねに<math>f(x)>0</math>であるものとして考える。この曲線と、''x''軸、および直線<math>x = a, x = b (a < b)</math>によって囲まれる領域の面積''S''を求める。この面積は[[#面積]]の項で学んだように、
: <math>S = \int_a^b f(x)dx</math>
と積分法を用いて計算することができた。では、これをもう少し原始的な方法で近似的に求めることを考えてみよう。
曲線を含む図形の面積を求めることは簡単ではないが、例えば三角形や長方形、台形などの直線で囲まれた図形の面積を求めることは難しくない。そこで、下図のようにy=f(x)を棒グラフで近似し、長方形の面積の和を計算することで、求めたい面積''S''に近い値を求めることができる。左下のように棒グラフの幅が大きいと誤差も大きいが、棒グラフの幅を狭くすればするほど、すなわち分割数を多くするほど、徐々に求めたい面積の値に近づけることができる。そこで、この区間[''a'',''b'']を''n''等分し、その時の長方形の面積の総和を求め、その後で<math>n \to \infty</math>の極限を考えることにする。このようにして、区間を細かく等分割し、長方形の面積の総和を求めることにより図形の面積を求める方法を、'''区分求積法'''と呼ぶ。
:[[File:Riemann Integration 4.png|350px|棒グラフによる近似]][[File:Riemann Integration 5.png|350px|さらに細かな棒グラフによる近似]]
[[File:Integral numericky obd.svg|thumb|左側で近似]][[File:Somme-superiori.png|thumb|右側で近似]]
<math>y=f(x)</math>を棒グラフで近似するとき、右図のように、長方形の左上の頂点を曲線上に取る方法と、右上の頂点を曲線上に取る方法がある。どちらの方法でも、分割数を大きくすればいずれ求めたい面積に近づくが、まずは左上の頂点を曲線上に取る方法で考えることにする。
ここでは面積を求めたい区間を、単純のため[0, 1]とする。区間[0, 1]を''n''等分するとき、それぞれの長方形の左端のx座標は、
:<math>0, \frac{1}{n}, \frac{2}{n}, \cdots, \frac{n-1}{n}</math>
となる。ここで、一般に第''k''番目の長方形について考えることにする。ただし、いちばん左側の長方形を第0番目とし、いちばん右側の長方形を第''n''-1番目とする。第''k''番目の長方形の左端のx座標は<math>\frac{k}{n}</math>であるから、この長方形の高さは<math>f\left(\frac{k}{n}\right)</math>となり、また長方形の幅は<math>\frac{1}{n}</math>である。そのため、この長方形の面積<math>s_k</math>は、
:<math>s_k = \frac{1}{n}f\left(\frac{k}{n}\right)</math>
となる。したがって、これらの長方形の面積の総和<math>S_n</math>は、
:<math>S_n = \sum_{k = 0}^{n-1} s_k = \frac{1}{n}\sum_{k = 0}^{n-1} f\left(\frac{k}{n}\right)</math>
この<math>S_n</math>は、区間[0, 1]を''n''等分した時の長方形の面積の総和であるが、''n''を大きくすればするほど、次第にもとの面積に近づいていく。したがって、<math>n\to\infty</math>の極限を考え、
:<math>S = \lim_{n\to\infty} S_n = \lim_{n\to\infty} \frac{1}{n}\sum_{k=0}^{n-1} f\left(\frac{k}{n}\right)</math>
となる。このようにして、求めたい面積を計算することができる。さらに、ここでこの区間の面積が積分法により計算できたことから、
:<math>\lim_{n\to\infty} \frac{1}{n}\sum_{k=0}^{n-1} f\left(\frac{k}{n}\right) = \int_0^1f(x)dx</math>
が成り立つ。また、長方形の右上の頂点を曲線上に取る場合は、同様にして
:<math>S = \lim_{n\to\infty} \frac{1}{n}\sum_{k=1}^{n} f\left(\frac{k}{n}\right) = \int_0^1f(x)dx</math>
となる。
区分求積法を計算するとき、'''シグマの範囲の有限個のズレは無視して良い'''。nを無限大に飛ばした極限を考えるとき、有限個あるズレの値は全て0に収束するからである。<br>
つまり、l, mを自然数として<math>\lim_{n \to \infty} \frac{1}{n} \sum_{k=l}^{n-m} f\left(\frac{k}{n}\right) = \int_0^1f(x)dx</math>である。
区分求積法は、より一般には次の式で表される。
:<math>\int_{a}^{b} f(x) dx = \lim_{n \to \infty} \sum_{k=l}^{n-m} f(x_k) \Delta x</math>
:ただし、<math>\Delta x = \frac{b-a}{n}, x_k = a + k\Delta x</math>
証明は先ほどと同様である。<br>
大学においては、積分の定義を微分の逆演算ではなく、この式の右辺のような和('''リーマン和'''という)の極限とする場合がある。数学Ⅱで扱った微分積分学の基本定理は、リーマン和(面積計算)と原始関数(微分の逆演算)という二つの概念を結びつけている定理であると言える。
なお、<math>\lim_{n \to \infty} \sum_{k=an+l}^{bn-m} f\left(\frac{k}{n}\right) = \int_{a}^{b} f(x) dx</math>が成り立つ。
== 演習問題 ==
* [[高等学校数学III 積分法/演習問題|不定積分44題]]
* [[/演習問題]]
== 脚注 ==
<references/>
{{DEFAULTSORT:こうとうかつこうすうかくIII せきふんほう}}
[[Category:高等学校数学III|せきふんほう]]
[[カテゴリ:積分法]]
9606w6kfb9pwj9gw1yq27ah324q8qlv
262863
262842
2024-11-01T00:28:25Z
202.32.153.140
/* 速度と道のり */
262863
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校数学|高等学校数学III|pagename=積分法|frame=1|small=1}}
ここでは、数学IIの[[高等学校数学II/微分・積分の考え|微分・積分の考え]]で学んだ積分の性質についてより詳しく扱う。また、三角関数や指数・対数関数などの関数の積分についても学習する。
[[高等学校数学]]の全ての分野を学んだ後に学習に取り組んでほしい。
== 不定積分 ==
=== 積分の基本的な性質 ===
積分法について
<math>\int \{ f(x) + g(x) \} dx = \int f(x) dx + \int g(x) dx ,</math>
<math>\int af(x) dx = a \int f(x) dx</math>(aは定数)
が成り立つ。
導出
<math>\int \{ f(x) + g(x) \} dx = \int f(x) dx + \int g(x) dx</math>
の両辺を微分すると、
左辺 =右辺 = <math> f + g</math>
が従う。
よって、
<math>\int \{ f(x) + g(x) \} dx = \int f(x) dx + \int g(x) dx</math>
の両辺は一致する。
(実際には2つの関数の導関数が一致するとき、
それらの関数には定数だけのちがいがある。
仮に、F(x)とG(x)が共通の導関数h(x)を持ったとする。
このとき、
<math>(F(x)-G(x) )' = h(x)- h(x) = 0</math>
となるが、0の原始関数は定数Cであることが分かる。
よって、両辺を積分すると、
<math>F(x)-G(x) = C</math>
となり、F(x)とG(x)には定数だけの差しかないことが確かめられた。
よって、
<math>\int \{ f(x) + g(x) \} dx = \int f(x) dx + \int g(x) dx</math>
は定数だけのちがいを含んで成り立つ式である。
より一般に、不定積分が絡む等式は定数分の差を含めて成り立つというのが通例である。)
<math>\int af(x) dx = a \int f(x) dx</math>
についても両辺を微分すると、
左辺=右辺= a f(x)
が従う。
よって、
<math>\int af dx = a\int f dx</math>
が成り立つことが分る。
関数 <math>f(x)</math> の原始関数を <math>F(x)</math> とすると
<math>\int_a^b f(x) \, = F(b)-F(a) = -(F(a)-F(b)) = -\int_b^af(x)\, dx</math> である。
<math>\int_{a}^{c} f(x) \, dx + \int_{c}^{b} f(x) \, dx = (F(c) - F(a)) + (F(b) - F(c)) = F(b) - F(a) = \int_{a}^{b} f(x) \, dx</math>
=== 置換積分法 ===
関数の原始関数を求める手段として、
積分変数を別の変数で置き換えて積分を行なう手段が知られている。
これを置換積分と呼ぶ。
<math>\int f(g(x)) dg(x) = \int f(g(x)) g'(x) dx</math>
導出
<math>\int f(g(x)) dg(x) =F(g(x))</math>を<math>x</math>について微分すると、
<math>F'(g(x)) = f(g(x))g'(x)</math>
再び<math>x</math>について積分すると、
<math>\int f(g(x)) dg(x) = \int f(g(x)) g'(x) dx</math>
また、特に
*<math>\int f(ax+b) dx = \frac{1}{a} \int f(ax+b) d(ax+b)</math>
*<math>\int \{f(x)\}^n f'(x) dx = \frac{1}{n+1} \{f(x)\}^{n+1} + C (n \ne -1)</math>
*<math>\int \frac{f'(x)}{f(x)} dx = \log | f(x) | + C</math>
例えば、<math>\int (ax+b)^2 dx</math>を考える。
<math>t = ax+b</math>と置く。
この両辺を微分すると
<math>dt = adx</math>
が成り立つことを考慮すると、
{|
|-
|<math>\int t^2 \frac {dt} a</math>
|<math>=\frac{ t^3} {3a} + C</math>
|-
|
|<math>=\frac{ (ax+b)^3} {3a} + C</math>
|}
となることがわかる。
実際この式をxで微分すると
<math>
(ax+b)^2
</math>
と一致することが分る。
置換積分を使わずに計算することも出来る。
{|
|-
|<math>\int (ax+b)^2 dx</math>
|<math>=\int (a^2x^2+2abx +b^2) dx</math>
|-
|
|<math>= \frac {a^2} 3 x^3 +abx^2 +b^2x + C'</math>
|-
|
|<math>= \frac {a^2} 3 x^3 +abx^2 +b^2x + \frac {b^3} {3a} +C</math>
|}
(<math>C'=\frac {b^3} {3a} +C</math>と置き換えた。)
<math>=\frac{ (ax+b)^3} {3a} + C</math>
となり確かに一致する。
=== 部分積分法 ===
関数の積の積分を行なうときある関数の微分だけを取りだして積分すると、うまく積分できる場合がある。関数 <math>g(x)</math> の原始関数を <math>G(x)</math> とすると
<math>\int f(x) g(x) \, dx = f(x) G(x) - \int f'(x) G(x) \, dx</math>
導出
積の微分法より <math>\{f(x)G(x)\}' = f'(x)G(x) + f(x)g(x)</math> である。これを移項して
<math>f(x)g(x) = \{f(x)G(x)\}' - f'(x)G(x)</math>
である。両辺をxで積分して
<math>\int f(x) g(x) \, dx = f(x) G(x) - \int f'(x) G(x) \, dx</math>
が得られる。
例えば、
{|
|-
|<math>\int x (ax+b)^3 dx</math>
|<math>=\int x \left(\frac {(ax+b)^4} {4a} \right)' dx</math>
|-
|
|<math>=x \left(\frac {(ax+b)^4} {4a} \right)- \int (x)' \frac {(ax+b)^4} {4a} dx</math>
|-
|
|<math>=x \left(\frac {(ax+b)^4} {4a} \right)- \int (x)' \frac {(ax+b)^4} {4a} dx</math>
|-
|
|<math>=x \left(\frac {(ax+b)^4} {4a} \right)- \int \frac {(ax+b)^4} {4a} dx</math>
|-
|
|<math>=x \left(\frac {(ax+b)^4} {4a} \right)- \frac {(ax+b)^5} {20a^2} </math>
|}
部分積分を <math>n</math> 回行うと、
<math>\begin{align}
\int f(x) g(x) \, dx &= f(x) g^{(-1)}(x) - \int f'(x) g^{(-1)}(x) \, dx \\
&= f(x) g^{(-1)}(x) -f'(x) g^{(-2)}(x) + \int f''(x) g^{(-2)}(x) \, dx \\
&= f(x) g^{(-1)}(x) - f'(x) g^{(-2)}(x) + f''(x) g^{(-3)}(x) + \cdots + (-1)^n \int f^{(n)}(x) g^{(-n)}(x) \, dx
\end{align}</math>
となる。 ここで、<math>g^{(-1)}(x)</math> は <math>g(x)</math> の不定積分の任意の一つ。<math>g^{(-2)}(x)</math> は <math>g^{(-1)}(x)</math> の不定積分の任意の一つ。... <math>g^{(-n)}(x)</math> は <math>g^{(-n+1)}(x)</math> の不定積分の任意の一つというように定める。このように、積分記号で何回も不定積分を計算するのはやや面倒なので、次のような表を作ってみると計算しやすい。
{|class="wikitable" style="background: #ffffff; text-align: center;"
|+
!符号
!微分
!積分
|-
|<math>+</math>
|<Math>f(x)</math>
|<Math>g(x)</math>
|-
|<math>-</math>
|<Math>f'(x)</math>
|<Math>g^{(-1)}(x)</math>
|-
|<math>+</math>
|<Math>f''(x)</math>
|<Math>g^{(-2)}(x)</math>
|-
|<math>-</math>
|<Math>f^{(3)}(x)</math>
|<Math>g^{(-3)}(x)</math>
|-
|<math>\cdots</math>
|<Math>\cdots</math>
|<Math>\cdots</math>
|-
|<math>(-)^n</math>
|<Math>f^{(n)}(x)</math>
|<Math>g^{(-n)}(x)</math>
|}
この表から、部分積分を <math>n</math> 回行った結果は、
一行目の符号 × 一行目の微分 × 二行目の積分 + 二行目の符号 × 二行目の微分 × 三行目の積分 + ... + <math>\int</math> n行目の符号 × n行目の微分 × n行目の積分 dx
と求まる。n行目の微分 が 0 であった場合は、最後の積分は消えて、不定積分は
一行目の符号 × 一行目の微分 × 二行目の積分 + 二行目の符号 × 二行目の微分 × 三行目の積分 + ... + n-1行目の符号 × n-1行目の微分 × n行目の積分 + C
となる。
この方法は俗に'''瞬間部分積分法'''と呼ばれており、部分積分を複数回繰り返す際の計算を非常に簡略化できるため、受験数学では重宝されるテクニックの一つである。記述で用いる場合、上の表をそのまま記述するよりも、「部分積分を繰り返し用いると」という文言の後に瞬間部分積分で求めた結果を記述するのが無難である。
=== いろいろな関数の積分===
==== 多項式関数の積分 ====
<math>n \ne -1</math>のとき、<math>\left(\frac{1}{n+1} x^{n+1}\right)'=x^n</math>なので、
<math>\int x^n dx = \frac{1}{n+1} x^{n+1} + C</math>
<math>n = -1</math>のとき、<math>(\log |x| )' = \frac{1}{x} = x^{-1}</math>なので、
<math>\int x^{-1} dx = \int \frac {1}{x} dx = \log |x| + C</math>
が成り立つ。
==== 三角関数の積分 ====
*<math>(\sin x )' = \cos x</math>
*<math>(\cos x )' = -\sin x</math>
*<math>(\tan x )' = \frac{1}{\cos^2 x}</math>
が成り立つことを考慮すると、
*<math>\int \cos x dx= \sin x + C</math>
*<math>\int \sin x dx = - \cos x + C</math>
*<math>\int \frac{1}{\cos^2 x } dx = \tan x + C</math>
となることが分る。
<math>\int \tan x dx</math>は、置換積分法を使って
{|
|-
|<math>\int \tan x dx</math>
|<math>=\int \frac{\sin x}{\cos x} dx</math>
|-
|
|<math>=\int \frac{-(\cos x)'}{\cos x} dx</math>
|-
|
|<math>= - \int \frac{(\cos x)'}{\cos x} dx</math>
|-
|
|<math>= - \log | \cos x | + C</math>
|}
:
:なお同様に、<math>\frac{1}{\tan x} = \frac{\cos x}{\sin x}</math> であるので、<math>\int \frac{1}{\tan x} dx = \int \frac{\cos x}{\sin x} dx =\int \frac{(\sin x)'}{\sin x} dx = \log \left|\sin x\right| + C</math>
:
より一般に有理関数 <math>R(x,y)</math> に対して、<math>\int R(\sin\theta,\cos\theta) \,d\theta</math> について考える。 <math>t = \tan \frac{\theta}{2}</math> とおく。 <math>\tan^2\frac{\theta}{2} + 1 = \frac{1}{\cos^2\frac{\theta}{2}}</math> よって <math>\cos^2\frac{\theta}{2} = \frac{1}{1+t^2}</math>である。<math>\frac{dt}{d\theta} = \frac{d}{d\theta}\tan\frac{\theta}{2} = \frac{1}{2\cos^2\frac{\theta}{2}} = \frac{1}{2}(t^2+1)</math> であり、<math>\cos\theta = 2\cos^2\frac{\theta}{2} - 1 = \frac{1-t^2}{1+t^2}</math> かつ <math>\sin\theta = \tan\theta\cos\theta = \frac{2\tan\frac{\theta}{2}}{1-\tan^2\frac{\theta}{2}}\cos\theta =
\frac{2t}{1+t^2}</math>
である。よって
<math>\int R(\sin\theta,\cos\theta) \,d\theta
= \int R\left(\frac{2t}{1+t^2}, \frac{1-t^2}{1+t^2}\right) \, \frac{2dt}{1+t^2}</math>
と有理関数の積分にもち込める。
幾何学的は、この変換は単位円上の点 <math>P(\cos \theta, \sin \theta)</math>と点 <math>A(-1,0)</math> を結ぶ直線の勾配 <math>t</math> で変換したものである。実際円周角の定理より <math>\angle xAP = \frac 1 2 \angle xOP = \frac \theta 2</math>より <math>t = \tan \frac{\theta} 2.</math>
被積分関数の周期が <math>\pi</math> の場合は、被積分関数は <math>\sin 2\theta,\cos 2 \theta</math> の有理関数なので、 <math>t = \tan\theta</math> と置換すると計算が楽だ。被積分関数が <math>\sin^2\theta,\cos^2\theta,\sin\theta\cos\theta</math> の有理関数となるときもこの範疇に属する。<math>t = \tan\theta</math> と置換したとき、<math>\cos^2\theta = \frac{1}{1+\tan^2\theta}=\frac{1}{1+t^2}</math>, <math>\sin^2\theta = \tan^2 \theta \cos^2 \theta = \frac{t^2}{1+t^2}</math> , <math>\sin\theta \cos\theta = \pm\sqrt{\sin^2\theta \cos^2\theta} = \frac{t}{1+t^2}</math> (<math>\sin\theta \cos\theta</math> と <math>\tan\theta = \frac{\sin\theta}{\cos\theta}</math> の正負は一致するため), <math>d \theta = \frac {dt}{1 + t^2}</math> となる。
例 <math>\int\frac{1}{\sin x \cos x}dx</math> は <math>t = \tan x</math> と置換すると、<math>\int \frac {1}{\sin x \cos x}dx = \int \frac {1+t^2}{t} \frac { dt}{1+t^2} = \ln|\tan x| + C. </math> <math>t = \tan \frac{\theta}{2}</math> と置換してしまうと、<math>\int \frac{1}{\sin x \cos x}\,dx = \int \frac {1+t^2}{t(1-t^2)}\,dt = \ln \left|\frac{t}{1-t^2}\right| + C' = \ln|\tan x| + C </math> と計算量が少し増える。
==== 指数・対数関数の積分 ====
指数関数について
<math>(e^x )' = e^x</math>
が成り立つことを用いると、
<math>\int e^x dx = e^x + C</math>
が得られる。
また、 <math>\left(\frac{a^x}{\ln a}\right)' = a^x</math> なので、 <math>\int a^x \, dx=\frac{a^x}{\ln a}</math> である。
また、<math>\log |x|</math>の
原始関数も求めることが出来る。
{|
|<math>\int \log |x| dx </math>
|<math>=\int (x)' \log |x| dx </math>
|-
|
|<math>=x \log |x| -\int x (\log |x|)' dx </math>
|-
|
|<math>=x \log |x| -\int x \frac 1 x dx </math>
|-
|
|<math>=x \log |x| -\int dx </math>
|-
|
|<math>=x \log |x| -x + C</math>
|}
となる。
有理関数 <math>R(x)</math> に対して、積分 <math>\int R(e^x) \, dx</math> は <math>t = e^x</math> すると <math>\frac{dt}{dx} = e^x = t</math> より
<math>\int R(e^x) \, dx = \int R(t) \frac{dt}{t}.</math>
==== 二次無理関数の積分(発展) ====
有理関数 <math>R(x,y)</math> に対して、積分 <math>\int R(x,\sqrt{ax^2 + bx + c}) \, dx</math> について考えよう。平方根の中身は平方完成することによって、<math>\sqrt{p^2-x^2},\sqrt{x^2+p^2},\sqrt{x^2-p^2}</math>のいずれかの形になる。それぞれの場合について、<math>x = p\sin \theta,x = p\tan\theta,x = \frac{p}{\cos \theta}</math> と変数変換すると三角関数の積分に帰着する。
また、<math>y^2 = ax^2 +bx + c</math> は二次曲線で、特に <math>a>0</math> のときは双曲線となる(<math>y^2 -a\left(x+\frac{b}{2a}\right)^2 = \frac{-b^2 + 4ac}{4a}</math>より<ref>右辺が0のとき双曲線とはならないが、このときは簡単に平方根を外すことが出来るので考える必要はない。</ref>)。このとき、<math>y=\pm \sqrt a x + t</math> すなわち <math>t = \mp \sqrt a x + \sqrt{ax^2 + bx + c}</math> と変換するとうまく計算できる(符号はどちらを選択しても良い)。幾何学的には、双曲線の漸近線に平行で切片が <math>t</math> の直線 <math>y=\pm \sqrt a x + t</math> と双曲線のただ一つの交点 <math>(x,y)</math> を変数 <math>t</math> で表したものである。
例 <math>\int \frac{dx}{\sqrt{x^2-1}} </math> は <math>t = x + \sqrt{ x^2-1}</math> と置換すると、<math>\frac 1 t = x - \sqrt{x^2-1}</math> なので、<math>t + \frac 1 t = 2x</math> すなわち <math>2dx = \left(1 - \frac 1 {t^2}\right)dt</math> また、 <math>t - \frac 1 t = 2\sqrt{x^2-1}</math>.なので、<math>\int \frac{dx}{\sqrt{x^2-1}} = \int \frac{1-\frac{1}{t^2}}{t-\frac 1 t}dt = \int \frac{dt}{t} = \ln |x + \sqrt{x^2-1}| + C </math> である。
ところで、この変換は双曲線 <math>y^2 = x^2 - 1</math> と直線 <math>y = -x + t</math> のただ一つの交点による変換であった。その交点を方程式を解いて <math>t</math> で表すと、<math>x = \frac 1 2 \left(t + \frac 1 t\right), \, y =\frac 1 2 \left(t - \frac 1 t\right)</math> を得る。これは双曲線の媒介変数表示の一つである。また、 <math>t \rightarrow e^t</math> とすると、<math>x = \frac{e^t + e^{ -t} }{2} = \cosh t, \, y = \frac{e^t - e^{-t}}{2} = \sinh t.</math> これは <math>x > 0</math> の部分の双曲線の媒介変数表示である。最右辺は双曲線関数と呼ばれ、三角関数と似た性質を持つ。関数名の <math>\mathrm{h}</math> はhyperbolaに由来する。例えば、双曲線の方程式より得られる <math>\cosh^2 t - \sinh^2 t = 1</math> は <math>\sin^2\theta + \cos^2\theta = 1</math> とよく似ている。例示の不定積分は <math>x = \cosh t</math> と置換しても解くことが出来るが、ほとんど同じことなので省略する。
== 定積分 ==
定積分について、不定積分と同じように以下が成り立つ。
'''定積分の置換積分法'''
<math>\alpha < \beta</math>のとき、開区間<math>[\alpha, \beta]</math>で微分可能な関数<math>x=g(t)</math>に対し、<math>a=g(\alpha), b=g(\beta)</math>ならば<math>\int_{a}^{b} f(x) \, dx = \int_{\alpha}^{\beta} f(g(t)) g'(t) \, dt </math>
'''定積分の部分積分法'''
<math>\int_{a}^{b} f(x) g'(x) \, dx = \left[ f(x) g(x) \right]^{a}_{b} - \int_{a}^{b} f'(x) g(x) \, dx </math>
*問題
**以下の定積分を求めよ(Hint:5, 6は漸化式を利用する)
**#<math>\int_{0}^{1} |e^x - \frac{3}{2}| \, dx</math>
**#<math>\int_{1}^{0} \frac{x-2}{(3-x)^2} \, dx</math>
**#<math>\int_{-5}^{5} x \sqrt{x^2-9} \, dx</math>
**#<math>\int_{3}^{7} x \log (x^2 - 2) \, dx </math>
**#<math>\int_{0}^{\frac{\pi}{2}} \sin^n x \, dx</math>
**#<math>\int_{0}^{\frac{\pi}{4}} \tan^n x \, dx</math>
=== 特殊な定積分 ===
==== 円 ====
<math>a < b</math> とする。積分 <math>\int_a ^b \sqrt{(x-a)(b-x)}\, dx</math> は <math>y = \sqrt{(x-a)(b-x)}</math> とすると、<math>\left(x-\frac{a+b}{2} \right) + y^2 = \left(\frac{a-b}{2} \right)^2</math> より、被積分関数 <math>y</math> は中心 <math>\frac{a+b}{2}</math> で半径 <math>\frac{b-a}{2}</math>の円周の上半分であり、積分区間もその両端なので、積分の値は半円の面積に等しく、<math>\int_a ^b \sqrt{(x-a)(b-x)} \, dx = \frac{\pi}{2}\left(\frac{b-a}{2}\right)^2</math> である。
==== King Property ====
一般に、関数 <math>f(a-x)</math> のグラフは関数 <math>f(x)</math> のグラフを直線 <math>x = \frac a 2</math> で対称移動したものである。
従って、連続関数 <math>f(x)</math> を区間 <math>\left[\frac{a+b}{2},b\right]</math> で積分した値 <math>\int_{\frac{a+b}{2}}^{b} f(x) \, dx</math> と、連続関数 <math>f(a+b-x)</math> を区間 <math>\left[a,\frac{a+b}{2}\right]</math> で積分した値 <math>\int_{a}^{\frac{a+b}{2}} f(a+b-x)\, dx</math> は等しい:
:<math>\int_{\frac{a+b}{2}}^{b} f(x) \, dx = \int_{a}^{\frac{a+b}{2}} f(a+b-x) \, dx.</math>
この等式は単に、 <math>x \to a+b-x</math> の変数変換によっても導出できる。
この等式より、 <math>\int_a^b f(x) \, dx = \int_{a}^{\frac{a+b}{2}} f(x)\, dx +\int_{\frac{a+b}{2}}^{b} f(x) \, dx = \int_{a}^{\frac{a+b}{2}} [f(x) + f(a+b-x)] \, dx </math> が導かれる。
この公式は、<math>f(x) + f(a+b-x)</math> が簡単な形になる定積分で役に立つ。
例えば、<math>\begin{align}\int_{0}^{\frac{\pi}{2}} \frac{\sin x}{\sin x + \cos x} \, dx &= \int_{0}^{\frac{\pi}{4}} \left[\frac{\sin x}{\sin x + \cos x} +\frac{\sin (\frac{\pi}{2}-x)}{\sin (\frac{\pi}{2}-x) + \cos (\frac{\pi}{2}-x)}\right]\, dx \\
&= \int_{0}^{\frac{\pi}{4}} \left[\frac{\sin x}{\sin x + \cos x} +\frac{\cos x}{\cos x + \sin x}\right]\, dx \\ &= \int_{0}^{\frac{\pi}{4}}dx = \frac{\pi}{4}.\end{align} </math>
King Property の応用例は <math>\int_{-1}^{1} \frac{x^2}{1+e^x} \, dx = \frac 1 3</math> , <math>\int_0^{\frac \pi 4} \ln(1+\tan x)\, dx = \frac \pi 8 \log 2</math> , <math>\int_0^{\frac \pi 2} \ln \sin x \, dx = -\frac{\pi}{2}\log 2</math> などがある。計算してみよ。
=== 定積分と不等式 ===
一般に、連続関数について次のことが成り立つ。
:開区間<math>[a, b]</math>において<math>f(x) \leqq g(x)</math>ならば、<math>\int_{a}^{b} f(x) \, dx \leqq \int_{a}^{b} g(x) \, dx</math>
:等号成立条件は開区間<math>[a, b]</math>において恒等的に<math>f(x) = g(x)</math>であること。
*例題
:調和級数の第n部分和が<math>\log(n+1)</math>より大きいことを証明せよ。
*解答
自然数kに対して<math>k \leqq x \leqq k+1</math>のとき<math>\frac{1}{k} \geqq \frac{1}{x}</math>であり、等号は常には成り立たないので<math>\int_{k}^{k+1} \frac{dx}{k} > \int_{k}^{k+1} \frac{dx}{x}</math>である。故に<math>\sum_{k=1}^{n} \int_{k}^{k+1} \frac{dx}{k} > \sum_{k=1}^{n} \int_{k}^{k+1} \frac{dx}{x}</math>。
このとき、(左辺)<math>= \sum_{k=1}^{n} \frac{1}{k} \int_{k}^{k+1} dx = \sum_{k=1}^n \frac{1}{k}</math>より左辺は調和級数の第n部分和であり、(右辺)<math>= \sum_{k=1}^{n} \int_{k}^{k+1} \frac{dx}{x} = \int_{1}^{n+1} \frac{dx}{x} = \left[ \log(x) \right]_{1}^{n+1} = \log(n+1) - \log(1) = \log(n+1)</math>なので、題意は示された。
'''演習問題1'''
次の不定積分を求めよ。
:(1)<math>\int \tan xdx</math>
:(2)<math>\int \frac{1}{\cos ^2x}dx</math>
:(3)<math>\int \log xdx</math>
:(4)<math>\int x\log xdx</math>
:(5)<math>\int x^2\log xdx</math>
:(6)<math>\int x^3\log xdx</math>
:(7)<math>\int x\sin xdx</math>
:(8)<math>\int x^2\sin xdx</math>
:(9)<math>\int x^2e^xdx</math>
*解答
:(1)<math>-\log (\cos x)+C</math>
:(2)<math>\tan x+C</math>
:(3)<math>x\log x-x+C</math>
:(4)<math>\frac{x^2\log x}{2}-\frac{x^2}{4}+C</math>
:(5)<math>\frac{x^3\log x}{3}-\frac{x^3}{9}+C</math>
:(6)<math>\frac{x^4\log x}{4}-\frac{x^4}{16}+C</math>
:(7)<math>\sin x-x\cos x+C</math>
:(8)<math>2x\sin x+(2-x^2)\cos x+C</math>
:(9)<math>(x^2-2x+2)e^x+C</math>
:
'''演習問題2'''
'''第一問(Wallis の積分)'''
:<math>n</math> は非負整数とし、<math>I_n = \int_{0}^{\frac \pi 2}\sin^n x \, dx</math> とする。
:(1) <math>\int_{0}^{\frac{\pi}{2}}\sin^n x \, dx = \int_{0}^{\frac{\pi}{2}}\cos^n x \, dx</math> を示せ。
:(2) <math>I_n = \frac{n-1}{n}I_{n-2}\quad (n \ge 2)</math> を示せ。
:(3) <math>I_n</math> を求めよ。
'''第二問(ベータ関数の特殊値)'''
:<math>m,n</math> は非負整数、<math>\alpha,\beta</math> は <math>\beta > \alpha</math> なる実数とし、<math>I_{m,n} = \int_\alpha^\beta (x-\alpha)^m(\beta - x)^n \, dx</math> とする。
:(1) <math>I_{m,n} = \frac{n}{m+1} I_{m+1,n-1} \quad (n\ge 1) </math> を示せ。
:(2) <math>I_{m,n}</math> を求めよ。
:(3) <math>\int_0^{\frac{\pi}{2}} \sin^{2m+1}\theta \cos^{2n+1}\theta d\theta </math> を求めよ。
==積分の応用==
=== 面積 ===
ある関数f(x)の原始関数を求める演算は
f(x)とx軸にはさまれた領域の面積を求める演算に等しい。
このことを用いて
ある関数によって作られた領域の面積を求めることが出来る。
[[画像:Integral_x%5E2_0-1.png|right|x^2の0から1までの積分]]
例えば、
<math>
\int _0 ^1 x^2 dx = \frac 1 3
</math>
は、放物線<math> y = x^2</math>について
<math>0 < x < 1</math>の範囲でかこまれる面積に等しい。
'''面積(Ⅰ)'''
曲線<math>y=f(x)</math>と2直線<math>x=a, x=b</math>及びx軸で囲まれた領域の面積は、
閉区間<math>[a, b]</math>で常に<math>f(x) \geqq 0</math>のとき<math>S = \int_{a}^{b} f(x) dx</math>
閉区間<math>[a, b]</math>で常に<math>f(x) \leqq 0</math>のとき<math>S = -\int_{a}^{b} f(x) dx </math>
厳密な証明は既に数学Ⅱで扱った。
2曲線で囲まれた領域の面積についても、同様である。
'''面積(Ⅱ)'''
2曲線<math>y=f(x), y=g(x)</math>と2直線<math>x=a, x=b</math>で囲まれた領域の面積は、
閉区間<math>[a, b]</math>で常に<math>f(x) \geqq g(x)</math>のとき<math>S = \int_{a}^{b} \{ f(x) - g(x) \} dx</math>
y軸まわりで考えた場合も同様である。
'''面積(Ⅲ)'''
2曲線<math>x=h(y), x=i(y)</math>と2直線<math>y=c, y=d</math>で囲まれた領域の面積は、
閉区間<math>[c, d]</math>で常に<math>h(y) \geqq i(y)</math>のとき<math>S = \int_{c}^{d} \{ h(y) - i(y) \} dy</math>
媒介変数表示された曲線の場合、xとyの好きな方で面積の式を考えてパラメータに関する式へと置換積分すれば良い。
{{コラム|ガウス=グリーンの定理|
'''ガウス=グリーンの定理'''という以下のような公式が存在する。
:閉曲面Sで囲まれた空間の領域をV、曲面の外向き法線の方向余弦を(l, m, n)、微分可能な関数をf, g, hとするとき、<math>\int_{V} (\frac{\partial f}{\partial x} + \frac{\partial g}{\partial y} + \frac{\partial h}{\partial z}) dV = \int_{S} (fl+gm+hn) dS </math>
この定理を高校レベルの求積で使えるように調整すると、以下のようになる。
:曲線<math>\begin{cases} x = f(t) \\ y = g(t) \end{cases}</math>について、<math>[a, b]</math>の範囲でtの増加とともに点<math>P(f(t), g(t))</math>がxy平面上を原点中心に反時計回りに動くときに線分<math>OP</math>が通過する領域の面積は、<math>\int_{a}^{b} \frac{1}{2} \{ x g'(t) - y f'(t) \} dt</math>
この定理を用いると、通常の積分で面積を求めるよりも遙かに計算量が少なくて済む。
もちろん記述では使えないが、答えのみ書けば良い場合や検算用のツールとしては非常に役立つ。
}}
; '''発展:極座標系における面積'''
[[高等学校数学C/平面上の曲線#極座標|極座標系]]においても、直交座標系と同様に微積分を考えることができる。ここでは、その一例として極方程式で表された曲線における面積について扱う。
'''面積(Ⅳ)'''
曲線<math>r=r(\theta)</math>と2直線<math>\theta = \alpha, \theta = \beta</math>で囲まれた部分の面積は、
<math>S = \int_{\alpha}^{\beta} \frac{1}{2} \{ r(\theta) \}^2 d\theta</math>
*証明
基本的には直交座標の場合と同様である。
:曲線<math>r=r(\theta)</math>と2直線<math>\theta = \alpha, \theta = \tau</math>で囲まれた部分の面積を<math>S(\tau)</math>とおく。
:<math>\Delta \tau > 0</math>として<math>\tau + \Delta \tau</math>の場合を考える。
:閉区間<math>[\tau, \tau + \Delta \tau]</math>における<math>r(\theta)</math>の最小値を<math>m</math>、最大値を<math>M</math>とおくと、微小な扇形の面積を考えることにより<math>\frac{1}{2}m^2\Delta \tau \leqq S(\tau + \Delta \tau) - S(\tau) \leqq \frac{1}{2} M^2 \Delta \tau</math>が得られる。
:上の不等式の各辺を<math>\Delta \tau</math>で割ると、<math>\frac{1}{2}m^2 \leqq \frac{S(\tau + \Delta \tau) - S(\tau)}{\Delta \tau} \leqq \frac{1}{2}M^2</math>
:<math>\Delta \tau \to 0</math>の極限を考えると、
::<math>r(\tau)</math>は連続関数なので<math>\frac{1}{2} m^2 \to \frac{1}{2} \{ r(\tau) \}^2, \frac{1}{2} M^2 \to \frac{1}{2} \{ r(\tau) \}^2</math>
::微分の定義より<math>\frac{S(\tau + \Delta \tau) - S(\tau)}{\Delta \tau} \to S'(\tau)</math>
:よってはさみうちの原理より<math>S'(\tau) = \frac{1}{2} \{ r(\tau) \}^2</math>
:これにて示された。
この公式は、'''<math>\theta</math>が偏角である場合のみ用いることができる'''。もし<math>\theta</math>が偏角ではない場合、<math>\theta</math>と偏角<math>\phi</math>の関係を求めて置換積分する必要がある。
; '''楕円の面積'''
'''楕円の面積'''
楕円<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}=1</math>の面積は、
<math>S=\pi ab</math>
*導出
楕円<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}=1</math>を<math>y</math>について解くと
:<math>y=\pm\frac{b}{a}\sqrt{a^2-x^2}</math>
となる。そのうち<math>y=\frac{b}{a}\sqrt{a^2-x^2}</math>は半楕円(楕円の上半分)を示している。その半楕円の面積を2倍したものが楕円の面積''S''となるので
:<math>S=2\int _{-a} ^a \frac{b}{a}\sqrt{a^2-x^2} = \frac{2b}{a}\int _{-a} ^a \sqrt{a^2-x^2} = \frac{2b}{a} \times \frac{\pi a^2}{2} = \pi ab</math>
となる。
=== 体積 ===
ある立体<math>V_0</math>の<math>x = t</math>における断面積が有限な値で、その値が <math>t</math>の関数<math>S(t)</math>となるとき、この立体を平面<math>x = a</math>,<math>x = b</math>(ただし、<math>a < b</math>)で切り取った領域の体積は、底面積<math>S(t)</math>に極めて小さい高さ<math>dt</math><ref>なお、この時、<math>dt</math>が<math>S(t)</math>に対して積分区間で常に鉛直方向の関係にあることが保証されていなければならない。</ref>の積<math>S(t) \, dt</math>の区間<math>[a,b]</math>における累積であるので、以下の式で表すことができる。
:<math> V = \int_a^{b} S(t) \, dt</math>
(例1)
:<math>O(0,0,0), A(1,0,0), B(1,1,0), C(1,0,2)</math>である三角錐を考える。
:この三角錐を平面<math>x=t (0\leqq t \leqq 1)</math>で切断すると、断面の三角形の各座標は<math>A_t(t,0,0), B_t(t,t,0), C_t(t,0,2t)</math>となる。この時、<math>\triangle{A_t B_t C_t}</math>の面積<math>S(t)=t^2</math>となる。
:これを、区間<math>[0,1]</math>で積分すると、
:<math> V = \int_0^{1} S(t) \, dt = \int_0^{1} t^2 \, dt = \left[ \frac{t^3}{3}\right]_{0}^{1} = \frac{1}{3}</math>となる<ref>三角錐<math>O-ABC</math>は、<math>\triangle{ABC}</math>を底面(<math>S=1</math>)とし、<math>OA</math>を高さ(<math>1</math>)とする三角錐なので、体積は、<math>\frac{1}{3}</math>となり、正しい。</ref>。
(例2)
:設問
:#<math>O(0,0,0), A(1,0,0), B(0,1,0), C(1,1,0), D(0,0,1), E(1,0,1), F(0,1,1), G(1,1,1)</math>である立方体を想定。
:#平面<math>x=t (0\leqq t \leqq 1)</math>で切断し、<math>\square{O_t A_t B_t C_t}</math>を得る。
:#線分<math>O_t A_t , A_t B_t , B_t C_t , C_t O_t </math>に、各々点<math>O_t, A_t, B_t, C_t</math>から、長さ<math>t</math>である点<math>H_t, I_t, J_t, K_t</math>をとり、<math>\square{H_t I_t J_t K_t}</math>を<math>S_t</math>とする。
:#<math>t</math>を区間<math>[0,1]</math>で変化させた時、<math>S_t</math>が通過する部分の体積<math>V</math>を求めよ。なお、<math>S_t</math>が正方形である証明は省略してよい。
:解答
:#<math>S_t</math>の1辺の長さを<math>l</math>とおくと、<math>l^2 = t^2 + (1-t)^2 = 2t^2 - 2t + 1</math>
:#<math>S_t</math>の面積<math>S(t)</math>は<math>l^2</math>であるから、<math>S(t) = 2t^2 - 2t + 1</math>
:#これを、区間<math>[0,1]</math>で積分すると、
:#<math> V = \int_0^{1} S(t) \, dt = \int_0^{1} (2t^2 - 2t + 1) \, dt = \left[ \frac{2t^3}{3} - t^2 +t \right]_{0}^{1} = \frac{2}{3}</math>となる。
==== 回転体の体積 ====
<math>y= f(x) (a \le x \le b )</math>
で与えられる曲線をx軸の回りに回転させて作られる
立体の体積Vは、
<math>
V = \int _a ^b \pi \{ f(x) \}^2 dx
</math>
で与えられる。
導出
立体をx軸に垂直であり、x=cを満たす面とx=c+hを満たす面で切ると(hは小さな
定数)、その切断面で挟まれた立体は半径 f(c)の円と半径 f(c+h)の円
ではさまれた立体となる。
しかし、hが極めて小さいとき、この図形は半径f(c),高さhの円柱で
近似できる。
よってこの2つの面に関して、得られた図形の体積は
<math>
h \times \pi (f(c) )^2
</math>
となる。
これを<math>a<c<b</math>満たす全てのcについて足し合わせると、
<math>
S = \int _a ^b \pi ( f(x))^2 dx
</math>
が得られる。
同様に、<math>x = g(y) (c \le x \le d )</math>で与えられる曲線をy軸の回りに回転させて作られる立体の体積Vは、
:<math>V = \int _c ^d \pi \{ g(y) \}^2 dy</math>
で与えられる。
例えば、
<math>
y= x^2 ~(0<x<1)
</math>
をx軸の回りに回転させて得られる図形の体積は、
:図形の絵?
<math>
S = \int_0^1 \pi (x^2)^2 dx
</math>
<math>
=\pi \int_0^1 x^4 dx
</math>
<math>
=\frac {\pi} 5
</math>
となる。
;球の体積
球の体積<math>V=\frac{4}{3}\pi r^3</math>の導出
半径''r''の球は半円<math>y=\sqrt{r^2-x^2}</math>を''x''軸の周りに回転させてつくることができる。
:<math>V=\pi \int_{-r}^r \sqrt{r^2-x^2}^2 dx=\pi \int_{-r}^r (r^2-x^2) dx= \frac{4}{3}\pi r^3</math>
また体積を''r''で微分すると球の表面積<math>S=4\pi r^2</math>が得られる。
; 補:バームクーヘン積分
上記の回転体の公式の導出では「円盤の面積を積分」しているが、「円筒の側面積」を積分しても同様の結果が得られる。この考え方を'''バームクーヘン積分(円筒分割積分)'''と呼ぶ。
バームクーヘン積分による回転体の体積の公式
曲線<math>y=f(x)</math>とx軸、直線<math>x=a, x=b</math>に囲まれた部分をx軸周りに一回転した立体の体積は、
<math>V = 2\pi \int_{a}^{b} x f(x) dx</math>
*導出
:閉区間<math>[x, x + \Delta x](\Delta x > 0)</math>においてx軸と曲線<math>y=f(x)</math>で挟まれた領域をy軸周りに一回転してできる立体の体積を<math>\Delta V</math>とし、同区間におけるf(x)の最小値をm、最大値をMとおく。
:このとき、<math>\pi \{(x + \Delta x)^2 - x^2 \}m \leqq \Delta V \leqq \pi \{(x + \Delta x)^2 - x^2 \}M</math>
:変形すると<math>\pi(2x + \Delta x)m \leqq \frac{\Delta V}{\Delta x} \leqq \pi (2x + \Delta x)M</math>
:<math>\lim_{\Delta x \to + 0} m = \lim_{\Delta x \to + 0} M = f(x)</math>なのではさみうちの原理より<math>\lim_{\Delta x \to + 0} \frac{\Delta V}{\Delta x} = 2 \pi x f(x)</math>
:<math>\therefore \frac{dV}{dx} = 2 \pi x f(x)</math>
:<math>\Delta x < 0</math>でも同様。
:この微分方程式を解く(詳細は[[高等学校理数数学#微分方程式|こちら]])と、
::<math>dV = 2 \pi x f(x) dx</math>
::<math>\int dV = \int 2 \pi x f(x) dx</math>
::<math>V = 2 \pi \int x f(x) dx + C</math>(Cは積分定数)
:閉区間<math>[a, b]</math>で定積分を考えると、<math>V = 2 \pi \int_{a}^{b} x f(x) dx</math>となる。
記述問題で用いる場合、念のため上のように証明しておくと良い。
; 補:パップス・ギュルダンの定理
図形Aを、図形Aと交わらない直線の周りに一回転してできる立体の体積は、V=(Aの重心が描く円の円周長)×(Aの面積)で求まる。
この定理は大学入試においては非常に有名な裏技であり知っておいて損はないが、記述で用いると完全にアウトである。この定理を用いるのは、選択肢形式の問題かどうしても記述の白紙解答を避けたい場合のみに限ろう。(もっとも、重心がわかる図形で出題されるのはごく稀だが。)
{{コラム|一般の軸を中心とした回転体の体積の求め方|
一般に空間中の直線Lの周りの回転体('''斜軸回転体''')の体積は、回転軸Lに垂直な平面で回転体を切った断面積を考えて求めることができる。
ここでは、回転前の図形が座標平面上に存在する場合を扱う。
; '''例題'''
xy平面において<math>L:y=x, C:y=x^2</math>で囲まれた部分を, 直線Lの周りに一回転してできる立体の体積を求めよ。
解答)
:曲線C上の点<math>P(x, x^2)</math>から直線Lに下ろした垂線の足を<math>H(t, t)</math>とし、直線L上に点<math>Q(x, x)</math>をとる。
:与えられた条件より<math>0 \leqq x \leqq 1</math>である。
:このとき<math>\overline{PH} = \frac{|x-x^2|}{\sqrt{2}} = \frac{x-x^2}{\sqrt{2}} (\because 0 \leqq x \leqq 1 \implies x \geqq x^2)</math>より、
:<math>t = \overline{OH} = \overline{OQ} - \overline{HQ} = \overline{OQ} - \overline{PH} = \sqrt{2}x - \frac{x-x^2}{\sqrt{2}} = \frac{x+x^2}{\sqrt{2}}</math>
:<math>\therefore dt = \frac{1+2x}{\sqrt{2}} dx</math>
:tの積分範囲は0→√2なので、xの積分範囲は0→1である。
:故に、<math>V = \pi \int_{0}^{\sqrt{2}} \overline{PH}^2 dt = \pi \int_{0}^{1} (\frac{x-x^2}{\sqrt{2}})^2 \cdot \frac{1+2x}{\sqrt{2}} dx</math>
:<math>= \frac{\pi}{2 \sqrt{2}} \int_{0}^{1} (2x^5-3x^4+x^2) dx = \frac{\sqrt{2} \pi}{4} [ \frac{1}{3} x^6 - \frac{3}{5} x^5 + \frac{1}{3} x^3 ]_{0}^{1} = \frac{\sqrt{2} \pi}{60}</math>
この解答を簡潔に纏めると、直線Lをt軸と見做してt軸についての回転体の式を立て、それをx軸についての回転体の式へと置換積分している。
斜軸回転体の体積を求める方法は他にもあるので、簡潔に纏める。
①傘型分割積分
上の例題で考えると、長さ<math>\overline{PQ}</math>、微小幅<math>\Delta x</math>の部分をLの周りに一回転すると、傘型状の図形(円錐の側面)になる。
その面積(正確には微小体積)を積分すると回転体の体積が出てくる。この考え方を'''傘型分割積分'''という。不足なく論理展開を記述できれば、入試でこの考え方を用いても減点される可能性は低いだろう。
この過程を一般化すると、以下の公式を導くことができる。
:曲線<math>y=f(x)</math>と直線<math>mx+n, x=a, x=b</math>で囲まれた部分を直線<math>y=mx+n</math>の周りで一回転した体積は、
:<math>V = \pi \cos \theta \int_{a}^{b} \{ f(x) - (mx+n) \}^2 dx</math>
:ただし、<math>\tan \theta = m</math>(回転軸がx軸となす角がθである)
この公式は完全に裏技なので、記述問題では(証明なしに)使用しない方が無難である。
②回転移動の利用
図形全体を回転移動することにより、回転軸をx軸(もしくはy軸)に重ねることで、強引に回転体の公式に代入する方法。
回転移動には[[高等学校数学C/複素数平面#回転移動|複素数平面の知識]]、[[高等学校数学C/数学的な表現の工夫#一次変換|行列の知識]]のどちらを用いても良い。
この方法では、回転後の図形の方程式が媒介変数表示で出現する場合がある。その場合、回転体の公式を媒介変数についての積分へと置換積分すれば良い。
}}
=== 曲線の長さと運動の道のり ===
==== 曲線の長さ ====
曲線<math>\begin{cases} x=f(t) \\ y=g(t) \end{cases}</math>の長さを考える。
:<math>f(t), g(t)</math>とも2階微分可能(第一次導関数が連続)とする。
:<math>a \leqq t \leqq b</math>として閉区間<math>[a, t]</math>における曲線の長さを<math>s(t)</math>とおく。
:<math>t</math>の増分<math>\Delta t</math>が十分小さいとき、<math>\Delta s \fallingdotseq \sqrt{(\Delta x)^2 + (\Delta y)^2}</math>より<math>\frac{\Delta s}{\Delta t} = \sqrt{(\frac{\Delta x}{\Delta t})^2 + (\frac{\Delta y}{\Delta t})^2}</math>
:<math>\Delta t \to 0</math>のとき、<math>\frac{ds}{dt} = \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}</math>
:この微分方程式を解くと、
::<math>ds = \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt</math>
::<math>\int ds = \int \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt</math>
::<math>s = \int \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt + C</math>(Cは積分定数)
:ここで<math>s(t)</math>の定義より<math>s(b) - s(a) = \int_{a}^{b} \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt</math>
よって、以下のようになる。
曲線の長さ(Ⅰ)
曲線<math>\begin{cases} x=f(t) \\ y=g(t) \end{cases}</math>の閉区間<math>[a, b]</math>における長さLは、
<math>L = \int_{a}^{b} \sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2}dt</math>
曲線の式が<math>y=f(x)</math>で与えられている場合、<math>\begin{cases} x=t \\ y=f(t) \end{cases}</math>と考えて上の公式に代入すると、以下のようになる。
曲線の長さ(Ⅱ)
曲線<math>y=f(x)</math>の閉区間<math>[a, b]</math>における長さLは、
<math>L = \int_{a}^{b} \sqrt{1 + (\frac{dy}{dx})^2}dt</math>
==== 速度と道のり ====
[[高等学校数学III/微分法#速度と加速度|微分法で学んだ]]ように、数直線上を運動する点Pの時刻tにおける位置,速度がそれぞれ<math>x(t), v(t)</math>で与えられるとき、<math>v(t) = \frac{d}{dt} x(t)</math>という関係式が成り立った。微分と積分は逆演算の関係にあるので、<math>x(t) = \int v(t) dt + C</math>(Cは積分定数)という関係も成り立つ。このとき、積分定数Cは初期位置<math>x_0</math>を表す。
点Pが<math>t=a</math>から<math>t=b</math>まで運動するとき、位置の変化量は<math>x(b) - x(a) = \int_{a}^{b} v(t) dt</math>で与えられる。すなわち<math>x(b) = x(a) + \int_{a}^{b} v(t) dt</math>であり、<math>x(a)</math>が初期位置<math>x_0</math>を表すことが確かめられた。
また、上の場合において道のりは<math>\int_{a}^{b} |v(t)| dt</math>と計算できる。位置の変化量と道のりが一致するのは、恒等的に<math>x(t) \geqq 0</math>が成り立つ場合のみである。
平面上の運動も同様である。
なお、加速度は位置の二階微分なので、加速度を二階積分すれば位置が求まる。よって、時刻tにおける加速度が<math>a(t) = a</math>であるときの位置は、<math>x(t) = \int \! \int a(t) dt \; dt = \int (at + v_0) dt = \frac{1}{2}at^2 + v_0 t + x_0</math>である。([[高等学校物理基礎/力学#等加速度直線運動|等加速度直線運動]]の式)
{{コラム|ベクトル関数|変数tの値を決めるとベクトルA(t)の値が一意に定まるとき、A(t)をtの'''[[物理数学I ベクトル解析#ベクトル関数の定義|ベクトル関数]]'''という。基本ベクトルを用いると、ベクトル関数は基本ベクトルのスカラー倍の足し算に分解することができる。このとき、基本ベクトルにかかる係数をベクトル関数の'''成分'''という。ベクトル関数の定義より、成分はtの関数になる。
つまり、'''ベクトル関数に関する微積分はその成分をそれぞれ微分/積分すれば良い'''ということがわかる。
例えば、速度を表すベクトル関数<math>\vec{v}(t) = \begin{pmatrix} 2t \\ 3t^2-1 \end{pmatrix}</math>があったとして、初期位置<math>\begin{pmatrix} x_0 \\ y_0 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix}</math>とすると時刻tにおける位置は<math>\vec{x}(t) = \int \vec{v}(t) dt = \begin{pmatrix} \int (2t) dt \\ \int (3t^2-1) dt \end{pmatrix} = \begin{pmatrix} t^2 \\ t^3-t \end{pmatrix}</math>、時刻tにおける加速度は<math>\vec{a}(t)
= \frac{d}{dt} \vec{v}(t) = \begin{pmatrix} \frac{d}{dt}(2t) \\ \frac{d}{dt}(3t^2-1) \end{pmatrix} = \begin{pmatrix} 2 \\ 6t \end{pmatrix}</math>というベクトル関数になる。また、<math>t=0</math>から<math>t=2</math>まで運動したときの位置の変化量ベクトルは<math>\begin{pmatrix} \Delta x \\ \Delta y \end{pmatrix} = \int_{0}^{2} \vec{v}(t) dt = \begin{pmatrix} \int_{0}^{2} (2t) dt \\ \int_
{0}^{2} (3t^2-1) dt \end{pmatrix} = \begin{pmatrix} [t^2]_{0}^{2} \\ [t^3-t]_{0}^{2} \end{pmatrix} = \begin{pmatrix} 4 \\ 6 \end{pmatrix}</math>と求まる 。
すなわち、速度・加速度・位置・道のり等に関する問題はベクトル関数の微積分を計算する問題であると言える。
}}
== 区分求積法 ==
これまでに学んだように、積分は微分の逆演算であると同時に、座標平面上での面積計算でもある。この項では、座標平面上の面積計算の方法の一つである区分求積法、および積分法との関連について学ぶ。
[[File:Riemann Integration 1.png|thumb|300px|面積計算]]
右図のようなある曲線<math>y=f(x)</math>がある。単純のため、ここではつねに<math>f(x)>0</math>であるものとして考える。この曲線と、''x''軸、および直線<math>x = a, x = b (a < b)</math>によって囲まれる領域の面積''S''を求める。この面積は[[#面積]]の項で学んだように、
: <math>S = \int_a^b f(x)dx</math>
と積分法を用いて計算することができた。では、これをもう少し原始的な方法で近似的に求めることを考えてみよう。
曲線を含む図形の面積を求めることは簡単ではないが、例えば三角形や長方形、台形などの直線で囲まれた図形の面積を求めることは難しくない。そこで、下図のようにy=f(x)を棒グラフで近似し、長方形の面積の和を計算することで、求めたい面積''S''に近い値を求めることができる。左下のように棒グラフの幅が大きいと誤差も大きいが、棒グラフの幅を狭くすればするほど、すなわち分割数を多くするほど、徐々に求めたい面積の値に近づけることができる。そこで、この区間[''a'',''b'']を''n''等分し、その時の長方形の面積の総和を求め、その後で<math>n \to \infty</math>の極限を考えることにする。このようにして、区間を細かく等分割し、長方形の面積の総和を求めることにより図形の面積を求める方法を、'''区分求積法'''と呼ぶ。
:[[File:Riemann Integration 4.png|350px|棒グラフによる近似]][[File:Riemann Integration 5.png|350px|さらに細かな棒グラフによる近似]]
[[File:Integral numericky obd.svg|thumb|左側で近似]][[File:Somme-superiori.png|thumb|右側で近似]]
<math>y=f(x)</math>を棒グラフで近似するとき、右図のように、長方形の左上の頂点を曲線上に取る方法と、右上の頂点を曲線上に取る方法がある。どちらの方法でも、分割数を大きくすればいずれ求めたい面積に近づくが、まずは左上の頂点を曲線上に取る方法で考えることにする。
ここでは面積を求めたい区間を、単純のため[0, 1]とする。区間[0, 1]を''n''等分するとき、それぞれの長方形の左端のx座標は、
:<math>0, \frac{1}{n}, \frac{2}{n}, \cdots, \frac{n-1}{n}</math>
となる。ここで、一般に第''k''番目の長方形について考えることにする。ただし、いちばん左側の長方形を第0番目とし、いちばん右側の長方形を第''n''-1番目とする。第''k''番目の長方形の左端のx座標は<math>\frac{k}{n}</math>であるから、この長方形の高さは<math>f\left(\frac{k}{n}\right)</math>となり、また長方形の幅は<math>\frac{1}{n}</math>である。そのため、この長方形の面積<math>s_k</math>は、
:<math>s_k = \frac{1}{n}f\left(\frac{k}{n}\right)</math>
となる。したがって、これらの長方形の面積の総和<math>S_n</math>は、
:<math>S_n = \sum_{k = 0}^{n-1} s_k = \frac{1}{n}\sum_{k = 0}^{n-1} f\left(\frac{k}{n}\right)</math>
この<math>S_n</math>は、区間[0, 1]を''n''等分した時の長方形の面積の総和であるが、''n''を大きくすればするほど、次第にもとの面積に近づいていく。したがって、<math>n\to\infty</math>の極限を考え、
:<math>S = \lim_{n\to\infty} S_n = \lim_{n\to\infty} \frac{1}{n}\sum_{k=0}^{n-1} f\left(\frac{k}{n}\right)</math>
となる。このようにして、求めたい面積を計算することができる。さらに、ここでこの区間の面積が積分法により計算できたことから、
:<math>\lim_{n\to\infty} \frac{1}{n}\sum_{k=0}^{n-1} f\left(\frac{k}{n}\right) = \int_0^1f(x)dx</math>
が成り立つ。また、長方形の右上の頂点を曲線上に取る場合は、同様にして
:<math>S = \lim_{n\to\infty} \frac{1}{n}\sum_{k=1}^{n} f\left(\frac{k}{n}\right) = \int_0^1f(x)dx</math>
となる。
区分求積法を計算するとき、'''シグマの範囲の有限個のズレは無視して良い'''。nを無限大に飛ばした極限を考えるとき、有限個あるズレの値は全て0に収束するからである。<br>
つまり、l, mを自然数として<math>\lim_{n \to \infty} \frac{1}{n} \sum_{k=l}^{n-m} f\left(\frac{k}{n}\right) = \int_0^1f(x)dx</math>である。
区分求積法は、より一般には次の式で表される。
:<math>\int_{a}^{b} f(x) dx = \lim_{n \to \infty} \sum_{k=l}^{n-m} f(x_k) \Delta x</math>
:ただし、<math>\Delta x = \frac{b-a}{n}, x_k = a + k\Delta x</math>
証明は先ほどと同様である。<br>
大学においては、積分の定義を微分の逆演算ではなく、この式の右辺のような和('''リーマン和'''という)の極限とする場合がある。数学Ⅱで扱った微分積分学の基本定理は、リーマン和(面積計算)と原始関数(微分の逆演算)という二つの概念を結びつけている定理であると言える。
なお、<math>\lim_{n \to \infty} \sum_{k=an+l}^{bn-m} f\left(\frac{k}{n}\right) = \int_{a}^{b} f(x) dx</math>が成り立つ。
== 演習問題 ==
* [[高等学校数学III 積分法/演習問題|不定積分44題]]
* [[/演習問題]]
== 脚注 ==
<references/>
{{DEFAULTSORT:こうとうかつこうすうかくIII せきふんほう}}
[[Category:高等学校数学III|せきふんほう]]
[[カテゴリ:積分法]]
8wuehuffuo0qzf84hecxdkcnkdf8o25
小学校算数/6学年
0
2158
262872
262297
2024-11-01T06:30:23Z
Nermer314
62933
262872
wikitext
text/x-wiki
== 式と計算 ==
=== 分数×整数 ===
<math>\frac{b}{a} \times {c} = \frac{b \times c}{a}</math> となります。
=== 分数÷整数 ===
<math>\frac{b}{a} \div {c} = \frac{b}{c \times a}</math> となります。
=== 分数×分数 ===
分数のかけ算は、それぞれ[[小学校算数/4学年#分数の種類|真分数]]または[[小学校算数/4学年#分数の種類|仮分数]]の場合<ref>帯分数でない、左に数字がついていない分数のことです</ref>は分数の分子と分母を個別にかけ算すればできます。
:つまり <math>\frac{b}{a} \times \frac {d}{c} = \frac{b \times d}{a \times c}</math> となります。
例えば、
<math>\frac 1 5\times\frac 2 3 = \frac {1 \times 2} { 5 \times 3} = \frac 2 {15}</math>
となります。
ただし[[小学校算数/4学年#分数の種類|帯分数]]がふくまれている場合は仮分数に直してからでなければいけません。これは分数の割り算も同じです。
<math>2{\frac 2 3} \times 1{\frac 2 5} = \frac 8 3 \times \frac 7 5 = \frac {8 \times 7} {3 \times 5} = \frac {56} {15} \dots ( = 3{\frac {11} {15}})</math>
=== 分数÷分数 ===
==== 逆数 ====
<!-- 2つの数の積が1になるとき、一方の数を他方の数の'''逆数'''といいます。 -->
逆数は分数の分子と分母を入れ替えた物になります。つまり、<math>\frac{b}{a}</math>の逆数は<math>\frac{a}{b}</math>です。
==== 分数のわり算 ====
分数のわり算では、わられる数にわる数の逆数をかけると答えが得られます。
:<math>\frac{b}{a} \div \frac {d}{c} = \frac{b}{a} \times \frac {c}{d}</math> となります。
===== なんでわり算では逆数をかけるの? =====
それでは、<math>\frac{b}{a} \div \frac {d}{c}</math>を例にして解説していきます。ここでまだわかっていない答えをとりあえず<math>x</math>と書いておきます。
: <math>\frac{b}{a} \div \frac {d}{c} = x</math>
割り算は割られる数と割る数に同じ数をかけても答えは同じになります。例えば
: <math>\frac{b}{a} \times e \div ( \frac{d}{c}\times e ) = \frac{b}{a} \div \frac {d}{c}</math>
整数÷分数の式に直せば計算できるので<math>\frac{b}{a} \times \frac{a}{b} \div ( \frac{d}{c} \times \frac{c}{d} ) </math>
にすれば<math>1 \div \frac{d}{c} \times \frac{c}{d}</math>
になるので計算できます。
== 文字と式 ==
同じ{{ruby|値段|ねだん}}のえん筆を6本買います。
えん筆1本の値段を50円としたとき、式は<math>50 \times 6 = 300</math>となります。
えん筆1本の値段を<math>\Box</math>円、6本の代金を<math>\triangle</math>円として、<math>\Box</math>と<math>\triangle</math>の関係を式に表すと、<math>\Box \times 6 = \triangle</math>となります。
これからは、<math>\Box</math>や<math>\triangle</math>などの記号の代わりに、{{ruby|<math>x</math>|エックス}}や{{ruby|<math>y</math>|ワイ}}などの文字を使うことがあります。
えん筆1本の値段を{{ruby|<math>x</math>|エックス}}円、6本の代金を{{ruby|<math>y</math>|ワイ}}円として、<math>x</math>と<math>y</math>の関係を式に表すと、<math>x \times 6 = y</math>となります。
<math>x=60</math>のときは、<math>x \times 6 = y</math>の<math>x</math>に60をあてはめて計算すると、<math>60 \times 6 = 360</math>となります
=== 計算のきまりを文字の式で表そう ===
分配法則
:<math>( a + b ) \times c = a \times c + b \times c</math>
:<math>( a - b ) \times c = a \times c - b \times c</math>
交換法則
:<math> a + b = b + a </math>
:<math> a \times b = b \times a </math>
結合法則
:<math> ( a + b ) + c = a + ( b + c ) </math>
:<math> ( a \times b ) \times c = a \times ( b \times c ) </math>
== 量と測定 ==
=== 身近にある図形の面積 ===
[[小学校算数/5学年]]までに[[w:平行四辺形]]や[[w:三角形]]等の図形の面積の求め方を学びました。しかし、実際に見られる図形は必ずしも完全な三角形ではなくでこぼこな図形などもあります。このような時にでもだいたいの面積を調べることができます。
例えば方眼紙に適当に書いた図形の面積を求めてみましょう。今までのやり方だとその図形の面積を求めることはできません。しかしだいたいの大きさなら調べることはできます。
方眼紙に書いた図形はたくさんのマスで区切られています。マスが完全にその図形にふまれている場合、マスの上を図形の線が通っています。そのマスの数を調べることによっておおよその面積を調べることができます。
* 1辺の長さが1cmの方眼で、図形が完全にふくまれているマスが100個、図形の線が通っているマスが20個ありました。その面積はいくらになりますか?
この図形の面積は、マス100個の面積よりも大きいことはすぐにわかります。そして、20個のマスは図形の線が通っていて、図形に完全にふくまれてはいないのですから、マス120個の面積よりは小さいことがわかります。だから、この場合はその図形の面積は<math> 100cm^2</math>と<math>120cm^2</math> の間であることがわかります。これではまだ少しおおざっぱですが、方眼紙のマスをより細かくする(例えば5mmや1mm四方のマスにとりかえることによってよりくわしく面積を知ることができます。
:ここで、「図形の線が通っているマス」の、図形がふくまれている部分の面積はわかりませんでしたが、すべてふくまれている面積が<math>0.5cm^2</math>とすると、この図形の面積は<math>110cm^2</math>となります。
:あるいは、三角形や長方形など、面積を求められる図形に形を変えておよその面積を求めることもできます。
== 図形 ==
=== {{ruby|対称|たいしょう}}な図形 ===
* {{ruby|線対称|せんたいしょう}}
[[File:Esfericon corte triangular.png|thumb|100px|正三角形と、その対称の軸のうちの一本]]
ある直線を{{ruby|軸|じく}}として図形を折り重ねたとき、元の図形とぴったり重なる図形は '''{{ruby|線対称|せんたいしょう}}である'''といいます。
また、その折り重ねたときの軸となった直線を '''対称の軸''' といいます。
対応する2つの点を結ぶ直線は、対称の軸と{{ruby|垂直|すいちょく}}に交わります。また、その交点と対応する点のきょりは、それぞれ等しくなります。
{{clear}}
* {{ruby|点対称|てんたいしょう}}
[[Image:Point symmetry.jpg|thumb|300px|点対称な図形の例を4つ。赤い点が、それぞれの図形の、対称の中心。]]
ある図形をある点を中心に180°回転させたとき、もとの図形と重なる図形は '''{{ruby|点対称|てんたいしょう}}である''' といいます。また、その回転の中心の点を '''対称の中心''' といいます。
対応する2つの点を結ぶ直線は、対称の中心を通ります。また、対称の中心と、対応する2つの点を結ぶと、そのきょりは、それぞれ等しくなります。
=== 多角形と対称 ===
;三角形と対称
:二等辺三角形は、線{{ruby|対称|たいしょう}}な図形で, 対称の{{ruby|軸|じく}}は1本あります。また、点対称な図形ではありません。また、正三角形も線対称な図形で, 対称の軸は3本あります。点対称な図形ではありません。
;四角形と対称
:平行四辺形は、線対称ではありませんが、点対称です。長方形は線対称な図形で、対称の軸は4本あります。ひし形は線対称な図形で、対称の軸は2本あります。正方形は線対称な図形で、対称の軸は4本あります。
;正多角形と対称
:正多角形において、線対称かどうか、対称の軸の本数、点対称かどうかについて調べると以下のようになります。
{| class="wikitable"
|-
! 図形/内容 !! 線対称かどうか !! 対称の軸の本数 !! 点対称かどうか
|-
| 正三角形 || 〇 || 3 || ×
|-
| 正四角形(正方形) || 〇 || 4 || 〇
|-
| 正五角形 || 〇 || 5 || ×
|-
| 正六角形 || 〇 || 6 || 〇
|}
正多角形は必ず線対称で、対称の軸の本数はその正多角形の辺の数に等しくなっています。また、辺の数が{{ruby|奇|き}}数の正多角形は点対称ではなく、{{Ruby|偶|ぐう}}数の正多角形は点対称となります。
;円と対称
:円は線対称な図形で、対称の軸は直径となります。直径は無数にあるので、対称の軸も無数にあります。また、円は点対称な図形で、その対称の中心は円の中心となります。
=== 円の面積 ===
<div style="float:right; margin:0 0 0 10px;text-align:center;">[[画像:円の面積.png|300px]]</div>
円の面積の求め方を考えてみましょう。
図のように、円をおうぎの形に等分し、{{Ruby|並|なら}}べかえます。
このとき、並びかえた図形は長方形(平行四辺形)とみることができます。
その{{Ruby|縦|たて}}の長さは、 '''半径''' で、横の長さは '''円周の長さの半分''' と等しくなります。
'''円周=直径×円周率''' で、
円周÷2=直径×円周率÷2=(直径÷2)×円周÷2=半径×円周率 となるので、円周の半分の長さは'''半径×円周率'''と等しくなります。
この長方形の面積(縦×横)='''円周÷2'''×'''半径'''='''半径×円周率'''×'''半径'''となりますから、
円の面積は、 '''半径×半径×円周率''' という式で求められることになります。ここでは円周率を3.14とします。
{{-}}
==== いろいろな図形の面積 ====
この図形は、正方形の中に、円の一部を書いたものです。色のついた部分の面積の求め方を考えましょう。
[[File:レンズ形.png|thumb|拡大と縮小]]
=== 図形の拡大と縮小 ===
[[File:SimilitudeHomothetieL.svg|thumb|拡大と縮小]]
ある図形を、形をかえないで大きくすることを、その図形を '''{{ruby|拡大|かくだい}}する'''といいます。
たとえば右の図では、ある点を中心に上の青い図形を拡大して、下の黒い図形に重ねました。
拡大された図を '''拡大図''' といいます。右の絵では、上の青い「L」の形をを基準に考えた場合は、下の黒い図のほうが拡大図です。
ある図形を、形をかえないで小さくすることを、その図形を '''{{ruby|縮小|しゅくしょう}}する''' といいます。
たとえば右の図では、下の黒い「L」の形を縮小して、上の青い図形にしています。
縮小された図を '''{{ruby|縮図|しゅくず}}'''といいます。'''「縮小図」ではないので注意してください。'''右の図では、下の黒い「L」の形を基準に考えた場合は、上の青い形のほうが縮図です。
[[Image:Japan_sea_map.png|250px|left]][[Image:Japan satellite.jpg|250px|right]]
地図の{{ruby|縮尺|しゅくしゃく}}も、縮図のような考え方です。例えば縮尺が25000分の1となっているなら、実際の25000分の1の大きさで、全く同じ形に書いてあります。
また、本などを縮小コピーしたり、拡大コピーしてみましょう(コピー機には「縮小コピー」「拡大コピー」の機能があることが多いです)。やはり、{{ruby|原稿|げんこう}}と同じように印刷されますが、大きさは変わっているはずです。
{{clear}}
では、もっと簡単な図形である三角形はどうでしょうか。全く同じ形でも大きさが{{ruby|異|こと}}なる三角形では、どのような共通の性質を持っているでしょうか。
[[Image:SimilarTriangles.jpg]]
この2つの三角形は、全く同じ形をしていますが、大きさが違います。この2つの三角形を比べると、次のことがいえます。
* 角A = 角D であり、 角B = 角E であり、 角C = 角F である。
* AB:DE = BC:EF = CA:FD
<small>(「AB」は、「辺ABの長さ」をさします)</small><br>
三角形ABCを基準に考えてみれば、三角形DEFは、三角形ABCを拡大したものです。
つまり、三角形DEFは、三角形ABCの拡大図です。
三角形DEFを基準に考えてみれば、三角形ABCは、三角形DEFを縮小したものです。
つまり、三角形ABCは、三角形DEFの縮図です。
=== 角柱と円柱の体積 ===
角柱や円柱で、底面の面積を '''底面積''' といいます。
:角柱は、多角形が底面に{{ruby|垂直|すいちょく}}に動いたものと考えれば、その体積は「底面積×高さ」という式で求められます。
:円柱も、角柱と同じようにその体積は「底面積×高さ」で求められます。
== 数量関係 ==
ここでは、数量の間の関係について学んでいきましょう。
=== 比 ===
ウスターソースとケチャップを混ぜて、ハンバーグソースを作ろうと思います。
:そこで、ウスターソースとケチャップを混ぜてハンバーグソースを作ってみました。
:では、このウスターソースの量とケチャップの量の{{ruby|割合|わりあい}}はどのように表せばよいでしょうか。
:まず、ウスターソースの量はケチャップの何倍か考えてみましょう。
:<math>120 \div 80=1.5</math>(倍)となりますね。(もしくは <math>\frac{3}{2}</math>倍)
:このウスターソースとケチャップの割合を 120:80 と表すことがあります。
:このような割合の表し方を '''{{ruby|比|ひ}}''' といい、比の記号「:」は「{{ruby|対|たい}}」と読みます。
* 比の値
比 <math>a:b</math>において、<math>a</math>が<math>b</math>の何倍かを表す{{ruby|値|あたい}}を '''比の{{ruby|値|あたい}}''' といいます。
:<math>a:b</math> の比の値は<math>\frac{a}{b}</math>となります。
* 等しい比
2つの比 3:4 と 9:12 について考えてみましょう。
比 3:4 の「3」と「4」に、3をかけると 「9」「12」になるので 9:12に等しくなります。
また、3:4 と 9:12の比の{{ruby|値|あたい}}を調べると ともに <math>\frac{3}{4}</math> で、等しくなっています。
このように、2つの比の比の値が等しいとき、 '''2つの比は等しい''' といいます。
2つの比 <math>a:b</math> と <math>c:d</math> が等しいとき、<math>a:b=c:d</math> とかきます。なお、このような式を '''比例式''' といいます。
'''比 <math>a:b</math>に、同じ数をかけたり割ったりしてもその比は等しくなります。'''
=== 比を簡単にする ===
比を、同じ比の値で、できるだけ小さい整数の比に直すことを'''「比を{{ruby|簡単|かんたん}}にする」''' といいます。
:問題
15:3を簡単にしましょう。
15と3の最大公約数は、3です。なので、3で15と3をわります。
15:3=5:1
5と1には最大公約数がないので、これ以上簡単になりません。
では、<math>\frac{1}{3}:\frac{3}{4}</math>を簡単にしてみましょう。
:通分して、<math>\frac{1}{3}:\frac{3}{4}=\frac{4}{12}:\frac{9}{12}=4:9</math>
:とすることができます。
:また、<math>\frac{1}{3}:\frac{3}{4}</math>の比の値は <math>\frac{1}{3} \div \frac{3}{4}= \frac {4}{9}</math> です。
:これを使って 4:9 とすることもできます。
=== 比を求める ===
問題 次のxにあてはまる数を求めましょう。
3:x=6:4
:「3」と「6」に注目しましょう。6は3に2をかけた数なので、xはxに2をかけると4になる数だとわかります。だからxは4÷2=2 となります。
* 比を使った問題
(1)ウスターソースとケチャップを3:2の比で混ぜてハンバーグソースを作ります。ウスターソースを60mL使うとき、ケチャップは何mL必要ですか。
* 解答
:[2]は、[1]の2倍、[3]は[1]の3倍を表す記号とします。
:ウスターソースを[3]、ケチャップを[2]ずつ使うとすれば、
:ウスターソースは60mL使うので、[3]は60mLだとわかります。
:そのため、[2]にあたるケチャップは、60÷2×3=40(mL)必要です。これが答えです。
比の値を使って考えてみましょう。
:ケチャップとウスターソースの比は 2:3 となります。ですから、比の値は<math>\frac{2}{3}</math>となります。ですから、ケチャップは <math>60 \times \frac{2}{3} =40</math>(mL)とればよいことになります。
(2)AさんとBさんで、15{{ruby|枚|まい}}のクッキーを、Aさんの枚数とBさんの枚数の比が<math>2:3</math>になるように分けようと思います。AさんとBさんはそれぞれ何枚とればよいですか。
* 解答
:[2]は、[1]の2倍、[3]は[1]の3倍を表す記号とします。
:AさんとBさんがそれぞれ[2]、[3]ずつとるとすれば、
:AさんとBさんは合わせて[5]をとることになります。
:クッキーは15枚あるので、[1]はクッキー3枚分だとわかります。
:そのため、Aさんは6枚、Bさんは9枚のクッキーをとることになります。これが答えです。
比の値を使って考えてみましょう。
:Aさんの枚数と全体の枚数の比は 2:5 となります。ですから、比の値は<math>\frac{2}{5}</math>となります。ですから、Aさんは<math>15 \times \frac{2}{5} =6</math>(枚)とればよいことになります。
:また、Bさんの枚数と全体の枚数の比は 3:5 となります。ですから、比の値は<math>\frac{3}{5}</math>となります。ですから、Bさんは<math>15 \times \frac{3}{5} =9</math>(枚)とればよいことになります。なお、15-6=9 と求めてもかまいません。
* メモ
このような問題は、中学校で習う「方程式」を用いて計算されることがあります。
詳しくは[[中学校数学 1年生-数量]]を参照。
== 比例と反比例 ==
さまざまなものの変わり方を調べてみましょう。
==== 比例 ====
一方の数量が2倍、3倍、…になると、もう一方の数量が2倍、3倍、…になるとき、2つの数量は'''{{ruby|比例|ひれい}}する'''といいます。<br>
(注意)参考書などでは、「正比例」と書かれている場合があります。
<!-- これは関数の知識が必要では?参考書、教科書参照してどうなっているか要確認 -->
比例の関係を見るために、比例関係にある2数を用いて、表とグラフを
作ってみよう。ここでは、「<math>y=2 \times x</math>」の
比例の表、グラフを作る。
このとき、この比例の表は
<table>
<caption>比例の表</caption>
<tr>
<th>x </th>
<td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>
<tr>
<th>y </th>
<td>2</td><td>4</td><td>6</td><td>8</td><td>10</td></tr>
</table>
一方比例のグラフは
[[File:Proportion.svg]]
となる。
グラフを見ると分かる通り、比例のグラフは両方が0になる点を通る直線になる。
; 問題
: <math>y=5 \times x</math>であるような比例の表とグラフを作りましょう。
; 解答
表は下のようになる。
<table>
<caption>比例の表</caption>
<tr>
<td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td>
<td>6</td><td>7</td><td>8</td><td>9</td><td>10</td>
</tr>
<tr>
<td>0</td><td>5</td><td>10</td><td>15</td><td>20</td><td>25</td>
<td>30</td><td>35</td><td>40</td><td>45</td><td>50</td>
</tr>
</table>
また、グラフは
[[File:A_Proportion.svg]]
となる。
=== 反比例 ===
面積が12cm<sup>2</sup>の長方形において、{{ruby|縦|たて}} の長さを変えたとき、横の長さはどうなるか調べてみましょう。
{| class="wikitable" style="text-align:right"
|+style="white-space:nowrap"| 面積が12cm<sup>2</sup>の長方形の縦の長さと横の長さ
! 縦の長さ(cm) !! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! 6
|-
! 横の長さ(cm)
| (なし) || 12 || 6 || 4 || 3 || 2.4 || 2
|}
このように、一方の数量が 2倍、3倍、…になると、もう一方の数量が <math>\frac{1}{2}</math>倍、<math>\frac{1}{3}</math>倍…になるとき、2つの数量は'''反比例している'''といいます。
==== 反比例のグラフ ====
反比例のグラフは、直線ではなく、右の図のようななめらかな曲線になります。
[[File:Rectangular hyperbola.svg]]
小学生は、右上部分以外は、気にしなくて構いません。中学校で、左上部分、左下部分、右下部分について習います。
== 場合の調べ方 ==
{{節stub}}
A,B,C,D,Eの5つのチームが、ほかのチームと1回ずつ試合をします。
この時のすべての試合数を求めるとき、どうすればよいでしょうか。
このように、ほかのチームと何回か試合をするとき、(A対B)と(B対A)は'''同じものとして数えます'''。
== データの調べ方 ==
{{節stub}}
下は、ウィキ小学校の6年1組の30人のソフトボール投げの結果です。
:{| class="wikitable" style="text-align:right"
|+ ソフトボール投げの結果 (m)
|-
|28 || 15 || 22 || 34 || 27 || 9 || 42 || 31 || 11 || 37
|-
| 10 || 27 || 20 || 38 || 21 || 43 || 34 || 7 || 25 || 36
|-
| 17 || 24 || 35 || 14 || 27 || 19 || 32 || 9 || 40 || 29
|}
=== {{ruby|階級|かいきゅう}} ===
{| class="wikitable"
|+
|記録
|人数
|-
|0m以上10m未満
|3人
|-
|10m以上20m未満
|6人
|-
|20m以上30m未満
|10人
|-
|30m以上40m未満
|8人
|-
|40m以上50m未満
|3人
|-
|合計
|30人
|}
図のような、「10m以上20m未満」のような区間のことを'''階級'''と言います。また、このような階級が集まった表のことを'''度数分布表'''と言い、それぞれの階級の資料の個数を'''度数'''と言います。
=== {{ruby|平均値|へいきんち}} ===
全ての値を足してそれを結果の数でわったものを{{ruby|'''平均値'''|へいきんち}}と言います。
: <math>(28+15+22+ \cdots +9+40+29) \div 30=24.2</math>
=== {{ruby|中央値|ちゅうおうち}} ===
全ての値を大きさの順で並べて{{ruby|奇数|きすう}}の場合は真ん中、{{ruby|偶数|ぐうすう}}の場合は真ん中の2つの数の平均をそれぞれ{{ruby|'''中央値'''|ちゅうおうち}}といいます。
上の例の場合、大きい順に並べて13番目から18番目を見てみると
: <math>\cdots 24, 25, 27, 27, 27, 28 \cdots</math>
記録の数は30で偶数なので、中央値は<math>(27+27) \div 2 = 27</math>になります。
=== {{ruby|最頻値|さいひんち}} ===
全ての値の中でもっともよく出てくる数を{{ruby|'''最頻値'''|さいひんち}}といいます。
上の例では27が3回と一番多く出てるので、27が最頻値です。
(平均値、中央値、最頻値のことをまとめて代表値と呼びます。)
=== データを図にする ===
==== ドットプロット ====
資料を数直線上に並べ、同じ値のデータの個数だけドットを積み上げてあらわしたものを、'''ドットプロット'''と言います。
[[File:Dotplot of random values.png|thumb|ドットプロットの例。上のソフトボール投げの例とは関係ない。]]
====柱状グラフ====
統計で度数分布を示すグラフです。横軸上に階級、縦軸上に度数を目盛り、おのおのの階級の上に、度数を高さとする長方形を立てたものです。
ヒストグラムともよばれます。
[[File:Histogram example.svg|thumb|柱状グラフの例。上のソフトボール投げの例やドットプロットの例とは関係ない。]]
== 算数ドリル ==
下の「6年生のための算数ドリル」の文字を{{ruby|押|お}}すと、見ているページが、算数ドリルのぺージに、変わります。
* [[算数演習 小学校6年生|6年生のための算数ドリル]]
[[Category:小学校算数|6かくねん]]
m2enmcotb98nke14crihp0ulgxxbuvm
ITスキルとアプリケーション
0
2951
262865
262655
2024-11-01T03:03:31Z
23.249.17.188
262865
wikitext
text/x-wiki
{{連続投稿に注意}}
{{Pathnav|情報技術}}
----
本書は、コンピュータのハードウェアとユーザーの間のインターフェースとして機能するオペレーティング・システム(Operating system; OS)を対象としている。オペレーティング・システムは、コンピュータの限られた資源の共有や活動の管理・調整を担っている。
== オペレーティング・システムとは ==
オペレーティング・システムは通常、カーネルとユーザーランドに分離される。
; カーネル
: ソフトウェアがハードウェアと相互作用するための境界線を提供する。
: カーネルはハードウェアを抽象化し、多くのソフトウェアが全く異なるハードウェア上で同じように動作することを可能にする。
: カーネルは、ユーザーランドがカーネルと対話できるようにするためのシステムコールを提供する。
: ファイルシステム(常にではありないが、通常は)、デバイス、プロセスの制御を含む多くのことを処理する。
; ユーザーランド
: カーネル以外のすべてのものとして存在する。
: 端末を含め、ユーザーが作成するすべてのプロセスはユーザーランドに属する。
: プログラムを表示するGUI(Graphical User Interface)もユーザーランドに属する。
: ウェブサーバーなどのデーモンもユーザーランドに属する。
== OSの種類 ==
一般的に用いられているOSには、以下のような種類がある。
* [[w:Microsoft Windows|Windows]](ウィンドウズ)
* [[w:MacOS|macOS]](マックオーエス)
* [[w:Unix|Unix]](ユニックス) (※ [[w:BSD|BSD]]など含む)
* [[w:Linux|Linux]](リナックス)
* [[w:Solaris|Solaris]](ソラリス)
* [[w:TRONプロジェクト|Tron]](トロン)
* vx-works
* [[w:Multiple Virtual Storage|MVS]] (OS/360, OS/390, z/OS)
スマートフォン用のOSとして、以下、Android(アンドロイド)やiOS(アイ オーエス)などがある。
* [[w:Android|Android]](アンドロイド)
* [[w:iOS (アップル)|iOS]](アイ オーエス)
大まかには上記のとおりとなる。以下に、それぞれの特徴を記す。基本的な使い方など踏み込んだ話題は、Windows については『[[Windows入門]]』を、macOSについては『[[MacOS入門]]』を、Unixについては『[[Unix/Linux入門]]』を、それぞれ参照のこと。
== Microsoft Windows ==
『Microsoft Windows』(ウィンドウズ)は、米[[w:Microsoft|Microsoft]]社(マイクロソフト社)が開発・販売する商用[[w:オペレーティングシステム|オペレーティングシステム]](OS)である。主に[[w:PC/AT互換機|PC/AT互換機]]で利用され、特にデスクトップPC市場における主要なOSとしての地位を確立している。[[w:CPU|CPU]][[w:アーキテクチャ|アーキテクチャ]]は[[w:https://ja.wikipedia.org/wiki/X64#AMD64|amd64]]を主にサポートし<ref>Windows 11からは64ビット(amd64)版のみの提供となった。</ref>、一部のエディションでは[[w:ARMアーキテクチャ|ARMアーキテクチャ]]もサポートしている。
=== 主な特徴 ===
* '''[[w:グラフィカルユーザインタフェース|GUI]] (Graphical User Interface):''' 直感的なグラフィカルユーザーインターフェースを提供し、マウスやキーボードによる操作が可能
* '''マルチタスク:''' 複数のアプリケーションを同時に実行し、タスクを切り替えて作業ができる環境を提供
* '''アプリケーション互換性:''' 豊富なソフトウェアエコシステムを持ち、ビジネス、エンターテイメント、生産性向上など様々な用途のアプリケーションが利用可能
* '''ネットワーク機能:''' インターネット接続、ファイル共有、リモートアクセスなどの機能を標準搭載
* '''セキュリティ機能:''' [[w:Windows Defender|Windows Defender]]による標準のマルウェア対策、[[w:ファイアウォール|ファイアウォール]]、暗号化機能などを提供
=== 歴史 ===
Windowsは当初、[[w:MS-DOS|MS-DOS]](エムエス ドス)上のアドオンソフトウェアとして1985年にWindows 1.0からスタートした。1993年には、MS-DOSを必要としない32ビットOSである[[w:Windows NT|Windows NT]] 3.1がリリースされた。1995年には16ビットコードと32ビットコードが混在した[[w:Windows 95|Windows 95]]がリリースされ、一般ユーザー向けPCで広く普及した。
=== エディション ===
現行の[[w:Windows 11|Windows 11]]では、主に以下のエディションが提供されている:
* '''Home:''' 一般家庭向けの基本機能を備えたエディション
* '''Pro:''' ビジネス向けの追加機能(ドメイン参加、BitLocker等)を含むエディション
* '''Enterprise:''' 大規模組織向けの管理機能を強化したエディション
* '''Education:''' 教育機関向けのエディション
=== システム要件 ===
Windows 11の主な動作要件:
* 1 GHz以上の64ビットプロセッサまたはSoC
* 4GB以上のRAM
* 64GB以上のストレージ
* [[w:TPM|TPM]] 2.0
* [[w:UEFI|UEFI]]、[[w:セキュアブート|セキュアブート]]対応
* [[w:DirectX 12|DirectX 12]]対応グラフィックス
=== macOS ===
米Apple社(アップル社)が開発・販売するPC向けのOS。対応するプラットフォームはMac OS X以前では最初は[[W:MC68000|MC68000]]後に[[w:PowerPC|PowerPC]]のみである。Mac OS Xで初めてPC/AT互換機、x86(Intel製CPUのみ)プラットフォームへの対応がなされたが、Appleが販売するコンピュータ以外のPC/AT互換機では動作しない。ユーザー主体の操作性を重視している。その登場はWindowsよりも早く、1984年の最初のシステムからすでにGUI(文字だけでなく、アイコンなどの画像や映像などで視覚的に分かりやすくした操作環境)を搭載していた。2001年にMac OS Xがリリースされたが、これは従来のMac OSとは仕様が大きく異なるものとなっている。
一般ビジネス用としてのシェアはWindowsに全く及ばないが、グラフィックデザイン、音楽、映画など、芸術・コンテンツ産業といった、いわゆる「クリエイティブ」な分野では一定の支持を得ており、また家庭用としても根強いユーザーを確保している。2006年、プロセッサのIntel製への全面移行に伴い、起動時にMac OS XとWindowsを選択したりあるいはMac OS XとWindowsを同時に使用できる機能(ブートキャンプ)が実用化、Windows専用PCからの乗り換えを検討するユーザーが増え始めた。また、Mac OS XはBSD系Unix(後述)ベースになっており、その中核部分(カーネル)は[[w:オープンソース|オープンソース]]OSであるFreeBSDをもとにして開発されている(Mac OSは、オープンソースの Darwin と、非オープンソースのコンポーネントから構成されている)。 そのため、Unix系のコマンドがマックOS上でも使用できる場合も多く、このようなUnixとマックとの親和性の高さから、Unix系 OSのプログラマーが、Mac OS X環境でUnixアプリケーションのプログラムを開発する例も見られる。
大まかに次のような変化をたどる。
{| class="wikitable" style="text-align:center; max-width:535px; font-size:90%; margin-left:1.5em"
|+ Mac OS / macOS の譜系
|-
! Classic 系
! 日本語OS
! Mac OS X → macOS
|-
| Macintosh System Software
|
|
|-
| System Software 1.0
| 漢字Talk 1.0
|
|-
| System Software 6.1
| 漢字Talk 6
|
|-
| System Software 7
| 漢字Talk 7
|
|-
| System Software 7.5
| 漢字Talk 7.5
|
|-
| Mac OS 7.6
| ←(呼称を ''Mac OS'' へ統合)
|
|-
| Mac OS 8.0
|
|
|-
| Mac OS 8.5
|
|
|-
| Mac OS 9
|
|
|-
| Mac OS 9.1
|
| Mac OS X 10.0 (Cheetah)
|-
| Mac OS 9.2.2
|
| Mac OS X 10.1 (Puma)
|-
|
|
| Mac OS X 10.2 (Jaguar)
|-
|
|
| Mac OS X 10.3 (Panther)
|-
|
|
| Mac OS X 10.4 (Tiger)
|-
|
|
| Mac OS X 10.5 (Leopard)
|-
|
|
| Mac OS X 10.6 (Snow Leopard)
|-
|
|
| Mac OS X 10.7 Lion
|-
|
|
| OS X 10.8 Mountain Lion
|-
|
|
| OS X 10.9 Mavericks
|-
|
|
| OS X 10.10 Yosemite
|-
|
|
| OS X 10.11 El Capitan
|-
|
|
| macOS 10.12 Sierra
|-
|
|
| macOS 10.13 High Sierra
|-
|
|
| macOS 10.14 Mojave
|-
|
|
| macOS 10.15 Cataina
|-
|
|
| macOS 11.0 Big Sur
|-
|
|
| macOS 12.0 Monterey
|-
|
|
|macOS 13.0 Ventura
|-
|
|
|macOS 14.0 Sonoma
|}
※ Mac OS X Server 1.0 があるが、この製品は Mac OS X とは異なるコードベースの製品で互換性はなく、他方 Mac OS X Server 10.x は Mac OS X と互換性があった。
2001年登場の Mac OS 9.2.2(コードネーム:LU1) を最後に、登場以来の系統(上記の Classic 系)の Mac OS の開発は終了した。
Mac OS X は当初から多言語(英語やフランス語、日本語、中国語など)に対応しており、Classic Mac OS や Windows のような「xx語版」という区別はない。Mac OS X 10.4.5 より、それまでの PowerPC 版に加えて Intel プロセッサ版が登場した。
2020年にリリースされた macOS 11.0 Big Sur からは、Apple内製のM1プロセッサーがサポートするプラットホームに加わった。
=== Unix ===
Unixは、1960年代に米[[w:AT&T|AT&T]]社の[[w:ベル研究所|ベル研究所]]で誕生したオペレーティングシステム(OS)であり、マルチユーザーおよびマルチタスクをサポートするために設計された。Unix自体は今でも利用されているが、その多くはUnixの理念や設計を基にしたさまざまな改良を施したUnix系OSが広く使われている。主なUnix系OSには、BSD系Unix、HP-UX、Solarisなどがある。
Unixの主な特徴は次の通りだ:
* '''マルチユーザー・マルチタスクのサポート''':複数のユーザーが同時にシステムを利用し、同時に複数のタスクを実行可能。
* '''高い移植性''':C言語で実装されており、異なるハードウェアプラットフォームでの運用が容易。
* '''ファイルの抽象化''':ファイルはバイトストリームとして扱われ、さまざまなデータを一貫して扱える。
* '''階層化されたファイルシステム''':単一の木構造により、ファイルやディレクトリが整理されている。
* '''独立したシェル''':OSカーネルから独立して動作するコマンドインタープリターを持つ。
加えて、カリフォルニア大学バークレー校で開発されたBSD(Berkeley Software Distribution)は、以下のような機能を追加した:
* '''デマンドページング式仮想記憶''':必要に応じてメモリをページングし、効率的なメモリ管理を実現。
* '''TCP/IPによるネットワーキングとSocket API''':インターネット通信を標準化し、他のデバイスとの接続を容易にする。
これらの機能はAT&Tにもバックポートされ、広く普及した。
Unixはかつてはミニコンやスーパーミニコンでの利用が中心だったが、その後、ワークステーションやサーバーでの採用が増加した。386BSDの登場により、PCでの利用も可能となったが、当時「UNIXの権利を侵害している」との提訴を受け、配布が停滞した。この隙間を埋めたのがGNU/Linuxであり、後に「UNIXの権利を侵害していない」とされる4.4BSD-LiteをベースにNetBSDやFreeBSDが再実装・リリースされた。
一般ユーザーにおいてはWindowsのシェアが大きいが、IT企業やサーバー、基幹コンピュータの分野では、今なおUnix系OSが重要なシェアを占めている。
=== Linux ===
狭義の「Linux」(リナックス)は、カーネルだけを意味する。Linuxは、[[w:フリーソフトウェア財団|Free Software Foundation(FSF)]]の提供するGNUソフトウェア群などでユーザーランドを補いオペレーティング・システムとして構成されることが多い。
このため、FSFは Linux カーネルにGNUのユーザーランドを組合せてオペレーティング・システムとしているプロダクトを「GNU/Linux」と表記する事を推奨している。オペレーティングシステム全体を「Linux」と呼称するか、それとも「GNU/Linux」と呼称するかは、[[w:GNU/Linux名称論争|論争を引き起こす]]こともある。
オペレーティング・システムとしてのプロダクトは「Linuxディストリビューション」と言うのが厳密な用法である。「Linuxディストリビューション」とは、Linuxカーネルを元に、実用OSとするために多くのアプリケーションの実装を行ったものである。
カーネルにどのようなアプリケーションを加えるかにより、何通りもの構成がありえ、実際にOSとしての構成が何十通りもあるので、それら個々のプロダクトについては「Linuxディストリビューション」と表現することでカーネルとは区別する。
Linuxディストリビューションは、ディストリビューターごとにカスタマイズされて配布されており、[[w:Fedora|Fedora]](フェドラ)、[[w:Ubuntu|Ubuntu]](ウブンツー)、[[w:Debian|Debian]](デビアン)などのディストリビューションがある。
==== Linuxの利点 ====
===== パッケージ管理 =====
Windowsに対するLinuxの大きなアドバンテージは、[[w:パッケージ管理システム|パッケージ管理システム]]が充実していることである(Windowsにも[[W:Windows Package Manager|Windows Package Manager]]や[[W:Chocolatey|chocolatey]]というパッケージマネージャがある)。
オープンソースのソフトウェアは、他のオープンソースのソフトウェアを組み合わせて作られている場合が多い。そのため、特に大きいソフトウェアでは、そのソフトウェアの動作に必要になる別のソフトウェアとして、どんなソフトウェアを準備して導入すればいいかの確認と導入が必要である。
このような確認・導入の作業を「依存関係の解決」という。
この依存関係わ解決のためのソフトウェアが開発されており、[[w:RPM|RPM]](レッドハット系)、dpkg (デビアン系)などの依存関係の解決を自動化するソフトウェアがある。
2022年7月の時点で、macOS 上の類似のソフトウェアとして、[[w:Homebrew (パッケージ管理システム)|Homebrew]]などがある。
また、Linuxの誕生以前からBSD Unixでパッケージ管理システム ports/pkg があり、 パッケージ管理としてはGNU/Linuxは後発である。
===== カスタマイズ =====
Windows, Mac OS Xと大きく異なる点として、Linuxでは広範囲の[[w:カスタマイズ|カスタマイズ]]ができることがあげられる。例えば、LinuxにおいてはGUIは[[X Window System]]が用いられるが、これはオプションであり必須では無い。特に、主にサーバーとして扱う場合には、GUI無しで導入した方がよい場合もあるかも知れない。
===== GNU/Linuxの苦手分野 =====
GNU/Linuxは非常に強力で柔軟なオペレーティングシステムですが、初心者にとっては挑戦的な面もあります。GNU/Linuxの苦手分野として、以下の点が挙げられます。
# '''GUIの操作'''
#: GNU/LinuxのデスクトップGUIは、WindowsやmacOSに比べて直感的ではありません。ファイル操作やアプリケーションの起動など、基本的な操作に馴染むまでに時間がかかる可能性があります。
# '''ドライバのインストール'''
#: WindowsやmacOSに比べ、GNU/Linuxではハードウェアドライバのインストールが面倒な場合があります。特に一般的でないデバイスの場合、対応するドライバを探す必要がある可能性が高くなります。
# '''アプリケーションのインストール'''
#: Windowsのようなアプリストアが標準で用意されていないため、アプリケーションのインストール方法を覚える必要があります。コマンドラインを使ったパッケージ管理システムの使い方を学ぶ必要があります。
# '''コマンドライン操作'''
#: GUIに比べてコマンドラインの操作は効率的ですが、初心者には難しく感じられるかもしれません。コマンドの種類と使い方を1つ1つ覚えていく必要があります。
# '''デュアルブートの設定'''
#: GNU/LinuxとWindowsを同じPCで使いたい場合、デュアルブートの設定が必要になりますが、パーティション分割など複雑な作業が伴います。
GNU/Linuxは非常に柔軟性が高いオペレーティングシステムですが、その分初心者は戸惑うこともあります。しかし、それを乗り越えられれば強力なツールを手に入れることができます。慣れが必要ですが、1つずつ着実に学んでいけば、GNU/Linuxの長所を十分に活用できるようになるでしょう。
===== 具体的な導入法 =====
GNU/Linux の導入方法について詳しく解説します。
===== 前提知識 =====
* GNU/Linux は Unix 系の OS で、オープンソースのカーネルを採用しています。
* ディストリビューション (distro) と呼ばれるバージョンが複数存在し、代表的なものに Ubuntu、CentOS、Fedora などがあります。
* GUI デスクトップ環境とコマンドラインインターフェース (CLI) の両方が利用できます。
===== ハードウェア要件 =====
* 最小限のスペックとしては、1GHz 以上の CPU、512MB 以上の RAM、5GB 以上の空きディスク容量が必要です。
* 一般的には、デュアルコア CPU、2GB 以上の RAM、20GB 以上の空きディスク容量が推奨されます。
* ハードウェアによっては、追加の設定が必要な場合があります (ワイヤレスカードなど)。
* IA(インテルアーキテクチャ)では、かつては x86(32ビットモード)からサポートが始まりましたが、現在ではamd64, x86-64 あるは x64 と称される64ビットモードしかサポートされていません。
===== 導入手順 =====
# '''GNU/Linux ディストリビューションの選択と入手'''
#: Ubuntu、CentOS、Fedora などの distro から好みのものを選び、公式サイトからインストーラ (ISO イメージ) をダウンロードします。
# '''インストーラメディアの作成'''
#: ダウンロードした ISO イメージを USB メモリやDVD に書き込みます。
# '''インストール方式の選択'''
#* デュアルブート: Windows とGNU/Linux を共存させる
#* 完全インストール: ディスクを完全にGNU/Linuxに置き換える
# '''BIOS/UEFI 設定の変更'''
#: 起動時に特定のキー (F2、F12 など) を押し、USB メモリやDVD からの起動を許可する設定を行います。
# '''GNU/Linux インストーラの起動'''
#: 作成したインストーラメディアから起動し、インストーラを実行します。
# '''インストール手順に沿って設定'''
#: インストーラのウィザードに沿って、ディスク領域の確保、ユーザ情報の設定、パスワード設定などを行います。
# '''インストールの完了'''
#: インストールが終了したら再起動します。インストール直後はシステムの初期設定などが必要な場合があります。
===== 仮想環境への導入 =====
物理マシンへのインストールが難しい場合は、仮想マシン (VM) 上で GNU/Linux を動作させることができます。
* VirtualBox、VMware などの仮想化ソフトウェアをホストOS (Windows など) にインストール
* 仮想マシンを新規作成し、GNU/Linux の ISOイメージをマウント
* 上記の「導入手順」と同様にインストールを進める
Windows と GNU/Linux の切り替えが容易で、リソースを分けて利用できるため、安全で手軽な方法です。
以上が GNU/Linux の導入手順の概要となります。詳細は distro やハードウェア構成に依存しますので、公式ドキュメントも参照するとよいでしょう。
== アプリケーションとは ==
アプリケーションは、しばしば「応用ソフト」と呼ばれ、「基本ソフト」であるOSとの対比される。OSがコンピュータの動作における基本的な機能やシステムを提供するソフトウェアであるのに対し、アプリケーションはOSの提供するものを土台として、より専門性に特化した機能を追加・提供するためのソフトウェアである。OSに'''インストール'''することで、使用することができる。
アプリケーションはOSに依存するため、OSの種類によってアプリケーションの対応状況は異なり、そのアプリケーションがサポートしていないOSで使用することはできない。例えば、Microsoftt 社の Word 2000というソフトはWindows用であり、MacやUnixでは使えない。Mac用にはMicrosoftから Word 2004 for Macというソフトが販売されているが、こちらは Windows や Unix では使えない、などといった具合である。
== アプリケーションの種類 ==
以下に、代表的なアプリケーションの種類と主なソフトを示す。
=== ユーティリティソフト ===
OSが提供している機能や、他のアプリケーションへのサポート的な役割を果たすソフト。代表的な機能としては、ウイルスチェック、メモリの使用状況やクリーンアップ、ハードウェア情報の表示など。
* '''ウイルスチェックソフト'''
:コンピュータウイルスが入ってこないか、または入っていないか監視するソフト。自動設定しておけば、毎日決まった時間にコンピュータ内をチェックすることもできる。基本的に、メールの送受信やファイルのダウンロードなど、ウイルスが入る可能性のある状況になると自動的にチェックを行ったりする。
:ソフトとしては、Windows用ならウイルスバスター、Norton Anti Virus(通称「ノートン」)、Virus Scan、AVG(フリー版あり)など
Linuxでは、あまり用意されていない(少なくとも、家電屋にはLinux用のウイルス対策ソフトウェアは売ってない)。
* '''デスクトップ環境'''
:PC-Unix上では[[w:GNOME|GNOME]]、[[w:KDE|KDE]]などのソフトウェアを組み合わせてGUI環境を構築するようになっており、これらのソフトウェアを「デスクトップ環境」という。
:デスクトップ環境の中身は、[[w:ランチャー|ランチャー]]、ファイル管理などのツールを組み合わせたものと言われる。Windows、Mac OSでは、これらの機能がOS付属であるので、一般ユーザーが「デスクトップ環境」という一般名詞を特に意識することは少ない。
* '''パッケージ管理'''
:各ソフトウェアのインストールやアンインストールを行うソフトウェアであるが、ソフトウェアのアップデートにも用いられる。
:種類にもよるが、ソフトウェアのインストールに必要なパッケージをパッケージごとの依存関係を考えてインストールするものもある。ライブラリやソフトウェアの重複がなくなるので、インストールのデータ量が少なくてすみ、また、インストールに必要な時間も短い。
:代表的なものに。[[w:Fink|Fink]]、[[w:RPM|RPM]]、dpkg([[w:Debian|Debian]]を参照)などがある。
=== オフィスソフト ===
日本では、下記に述べる、ワープロソフト、表計算ソフト、プレゼンテーションソフトをまとめて、「オフィスソフト」という。
==== ワープロソフト ====
印刷までを想定して、文書を作成できるソフト。文字の種類や大きさ、色を変えたり、表や画像を挿入したりすることができる。
:[[w:Microsoft Word|Word]](ワード)、[[w:一太郎|一太郎]](いちたろう)、Writer(ライター)など。
『Word』は、マイクロソフト社の製品のワープロソフトである。
リブレオフィスWriter(ライター)は、無料である。
==== 表計算ソフト ====
表計算ソフトは、計算式を用いて表計算をできるソフトである。集計表や家計簿を作成したり、式に基づいてグラフを挿入したりできるソフト。
:[[Microsoft Excel|Excel]](エクセル)、Lotus1-2-3(ロータス)、Calc(カルク)、[[w:三四郎 (表計算ソフト)|三四郎]]など。
『Excel』は、マイクロソフト社の製品の表計算ソフトである。
リブレオフィスCalc(カルク)は、無料である。
==== プレゼンテーションソフト ====
プレゼンテーションに特化しており、1ページ1ページを視覚的に表現することに特化されている。静止画的な修飾だけでなく、アニメーション機能なども搭載されている。
[[w:Microsoft PowerPoint|PowerPoint]](パワーポイント)、Impress(インプレス)、Agreeなど。
Impress(インプレス)は、無料である。
==== まとめ ====
マイクロソフト社が、マイクロソフト『Office』のような名前で、Windows用のオフィスソフトを販売している(基本的に有料)。
Linux では基本的に、マイクロソフト『Office』は動作せず、使えない。
そして、マイクロソフト『Office』には、上記のように『Word』『Excel』『Power Point』などがある。
マイクロソフト『Office』とは別に、オープンソースのコミュニウティの開発する無料の『リブレオフィス』(Libre Office)というオフィスソフトがある。
リブレオフィスには上記のように『Writer』『Calc』などがある。
=== データベースソフト ===
データベースを作成し、多くの情報を管理しやすくするソフト。また、作成したデータベースの保守・管理・運用なども含む。
[[w:Microsoft Access|Access]](アクセス)、[[w:MySQL|MySQL]](マイ エスキューエル)、[[w:PostgreSQL|PostgreSQL]]、Baseなど。
企業などで用いられる大規模データベースシステムでは、米国[[w:Oracle|Oracle]](オラクル)社のデータベース製品が主流となっている。
=== 画像編集ソフト ===
既存の画像などを加工したり、一から画像を作るためのソフト。様々な種類があり、用途に応じて使い分けられている。
映像関係の企業などでブランド的に用いられているのは、米国アドビ社の[[w:Adobe Photoshop|Photoshop]](フォトショップ)、[[w:Adobe Illustrator|Illustrator]](イラストレーター)などだが、高価であり、数十万円ほどをする。
米Adobe社(アドビ社)が、PhotoshopとIllustratorを生産販売している。
アドビの製品が高価なこともあり、他の会社が、より低価格な製品を出している。
画像編集ソフトは、他にも多々ある。[https://www.hitpaw.jp/photo-enhancer.html HitPaw Photo Enhancer]は、AIを使ったモノクロ写真の自動カラー処理や低解像度の画像の高解像度化を楽しむことができる画像高画質化ソフトの一つである。
[https://picwish.com/jp/ PicWish]、Remove bg、[https://vanceai.com/ja/ VanceAI]、[https://www.fotor.com/jp/ Fotor]などのオンライン画像編集ツールもある。
==== ベクター画像 ====
線や円などといった、図形の情報によって画像を記録する方式の画像形式をベクター画像という。
SVGファイル形式などが、ベクター画像である。
* Adobe Illustrator(イラストレーター)
* inkscape(インクスケープ)
inkscape(インクスケープ)はオープンソースの無料ソフトである。
==== ラスター画像 ====
ビットマップ形式やJPEG形式の画像をラスター画像という。
* Photoshop(フォトショップ)
* [[GIMP/目次|GIMP]](ギンプ)
GIMPは無料ソフトである。
=== ウェブブラウザ ===
ウェブブラウザ(Web Browser)は、インターネット上のウェブページやコンテンツを閲覧するためのソフトウェアアプリケーションです。主な機能は、ウェブページの表示、リンクのクリックによるページ遷移、テキストや画像、動画などのコンテンツの表示、フォームの入力、ウェブサイトのブックマーク管理などです。
ウェブブラウザは、ユーザーがインターネットを閲覧するための窓口であり、以下のような特徴や機能を持っています:
# '''ウェブページの表示:''' HTMLやCSS、JavaScriptなどのウェブ技術を解釈し、ウェブページをユーザーに見やすく表示します。
# '''リンクの遷移:''' ユーザーがクリックしたリンクを解析し、関連する新しいウェブページやコンテンツに遷移します。
# '''ブックマーク管理:''' ユーザーが気に入ったウェブページを保存したり、整理したりするためのブックマーク機能を提供します。
# '''セキュリティ機能:''' ウェブブラウザはセキュリティ機能を備えており、安全な通信(HTTPS)やポップアップブロッカー、フィッシングサイトの警告などを提供します。
# '''プラグインや拡張機能:''' 多くのウェブブラウザは、ユーザーが機能を拡張するためのプラグインや拡張機能をサポートしています。広告ブロッカーやパスワードマネージャーなどが挙げられます。
主要なウェブブラウザとしては、[[W:Google Chrome|Google Chrome]]、[[W:Mozilla Firefox|Mozilla Firefox]]、[[W:Microsoft Edge|Microsoft Edge]]、[[W:Apple Safari|Apple Safari]]、[[W:Opera|Opera]]などがあります。これらのブラウザは、それぞれ異なる特徴や性能を持ち、ユーザーのニーズや環境に応じて選択されます。
=== アプリケーション・ソフトウェアのクラウド・サービス化 ===
近年、従来のスタンドアロンで動作していたアプリケーションがクラウドベースに移行し、Webブラウザを介して利用されるようになっています。この動向は、クラウドコンピューティングの普及やインターネットの高速化、そしてユーザーの利便性の向上によって推進されています。
従来のアプリケーションは、ユーザーのローカルマシン上で動作し、データや処理はその端末に保存されていました。しかし、クラウドベースのアプリケーションでは、データや処理がクラウド(インターネット上のサーバー)に保存・処理され、ユーザーはブラウザを通じてそのアプリケーションにアクセスします。
このクラウドベースのアプリケーションの利点は次のようなものがあります:
# '''利便性とアクセス性:''' ユーザーはインターネットに接続された任意のデバイスからアプリケーションにアクセスできます。特定の端末に依存せず、場所や時間を問わず利用できます。
# '''データの集中管理:''' データはクラウド上に保存されるため、ユーザーはデータのバックアップやセキュリティをクラウドプロバイダーに任せることができます。
# '''更新とメンテナンスの容易性:''' アプリケーションはクラウド上で管理されるため、新機能の追加やセキュリティパッチの適用などの更新が効率的に行われます。
# '''コスト削減:''' ユーザーは自身の端末に高性能なハードウェアやソフトウェアを必要とせず、クラウド上のリソースを利用するため、コストを削減できます。
代表的なクラウドベースのアプリケーションには、[[W:Google Workspace|Google Workspace]] (Gmail、Google Docsなど)、[[W:Microsoft 365|Microsoft 365]] (Outlook、Office Onlineなど)、[[W:Adobe Creative Cloud|Adobe Creative Cloud]]、[[W:Salesforce|Salesforce]]、[[W:Slack|Slack]]、[[W:Zoom|Zoom]]などがあります。これらのアプリケーションは、ブラウザを介して利用され、ユーザーに柔軟性と効率性を提供しています。
==== 購入からサブスクリプションへ ====
アプリケーション・ソフトウェアのクラウド化の文脈における「買い取りからサブスクリプションへ」の移行は、ソフトウェアの所有権と利用形態の変化を意味しています。
; 従来のモデル:
* ユーザーは一括でソフトウェアを購入(買い取り)し、永続的にライセンスを所有
* メジャーアップデートは別途購入が必要
* ユーザーは自身のハードウェア上にソフトウェアをインストール
; サブスクリプションモデル:
* ユーザーは月額・年額課金でソフトウェアをレンタルする形になる
* ソフトウェアベンダーがクラウド上で最新バージョンを常に提供
* ユーザーはインターネット経由でクラウド上のアプリにアクセス
この変化により、以下のようなメリット・デメリットが生じます。
; メリット:
* ユーザーは最新機能を常に利用でき、環境を最新に保つ手間が省ける
* ベンダーは継続的な収入源が得られ、開発とアップデートが効率化
* デバイスを選ばずにアクセスできる
; デメリット:
* ユーザーは永続的な所有権を持てず、サブスクリプション継続が条件になる
* 長期的にはコストが高くなる可能性がある
* インターネット接続が前提となるため、オフライン環境では利用できない
つまり、一過性の買い取りから、常に最新の状態を保ち続けるサブスクリプションモデルへの転換が、クラウドサービス化の中心的な変化となっています。
=== 連絡ツール ===
==== メールソフト ====
メールサーバからメールを受け取ったり、メールをメールサーバーに送信するソフトウェアである。
:[[w:Windows Mail|Windows メール]]、[[w:Mozilla Thunderbird|Thunderbird]](サンダーバード)、[[w:Shuriken|Shuriken]]など。
Thunderbird を提供している団体は、Firefoxを提供している団体と同一で、モジラ(Mozilla)財団である。
==== インスタント・メッセンジャー ====
[[w:コンピューターネットワーク|コンピューターネットワーク]](主に[[インターネット]])上でリアルタイムコミュニケーションを実現する[[w:アプリケーション|アプリケーション]]。
:[[w:ICQ|ICQ]]など。
==== VoIP ====
[[w:IP電話|IP電話]]を行うためのソフトウェア。
:[[w:Skype|Skype]]など。
=== 芸術作品の創作 ===
==== DTM ====
PC上で作曲を行う作業をDTM(ディーティーエム)という。'''D'''esk'''t'''op '''M'''usic の略である。楽譜データを扱えるソフトウェアであることが多い。
:[[w:en:Rosegarden|Rosegarden]](リンク先は英語)など。
そもそも現在、音楽制作では、すでにDTMソフトウェアに、主要な楽器の音で、それぞれの音階の音が、ソフトウェアに内蔵されている。
DTM作曲家は、それらのソフトウェア内蔵音を組み合わせて、作曲をしているのである。
==== DTP ====
PC上で書籍の編集を行う作業をDTP(ディーティーピー)という。'''D'''esk'''t'''op '''P'''ublishing の略である。PC上で出版物の内容データを扱うソフトウェア。操作性はワープロソフトと似ているが、DTPソフトのほうがレイアウトの自由度が高い。
:[[w:Adobe InDesign|Adobe InDesign]]、[[w:Scribus|Scribus]]など。
==== 3Dモデラー ====
3Dの[[w:ポリゴン|ポリゴン]]データを作ることを一般に「3Dモデリング」といい、そのためのソフトウェアを3Dモデラ―という。
:[[Blender]]、[[w:LightWave|LightWave]]など。
=== 動画 ===
==== 動画再生 ====
動画を再生するためのソフトウェアを、動画プレイヤーと呼んだり、ビデオプレイヤーなどという。
:[[w:VLC|VLC]]、[https://www.hitpaw.jp/video-converter.html HitPaw Video Converter]など。
==== 動画編集 ====
動画を編集するソフトウェア。
:[[w:iMovie|iMovie]]、Kinoなど。
==== 動画高画質 ====
低解像度動画の画質を上げるソフトウェア。
:[https://4ddig.tenorshare.com/jp/video-enhancer.html 4DDiG AI動画高画質化], [https://www.hitpaw.jp/hitpaw-video-enhancer.html HitPaw Video Enhancer], [https://anyrec.io/ja/video-enhancer/ AnyRec Video Enhancer], [https://www.avclabs.jp/video-enhancer-ai.html AVCLabs Video Enhancer AI], [https://www.topazlabs.com/topaz-video-ai Topaz Video Enhance AI]など。
=== プログラミング ===
==== IDE(統合開発環境)====
[[プログラミング]]を助けるためのソフトウェア。
:[[w:VisualStudio|VisualStudio]]、[[w:Eclipse|Eclipse]]など。
また、VisualStudioはコンパイラ、[[w:デバッガ|デバッガ]]、[[w:GUIビルダ|GUIビルダ]]を含んでいる。
==== コンパイラ ====
[[w:ソースコード|ソースコード]]を実行形式に変換するソフトウェア。個別のプログラム言語に対して、それぞれのプログラム言語用のコンパイラが0種類<ref>インタープリターしか言語処理系がない言語もある。</ref>以上ある。
Windowsの場合、マイクロソフト社の提供するVisual Studio を導入すると(現在(2019年)は無料版がある)、いっしょにWindows用プログラムのコンパイラが付いてくる。
そのほかの団体の提供するコンパイラもあり、Unix系のOSので使える
:[[w:GCC|GCC]](C言語系の言語のコンパイラ)
:[[w:clang|clang\]](C言語系の言語のコンパイラ)
などもある。
==== デバッガ ====
実行形式やバイトコードの動作を確認するソフトウェア。バグ(不具合)を取り除く作業をデバッグといい、そのためのソフトウェアなので、デバッガという。
Windowsの場合、Visual Studio にデバッガも付いてくる。
Unix系のOSでは、GCCを提供する団体と同一の団体であるGNU(グニュー、団体名)によるデバッガの
:[[w:GDB|GDB]]
がある。
==== インターフェースビルダー ====
GUIの制作の際、GUIは、いくつかのパーツに分けられており、そのGUI部品をウィジェット(コントロール)という。ウィジェットを組み合わせてGUIを作るソフトウェアをインターフェースビルダーという。
:[[w:glade|glade]]など。
=== サーバー ===
他のプロセス(クライアント)の要求を処理するソフトウェア。クライアントは同じPC上にあることもあるが、他のPC上にあってもよい。例えばWebサーバはネットワーク越しにクライアント(Webブラウザー)からの要求を受けることがある。
==== [[w:Webサーバ|HTTPサーバー]] ====
ホームぺージをクライアントに送るサーバー。このWikibooksのページもHTTPサーバーで運用されている。
* Windows
:[[w:Internet Information Services|Microsoft Internet Information Services (IIS)]]
* Linux
:[[w:Apache|Apache HTTP Server (アパッチ エイチティーティーピー サーバー)]]
==== [[w:FTPサーバー|FTPサーバー]] ====
ファイルをクライアントと送受信するサーバー。ファイル保存、ホームページファイルのアップロードで運用されている。
* Windows
:[[w:Internet Information Services|Microsoft Internet Information Services (IIS)]]
* Linux
:[[w:ProFTPD|ProFTPD]]
==== [[w:Secure_Shell|SSHサーバー]] ====
暗号や認証の技術を利用して、安全にリモートコンピューターと通信するサーバー。
* Linux
:[[w:OpenSSH|OpenSSH (Open Secure Shell)]]
==== [[w:メールサーバー|メールサーバー]] ====
多く運用されているプロトコルはPOP3(受信)、SMTP(送信)、IMAP(サーバー同期型)で、個人で運用すると取得ドメインの元に限って自由な利用ができる。
* Windows
:[[w:Internet Information Services|Microsoft Internet Information Services (IIS)]]
* Linux
:[[w:Postfix|Postfix (ポスト・フィックス)]]
{{NDC|007.63|OSとあふりけしよん}}
[[Category:情報技術]]
[[Category:計算機科学]]
joimfypowf988ucqaldh143felzymw6
X86アセンブラ/GASでの文法
0
15766
262871
225193
2024-11-01T05:25:46Z
Ef3
694
/* CPUID命令を実行する */ コンパイラ更新
262871
wikitext
text/x-wiki
== はじめに ==
GAS(GNU Assembler)は、GNUプロジェクトによって開発されたアセンブラであり、GNU Binutilsの一部として配布されています。Binutilsには、アセンブラ(GAS)、リンカー(ld)、およびオブジェクトファイル操作ツール(nm、objdump、sizeなど)が含まれています。
GASは、x86、ARM、PowerPC、MIPSなど、多くのアーキテクチャをサポートしています。GASは、AT&T構文とIntel構文の両方をサポートしていますが、AT&T構文がデフォルトです。
一方、GCCは、GNU Compiler Collectionの略で、C、C ++、Objective-C、Fortran、Ada、およびその他の言語のコンパイラとして使用されます。GCCは、オブジェクトファイルを生成するためにGASを使用することができますが、GASに依存しない方法でもオブジェクトファイルを生成することができます。
GASは、低レベルのアセンブリ言語を書く必要がある場合や、特定のアーキテクチャの詳細な制御が必要な場合に便利です。また、GASを使用することで、特定のCPUアーキテクチャに最適化されたアセンブリ言語を生成することができます。
GASは、GNU/Linuxのディストリビューションをお使いの方は、すでにシステムにインストールされていることが多いです。Windows オペレーティングシステムのコンピュータを使用している場合は、[https://www.cygwin.com/ Cygwin]または[https://www.mingw.org/ Mingw]をインストールすることで、GAS およびその他の有用なプログラミングユーティリティを利用することができます。
== インテル表記、AT&T表記、およびPlan9表記 ==
インテル表記、AT&T表記、およびPlan9表記は、x86/x64アセンブリ言語で使用される3つの主要な表記法です。これらは、アセンブリコードの記述方法を規定する規則であり、処理系によって異なる場合があります。
以下に、各表記法についての説明と、各表記法でのMOVとADD命令のコード例を示します。
;インテル表記
:インテル表記は、WindowsアセンブラやMicrosoft Visual Studioで使用されます。この表記法では、ソースと宛先の順序がAT&T表記と異なります。
:<syntaxhighlight lang=asm>
mov eax, 1 ; eaxに1を格納する
add ebx, eax ; eaxの値をebxに加算する
</syntaxhighlight>
;AT&T表記
:AT&T表記は、GNUアセンブラやUnix系OSで使用されます。この表記法では、ソースと宛先の順序がインテル表記に対して逆転しています。
:<syntaxhighlight lang=asm>
movl $1, %eax # %eaxに1を格納する
addl %eax, %ebx # %eaxの値を%ebxに加算する
</syntaxhighlight>
;Plan9表記
:Plan9表記は、Plan 9オペレーティングシステムで使用されます。この表記法は、AT&T表記と非常によく似ていますが、いくつかの構文の違いがあります。
:<syntaxhighlight lang=asm>
MOVW $1, AX # AXに1を格納する
ADDL AX, BX # AXの値をBXに加算する
</syntaxhighlight>
処理系には以下のようなものがあります:
* AT&T表記: AT&T Assembler (as), GNU Assembler (GAS)
* インテル表記: Microsoft Macro Assembler (MASM), Netwide Assembler (NASM), Turbo Assembler (TASM)
* Plan9表記: Plan9 Assembler (8as), [[Go]] のビルトインアセンブラ
ただし、注意が必要なのは、アセンブラによっては複数の表記法に対応している場合があることです。また、表記法によっては、同じ命令でもオペランドの記述方法が異なる場合があります。
この記事の例題は、GNU ASで使用されているAT&Tアセンブリ構文を使用して作成されています。
=== C言語のコードからアセンブリコードを生成する ===
アセンブリ言語は、CPUが実行する演算に直接対応しているため、注意深く書かれたアセンブリ・ルーチンは、Cなどの高級言語で書かれた同じルーチンよりもはるかに速く実行できる可能性があります。
その一方で、アセンブリ・ルーチンは、Cで書かれた同等のルーチンよりも多くの労力を要するのが一般的です。
したがって、性能の良いプログラムを素早く書くための典型的な方法は、まず(記述やデバッグが容易な)高級言語でプログラムを書き、次に(性能の良い)アセンブリ言語で選択されたルーチンを書き直すことです。
C言語のルーチンをアセンブリ言語に書き換える最初のステップとしては、Cコンパイラを使ってアセンブリ言語を自動生成するのが良いでしょう。
これにより、正しくコンパイルされたアセンブリファイルが得られるだけでなく、アセンブリルーチンがあなたの意図した通りに動作することが保証されます<ref>これは、コンパイラにバグがないことと、さらに重要なこととして、「あなたが書いたコードがあなたの意図を正しく実装していること」を前提としています。また、コンパイラはコードを最適化するために、低レベルの操作の順序を並べ替えることがあります。これにより、コードの全体的なセマンティクスは維持されますが、アセンブリの命令フローがアルゴリズムのステップと正確に一致しない可能性があります。</ref>。
ここでは、GAS アセンブリ言語の構文をしるために、GNU C コンパイラを使用してアセンブリ コードを生成します。
ここでは、C言語で書かれた古典的な「Hello, world」プログラムを紹介します。
;hello.c:<syntaxhighlight lang="c">
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
}
</syntaxhighlight>
これを「hello.c」というファイルに保存して、プロンプトで次のように入力します。
<syntaxhighlight lang="bash">
$ gcc -o hello_c hello.c
</syntaxhighlight>
これで、Cファイルがコンパイルされ、"hello_c "という実行ファイルが作成されます。エラーが発生した場合は、"hello.c "の内容が正しいことを確認してください。
これで、プロンプトで次のように入力できるようになります。
:<syntaxhighlight lang="bash">
$ ./hello_c
Hello, world!
</syntaxhighlight>
「hello.c」が正しく入力され、目的の動作をすることがわかったので、それに相当する64ビットx86アセンブリ言語を生成してみましょう。プロンプトで次のように入力します。
<syntaxhighlight lang="bash">
$ gcc -S hello.c
</syntaxhighlight>
これで「hello.s」というファイルが作成されるはずです(「.s」はGNUシステムがアセンブリファイルに与えるファイル拡張子です)。
<syntaxhighlight lang="bash">
$gcc -o hello_asm hello.s
</syntaxhighlight>
(なお、gccはアセンブラ(as)とリンカ(ld)を呼び出してくれます) 次に、プロンプトで次のように入力します。
<syntaxhighlight lang="bash">
$ ./hello_asm
</syntaxhighlight>
このプログラムは、コンソールに「Hello, world!」と同じ様に表示します。驚くことではありませんが、これはコンパイルされたCファイルと同じことをしています。
それでは、「hello.s」の中身を見てみましょう。
;hello.s:<syntaxhighlight lang="asm">
.file "hello.c"
.text
.def __main; .scl 2; .type 32; .endef
.section .rdata,"dr"
.LC0:
.ascii "Hello, world!\0"
.text
.globl main
.def main; .scl 2; .type 32; .endef
.seh_proc main
main:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
subq $32, %rsp
.seh_stackalloc 32
.seh_endprologue
call __main
leaq .LC0(%rip), %rcx
call puts
movl $0, %rax
addq $32, %rsp
popq %rbp
ret
.seh_endproc
.ident "GCC: (GNU) 10.2.0"
.def puts; .scl 2; .type 32; .endef
</syntaxhighlight>
「hello.s」の内容は、インストールされているGNUツールチェインのバージョンによって異なる場合があります。
;コード生成した環境:<syntaxhighlight lang="bash">
$ uname -a
MSYS_NT-10.0-19043 HOSTNAME 3.2.0-340.x86_64 2021-09-08 07:03 UTC x86_64 Msys
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-msys/10.2.0/lto-wrapper.exe
Target: x86_64-pc-msys
Configured with: /home/eguch/git.co/MSYS2-packages/gcc/src/gcc-10.2.0/configure --build=x86_64-pc-msys --prefix=/usr --libexecdir=/usr/lib --enable-bootstrap --enable-shared --enable-shared-libgcc --enable-static --enable-version-specific-runtime-libs --with-arch=x86-64 --with-tune=generic --disable-multilib --enable-__cxa_atexit --with-dwarf2 --enable-languages=c,c++,fortran,lto --enable-graphite --enable-threads=posix --enable-libatomic --enable-libgomp --disable-libitm --enable-libquadmath --enable-libquadmath-support --disable-libssp --disable-win32-registry --disable-symvers --with-gnu-ld --with-gnu-as --disable-isl-version-check --enable-checking=release --without-libiconv-prefix --without-libintl-prefix --with-system-zlib --enable-linker-build-id --with-default-libstdcxx-abi=gcc4-compatible --enable-libstdcxx-filesystem-ts
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.0 (GCC)
</syntaxhighlight>
<code>.file</code>、<code>.def</code>、<code>.ascii</code>のようにピリオドで始まる行は、アセンブラの疑似命令(プロセッサではなくアセンブラに対する命令)です。<code>_main:</code>のように、テキストの後にコロンが続く行は、ラベル、つまりコードの中の名前のある場所です。それ以外の行は、アセンブラの實命令です。
=== アセンブリ言語だけで文字列表示を行う ===
先程例は、アセンブリ言語を使ってはいましたが、printf(3) を使っているのでC言語のランタイムライブラリを利用しています。
ここでは、Linux/X86な環境でLinuxのシステムコールをアセンブリコードから叩く方法で文字列表示を行ってみます。
#アセンブリコードの作成
#:Hello Worldのアセンブリコードは以下のようになります。
#;hello.s:<syntaxhighlight lang=asm>
.section .data
hello:
.ascii "Hello, world!\n"
len = . - hello
.section .text
.globl _start
_start:
movl $4, %eax # writeシステムコールの呼び出し番号をeaxに設定
movl $1, %ebx # 標準出力のファイルディスクリプタをebxに設定
movl $hello, %ecx # 出力する文字列のアドレスをecxに設定
movl len, %edx # 出力する文字列の長さをedxに設定
int $0x80 # システムコールを実行
movl $1, %eax # exitシステムコールの呼び出し番号をeaxに設定
xorl %ebx, %ebx # ステータスコードを0に設定
int $0x80 # システムコールを実行
</syntaxhighlight>
#:上記のコードでは、.data セクションに "Hello, world!\n" という文字列を格納し、 .text セクションでアセンブリコードを書いています。
#アセンブル
#:上記のアセンブリコードを hello.s という名前で保存し、次のコマンドを実行してアセンブルします。
#:<syntaxhighlight lang=shell>
$ as -o hello.o hello.s
</syntaxhighlight>
#:これにより、アセンブリファイル hello.s からオブジェクトファイル hello.o が作成されます。
#リンク
#:次に、オブジェクトファイル hello.o をリンクして実行可能なファイルを作成します。次のコマンドを実行します。
#:<syntaxhighlight lang=shell>
$ ld -s -o hello hello.o
</syntaxhighlight>
#:これにより、オブジェクトファイル hello.o から実行可能ファイル hello が作成されます。
#実行
#:最後に、以下のコマンドで実行可能ファイルを実行します。
#:<syntaxhighlight lang=shell>
$ ./hello
</syntaxhighlight>
#:すると、"Hello, world!" という文字列が標準出力に出力されます。
これで、Cのランタイムライブラリに依存せずに文字列を表示できました。
ただし、このコードはLinuxのシステムコールに依存しているのでLinux/X86の環境でしか実行することができず、Windows、macOS、FreeBSDなどのUNIXでは実行できません。
=== CPUID命令を実行する ===
X86には、実行時にプログラムから「いまどんなCPUで走っているか?」を問い合わせる命令 [[W:CPUID|CPUID]] があります。
CPUID命令は、それ自体が世代を経るごとに拡張されていますが、一番基本的なファンクション「ベンダーIDを返す」を実行してみます。
CPUID命令は、標準C言語では生成できないのでアセンブラーの出番です。
まず、雛形となるC言語のソースコードを用意します。
;ccpuid.c:<syntaxhighlight lang="c">
#include <stdint.h>
#include <stdio.h>
void cpuid_0(char vendor_id[12 + 1]) {
vendor_id[12] = 0;
int32_t *p = (int32_t *)vendor_id;
p[0] = *(int32_t *)"TEST";
p[1] = *(int32_t *)"test";
p[2] = *(int32_t *)"TEXT";
}
int main(void) {
char vendor_id[12 + 1];
cpuid_0(vendor_id);
printf("VendorID=\"%s\"\n", vendor_id);
}
</syntaxhighlight>
main() はこのまま使い、cpuid_0() の部分に細工することになります(別ファイルとするのが筋なのですが、分割コンパイルの説明が長くなりC/アセンブラーインターフェースの部分がぼやけるので、分割はしませんでした)。
ccpuid.c を コンパイルして ccpuid.s を得ます。
:<syntaxhighlight lang="shell">
% clang -S -O ccpuid.c
</syntaxhighlight>
-O は蛇足なのですが、変更する箇所を発見しやすくするために加えました。
;ccpuid.s:<syntaxhighlight lang="asm" highlight="15-17" line>
.text
.file "ccpuid.c"
.globl cpuid_0 # -- Begin function cpuid_0
.p2align 4, 0x90
.type cpuid_0,@function
cpuid_0: # @cpuid_0
.cfi_startproc
# %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
movb $0, 12(%rdi)
movabsq $8391162081026721108, %rax # imm = 0x7473657454534554
movq %rax, (%rdi)
movl $1415071060, 8(%rdi) # imm = 0x54584554
popq %rbp
.cfi_def_cfa %rsp, 8
retq
.Lfunc_end0:
.size cpuid_0, .Lfunc_end0-cpuid_0
.cfi_endproc
# -- End function
.globl main # -- Begin function main
.p2align 4, 0x90
.type main,@function
main: # @main
.cfi_startproc
# %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $16, %rsp
movb $0, -1(%rbp)
movabsq $8391162081026721108, %rax # imm = 0x7473657454534554
movq %rax, -13(%rbp)
movl $1415071060, -5(%rbp) # imm = 0x54584554
leaq -13(%rbp), %rsi
movl $.L.str.3, %edi
xorl %eax, %eax
callq printf
xorl %eax, %eax
addq $16, %rsp
popq %rbp
.cfi_def_cfa %rsp, 8
retq
.Lfunc_end1:
.size main, .Lfunc_end1-main
.cfi_endproc
# -- End function
.type .L.str.3,@object # @.str.3
.section .rodata.str1.1,"aMS",@progbits,1
.L.str.3:
.asciz "VendorID=\"%s\"\n"
.size .L.str.3, 15
.ident "FreeBSD clang version 18.1.6 (https://github.com/llvm/llvm-project.git llvmorg-18.1.6-0-g1118c2e05e67)"
.section ".note.GNU-stack","",@progbits
.addrsig
</syntaxhighlight>
15-17行目が文字列を書き換えている部分です。この部分をCPUID命令の呼び出しに書き換えます。
;ccpuid.mod.s:<syntaxhighlight lang="asm" highlight="18-28" line>
.text
.file "ccpuid.c"
.globl cpuid_0 # -- Begin function cpuid_0
.p2align 4, 0x90
.type cpuid_0,@function
cpuid_0: # @cpuid_0
.cfi_startproc
# %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
movb $0, 12(%rdi)
#; movabsq $8391162081026721108, %rax # imm = 0x7473657454534554
#; movq %rax, (%rdi)
#; movl $1415071060, 8(%rdi) # imm = 0x54584554
pushq %rbx
pushq %rcx
pushq %rdx
xorl %eax, %eax
cpuid
movl %ebx, (%rdi)
movl %edx, 4(%rdi)
movl %ecx, 8(%rdi)
popq %rdx
popq %rcx
popq %rbx
popq %rbp
.cfi_def_cfa %rsp, 8
retq
.Lfunc_end0:
.size cpuid_0, .Lfunc_end0-cpuid_0
.cfi_endproc
# -- End function
.globl main # -- Begin function main
.p2align 4, 0x90
.type main,@function
main: # @main
.cfi_startproc
# %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $16, %rsp
movb $0, -1(%rbp)
movabsq $8391162081026721108, %rax # imm = 0x7473657454534554
movq %rax, -13(%rbp)
movl $1415071060, -5(%rbp) # imm = 0x54584554
leaq -13(%rbp), %rsi
movl $.L.str.3, %edi
xorl %eax, %eax
callq printf
xorl %eax, %eax
addq $16, %rsp
popq %rbp
.cfi_def_cfa %rsp, 8
retq
.Lfunc_end1:
.size main, .Lfunc_end1-main
.cfi_endproc
# -- End function
.type .L.str.3,@object # @.str.3
.section .rodata.str1.1,"aMS",@progbits,1
.L.str.3:
.asciz "VendorID=\"%s\"\n"
.size .L.str.3, 15
.ident "FreeBSD clang version 18.1.6 (https://github.com/llvm/llvm-project.git llvmorg-18.1.6-0-g1118c2e05e67)"
.section ".note.GNU-stack","",@progbits
.addrsig
</syntaxhighlight>
CPUID命令は、EBX,EDX,ECXの3つのレジスターの値を破壊するので予めスタックに退去(18-20)してCPUIDに関連するが終わったら復帰しています(26-28)。
EAXにファンクションコードの0をセットし(21)、CPUIDを実行し(22)、EBX,EDX,ECXにセットされた値をmainが用意した領域に書き込んでいます。
;コンパイルと実行:<syntaxhighlight lang="shell">
% clang -o ccpuid ccpuid.mod.s
% ./ccpuid
VendorID="GenuineIntel"
</syntaxhighlight>
== 語順 ==
GASの命令は一般的に、<u>ニーモニック</u> <u>転送元</u> <u>転送先</u>という形式をしています。例えば、次のような'''mov'''命令があります。
<syntaxhighlight lang="asm">
movb $0x05, %al
</syntaxhighlight>
これは、16進数の数値5をレジスタ<var>al</var>にコピーする。
== アドレスオペランドの文法 ==
アドレスを示すオペランドは、最大4個のパラメータを取ることができる。これは<code>ディスプレイスメント(ベースレジスタ, オフセットレジスタ, スケーラ)</code>の形式をとります。
これは、インテル記法での<code>[ベースレジスタ + ディスプレイスメント + オフセットレジスタ * スケーラ]</code>という表記と同じ意味です。
パラメータ注の数値部分のいずれかあるいは両方は省略可能であり、同時に、レジスタ部分の一方は省略可能です。
<syntaxhighlight lang="asm">
movl -4(%rbp, %rdx, 4), %rax # 完全な例: (rbp - 4 + (rdx * 4))のアドレスの内容をeaxに転送する
movl -4(%rbp), %rax # よくある例: スタックの値をraxに転送する
movl (%rcx), %rdx # オフセットのない場合: ポインタの指す内容をレジスタに転送する
leal 8(,%rax,4), %rax # 算術演算の例: raxに4を掛け8を足したアドレスをraxに格納する
leal (%rax,%rax,2), %rax # 算術演算の例: raxの指す値を3倍したアドレスをraxに格納する
</syntaxhighlight>
なお。「#」はWindows版NASMでのコメントアウトの記号です。その行でのコメントアウト以降の文字列は、アセンブルからは除去される。
Linuxなどウィンドウズ以外の場合では、コメントアウト記号がセミコロン「;」になっている場合もあるので、適宜に応用のこと。
== オペレーションサフィックス ==
「pushl」とか「movl」とか、プッシュ命令やムーブ命令のうしろにエル「l」がサフィックスです。
データサイズなどを指定するためにサフィックスを指定する必要がある。
GASのアセンブリ命令では、一般にオペランドがどのサイズのデータを扱うか指定するために、b、s、w、l、q、tのいずれかの文字をオペランドの最後に付ける。これをサフィックスという。
;b: バイト(8ビット)
;s: ショート (16ビット整数)またはsingle(32ビット浮動小数点数)
;w: ワード(16ビット)
;l: ロング(32ビット整数または64ビット浮動小数点数)
;q: クワッド(64ビット)
;t: 10バイト(80ビット浮動小数点数)
サフィックスが指定されていない場合、GASはメモリをオペランドにとる命令はサイズを特定できない。転送先あるいは転送元がレジスタの場合、レジスターオペランドのサイズからサイズを推定できる。
== 他の GAS についての読み物 ==
GNU gas ドキュメントのページで、gas についてもっと知ることができる。
https://sourceware.org/binutils/docs-2.37/as/
* [[Reverse Engineering/Calling Conventions]]
== 脚注および参考文献 ==
<references />
[[en:X86_Assembly/GAS_Syntax]]
[[Category:X86アセンブラ|文法]]
srmzdc5mom29s35dhl4d5lveidaemob
262873
262871
2024-11-01T07:40:57Z
Ef3
694
/* CPUID命令を実行する */ コンパイラを変えたら -O でインライン展開するようになったので、main() にロジックを移動。
262873
wikitext
text/x-wiki
== はじめに ==
GAS(GNU Assembler)は、GNUプロジェクトによって開発されたアセンブラであり、GNU Binutilsの一部として配布されています。Binutilsには、アセンブラ(GAS)、リンカー(ld)、およびオブジェクトファイル操作ツール(nm、objdump、sizeなど)が含まれています。
GASは、x86、ARM、PowerPC、MIPSなど、多くのアーキテクチャをサポートしています。GASは、AT&T構文とIntel構文の両方をサポートしていますが、AT&T構文がデフォルトです。
一方、GCCは、GNU Compiler Collectionの略で、C、C ++、Objective-C、Fortran、Ada、およびその他の言語のコンパイラとして使用されます。GCCは、オブジェクトファイルを生成するためにGASを使用することができますが、GASに依存しない方法でもオブジェクトファイルを生成することができます。
GASは、低レベルのアセンブリ言語を書く必要がある場合や、特定のアーキテクチャの詳細な制御が必要な場合に便利です。また、GASを使用することで、特定のCPUアーキテクチャに最適化されたアセンブリ言語を生成することができます。
GASは、GNU/Linuxのディストリビューションをお使いの方は、すでにシステムにインストールされていることが多いです。Windows オペレーティングシステムのコンピュータを使用している場合は、[https://www.cygwin.com/ Cygwin]または[https://www.mingw.org/ Mingw]をインストールすることで、GAS およびその他の有用なプログラミングユーティリティを利用することができます。
== インテル表記、AT&T表記、およびPlan9表記 ==
インテル表記、AT&T表記、およびPlan9表記は、x86/x64アセンブリ言語で使用される3つの主要な表記法です。これらは、アセンブリコードの記述方法を規定する規則であり、処理系によって異なる場合があります。
以下に、各表記法についての説明と、各表記法でのMOVとADD命令のコード例を示します。
;インテル表記
:インテル表記は、WindowsアセンブラやMicrosoft Visual Studioで使用されます。この表記法では、ソースと宛先の順序がAT&T表記と異なります。
:<syntaxhighlight lang=asm>
mov eax, 1 ; eaxに1を格納する
add ebx, eax ; eaxの値をebxに加算する
</syntaxhighlight>
;AT&T表記
:AT&T表記は、GNUアセンブラやUnix系OSで使用されます。この表記法では、ソースと宛先の順序がインテル表記に対して逆転しています。
:<syntaxhighlight lang=asm>
movl $1, %eax # %eaxに1を格納する
addl %eax, %ebx # %eaxの値を%ebxに加算する
</syntaxhighlight>
;Plan9表記
:Plan9表記は、Plan 9オペレーティングシステムで使用されます。この表記法は、AT&T表記と非常によく似ていますが、いくつかの構文の違いがあります。
:<syntaxhighlight lang=asm>
MOVW $1, AX # AXに1を格納する
ADDL AX, BX # AXの値をBXに加算する
</syntaxhighlight>
処理系には以下のようなものがあります:
* AT&T表記: AT&T Assembler (as), GNU Assembler (GAS)
* インテル表記: Microsoft Macro Assembler (MASM), Netwide Assembler (NASM), Turbo Assembler (TASM)
* Plan9表記: Plan9 Assembler (8as), [[Go]] のビルトインアセンブラ
ただし、注意が必要なのは、アセンブラによっては複数の表記法に対応している場合があることです。また、表記法によっては、同じ命令でもオペランドの記述方法が異なる場合があります。
この記事の例題は、GNU ASで使用されているAT&Tアセンブリ構文を使用して作成されています。
=== C言語のコードからアセンブリコードを生成する ===
アセンブリ言語は、CPUが実行する演算に直接対応しているため、注意深く書かれたアセンブリ・ルーチンは、Cなどの高級言語で書かれた同じルーチンよりもはるかに速く実行できる可能性があります。
その一方で、アセンブリ・ルーチンは、Cで書かれた同等のルーチンよりも多くの労力を要するのが一般的です。
したがって、性能の良いプログラムを素早く書くための典型的な方法は、まず(記述やデバッグが容易な)高級言語でプログラムを書き、次に(性能の良い)アセンブリ言語で選択されたルーチンを書き直すことです。
C言語のルーチンをアセンブリ言語に書き換える最初のステップとしては、Cコンパイラを使ってアセンブリ言語を自動生成するのが良いでしょう。
これにより、正しくコンパイルされたアセンブリファイルが得られるだけでなく、アセンブリルーチンがあなたの意図した通りに動作することが保証されます<ref>これは、コンパイラにバグがないことと、さらに重要なこととして、「あなたが書いたコードがあなたの意図を正しく実装していること」を前提としています。また、コンパイラはコードを最適化するために、低レベルの操作の順序を並べ替えることがあります。これにより、コードの全体的なセマンティクスは維持されますが、アセンブリの命令フローがアルゴリズムのステップと正確に一致しない可能性があります。</ref>。
ここでは、GAS アセンブリ言語の構文をしるために、GNU C コンパイラを使用してアセンブリ コードを生成します。
ここでは、C言語で書かれた古典的な「Hello, world」プログラムを紹介します。
;hello.c:<syntaxhighlight lang="c">
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
}
</syntaxhighlight>
これを「hello.c」というファイルに保存して、プロンプトで次のように入力します。
<syntaxhighlight lang="bash">
$ gcc -o hello_c hello.c
</syntaxhighlight>
これで、Cファイルがコンパイルされ、"hello_c "という実行ファイルが作成されます。エラーが発生した場合は、"hello.c "の内容が正しいことを確認してください。
これで、プロンプトで次のように入力できるようになります。
:<syntaxhighlight lang="bash">
$ ./hello_c
Hello, world!
</syntaxhighlight>
「hello.c」が正しく入力され、目的の動作をすることがわかったので、それに相当する64ビットx86アセンブリ言語を生成してみましょう。プロンプトで次のように入力します。
<syntaxhighlight lang="bash">
$ gcc -S hello.c
</syntaxhighlight>
これで「hello.s」というファイルが作成されるはずです(「.s」はGNUシステムがアセンブリファイルに与えるファイル拡張子です)。
<syntaxhighlight lang="bash">
$gcc -o hello_asm hello.s
</syntaxhighlight>
(なお、gccはアセンブラ(as)とリンカ(ld)を呼び出してくれます) 次に、プロンプトで次のように入力します。
<syntaxhighlight lang="bash">
$ ./hello_asm
</syntaxhighlight>
このプログラムは、コンソールに「Hello, world!」と同じ様に表示します。驚くことではありませんが、これはコンパイルされたCファイルと同じことをしています。
それでは、「hello.s」の中身を見てみましょう。
;hello.s:<syntaxhighlight lang="asm">
.file "hello.c"
.text
.def __main; .scl 2; .type 32; .endef
.section .rdata,"dr"
.LC0:
.ascii "Hello, world!\0"
.text
.globl main
.def main; .scl 2; .type 32; .endef
.seh_proc main
main:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
subq $32, %rsp
.seh_stackalloc 32
.seh_endprologue
call __main
leaq .LC0(%rip), %rcx
call puts
movl $0, %rax
addq $32, %rsp
popq %rbp
ret
.seh_endproc
.ident "GCC: (GNU) 10.2.0"
.def puts; .scl 2; .type 32; .endef
</syntaxhighlight>
「hello.s」の内容は、インストールされているGNUツールチェインのバージョンによって異なる場合があります。
;コード生成した環境:<syntaxhighlight lang="bash">
$ uname -a
MSYS_NT-10.0-19043 HOSTNAME 3.2.0-340.x86_64 2021-09-08 07:03 UTC x86_64 Msys
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-msys/10.2.0/lto-wrapper.exe
Target: x86_64-pc-msys
Configured with: /home/eguch/git.co/MSYS2-packages/gcc/src/gcc-10.2.0/configure --build=x86_64-pc-msys --prefix=/usr --libexecdir=/usr/lib --enable-bootstrap --enable-shared --enable-shared-libgcc --enable-static --enable-version-specific-runtime-libs --with-arch=x86-64 --with-tune=generic --disable-multilib --enable-__cxa_atexit --with-dwarf2 --enable-languages=c,c++,fortran,lto --enable-graphite --enable-threads=posix --enable-libatomic --enable-libgomp --disable-libitm --enable-libquadmath --enable-libquadmath-support --disable-libssp --disable-win32-registry --disable-symvers --with-gnu-ld --with-gnu-as --disable-isl-version-check --enable-checking=release --without-libiconv-prefix --without-libintl-prefix --with-system-zlib --enable-linker-build-id --with-default-libstdcxx-abi=gcc4-compatible --enable-libstdcxx-filesystem-ts
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.0 (GCC)
</syntaxhighlight>
<code>.file</code>、<code>.def</code>、<code>.ascii</code>のようにピリオドで始まる行は、アセンブラの疑似命令(プロセッサではなくアセンブラに対する命令)です。<code>_main:</code>のように、テキストの後にコロンが続く行は、ラベル、つまりコードの中の名前のある場所です。それ以外の行は、アセンブラの實命令です。
=== アセンブリ言語だけで文字列表示を行う ===
先程例は、アセンブリ言語を使ってはいましたが、printf(3) を使っているのでC言語のランタイムライブラリを利用しています。
ここでは、Linux/X86な環境でLinuxのシステムコールをアセンブリコードから叩く方法で文字列表示を行ってみます。
#アセンブリコードの作成
#:Hello Worldのアセンブリコードは以下のようになります。
#;hello.s:<syntaxhighlight lang=asm>
.section .data
hello:
.ascii "Hello, world!\n"
len = . - hello
.section .text
.globl _start
_start:
movl $4, %eax # writeシステムコールの呼び出し番号をeaxに設定
movl $1, %ebx # 標準出力のファイルディスクリプタをebxに設定
movl $hello, %ecx # 出力する文字列のアドレスをecxに設定
movl len, %edx # 出力する文字列の長さをedxに設定
int $0x80 # システムコールを実行
movl $1, %eax # exitシステムコールの呼び出し番号をeaxに設定
xorl %ebx, %ebx # ステータスコードを0に設定
int $0x80 # システムコールを実行
</syntaxhighlight>
#:上記のコードでは、.data セクションに "Hello, world!\n" という文字列を格納し、 .text セクションでアセンブリコードを書いています。
#アセンブル
#:上記のアセンブリコードを hello.s という名前で保存し、次のコマンドを実行してアセンブルします。
#:<syntaxhighlight lang=shell>
$ as -o hello.o hello.s
</syntaxhighlight>
#:これにより、アセンブリファイル hello.s からオブジェクトファイル hello.o が作成されます。
#リンク
#:次に、オブジェクトファイル hello.o をリンクして実行可能なファイルを作成します。次のコマンドを実行します。
#:<syntaxhighlight lang=shell>
$ ld -s -o hello hello.o
</syntaxhighlight>
#:これにより、オブジェクトファイル hello.o から実行可能ファイル hello が作成されます。
#実行
#:最後に、以下のコマンドで実行可能ファイルを実行します。
#:<syntaxhighlight lang=shell>
$ ./hello
</syntaxhighlight>
#:すると、"Hello, world!" という文字列が標準出力に出力されます。
これで、Cのランタイムライブラリに依存せずに文字列を表示できました。
ただし、このコードはLinuxのシステムコールに依存しているのでLinux/X86の環境でしか実行することができず、Windows、macOS、FreeBSDなどのUNIXでは実行できません。
=== CPUID命令を実行する ===
X86には、実行時にプログラムから「いまどんなCPUで走っているか?」を問い合わせる命令 [[W:CPUID|CPUID]] があります。
CPUID命令は、それ自体が世代を経るごとに拡張されていますが、一番基本的なファンクション「ベンダーIDを返す」を実行してみます。
CPUID命令は、標準C言語では生成できないのでアセンブラーの出番です。
まず、雛形となるC言語のソースコードを用意します。
;ccpuid.c:<syntaxhighlight lang="c">
#include <stdint.h>
#include <stdio.h>
int main(void) {
char vendor_id[12 + 1];
int32_t *p = (int32_t *)vendor_id;
p[0] = *(int32_t *)"TEST";
p[1] = *(int32_t *)"test";
p[2] = *(int32_t *)"TEXT";
printf("VendorID=\"%s\"\n", vendor_id);
}
</syntaxhighlight>
ccpuid.c を コンパイルして ccpuid.s を得ます。
:<syntaxhighlight lang="shell">
% clang -S -O ccpuid.c
</syntaxhighlight>
-O は蛇足なのですが、変更する箇所を発見しやすくするために加えました。
;ccpuid.s:<syntaxhighlight lang="asm" highlight="15-17" line>
.text
.file "ccpuid.c"
.globl main # -- Begin function main
.p2align 4, 0x90
.type main,@function
main: # @main
.cfi_startproc
# %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $16, %rsp
movabsq $8391162081026721108, %rax # imm = 0x7473657454534554
movq %rax, -13(%rbp)
movl $1415071060, -5(%rbp) # imm = 0x54584554
leaq -13(%rbp), %rsi
movl $.L.str.3, %edi
xorl %eax, %eax
callq printf
xorl %eax, %eax
addq $16, %rsp
popq %rbp
.cfi_def_cfa %rsp, 8
retq
.Lfunc_end0:
.size main, .Lfunc_end0-main
.cfi_endproc
# -- End function
.type .L.str.3,@object # @.str.3
.section .rodata.str1.1,"aMS",@progbits,1
.L.str.3:
.asciz "VendorID=\"%s\"\n"
.size .L.str.3, 15
.ident "FreeBSD clang version 18.1.6 (https://github.com/llvm/llvm-project.git llvmorg-18.1.6-0-g1118c2e05e67)"
.section ".note.GNU-stack","",@progbits
.addrsig
</syntaxhighlight>
15-17行目が文字列を書き換えている部分です。この部分をCPUID命令の呼び出しに書き換えます。
;ccpuid.mod.s:<syntaxhighlight lang="asm" highlight="18-28" line>
.text
.file "ccpuid.c"
.globl main # -- Begin function main
.p2align 4, 0x90
.type main,@function
main: # @main
.cfi_startproc
# %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $16, %rsp
#; movabsq $8391162081026721108, %rax # imm = 0x7473657454534554
#; movq %rax, -13(%rbp)
#; movl $1415071060, -5(%rbp) # imm = 0x54584554
pushq %rbx
pushq %rcx
pushq %rdx
xorl %eax, %eax
cpuid
movl %ebx, -13(%rbp)
movl %edx, -9(%rbp)
movl %ecx, -5(%rbp)
popq %rdx
popq %rcx
popq %rbx
leaq -13(%rbp), %rsi
movl $.L.str.3, %edi
xorl %eax, %eax
callq printf
xorl %eax, %eax
addq $16, %rsp
popq %rbp
.cfi_def_cfa %rsp, 8
retq
.Lfunc_end0:
.size main, .Lfunc_end0-main
.cfi_endproc
# -- End function
.type .L.str.3,@object # @.str.3
.section .rodata.str1.1,"aMS",@progbits,1
.L.str.3:
.asciz "VendorID=\"%s\"\n"
.size .L.str.3, 15
.ident "FreeBSD clang version 18.1.6 (https://github.com/llvm/llvm-project.git llvmorg-18.1.6-0-g1118c2e05e67)"
.section ".note.GNU-stack","",@progbits
.addrsig
</syntaxhighlight>
CPUID命令は、EBX,EDX,ECXの3つのレジスターの値を破壊するので予めスタックに退去(18-20)してCPUIDに関連するが終わったら復帰しています(26-28)。
EAXにファンクションコードの0をセットし(21)、CPUIDを実行し(22)、EBX,EDX,ECXにセットされた値を用意した領域に書き込んでいます。
;コンパイルと実行:<syntaxhighlight lang="shell">
% clang -o ccpuid ccpuid.mod.s
% ./ccpuid
VendorID="GenuineIntel"
</syntaxhighlight>
== 語順 ==
GASの命令は一般的に、<u>ニーモニック</u> <u>転送元</u> <u>転送先</u>という形式をしています。例えば、次のような'''mov'''命令があります。
<syntaxhighlight lang="asm">
movb $0x05, %al
</syntaxhighlight>
これは、16進数の数値5をレジスタ<var>al</var>にコピーする。
== アドレスオペランドの文法 ==
アドレスを示すオペランドは、最大4個のパラメータを取ることができる。これは<code>ディスプレイスメント(ベースレジスタ, オフセットレジスタ, スケーラ)</code>の形式をとります。
これは、インテル記法での<code>[ベースレジスタ + ディスプレイスメント + オフセットレジスタ * スケーラ]</code>という表記と同じ意味です。
パラメータ注の数値部分のいずれかあるいは両方は省略可能であり、同時に、レジスタ部分の一方は省略可能です。
<syntaxhighlight lang="asm">
movl -4(%rbp, %rdx, 4), %rax # 完全な例: (rbp - 4 + (rdx * 4))のアドレスの内容をeaxに転送する
movl -4(%rbp), %rax # よくある例: スタックの値をraxに転送する
movl (%rcx), %rdx # オフセットのない場合: ポインタの指す内容をレジスタに転送する
leal 8(,%rax,4), %rax # 算術演算の例: raxに4を掛け8を足したアドレスをraxに格納する
leal (%rax,%rax,2), %rax # 算術演算の例: raxの指す値を3倍したアドレスをraxに格納する
</syntaxhighlight>
なお。「#」はWindows版NASMでのコメントアウトの記号です。その行でのコメントアウト以降の文字列は、アセンブルからは除去される。
Linuxなどウィンドウズ以外の場合では、コメントアウト記号がセミコロン「;」になっている場合もあるので、適宜に応用のこと。
== オペレーションサフィックス ==
「pushl」とか「movl」とか、プッシュ命令やムーブ命令のうしろにエル「l」がサフィックスです。
データサイズなどを指定するためにサフィックスを指定する必要がある。
GASのアセンブリ命令では、一般にオペランドがどのサイズのデータを扱うか指定するために、b、s、w、l、q、tのいずれかの文字をオペランドの最後に付ける。これをサフィックスという。
;b: バイト(8ビット)
;s: ショート (16ビット整数)またはsingle(32ビット浮動小数点数)
;w: ワード(16ビット)
;l: ロング(32ビット整数または64ビット浮動小数点数)
;q: クワッド(64ビット)
;t: 10バイト(80ビット浮動小数点数)
サフィックスが指定されていない場合、GASはメモリをオペランドにとる命令はサイズを特定できない。転送先あるいは転送元がレジスタの場合、レジスターオペランドのサイズからサイズを推定できる。
== 他の GAS についての読み物 ==
GNU gas ドキュメントのページで、gas についてもっと知ることができる。
https://sourceware.org/binutils/docs-2.37/as/
* [[Reverse Engineering/Calling Conventions]]
== 脚注および参考文献 ==
<references />
[[en:X86_Assembly/GAS_Syntax]]
[[Category:X86アセンブラ|文法]]
frilkw5g68y73zi2vydcq13i0h29woi
高等学校古典B/漢文/四面楚歌
0
21223
262870
261978
2024-11-01T04:45:33Z
163.43.139.100
/* 書き下し文 */
262870
wikitext
text/x-wiki
『鴻門之会』のあと、項羽は楚の王として即位し、沛公を漢王として当時は田舎であった蜀の地に追いやる。
その後、項羽は、反乱軍の盟主であった懐王(かいおう)と対立し、懐王を殺してしまう。
このことにより、項羽に不満のあった諸侯たちが反発し、その結果、それらの反発勢力を上手くまとめた沛公の陣営が強大化してしまう。
そして、楚(そ)と漢(かん)との戦争になる。
楚(そ)の王は項羽である。漢(かん)の王は劉邦(沛公・高祖)である。
なお、范増(はんぞう)は、すでに項羽のもとから去っている。
そして、項羽の軍勢は負け、つまり項羽の軍が負けており、項羽たちは垓下(がいか)に追い詰められた。
この戦場での楚軍は、項羽が直接、率いている。そのため、項羽は戦場にいる。
== 一 ==
=== 原文と書き下し文 ===
==== 原文 ====
項王軍壁垓下。兵少、食尽。漢軍及諸侯兵、囲之数重。夜聞漢軍四面皆楚歌、項王乃大驚曰、「漢皆已得楚乎。是何楚人之多也。」項王則夜起飲帳中。有美人、名虞、常幸従。駿馬、名騅、常騎之。於是項王乃非歌忼慨、自為詩曰、
:力抜山兮気蓋世
:時不利兮騅不逝
:騅不逝兮可奈何
:虞兮虞兮奈若何
歌数闋、美人和之。項王泣数行下。左右皆泣、莫能仰視。
==== 語釈 ====
:垓下(がいか) - 今の安徽省(あんきしょう)霊璧県(れいへきけん)
:壁(へき) - 立てこもる。
:楚歌(そか) - その地方の歌。
:帳中(ちょうちゅう) - とばりの中。(※ とばりは漢字で「帳」と書く。)
:幸(こう) - ここでは「寵愛」(ちょうあい)の意味。原文に受身の字は句法は無いが、ここでは文脈から「こうせられて」と受け身で訓読する。
:忼慨(こうがい) - 憤り(いきどおり)嘆く(なげく)。
:兮 - 語調を整える助字。
:逝 - 進む。
:闋 - 歌が一曲終わること。
: -
==== 句法など ====
*何〜也 (なんゾ〜や)
:何楚人之多也 (なんゾそひとのおおキや)
:「何〜也」で「なんぞ〜や」と訓読して、「なんと 〜 なことよ」という'''詠嘆'''(えいたん)を表す。
:例文の訳: なんと楚の国の人の多いことよ。
=== 現代語訳 ===
項王の軍は、垓下(がいか)(の城壁)に立てこもった。(楚軍の)兵は残り少なく、食料も尽きはてた。漢軍(かんぐん)と、(漢の同盟国の)諸侯の軍が、これ(=楚軍のいる城)を包囲しているのが、幾重(いくえ)にもなっている。ある日の夜、(外側の)漢軍の東西南北の四方向から楚の民謡(みんよう)が聞こえてきて、なので項王はとても驚いて、言ったことは「漢はすでに楚を占領したのか。これは何とも楚人の多いことだ。」と。
項王はそこで夜に起きて、とばりの中で飲んだ。(そこに)美人がいた。(美人の)名前は虞(ぐ)である。いつも寵愛されており、項羽に付き従っていた。(また)名馬がいた。(馬の)名前は騅(すい)。項王は(戦場などでは)いつもこの馬(=騅)に乗っていた。
ここにおいて、項王は悲しげに歌い、憤り(いきどおり)嘆き(なげき)、みずから詩を作って言うには、
:(わが)力は山を引きぬき (わが)意気は世界を圧倒する
:時勢は(われに)不利であり 騅(すい)は進まない
:騅(すい)の進まないこと どうすればよいだろうか(どうしようもない)
:虞や虞や おまえをどうしようか
(項羽の)歌うこと数曲、美人(=虞)はこれに(項羽の曲に)唱和した。
項王は涙を幾筋か流した。左右(の側近たち)も皆泣き、顔を見上げて(項王を)見ることができるものはいなかった。
== ニ ==
=== 原文と書き下し文 ===
==== 原文 ====
於是、項王乃欲東渡烏江。烏江亭長檥船待。謂項王曰、「江東雖小、地方千里、衆数十万人、亦足王也。願大王急渡。今独臣有船。漢軍至、無以渡。」
項王笑曰、「天之亡我、我何渡為。且籍与江東子弟八千人、渡江而西、今無一人還。縦江東父兄憐而王我、我何面目見之。縦彼不言、籍独不愧於心。乃請亭長曰、「吾知公長者。吾騎此馬五歳、所当無敵。嘗一日行千里。不忍殺之、以賜公。」
==== 書き下し文 ====
是(ここ)に於いて(おいて)項王(こうおう)乃ち(すなわち)東して(ひがしして)烏江(うこう)を渡らん(わたらん)と欲す(ほっす)。烏江(うこう)の亭長(ていちょう)、船を檥(ぎ)して待つ(まつ)。項王に謂ひて(いいて)曰はく(いわく)、「江東(こうとう)小(しょう)なりと雖も(いえども)、地(ち)は方千里(ほうせんり)、衆(しゅう)は数十万人(すうじゅうまんにん)、亦(また)王(おう)たるに足る(たる)なり。願わくは(ねがわくは)大王(だいおう)急ぎ(いそぎ)渡れ(わたれ)。今(いま)独り(ひとり)臣(しん)のみ船(ふね)有り(あり)。漢軍(かんぐん)至るも(いたるも)以て(もって)渡る無からん。」と。
項王笑いて(わらいて)曰はく、「天(てん)の我(われ)を亡ぼす(ほろぼす)に、我(われ)何ぞ(なんぞ)渡る(わたる)ことを為さん(なさん)。且つ(かつ)籍(せき)江東(こうとう)の子弟(してい)八千人(はっせんにん)と、江(こう)を渡りて西(にし)せり。今(いま)一人(いちにん)の還る(かえる)もの無し(なし)。縦ひ(たとい)江東(こうとう)の父兄(ふけい)憐れみて(あわれみて)我(われ)を王(おう)とすとも、我(われ)何の(なんの)面目(めんもく)ありてか之(これ)に見えん(まみえん)。縦ひ(たとい)彼(かれ)言はず(いわず)とも、籍(せき)独り(ひとり)心(こころ)に愧ぢ(はぢ)ざらんや」と。
乃ち(すなわち)亭長(ていちょう)に請ひて(いいて)曰はく(いわく)、「吾(われ)公(こう)の長者(ちょうじゃ)たるを知る(しる)。吾(われ)此の(この)馬(うま)に騎(き)すること五歳(ごさい)、当たる(あたる)所(ところ)敵(てき)無し(なし)。
嘗て(かつて)一日(いちにち)に千里(せんり)を行けり。之(これ)を殺すに(ころすに)忍びず(しのびず)。以て(もって)公(こう)に賜はん(たまわん)。」と。
==== 句法など ====
*独〜 (ひとり〜ノミ)
:今(いま)独り(ひとり)臣(しん)のみ船(ふね)有り(あり) -
:今、私だけが船を持っています。
:'''限定'''の意味。
*縦(たとい〜)
:「たとえ〜したとしても」の意味。'''逆接の仮定'''。
:縦江東父兄憐而王我
:訳: 「たとえ江東の父兄が私をあわれんで王とするとしても」の意味。
==== 語釈 ====
:烏江(うこう) - 安徽省(あんきしょう)和県にある渡し場の地名。
:亭長(ていちょう) - 宿場(しゅくば)の長。
:願大王急渡 - 「どうか大王さま、いそいで渡ってください」。「願〜」で「どうか〜してください」の意味。'''願望'''を表す。
:江東(こうとう) - 長江下流の東南のあたりの地域。
:子弟(してい) - 若者。
:雖(いえどモ)- 「たとえ〜としても」という逆接の仮定。あるいは「・・・であるけれども」という逆接の確定。この四面楚歌でも、教科書・参考書によって、どちらの訳の場合もある。
:長者(ちょうじゃ) - 徳の高い人。
: -
==== 読解 ====
*我(われ)何ぞ(なんぞ)渡る(わたる)ことを為さん(なさん)。
:(いまさら)どうして私が渡るだろうか。(私は渡らない。)
:'''反語'''である。
*籍(せき)独り(ひとり)心(こころ)に愧ぢ(はぢ)ざらんや
:この籍(=項羽)、一人(ひとり)心に、恥じぬことがあろうか。(恥ずべきである。)
:'''反語'''である。
=== 現代語訳 ===
そこで項王は東に進み、烏江(うこう)の渡し場から(長江を)渡ろうとしていた。烏江(うこう)の亭長(ていちょう)は、船を準備して待機している。(亭長が)項王に面と向かって言うことは、「たとえ江東の地が小さいとしても、土地(の広さ)は千里四方、人口は数十万人、(あなた項王が)また王として君臨するのに充分な土地です。どうか大王さま、急いで(長江を)渡ってください。今、船を持っている者は、私だけです。漢軍がやってきても渡る手段は無いのです。」と。
項王は笑って言った。「天が私を滅ぼそうとしているのだよ。(いまさら)どうして私が渡るだろうか。(私は渡らない。もはや天命は変えられない。)その上、この籍(=項羽)は、(かつて)江東の若者八千人と長江を渡って西に進んだのだ。(しかし)今は、一人も(ともに)帰る者がいない。たとえ江東の父兄が同情して私を王にさせてくれるとしても、私には何の面目があって、彼らと会えるだろうか。たとえ彼らが言わなくても、この籍(=項羽)、一人(ひとり)心に、恥じぬことがあろうか。(恥ずべきである。)」
そこで亭長に向かって(項羽の)言うには、「あなたが徳の高い人であることが、私には分かった。私がこの馬(=騅)に乗ることは五年間だが、向かうところ敵なしだった。(そのような名馬です。)かつて一日に千里も走ったこともある。これ(=騅)を殺させるのは忍びない。そこで、あなたに差し上げます。」と。
=== 問題 ===
*項王が烏江を渡らなかったのはなぜか。説明せよ。
主に、次の2つの理由である。
:* 天が自分を滅ぼしていると考えたため、たとえ逃げのびて再起しても、天下の情勢は変わらず、また自分は負けると思ったから。
:* 江東の若者をたくさん死なせてしまったので、その若者の家族などに顔向けできないし、自分もふがいなくて恥ずかしく、そのような自分は生きている価値が無いと思ったから。
== 三 ==
=== 原文と書き下し文 ===
==== 原文 ====
乃令騎皆下馬歩行、持短兵接戦。独項王所殺漢軍、数百人。項王身亦被十余創。顧見漢騎司馬呂馬童曰、「若非吾故人乎。」
馬童面之、指王翳曰、「此項王也。」
項王乃曰、「吾聞漢購我頭千金・邑万戸。吾為若徳。」
乃自刎而死、楚地皆降漢。
==== 書き下し文 ====
乃ち(すなわち)騎(き)をして皆(みな)馬(うま)を下りて(おりて)歩行(ほこう)せしめ、短兵(たんぺい)を持して(じして)接戦(せっせん)す。独り(ひとり)項王の殺すところの漢軍、数百人なり。項王の身(み)も亦(また)十余創(じゅうよそう)を被る(こうむる)。顧みて(かえりみて)漢(かん)の騎司馬(きしば)呂馬童(りょばどう)を見て(みて)曰はく、「若(なんぢ)は吾が(わが)故人(こじん)に非ず(あらず)や。」と。馬童(ばどう)之に(これに)面(めん)し、王翳(おうえい)に指(ゆび)さして曰はく、「此れ(これ)項王なり。」と。
項王乃ち(すなわち)曰はく、「吾(われ)聞く(きく)漢(かん)我が(わが)頭(こうべ)を千金(せんきん)・邑万戸(ゆうばんこ)に購ふ(あがなう)と。吾(われ)若(なんぢ)が為(ため)に徳(とく)せしめん。」と。
乃ち(すなわち)自刎(じふん)して死し(しし)、楚(そ)の地(ち)、皆(みな)漢(かん)に降る(くだる)。
==== 語彙 ====
:故人(こじん) - 昔なじみ。
:自刎(じふん) - みずから首をはねて死ぬこと。
==== 語釈 ====
:短兵(たんぺい) - 刀・剣などの短い武器。
:騎司馬(きしば) - 騎兵の隊長。
:面(めんシ、そむキ) - 面を「めん」と読むか「そむク、そむキ」と読むかで意味が変わる。「めん」と読む場合、馬童が、いったん項羽を見てから、応永に顔の向きを変えたという意味。「そむク」とした場合、項羽から顔をそむけたという意味。
:邑万戸(ゆうばんこ) - 一万戸の町。
: -
=== 現代語訳 ===
そこで皆、馬から下ろさせて歩かせて、刀剣などの短い武器を持って(漢の軍と)接近して戦った。項王が一人で殺した漢軍の数は数百人であった。項王の身もまた、十数カ所も傷を負った。(項王が)振り返って見ると、漢の騎兵隊長である呂馬童(りょばどう)がいて、項王の言うには、「おまえは私の昔なじみ(むかしなじみ)ではないか。」と。
馬童(ばどう)はこれに(項羽に)顔を背け、(漢軍の)王翳(おうえい)に(項王を)指差して言うには、「こいつが項王だ。」と。
項王はそこで言った。「私の聞いた話では、漢は私の首に千金・一万戸の町の賞金をかけたとな。私は、おまえのために、恩恵を施してやろう。」と。
そして(項羽は)自ら首をはねて自殺した。楚の領地(の者)はすべて、漢に降伏(こうふく)した。
== 「四面楚歌」の現在の意味 ==
「まわりが敵ばかりで味方が存在しない状況」という意味で、「四面楚歌」は現在、用いられている。
== 項羽の性格の描写 ==
検定教科書などに紹介される項羽についての描写では、『鴻門之会』でも『四面楚歌』でも、感情的であり冷静な判断ができないという欠点のある一方で、人情味があり、それなりに義理堅い人物として書かれている。
この『四面楚歌』の項羽の最期でも、かつての部下の呂馬童(りょばどう)に項羽の命を狙われても、項羽は、そのことをを咎めない(とがめない)のである。
『鴻門之会』の前での項羽の行動は、函谷関の関所を攻撃したりと、攻撃的であり、短気である。しかし、その一方で、『四面楚歌』では項羽は負けを悲観して自殺もする。
たとえば『鴻門之会』では、自分に謝罪しにきた沛公(はいこう)を許し、その沛公を助けにきた樊噲(はんかい)を高く評価したかのように記述されており、項羽は人情味がある人物として書かれている。
どちらにせよ、項羽の行動の方針は、「生き延びる」という観点では一貫しておらず、項羽は感情的な人物として描かれている。
ただし、このような、項羽の人物像は、実際の人物像とは異なる可能性がある。
*項羽と沛公の対比
一方、沛公(はいこう)の人物像は、史実などでの、この四面楚歌のあとの展開を知っていると分かるのだが、沛公は冷酷な人物である。
この四面楚歌の戦争で沛公の勝利のために功績を立てた部下である韓信(かんしん)を、沛公は、韓信の勢力が大きくなって自分が滅ぼされることを恐れ、韓信を滅ぼす(ほろぼす)のである。
なお、この韓信は、「背水の陣」(はいすいのじん)でも有名な戦闘で、勝利した男でもある。このように韓信は、沛公のために何度も戦闘を指揮して功績をおさめた、優れた部下である。だが、その韓信を、沛公は滅ぼすのである。
おそらく『史記』での項羽の人物像は、この冷酷な沛公とは対比的に項羽が描かれているため、項羽が人情深い人物かのように描かれているのであろう。
[[Category:高等学校教育_国語_漢文_歴史書_史記|しめんそか]]
9k9zqvnqtmyv2kbpaupesd22dd2npqk
満洲語
0
22603
262845
251571
2024-10-31T13:01:29Z
MiiCii
32480
MiiCii がページ「[[満州語]]」を「[[満洲語]]」に移動しました: 「満州」→満洲
251571
wikitext
text/x-wiki
{{Pathnav|メインページ|語学|frame=1|small=1}}
'''このページはただいま翻訳中で、加筆が必要です。'''
(The primary author: Your courses, which are not cancelled, are under the category of "Course A".)
[[File:Manchu chinese.jpg|thumb|right|500px|紫禁城の扁額に書かれた満州文字]]
このサイトは、満州語を学びたい方のために設置したサイトであり、お互いに独立したコースが2つあります。「コースA」は、より専門的であり、系統的な基礎知識が載っていますが、初心者や基礎知識が弱い方にとっては少し解りにくいかもしれません。そして未完成の「コースB」は初心者のためのチュートリアルで、言語学習に向いており、更に多様な内容を提供することによって、学習者の言語能力の上達を目指しています。
他言語を参照するならこちら:
[https://zh.wikibooks.org/wiki/满语 如果你想阅读本站的中文版请点这里]
[https://en.wikibooks.org/wiki/Manchu Click here for English version]
== 満州語について ==
[[:w:満州語|満州語]]は[[:w:ツングース諸語|満州・ツングース諸語]]に属する言語で、かつては[[:w:清|清朝]]の公用語でした。今日に至っては、ほとんどの満州族は中国語を話すものの、およそ60人未満の母語話者がいます。満州語の母語話者は主に中国黒竜江省のチチハル市からおよそ40㎞離れた三家子村({{MongolUnicode|ᡳᠯᠠᠨ<br>ᠪᠣᠣ}}, ilan boo)に分布しています。中国東北部における満州語はほとんど話されていませんが、新疆ウイグル自治区イリ・カザフ自治州チャプチャルシベ自治県({{MongolUnicode|ᠴᠠᠪᠴᠠᠯ}}, cabcal)にはいまだに30,000余りのシベ語話者が住んでおり、こちらは満州語と相互意思疎通可能で、言語としては異なりますが、当該言語の方言ともみなされています。<br>
Manchu is a Manchu-Tungusic language spoken in Manchuria; it used to be the language of the Manchus, and the official language of the Qing dynasty. Nowadays most Manchus speak Chinese and there are far fewer than 60 native speakers of Manchu out of a total of more than 10 million ethnic Manchus. Most of these native speakers now live in Ilan Boo (''Sanjiazi'' in Mandarin Chinese; 三家子) which is a small village about 40km north of Qiqihar (齐齐哈尔) in Heilongjiang province. Although the spoken language is nearly extinct in Manchuria, the Manchu language lives on in the form of one of its dialects Sibe, which still has 30,000 speakers most of which live in Cabcal Sibe Autonomous County (察布查尔锡伯自治县) near Ili (伊犁) in Xinjiang province, Western China.<br>
満州語は満州・ツングース諸語に属する言語であり、グスターフ・ラムステッドなどの言語学者によって、モンゴル諸語、チュルク諸語と並んでアルタイ諸言語に属すると考えられています。満州語は母音調和を持ち、語順は日本語と同じくSOV語順(主語-目的語-述語)です。日本語話者にとって満州語を習得するのはあまり難しくはありませんが、なぜ満州語という危機に瀕する言語を学ぼうとしたことを考られたことはなさいませんでしょうか。
* 満州・ツングース諸語に対する興味
* 清朝の歴史に対する興味、特に満州文字で書かれた膨大な数の文献に関して
* 好奇心の駆使
* 満州文化の認知
* 独特な文字
* 古代中国語の文献を解かりやすく読むため
などなど。
Manchu is a member of the Manchu-Tungusic language family which is believed by some scholars to be a branch of the Altaic language family (along with Mongolic and Turkic). Manchu is an agglutinative language that features both vowel harmony and a Subject-Object-Verb sentence structure. Although it is not particularly hard to learn (especially in comparison to Chinese) many would wonder why you would bother learning a language that is spoken by so few people and whose future does not look that promising. Some reasons could include:
* An interest in Manchu-Tungusic languages
* An interest in Qing dynasty history, especially considering the amount of archival material in Manchu
* General intellectual curiosity
* To gain a deeper understanding of Manchu culture
* The script is pretty
* It is an easy way to read the Chinese classics (most of them were translated into Manchu)
== コースA ==
このコースにはレッスンが合計24回含まれており、三つの部分に分けられます、
'''Section 1: Introduction to Manchu grammar and the Manchu script'''
This section includes 12 lessons, each of which includes a short text or dialogue followed by a vocabulary list and then an introduction to a particular grammatical feature of the language.
Note:
* Lesson 11 is a summary of all the grammatical features from lessons 1-10 and can be used for revision or can be printed out to be used as a basic Manchu grammar.
* The Manchu script is not taught until lesson 12 (contrary to most textbooks) due to the difficult nature of the script and the fact that it is much easier to learn the script once you possess a basic vocabulary and understanding of the phonetic features of the Manchu language.
'''第1部 満洲語・満洲文字入門'''
第1部には、12のレッスンがあります。各レッスンには、短い文章又は会話に続いて語彙リストがあり、さらに満洲語文法の特徴について紹介しています。
注:
* レッスン11は、レッスン1からレッスン10までの文法のまとめになっており、復習に利用することも、又印刷して基礎満洲語文法として利用することもできます。
* 満洲文字は、レッスン12で初めて紹介します。これは、満洲文字が難しいため、又満洲語の基礎語彙を身につけ音声の特徴を理解してからの方が文字の学習が容易であるためです。
'''Section 2: Readings in the Manchu Language'''
This section includes 12 readings in the Manchu Language. Each reading includes a vocabulary list, as well as a translation and explanation of the text.
'''第2部 満洲語読解'''
第2部には、満洲語の読解用文章が12あります。それぞれの文章には、語彙リストと訳文、文章の解説が付されています。
'''Section 3: Other information on the Manchu Language'''
This section includes a vocabulary list, further vocabulary as well as some general information on Tungusic languages and a brief introduction to the Jurchen language and script.
At the bottom of the page there is also a link to the [[Manchu/Library|Online Library of Manchu Language Texts]] which is currently part of this Wikibook. The library is in development.
'''第3部 満洲語について'''
第3部には、語彙リスト、応用語彙、ツングース語族概説、女真語と女真文字の簡潔な入門があります。
ページ下部に、このWikibookの一部である[[Manchu/Library|満洲語文献オンライン図書館]](英語)へのリンクがあります。ただし、こちらは準備中です。
=== Lessons ===
{|
|<big>Section 1: Grammar & Introductory Lessons</big>
|<big>Section 2: Readings</big>
|-
|....................................................................................................................................
|....................................................................................................................................
|-
|[[Manchu/Lesson 1 - Pronunciation|Lesson 1 - Pronunciation]]{{stage|100%}}
|[[Manchu/Lesson 13 - Reading 1|Lesson 13 - Reading 1 (Reading on the old Manchu script)]]{{stage|25%}}
|-
|[[Manchu/Lesson 2 - Nouns|Lesson 2 - Nouns]]{{stage|100%}}
|[[Manchu/Lesson 14 - Reading 2|Lesson 14 - Reading 2 (Readings from the Dao De Jing - 道德经)]]{{stage|50%}}
|-
|[[Manchu/Lesson 3 - Pronouns|Lesson 3 - Pronouns]]{{stage|100%}}
|[[Manchu/Lesson 15 - Reading 3|Lesson 15 - Reading 3 (Readings from an old Korean text to learn Manchu Chapter 1 - 清語老乞大卷一)]]{{stage|25%}}
|-
|[[Manchu/Lesson 4 - Numerals|Lesson 4 - Numerals]]{{stage|100%}}
|[[Manchu/Lesson 16 - Reading 4|Lesson 16 - Reading 4 (Readings from an old Korean text to learn Manchu Chapter 2 - 清語老乞大卷二)]]{{stage|25%}}
|-
|[[Manchu/Lesson 5 - Adjectives|Lesson 5 - Adjectives]]{{stage|100%}}
|[[Manchu/Lesson 17 - Reading 5|Lesson 17 - Reading 5 (Readings from the Analects - 论语)]]{{stage|50%}}
|-
|[[Manchu/Lesson 6 - Verbs 1|Lesson 6 - Verbs 1]]{{stage|75%}}
|[[Manchu/Lesson 18 - Reading 6|Lesson 18 - Reading 6 (Mr Dungg'o and the wolf)]]{{stage|25%}}
|-
|[[Manchu/Lesson 7 - Verbs 2|Lesson 7 - Verbs 2]]{{stage|100%}}
|[[Manchu/Lesson 19 - Reading 7|Lesson 19 - Reading 7 (The Lord's Prayer & Gospel of Mark)]]{{stage|50%}}
|-
|[[Manchu/Lesson 8 - Verbs 3|Lesson 8 - Verbs 3]]{{stage|100%}}
|[[Manchu/Lesson 20 - Reading 8|Lesson 20 - Reading 8 (Readings from an old Korean text to learn Manchu Chapter 3 - 清語老乞大卷三)]]{{stage|25%}}
|-
|[[Manchu/Lesson 9 - Adverbs|Lesson 9 - Adverbs]]{{stage|100%}}
|[[Manchu/Lesson 21 - Reading 9|Lesson 21 - Reading 9 (Readings from an old Korean text to learn Manchu Chapter 4 - 清語老乞大卷四)]]{{stage|25%}}
|-
|[[Manchu/Lesson 10 - Postpositions|Lesson 10 - Postpositions and Linking Words]]{{stage|100%}}
|[[Manchu/Lesson 22 - Reading 10|Lesson 22 - Reading 10]]
|-
|[[Manchu/Lesson 11 - Grammar Summary|Lesson 11 - Grammar Summary]]{{stage|100%}}
|[[Manchu/Lesson 23 - Reading 11|Lesson 23 - Reading 11]]
|-
|[[Manchu/Lesson 12 - The Manchu Script|Lesson 12 - The Manchu Script]]{{stage|25%}}
|[[Manchu/Lesson 24 - Reading 12|Lesson 24 - Reading 12 (Readings from the San Zi Jing - 三字经)]]{{stage|25%}}
|-
|....................................................................................................................................
|....................................................................................................................................
|-
|<big>Section 3: その他</big>
|
|-
|....................................................................................................................................
|....................................................................................................................................
|-
|[[Manchu/Vocab|Vocabulary List]]
|[[Manchu/Vocab 1|Further Vocab 1 - Geography, time, seasons and climate]]
|-
|[[Manchu/Information on Tungusic Languages|Information on Manchu-Tungusic Languages]]
|[[Manchu/Vocab 2|Further Vocab 2 - Colours, animals and the human body]]
|-
|[[Manchu/Introduction to the Jurchen language and script|Introduction to the Jurchen language and script]]
|[[Manchu/Vocab 3|Further Vocab 3 - Countries and languages]]
|-
|}
== コースB ==
''Course B'' (in development) is a new textbook for Manchu language, which aims to avoid the obstacle of learning when facing a boring list of lots of grammar rules or language materials translated to another language which is difficult for beginners. This course has applied the theories of foreign language acquisition. The author hopes this course can enables you to learn Manchu quickly and well.
=== Pre-Elementary ===
=== Elementary ===
[[Manchu/Elementary Lesson 1|Lesson 1]]
[[Manchu/Elementary Lesson 2|Lesson 2]]
[[Manchu/Elementary Lesson 3|Lesson 3]]
[[Manchu/Elementary Lesson 4|Lesson 4]]
[[Manchu/Elementary Lesson 5|Lesson 5]]
[[Manchu/Elementary Lesson 6|Lesson 6]]
[[Manchu/Elementary Lesson 7|Lesson 7]]
[[Manchu/Elementary Lesson 8|Lesson 8]]
[[Manchu/Elementary Lesson 9|Lesson 9]]
[[Manchu/Elementary Lesson 10|Lesson 10]]
=== Pre-Intermediate ===
(in develop)
=== 中級 ===
[[Manchu/Intermediate Lesson 1|Lesson 1]]
[[Manchu/Intermediate Lesson 2|Lesson 2]]
[[Manchu/Intermediate Lesson 3|Lesson 3]]
[[Manchu/Intermediate Lesson 4|Lesson 4]]
[[Manchu/Intermediate Lesson 5|Lesson 5]]
== Links ==
[https://incubator.wikimedia.org/wiki/Wp/mnc/Main_Page Manchu-language Wikipedia(test)]
== Online Library of Manchu Language Texts ==
<div style="float:left;margin-left:0.3em;margin-right:0.7em">
[[File:Carl Spitzweg - "The Bookworm".jpg|80px]]
</div>
The [[Manchu/Library|Online Library of Manchu Language Texts]] aims to provide a one stop collection of Manchu texts that are no longer subject to copyright laws. All texts use the Mollendorff transliteration method, which will mean that any user that wants to download the text can just cut and paste the content straight from the page. As this is a wiki users will be able to make corrections and monitor changes in the texts to ensure accuracy. To visit the online library [[Manchu/Library|Click Here!]]
<strong>Now the library has been moved to Wikisource,</strong>
{{wikisourcelang| |Main Page/ᠮᠠᠨᠵᡠ ᡤᡳᠰᡠᠨ|Manchu language Wikisource}}
<div style="float:center;">
{{Altaic languages}}
</div>
== 参考文献 ==
* http://manjusa.com/portal.php
满族在线
http://dbmanju.net/21d
满语7天
* http://dbmanzu.blogspot.com
满语电子周刊
* 爱新觉罗·乌拉熙春. <<满语读本>>. 内蒙古人民出版社
* 爱新觉罗·乌拉熙春. <<满语语法>>. 内蒙古人民出版社
* 爱新觉罗·瀛生. <<满语读本>>. 吉林教育出版社
* D.O.朝克. <<满通古斯诸语比较研究>>. 民族出版社
* Gorelova, Liliya M. 2002. ''Manchu Grammar''. Handbook of Oriental Studies, ISBN 90-04-12307-5
* Li, Gertraude Roth. 2000. ''Manchu: A Textbook for Reading Documents''. University of Hawai'i Press, Honolulu, ISBN 0-8248-2206-4
* 李永海,刘景宪,屈六生. <<满语语法>>. 民族出版社
* Möllendorff, Paul Georg von. 1892. [http://en.wikisource.org/wiki/A_Manchu_Grammar A Manchu Grammar: With Analysed Texts]. Shanghai.
<!--
[[zh:满语]]
-->
[[カテゴリ:満州語|*]]
9cp3xa2sp114jwzjiroqoeoipwt98xr
262847
262845
2024-10-31T13:03:01Z
MiiCii
32480
「満州」→満洲
262847
wikitext
text/x-wiki
{{Pathnav|メインページ|語学|frame=1|small=1}}
'''このページはただいま翻訳中で、加筆が必要です。'''
(The primary author: Your courses, which are not cancelled, are under the category of "Course A".)
[[File:Manchu chinese.jpg|thumb|right|500px|紫禁城の扁額に書かれた満洲文字]]
このサイトは、満洲語を学びたい方のために設置したサイトであり、お互いに独立したコースが2つあります。「コースA」は、より専門的であり、系統的な基礎知識が載っていますが、初心者や基礎知識が弱い方にとっては少し解りにくいかもしれません。そして未完成の「コースB」は初心者のためのチュートリアルで、言語学習に向いており、更に多様な内容を提供することによって、学習者の言語能力の上達を目指しています。
他言語を参照するならこちら:
[https://zh.wikibooks.org/wiki/满语 如果你想阅读本站的中文版请点这里]
[https://en.wikibooks.org/wiki/Manchu Click here for English version]
== 満洲語について ==
[[:w:満洲語|満洲語]]は[[:w:ツングース諸語|満洲=ツングース諸語]]に属する言語で、かつては[[:w:清|清朝]]の公用語でした。今日に至っては、ほとんどの満洲族は中国語を話すものの、およそ60人未満の母語話者がいます。満洲語の母語話者は主に中国黒竜江省のチチハル市からおよそ40㎞離れた三家子村({{MongolUnicode|ᡳᠯᠠᠨ<br>ᠪᠣᠣ}}, ilan boo)に分布しています。中国東北部における満洲語はほとんど話されていませんが、新疆ウイグル自治区イリ・カザフ自治州チャプチャルシベ自治県({{MongolUnicode|ᠴᠠᠪᠴᠠᠯ}}, cabcal)にはいまだに30,000余りのシベ語話者が住んでおり、こちらは満洲語と相互意思疎通可能で、言語としては異なりますが、当該言語の方言ともみなされています。<br>
Manchu is a Manchu-Tungusic language spoken in Manchuria; it used to be the language of the Manchus, and the official language of the Qing dynasty. Nowadays most Manchus speak Chinese and there are far fewer than 60 native speakers of Manchu out of a total of more than 10 million ethnic Manchus. Most of these native speakers now live in Ilan Boo (''Sanjiazi'' in Mandarin Chinese; 三家子) which is a small village about 40km north of Qiqihar (齐齐哈尔) in Heilongjiang province. Although the spoken language is nearly extinct in Manchuria, the Manchu language lives on in the form of one of its dialects Sibe, which still has 30,000 speakers most of which live in Cabcal Sibe Autonomous County (察布查尔锡伯自治县) near Ili (伊犁) in Xinjiang province, Western China.<br>
満洲語は満洲=ツングース諸語に属する言語であり、グスターフ・ラムステッドなどの言語学者によって、モンゴル諸語、チュルク諸語と並んでアルタイ諸言語に属すると考えられています。満洲語は母音調和を持ち、語順は日本語と同じくSOV語順(主語-目的語-述語)です。日本語話者にとって満洲語を習得するのはあまり難しくはありませんが、なぜ満洲語という危機に瀕する言語を学ぼうとしたことを考られたことはなさいませんでしょうか。
* 満洲・ツングース諸語に対する興味
* 清朝の歴史に対する興味、特に満洲文字で書かれた膨大な数の文献に関して
* 好奇心の駆使
* 満洲文化の認知
* 独特な文字
* 古代中国語の文献を解かりやすく読むため
などなど。
Manchu is a member of the Manchu-Tungusic language family which is believed by some scholars to be a branch of the Altaic language family (along with Mongolic and Turkic). Manchu is an agglutinative language that features both vowel harmony and a Subject-Object-Verb sentence structure. Although it is not particularly hard to learn (especially in comparison to Chinese) many would wonder why you would bother learning a language that is spoken by so few people and whose future does not look that promising. Some reasons could include:
* An interest in Manchu-Tungusic languages
* An interest in Qing dynasty history, especially considering the amount of archival material in Manchu
* General intellectual curiosity
* To gain a deeper understanding of Manchu culture
* The script is pretty
* It is an easy way to read the Chinese classics (most of them were translated into Manchu)
== コースA ==
このコースにはレッスンが合計24回含まれており、三つの部分に分けられます、
'''Section 1: Introduction to Manchu grammar and the Manchu script'''
This section includes 12 lessons, each of which includes a short text or dialogue followed by a vocabulary list and then an introduction to a particular grammatical feature of the language.
Note:
* Lesson 11 is a summary of all the grammatical features from lessons 1-10 and can be used for revision or can be printed out to be used as a basic Manchu grammar.
* The Manchu script is not taught until lesson 12 (contrary to most textbooks) due to the difficult nature of the script and the fact that it is much easier to learn the script once you possess a basic vocabulary and understanding of the phonetic features of the Manchu language.
'''第1部 満洲語・満洲文字入門'''
第1部には、12のレッスンがあります。各レッスンには、短い文章又は会話に続いて語彙リストがあり、さらに満洲語文法の特徴について紹介しています。
注:
* レッスン11は、レッスン1からレッスン10までの文法のまとめになっており、復習に利用することも、又印刷して基礎満洲語文法として利用することもできます。
* 満洲文字は、レッスン12で初めて紹介します。これは、満洲文字が難しいため、又満洲語の基礎語彙を身につけ音声の特徴を理解してからの方が文字の学習が容易であるためです。
'''Section 2: Readings in the Manchu Language'''
This section includes 12 readings in the Manchu Language. Each reading includes a vocabulary list, as well as a translation and explanation of the text.
'''第2部 満洲語読解'''
第2部には、満洲語の読解用文章が12あります。それぞれの文章には、語彙リストと訳文、文章の解説が付されています。
'''Section 3: Other information on the Manchu Language'''
This section includes a vocabulary list, further vocabulary as well as some general information on Tungusic languages and a brief introduction to the Jurchen language and script.
At the bottom of the page there is also a link to the [[Manchu/Library|Online Library of Manchu Language Texts]] which is currently part of this Wikibook. The library is in development.
'''第3部 満洲語について'''
第3部には、語彙リスト、応用語彙、ツングース語族概説、女真語と女真文字の簡潔な入門があります。
ページ下部に、このWikibookの一部である[[Manchu/Library|満洲語文献オンライン図書館]](英語)へのリンクがあります。ただし、こちらは準備中です。
=== Lessons ===
{|
|<big>Section 1: Grammar & Introductory Lessons</big>
|<big>Section 2: Readings</big>
|-
|....................................................................................................................................
|....................................................................................................................................
|-
|[[Manchu/Lesson 1 - Pronunciation|Lesson 1 - Pronunciation]]{{stage|100%}}
|[[Manchu/Lesson 13 - Reading 1|Lesson 13 - Reading 1 (Reading on the old Manchu script)]]{{stage|25%}}
|-
|[[Manchu/Lesson 2 - Nouns|Lesson 2 - Nouns]]{{stage|100%}}
|[[Manchu/Lesson 14 - Reading 2|Lesson 14 - Reading 2 (Readings from the Dao De Jing - 道德经)]]{{stage|50%}}
|-
|[[Manchu/Lesson 3 - Pronouns|Lesson 3 - Pronouns]]{{stage|100%}}
|[[Manchu/Lesson 15 - Reading 3|Lesson 15 - Reading 3 (Readings from an old Korean text to learn Manchu Chapter 1 - 清語老乞大卷一)]]{{stage|25%}}
|-
|[[Manchu/Lesson 4 - Numerals|Lesson 4 - Numerals]]{{stage|100%}}
|[[Manchu/Lesson 16 - Reading 4|Lesson 16 - Reading 4 (Readings from an old Korean text to learn Manchu Chapter 2 - 清語老乞大卷二)]]{{stage|25%}}
|-
|[[Manchu/Lesson 5 - Adjectives|Lesson 5 - Adjectives]]{{stage|100%}}
|[[Manchu/Lesson 17 - Reading 5|Lesson 17 - Reading 5 (Readings from the Analects - 论语)]]{{stage|50%}}
|-
|[[Manchu/Lesson 6 - Verbs 1|Lesson 6 - Verbs 1]]{{stage|75%}}
|[[Manchu/Lesson 18 - Reading 6|Lesson 18 - Reading 6 (Mr Dungg'o and the wolf)]]{{stage|25%}}
|-
|[[Manchu/Lesson 7 - Verbs 2|Lesson 7 - Verbs 2]]{{stage|100%}}
|[[Manchu/Lesson 19 - Reading 7|Lesson 19 - Reading 7 (The Lord's Prayer & Gospel of Mark)]]{{stage|50%}}
|-
|[[Manchu/Lesson 8 - Verbs 3|Lesson 8 - Verbs 3]]{{stage|100%}}
|[[Manchu/Lesson 20 - Reading 8|Lesson 20 - Reading 8 (Readings from an old Korean text to learn Manchu Chapter 3 - 清語老乞大卷三)]]{{stage|25%}}
|-
|[[Manchu/Lesson 9 - Adverbs|Lesson 9 - Adverbs]]{{stage|100%}}
|[[Manchu/Lesson 21 - Reading 9|Lesson 21 - Reading 9 (Readings from an old Korean text to learn Manchu Chapter 4 - 清語老乞大卷四)]]{{stage|25%}}
|-
|[[Manchu/Lesson 10 - Postpositions|Lesson 10 - Postpositions and Linking Words]]{{stage|100%}}
|[[Manchu/Lesson 22 - Reading 10|Lesson 22 - Reading 10]]
|-
|[[Manchu/Lesson 11 - Grammar Summary|Lesson 11 - Grammar Summary]]{{stage|100%}}
|[[Manchu/Lesson 23 - Reading 11|Lesson 23 - Reading 11]]
|-
|[[Manchu/Lesson 12 - The Manchu Script|Lesson 12 - The Manchu Script]]{{stage|25%}}
|[[Manchu/Lesson 24 - Reading 12|Lesson 24 - Reading 12 (Readings from the San Zi Jing - 三字经)]]{{stage|25%}}
|-
|....................................................................................................................................
|....................................................................................................................................
|-
|<big>Section 3: その他</big>
|
|-
|....................................................................................................................................
|....................................................................................................................................
|-
|[[Manchu/Vocab|Vocabulary List]]
|[[Manchu/Vocab 1|Further Vocab 1 - Geography, time, seasons and climate]]
|-
|[[Manchu/Information on Tungusic Languages|Information on Manchu-Tungusic Languages]]
|[[Manchu/Vocab 2|Further Vocab 2 - Colours, animals and the human body]]
|-
|[[Manchu/Introduction to the Jurchen language and script|Introduction to the Jurchen language and script]]
|[[Manchu/Vocab 3|Further Vocab 3 - Countries and languages]]
|-
|}
== コースB ==
''Course B'' (in development) is a new textbook for Manchu language, which aims to avoid the obstacle of learning when facing a boring list of lots of grammar rules or language materials translated to another language which is difficult for beginners. This course has applied the theories of foreign language acquisition. The author hopes this course can enables you to learn Manchu quickly and well.
=== Pre-Elementary ===
=== Elementary ===
[[Manchu/Elementary Lesson 1|Lesson 1]]
[[Manchu/Elementary Lesson 2|Lesson 2]]
[[Manchu/Elementary Lesson 3|Lesson 3]]
[[Manchu/Elementary Lesson 4|Lesson 4]]
[[Manchu/Elementary Lesson 5|Lesson 5]]
[[Manchu/Elementary Lesson 6|Lesson 6]]
[[Manchu/Elementary Lesson 7|Lesson 7]]
[[Manchu/Elementary Lesson 8|Lesson 8]]
[[Manchu/Elementary Lesson 9|Lesson 9]]
[[Manchu/Elementary Lesson 10|Lesson 10]]
=== Pre-Intermediate ===
(in develop)
=== 中級 ===
[[Manchu/Intermediate Lesson 1|Lesson 1]]
[[Manchu/Intermediate Lesson 2|Lesson 2]]
[[Manchu/Intermediate Lesson 3|Lesson 3]]
[[Manchu/Intermediate Lesson 4|Lesson 4]]
[[Manchu/Intermediate Lesson 5|Lesson 5]]
== Links ==
[https://incubator.wikimedia.org/wiki/Wp/mnc/Main_Page Manchu-language Wikipedia(test)]
== Online Library of Manchu Language Texts ==
<div style="float:left;margin-left:0.3em;margin-right:0.7em">
[[File:Carl Spitzweg - "The Bookworm".jpg|80px]]
</div>
The [[Manchu/Library|Online Library of Manchu Language Texts]] aims to provide a one stop collection of Manchu texts that are no longer subject to copyright laws. All texts use the Mollendorff transliteration method, which will mean that any user that wants to download the text can just cut and paste the content straight from the page. As this is a wiki users will be able to make corrections and monitor changes in the texts to ensure accuracy. To visit the online library [[Manchu/Library|Click Here!]]
<strong>Now the library has been moved to Wikisource,</strong>
{{wikisourcelang| |Main Page/ᠮᠠᠨᠵᡠ ᡤᡳᠰᡠᠨ|Manchu language Wikisource}}
<div style="float:center;">
{{Altaic languages}}
</div>
== 参考文献 ==
* http://manjusa.com/portal.php
满族在线
http://dbmanju.net/21d
满语7天
* http://dbmanzu.blogspot.com
满语电子周刊
* 爱新觉罗·乌拉熙春. <<满语读本>>. 内蒙古人民出版社
* 爱新觉罗·乌拉熙春. <<满语语法>>. 内蒙古人民出版社
* 爱新觉罗·瀛生. <<满语读本>>. 吉林教育出版社
* D.O.朝克. <<满通古斯诸语比较研究>>. 民族出版社
* Gorelova, Liliya M. 2002. ''Manchu Grammar''. Handbook of Oriental Studies, ISBN 90-04-12307-5
* Li, Gertraude Roth. 2000. ''Manchu: A Textbook for Reading Documents''. University of Hawai'i Press, Honolulu, ISBN 0-8248-2206-4
* 李永海,刘景宪,屈六生. <<满语语法>>. 民族出版社
* Möllendorff, Paul Georg von. 1892. [http://en.wikisource.org/wiki/A_Manchu_Grammar A Manchu Grammar: With Analysed Texts]. Shanghai.
<!--
[[zh:满语]]
-->
[[カテゴリ:満洲語|*]]
iw7b2enkld6zsg4s6ivz8nvup02yani
満洲実録
0
23175
262850
232005
2024-10-31T13:04:20Z
MiiCii
32480
262850
wikitext
text/x-wiki
{{wikisource|oldwikisource:ᠮᠠᠨᠵᡠ ᡳ ᠶᠠᡵᡤᡳᠶᠠᠨ ᡴᠣᠣᠯᡳ|満洲実録(満洲語版)}}
'''Manju i Yargiyan Kooli'''
[[Manchu/Library/Manchu Veritable Records/Vol.1|ujui debtelin (Vol.1)]]
[[Manchu/Library/Manchu Veritable Records/Vol.2|jai debtelin (Vol.2)]]
[[Manchu/Library/Manchu Veritable Records/Vol.3|ilaci debtelin (Vol.3)]]
[[Manchu/Library/Manchu Veritable Records/Vol.4|duici debtelin (Vol.4)]]
[[Manchu/Library/Manchu Veritable Records/Vol.5|sunjaci debtelin (Vol.5)]]
[[Manchu/Library/Manchu Veritable Records/Vol.6|ningguci debtelin (Vol.6)]]
[[Manchu/Library/Manchu Veritable Records/Vol.7|nadaci debtelin (Vol.7)]]
[[Manchu/Library/Manchu Veritable Records/Vol.8|jakūci debtelin (Vol.8)]]
{{BookCat}}
[[カテゴリ:満洲語]]
0fraljp2c9v2x5xy050r3ai1nynmgj7
Manchu/Library/Manchu Veritable Records/Vol.1
0
23177
262854
232004
2024-10-31T13:04:48Z
MiiCii
32480
262854
wikitext
text/x-wiki
'''manju i yargiyan kooli - ujui debtelin'''
'''滿洲實錄·卷一'''
==golmin šanggiyan alin (長白山)==
{|
|-
|'''golmin šanggiyan alin''' den juwe tanggū ba.
|長白山高約二百里。
|-
|šurdeme minggan ba.
|週圍約千里。
|-
|tere alin i ninggu de '''tamun''' i gebungge omo bi.
|此山之上有一潭名闥門。
|-
|šurdeme jakūnju ba.
|週圍約八十里。
|-
|tere alin ci tucikengge '''yalu''', '''hūntung''', '''aihu''' sere ilan giyang.
|'''鴨綠'''、'''混同'''、'''愛滹'''三江俱從此山流出。
|-
|'''yalu''' giyang alin i julergici tucifi wasihūn eyefi liyoodung ni julergi mederi de dosikabi.
|鴨綠江自山南瀉出向西流直入遼東之南海。
|-
|'''hūntung''' giyang alin i amargici tucifi amasi eyefi amargi mederi de dosikabi.
|混同江自山北瀉出向北流直入北海。
|-
|'''aihu''' bira wesihun eyefi, dergi mederi de dosikabi.
|愛滹江向東流直入東海。
|-
|ere ilan giyang de boobai tana, genggiyen nicuhe tucimbi.
|此三江中每出珠寶。
|-
|šanggiyan alin edun mangga, ba šahūrun nofi.
|長白山山高地寒,風勁不休。
|-
|juwari erin oho manggi, šurdeme alin i gurgu gemu šanggiyan alin de genefi bimbi.
|夏日環山之獸俱投憩此山中。
|-
|šun dekdere ergi ufuhu wehe noho šanggiyan alin tere inu.
|此山盡是浮石,乃東北一名山也。
|-
|}
{{BookCat}}
==manju gurun i da (滿洲源流)==
{|
|-
|'''manju''' gurun i da, golmin šanggiyan alin i šun dekdere ergi '''bukūri''' gebungge alin '''bulhūri''' gebungge omoci tucike.
|滿洲原起於長白山之東北'''布庫哩'''山下一泊名'''布勒瑚里'''。
|-
|tere '''bukūri''' alin i dade bisire '''bulhūri''' omo de abkai sargan jui '''enggulen''', '''jenggulen''', '''fekulen''' ilan nofi ebišeme jifi muke ci tucifi etuku etufi sere de,
|初天降三仙女浴於泊,長名'''恩古倫''',次名'''正古倫''',三名'''佛庫倫''',浴畢上岸。
|-
|fiyanggū sargan jui etukui dele enduri saksaha i sindaha fulgiyan tubihe be bahafi na de sindaci,
|有神鵲銜一朱果置佛庫倫衣上,
|-
|hoirame angga de ašufi etuku eture de ašuka tubihe bilha de šuwe dosifi,
|色甚鮮研,佛庫倫愛之不忍釋手,遂銜口中,甫著衣,其果入腹中,
|-
|gaitai andande beye de ofi.
|即感而成孕。
|-
|wesihun geneci ojorakū hendume, mini beye kušun ohobi, atarame tutara sehe manggi,
|告二姊曰,吾覺腹重,不能回昇,奈何?
|-
|juwe eyun hendume, muse lingdan okto jekebihe, bucere kooli akū,
|二姊曰,吾等曾服丹藥,諒無死理,
|-
|sinde fulinggan bifi kušun ohobidere, beye weihuken oho manggi, jio seme hendufi genehe.
|此乃天意,俟爾身輕,上昇未晚。遂别去。
|-
|fekulen tereci uthai haha jui banjiha, jui ofi uthai gisurembi.
|佛庫倫後生一男,生而能言。
|-
|goidaha akū ambakan oho manggi eme hendume, jui simbe abka facuhūn gurun be dasame banjikini seme banjibuhabi,
|倏爾成成,母告子曰,天生汝,實令汝以定亂國,
|-
|si genefi facuhūn gurun be dasame toktobume banji seme hendufi abka i fulinggai banjibuha turgun be giyan giyan i tacibufi,
|可往彼處,將所生緣由一一詳說,
|-
|weihu bufi, ere bira be wasime gene sefi, eme uthai abka de wesihe.
|乃與一舟順水去即其地也。言訖,忽不見。
|-
|tereci tere jui weihu de tefi eyen be dahame wasime genehei.
|其子乘舟順流而下。
|-
|muke juwere dogon de isinafi, dalin de akūnafi, burha be bukdafi, suiha be sujafi, mulan arafi,
|至於人居之處,登岸折柳條為坐具,似椅形,
|-
|mulan i dele tefi bisire de, tere fonde, tere bai ilan halai niyalma gurun de ejen ojoro be temšenume inenggi dari becendume afandume bisirede,
|獨踞其上。彼時,長白山東南'''鄂謨辉'''(地名)'''鄂多理'''(城名)内有三姓爭為雄長,終日互相殺傷。
|-
|emu niyalma muke ganame genefi, tere jui be sabufi ferguweme tuwafi, amasi jifi becendure bade isaha geren i baru alame,
|一人來取水,見其子舉止奇異,相貌非常,囘至爭鬪之處告眾曰,
|-
|suwe becendure be naka, musei muke ganara dogon de dembei ferguwecuke fulingga banjiha emu haha jui jifi tehebi seme alaha manggi,
|汝等無爭,我於取水處遇一奇男子,非凡人也,想天不虚生此人,盍往觀之?
|-
|becendure bade isaha geren niyalma gemu genefi tuwaci, yala ferguwecuke fulingga jui mujangga.
|三姓人聞言罢戰,同眾往觀。及見,果非常人。
|-
|geren gemu ferguweme fonjime, enduringge jui si ainaha niyalma? tere jui ini emei tacibuha gisun i songkoi alame,
|異而詰之,答曰,
|-
|bi abkai enduri bihe, bukūri alin i dade bisire bulhūri omo de abkai sargan jui wnggulen, jenggulen, fekulen ilan nofi ebišeme jihe bihe, abkai han suweni facuhūn be safi gurun be toktobukini seme mini beye be fulgiyan tubihe obufi emu enduri be saksaha i beye ubaliyambufi fulgiyan tubihe be gamafi bulhūri omo de ebišeme genehe. fiyanggū sargan jui etuku de sindafi jio seme takūrafi, tere enduri saksaha fulgiyan tubihe be saifi gajifi fiyanggū sargan jui etukui dele sindafi, fiyanggū sargan jui muke ci tucifi etuku etuki serede, tere tubihe be bahafi na de sindaci hairame angga de ašufi bilha de dosifi bi banjiha. mini eme abkai sargan jui gebu fekulen. mini hala abka ci wasika aisin gioro, gebu bukūri yongšon seme alaha manggi, geren gemu ferguweme, ere jui be yafaha gamara jui waka seme juwe niyalma gala be ishunde joolame jalafi galai dele tebufi boode gamafi.
|我乃天女佛庫倫所生,姓'''愛新'''(漢語金也)'''覺羅'''(姓也),名'''布庫哩雍順''',天降我定汝等之亂。因將母所囑之言詳告之。衆皆驚異,曰:“此人不可使之徒行。”遂相插手爲輿,擁捧而回。<ref>此段汉文极简略,盖将其出世之详尽情形以"因将母所嘱之言详告之"一言蔽之。</ref>
|-
|ilan halai niyalma acafi hebdeme, muse gurun de ejen ojoro be temšerengge nakaki, ere jui be tukiyefi musei gurun de beile obufi, beri gege be sargan buki seme gidurefi. uthai beri gebungge sargan jui be sargan bufi, gurun de beile obuha. bukūri yongšon šanggiyan alin i šun dekdere ergi omohoi gebungge bigan i odoli gebungge hecen de tefi, facuhūn be toktobufi gurun i gebu be manju sehe, tere manju gurun i da mafa inu.
|三姓人息爭,共奉布庫哩雍順'爲主,以百里女妻之。其國定號'''滿洲''',乃其始祖也(南朝誤名建州)。
|-
|tereci ududu jalan oho manggi, amala banjire juse omosi gurun iegen be jobobure jakade, gurun irgen gemu ubašafi ninggun biya de tehe odoli hecen be kafi afafi bukūri yongšon i uksun mukūn be suntebume wara de.
|歷數世後,其子孫暴虐部署,遂叛,于六月間,將鄂多理攻破,盡殺其闔族子孫。
|}
==enduri saksaha fanca be guwebuhe (神鵲救樊察)==
{|
|-
|bukūri yongšon i enen fanca gebungge jui tucifi šehun bigan be burulame genere be, batai coohai niyalma amcara de,
|内有一幼兒名樊察脫身走至曠野,後兵追之,適有一神鵲,
|-
|emu enduri saksaha deyeme jifi, tere fanca gebungge jui ujui dele doha, amacara coohai niyalma gūnime niyalma de geli saksaha dombio? mukdehen aise seme hendume, gemu amasi bederehe. tereci fanca guwefi tucike, tuttu ofi manju gurun i amaga jalan i juse omosi gemu saksaha be mafa seme warakū bihe. fanca tucifi beye be somime banjiha.
|栖兒頭上,追兵謂人首無鵲之理,疑爲枯木樁,遂回,於是樊察得出,遂隱其身以終焉。滿洲後世子孫皆以鵲爲神,故不加害。
|}
==dudu □□□ batangga niyalma be waha (都督□□□計殺仇人)==
==manju mukdeke da susu (滿洲發跡之處)==
{|
|-
|fancai amaga jalan i omo dudu □□□ erdemungge banjifi, ini nendehe mafari be waha kimungge niyalma juse omosi dehi niyalma be ini mafai yehe omohoi bigan i odoli hecen ci šun tuhere ergi de emu minggan sunja tanggū bai dube be suksuhu bira, hūlan hada hetu ala gebungge ba de jalidame gajifi, dulin be ini mafari kimun bata seme waha, dulin be jafafi ini ahūn deo i boigon be jolime gaifi sindafi unggihe.
|其孫都督'''□□□'''<ref name="a">孟特穆 mentemu</ref>生有智略,將殺祖仇人之子孫四十餘計誘于'''蘇克素護河呼蘭哈達'''(山名)下'''赫圖阿拉'''(赫圖,漢語橫也。阿拉,崗也),距鄂多理西千五百餘里,殺其半以雪仇,執其半以索眷族,既得,遂釋之。
|-
|tereci dudu □□□ tere hūlan hada hetu ala i ba de uthai tehe.
|於是都督□□□<ref name="a">孟特穆 mentemu</ref>居於赫圖阿拉。
|-
|dudu □□□ de banjihangge □□□, cuyan.
|都督□□□<ref name="a">孟特穆 mentemu</ref>生二子,長名'''□□□'''<ref name="b">充善</ref>,次名'''褚宴'''。
|-
|□□□ de banjihangge tolo, toimo, □□□.
|□□□<ref name="b">充善</ref>生三子,長名'''妥羅''',次名'''妥義謀''',三名'''□□□'''。<ref name="c">錫寶齊篇古</ref>
|-
|□□□ de banjihangge dudu □□□.
|□□□<ref name="c">錫寶齊篇古</ref>生一子都督'''□□□'''<ref name="d">福滿 fuman</ref>。
|-
|dudu □□□ de banjihangge desiku, liocan, soocangga, □□□, boolangga, boosi desiku giorca gebungge bade tehe, liocan aha holo gebungge bade tehe, soocangga holo gašan gebungge ba de tehe, □□□ mafai susu hetu ala de tehe, boolangga nimalan gebungge ba de tehe, boosi janggiya gebungge ba de tehe.
|□□□<ref name="d">福滿 fuman</ref>生六子,長名'''徳世庫''',次名'''瑠闡''',三名'''索長阿''',四名'''□□□'''<ref name="e">覺昌安 giocangga</ref>,五名'''寶朗阿''',六名'''寶實'''。徳世庫住'''覺爾察'''地方,瑠闡住'''阿哈和洛'''地方,索長阿住'''何洛噶善'''地方,□□□<ref name="e">覺昌安 giocangga</ref>住其祖居赫圖阿拉地方,寶朗阿住'''尼瑪蘭'''地方,寶實住'''章佳'''地方。
|-
|ninggun niyalma ninggun ba de hoton arafi tehe manggi, tereci ninggutai beise sehe, tere ninggun mafa inu.(hetu alai hecen ci jai sunja hoton gorogge orin ba, hancingge sunja ba bi.)
|六子六處各立城池,稱爲六王,乃六祖也。(五城距赫圖阿拉,遠者不過二十里,近者不過五六里。)
|-
|amba mafa desiku de banjihangge suhecen daifu, tantu, niyanggu fiyanggū.
|長祖徳世庫生三子,長名'''蘇赫臣代夫''',次名'''譚圖''',三名'''尼揚古篇谷'''。
|-
|jacin mafa liocan anjihangge luhucen, maningge, mentu.
|二祖瑠闡生三子,長命'''祿瑚臣''',次名'''瑪寧格''',三名'''們圖'''。
|-
|ilaci mafa soocangga de banjihangge litai, utai, coki ajugu, longdun, fiongdun.
|三祖索長阿生五子,長名'''禮泰''',次名'''武泰''',三名'''綽奇阿珠庫''',四名'''龍敦''',五名'''斐揚敦'''。
|-
|duici mafa □□□ de banjihangge lidun baturu, erguwen, jaikan, □□□, taca fiyanggū.
|四祖□□□<ref name="e">覺昌安 giocangga</ref>生五子,長命'''禮敦巴圖魯'''(巴圖魯,漢語勇也),次名'''額爾袞''',三名'''齋堪''',四名'''□□□'''<ref name="f">塔克世 taksi</ref>,五名'''塔察'''。
|-
|sunjaci mafa boolangga de banjihangge duicin, lengdun.
|五祖寶朗阿生二子,長命'''對秦''',次名'''棱敦'''。
|-
|ningguci mafa boosi de banjihangge kanggiya, ahana, aduci, dorhoci.
|六祖寶實生四子,長命'''康嘉''',次名'''阿哈納''',三名'''阿篤齊''',四名'''多爾和齊'''。
|-
|tere fonde, šosena gebungge niyalma uyun haha jui gemu hūsungge etuhun.
|彼時,有一人名'''碩色納''',生九子,皆强悍。
|-
|jai giyahū gebungge niyalmai nadan haha jui gemu gabsihiyan hūsungge ofi uyun ihan be ilibufi uksin etuhei dabali dabali terkime fekumbihe.
|又一人名'''加呼''',生七子,俱驍勇,常身披重鎧連越九牛。
|-
|tere juwe mukūn ceni hūsun de ertufi baba dbe nungneme gidašambihe.
|二姓恃其強勇,每各處擾害。
|-
|ninggutai duicin erdemungge mergen, jui lidun geli baturu mangga ofi, ninggutai beise be gaifi dailame, šosenai juse uyuntai mukūn be efulefi,
|時□□□<ref name="e">覺昌安 giocangga</ref>有才智,其子禮敦又英勇,遂率其本族六王,將二姓盡滅之。
|-
|giyahūi juse nadan ta be suntebufi. sunja dabagan ci wesihun, suksuhu birai sekiyen ci wasihūn juwe tanggū bai dorgi aiman be dahabufi, tereci ninggutai beise etenggi oho.
|自五嶺以東,蘇克素護河以西,二百里内,諸部盡皆臣服,六王自此强盛。
|-
|ninggutai boosi ninggucin i jui ahana wejige sakda gebungge bade tehe goloi amban bashan i non be yabuki seme genefi gisureci, bashan bauru hendume, si ninggutai beise mujangga, sini boo yadambi, mini non be burakūnsere jakade.
|初,寶實次子阿哈納至'''薩克達部''',欲聘部長巴斯翰巴圖魯妹爲妻,'''巴斯翰'''曰:“爾雖六王子孫,家貧,吾妹必不妻娶。”
|-
|ahana bi since ainaha seme hokorakū seme hendufi, ini ujui funiyehe be faitafi werifi jihe.
|阿哈納曰:“汝雖不允,吾決不甘心。”遂割髮留擲而去。
|-
|tereci amala bashan baturu ini non be donggoi aiman i ejen kece bayan i jui elgi warka be buhe.
|巴斯翰愛棟鄂部長'''克徹殷富''',遂以妹妻其子'''額爾機'''。
|-
|elgi warka sakda de dacalame genefi, amasi ini boode jidere de, tomoho gebungge ba de tehe etu aru gebungge amban i harangga uyun hūlha abdari gebungge dabagan de tosidi elgi warka be waha.
|後額爾機自巴斯翰家回,至'''阿布達哩嶺''',被'''托漠河'''處'''額圖阿嚕部'''下九賊<截殺>。
|-
|tere tosoho uyun hūlha de encu ahana gebungge niyalma bifi, hūlhai hoki ahana seme hūlha be niyalma donjifi gisurere be kece bayan donjifi hendume, ninggutai ahana wejige yabuki sehe sargan jui be mini ji gaiha, tere kemun de ninggutai beise wahabi dere seme gisurehe be hadai gurun i wan han donjifi donggoi kece bayan de elcin takūrame sini jui be ninggutai niyalma wahakūbi, etu alu i uyun hūlha wahabi, tere uyun hūlha be bi jafafi bure, si minde daha seme takūraha manggi.
|截殺之賊中有與阿哈納同名者,群賊驚呼,路人悉傳阿哈納之名,克徹聞之,曰:“先寶實之子阿哈納欲聘吾兒婦,其兄不允,吾兒遂娶。今殺吾兒者必此人也。”時哈達國汗(名'''萬''')聞其言,遣使往告克徹曰:“汝子非寶實之子所殺,乃額圖阿嚕部下九賊殺之,我擒此九賊與爾,爾當順我。”
|-
|kece bayan hendume, mini jui wabuha dele geli mimbe aihu sinde daha sembi?
|克徹曰:“吾兒被殺,何故又令我降?
|-
|ninggutai niyalma suwe etu aru be bai goro seme jortai tede aname gisurembidere. muse gemu emu halai ahūn deo kai, ninggutai niyalma tondo seci hadai niyalma de uli aisin menggun bufi, etu arui uyun hūlha be gaifi minde gaji bi fonjire, tere uyun hūlha ninggutai niyalma be wahakū seci, hadai niyalma de suweni buhe ulin menggun aisin de bi holbome toodara seme gisurehe be ninggutai soocangga ilacin i boo i ekecin gebungge niyalma donjifi ini ejen de alanjire jakade.
|此不過以路遠之額圖阿嚕爲辭耳。吾等地屬同鄰,若果寶實之子未殺吾兒,何不以金帛饋哈達汗擒此賊與我面質?若系賊殺吾子,金帛吾當倍償。”時有索長阿部落'''額克沁'''聞之,即往告其主。
|-
|soocangga ilacin donggoi kece bayan de dorgideri niyalma takūrame, sini jui be mini elbengge, ekcingge wahabi, mini niyalma be bi wara, minde ulin gaji sere jakade, kece bayan hendume, hadai gurun i wan han oci etu arui uyun hūlha be waha sembi, soocangga si geli sini elbengge, ekecingge be waha sembi, gemu suweni ninggutai niyalma eiterembi nikai seme, uthai dalin ofi.
|索長阿私遣人往誑克徹曰:“汝子是我部下額爾綳格與額克青格謀殺,若以金帛遺我,我當殺此二人。”克徹曰:“哈達汗言額圖阿嚕部下九賊殺之,爾又云爾部人殺之,此必汝等設計誑我。”於是遂成仇敵。
|-
|kece bayan ninggutai beisei harangga dergi julergi juwe golo be sucuha.
|因引兵攻剋六王東南所屬二處,
|-
|ninggutai beise anabure isifi hebdeme, muse emu mafa de fuseke beise juwan juwe gašan de teci facuhūn, emu gašan de acafi teki seme gisureme wajiha hebe be ineku soocangga ilacin i jui utai efuleme hedume, emu gašan de acafi adarame tembi?
|六王不能支,相謀曰:“我等同祖所生,今分局十二處,甚是渙散,何不聚居共相保守?”
|-
|ulha ujirakū banjimbio?emu gašan de acafi tere be nakafi, mini amha hadai wan han de cooha baiki seme hendufi, wan han de cooha baifi donggoi aiman be juwe jergi sucufi ududu gašan be gaiha.
|衆議界定,獨武泰不從,曰:“我等同往一處,牲畜難以養息,吾今詣妻父哈達汗處借兵報復。”
|-
|tere cooha baire onggolo, ninggutai beise hadai gurun i wan han de jui bume urun gaime ishunde sadun jafame banjiha.
|於是遂借兵往攻剋克徹二次,獲其數寨。初未借兵之先,六王與哈達國汗互相結親,兵勢比肩。
|-
|hadai cooha be baihaci, ninggutai aiman majige ebereke.
|自借兵后,六王之勢漸衰。
|-
|ninggutai □□□ duicin i duici jui □□□ i gaiha amba fujin i hala hitara, gebu □□□, agu dudu gebungge amban i sargan jui.
|□□□<ref name="e">覺昌安 giocangga</ref>第四子□□□<ref name="f">塔克世 taksi</ref>嫡福金乃'''阿古'''都督長女,姓喜塔喇,名'''□□□'''<ref name="g">額穆齊</ref>
|-
|ere fujin de banjihangge ilan jui, amba jui gebu □□□, tukiyehe gebu sure beile, tere manju gurun i taidzu genggiyen han inu, jacin jui gebu šurgaci, tukiyehe gebu darhan baturu, ilaci jui gebu yargaci.
|生三子,長名'''□□□'''<ref name="h">努爾哈赤 nurhaci</ref>,即太祖,號'''淑勒貝勒'''(淑勒貝勒,漢語聰睿王也);次名'''舒爾哈齊''',號'''達爾漢巴圖魯''';三名'''雅爾哈齊'''。
|-
|jai fujin i hala nara, gebu kenje, hadai gurun i wan han i gaifi ujihe uksun i sargan jui.
|側福金乃哈達國汗所養族女,姓納喇,名'''懇哲'''。
|-
|tere fujin de banjihangge bayara, tukiyehe gebu joriktu.
|生一子,名'''巴雅喇''',號'''卓里克圖'''(卓里克圖,漢語能幹也)。
|-
|buya fujin de banjihangge murhaci, tukiyehe gebu cing baturu.
|側室生一子,名'''穆爾哈齊''',號'''青巴圖魯'''。
|-
|taidzu □□□ han ojoro fulingga bifi eme amba fujin □□□ beye de ofi juwan ilaci biya de nikan ii daiming gurun i giya jing han i gūsin jakūci sohon honin aniya banjiha.
|初,□□□<ref name="g">額穆齊</ref>孕十三月生太祖,時乙未歲明嘉靖三十八年也。
|-
|tere fonde sara niyalma gisureme, manju gurun de fulingga niyalma tucifi babai facuhūn be toktobume gurun de dahabufi han tembi sehe.
|是時,有識見之長者言,滿洲必有聖人出,戡亂政治,服諸國爲帝。
|-
|tere gisun be niyalma ilame donjifi bi bi han ombidere seme mujakū niyalma erenume gūniha.
|此言傳聞,人皆妄自期許。
|-
|taidzu sure beile mutuha manggi, beye den amban, giranggi muwa, derei fiyan genggiyen gu i adali, fucihi šan, funghūuwang ni yasa, gisurere jilgan tomorhon bime yargiyan getuken, emgeri donjiha be onggorakū, dartai saha be takambi, tere ilire de ujen jingji, arbun giru geren ci temgetu,
|太祖生鳳眼大耳,面如冠玉,身體高聳,骨骼雄偉,言辭明爽,聲音響亮,一聽不忘,一見即識,
|-
|muduri tuwara tasha yabure adali horon mangga, mujilen tondo, kengsa lasha, sain be saha de tukiyere be kenehunjerakū, ehe be saha de bederebure be jibgešerakū, coohai erdemu, gabtara niyamniyara baturu hūsun jalan ci lakcahabi, arga bodogon šumin, cooha baitalarangge enduri gese, tuttu ofi genggiyen han sehe.
|龍行虎步,舉止威嚴,其心性忠實剛果,任賢不二,去寫無疑,武藝超群,英勇蓋世,深謀遠略,用兵如神,因此號爲明汗。
|-
|taidzu sure beilei juwan se de, banjiha eme akū ofi, sirame eme oshon ehe, ama □□□ sargan i gisun de dosifi jui be juwan uyun se baha manggi delhebure de aha ulha be ambula buhekū.
|十歲時喪母。繼母妒之,父惑與繼母言,遂分居,年十九歲矣,家產所予獨薄。
|-
|amala jui erdemungge sain be safi, neneme buhekū aha ulha be gaisu seci, sure beile gaihakū.
|後見太祖有才智,復厚與之,太祖終不受。
|-
|tere fonde babai gurun facuhūn ofi, manju gurun i suksuhu birai goloi aiman, hunehe birai goloi aiman, wanggiyai goloi aiman, donggoi goloi aiman, jecen i bai aiman, šanggiyan alin i goloi neyen, yalu giyang ni aiman, dergi mederi goloi weji warka kūrkai aiman,
|時各部環滿州國擾亂者,有'''蘇克素護河部'''、'''渾河部'''、'''完顏部'''、'''棟鄂部'''、'''哲陳部'''、長白山'''訥殷部'''、'''鴨綠江部'''、'''東海窩集部'''、'''瓦爾喀部'''、'''庫爾喀部'''、
|-
|hūlun gurun i ulai goloi aiman, hadai goloi aiman, yehei goloi aiman, hoifai goloi aiman babade hūlha holo hibsui ejen i gese der seme dekdefi meni meni beye be tukiyefi han beile amban seme gašan tome ejen, mukūn tome uju ofi ishunde dailame afame, ahūn deo i dolo wame, uksun geren, hūsun etuhun niyalma, yadalinggū budun be gidašame durime cuwangname, ambula facuhūn bihe.
|'''呼倫國'''中'''烏拉部'''、'''哈達部'''、'''葉赫部'''、'''輝發部'''。各部蜂起,皆稱王爭長,互相戰殺,甚且骨肉相殘,強淩弱,眾暴寡。
|-
|tere babai facuhūn gurun be manju gurun i taidzu genggiyen han fudasihūn ningge be cooha horon i dailame, ijishūn ningge be erdemui dahabume uhe obufi.
|太祖能恩威並行,順著以德服,逆著以兵臨,於是削平各部。
|-
|daiming gurun be dailame deribufi liyoodung guwangning ni babe baha.
|後攻克'''明'''國'''遼東'''諸城。
|-
|tere babai facuhūn gurun i banjihangge:
|諸部世系:
|-
|ulai aiman i da gebu hūlun, hala nara, amala ulai birai dalin de gurun tehe seme gurun i gebu be ula sehe.
|烏拉國本名呼倫,姓’’’納喇’’’,後因居’’’烏拉河’’’岸,故名烏拉。
|-
|ulai gurun i da mafa nacibulu, nacibulu de banjihangge šanggiyan dorhoci, šanggiyan dorhoci de banjihangge giyamaka šogojū, giyamaka šogojū de banjihangge suitun, suitun de banjihangge dulgi, dulgi de banjihangge kesina dudu, gudei juyan.
|始祖名'''納齊蔔祿''',生'''商堅多爾和齊''',商堅多爾和齊生'''嘉瑪喀額珠古''',嘉瑪喀額珠古生''' 綏屯''',綏屯生'''都爾機''',都爾機生二子,長名'''克錫納'''都督,次名'''古對珠延'''。
|-
|kesina dudu de banjihangge cecemu, cecemu de banjihangge wan.
|克錫納都督生'''徹徹木''',徹徹木生萬(後為哈達國汗)。
|-
|gudei juyan de banjihangge tairan, tairan de banjihangge buyan, buyan ulai aiman be gebu dahabufi, ulai birai dalin i hongni gebungge bade hoton arafi tefi enculeme beile sehe.
|古對珠延生'''太蘭''',太蘭生'''布顏''',布顏盡收烏拉諸部,率眾於烏拉河'''洪尼'''處稱王。
|-
|buyan de banjihangge bugan, bokdo.
|<ref name="i">布顏生布幹、博克多。</ref>
|-
|buyan beile akū oho manggi, jui bugan siraha.
|布彥<ref name="j">"布彥"系"布顏"之誤</ref>卒,其子'''布幹'''繼之,
|-
|bugan beile akū oho manggi, jui mantai siraha.
|布幹卒,其子'''滿泰'''繼之。
|-
|hadai gurun i wanhan i hala nara, gurun i da gebu hūlun, amala hada gebungge ba de gurun tehe seme gurun i gebu be hade sehe, ulai gurun i beisei da mafa nacibului nadaci jalan i omolo.
|
|-
|wan i mafa kesina dudu be ini uksun i badai darhan wara jakade, wan burulame tucifi, sibei aiman i hanci suiha gebungge hoton de tehe.
|
|-
|wan i eshen wangju wailan geli burulame genefi, hadai aiman de ejen oho.
|
|-
|amala hadai aiman facuhūnrafi, wangju wailan be waha manggi, wangju wailan i jui bolkon šwjin amai bata be wafi ahūn wan be suiha hoton de ganafi uthai aiman de ejen obuha.
|
|-
|wan hanciki be dailame goroki be dahabume etenggi oho manggi, wan enculeme han ofi, gurun i gebu be hada sehe.
|
|-
|tere fonde wan han de yehe, ula, hūifa, manju gurun i hunehe goloi aiman dahafi.
|
|-
|yaya weile be wan han de habšaname aisin menggun, ulin jodon benehe niyalma weile yargiyan i waka bicibe urunakū uru obume, aisin menggun, ulin jodon benehekū niyalma weile udu uru bicibe urunakū waka obume beideme.
|
|-
|ulin de doosi ehe oshon ofi, ambasa gemu alhūdume golo golo de takūraha bade dabašame gohodome ulgiyan coko be gabtame wame, sain ulin, sain giyahūn indahūn be saha de uthai gaime, ulin buhe niyalma be sain, buhekū niyalma be ehe seme alaha de, wan han da dube be dacilarakū gisun be gaime, gurun de jobobume ofi ini baha doro ini beye de efujeme deribufi, irgen ambula uba šafi yehei gurun de dosika, neneme dahaha gurun gemu gūwaliyaka.
|
|-
|wan han akū oho manggi, jui hūrgan sirafi, goidahakū jakūci biya de akū oho, hūrgan beile akū oho manggi, deo kanggūru siraha, kanggūru beile akū oho manggi, deo menggebullu siraha.
|
|-
|yehei aiman i da maafa monggo gurun i niyalma, hala tumet, jang gebungge bade tehe hūlun nara halai aiman be efulefi, terei babe salifi nara hala oho.
|
|-
|amala yehe gebungge birai dalin de gurun tehe seme gurun i gebu be yehe sehe.
|
|-
|da mafa singgen darhan, singgen darhan de banjihangge sirke minggatu, sirke minggatu de banjihangge cirgani, cirgani de banjihangge cukungge, cukungge de banjihangge taicu, taicu de banjihangge cinggiyanu, yangginu, cinggiyanu, yangginu yehei aiman be gemu dahabufi ,ahūn deo emte hoton de tehe manggi, hadai gurun i niyalma ambula dahame jihe, tereci cinggiyanu, yangginu enculeme belie oho.
|
|-
|daiming gurun i wanlii han taidzi taiboo hergen i lii cweng liyang gebungge amban hadai niyalma šusihiyeme benehe boro dobihi, sahaliyan seke, aisin menggun be alime gaifi, yehei gurun i cinggiyanu, yangginu juwe beile be k'ai yuwan hecen de jio, ejehe ulin bure seme jalidame gamafi, wan lii han i juwan juwe ci niowanggiyan bonio aniya, cinggiyanu, yangginu juwe beile dahame genehe, ilan tanggū cooha be guwan yei miyoo i dolo horifi gemu waha.
|
|-
|tere juwe beile wabuha manggi, cinggiyanu beilei jui bujai, yangginu beilei jui narimbulu gurun be ejelefi beile oho.
|
|-
|daiming gurun i wan lii han i lii ceng liyang yehei gurun i juwe beile be wafi, uthai cooha gaifi, yehei gurun be dailame genefi, duka niyahan gebungge juwe gašan be afame gaiha.
|
|-
|tere afara de coohai niyalma ambula koro bahara jakade, uthai cooha bederehe.
|
|-
|wan lii juwan ningguci suwayan singgeri aniya, lii ceng liyang geli cooha gaifi, yehei gurun be dailame genefi, narimbulu beilei tehe dergi hecen be kafa afame, coohai niyalma ambula koro bahafi, afame muterakǖ, cooha bederehe.
|
|-
|hoifa i gurun i da hala ikderi, sahaliyan ulai(sahaliyan ula helung giyang inu, terei da šanggiyan alin ci tucikebi) dalin de tehe nimaca aiman i niyalma.
|
|-
|da mafa anggūli, singgūli sahaliyan ula ci gurime soki weceku be gajime jifi jaru gebungge bade tefi, jang gebungge bade tehe hūlun i gayangga tumetu gebungge niyalmai nara hala de dosime, abka de nadan ihan meteme nara hala oho.
|
|-
|singgūli de banjihangge liocen beicen, beicen de bajihangge nalingga, naikū wan, nalingga de banjihangge laha dudu, laha dudu de banjihangge gacahan dudu, gacahan dudu de banjihangge cinegen darhan, cinegen darhan de banjihangge wangginu, wangginu hoifai aiman be dahabufi, hoifai birai dalin i hūrki gebungge hada de hoton arafi tefi, gurun i gebu be hoifa sehe.
|
|-
|tere fonde monggo gurun i cahar i jasaktu tumen han ini beye cooha jifi wangginu beilei tehe hoifa hoton be kafi afafi bahakū cooha bederehe.
|
|-
|wangginu beile akū oho manggi, omolo baindari ini nada eshen be gemu wafi hoifai gurun be emhun ejelefi beile oho.
|
|-
|nikan i daiming gurun i wan lii han i juwan emuci sahahūn honin aniya niyengniyeri dulimbai biya de, manju gurun i sukushu birai aiman i turun i hoton i nikan wailan gebungge niyalma wan lii han i taidzi taiboo hergen i lii ceng liyang gebungge amban be šusihiyefi, gure gebungge hoton i ejen atai janggin, šaji gebungge hoton i ejen ahai janggin be dailame, nikan wailan temgutuleme guwafulafi, lii ceng liyang guwangning, liyoodung ni cooha be gaifi juwe jugūn i dosime jifi.
|
|-
|lii ceng liyang ini beye atai janggin i gurei hoton be kaha, liyoodung ni fujiyang ahai janggin i tehe šaji hoton be kame jidere be hoton i niyalma sabufi, dulga burulame nukcike, dulga niyalma faitabufi hoton de kabuha, liyoodung ni fujiyang ni cooha tere šaji hoton be afame gaifi, ahai janggin be wafi.
|
|-
|lii ceng liyang de acanjifi atai janggin i gurei hoton be kaha.
|
|-
|tere hoton i ejen atai janggin de manju gurun i taidzu sure beilei mafa □□□ jui lidun baturu i sargan jui be buhe bihe.
|
|-
|tere cooha jihe medege be manju gurun i taidzu sure beilei mafa □□□ donjifi, ini omolo sargan jui be daiming ni cooha be gaiburahū seme ini duici jui □□□ be gamame genefi gurei hoton de isinafi, lii ceng liyang ni cooha jing afara delimba de, jui □□□ be hoton i tule ilibufi, ini beye hoton de dosifi oomoli sargan jui be tucibufi gajiki seci, atai janggin unggirakū bisire de, jui □□□ ama be goidambi seme geli hoton de dosika.
|
|-
|tereci lii ceng liyang gerei hoton be kafi afaci, tere hoton alin i ninggu de sahafi akdun ofi atai janggin cooha gaifi bekileme tuwakiyafi duka tucifi hoton bitumen afara cooha be sacime udu udu jergi waha.
|
|-
|lii ceng liyang afame muterakū cooha ambula kokirabure jakade, nikan wailan be hafirame, si šusihiyefi gajifi mini cooha kokiraha seme jafaki sere de, nikan wailan golofi hendume, bi hūlame dehabume tuwara sefi hoton i niyalma baru jadalime hūlame, ere amba gurun i cooha jifi suwembe sindafi genenbio?
|
|-
|coohai niyalma suwe atai be wafi daha, jihe coohai ejen i hendurengge atai be waha niyalma be uthai ere hecen de ejen obure sembi seme hūlata jakade.
|
|-
|hoton dorgi niyalma akdafi, ini ejen atai janggin be wafi lii ceng liyang de dahaha.
|
|-
|lii ceng liyang hoton i niyalma be jalidame tucibufi hehe juse ci aname gemu wara de, nikan wailan daiming ni cooha be šusihiyefi, manju gurun i taidzu sure beilei mafa □□□, ama □□□ be emgi suwaliyame waha.
|
|-
|taidzu sure beile daiming gurun i ambasai baru miin mafa ama be umai weile akū ai turgunde waha seme gisurere jakade, daiming wan lli han taidzu sure beile de sini mafa ama be cohome waha weile waka endebuhe seme, ama madai giran gūsin ejehe, gūsin morin benjihe, jai geli nememe dudu ejehe benjihe manggi.
|
|-
|sure beile hendume, mini mafa ama be wa seme šusihiyehe nikan wailan be jafafi minde gaji sere jakade, daiming gurun i niyalma hendume, sini mafa ama be cohome deribuhe weila waka endubuhe seme neneme gūsin ejehe, gūsin morin buhe, te geli dudu ejehe buhe, weile emgeri wajiha kai.
|
|-
|uttu fudaraci, be nikan wailan de dafi giyaban gebungge bade hoton afara bufi, nikan wailan be suweni manju gurun de han obumbi sere jakade, tere gisun de manju gurn i niyalma gemu akdafi nikan wailan de dahaha.
|
|-
|sure beilei emu uksun i ninggutai sunja mafai juse omosi sure beile be wafi geli nikan wailan de dahaki seme tangse de gashūha.
|
|-
|nikan wailan geli sure beile be inde daha sere jakade, sure beile hendume, nikan wailan si mini amai jušen i ton biihe sinde dahafi tanggū se bahambio sseme korsome bisire de.
|
|-
|nikan waialan daiming gurun i fušun šo hecen i hafan de beleme alafi suksuhu birai aiman i sarhū i hoton ejen nominai ahūn gūwara gebungge niyalma be ura dure jakade, deo nomina suksuhu birai aiman i giyamuhū gašan i ejen gahašan hashū.
|
|-
|jan ni birai gašan i ejen cangšu, yangšu ahūn deo gemu korsofi hebešeme mujakū niyalma be tuwame banjire anggala, aisin gioro halangga ninggutai beise be tuwame banjiki seme gisurefi, sure beile de dahame jifi, ihan wame abka de gashūrede, taidzu sure beilei baru duin amban hendume, membe yayaci neneme dahame jihe be gūnici, jušen ume obure, ahūn deo i gese gosime uji seme hendufi gashūha.
|
|}
{{BookCat}}
{{stub}}
[[カテゴリ:満洲語]]
8vq8lyd070zzmiw9sh9irbr1qfawe9l
カラフトナヨロ惣乙名文書
0
25788
262853
217268
2024-10-31T13:04:40Z
MiiCii
32480
262853
wikitext
text/x-wiki
北海道大学附属図書館が所蔵されている清朝(1636-1912年)が樺太アイヌに朝貢を促した文書と日本側の文書『カラフトナヨロ惣乙名(そうおとな)文書』です。
中国側4通(中国語2通、満洲語2通)と日本側9通の計13通で構成されております。収録内容は以下をご覧ください。(未完成)
==中国語文書==
* [[カラフトナヨロ惣乙名文書・中国語・一]]
* [[カラフトナヨロ惣乙名文書・中国語・二]]
==満洲語文書==
* カラフトナヨロ惣乙名文書・満洲語・一 ([[カラフトナヨロ惣乙名文書・満洲語・一・満洲文字|満洲文字]])([[カラフトナヨロ惣乙名文書・満洲語・一・ラテン文字|ラテン文字]])
* カラフトナヨロ惣乙名文書・満洲語・二 乾隆四十年(1775)三月二十日 ([[カラフトナヨロ惣乙名文書・満洲語・二・満洲文字|満洲文字]])([[カラフトナヨロ惣乙名文書・満洲語・二・ラテン文字|ラテン文字]])
==日本語文書==
* [[カラフトナヨロ惣乙名文書・日本語・一]]
* [[カラフトナヨロ惣乙名文書・日本語・二]]
* [[カラフトナヨロ惣乙名文書・日本語・三]]
* [[カラフトナヨロ惣乙名文書・日本語・四]]
* [[カラフトナヨロ惣乙名文書・日本語・五]]
* [[カラフトナヨロ惣乙名文書・日本語・六]]
* [[カラフトナヨロ惣乙名文書・日本語・七]]
* [[カラフトナヨロ惣乙名文書・日本語・八]]
* [[カラフトナヨロ惣乙名文書・日本語・九]]
[[カテゴリ:カラフトナヨロ惣乙名文書]]
[[カテゴリ:中国語]]
[[カテゴリ:満洲語]]
[[カテゴリ:日本語]]
5t3t6u0txtffvw3omxz2lsbu7z5guv3
カラフトナヨロ惣乙名文書・満洲語・二・ラテン文字
0
25789
262852
217483
2024-10-31T13:04:35Z
MiiCii
32480
262852
wikitext
text/x-wiki
'''meiren -i janggin yamun -i bithe'''
'''カラフトナヨロ惣乙名(そうおとな)文書・満洲語・二'''
meiren -i janggin yamun -i bithe, too hala, halai da <u>orkobso</u>, gašan -i da <u>tusokurdenggi</u> sede alibuha. ulhibume selgiyere jalin, ilan biyai juwan juwe de,
jiyanggiyūn yamun ci unggihe bithede, sakini sere jalin, boigon fiyenten -i alibuhangge, abkai wehiyehe -i dehici aniya ilan biyai ice de alime gaiha, aliha bithei da hiya kadalara dorgi amban tondo baturu gung sei jasiha bithede, abkai wehiyehe -i dehici aniya juwe biyai ice sunja de<br>
hese wasimbuhangge, yaya gemun hecen de jihe heje fiyaka <small>''[正式には'''heje fiyaha'''<ref>『欽定清漢對音字式』道光十六年三月十九日內閣奉 p.56第八行</ref>, “[[w:ナナイ|ホジェン族/ナナイ人]]”]''</small> -i <u>lidaka</u>, mama eršere de nimeme akū oho bime, onggolo inu ere gese bihe, erebe tuwaci ceni beye gemu eshun, ce goro bici alban jafame sargan gaime gemun hecen de jifi mama eršere de nimeme akū oho ohongge umesi jilaka, ese da baci gemun hecen de isirarengge jugūn umesi goro bime gemun hecen de tuweri dubesilere, niyengniyeri dosire nerginde mama eršerengge labdu, cende labdu tusa akū,hono erin -i šahūrun seruken be bodome erdeken -i jibufi uthai hūdun icihiyafi amasi unggici teni sain, erebe ildun de girin ulai jiyanggiyūn de jasifi, ereci julesi heje fiyaha -i urse gemun hecen de jifi alban jafame sargan gaiki serengge bici, kemuni nenehe songkoi cembe hon sitabufi tuweri erinde jurambufi gemun hecen de unggici ojorakū, urunakū nadan jakūn uyun biyai serguwen ucuri be amcame jibufi, harangga baci uthai kooli sonkoi inde sargan isibume icihiyafi da bade amasi unggikini, uttu ohode, ceni beye umesi tusa sehebe gingguleme dahafi, erei jalin jasiha seme isinjihabi, erebe ningguta, ilan hala meiren -i janggin sei yamun de bithe jabubufi, ulame heje fiyaka, kuye fiyaka -i ursede selgiyefi, ereci julesi jafan alban jafame gemun hecen de sargan gaime generengge bici, urunakū nadan jakūn biyai dorgide serguwen ucuri be amcame icihiyafi unggikini seme bithe jabubuki sembi seme alibuhabi, erei jalin unggihe seme isinjihabi, uttu ofi<br>
hese be dahame, suweni kuye fiyaka -i urse gemun hecen de alban jafame sargan gaiki seme generengge bici erdeken -i jifi nadan jakūn uyun biyai dorgide serguwen -i ucuri gemun hecen de isiname genekini, erei jalin ulhibume selgiyehe.
abkai wehiyehe -i dehici aniya ilan biyai orin.
[[カテゴリ:満洲語]]
[[カテゴリ:カラフトナヨロ惣乙名文書]]
7kqzakwd7imziax5uqz1ptkddq53eos
カラフトナヨロ惣乙名文書・満洲語・二・満洲文字
0
25791
262851
217484
2024-10-31T13:04:27Z
MiiCii
32480
262851
wikitext
text/x-wiki
{{MongolUnicode|<br><big><big><big>ᠮᡝᡳᡵᡝᠨ ᡳ ᠵᠠᠩᡤᡳᠨ ᠶᠠᠮᡠᠨ ᡳ ᠪᡳᡨᡥᡝ</big></big></big><br><br><br>
ᠮᡝᡳᡵᡝᠨ ᡳ ᠵᠠᠩᡤᡳᠨ ᠶᠠᠮᡠᠨ ᡳ ᠪᡳᡨᡥᡝ᠈ ᡨᠣᠣ ᡥᠠᠯᠠ᠈ ᡥᠠᠯᠠᡳ ᡩᠠ ᠣᡵᡴᠣᠪᠰᠣ᠈ ᡤᠠᡧᠠᠨ ᡳ ᡩᠠ ᡨᡠᠰᠣᡴᡠᡵᡩᡝᠩᡤᡳ ᠰᡝᡩᡝ ᠠᠯᡳᠪᡠᡥᠠ᠉ ᡠᠯᡥᡳᠪᡠᠮᡝ ᠰᡝᠯᡤᡳᠶᡝᡵᡝ ᠵᠠᠯᡳᠨ᠈ ᡳᠯᠠᠨ ᠪᡳᠶᠠᡳ ᠵᡠᠸᠠᠨ ᠵᡠᠸᡝ ᡩᡝ᠈ <br>
ᠵᡳᠶᠠᠩᡤᡳᠶᡡᠨ ᠶᠠᠮᡠᠨ ᠴᡳ ᡠᠩᡤᡳᡥᡝ ᠪᡳᡨᡥᡝᡩᡝ᠈ ᠰᠠᡴᡳᠨᡳ ᠰᡝᡵᡝ ᠵᠠᠯᡳᠨ᠈ ᠪᠣᡳᡤᠣᠨ ᡶᡳᠶᡝᠨᡨᡝᠨ ᡳ ᠠᠯᡳᠪᡠᡥᠠᠩᡤᡝ᠈ ᠠᠪᡴᠠᡳ ᠸᡝᡥᡳᠶᡝᡥᡝ ᡳ ᡩᡝᡥᡳᠴᡳ ᠠᠨᡳᠶᠠ ᡳᠯᠠᠨ ᠪᡳᠶᠠᡳ ᡳᠴᡝ ᡩᡝ ᠠᠯᡳᠮᡝ ᡤᠠᡳᡥᠠ᠈ ᠠᠯᡳᡥᠠ ᠪᡳᡨᡥᡝᡳ ᡩᠠ ᡥᡳᠶᠠ ᡴᠠᡩᠠᠯᠠᡵᠠ ᡩᠣᡵᡤᡳ ᠠᠮᠪᠠᠨ ᡨᠣᠨᡩᠣ ᠪᠠᡨᡠᡵᡠ ᡤᡠᠩ ᠰᡝᡳ ᠵᠠᠰᡳᡥᠠ ᠪᡳᡨᡥᡝᡩᡝ᠈ ᠠᠪᡴᠠᡳ ᠸᡝᡥᡳᠶᡝᡥᡝ ᡳ ᡩᡝᡥᡳᠴᡳ ᠠᠨᡳᠶᠠ ᠵᡠᠸᡝ ᠪᡳᠶᠠᡳ ᡳᠴᡝ ᠰᡠᠨᠵᠠ ᡩᡝ<br>
ᡥᡝᠰᡝ ᠸᠠᠰᡳᠮᠪᡠᡥᠠᠩᡤᡝ᠈ ᠶᠠᠶᠠ ᡤᡝᠮᡠᠨ ᡥᡝᠴᡝᠨ ᡩᡝ ᠵᡳᡥᡝ ᡥᡝᠵᡝ ᡶᡳᠶᠠᡴᠠ<ref>'''''『欽定清漢對音字式』'''''道光十六年三月十九日內閣奉 p.56第八行 <small>[正式には: '''{{MongolUnicode|ᡥᡝᠵᡝ ᡶᡳᠶᠠᡥᠠ}}''', heje fiyaha“[[w:ナナイ|ホジェン族/ナナイ人]]”]</small></ref> ᡳ ᠯᡳᡩᠠᡴᠠ᠈ ᠮᠠᠮᠠ ᡝᡵᡧᡝᡵᡝ ᡩᡝ ᠨᡳᠮᡝᠮᡝ ᠠᡴᡡ ᠣᡥᠣ ᠪᡳᠮᡝ᠈ ᠣᠩᡤᠣᠯᠣ ᡳᠨᡠ ᡝᡵᡝ ᡤᡝᠰᡝ ᠪᡳᡥᡝ᠈ ᡝᡵᡝᠪᡝ ᡨᡠᠸᠠᠴᡳ ᠴᡝᠨᡳ ᠪᡝᠶᡝ ᡤᡝᠮᡠ ᡝᠰᡥᡠᠨ᠈ ᠴᡝ ᡤᠣᡵᠣ ᠪᡳᠴᡳ ᠠᠯᠪᠠᠨ ᠵᠠᡶᠠᠮᡝ ᠰᠠᡵᡤᠠᠩᠠᡳᠮᡝ ᡤᡝᠮᡠᠨ ᡥᡝᠴᡝᠨ ᡩᡝ ᠵᡳᡶᡳ ᠮᠠᠮᠠ ᡝᡵᡧᡝᡵᡝ ᡩᡝ ᠨᡳᠮᡝᠮᡝ ᠠᡴᡡ ᠣᡥᠣ ᠣᡥᠣᠩᡤᡝ ᡠᠮᡝᠰᡳ ᠵᡳᠯᠠᡴᠠ᠈ ᡝᠰᡝ ᡩᠠ ᠪᠠᠴᡳ ᡤᡝᠮᡠᠨ ᡥᡝᠴᡝᠨ ᡩᡝ ᡳᠰᡳᡵᠠᡵᡝᠩᡤᡝ ᠵᡠᡤᡡᠨ ᡠᠮᡝᠰᡳ ᡤᠣᡵᠣ ᠪᡳᠮᡝ ᡤᡝᠮᡠᠨ ᡥᡝᠴᡝᠨ ᡩᡝ ᡨᡠᠸᡝᡵᡳ ᡩᡠᠪᡝᠰᡳᠯᡝᡵᡝ᠈ ᠨᡳᠶᡝᠩᠨᡳᠶᡝᡵᡳ ᡩᠣᠰᡳᡵᡝ ᠨᡝᡵᡤᡳᠨᡩᡝ ᠮᠠᠮᠠ ᡝᡵᡧᡝᡵᡝᠩᡤᡝ ᠯᠠᠪᡩᡠ᠈ ᠴᡝᠨᡩᡝ ᠯᠠᠪᡩᡠ ᡨᡠᠰᠠ ᠠᡴᡡ᠈ ᡥᠣᠨᠣ ᡝᡵᡳᠨ ᡳ ᡧᠠᡥᡡᡵᡠᠨ ᠰᡝᡵᡠᡴᡝᠨ ᠪᡝ ᠪᠣᡩᠣᠮᡝ ᡝᡵᡩᡝᡴᡝᠨ ᡳ ᠵᡳᠪᡠᡶᡳ ᡠᡨᡥᠠᡳ ᡥᡡᡩᡠᠨ ᡳᠴᡳᡥᡳᠶᠠᡶᡳ ᠠᠮᠠᠰᡳ ᡠᠩᡤᡳᠴᡳ ᡨᡝᠨᡳ ᠰᠠᡳᠨ᠈ ᡝᡵᡝᠪᡝ ᡳᠯᡩᡠᠨ ᡩᡝ ᡤᡳᡵᡳᠨ ᡠᠯᠠᡳ ᠵᡳᠶᠠᠩᡤᡳᠶᡡᠨ ᡩᡝ ᠵᠠᠰᡳᡶᡳ᠈ ᡝᡵᡝᠴᡳ ᠵᡠᠯᡝᠰᡳ ᡥᡝᠵᡝ ᡶᡳᠶᠠᡴᠠ ᡳ ᡠᡵᠰᡝ ᡤᡝᠮᡠᠨ ᡥᡝᠴᡝᠨ ᡩᡝ ᠵᡳᡶᡳ ᠠᠯᠪᠠᠨ ᠵᠠᡶᠠᠮᡝ ᠰᠠᡵᡤᠠᠩᠠᡳᡴᡳ ᠰᡝᡵᡝᠩᡤᡝ ᠪᡳᠴᡳ᠈ ᡴᡝᠮᡠᠨᡳ ᠨᡝᠨᡝᡥᡝ ᠰᠣᠩᡴᠣᡳ ᠴᡝᠮᠪᡝ ᡥᠣᠨ ᠰᡳᡨᠠᠪᡠᡶᡳ ᡨᡠᠸᡝᡵᡳ ᡝᡵᡳᠨᡩᡝ ᠵᡠᡵᠠᠮᠪᡠᡶᡳ ᡤᡝᠮᡠᠨ ᡥᡝᠴᡝᠨ ᡩᡝ ᡠᠩᡤᡳᠴᡳ ᠣᠵᠣᡵᠠᡴᡡ᠈ ᡠᡵᡠᠨᠠᡴᡡ ᠨᠠᡩᠠᠨ ᠵᠠᡴᡡᠨ ᡠᠶᡠᠨ ᠪᡳᠶᠠᡳ ᠰᡝᡵᡤᡠᠸᡝᠨ ᡠᠴᡠᡵᡳ ᠪᡝ ᠠᠮᠴᠠᠮᡝ ᠵᡳᠪᡠᡶᡳ᠈ ᡥᠠᡵᠠᠩᡤᠠ ᠪᠠᠴᡳ ᡠᡨᡥᠠᡳ ᡴᠣᠣᠯᡳ ᠰᠣᠨᡴᠣᡳ ᡳᠨᡩᡝ ᠰᠠᡵᡤᠠᠨ ᡳᠰᡳᠪᡠᠮᡝ ᡳᠴᡳᡥᡳᠶᠠᡶᡳ ᡩᠠ ᠪᠠᡩᡝ ᠠᠮᠠᠰᡳ ᡠᠩᡤᡳᡴᡳᠨᡳ᠈ ᡠᡨᡨᡠ ᠣᡥᠣᡩᡝ᠈ ᠴᡝᠨᡳ ᠪᡝᠶᡝ ᡠᠮᡝᠰᡳ ᡨᡠᠰᠠ ᠰᡝᡥᡝᠪᡝ ᡤᡳᠩᡤᡠᠯᡝᠮᡝ ᡩᠠᡥᠠᡶᡳ᠈ ᡝᡵᡝᡳ ᠵᠠᠯᡳᠨ ᠵᠠᠰᡳᡥᠠ ᠰᡝᠮᡝ ᡳᠰᡳᠨᠵᡳᡥᠠᠪᡳ᠈ ᡝᡵᡝᠪᡝ ᠨᡳᠩᡤᡠᡨᠠ᠈ ᡳᠯᠠᠨ ᡥᠠᠯᠠ ᠮᡝᡳᡵᡝᠨ ᡳ ᠵᠠᠩᡤᡳᠨ ᠰᡝᡳ ᠶᠠᠮᡠᠨ ᡩᡝ ᠪᡳᡨᡥᡝ ᠵᠠᠪᡠᠪᡠᡶᡳ᠈ ᡠᠯᠠᠮᡝ ᡥᡝᠵᡝ ᡶᡳᠶᠠᡴᠠ᠈ ᡴᡠᠶᡝ ᡶᡳᠶᠠᡴᠠ ᡳ ᡠᡵᠰᡝᡩᡝ ᠰᡝᠯᡤᡳᠶᡝᡶᡳ᠈ ᡝᡵᡝᠴᡳ ᠵᡠᠯᡝᠰᡳ ᠵᠠᡶᠠᠨ ᠠᠯᠪᠠᠨ ᠵᠠᡶᠠᠮᡝ ᡤᡝᠮᡠᠨ ᡥᡝᠴᡝᠨ ᡩᡝ ᠰᠠᡵᡤᠠᠩᠠᡳᠮᡝ ᡤᡝᠨᡝᡵᡝᠩᡤᡝ ᠪᡳᠴᡳ᠈ ᡠᡵᡠᠨᠠᡴᡡ ᠨᠠᡩᠠᠨ ᠵᠠᡴᡡᠨ ᠪᡳᠶᠠᡳ ᡩᠣᡵᡤᡳᡩᡝ ᠰᡝᡵᡤᡠᠸᡝᠨ ᡠᠴᡠᡵᡳ ᠪᡝ ᠠᠮᠴᠠᠮᡝ ᡳᠴᡳᡥᡳᠶᠠᡶᡳ ᡠᠩᡤᡳᡴᡳᠨᡳ ᠰᡝᠮᡝ ᠪᡳᡨᡥᡝ ᠵᠠᠪᡠᠪᡠᡴᡳ ᠰᡝᠮᠪᡳ ᠰᡝᠮᡝ ᠠᠯᡳᠪᡠᡥᠠᠪᡳ᠈ ᡝᡵᡝᡳ ᠵᠠᠯᡳᠨ ᡠᠩᡤᡳᡥᡝ ᠰᡝᠮᡝ ᡳᠰᡳᠨᠵᡳᡥᠠᠪᡳ᠈ ᡠᡨᡨᡠ ᠣᡶᡳ<br>
ᡥᡝᠰᡝ ᠪᡝ ᡩᠠᡥᠠᠮᡝ᠈ ᠰᡠᠸᡝᠨᡳ ᡴᡠᠶᡝ ᡶᡳᠶᠠᡴᠠ ᡳ ᡠᡵᠰᡝ ᡤᡝᠮᡠᠨ ᡥᡝᠴᡝᠨ ᡩᡝ ᠠᠯᠪᠠᠨ ᠵᠠᡶᠠᠮᡝ ᠰᠠᡵᡤᠠᠩᠠᡳᡴᡳ ᠰᡝᠮᡝ ᡤᡝᠨᡝᡵᡝᠩᡤᡝ ᠪᡳᠴᡳ ᡝᡵᡩᡝᡴᡝᠨ ᡳ ᠵᡳᡶᡳ ᠨᠠᡩᠠᠨ ᠵᠠᡴᡡᠨ ᡠᠶᡠᠨ ᠪᡳᠶᠠᡳ ᡩᠣᡵᡤᡳᡩᡝ ᠰᡝᡵᡤᡠᠸᡝᠨ ᡳ ᡠᠴᡠᡵᡳ ᡤᡝᠮᡠᠨ ᡥᡝᠴᡝᠨ ᡩᡝ ᡳᠰᡳᠨᠠᠮᡝ ᡤᡝᠨᡝᡴᡳᠨᡳ᠈ ᡝᡵᡝᡳ ᠵᠠᠯᡳᠨ ᡠᠯᡥᡳᠪᡠᠮᡝ ᠰᡝᠯᡤᡳᠶᡝᡥᡝ᠉ <br><br><br>
ᠠᠪᡴᠠᡳ ᠸᡝᡥᡳᠶᡝᡥᡝ ᡳ ᡩᡝᡥᡠᠴᡳ ᠠᠨᡳᠶᠠ ᡳᠯᠠᠨ ᠪᡳᠶᠠᡳ ᠣᡵᡳᠨ᠉
}}
[[カテゴリ:満洲語]]
[[カテゴリ:カラフトナヨロ惣乙名文書]]
0xtdeo2ms2o3athjsaqtj333f0bawih
SQLite
0
32820
262869
244036
2024-11-01T04:45:28Z
Ef3
694
/* インストール */ Bumpup
262869
wikitext
text/x-wiki
<small>{{Pathnav|メインページ|工学|情報技術|プログラミング}}</small>
SQLiteは、MySQLのようなサーバー・クライアント方式ではなく、アプリケーションに直接組み込んで使用することができる関係データベース管理システム (RDBMS) です。
身近なところでは、Google ChromeやMozilla Firefoxなどの多くのアプリケーションで使用されており、Google AndroidではOSに組み込まれています。
これにより、SQLiteは世界で最もインストールベースの多いRDBMSの1つとして認知されています。
__TOC__
== SQLiteについて ==
SQLiteは、高速かつ軽量なリレーショナルデータベース管理システムです。SQLiteは、コンパクトなライブラリとして提供され、モバイルデバイス、デスクトップアプリケーション、Webブラウザ、組み込みシステムなど、あらゆるプラットフォームで使用されています。
SQLiteは、標準のSQLをサポートし、トランザクション処理、データの完全性維持、およびACID(原子性、一貫性、分離性、耐久性)の保証を提供します。また、多くの主要なプログラミング言語(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.46.1 2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69aalt1 (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-3470000.zip(6.188 MiB)をダウンロードします(3470000の部分はバージョンによって変わります。この場合は、3.47.0)。
sqlite-tools-win-x64-3450000.zipは、ZIP書庫で
:<syntaxhighlight lang=console>
$ unzip -l sqlite-tools-win-x64-3470000.zip
Archive: sqlite-tools-win-x64-3470000.zip
Length Date Time Name
--------- ---------- ----- ----
3155968 2024-10-22 09:00 sqldiff.exe
4422144 2024-10-22 09:00 sqlite3_analyzer.exe
3848704 2024-10-22 08:59 sqlite3.exe
2959872 2024-10-22 19:40 sqlite3_rsync.exe
--------- -------
14386688 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>
% sudo 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>
% sudo 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.40.1 2022-12-28 14:03:47 df5c253c0b3dd24916e4ec7cf77d3db5294cc9fd45ae7b9c5e82ad8197f3alt1
</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とは別に、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 />
== 関連リンク ==
* [[SQL]] SQL一般の仕様や文法についての解説
[[カテゴリ:プログラミング]]
6kcijd6yoksf1m6h0x09ufgpeuid8jj
Rust
0
32885
262868
262832
2024-11-01T03:41:54Z
Ef3
694
/* クレートとは */ {{See also|Cargoハンドブック}}
262868
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>
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>
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>
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>
fn add(a: i32, b: i32) -> i32 {
a + b
}
fn main() {
let result = add(5, 3);
println!("Sum: {}", result);
}
</syntaxhighlight>
# 所有権システム:
#: Rustは所有権ベースのメモリ管理を採用しており、値の所有権が明確に定義されています。
#:<syntaxhighlight lang=rust>
fn main() {
let s1 = String::from("Hello");
let s2 = s1; // s1の所有権がs2に移動する(所有権の転送)
// println!("{}", s1); // エラー!s1はもう有効ではない
println!("{}", s2); // 正常に動作
}
</syntaxhighlight>
# 構造体とメソッド:
#: 構造体はデータをまとめるためのカスタム型で、メソッドを持つことができます。
#:<syntaxhighlight lang=rust>
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"),
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>
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>
/*
* プログラムのエントリーポイントは、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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Sum: 5.857999935150147
</syntaxhighlight>
浮動小数点数は、数値計算や科学的な計算など、精度が求められる場面で使用されます。しかし、浮動小数点数の性質や精度による注意が必要な場面もありますので、注意深く扱う必要があります。
===== 論理値型(''The Boolean Type'') =====
Rustにおける論理値型の型名は <code>bool</code> で、真の値は <code>true</code>、偽の値は <code>false</code> です。この型は非常に基本的で、条件分岐やブール演算などで使用されます。
以下は <code>bool</code> 型の使用例です。
:<syntaxhighlight lang=rust>
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>
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>
let string_slice: &str = "Hello, Rust!"; // 文字列リテラルから作成された文字列スライス
</syntaxhighlight>
# <code>String</code>型:
#* ヒープ上に確保された可変の文字列データを持ちます。
#* 動的に変更可能で、文字列の追加や削除、変更が可能です。
#:<syntaxhighlight lang=rust>
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>
let my_string: String = "Hello".to_string(); // &strからStringへの変換
</syntaxhighlight>
また、<code>String</code>から<code>&str</code>への変換は、<code>&</code>演算子を使用して参照を取得します。
:<syntaxhighlight lang=rust>
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>
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>
fn do_something() {
// 何らかの処理
}
fn main() {
let result = do_something(); // 戻り値は () になる
println!("result = {:?}", result);
}
</syntaxhighlight>
# 構造体のフィールドとしての利用: 構造体のフィールドとしてユニット型を持つことで、その構造体のインスタンスが存在することを示す場合に使用されます。
#:<syntaxhighlight lang=rust>
#[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の配列は、タプルと同じく長さが固定されています。
== プレースホルダー ==
println! マクロなどの文字表示マクロでは、文字列中の <code>{</code> <code>}</code> の位置に指定された書式で展開します<ref>[https://doc.rust-lang.org/std/fmt/ Module std::fmt]</ref>。
[[C言語]]の標準関数 printf() と機能は似ていますが書式は大きく異なり、[[Python]]のf文字列との共通点が多いです。
<!--
* Positional parameters
* Named parameters
* Formatting Parameters
** Width
** Fill/Alignment
** Sign/#/0
** Precision
* Localization
* Escaping {} を表示したい時は {{}} とします
* Related macros -- format! write! writeln! println! eprint! eprintln!
-->
=== フォーマッティング・トレイツ(Formatting traits) ===
{{Ruby|空|から}}のプレースホルダー<code>{}</code>を指定すればその型の自然なフォーマット([https://doc.rust-lang.org/std/fmt/trait.Display.html fmt::Display]; 100 ならば "100")で文字列化されます。
しかし、基数を変えた16進数や8進数や2進数などでフォーマットをしたいときはフォーマッティング・トレイツ(Formatting traits)を使います<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=81cb5a55fcae676c094f2b74929f09b3 Formatting traits]:<syntaxhighlight lang=rust>
fn main() {
println!("{:?}", 100);
println!("{:x}", 100);
println!("{:o}", 100);
println!("{:b}", 100);
println!("{}", 100);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
100
64
144
1100100
100
</syntaxhighlight>
フォーマッティング・トレイツは、Rustプログラミング言語におけるデータのフォーマット(整形)方法を定義するためのトレイト(trait)です。これらのトレイトは、<code>std::fmt</code>モジュールに定義されており、<code>std::fmt::Display</code>や<code>std::fmt::Debug</code>など、様々なフォーマット方法を提供します。
一般的なフォーマッティング・トレイツは以下のようになります:
* Display: <code>std::fmt::Display</code>トレイトは、<code>{}</code>(中括弧)を使ったシンプルな人間が読みやすい形式での表示を提供します。これは、<code>println!</code>マクロや<code>format!</code>マクロで使われます。
* Debug: <code>std::fmt::Debug</code>トレイトは、<code>{:?}</code>を使ったデバッグ目的の表示を提供します。これは、デバッグ情報を表示する際に便利で、<code>println!("{:?}", variable)</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>を使ってカスタム型を表示する例です。
:<syntaxhighlight lang=rust>
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>fmt</code>モジュール内の<code>Formatter</code>型を利用して、<code>write!</code>マクロを呼び出しています。<code>main</code>関数内で<code>println!</code>マクロを使って<code>Person</code>型を表示しています。これにより、<code>Person</code>型を<code>{}</code>を使って表示する方法が示されています。
== 所有権システム ==
Rustの所有権システムは、メモリ管理とリソースの安全な扱いを通じて安全性と並行性を確保する、言語の重要な特徴です。ここでは、Rustの所有権、借用、参照について、コードを交えて解説します。
=== 所有概念 ===
Rustの所有概念は、変数がリソースの所有権を持ち、スコープを抜ける際にそのリソースを自動的に解放する仕組みです。この仕組みは、メモリ安全性を高めるための中心的な考え方です。
=== コピーとムーブ ===
Rustでは、変数が参照しているデータがスタック上かヒープ上かによって、コピーやムーブの挙動が異なります。スタック上のプリミティブ型はコピーされますが、ヒープ上のデータはムーブされ、所有権が移動します。
; コピーされるデータ
:<syntaxhighlight lang=rust line>
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>
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>
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>
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>
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>
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>
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>
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>
let b = Box::new(5);
println!("b = {}", b); // ヒープ上に格納されたデータにアクセス
</syntaxhighlight>
ボックスは特に再帰的なデータ構造の作成やヒープメモリ管理に適しており、ポインタの解放はスコープを外れたときに自動で行われます。
==== Drop (Resource Cleanup) ====
<code>Drop</code>トレイトは、オブジェクトがスコープを外れるときにリソースをクリーンアップするための機構を提供します。カスタムデストラクタを実装する際に使用され、例えばファイルハンドルやネットワークリソースなどのリソース解放に役立ちます。
:<syntaxhighlight lang=rust>
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>
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>
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>
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() ====
Rustでは、C言語のNULLに相当する値は None です。
通常の変数は 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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を設定します。
{{コラム|Rustのプログラミングでつまづきやすいところ|2=Rustはセーフティ、パフォーマンス、そしてエクスプレッションの柔軟性を組み合わせた高度なプログラミング言語です。初めてRustを使う場合、以下のようなトピックでつまづくことがよくあります。
#所有権と借用: Rustでは、各値には所有者があり、値のライフサイクルを追跡する必要があります。また、他のコードに値を渡すときは、その値を一時的に借りる必要があります。これらの概念が理解しづらい場合があります。
#ライフタイム: Rustでは、各値にはライフタイムがあり、その値が使用される期間を決定します。ライフタイムの概念が不明瞭になりがちで、特に複雑なデータ構造を扱う場合に問題が発生することがあります。
#パフォーマンスの最適化: Rustは高速な実行時パフォーマンスを提供しますが、それを達成するためには、手動でメモリ管理や最適化を行う必要があります。これらの最適化は、Rustの型システムと他の言語との違いを理解する必要があります。
#コンパイラエラー: Rustのコンパイラは非常に厳格で、コードがコンパイルできない場合があります。エラーメッセージは詳細で役に立ちますが、初めて見た場合は驚くかもしれません。
本書では、これらのトピックについて順次取り上げてゆきます。
}}
== パターンマッチング ==
=== パターンマッチングの概要 ===
==== パターンマッチングの基本概念 ====
パターンマッチングは、プログラミング言語において特定のパターンとデータを照合し、条件に基づいた処理を行う手法です。この手法は、コードの可読性や柔軟性を高めるために広く使用されます。パターンマッチングの基本的な概念は、与えられたデータが特定のパターンに一致するかどうかを検査し、それに応じた処理を行います。
==== Rustにおけるパターンマッチングの役割と重要性 ====
Rustでは、パターンマッチングは非常に重要な機能です。パターンマッチングは、異なる条件に基づいてコードをブロックに分割し、それぞれの条件に対して適切な処理を行うことができます。これにより、コードの複雑さが軽減され、可読性が向上します。また、Rustの型システムとの統合により、安全性やエラーハンドリングの向上も実現されます。
=== 基本的なパターン ===
==== リテラルパターン ====
リテラルパターンは、値そのものとマッチさせるための最も基本的なパターンです。以下の例では、<code>x</code>の値が<code>1</code>の場合にマッチします。
:<syntaxhighlight lang=rust>
let x = 1;
match x {
1 => println!("one"),
_ => println!("not one"),
}
</syntaxhighlight>
==== 特定の値とのマッチング ====
リテラルパターンは、数値や文字列、真理値などの様々なリテラル値とマッチさせることができます。
:<syntaxhighlight lang=rust>
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>
let x = 5;
match x {
y => println!("x is {}", y), // この行が実行され、y = 5
}
</syntaxhighlight>
==== 値を変数にバインドするパターン ====
変数パターンは、値をパターン内の変数にバインドすることができます。これは、値を後で使用したり、条件分岐に利用したりするのに便利です。
:<syntaxhighlight lang=rust>
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>
let x = 42;
match x {
0 => println!("x is zero"),
_ => println!("x is something else"), // この行が実行される
}
</syntaxhighlight>
==== 任意の値とのマッチング ====
ワイルドカードパターンを使えば、任意の値とマッチさせることができます。これは、値を確認する必要がない場合や、デフォルトの処理を実行したい場合に役立ちます。
:<syntaxhighlight lang=rust>
let x = 123;
match x {
0 => println!("x is zero"),
_ => println!("x is not zero"), // この行が実行される
}
</syntaxhighlight>
=== 列挙型とパターンマッチング ===
==== 列挙型の定義と使い方 ====
Rustには、列挙型と呼ばれる特別な型があります。列挙型は、いくつかの列挙値のいずれかを取ることができる型です。以下の例では、<code>Direction</code>という列挙型を定義しています。
:<syntaxhighlight lang=rust>
enum Direction {
Up,
Down,
Left,
Right,
}
</syntaxhighlight>
列挙型の値を作成するには、列挙型名とコロン(<code>:</code>)を使用します。
:<syntaxhighlight lang=rust>
let up = Direction::Up;
let down = Direction::Down;
</syntaxhighlight>
==== 列挙型に対するパターンマッチングの活用 ====
列挙型とパターンマッチングを組み合わせると、非常に強力なコードを書くことができます。以下の例では、<code>Direction</code>列挙型の値に対してパターンマッチングを行っています。
:<syntaxhighlight lang=rust>
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>
struct Person {
name: String,
age: u32,
}
</syntaxhighlight>
構造体のインスタンスを作成するには、構造体名とフィールド値を指定します。
:<syntaxhighlight lang=rust>
let person = Person {
name: String::from("Alice"),
age: 30,
};
</syntaxhighlight>
==== タプルの定義と使い方 ====
タプルは、異なる型の値を含むことができる集合体です。タプルは括弧<code>()</code>で囲んで定義します。
:<syntaxhighlight lang=rust>
let tuple = (1, 3.14, "hello");
</syntaxhighlight>
タプルの要素にアクセスするには、インデックスを使用します。
:<syntaxhighlight lang=rust>
let x = tuple.0; // 1
let y = tuple.1; // 3.14
let z = tuple.2; // "hello"
</syntaxhighlight>
==== 構造体とタプルに対するパターンマッチングの活用 ====
構造体やタプルに対してパターンマッチングを行うことができます。これは、データの構造に基づいて処理を行う場合に非常に便利です。
:<syntaxhighlight lang=rust>
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>
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>
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>
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>
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>
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>
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>
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>
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>
#[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>
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>
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>の形式で記述されます。これらの属性は、コンパイラやコードの振る舞い、コード生成、最適化、データのレイアウトなどを変更したり、制御したりするために使われます。
以下は、よく使用される属性のいくつかとその目的です:
* <code>#[derive(...)]</code>: 自動導出(Derive Attribute)は、コンパイラに対して構造体や列挙型が特定のトレイトを自動的に実装するよう指示するために使われます。<code>#[derive(Debug)]</code>などがその例で、<code>Debug</code>トレイトを自動的に実装するよう指示します。
* <code>#[cfg(...)]</code>: コンパイル時の条件を指定します。例えば、<code>#[cfg(target_os = "linux")]</code>はLinux環境のみで有効にするために使われます。
* <code>#[allow(...)]</code> / <code>#[deny(...)]</code> / <code>#[warn(...)]</code>: コンパイラの警告レベルを変更します。<code>allow</code>は特定の警告を許可し、<code>deny</code>はエラーにするよう指示し、<code>warn</code>は警告として表示します。
* <code>#[repr(...)]</code>: データのレイアウトや表現方法を制御します。例えば、<code>#[repr(C)]</code>はC言語のレイアウトに合わせることを示し、<code>#[repr(align(N))]</code>は特定のアライメントを指定します。
* <code>#[inline]</code> / <code>#[noinline]</code>: インライン展開を制御します。<code>inline</code>は関数をインライン展開可能として指定し、<code>noinline</code>は展開を禁止します。
* <code>#[test]</code> / <code>#[bench]</code>: ユニットテストやベンチマークテスト用の関数をマークします。テストランナーがこれらの関数を見つけて実行します。
* <code>#[derive(...)]</code>、<code>#[macro_use]</code>、<code>#[crate_name = "some_name"]</code>、**<code>#[feature(...)]</code>**など、他にも多くの属性が存在します。
属性は様々な目的に使用され、Rustの柔軟性やコードの特定の振る舞いを制御するための重要なツールです。それぞれの属性は特定のコンテキストで役割を果たし、コードの意図をコンパイラに伝えるのに役立ちます。
:<syntaxhighlight lang=rust>
// テスト用の関数を定義し、テスト用の属性を追加
#[test]
fn test_addition() {
assert_eq!(2 + 2, 4);
}
// main関数を含むコード例
fn main() {
println!("Hello, Rust!");
// インライン展開のための属性を持つ関数
#[inline(always)]
fn add(a: i32, b: i32) -> i32 {
a + b
}
// インライン展開を促進する属性を持つ関数
#[inline(always)]
fn multiply(a: i32, b: i32) -> i32 {
a * b
}
// インライン展開される関数の呼び出し
let result_add = add(3, 5);
println!("Addition result: {}", result_add);
// インライン展開される関数の呼び出し
let result_multiply = multiply(4, 6);
println!("Multiplication result: {}", result_multiply);
}
</syntaxhighlight>
# <code>#[test]</code>属性: <code>test_addition</code>関数に付与された<code>#[test]</code>属性は、この関数をテスト用の関数としてマークしています。この関数は、<code>assert_eq!(2 + 2, 4);</code>を使って2 + 2が4と等しいかテストします。
# <code>#[inline(always)]</code>属性: <code>add</code>関数と<code>multiply</code>関数に付与された<code>#[inline(always)]</code>属性は、インライン展開を促進するための指示です。インライン展開は、関数呼び出しのオーバーヘッドを削減し、効率的なコード生成を促進します。しかし、<code>always</code>の指定は、常にインライン展開されるというわけではなく、コンパイラの判断に依存します。
# <code>main</code>関数: <code>main</code>関数はプログラムのエントリーポイントです。この関数内で<code>println!</code>を使って"Hello, Rust!"を表示し、<code>add</code>関数と<code>multiply</code>関数を呼び出しています。それぞれの関数では、インライン展開の指示が付与されています。
このコード例は、属性を使って関数をテスト対象としてマークし、またインライン展開を促進する方法を示しています。ただし、実際にコードを実行する場合は、<code>main</code>関数内のコードが実行されるため、<code>test_addition</code>関数はテストコードとして実行されることになります。
=== Debug ===
<code>Debug</code>トレイトは、<code>println!</code>マクロで構造体や列挙型の内容を表示するために使用されます。以下は、<code>Debug</code>トレイトを実装することで<code>println!</code>で構造体の内容を表示する例です。
:<syntaxhighlight lang=rust>
// Debugトレイトを導出可能にするためにderiveアトリビュートを使用
#[derive(Debug)]
struct MyStruct {
name: String,
age: u32,
}
fn main() {
let my_data = MyStruct {
name: String::from("Alice"),
age: 30,
};
// 構造体の内容を表示する
println!("My data: {:?}", my_data);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
My data: MyStruct { name: "Alice", age: 30 }
</syntaxhighlight>
この例では、<code>MyStruct</code>構造体に<code>Debug</code>トレイトを<code>#[derive(Debug)]</code>で導出しています。そして、<code>main</code>関数内で<code>my_data</code>を<code>println!</code>で表示する際に、<code>{:?}</code>フォーマットを使って<code>Debug</code>トレイトを呼び出しています。
<code>Debug</code>トレイトを導出することで、<code>println!</code>で構造体の内容を簡単に表示することができます。<code>#[derive(Debug)]</code>を使うことで、デバッグ情報を出力するためのメソッドの実装を手動で書く必要がなくなります。
== ジェネリックス ==
Rustにおけるジェネリクスは、特定の型に依存せず、複数の型で動作するコードを作成するための重要な機能です。ジェネリクスを使用することで、同じコードを複数の型で再利用したり、型安全性を保ちながら柔軟性を持たせたりすることができます。
=== 基本的なジェネリクスの使用 ===
:<syntaxhighlight lang=rust>
// 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>
// ジェネリックな構造体
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>
// ジェネリックなトレイト
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>
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>
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>
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>
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>
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>
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>
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>
let numbers = vec![1, 2, 3, 4, 5];
let mut iter = numbers.iter(); // イミュータブルなイテレータ
</syntaxhighlight>
# <code>next()</code>を使用した反復処理: <code>next()</code>メソッドを使って、イテレータから次の要素を取得します。
#:<syntaxhighlight lang=rust>
match iter.next() {
Some(number) => println!("Number: {}", number),
None => println!("End of sequence"),
}
</syntaxhighlight>
# forループを使用した反復処理: 一般的には、<code>for</code>ループを使用してイテレータを処理します。
#:<syntaxhighlight lang=rust>
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>
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>
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>
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>
// 'Printable' という名前の機能を定義しています。
// これは、ある型が特定の振る舞いを持つことを宣言します。
trait Printable {
// 'print' という名前の機能を提供しています。
// これは、任意の型が実装する必要があるメソッドです。
fn print(&self);
}
// 'MyType' という名前のデータ構造を定義しています。
// これは整数値を保持する構造体です。
struct MyType {
value: i32, // 'MyType' 構造体が保持する整数値のフィールドです。
}
// 'Printable' という機能を 'MyType' に実装しています。
// これにより、'MyType' インスタンスは 'Printable' で提供される振る舞いを持ちます。
impl Printable for MyType {
// 'Printable' で要求された 'print' 機能を 'MyType' に実装しています。
fn print(&self) {
// 'MyType' インスタンスが 'print' を実行すると、値が表示されます。
println!("Value: {}", self.value);
}
}
fn main() {
// 'MyType' の新しいインスタンスを作成し、整数値を設定しています。
let obj = MyType { value: 10 };
// 'Printable' で定義された 'print' 機能を呼び出しています。
// これにより、 'MyType' の値が出力されます(この場合は "Value: 10")。
obj.print();
}
</syntaxhighlight>
{{コラム|トレイトとインターフェイスやプロトコルとの類似性|2=トレイトは他の言語でのインターフェースやプロトコルに似ています。これらの概念は、異なる型や構造体が共通の振る舞いを持つことを許可し、それによってポリモーフィズム(多様性)を実現します。
;インターフェース
:共通の振る舞い: インターフェースは、異なるクラスが共通の振る舞いを持つことを保証します。他の言語では、この振る舞いはインターフェースで定義され、クラスはそれを実装します。
:メソッドの宣言: インターフェースでは、クラスが実装しなければならないメソッドの宣言が含まれます。
:多重継承の代替: インターフェースは多重継承の代替手段としても使われ、クラスは複数のインターフェースを実装することができます。
;プロトコル
:抽象的な振る舞いの定義: プロトコルは、特定の振る舞いや機能を表す抽象的な規約です。Swiftなどの言語ではプロトコルが使われ、クラスや構造体はそれらを適合させます。
:メソッドの要求: プロトコルは、適合する型によって実装されるメソッドやプロパティの要求を定義します。
:型の適合性の強化: プロトコルに適合することで、様々な型を同じ抽象的な概念に束縛することができます。
;Rustのトレイト
:共通の振る舞いの提供: トレイトは、構造体や他の型に共通の振る舞いを提供します。それぞれの型はトレイトを実装することで、その振る舞いを持つことができます。
:メソッドの宣言: トレイトではメソッドの宣言が行われ、それを実装することでトレイトが利用できるようになります。
:型間の相互運用性と柔軟性: トレイトは型間での相互運用性や柔軟性を提供し、異なる型が同じ振る舞いを共有することができます。
これらの概念は異なる言語で微妙に異なる場合がありますが、トレイト、インターフェース、プロトコルはいずれも多様な型が共通の振る舞いを共有するための仕組みとして機能します。
}}
=== ジェネリックな実装 ===
; ジェネリックな構造体に対する実装
:<syntaxhighlight lang=rust>
// ジェネリックなデータ構造体 'MyGeneric' を定義しています。
// '<T>' は型パラメータであり、任意の型を受け入れます。
struct MyGeneric<T> {
value: T, // 'T' 型の値を保持する 'value' フィールドです。
}
// 'MyGeneric<T>' に対するジェネリックなメソッド実装です。
impl<T> MyGeneric<T> {
// 新しい 'MyGeneric<T>' インスタンスを生成する 'new' メソッドです。
// 渡された値で 'value' フィールドを初期化します。
fn new(value: T) -> MyGeneric<T> {
MyGeneric { value }
}
// 'value' フィールドへの参照を返す 'get_value' メソッドです。
fn get_value(&self) -> &T {
&self.value
}
}
fn main() {
// 'MyGeneric<i32>' 型のインスタンスを作成しています。
// 'value' フィールドには整数値 42 が格納されます。
let instance = MyGeneric::new(42);
// 'get_value' メソッドを呼び出して 'value' フィールドの値を取得し、出力しています。
println!("Value: {:?}", instance.get_value()); // ジェネリックなメソッド呼び出し
// 'MyGeneric<&str>' 型のインスタンスを作成しています。
// 'value' フィールドには文字列 "hello" が格納されます。
let instance = MyGeneric::new("hello");
// 'get_value' メソッドを呼び出して 'value' フィールドの値を取得し、出力しています。
println!("Value: {:?}", instance.get_value()); // ジェネリックなメソッド呼び出し
}
</syntaxhighlight>
このコードは、<code>MyGeneric</code>を<code>i32</code>型と<code>&str</code>型の両方でインスタンス化しています。ジェネリックなデータ構造体とそのジェネリックなメソッドを利用して、異なる型に対して同じメソッドを使用する様子を示しています。<code>println!</code>マクロ内の<code>{:?}</code>は、<code>Debug</code>トレイトを実装する型の値を表示するためのフォーマット指定子です。これにより、異なる型の値も出力できます。
----
<code>impl</code>を使ったさまざまな例を挙げてみましょう。
# 単純なトレイトの実装
#:<syntaxhighlight lang=rust>
// Summaryトレイトを定義します。
trait Summary {
fn summarize(&self) -> String;
}
// Summaryトレイトを実装するBook構造体を定義します。
struct Book {
title: String,
author: String,
}
// BookにSummaryトレイトを実装します。
impl Summary for Book {
fn summarize(&self) -> String {
format!("{} by {}", self.title, self.author)
}
}
// summarize_any関数はSummaryトレイトを実装した任意の型に対して要約を取得します。
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>summarize_any</code>関数を使用して、異なる型の値に対して要約を取得できます。このようなジェネリックで柔軟なアプローチは、異なる型に対して一貫した操作を提供する場合に非常に便利です。
# 多様なトレイトの実装
#:<syntaxhighlight lang=rust>
// 長方形を表す 'Rectangle' 構造体です。
struct Rectangle {
width: u32, // 長方形の幅を表す 'width' フィールド
height: u32, // 長方形の高さを表す 'height' フィールド
}
// 'Rectangle' 構造体に関するメソッドを実装しています。
impl Rectangle {
// 新しい 'Rectangle' インスタンスを生成する 'new' メソッドです。
fn new(width: u32, height: u32) -> Self {
Rectangle { width, height }
}
}
// 'Area' という名前のトレイトを定義しています。
// このトレイトは 'area' メソッドを持ち、長方形の面積を計算します。
trait Area {
// 長方形の面積を計算する 'area' メソッドです。
fn area(&self) -> u32;
}
// 'Area' トレイトを 'Rectangle' 構造体に実装しています。
// 'Rectangle' には 'Area' トレイトの 'area' メソッドが実装されます。
impl Area for Rectangle {
// 'Rectangle' の面積を計算する 'area' メソッドの実装です。
fn area(&self) -> u32 {
self.width * self.height
}
}
fn main() {
// 幅が5、高さが10の 'Rectangle' インスタンスを作成しています。
let rect = Rectangle::new(5, 10);
// 'Area' トレイトの 'area' メソッドを呼び出して、長方形の面積を出力しています。
println!("Area of rectangle: {}", rect.area());
}
</syntaxhighlight>
#:ここでは、<code>Rectangle</code>構造体に<code>new</code>メソッドを実装し、また<code>Area</code>トレイトを実装しています。<code>main</code>関数で<code>Rectangle</code>のインスタンスを作成し、<code>Area</code>トレイトのメソッドである<code>area()</code>を呼び出しています。
# ジェネリックなメソッド
#:<syntaxhighlight lang=rust>
// 同じ型の2つの要素を持つ 'Pair' 構造体です。
struct Pair<T> {
first: T, // ペアの最初の要素を表す 'first' フィールド
second: T, // ペアの2番目の要素を表す 'second' フィールド
}
// 'Pair<T>' 構造体に関するメソッドを実装しています。
impl<T> Pair<T> {
// 新しい 'Pair<T>' インスタンスを生成する 'new' メソッドです。
// 渡された2つの値で 'first' と 'second' フィールドを初期化します。
fn new(first: T, second: T) -> Self {
Pair { first, second }
}
// 'first' フィールドへの参照を返す 'get_first' メソッドです。
fn get_first(&self) -> &T {
&self.first
}
// 'second' フィールドへの参照を返す 'get_second' メソッドです。
fn get_second(&self) -> &T {
&self.second
}
}
fn main() {
// 整数型を持つ 'Pair' インスタンスを作成しています。
let pair = Pair::new(42, 24);
// 'get_first' メソッドを使ってペアの最初の要素を出力しています。
println!("First element: {}", pair.get_first());
// 'get_second' メソッドを使ってペアの2番目の要素を出力しています。
println!("Second element: {}", pair.get_second());
}
</syntaxhighlight>
#:<code>Pair</code>構造体に対して<code>T</code>型のジェネリックなメソッドを実装しています。この例では<code>get_first</code>メソッドを定義し、<code>main</code>関数でそれを呼び出しています。
#トレイトを実装した列挙型
#:<syntaxhighlight lang=rust>
// 'Weather' 列挙型です。3つの異なる天気を表します。
#[derive(Debug)]
enum Weather {
Sunny,
Cloudy,
Rainy,
}
// 'Description' トレイトは、様々な要素に対する説明を提供します。
trait Description {
fn describe(&self) -> &'static str;
}
// 'Description' トレイトを 'Weather' 列挙型に実装しています。
impl Description for Weather {
// 'describe' メソッドは、各 'Weather' の状態に対する説明を提供します。
fn describe(&self) -> &'static str {
match self {
Weather::Sunny => "It's sunny today!",
Weather::Cloudy => "It's cloudy today.",
Weather::Rainy => "It's raining today.",
}
}
}
fn main() {
// 'Weather' 列挙型のすべてのヴァリアントを反復処理します。
for weather in &[Weather::Sunny, Weather::Cloudy, Weather::Rainy] {
// 各天気状況に対する説明を出力します。
println!("{:?}: {}", weather, weather.describe());
}
}
</syntaxhighlight>
#:<code>Weather</code>列挙型に対して<code>Description</code>トレイトを実装して、各ヴァリアントに対する説明を返す<code>describe</code>メソッドを定義しています。<code>main</code>関数で<code>Weather</code>のインスタンスを作成し、その説明を表示しています。
これらの例は、<code>impl</code>を使って様々なタイプの型に対してメソッドやトレイトを実装する方法を示しています。この機能を利用することで、Rustの柔軟で型安全なコーディングを行うことができます。
== 関数 ==
Rustでの関数は、プログラム内で再利用可能なコードブロックを定義するために使われます。関数は特定のタスクを実行するための手続きを含み、必要に応じて引数を受け取り、結果を返すことができます。基本的な関数の定義と使用方法を以下に示します。
=== 関数の定義 ===
:<syntaxhighlight lang=rust>
// 関数の定義
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>
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>
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>
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>
fn longest(x: &str, y: &str) -> &str {
// ...
}
</syntaxhighlight>
このような場合、コンパイラは適切なライフタイムを自動的に推論します。ただし、ライフタイムの省略は特定の条件に限定され、全ての場面で使えるわけではありません。
ライフタイムは主に、参照の有効期間を指定するために使用され、特に関数内で参照を扱う際に重要な役割を果たします。関数が複数の参照を扱い、それらの有効期間を整理する必要がある場合には、ライフタイムの指定が必要になることがあります。
=== クロージャ: ===
Rustではクロージャも関数として扱われます。クロージャは自身のスコープ外の変数をキャプチャして利用できます。これは非常に便利で、関数よりも柔軟な振る舞いを提供します。
次のコード例では、クロージャと関数の組み合わせを使って、外部スコープの変数をキャプチャして利用する方法を示します。
:<syntaxhighlight lang=rust>
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>
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>
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>
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>
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] {
println!("{}", i);
let mut j = i * 2;
while j <= n {
sieve[j] = false;
j += 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>
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>
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>
#[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>
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>
#[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>
#[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>
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>
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>
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> の加算、減算、乗算、除算を行っています。結果を文字列として出力しています。
修正されたコードは次のようになります:
== ほかの言語からの移植例 ==
=== 順列・組合わせ ===
Goから[[Go/関数#順列・組合わせ|順列・組合わせ]]を移植
==== 順列 ====
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=73612aa97bd4a1541a0313f38effde87 順列]:<syntaxhighlight lang=rust line>
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>
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 />
== 外部リンク ==
{{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
|title=プログラミングRust
|edition=第2版
|publisher=オライリージャパン
|isbn=978-4873119786
|date=2022年1月19日
}}
* {{Cite
|author=Jim Blandy, Jason Orendorff
|title=プログラミングRust
|edition=第1版
|publisher=オライリージャパン
|isbn=978-4873118550
|date=2018年8月10日
}}
[[Category:Rust|*]]
[[カテゴリ:プログラミング言語]]
{{NDC|007.64}}
b9d9wpjy8eclwup7guy5i8bkzd5kjol
音声ファイルで聴くクラシック音楽入門
0
33271
262844
262812
2024-10-31T12:42:06Z
Linguae
449
/* クラシック音楽の鑑賞入門 */
262844
wikitext
text/x-wiki
<!--【2022年1月1日起稿】-->
{{Navi| [[音楽]] > 鑑賞の手引き > '''音声ファイルで聴くクラシック音楽入門'''}}
{{NDC|760.8|くらしつくおんかくのかんしようにゆうもん}}
<div style="text-align:center">
{|
|-
|[[画像:Gartoon mimetypes ogg.svg|border|150px]]
|[[画像:PortailMC.gif|thumb|center|500px|]]
|[[画像:Gartoon mimetypes mp3.svg|border|150px]]
|}
</div>
__notoc__
== クラシック音楽の鑑賞入門 ==
[[画像:P treble clef.svg|left|150px]]'''[[w:クラシック音楽|クラシック音楽]]''' をこれから鑑賞してみようという初心者のための、<br>まずとにかくいろいろな曲を聴いてみようという入門教材です。
<span style="font-size:9pt;">学校の音楽の授業のおかげでクラシック音楽に苦手意識を持ってしまったあなた、<br>クラシック音楽っていろいろあるのでどれから聴いたらよいか分からないというあなたも、<br>気軽に音声ファイルの[[w:録音録画再生機器のボタン#再生ボタン|再生ボタン]] <span style="font-size:15pt;">▶</span> をクリックして耳を澄まして聴いてみましょう。</span>
<br>
<br>
;コンテンツ
*<span style="background-color:#ffb;font-size:15pt;">'''[[/行進曲]]''' {{進捗|50%|2024-10-31}}<!--GMT2022年1月2日より--></span>
<br>
;バロック音楽・古楽
*<span style="background-color:#ffb;font-size:14pt;">[[/バロック音楽・古楽/チェンバロの曲|../チェンバロの曲]] {{進捗|50%|2024-09-06}}<!--GMT2022年3月20日より--></span>
<br>
;動画編
*<span style="background-color:#ffb;font-size:13pt;">[[/動画ファイルで視聴してみよう]] {{進捗|25%|2024-09-12}}<!--GMT2022年1月20日より--></span>
;外部音源
*<span style="background-color:#ffc;font-size:13pt;">[[/外部音源]] {{進捗|25%|2024-09-12}}<!--GMT2022年2月11日より--></span>
;作曲家
*<span style="background-color:#ffc;font-size:13pt;">[[/作曲家の一覧]] {{進捗|25%|2024-09-11}}<!--GMT2022年2月5日より--></span>
== これだけは聴いておきたい珠玉の名曲 ==
これぞといえる名曲を、近代~ロマン派~ とさかのぼってリストアップします。
{| class="wikitable"
|- style="text-align:left;font-family:Times New Roman;font-size:15pt;"
! style="width:1em;" |<!--【ROWSPAN】-->
! style="width:3em;font-size:9pt;" |肖像
! style="width:5em;" |作曲者
! style="width:10em;" |曲 名
! style="width:3em;font-size:9pt;" |発表年
!音声ファイル
! style="width:2em;font-size:8pt;" |再生<br>時間
|- <!--【■近代音楽■】-->
! colspan="7" style="background-color:#aeffff;" |[[w:近代音楽|近代音楽]]([[w:en:Modernism (music)|Modernism (music)]]: 1890~1975頃)
|-
!<!--【ROWSPAN】--> rowspan="18" style="background-color:#aeffff;" |
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ラヴェル「ボレロ」】-->
|[[画像:Postcard-1910 Ravel darkened&cropped2.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:モーリス・ラヴェル|ラヴェル]]
|<!--曲 名--> style="font-size:15pt;"| '''[[w:ボレロ (ラヴェル)|ボレロ]]'''
|<!--発表年--> style="font-size:9pt;" |1928
|<!-- file -->[[File:Bolero-Maurice Ravel-1930.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bolero-Maurice Ravel-1930.ogg|15分52秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ガーシュウィン「ラプソディ・イン・ブルー」】-->
| rowspan="2" |[[画像:George gershwin.jpg|border|center|50px]]
! rowspan="2" <!--作曲者--> style="font-size:10pt;" |[[w:ジョージ・ガーシュウィン|ガーシュウィン]]
|<!--曲 名--> style="font-size:12pt;" |'''[[w:ラプソディ・イン・ブルー|ラプソディ・イン・ブルー]]'''
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1924
|<!-- file -->[[File:US Marine Band Rhapsody in Blue.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:US Marine Band Rhapsody in Blue.oga|18分10秒]]
|-
|<!--曲 名--> style="font-size:10pt;" | 〃 (ピアノ独奏版)
|<!-- file -->[[File:George Gershwin's "Rhapsody in Blue" piano solo.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:George Gershwin's "Rhapsody in Blue" piano solo.ogg|15分54秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ホルスト「惑星」より全曲・火星・木星・土星とコラール】-->
| rowspan="5" |[[画像:Gustav Holst.jpg|border|center|50px]]
! rowspan="5" <!--作曲者--> style="font-size:12pt;" |[[w:グスターヴ・ホルスト|ホルスト]]
|<!--曲 名--> style="font-size:15pt;" |組曲『'''[[w:惑星 (組曲)|惑星]]'''』<small>(全7曲)</small>
| rowspan="5" <!--発表年--> style="font-size:9pt;" |1917頃
|<!-- file --> style="font-size:15pt;" |[[File:Holst - The Planets (Columbia 1922-23).flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Holst - The Planets (Columbia 1922-23).flac|44分41秒]]<br>[[:c:Category:The Planets Suite|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:13pt;" | 〃 第1曲「'''火星'''」
|<!-- file -->[[File:Gustav Holst - the planets, op. 32 - i. mars, the bringer of war.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Gustav Holst - the planets, op. 32 - i. mars, the bringer of war.ogg|8分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:13pt;" | 〃 第4曲「'''木星'''」
|<!-- file -->[[File:Gustav Holst - the planets, op. 32 - iv. jupiter, the bringer of jollity.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Gustav Holst - the planets, op. 32 - iv. jupiter, the bringer of jollity.ogg|8分28秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:10pt;"
|<!--曲 名--> style="font-size:9pt;" |(「木星」の第4主題による[[w:コラール|コラール]]<br><span style="font-size:10pt;">「[[w:我は汝に誓う、我が祖国よ|我は汝に誓う、我が祖国よ]]」</span>)
|<!-- file -->[[File:HWW I Vow to Thee.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:HWW I Vow to Thee.ogg|2分39秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:13pt;" | 〃 第5曲「土星」
|<!-- file -->[[File:Holst - Saturn.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Holst - Saturn.ogg|7分00秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ラフマニノフ「ピアノ協奏曲第2番」】-->
|[[画像:セルゲイ・ラフマニノフ.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:セルゲイ・ラフマニノフ|ラフマニノフ]]
|<!--曲 名--> style="font-size:13pt;"|『[[w:ピアノ協奏曲第2番 (ラフマニノフ)|ピアノ協奏曲第2番]]』<br> より 第2楽章
|<!--発表年--> style="font-size:9pt;" |1901頃
|<!-- file -->[[File:Sergei Rachmaninoff - piano concerto no. 2 in c minor, op. 18 - ii. adagio sostenuto.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Sergei Rachmaninoff - piano concerto no. 2 in c minor, op. 18 - ii. adagio sostenuto.ogg|11分4秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ラヴェル「亡き王女のためのパヴァーヌ」】-->
|[[画像:Postcard-1910 Ravel darkened&cropped2.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:モーリス・ラヴェル|ラヴェル]]
|<!--曲 名--> style="font-size:10pt;" |[[w:亡き王女のためのパヴァーヌ|亡き王女のためのパヴァーヌ]]
|<!--発表年--> style="font-size:9pt;" |1899/<br>1910<ref>1899年にラヴェルによってピアノ曲として作曲され、1910年にラヴェル自身により管弦楽曲として編曲されました。</ref>
|<!-- file -->[[File:Maurice Ravel - Pavane pour une infante défunte - David Hernando Vitores - Kayoko Morimoto (Wasei Duo).oga]]
|<!--リンク-->[[:File:Maurice Ravel - Pavane pour une infante défunte - David Hernando Vitores - Kayoko Morimoto (Wasei Duo).oga|5分32秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ドビュッシー「亜麻色の髪の乙女」】-->
|[[画像:Claude Debussy ca 1908, foto av Félix Nadar.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:クロード・ドビュッシー|ドビュッシー]]
|<!--曲 名-->'''亜麻色の髪の乙女'''<ref>[[w:en:La fille aux cheveux de lin]]</ref>
|<!--発表年--> style="font-size:9pt;" |1909<br>-1910頃
|<!-- file -->[[File:Claude Debussy - La fille aux cleveux de lin - David Hernando Vitores - Kayoko Morimoto (Wasei Duo).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Claude Debussy - La fille aux cleveux de lin - David Hernando Vitores - Kayoko Morimoto (Wasei Duo).ogg|2分15秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ドビュッシー「月の光」】-->
|[[画像:Claude Debussy ca 1908, foto av Félix Nadar.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:クロード・ドビュッシー|ドビュッシー]]
|<!--曲 名--> style="font-size:12pt;" |『[[w:ベルガマスク組曲|ベルガマスク組曲]]』<br> より <span style="font-size:15pt;">'''月の光'''</span>
|<!--発表年--> style="font-size:9pt;" |1890頃
|<!-- file -->[[File:Clair de lune (Claude Debussy) Suite bergamasque.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Clair de lune (Claude Debussy) Suite bergamasque.ogg|5分4秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ドビュッシー「二つのアラベスク」】-->
|[[画像:Claude Debussy ca 1908, foto av Félix Nadar.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:クロード・ドビュッシー|ドビュッシー]]
|<!--曲 名--> style="font-size:12pt;" |『[[w:2つのアラベスク|二つのアラベスク]]』<br> より 第1番
|<!--発表年--> style="font-size:9pt;" |1890頃
|<!-- file -->[[File:Claude Debussy - Première Arabesque - Patrizia Prati.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Claude Debussy - Première Arabesque - Patrizia Prati.ogg|4分53秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【サティ「グノシエンヌ 第1番」】-->
| rowspan="2" |[[画像:Satie-erik-4ff9d0bde1749.jpg|border|center|50px]]
! rowspan="2" |<!--作曲者-->[[w:エリック・サティ|サティ]]
|<!--曲 名-->『[[w:グノシエンヌ|三つの'''グノシエンヌ''']]』<br> より '''第1番'''
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1890
|<!-- file -->[[File:Satie - Gnossienne 1.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Satie - Gnossienne 1.ogg|3分38秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【サティ「グノシエンヌ 第3番」】-->
|<!--曲 名--> 〃 第3番
|<!-- file -->[[File:Gnossienne 3 (Satie).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Gnossienne 3 (Satie).ogg|2分43秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【サティ「ジムノペディ」】-->
| rowspan="2" |[[画像:Satie-erik-4ff9d0bde1749.jpg|border|center|50px]]
! rowspan="2" |<!--作曲者-->[[w:エリック・サティ|サティ]]
|<!--曲 名--> style="font-size:14pt;" |『'''[[w:ジムノペディ|ジムノペディ]]'''』'''第1番'''<br> <span style="font-size:10pt;">(ピアノ独奏曲)</span>
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1888
|<!-- file -->[[File:Erik Satie - gymnopedies - la 1 ere. lent et douloureux.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Erik Satie - gymnopedies - la 1 ere. lent et douloureux.ogg|3分4秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【サティ「ジムノペディ」ギター演奏版】-->
|<!--曲 名--> 〃 <span style="font-size:10pt;">(ギター演奏版)</span>
|<!-- file -->[[File:Satie Gymnopedie No 1 performed by Michael Laucke.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Satie Gymnopedie No 1 performed by Michael Laucke.flac|2分52秒]]
|- <!--【■クラシックギター】-->
! colspan="7" style="background-color:#eee8aa;" |[[w:クラシックギター (器楽)|クラシックギター]]([[w:en:Classical guitar repertoire|Classical guitar repertoire]])黄金期<ref>[[w:en:Category:Compositions for guitar]] なども参照。</ref>
|-
!<!--【ROWSPAN】--> rowspan="4" style="background-color:#eee8aa;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【タレガ「アルハンブラの想い出」】-->
|[[画像:Francisco Tarrega.jpg|border|center|60px]]
!<!--作曲者-->[[w:フランシスコ・タレガ|タレガ]]
|<!--曲 名-->'''[[w:アルハンブラの思い出|アルハンブラの思い出]]'''
|<!--発表年--> style="font-size:9pt;" |1897
|<!-- file -->[[file:Recuerdos de la Alhambra.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:file:Recuerdos de la Alhambra.ogg|4分0秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【禁じられた遊び】-->
|[[画像:NARCISO YEPES, MAZATLAN, SINALOA, 10 DE NOVIEMBRE DEL 88 (13721355325).jpg|border|center|40px]]
! style="font-size:12pt;"|<!--作曲者-->[[w:ナルシソ・イエペス|イエペス]]<br>編曲<ref name="禁じられた遊び">1952年映画「[[w:禁じられた遊び|禁じられた遊び]]」挿入歌としてイエペスが編曲。原曲はスペイン民謡ともいわれているが、19世紀末頃に作曲されたともいわれています。</ref>
|<!--曲 名-->'''[[w:愛のロマンス|愛のロマンス]]'''<br>('''禁じられた遊び'''<ref name="禁じられた遊び"/>)
|<!--発表年--> style="font-size:8pt;"|<small>19世紀末?</small>
|<!-- file -->[[file:Romance Anónimo (Jeux interdits).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:file:Romance Anónimo (Jeux interdits).ogg|2分47秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【アストゥリアス】-->
|
!<!--作曲者--> style="font-size:10pt;" |[[w:イサーク・アルベニス|アルベニス]]<ref name="アストゥリアス">[[w:イサーク・アルベニス|アルベニス]]はピアノ曲として1890年頃に作曲し、1892年に発表しましたが、スペインのギタリスト [[w:アンドレス・セゴビア|アンドレス・セゴビア]]によってギター曲に編曲され、こちらの方が有名です。</ref>
|<!--曲 名--> style="font-size:11pt;" |[[w:アストゥリアス(伝説)|'''アストゥリアス'''(伝説)]]<ref name="アストゥリアス"/>
|<!--発表年--> style="font-size:9pt;" |1892<ref name="アストゥリアス"/>
|<!-- file -->[[File:Legend (Leyenda) performed by Michael Laucke.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Legend (Leyenda) performed by Michael Laucke.flac|6分53秒]]
|- <!--【■ロマン派音楽■】-->
! colspan="7" style="background-color:#eea6ee;" |[[w:ロマン派音楽|ロマン派音楽]]([[w:en:Romantic music|Romantic music]]: 1800~1910頃)
|-
!<!--【ROWSPAN】--> rowspan="100" style="background-color:#eea6ee;" |
|- <!--【■後期ロマン派音楽】-->
! colspan="6" style="background-color:#ffccd4;" |後期ロマン派音楽([[w:フランツ・リスト|リスト]]、[[w:リヒャルト・ワーグナー|ワーグナー]]、[[w:ヨハネス・ブラームス|ブラームス]]、[[w:ジュゼッペ・ヴェルディ|ヴェルディ]]、[[w:ヨハン・シュトラウス2世|J.シュトラウス2世]]、<br>[[w:ジョルジュ・ビゼー|ビゼー]]、[[w:カミーユ・サン=サーンス|サン=サーンス]]、[[w:エドワード・エルガー|エルガー]]、[[w:リヒャルト・シュトラウス|R.シュトラウス]])
|- <!--【■国民楽派】-->
! colspan="6" style="background-color:#ffccd4;" |国民楽派([[w:エドヴァルド・グリーグ|グリーグ]]/[[w:ベドルジハ・スメタナ|スメタナ]]、[[w:アントニン・ドヴォルザーク|ドヴォルザーク]]/[[w:ピョートル・チャイコフスキー|チャイコフスキー]]、[[w:モデスト・ムソルグスキー|ムソルグスキー]]、<br>[[w:ニコライ・リムスキー=コルサコフ|リムスキー=コルサコフ]]/[[w:ジャン・シベリウス|シベリウス]])
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【エルガー:威風堂々】-->
|[[画像:Edward Elgar.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:エドワード・エルガー|エルガー]]
|<!--曲 名-->'''[[w:威風堂々 (行進曲)|威風堂々]] 第1番'''より
|<!--発表年--> style="font-size:9pt;" |1901-<br>1907
|<!-- file -->[[File:Pomp and circumstances No. 1.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Pomp and circumstances No. 1.ogg|1分53秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:12pt;" <!--【ツァラトゥストラはこう語った】-->
|[[画像:Componist Richard Strauss-29152.ogv|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:リヒャルト・シュトラウス|R.シュトラウス]]
|<!--曲 名--> style="font-size:10pt;" |[[w:ツァラトゥストラはこう語った (交響詩)|ツァラトゥストラはかく語りき]]<br>(冒頭部「日の出」)
|<!--発表年--> style="font-size:9pt;" |1896
|<!-- file -->[[File:Richard Strauss - Also Sprach Zarathustra.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Richard Strauss - Also Sprach Zarathustra.ogg|1分26秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:12pt;" <!--【R.シュトラウス「ティル・オイレンシュピーゲルの愉快ないたずら」】-->
|[[画像:Postcard-1910 Strauss Richard.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:リヒャルト・シュトラウス|R.シュトラウス]]
|<!--曲 名--> style="font-size:10pt;" |[[w:ティル・オイレンシュピーゲルの愉快ないたずら|ティル・オイレンシュピーゲルの愉快ないたずら]]
|<!--発表年--> style="font-size:9pt;" |1895
|<!-- file -->[[File:Till Eulenspiegel's Merry Pranks - United States Navy Band.opus]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Till Eulenspiegel's Merry Pranks - United States Navy Band.opus|15分48秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【マスネ「タイスの瞑想曲」】-->
|[[画像:Jules Massenet by Eugène Pirou, edit (cropped).jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:ジュール・マスネ|マスネ]]
|<!--曲 名--><span style="font-size:9pt;">歌劇『[[w:タイス (オペラ)|タイス]]』より 間奏曲</span><br><span style="font-size:14pt;">('''[[w:タイスの瞑想曲|タイスの瞑想曲]]''')</span>
|<!--発表年--> style="font-size:9pt;" |1894
|<!-- file -->[[File:Meditation from Thais - Bomsori Kim.opus]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Meditation from Thais - Bomsori Kim.opus|4分46秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ドヴォルザーク:ユーモレスク】-->
|[[画像:Dvorak.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:アントニン・ドヴォルザーク|ドヴォルザーク]]
|<!--曲 名-->『'''[[w:ユーモレスク (ドヴォルザーク)|ユーモレスク]]'''』<br> 第7曲
|<!--発表年--> style="font-size:9pt;" |1894
|<!-- file -->[[File:Dvořák - Humoresque Op. 101 No. 7.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Dvořák - Humoresque Op. 101 No. 7.ogg|3分8秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ドヴォルザーク:交響曲第9番】-->
|[[画像:Dvorak.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:アントニン・ドヴォルザーク|ドヴォルザーク]]
|<!--曲 名-->『'''[[w:交響曲第9番 (ドヴォルザーク)|交響曲第9番<br>「新世界より」]]'''』<br> より 第2楽章
|<!--発表年--> style="font-size:9pt;" |1893
|<!-- file -->[[File:Antonin Dvorak - symphony no. 9 in e minor 'from the new world', op. 95 - ii. largo.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Antonin Dvorak - symphony no. 9 in e minor 'from the new world', op. 95 - ii. largo.ogg|11分34秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【チャイコフスキー「くるみ割り人形」】-->
|[[画像:Tchaikovsky, head-and-shoulders portrait.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:ピョートル・チャイコフスキー|チャイコフスキー]]
|<!--曲 名--><span style="font-size:9pt;">[[w:バレエ音楽|バレエ音楽]]</span><br>『'''[[w:くるみ割り人形|くるみ割り人形]]'''』<br> より '''花のワルツ'''
|<!--発表年--> style="font-size:9pt;" |1892
|<!-- file --> [[File:PDP-CH - National Symphony Orchestra of London - Stanford Robinson, conductor - The Nutcracker Suite, Op. 71 - Waltz of the Flowers - Tchaikovsky - Decca-k1144-ar9080.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - National Symphony Orchestra of London - Stanford Robinson, conductor - The Nutcracker Suite, Op. 71 - Waltz of the Flowers - Tchaikovsky - Decca-k1144-ar9080.flac|3分23秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【マーラー:交響曲第1番4楽章】-->
|[[画像:Gustav-Mahler-Kohut.jpg|border|center|50px]]
!<!--作曲者-->[[w:グスタフ・マーラー|マーラー]]
|<!--曲 名-->『[[w:交響曲第1番 (マーラー)|交響曲第1番]]』<br> より 第4楽章
|<!--発表年--> style="font-size:9pt;" |1989
|<!-- file -->[[File:Mahler Symphony1 Movement4 VPO.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mahler Symphony1 Movement4 VPO.ogg|17分11秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ドヴォルザーク:交響曲第8番】-->
|[[画像:Dvorak.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:アントニン・ドヴォルザーク|ドヴォルザーク]]
|<!--曲 名-->『[[w:交響曲第8番 (ドヴォルザーク)|交響曲第8番]]』<ref>[[w:アントニン・ドヴォルザーク|ドヴォルザーク]]の『[[w:交響曲第8番 (ドヴォルザーク)|交響曲第8番]]』は、かつては第4番に数えられ、「イギリス」「ロンドン交響曲」などと呼ばれていました。</ref><br> より 第3楽章
|<!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:Dvořák, Antonin — Symphony No. 8, Op. 88 — 3. allegretto grazioso.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Dvořák, Antonin — Symphony No. 8, Op. 88 — 3. allegretto grazioso.ogg|5分46秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【J.シュトラウス2世「皇帝円舞曲」】-->
|[[画像:Johann Strauss II 1890.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:ヨハン・シュトラウス2世|J.シュトラウス<br>2世]]
|<!--曲 名--> style="font-size:11pt;" |ワルツ『'''[[w:皇帝円舞曲|皇帝円舞曲]]'''』<br> 後半部分より
|<!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:Strauss, Kaiserwalzer.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Strauss, Kaiserwalzer.ogg|3分1秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【リムスキー=コルサコフ「熊蜂の飛行」】-->
|[[画像:Nikolai Rimski-Korsakov.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ニコライ・リムスキー=コルサコフ|リムスキー<br>=コルサコフ]]
|<!--曲 名--> style="font-size:9pt;" |歌劇『[[w:サルタン皇帝|サルタン皇帝]]』より<br><span style="font-size:12pt;"> 「'''[[w:熊蜂の飛行|熊蜂の飛行]]'''」
|<!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:Rimsky-Korsakov - flight of the bumblebee.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Rimsky-Korsakov - flight of the bumblebee.oga|1分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【リムスキー=コルサコフ「シェヘラザード」】-->
|[[画像:Nikolai Rimski-Korsakov.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ニコライ・リムスキー=コルサコフ|リムスキー<br>=コルサコフ]]
|<!--曲 名--> style="font-size:10pt;" |組曲<br><span style="font-size:12pt;">『'''[[w:シェヘラザード (リムスキー=コルサコフ)|シェヘラザード]]'''』</span>より<br><span style="font-size:9pt;">第1楽章「海とシンドバッドの船」
|<!--発表年--> style="font-size:9pt;" |1888
|<!-- file -->[[File:Rimsky-Korsakov. Scheherazade, Symphonic Suite, Op. 35 - 01 The Sea And Sinbads Ship.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Rimsky-Korsakov. Scheherazade, Symphonic Suite, Op. 35 - 01 The Sea And Sinbads Ship.ogg|8分19秒?]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【エルガー「愛の挨拶」】-->
|[[画像:Edward Elgar.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:エドワード・エルガー|エルガー]]
|<!--曲 名-->'''[[w:愛の挨拶|愛の挨拶]]'''
|<!--発表年--> style="font-size:9pt;" |1888
|<!-- file -->[[File:Mīlas sveiciens3555.wav]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mīlas sveiciens3555.wav|2分37秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【サン=サーンス「白鳥」】-->
|[[画像:CSaint-Saens.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:カミーユ・サン=サーンス|サン=サーンス]]
|<!--曲 名-->組曲『[[w:動物の謝肉祭|動物の謝肉祭]]』<br> より '''白鳥'''
|<!--発表年--> style="font-size:9pt;" |1886
|<!-- file -->[[File:Saint-Saens - The Carnival of the Animals - 13 Le cygne.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Saint-Saens - The Carnival of the Animals - 13 Le cygne.ogg|3分1秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ブラームス:交響曲第4番】-->
|[[画像:Johannes Brahms 1853.jpg|border|center|50px]]
!<!--作曲者-->[[w:ヨハネス・ブラームス|ブラームス]]
|<!--曲 名-->『'''[[w:交響曲第4番 (ブラームス)|交響曲第4番]]'''』<br> より 第3楽章
|<!--発表年--> style="font-size:9pt;" |1885
|<!-- file -->[[File:Brahms, Symphony No. 4 in E Minor, Op. 98 - III. Allegro Giocoso.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Brahms, Symphony No. 4 in E Minor, Op. 98 - III. Allegro Giocoso.ogg|6分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ブラームス「交響曲第3番」】-->
|[[画像:Johannes Brahms 1853.jpg|border|center|50px]]
!<!--作曲者-->[[w:ヨハネス・ブラームス|ブラームス]]
|<!--曲 名-->『'''[[w:交響曲第3番 (ブラームス)|交響曲第3番]]'''』<br> より 第3楽章
|<!--発表年--> style="font-size:9pt;" |1883
|<!-- file -->[[File:Brahms, Symphony No. 3 in F Major, Op. 90 - III. Poco allegretto.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Brahms, Symphony No. 3 in F Major, Op. 90 - III. Poco allegretto.ogg|6分10秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【J.シュトラウス2世「春の声」】-->
|[[画像:Johann Strauss II 1890.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:ヨハン・シュトラウス2世|J.シュトラウス<br>2世]]
|<!--曲 名-->ワルツ『[[w:春の声|春の声]]』
|<!--発表年--> style="font-size:9pt;" |1882
|<!-- file -->[[File:Ф.163 оп.1г №14 (1).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Ф.163 оп.1г №14 (1).ogg|1分41秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ワルトトイフェル「スケーターズワルツ」】-->
| rowspan="2" |[[画像:Felix Mendelssohn Bartholdy.jpg|border|center|50px]]
! rowspan="2" <!--作曲者--> style="font-size:9pt;" |[[w:エミール・ワルトトイフェル|ワルトトイフェル]]
| rowspan="2" <!--曲 名--> style="font-size:10pt;" |『[[w:スケートをする人々|スケートをする人々<br>('''スケーターズワルツ''')]]』
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1882
|<!-- file -->[[File:Schlittschuhläufer ZS V78-0129.wav]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Schlittschuhläufer ZS V78-0129.wav|2分48秒]]
|-
|<!-- file -->[[#ワルトトイフェル「スケーターズワルツ」|外部音源を聴く]]<ref>ワルトトイフェル作曲「スケーターズワルツ」の良い録音ファイルがウィキメディア・コモンズに見当たらないため、代わりに外部音源を参照します。</ref>
|<!--リンク--> style="font-size:8pt;"|<!--[[:|分秒]]-->
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【チャイコフスキー「1812年序曲」】-->
|[[画像:Tchaikovsky, head-and-shoulders portrait.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:ピョートル・チャイコフスキー|チャイコフスキー]]
|<!--曲 名--><span style="font-size:13pt;">'''[[w:1812年 (序曲)|1812年序曲]]'''
|<!--発表年--> style="font-size:9pt;" |1880
|<!-- file -->[[File:Pyotr Ilyich Tchaikovsky - 1812 overture.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Pyotr Ilyich Tchaikovsky - 1812 overture.ogg|16分39秒]] [[c:Category:Audio files of 1812 Overture|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【イヴァノヴィチ「ドナウ川のさざなみ」】-->
|[[画像:Iosif Ivanovici.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:ヨシフ・イヴァノヴィチ|イヴァノヴィチ]]
|<!--曲 名-->'''[[w:ドナウ川のさざなみ|ドナウ川のさざなみ]]'''<ref>[https://kotobank.jp/word/%E3%83%89%E3%83%8A%E3%82%A6%E5%B7%9D%E3%81%AE%E3%81%95%E3%81%96%E3%81%AA%E3%81%BF-1570920 ドナウ川のさざなみとは - コトバンク]</ref>
|<!--発表年--> style="font-size:9pt;" |1880
|<!-- file -->[[File:Hmv-c3104-2a010963.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Hmv-c3104-2a010963.ogg|4分02秒]] [[c:Category:Waves of the Danube|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ブラームス「ハンガリー舞曲」】-->
|[[画像:Johannes Brahms 1853.jpg|border|center|50px]]
!<!--作曲者-->[[w:ヨハネス・ブラームス|ブラームス]]
|<!--曲 名-->『'''[[w:ハンガリー舞曲|ハンガリー舞曲]]'''』<br> より 第5番
|<!--発表年--> style="font-size:9pt;" |1879頃
|<!-- file -->[[File:Johannes Brahms - Ungarischer Tanz 5 g-moll.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Johannes Brahms - Ungarischer Tanz 5 g-moll.ogg|3分48秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【チャイコフスキー「ヴァイオリン協奏曲」】-->
|[[画像:Tchaikovsky, head-and-shoulders portrait.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:ピョートル・チャイコフスキー|チャイコフスキー]]
|<!--曲 名--><span style="font-size:12pt;">『'''[[w:ヴァイオリン協奏曲 (チャイコフスキー)|ヴァイオリン協奏曲]]'''』<br> より 第3楽章
|<!--発表年--> style="font-size:9pt;" |1878
|<!-- file -->[[File:Violinist CARRIE REHKOPF-TCHAIKOVSKY VIOLIN CONCERTO 3rd mvt.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Violinist CARRIE REHKOPF-TCHAIKOVSKY VIOLIN CONCERTO 3rd mvt.ogg|9分15秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【サラサーテ:ツィゴイネルワイゼン】-->
|[[画像:Pablo de Sarasate.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:パブロ・デ・サラサーテ|サラサーテ]]
|<!--曲 名-->'''[[w:ツィゴイネルワイゼン|ツィゴイネルワイゼン]]'''
|<!--発表年--> style="font-size:9pt;" |1878
|<!-- file -->[[File:Zigeunerweisen Féret.mp3]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Zigeunerweisen Féret.mp3|8分36秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【フォーレ:夢の後で】-->
|[[画像:Gabriel Faure 1895.jpg|border|center|50px]]
!<!--作曲者-->[[w:ガブリエル・フォーレ|フォーレ]]
|<!--曲 名-->「三つのメロディ<ref>[[w:en:Trois mélodies, Op. 7 (Fauré)]]</ref>」より<br> 『夢の後で』
|<!--発表年--> style="font-size:9pt;" |1878
|<!-- file -->[[File:Apresunreve.mid]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Apresunreve.mid|(MIDI)]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【チャイコフスキー「交響曲第4番」】-->
|[[画像:Tchaikovsky, head-and-shoulders portrait.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:ピョートル・チャイコフスキー|チャイコフスキー]]
|<!--曲 名--><span style="font-size:9pt;"></span>『'''[[w:交響曲第4番 (チャイコフスキー)|交響曲第4番]]'''』<br> より 第4楽章
|<!--発表年--> style="font-size:9pt;" |1878頃
|<!-- file -->[[File:Finale Tchaikovsky Symphony No 4.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Finale Tchaikovsky Symphony No 4.ogg|9分33秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【チャイコフスキー「白鳥の湖」】-->
|[[画像:Tchaikovsky, head-and-shoulders portrait.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:ピョートル・チャイコフスキー|チャイコフスキー]]
|<!--曲 名--><span style="font-size:9pt;">[[w:バレエ音楽|バレエ音楽]]</span>『'''[[w:白鳥の湖|白鳥の湖]]'''』<br> より 情景
|<!--発表年--> style="font-size:9pt;" |1877
|<!-- file -->[[File:Tchaikovsky Swan Lake Op.20 No.10. Scène.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Tchaikovsky Swan Lake Op.20 No.10. Scène.ogg|2分30秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【チャイコフスキー「ピアノ協奏曲第1番」】-->
|[[画像:Tchaikovsky, head-and-shoulders portrait.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:ピョートル・チャイコフスキー|チャイコフスキー]]
|<!--曲 名--><span style="font-size:11pt;">『'''[[w:ピアノ協奏曲第1番 (チャイコフスキー)|ピアノ協奏曲第1番]]'''』</span><br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1875頃
|<!-- file -->[[File:Tchaikovsky, Concerto No.1 in B-flat minor Op.23, I. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Tchaikovsky, Concerto No.1 in B-flat minor Op.23, I. Allegro.ogg|18分47秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆ビゼー「カルメン」前奏曲」】-->
| rowspan="5" |[[画像:Georges bizet.jpg|border|center|50px]]
! rowspan="5" |<!--作曲者-->[[w:ジョルジュ・ビゼー|ビゼー]]
|<!--曲 名-->歌劇『'''[[w:カルメン (オペラ)|カルメン]]'''』<br> より 前奏曲
| rowspan="5" <!--発表年--> style="font-size:9pt;" |1875
|<!-- file -->[[File:Carmen - Prelude to Act 1.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Carmen - Prelude to Act 1.ogg|2分5秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ビゼー「カルメン ハバネラ」】-->
|<!--曲 名--> 〃 [[w:アリア|アリア]]「'''[[w:ハバネラ (アリア)|ハバネラ]]'''」
|<!-- file -->[[File:Habanera (ISRC USUAN1100656).mp3]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Habanera (ISRC USUAN1100656).mp3|4分8秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ビゼー「カルメン 闘牛士の歌」】-->
|<!--曲 名--> 〃 [[w:アリア|アリア]]「'''[[w:闘牛士の歌|闘牛士の歌]]'''」
|<!-- file -->[[File:Bizet - Carmen - Toreador Song (French, Musopen).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bizet - Carmen - Toreador Song (French, Musopen).ogg|4分31秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:10pt;" <!--【ビゼー「カルメン 第3幕への間奏曲」】-->
|<!--曲 名--> 〃 第3幕への間奏曲
|<!-- file -->[[File:Entracte to Act III from Carmen.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Entracte to Act III from Carmen.ogg|2分47秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:10pt;" <!--【ビゼー「カルメン 第4幕への間奏曲~アラゴネーズ~」】-->
|<!--曲 名--> 〃 第4幕への間奏曲<br> 「アラゴネーズ」
|<!-- file -->[[File:Entra'cte to Act IV from Carmen.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Entra'cte to Act IV from Carmen.ogg|1分54秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スメタナ:ヴルタヴァ】-->
|[[画像:FriedrichSmetana.jpg|border|center|50px]]
!<!--作曲者-->[[w:ベドルジハ・スメタナ|スメタナ]]
|<!--曲 名-->『[[w:わが祖国 (スメタナ)|わが祖国]]』より<br> '''ヴルタヴァ(モルダウ)'''
|<!--発表年--> style="font-size:9pt;" |1874
|<!-- file -->[[File:Smetana, Má vlast - Vltava - The Moldau.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Smetana, Má vlast - Vltava - The Moldau.ogg|12分51秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ムソルグスキー:展覧会の絵】-->
|[[画像:Modest Musorgskiy, 1870.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:モデスト・ムソルグスキー|ムソルグスキー]]
|<!--曲 名-->『'''[[w:展覧会の絵|展覧会の絵]]'''』より<br> プロムナード
|<!--発表年--> style="font-size:9pt;" |1874
|<!-- file -->[[File:Modest Mussorgsky - pictures at an exhibition - promenade - allegro giusto, nel modo russico senza allegrezza, ma.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Modest Mussorgsky - pictures at an exhibition - promenade - allegro giusto, nel modo russico senza allegrezza, ma.ogg|1分41秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ビゼー「アルルの女 前奏曲」】-->
| rowspan="2" |[[画像:Georges bizet.jpg|border|center|50px]]
! rowspan="2" |<!--作曲者-->[[w:ジョルジュ・ビゼー|ビゼー]]
|<!--曲 名-->『'''[[w:アルルの女|アルルの女]]'''』<br> より 前奏曲
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1872
|<!-- file -->[[File:Georges Bizet L'Arlésienne Suite no. 1 1st movement excerpt.mp3]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Georges Bizet L'Arlésienne Suite no. 1 1st movement excerpt.mp3|1分46秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ビゼー「アルルの女 メヌエット」】-->
|<!--曲 名--> 〃 '''メヌエット'''
|<!-- file -->[[#ビゼー「アルルの女 メヌエット」|外部音源を聴く]]<ref>ビゼー作曲「アルルの女 メヌエット」の良いファイルがウィキメディア・コモンズに見当たらないため、代わりに外部音源を参照します。</ref>
|<!--リンク--> style="font-size:8pt;"|<!--[[:|分秒]]-->
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ/ヴィルヘルミ「G線上のアリア」】-->
|[[画像:August Wilhelmj.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:アウグスト・ウィルヘルミ|ヴィルヘルミ]]編曲/<br>[[w:ヨハン・ゼバスティアン・バッハ|バッハ]]<ref name="Air_on_the_G_String">[[w:ヨハン・ゼバスティアン・バッハ|バッハ]]の『[[w:管弦楽組曲#第3番_BWV_1068|管弦楽組曲第3番]]』の第2曲「エール」をもとに、ヴィルヘルミが1871年にヴァイオリン独奏のために編曲した作品。一般にはバッハの作品として受け入れられている。</ref>
|<!--曲 名--> '''"[[w:G線上のアリア|G線上のアリア]]"'''<ref name="Air_on_the_G_String"/>
|<!--発表年--> style="font-size:9pt;" |1871<ref name="Air_on_the_G_String"/>
|<!-- file -->[[File:Air (Bach).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Air (Bach).ogg|4分20秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【チャイコフスキー「弦楽四重奏曲第1番」より「アンダンテ・カンタービレ」】-->
|[[画像:Tchaikovsky, head-and-shoulders portrait.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:ピョートル・チャイコフスキー|チャイコフスキー]]
|<!--曲 名--><span style="font-size:11pt;">『[[w:弦楽四重奏曲第1番 (チャイコフスキー)|弦楽四重奏曲 第1番]]』<br> より 第2楽章<br>'''"アンダンテ・カンタービレ"'''</span>
|<!--発表年--> style="font-size:9pt;" |1871頃
|<!-- file -->[[File:NYCP Tchaikovsky Andante cantabile.webm]]
|<!--リンク--> style="font-size:8pt;"|[[:File:NYCP Tchaikovsky Andante cantabile.webm|7分54秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ヴェルディ「アイーダ 凱旋行進曲」】-->
|[[画像:Verdi-1850s.jpg|border|center|50px]]
!<!--作曲者-->[[w:ジュゼッペ・ヴェルディ|ヴェルディ]]
|<!--曲 名-->歌劇『[[w:アイーダ|アイーダ]]』より<br> '''[[w:アイーダ#凱旋行進曲|凱旋行進曲]]'''(抜粋)
|<!--発表年--> style="font-size:9pt;" |1871
|<!-- file -->[[File:Aida-Trompeten.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Aida-Trompeten.ogg|0分51秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ワーグナー「ニュルンベルクのマイスタージンガー」】-->
|[[画像:RichardWagner.jpg|border|center|50px]]
!<!--作曲者-->[[w:リヒャルト・ワーグナー|ワーグナー]]
|<!--曲 名--> style="font-size:10pt;"|楽劇『'''[[w:ニュルンベルクのマイスタージンガー|ニュルンベルクの<br>マイスタージンガー]]'''』<br> より '''第1幕への前奏曲'''
|<!--発表年--> style="font-size:9pt;" |1868
|<!-- file -->[[File:Richard Wagner - die meistersinger von nurnberg - overture.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Richard Wagner - die meistersinger von nurnberg - overture.ogg|11分36秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【グリーグ:ピアノ協奏曲】-->
|[[画像:Edvard Grieg (1888) by Elliot and Fry - 02.jpg|border|center|40px]]
!<!--作曲者-->[[w:エドヴァルド・グリーグ|グリーグ]]
|<!--曲 名-->『[[w:ピアノ協奏曲 (グリーグ)|ピアノ協奏曲]]』<br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1868
|<!-- file -->[[File:Edvard Grieg - Concerto in A minor, 1st movement.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Edvard Grieg - Concerto in A minor, 1st movement.ogg|12分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【グリーグ:ペールギュント】-->
|[[画像:Edvard Grieg (1888) by Elliot and Fry - 02.jpg|border|center|40px]]
!<!--作曲者-->[[w:エドヴァルド・グリーグ|グリーグ]]
|<!--曲 名-->『'''[[w:ペール・ギュント (グリーグ)|ペール・ギュント]]'''』<br> より 朝
|<!--発表年--> style="font-size:9pt;" |1867
|<!-- file -->[[File:Musopen - Morning.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Musopen - Morning.ogg|3分49秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ムソルグスキー:はげ山の一夜】-->
|[[画像:Modest Musorgskiy, 1870.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:モデスト・ムソルグスキー|ムソルグスキー]]
|<!--曲 名-->'''[[w:禿山の一夜|はげ山の一夜]]''' <ref name="はげ山の一夜">ムソルグスキーによる原曲は1867年に作曲されましたが、1886年の[[w:ニコライ・リムスキー=コルサコフ|リムスキー=コルサコフ]]による編曲版が有名です。</ref>
|<!--発表年--> style="font-size:9pt;" |1867/<br>1886<ref name="はげ山の一夜"/>
|<!-- file -->[[File:Modest Mussorgsky - night on bald mountain.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Modest Mussorgsky - night on bald mountain.ogg|12分13秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【J.シュトラウス2世「美しく青きドナウ」】-->
|[[画像:Johann Strauss II 1890.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:ヨハン・シュトラウス2世|J.シュトラウス<br>2世]]
|<!--曲 名--> style="font-size:13pt;" |ワルツ<br>『'''[[w:美しく青きドナウ|美しく青きドナウ]]'''』
|<!--発表年--> style="font-size:9pt;" |1867
|<!-- file -->[[File:"An der schönen, blauen Donau" performed by the U.S. Marine Band.mp3]]
|<!--リンク--> style="font-size:8pt;"|[[:File:"An der schönen, blauen Donau" performed by the U.S. Marine Band.mp3|9分9秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スッペ「軽騎兵」序曲】-->
|[[画像:Franz von Suppé by Gabriel Decker 1847.jpg|border|center|50px]]
!<!--作曲者-->[[w:フランツ・フォン・スッペ|スッペ]]
|<!--曲 名-->喜歌劇『軽騎兵』<ref>[[w:en:Leichte Kavallerie]](ウィキペディア英語版記事)を参照。</ref><br> 序曲
|<!--発表年--> style="font-size:9pt;" |1866
|<!-- file -->[[File:Overture to Light Cavalry - U.S. Marine Band.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Overture to Light Cavalry - U.S. Marine Band.ogg|6分59秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【◆オッフェンバック作曲、カール・ビンダー編曲「冥界のオルフェ(天国と地獄)序曲」-->
| rowspan="2" |[[画像:Offenbach-by-Fritz-Luckhart.jpg|border|center|50px]]<br>[[画像:Carl Binder.jpg|border|center|50px]]
! rowspan="2" style="font-size:9pt;" |<!--作曲者-->[[w:ジャック・オッフェンバック|オッフェンバック]]作曲<br>/ビンダー編曲<ref name="地獄のオルフェ"><!--◆「冥界のオルフェ(天国と地獄)」序曲の脚注◆-->喜歌劇『[[w:地獄のオルフェ|冥界(地獄)のオルフェ]]』(仏 [[w:fr:Orphée aux Enfers|Orphée aux Enfers]])は、1858年にフランス語で初演され、劇中曲はドイツ生まれのフランスの作曲家[[w:ジャック・オッフェンバック|ジャック・オッフェンバック]]によって作曲されました。この劇の原題はギリシア神話に基づく「冥界の[[w:オルペウス|オルペウス(オルフェウス)]]」という意味ですが、日本では『'''天国と地獄'''』と訳されて有名になりました。フランス語のオリジナル版には序曲がありませんでしたが、1860年にオーストリアの都[[w:ウィーン|ウィーン]]でドイツ語版が上演されるに当たってオーストリアの作曲家'''カール・ビンダー'''(独 [[w:de:Carl Binder|Carl Binder]] 1816-60)によって劇中のオッフェンバックの曲を元に序曲が編曲されました。この序曲の第3部は「'''『冥界のオルフェ』の地獄のギャロップ'''」(仏 [[w:fr:Galop infernal d'Orphée aux Enfers|Galop infernal d'Orphée aux Enfers]])と呼ばれて知られるようになり、その本来の踊り(ギャロップ)とは別に'''カンカン'''(仏 [[w:fr:Cancan|le cancan]])という19世紀に生まれた踊りが結び付けられ、1868年にロンドンのダンスショー以降'''[[w:フレンチカンカン|フレンチカンカン]]'''(仏 [[w:fr:French cancan|French cancan]])の踊りに伴奏される曲として有名になりました。作曲家オッフェンバックやビンダーと「カンカン」「フレンチカンカン」は直接は関係ないようです。<!--◆脚注おわり◆--></ref>
|<!--曲 名--> style="font-size:12pt;"|喜歌劇<br>[[w:地獄のオルフェ|『冥界(地獄)のオルフェ]]』<br><span style="font-size:13pt;">('''天国と地獄''')'''序曲'''</span><ref name="地獄のオルフェ"/>
| rowspan="2" style="font-size:9pt;" |<!--発表年-->1858/60
|<!-- file -->[[File:Offenbach - Orpheus in the Underworld - Overture.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Offenbach - Orpheus in the Underworld - Overture.ogg|9分23秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;"
|<!--曲 名--> style="font-size:11pt;"| 〃 序曲 第3部<br><span style="font-size:9pt;">「ギャロップ」または「カンカン」</span><br><span style="font-size:13pt;">([[w:フレンチカンカン|'''フレンチカンカン''']]<ref name="地獄のオルフェ"/>)</span>
|<!-- file -->[[File:Offenbach - Orpheus in the Underworld - Overture, Can Can section.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Offenbach - Orpheus in the Underworld - Overture, Can Can section.ogg|1分47秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【J.シュトラウス2世「トリッチ・トラッチ・ポルカ」】-->
|[[画像:Johann Strauss II 1890.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:ヨハン・シュトラウス2世|J.シュトラウス<br>2世]]
|<!--曲 名--> style="font-size:10pt;" |[[w:ポルカ|ポルカ]]<br>『'''[[w:トリッチ・トラッチ・ポルカ|トリッチ・トラッチ・ポルカ]]'''』
|<!--発表年--> style="font-size:9pt;" |1858
|<!-- file -->[[File:Akkordeonorchester Hof - Tritsch-Tratsch Polka - audio.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Akkordeonorchester Hof - Tritsch-Tratsch Polka - audio.ogg|2分37秒]] [[c:Category:Tritsch-Tratsch-Polka|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ワーグナー「ワルキューレの騎行」】-->
|[[画像:RichardWagner.jpg|border|center|50px]]
!<!--作曲者-->[[w:リヒャルト・ワーグナー|ワーグナー]]
|<!--曲 名--> style="font-size:10pt;"|楽劇『'''[[w:ワルキューレ (楽劇)|ワルキューレ]]'''』第3幕より<br> <span style="font-size:13pt;">('''ワルキューレの騎行''')</span>
|<!--発表年--> style="font-size:9pt;" |1856
|<!-- file -->[[File:Richard Wagner - Ride of the Valkyries.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Richard Wagner - Ride of the Valkyries.ogg|4分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【グノー「アヴェ・マリア」】-->
|[[画像:Charles Gounod by Nadar in 1870.png|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:シャルル・グノー|グノー]]編曲/<br>[[w:ヨハン・ゼバスティアン・バッハ|バッハ]]<ref name="Bach-Gounod">[[w:ヨハン・ゼバスティアン・バッハ|バッハ]]の「[[w:平均律クラヴィーア曲集|平均律クラヴィーア曲集]] 第1巻」の第1番('''[[w:en:Prelude and Fugue in C major, BWV 846|BWV 846]]'''、1722年)より「前奏曲」の曲を用いて、1853年にフランス語の歌詞で、1859年にラテン語の歌詞で完成させた声楽曲。[[w:en:Ave Maria (Bach/Gounod)]] を参照のこと。</ref>
|<!--曲 名-->[[w:アヴェ・マリア (グノー)|アヴェ・マリア]]<ref name="Bach-Gounod"/>
|<!--発表年--> style="font-size:9pt;" |1853/<br>1859<ref name="Bach-Gounod"/>
|<!-- file -->[[File:JOHN MICHEL CELLO-BACH AVE MARIA.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:JOHN MICHEL CELLO-BACH AVE MARIA.ogg|5分1秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バダジェフスカ:乙女の祈り】-->
|
!<!--作曲者--> style="font-size:8pt;"|[[w:テクラ・バダジェフスカ|ボンダジェフスカ<br>(バダジェフスカ)]]
|<!--曲 名-->'''[[w:乙女の祈り (バダジェフスカの曲)|乙女の祈り]]'''
|<!--発表年--> style="font-size:9pt;" |1851
|<!-- file -->[[File:A Maiden's Prayer.mid]]
|<!--リンク--> style="font-size:8pt;"|[[:File:A Maiden's Prayer.mid|3分6秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【リスト「ラ・カンパネッラ」】-->
|[[画像:Liszt-CC.jpg|border|center|50px]]
!<!--作曲者-->[[w:フランツ・リスト|リスト]]
|<!--曲 名--> style="font-size:9pt;" |『[[w:パガニーニによる大練習曲|パガニーニによる大練習曲]]』より<br>
第3番 <span style="font-size:12pt;">'''[[w:ラ・カンパネッラ|ラ・カンパネッラ(鐘)]]'''</span>
|<!--発表年--> style="font-size:9pt;" |1851 <ref name="Franz_Liszt">[[w:en:List_of_compositions_by_Franz_Liszt]]</ref>
|<!-- file -->[[File:Liszt-La Campanella-Greiss.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Liszt-La Campanella-Greiss.ogg|6分12秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【リスト「ハンガリー狂詩曲 第2番」】-->
|[[画像:Liszt-CC.jpg|border|center|50px]]
!<!--作曲者-->[[w:フランツ・リスト|リスト]]
|<!--曲 名--> style="font-size:11pt;" |『[[w:ハンガリー狂詩曲|ハンガリー狂詩曲]]』より<br> 第2番
|<!--発表年--> style="font-size:9pt;" |1849作曲<ref name="Franz_Liszt"/>
|<!-- file -->[[File:Franz Liszt - Second Hungarian Rhapsody.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Franz Liszt - Second Hungarian Rhapsody.ogg|13分6秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ヨハン・シュトラウス1世「ラデツキー行進曲」】-->
| rowspan="2" |[[画像:Johan Strauss padre.jpg|border|center|50px]]
! rowspan="2" <!--作曲者--> style="font-size:9pt;"|[[w:ヨハン・シュトラウス1世|J.シュトラウス<br>1世(父)]]
|<!--曲 名--> style="font-size:14pt;"|'''[[w:ラデツキー行進曲|ラデツキー行進曲]]'''
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1848
|<!-- file -->[[File:Radetzky March.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Radetzky March.ogg|2分33秒]] [[:c:Category:Radetzky March|c:]]
|-
|<!--曲 名--> style="font-size:10pt;" | 〃 (電子楽器版)
|<!-- file -->[[File:Johann Baptist Strauss, Marcia di Radetzky (Radetzky-Marsch) - synth version.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Johann Baptist Strauss, Marcia di Radetzky (Radetzky-Marsch) - synth version.ogg|3分02秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ワーグナー 「ローエングリン」より「婚礼の合唱」】-->
| rowspan="2" |[[画像:RichardWagner.jpg|border|center|50px]]
! rowspan="2" |<!--作曲者-->[[w:リヒャルト・ワーグナー|ワーグナー]]
|<!--曲 名-->歌劇『[[w:ローエングリン|ローエングリン]]』より<br> 「[[w:婚礼の合唱|婚礼の合唱]]」<ref name="ローエングリン,婚礼の合唱">ワーグナーの歌劇『[[w:ローエングリン|ローエングリン]]』は1850年に初演されましたが、1845~1848年頃に作曲されていたと考えられています。劇中の合唱曲「[[w:婚礼の合唱|婚礼の合唱]]」は、「ワーグナーの[[w:結婚行進曲|結婚行進曲]]」としても知られ、メンデルスゾーンの曲とともに結婚行進曲の定番となっています。</ref>
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1850<br>(1845-48) <ref name="ローエングリン,婚礼の合唱"/>
|<!-- file -->[[File:Richard Wagner - Treulich geführt, version 2.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Richard Wagner - Treulich geführt, version 2.ogg|1分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;"
|<!--曲 名-->'''"ワーグナーの<br> <span style="font-size:13pt;">「[[w:結婚行進曲|結婚行進曲]]」</span>"''' <ref name="ローエングリン,婚礼の合唱"/>
|<!-- file -->[[File:Wagner Bridal Chorus.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wagner Bridal Chorus.ogg|2分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ワーグナー「タンホイザー」序曲】-->
|[[画像:RichardWagner.jpg|border|center|50px]]
!<!--作曲者-->[[w:リヒャルト・ワーグナー|ワーグナー]]
|<!--曲 名-->歌劇『'''[[w:タンホイザー|タンホイザー]]'''』<br> '''序曲'''
|<!--発表年--> style="font-size:9pt;" |1845
|<!-- file -->[[File:Overture to Tannhauser - U.S. Marine Band.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Overture to Tannhauser - U.S. Marine Band.ogg|14分27秒]]
|- <!--【◆盛期ロマン派音楽】-->
! colspan="6" style="background-color:#ffccd4;" |盛期ロマン派音楽([[w:エクトル・ベルリオーズ|ベルリオーズ]]、[[w:ロベルト・シューマン|シューマン]]、[[w:フェリックス・メンデルスゾーン|メンデルスゾーン]]、[[w:フレデリック・ショパン|ショパン]])
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ショパン「小犬のワルツ」】-->
|[[画像:Chopin, by Wodzinska.JPG|border|center|50px]]
!<!--作曲者-->[[w:フレデリック・ショパン|ショパン]]
|<!--曲 名-->[[w:ワルツ第6番 (ショパン)|ワルツ第6番<br> ('''小犬のワルツ''')]]
|<!--発表年--> style="font-size:9pt;" |1847頃
|<!-- file -->[[File:Muriel-Nguyen-Xuan-Chopin-valse-opus64-1.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Muriel-Nguyen-Xuan-Chopin-valse-opus64-1.ogg|2分0秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューマン「ピアノ協奏曲」】-->
|[[画像:Robert-schumann.jpg|border|center|50px]]
!<!--作曲者-->[[w:ロベルト・シューマン|シューマン]]
|<!--曲 名-->『[[w:ピアノ協奏曲 (シューマン)|ピアノ協奏曲]]』<br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1845
|<!-- file -->[[File:Schumann - Piano Concerto in A minor Op.54 - I. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Schumann - Piano Concerto in A minor Op.54 - I. Allegro.ogg|13分54秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【メンデルスゾーン「ヴァイオリン協奏曲」】-->
|[[画像:Felix Mendelssohn Bartholdy.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:フェリックス・メンデルスゾーン|メンデルスゾーン]]
|<!--曲 名--> style="font-size:12pt;" |『'''[[w:ヴァイオリン協奏曲 (メンデルスゾーン)|ヴァイオリン協奏曲]]'''』<br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1844
|<!-- file -->[[File:Felix Mendelssohn - Violinkonzert e-moll - 1. Allegro molto appassionato.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Felix Mendelssohn - Violinkonzert e-moll - 1. Allegro molto appassionato.ogg|13分27秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【メンデルスゾーン「春の歌」】-->
|[[画像:Felix Mendelssohn Bartholdy.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:フェリックス・メンデルスゾーン|メンデルスゾーン]]
|<!--曲 名--> style="font-size:10pt;" |『[[w:無言歌集 (メンデルスゾーン)|無言歌集]]』<br> より 第5巻第6曲「'''春の歌'''」
|<!--発表年--> style="font-size:9pt;" |1844
|<!-- file -->[[#メンデルスゾーン「春の歌」|外部音源を聴く]]<ref>メンデルスゾーン作曲「春の歌」がウィキメディア・コモンズに見当たらないため、代わりに外部音源を参照します。</ref>
|<!--リンク--> style="font-size:8pt;"|<!--[[:|分秒]]-->
|- style="text-align:left;font-family:Times New Roman;font-size:9pt;" <!--【メンデルスゾーン「結婚行進曲」】-->
|[[画像:Felix Mendelssohn Bartholdy.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:フェリックス・メンデルスゾーン|メンデルスゾーン]]
|<!--曲 名-->[[w:付随音楽|劇付随音楽]]<span style="font-size:11pt;">『[[w:夏の夜の夢 (メンデルスゾーン)|夏の夜の夢]]』</span>より<br> <span style="font-size:14pt;">「'''[[w:結婚行進曲 (メンデルスゾーン)|結婚行進曲]]'''」</span>
|<!--発表年--> style="font-size:9pt;" |1842
|<!-- file -->[[File:A Midsummer Night's Dream Op. 61 Wedding March (Mendelssohn) European Archive.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:A Midsummer Night's Dream Op. 61 Wedding March (Mendelssohn) European Archive.ogg|4分54秒]] [[:c:Category:Wedding march|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ショパン「英雄ポロネーズ」】-->
|[[画像:Chopin, by Wodzinska.JPG|border|center|50px]]
!<!--作曲者-->[[w:フレデリック・ショパン|ショパン]]
|<!--曲 名-->[[w:ポロネーズ第6番 (ショパン)|ポロネーズ第6番<br> ('''英雄ポロネーズ''')]]
|<!--発表年--> style="font-size:9pt;" |1842頃
|<!-- file -->[[File:Latsabidze plays Polonaise in A flat, Op. 53.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Latsabidze plays Polonaise in A flat, Op. 53.ogg|6分49秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ショパン「雨だれの前奏曲」】-->
| rowspan="2" |[[画像:Chopin, by Wodzinska.JPG|border|center|50px]]
!<!--作曲者--> rowspan="2" |[[w:フレデリック・ショパン|ショパン]]
|<!--曲 名--> rowspan="2" |『[[w:前奏曲 (ショパン)#24の前奏曲作品28|24の前奏曲]]』<span style="font-size:9pt;">作品28<br> より 第15番</span><br> '''"雨だれの前奏曲"'''
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1839
|<!-- file -->[[File:Prelude Op. 28 no. 15.mp3]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Prelude Op. 28 no. 15.mp3|4分55秒(mp3)]]
|-
|<!-- file -->[[File:Chopin Prelude Op 28 N 15 Giorgi Latsabidze performs.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Chopin Prelude Op 28 N 15 Giorgi Latsabidze performs.ogg|5分15秒(ogg)]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ショパン:華麗なる大円舞曲】-->
|[[画像:Chopin, by Wodzinska.JPG|border|center|50px]]
!<!--作曲者-->[[w:フレデリック・ショパン|ショパン]]
|<!--曲 名-->[[w:華麗なる大円舞曲 (ショパン)|'''華麗なる大円舞曲'''<br>('''ワルツ第1番''')]]
|<!--発表年--> style="font-size:9pt;" |1834
|<!-- file -->[[File:Chopin - Grande valse brillante in E flat major, Op. 18.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Chopin - Grande valse brillante in E flat major, Op. 18.ogg|5分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューマン「トロイメライ」】-->
|[[画像:Robert-schumann.jpg|border|center|50px]]
!<!--作曲者-->[[w:ロベルト・シューマン|シューマン]]
|<!--曲 名-->『'''[[w:子供の情景|子供の情景]]'''』より<br> <small>第7曲</small> '''トロイメライ'''
|<!--発表年--> style="font-size:9pt;" |1838頃
|<!-- file -->[[File:Robert Schumann - scenes from childhood, op. 15 - vii. dreaming.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Robert Schumann - scenes from childhood, op. 15 - vii. dreaming.ogg|3分23秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ショパン「幻想即興曲」】-->
|[[画像:Chopin, by Wodzinska.JPG|border|center|50px]]
!<!--作曲者-->[[w:フレデリック・ショパン|ショパン]]
|<!--曲 名--><span style="font-size:14pt;">'''[[w:幻想即興曲|幻想即興曲]]'''</span>
|<!--発表年--> style="font-size:9pt;" |1834<br>(1855)<ref>[[w:幻想即興曲|幻想即興曲]]の作曲は1834年ですが、ショパン没後の1855年に公表されました。</ref>
|<!-- file -->[[File:Frederic Chopin - Fantasy Impromptu Opus 66.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Frederic Chopin - Fantasy Impromptu Opus 66.ogg|5分11秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ショパン「別れの曲」】-->
|[[画像:Chopin, by Wodzinska.JPG|border|center|50px]]
!<!--作曲者-->[[w:フレデリック・ショパン|ショパン]]
|<!--曲 名-->[[w:練習曲作品10-3 (ショパン)|練習曲作品10-3<br><span style="font-size:14pt;"> ('''別れの曲''')</span>]]
|<!--発表年--> style="font-size:9pt;" |1832
|<!-- file -->[[File:Frederic Chopin - Opus 10 - Twelve Grand Etudes - E Major.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Frederic Chopin - Opus 10 - Twelve Grand Etudes - E Major.ogg|4分7秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ショパン「ノクターン」】-->
|[[画像:Chopin, by Wodzinska.JPG|border|center|50px]]
!<!--作曲者-->[[w:フレデリック・ショパン|ショパン]]
|<!--曲 名-->[[w:夜想曲第2番 (ショパン)|夜想曲第2番<br><span style="font-size:14pt;"> ('''ノクターン''')</span>]]
|<!--発表年--> style="font-size:9pt;" |1832
|<!-- file -->[[File:Frederic Chopin - Nocturne Eb major Opus 9, number 2.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Frederic Chopin - Nocturne Eb major Opus 9, number 2.ogg|4分13秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ショパン「革命」】-->
|[[画像:Chopin, by Wodzinska.JPG|border|center|50px]]
!<!--作曲者-->[[w:フレデリック・ショパン|ショパン]]
|<!--曲 名-->[[w:練習曲作品10-12 (ショパン)|練習曲作品10-12<br><span style="font-size:14pt;"> ('''革命''')</span>]]
|<!--発表年--> style="font-size:9pt;" |1831頃
|<!-- file -->[[File:Frederic Chopin - Opus 10 - Twelve Grand Etudes - c minor.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Frederic Chopin - Opus 10 - Twelve Grand Etudes - c minor.ogg|2分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ベルリオーズ「幻想交響曲」】-->
| rowspan="2" |[[画像:Berlioz Petit BNF Gallica-crop.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;" |[[w:エクトル・ベルリオーズ|ベルリオーズ]]
|<!--曲 名-->『'''[[w:幻想交響曲|幻想交響曲]]'''』より<br> <span style="font-size:11pt;">第4楽章「断頭台への行進」</span>
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1830
|<!-- file -->[[File:Hector Berlioz - Symphonie fantastique, op. 14 - 4. Marche au supplice (Igor Markevitch, Orchestre Lamoureux, 1962).flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Hector Berlioz - Symphonie fantastique, op. 14 - 4. Marche au supplice (Igor Markevitch, Orchestre Lamoureux, 1962).flac|4分48秒]]
|-
|<!--曲 名--> <span style="font-size:11pt;">第5楽章「魔女の夜宴の夢」</span>
|<!-- file -->[[File:Hector Berlioz - Symphonie fantastique, op. 14 - 5. Songe d'une nuit du Sabbat (Igor Markevitch, Orchestre Lamoureux, 1962).flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Hector Berlioz - Symphonie fantastique, op. 14 - 5. Songe d'une nuit du Sabbat (Igor Markevitch, Orchestre Lamoureux, 1962).flac|11分13秒]]
|- <!--【◆初期ロマン派音楽】-->
! colspan="6" style="background-color:#ffccd4;" |初期ロマン派音楽([[w:フランツ・シューベルト|シューベルト]]、[[w:カール・マリア・フォン・ウェーバー|ウェーバー]]、[[w:ジョアキーノ・ロッシーニ|ロッシーニ]]、[[w:ニコロ・パガニーニ|パガニーニ]])
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ロッシーニ「ウィリアム・テル序曲」】-->
|[[画像:Composer Rossini G 1865 by Carjat - Restoration.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ジョアキーノ・ロッシーニ|ロッシーニ]]
|<!--曲 名--> style="font-size:12pt;" |歌劇『'''[[w:ウィリアム・テル (オペラ)|ウィリアム・テル]]'''』<br> より <span style="font-size:14pt;">'''[[w:ウィリアム・テル序曲|序曲]]'''</span>
|<!--発表年--> style="font-size:9pt;" |1829
|<!-- file -->[[File:William Tell2.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:William Tell2.ogg|4分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ウェーバー「魔弾の射手」】-->
|[[画像:Caroline Bardua - Bildnis des Komponisten Carl Maria von Weber.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:カール・マリア・フォン・ウェーバー|ウェーバー]]
|<!--曲 名--> style="font-size:12pt;" |歌劇『'''[[w:魔弾の射手|魔弾の射手]]'''』序曲
|<!--発表年--> style="font-size:9pt;" |1821
|<!-- file -->[[File:Carl Maria von Weber - der freischutz, j. 277 - overture.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Carl Maria von Weber - der freischutz, j. 277 - overture.ogg|10分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ウェーバー「舞踏への勧誘」】-->
|[[画像:Caroline Bardua - Bildnis des Komponisten Carl Maria von Weber.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:カール・マリア・フォン・ウェーバー|ウェーバー]]
|<!--曲 名--> style="font-size:12pt;" | '''[[w:舞踏への勧誘|舞踏への勧誘<br> (舞踏への招待)]]'''
|<!--発表年--> style="font-size:9pt;" |1819
|<!-- file -->[[#ウェーバー「舞踏への勧誘」|外部音源を聴く]]<ref>ウェーバー作曲「舞踏への勧誘」がウィキメディア・コモンズに見当たらないため、代わりに外部音源を参照します。</ref>
|<!--リンク--> style="font-size:8pt;"|
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【パガニーニ「ヴァイオリン協奏曲第1番」】-->
|[[画像:Niccolò Paganini ritratto giovanile.jpg|border|center|50px]]
!<!--作曲者-->[[w:ニコロ・パガニーニ|パガニーニ]]
|<!--曲 名--> style="font-size:11pt;" |『[[w:ヴァイオリン協奏曲第1番 (パガニーニ)|ヴァイオリン協奏曲第1番]]』<br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1810<br>年代中頃
|<!-- file -->[[File:01 - Columbia 33 FCX 140 Side A - Francescati, Ormandy - Paganini Violinkonzert Nr. 1 D-Dur op.6 - Allegro maestoso.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:01 - Columbia 33 FCX 140 Side A - Francescati, Ormandy - Paganini Violinkonzert Nr. 1 D-Dur op.6 - Allegro maestoso.flac|16分04秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【パガニーニ「24の奇想曲 第24番」】-->
|[[画像:Niccolò Paganini ritratto giovanile.jpg|border|center|50px]]
!<!--作曲者-->[[w:ニコロ・パガニーニ|パガニーニ]]
|<!--曲 名-->『[[w:24の奇想曲|24の奇想曲]]』<br> より 第24番
|<!--発表年--> style="font-size:9pt;" |1802-<br>1817頃
|<!-- file -->[[File:Paganini Caprice-24.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Paganini Caprice-24.ogg|5分11秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ロッシーニ「セビリアの理髪師 序曲」】-->
| rowspan="2" |[[画像:Composer Rossini G 1865 by Carjat - Restoration.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;" |[[w:ジョアキーノ・ロッシーニ|ロッシーニ]]
|<!--曲 名--> rowspan="2" style="font-size:12pt;" |歌劇『'''[[w:セビリアの理髪師|セビリアの理髪師]]'''』<br> より <span style="font-size:12pt;">'''序曲'''</span>
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1816
|<!-- file -->[[File:PDP-CH - New York Philharmonic - Arturo Toscanini - The Barber of Seville - Gioachino Rossini - Overture - Part 1 - Electrola-ej576-42-846.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - New York Philharmonic - Arturo Toscanini - The Barber of Seville - Gioachino Rossini - Overture - Part 1 - Electrola-ej576-42-846.flac|3分41秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!-- file -->[[File:PDP-CH - New York Philharmonic - Arturo Toscanini - The Barber of Seville - Gioachino Rossini - Overture - Part 2 - Electrola-ej576-42-757.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - New York Philharmonic - Arturo Toscanini - The Barber of Seville - Gioachino Rossini - Overture - Part 2 - Electrola-ej576-42-757.flac|4分01秒]]
|- <!--【■シューベルト】-->
! colspan="6" style="background-color:#ffccd4;" |[[w:フランツ・シューベルト#おもな作品|シューベルトの楽曲]]([[w:en:Franz_Schubert#Music|compositions by Franz Schubert]])初期ロマン派
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューベルト「楽興の時 第3番」】-->
|[[画像:Franz Schubert by Wilhelm August Rieder 1875 larger version (head cropped).png|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:フランツ・シューベルト|シューベルト]]
|<!--曲 名-->『'''[[w:楽興の時 (シューベルト)|楽興の時]]'''』<span style="font-size:11pt;">(D780)</span><br> より '''第3番'''
|<!--発表年--> style="font-size:9pt;" |1828
|<!-- file -->[[File:Franz Schubert - Moments Musicaux opus 94-3 audio.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Franz Schubert - Moments Musicaux opus 94-3 audio.ogg|1分51秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューベルト「冬の旅」より「菩提樹」】-->
|[[画像:Franz Schubert by Wilhelm August Rieder 1875 larger version (head cropped).png|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:フランツ・シューベルト|シューベルト]]
|<!--曲 名-->歌曲集『[[w:冬の旅|冬の旅]]』<span style="font-size:11pt;">(D911)</span><br>より 第5曲 '''「[[w:菩提樹 (シューベルト)|菩提樹]]」'''
|<!--発表年--> style="font-size:9pt;" |1827
|<!-- file -->[[File:05 - Der Lindenbaum (CK 2950-2, ES 384).flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:05 - Der Lindenbaum (CK 2950-2, ES 384).flac|4分16秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューベルト「交響曲第8番(グレート)」】-->
| rowspan="3" |[[画像:Franz Schubert by Wilhelm August Rieder 1875 larger version (head cropped).png|center|50px]]
! rowspan="3" <!--作曲者--> style="font-size:11pt;" |[[w:フランツ・シューベルト|シューベルト]]
|<!--曲 名--> rowspan="1" style="font-size:11pt;" |『[[w:交響曲第8番 (シューベルト)|交響曲第8番 (第9番)<br>「ザ・グレイト」]]』<span style="font-size:11pt;">(D944)</span><br> より 第1楽章
| rowspan="3" <!--発表年--> style="font-size:9pt;" |1826
|<!-- file -->[[File:PDP-CH - London Symphony Orchestra - Bruno Walter - Symphony No. 9 in C major, D 944 - Schubert - 1st Movement, Part 1, Andante - Hmv-db3607-2ea6754.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:D 944 – Symphony No. 9 in C major "Great"|c:]]<br>[[:File:PDP-CH - London Symphony Orchestra - Bruno Walter - Symphony No. 9 in C major, D 944 - Schubert - 1st Movement, Part 1, Andante - Hmv-db3607-2ea6754.flac|3分51秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> rowspan="1" style="font-size:11pt;" | 〃 第1楽章(つづき)
|<!-- file -->[[File:PDP-CH - London Symphony Orchestra - Bruno Walter - Symphony No. 9 in C major, D 944 - Schubert - 1st Movement, Part 2, Allegro ma non troppo - Hmv-db3607-2ea6755.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - London Symphony Orchestra - Bruno Walter - Symphony No. 9 in C major, D 944 - Schubert - 1st Movement, Part 2, Allegro ma non troppo - Hmv-db3607-2ea6755.flac|4分41秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> rowspan="1" style="font-size:11pt;" | 〃 第1楽章(つづき)
|<!-- file -->[[File:PDP-CH - London Symphony Orchestra - Bruno Walter - Symphony No. 9 in C major, D 944 - Schubert - 1st Movement, Conclusion, Allegro ma non troppo - Hmv-db3608-2ea6756.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - London Symphony Orchestra - Bruno Walter - Symphony No. 9 in C major, D 944 - Schubert - 1st Movement, Conclusion, Allegro ma non troppo - Hmv-db3608-2ea6756.flac|4分53秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューベルト「エレンの歌第3番《アヴェ・マリア》」】-->
| rowspan="2" |[[画像:Franz Schubert by Wilhelm August Rieder 1875 larger version (head cropped).png|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;" |[[w:フランツ・シューベルト|シューベルト]]
|<!--曲 名--> style="font-size:10pt;" |『[[w:エレンの歌第3番|エレンの歌 第3番]]』(D839)<br> '''"<span style="font-size:12pt;">シューベルトの<br> [[w:アヴェ・マリア|アヴェ・マリア]]</span>"'''<br> (曲のみ)
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1825
|<!-- file -->[[File:Free Tim - Schuberts Ave Maria.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Free Tim - Schuberts Ave Maria.ogg|5分26秒]] [[:c:Category:D 839 – Ave Maria, Op. 52 No. 6 (Schubert)|c:]]
|-
|<!--曲 名--> style="font-size:10pt;" | 〃 (歌唱付き)
|<!-- file -->[[File:Schubert Ave Maria ukr.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Schubert Ave Maria ukr.oga|6分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューベルト「未完成交響曲」】-->
|[[画像:Franz Schubert by Wilhelm August Rieder 1875 larger version (head cropped).png|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:フランツ・シューベルト|シューベルト]]
|<!--曲 名--> style="font-size:11pt;" |『[[w:交響曲第7番 (シューベルト)|交響曲第7番'''「未完成」''']]』<br> <span style="font-size:11pt;">(D759)</span> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1822
|<!-- file -->[[File:Schubert Symphony No. 8 'Unfinished' - 1- Allegro moderato in B minor.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Schubert Symphony No. 8 'Unfinished' - 1- Allegro moderato in B minor.ogg|14分29秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューベルト「軍隊行進曲 第1番」】-->
|[[画像:Franz Schubert by Wilhelm August Rieder 1875 larger version (head cropped).png|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:フランツ・シューベルト|シューベルト]]
|<!--曲 名-->『'''[[w:軍隊行進曲 (シューベルト)|三つの軍隊行進曲]]'''』<br> <span style="font-size:11pt;">(D733)</span> より '''第1番'''
|<!--発表年--> style="font-size:9pt;" |1818
|<!-- file -->[[File:Schubert Marche Militaire.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Schubert Marche Militaire.ogg|4分10秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:12pt;" <!--【シューベルト「魔王」】-->
|[[画像:Franz Schubert by Wilhelm August Rieder 1875 larger version (head cropped).png|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:フランツ・シューベルト|シューベルト]]
|<!--曲 名-->[[w:歌曲|歌曲]]<span style="font-size:15pt;">『'''[[w:魔王 (シューベルト)|魔王]]'''』</span><span style="font-size:11pt;">(D328)</span> <ref name="魔王"><!--◆シューベルト「魔王」の脚注◆-->ドイツの偉大な詩人[[w:ヨハン・ヴォルフガング・フォン・ゲーテ|ゲーテ]]の詩『[[w:魔王 (ゲーテ)|魔王]]』(独 [[s:de:Erlkönig|Erlkönig]]、邦訳 [[s:魔王|魔王]])は多くの作曲家によって曲が付けられましたが、[[w:フランツ・シューベルト|シューベルト]]による作曲が最も著名で、かつシューベルト自身の代表的な歌曲の一つとなりました。<!--◆脚注おわり--></ref>
|<!--発表年--> style="font-size:9pt;" |1815
|<!-- file -->[[File:Schubert's Erlkönig, D.328 - Michael Jackson.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Schubert's Erlkönig, D.328 - Michael Jackson.ogg|4分08秒]] [[c:Category:Audio files of D 328 – Erlkönig, Op. 1 (Schubert)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューベルト「野ばら」】-->
| rowspan="2" |[[画像:Franz Schubert by Wilhelm August Rieder 1875 larger version (head cropped).png|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;" |[[w:フランツ・シューベルト|シューベルト]]
|<!--曲 名--> style="font-size:10pt;" |[[w:歌曲|歌曲]]<span style="font-size:15pt;">『'''[[w:野ばら|野ばら]]'''』</span>(D257)<br> (曲のみ)
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1815
|<!-- file -->[[File:Sah ein Knab ein Röslein stehn (Schubert).mid]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Sah ein Knab ein Röslein stehn (Schubert).mid|0分30秒]]
|-
|<!--曲 名--> style="font-size:10pt;" | 〃 (歌唱付き)
|<!-- file -->[[File:PDP-CH - Claire Dux - Heidenröslein, D 257, Op. 3, No. 3 - Schubert - Goethe - Brunswick-15061-11666.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - Claire Dux - Heidenröslein, D 257, Op. 3, No. 3 - Schubert - Goethe - Brunswick-15061-11666.flac|2分40秒]]
|- <!--【■ベートーヴェン】-->
! colspan="7" style="background-color:#d88888;" |[[w:ルートヴィヒ・ヴァン・ベートーヴェン#代表作|ベートーヴェンの楽曲]]([[w:en:Ludwig_van_Beethoven#Music|compositions by Ludwig van Beethoven]])ロマン派/古典派<ref>ベートーヴェンについては、古典派からロマン派への過渡期とみなす考えと、古典派の大成者と位置付けて彼より後を「ロマン派」に分類する考えに分かれています。</ref>
|- style="text-align:left;font-family:Times New Roman;" <!--【ベートーヴェン「交響曲第9番」】-->
!<!--【ROWSPAN】--> rowspan="26" style="background-color:#d88888;" |
| rowspan="4" |[[画像:Beethoven.jpg|border|center|50px]]
! rowspan="4" style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名--><span style="font-size:14pt;">『'''[[w:交響曲第9番 (ベートーヴェン)|交響曲第9番]]'''』</span>(op.125)<br>より 第1楽章
| rowspan="4"<!--発表年--> style="font-size:9pt;" |1824
|<!-- file -->[[File:01 Horenstein 9. Beethoven Pantheon XP 2250 - 1. Satz.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:01 Horenstein 9. Beethoven Pantheon XP 2250 - 1. Satz.flac|15分17秒]]
|- style="text-align:left;font-family:Times New Roman;"
|<!--曲 名--> 第2楽章
|<!-- file -->[[File:02 Horenstein 9. Beethoven Pantheon XP 2250 - 2. Satz.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:02 Horenstein 9. Beethoven Pantheon XP 2250 - 2. Satz.flac|11分25秒]]
|- style="text-align:left;font-family:Times New Roman;"
|<!--曲 名--> 第3楽章
|<!-- file -->[[File:03 Horenstein 9. Beethoven Pantheon XP 2250 - 3. Satz.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:03 Horenstein 9. Beethoven Pantheon XP 2250 - 3. Satz.flac|14分59秒]]
|- style="text-align:left;font-family:Times New Roman;"
|<!--曲 名--> '''第4楽章「歓喜の歌」'''
|<!-- file -->[[File:04 Horenstein 9. Beethoven Pantheon XP 2550 - 4. satz.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:04 Horenstein 9. Beethoven Pantheon XP 2550 - 4. satz.flac|23分28秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ベートーヴェン「トルコ行進曲」】-->
|[[画像:Beethoven.jpg|border|center|50px]]
! style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名--> style="font-size:9pt;"|<small>[[w:付随音楽|劇付随音楽]]</small>『[[w:アテネの廃墟|アテネの廃墟]]』(op.113)<br> より<span style="font-size:13pt;">'''「[[w:トルコ行進曲|トルコ行進曲]]」'''</span>
|<!--発表年--> style="font-size:9pt;" |1811-<br>1812
|<!-- file -->[[File:Ludwig van Beethoven - Turkish March.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Ludwig van Beethoven - Turkish March.ogg|1分43秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ベートーヴェン「エリーゼのために」】-->
|[[画像:Beethoven.jpg|border|center|50px]]
! style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名-->'''[[w:エリーゼのために|エリーゼのために]]'''
|<!--発表年--> style="font-size:9pt;" |1810
|<!-- file -->[[File:Fur Elise.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Fur Elise.ogg|2分57秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:12pt;" <!--【ベートーヴェン「皇帝」】-->
| rowspan="3" |[[画像:Beethoven.jpg|border|center|50px]]
! rowspan="3" style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名-->『'''[[w:ピアノ協奏曲第5番 (ベートーヴェン)|ピアノ協奏曲 第5番<br> 「皇帝」]]'''』(op.73)より<br> 第1楽章
|<!--発表年--> rowspan="3" style="font-size:9pt;" |1809
|<!-- file -->[[File:Beethoven Op. 73 - 1 Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven Op. 73 - 1 Allegro.ogg|19分03秒]]
|-
|<!--曲 名--> 第2楽章
|<!-- file -->[[File:Beethoven Op. 73 - 2 Adagio.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven Op. 73 - 2 Adagio.ogg|7分00秒]]
|-
|<!--曲 名--> 第3楽章
|<!-- file -->[[File:Beethoven Op. 73 - 3 Rondo.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven Op. 73 - 3 Rondo.ogg|9分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ベートーヴェン「交響曲第6番」】-->
|[[画像:Beethoven.jpg|border|center|50px]]
! style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名--> style="font-size:12pt;" |『'''[[w:交響曲第6番 (ベートーヴェン)|交響曲第6番「田園」]]'''』<br> (op.68)より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1808
|<!-- file -->[[File:Ludwig van Beethoven - symphony no. 6 in f major 'pastoral', op. 68 - i. allegro non troppo.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Ludwig van Beethoven - symphony no. 6 in f major 'pastoral', op. 68 - i. allegro non troppo.ogg|9分26秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ベートーヴェン「交響曲第5番」】-->
|[[画像:Beethoven.jpg|border|center|50px]]
! style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名--> style="font-size:12pt;" |『'''[[w:交響曲第5番 (ベートーヴェン)|交響曲第5番「運命」]]'''』<br> (op.67)より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1904-<br>1808頃
|<!-- file -->[[File:Ludwig van Beethoven - Symphonie 5 c-moll - 1. Allegro con brio.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Ludwig van Beethoven - Symphonie 5 c-moll - 1. Allegro con brio.ogg|7分16秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ベートーヴェン「ヴァイオリン協奏曲」】-->
|[[画像:Beethoven.jpg|border|center|50px]]
! style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名--> style="font-size:12pt;" |『'''[[w:ヴァイオリン協奏曲 (ベートーヴェン)|ヴァイオリン協奏曲]]'''』<br> (op.61)より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1906
|<!-- file -->[[File:Beethoven, Ludwig van — Violin Concerto in D major, Op. 61, 1st movement.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven, Ludwig van — Violin Concerto in D major, Op. 61, 1st movement.ogg|24分30秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:12pt;" <!--【ベートーヴェン「熱情」】-->
| rowspan="6" |[[画像:Beethoven.jpg|border|center|50px]]
! rowspan="6" style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名--> rowspan="2" |『'''[[w:ピアノソナタ第23番 (ベートーヴェン)|ピアノソナタ第23番<br> 「熱情」]]'''』(op.57) より<br> 第1楽章
|<!--発表年--> rowspan="6" style="font-size:9pt;" |1806頃
|<!-- file -->[[File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 1st movement- Allegro assai - Hmv-db2215-32-3686-2b6605.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 1st movement- Allegro assai - Hmv-db2215-32-3686-2b6605.oga|4分34秒]] [[:c:Category:Audio files of Piano Sonata No. 23 (Beethoven)|c]]
|-
|<!-- file -->[[File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 1st Movement (Conclusion)- Allegro assai - Piu allegro - Hmv-db2215-32-3687-2b6606.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 1st Movement (Conclusion)- Allegro assai - Piu allegro - Hmv-db2215-32-3687-2b6606.oga|4分26秒]]
|- <!--【ベートーヴェン「熱情」第2楽章】-->
|<!--曲 名--> rowspan="2" | 第2楽章
|<!-- file -->[[File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 2nd Movement (Part 1)- Andante con moto - Hmv-db2216-32-3688-2b6607.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 2nd Movement (Part 1)- Andante con moto - Hmv-db2216-32-3688-2b6607.oga|2分48秒]]
|-
|<!-- file -->[[File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 2nd Movement (Conclusion)- Andante con moto - Hmv-db2216-32-3689-2b6608.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 2nd Movement (Conclusion)- Andante con moto - Hmv-db2216-32-3689-2b6608.oga|3分16秒]]
|- <!--【ベートーヴェン「熱情」第3楽章】-->
|<!--曲 名--> rowspan="2" | 第3楽章
|<!-- file -->[[File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 3rd Movement (Part 1)- Allegro ma non troppo - Hmv-db2217-32-3690-2b6609.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 3rd Movement (Part 1)- Allegro ma non troppo - Hmv-db2217-32-3690-2b6609.oga|4分01秒]]
|-
|<!-- file -->[[File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 3rd Movement (Conclusion)- Allegro ma non troppo - Presto - Hmv-db2217-32-3691-2b6610.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Artur Schnabel Plays Beethoven's Piano Sonata No. 23 in F minor, Op. 57 - 3rd Movement (Conclusion)- Allegro ma non troppo - Presto - Hmv-db2217-32-3691-2b6610.oga|3分11秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ベートーヴェン「交響曲第3番」】-->
| rowspan="2" |[[画像:Beethoven.jpg|border|center|50px]]
! rowspan="2" style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名--> style="font-size:12pt;" |『'''[[w:交響曲第3番 (ベートーヴェン)|交響曲第3番「英雄」]]'''』<br> (op.55) より 第1楽章
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1804
|<!-- file -->[[File:Beethoven SymphonyNo.3Eroica LudwigVanBeethoven-SymphonyNo.3InEFlatMajorEroicaOp.55-01-AllegroConBrio.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven SymphonyNo.3Eroica LudwigVanBeethoven-SymphonyNo.3InEFlatMajorEroicaOp.55-01-AllegroConBrio.ogg|15分12秒]]
|-
|<!--曲 名--> 第2楽章
|<!-- file -->[[File:Beethoven SymphonyNo.3Eroica LudwigVanBeethoven-SymphonyNo.3InEFlatMajorEroicaOp.55-02-MarciaFunebreAdagioAssai.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven SymphonyNo.3Eroica LudwigVanBeethoven-SymphonyNo.3InEFlatMajorEroicaOp.55-02-MarciaFunebreAdagioAssai.ogg|15分29秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:12pt;" <!--【ベートーヴェン「月光」】-->
| rowspan="3" |[[画像:Beethoven.jpg|border|center|50px]]
! rowspan="3" style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名-->『'''[[w:ピアノソナタ第14番 (ベートーヴェン)|ピアノソナタ第14番<br> 「月光」]]'''』(op.27-2)より<br> 第1楽章
|<!--発表年--> rowspan="3" style="font-size:9pt;" |1801
|<!-- file -->[[File:Beethoven Moonlight 1st movement.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven Moonlight 1st movement.ogg|6分00秒]] [[:c:Category:Audio files of Piano Sonata No. 14 (Beethoven)|c]]
|-
|<!--曲 名--> 第2楽章
|<!-- file -->[[File:Beethoven Moonlight 2nd movement.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven Moonlight 2nd movement.ogg|2分05秒]]
|-
|<!--曲 名--> 第3楽章
|<!-- file -->[[File:Beethoven Moonlight 3rd movement.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven Moonlight 3rd movement.ogg|6分55秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:12pt;" <!--【ベートーヴェン「悲愴」】-->
| rowspan="3" |[[画像:Beethoven.jpg|border|center|50px]]
! rowspan="3" style="font-size:10pt;" |<!--作曲者-->[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]
|<!--曲 名-->『'''[[w:ピアノソナタ第8番 (ベートーヴェン)|ピアノソナタ第8番<br> 「悲愴」]]'''』(op.13) より<br> 第1楽章
|<!--発表年--> rowspan="3" style="font-size:9pt;" |1799頃
|<!-- file -->[[File:Beethoven, Sonata No. 8 in C Minor Pathetique, Op. 13 - I. Grave - Allegro di molto e con brio.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven, Sonata No. 8 in C Minor Pathetique, Op. 13 - I. Grave - Allegro di molto e con brio.ogg|7分00秒]] [[:c:Category:Audio files of Piano Sonata No. 8 (Beethoven)|c]]
|-
|<!--曲 名--> 第2楽章
|<!-- file -->[[File:Beethoven, Sonata No. 8 in C Minor Pathetique, Op. 13 - II. Adagio cantabile.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven, Sonata No. 8 in C Minor Pathetique, Op. 13 - II. Adagio cantabile.ogg|4分58秒]]
|-
|<!--曲 名--> 第3楽章
|<!-- file -->[[File:Beethoven, Sonata No. 8 in C Minor Pathetique, Op. 13 - III. Rondo - Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Beethoven, Sonata No. 8 in C Minor Pathetique, Op. 13 - III. Rondo - Allegro.ogg|4分35秒]]
|- <!--【■古典派音楽■】-->
! colspan="7" style="background-color:#ffa500;" |[[w:古典派音楽|古典派音楽]]([[w:en:Classical period (music)|Classical period (music)]]: 1750~1820頃)<ref>古典派音楽は、狭義には'''ハイドン・モーツァルト・ベートーヴェン'''の三大巨匠を指しますが、広義には[[w:マンハイム楽派|マンハイム楽派]]から19世紀のシューベルト・ウェーバーやロッシーニなどまで含む見方もあります([[w:en:Transition from Classical to Romantic music|Transition from Classical to Romantic music]])</ref>
|-
!<!--【ROWSPAN】--> rowspan="6" style="background-color:#ffa500;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ゴセック「ガヴォット」】-->
|[[File:Gossec-portrait.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:フランソワ=ジョセフ・ゴセック|ゴセック]]
|<!--曲 名--> style="font-size:11pt;" |歌劇『ロジーヌ』より<ref>"Rosine" または "L'épouse abandonnée"</ref><br> '''ガヴォット'''
|<!--発表年--> style="font-size:9pt;" |1786
|<!-- file -->[[#ゴセック「ガヴォット」|外部音源を聴く]]<ref>ゴセック作曲「ガヴォット」がウィキメディア・コモンズに見当たらないため、代わりに外部音源を参照します。</ref>
|<!--リンク--> style="font-size:8pt;"|
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ホフシュテッター「弦楽四重奏曲」"ハイドンのセレナーデ"】-->
|<!--画像-->
!<!--作曲者--> style="font-size:8pt;" |[[w:ロマン・ホフシュテッター|ホフシュテッター]]<br><ref name="Hoffstetter-Haydn">長らく「'''[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]のセレナーデ'''」として親しまれてきた第5曲を含むハイドン名義の六つの『弦楽四重奏曲』(作品番号3) は、近年の研究により、修道士にしてハイドンの信奉者・アマチュア作曲家であった'''[[w:ロマン・ホフシュテッター|ロマン・ホフシュテッター]]'''によって作曲されたが、音楽出版者バイユー [[w:en:Antoine Bailleux|Antoine Bailleux]] によりハイドン名義で楽譜が公刊されたことが判明しました。[[w:en:String Quartets, Op. 3 (attributed to Haydn)]]、[[w:en:Roman Hoffstetter]] を参照。</ref>
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |『弦楽四重奏曲』第5番 より<br><span style="font-size:9pt;">第2楽章 アンダンテ・カンタービレ</span><br>'''"ハイドンのセレナーデ"''' <ref name="Hoffstetter-Haydn"/>
|<!--発表年--> style="font-size:9pt;" |1777
|<!-- file -->[[File:2-06Ii.AndanteCantabile.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:2-06Ii.AndanteCantabile.ogg|4分17秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ボッケリーニ「メヌエット」】-->
| rowspan="2" rowspan="2" |[[File:Goya-La famiglia dell Infante Don Luis-1783-dettaglio.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;" |[[w:ルイジ・ボッケリーニ|ボッケリーニ]]
|<!--曲 名--> rowspan="2" style="font-size:11pt; background-color:#ffffcc;" |『[[w:弦楽五重奏曲G275 (ボッケリーニ)|弦楽五重奏曲G275]]』より<br> 第3楽章 メヌエット<br>'''"ボッケリーニのメヌエット"'''
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1771
|<!-- file -->[[File:Boccerini Op11 n°5 G275 Satz3 Minuett.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Boccerini Op11 n°5 G275 Satz3 Minuett.ogg|3分37秒]]
|-
|<!-- file -->[[#ボッケリーニ「メヌエット」|外部音源を聴く]]<ref>ボッケリーニ作曲「メヌエット」が以前はウィキメディア・コモンズに見当たらなかったため、代わりに外部音源を参照しました。</ref>
|<!--リンク--> style="font-size:8pt;"|
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【アンゲラー「おもちゃの交響曲」】-->
|<!--画像-->
!<!--作曲者--> style="font-size:9pt;" |[[w:エトムント・アンゲラー|アンゲラー]]<br><ref name="Angerer">長らく'''[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]'''作曲として親しまれてきた『[[w:おもちゃの交響曲|'''おもちゃの交響曲''']]』ですが、20世紀になってモーツァルトの父[[w:レオポルト・モーツァルト|レオポルト・モーツァルト]]の作曲らしいと言われだしましたが、1990年代になってオーストリアの神父'''[[w:エトムント・アンゲラー|エトムント・アンゲラー]]'''([[w:de:Edmund Angerer|Edmund Angerer]])の作曲だという史料が発見され、論争に決着がつきました。[[w:en:Toy Symphony]]</ref>
|<!--曲 名--> style="font-size:11pt;" |『[[w:おもちゃの交響曲|'''おもちゃの交響曲''']]』<ref name="Angerer"/><br> より 第2楽章 メヌエット
|<!--発表年--> style="font-size:9pt;" |1770頃
|<!-- file -->[[#アンゲラー「おもちゃの交響曲」|外部音源を聴く]]<ref>アンゲラー作曲「おもちゃの交響曲」がウィキメディア・コモンズに見当たらないため、代わりに外部音源を参照します。</ref>
|<!--リンク--> style="font-size:8pt;"|
|- <!--【■モーツァルトの楽曲■】-->
! colspan="7" style="background-color:GOLD;" |[[w:ヴォルフガング・アマデウス・モーツァルト#作品|モーツァルトの楽曲]]([[w:en:Wolfgang_Amadeus_Mozart#Works,_musical_style,_and_innovations|Compositions by Wolfgang Amadeus Mozart]])古典派
|-
!<!--【ROWSPAN】--> rowspan="60" style="background-color:GOLD;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「レクイエム」】-->
| rowspan="4" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="4" style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:14pt; background-color:#ffffcc;" |『'''[[W:レクイエム (モーツァルト)|レクイエム]]'''』<span style="font-size:9pt;">[[W:ケッヘル番号|K.626]] より</span><br><span style="font-size:11pt;"> '''第1曲 入祭唱'''</span>
|<!--発表年--> rowspan="4" style="font-size:9pt;" |1791
|<!-- file -->[[File:W. A. Mozart - Requiem, K. 626 (Bruno Walter, Wiener Philharmoniker, Wiener Staatsopernchor, 1956) - 01. Requiem aeternam.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:W. A. Mozart - Requiem, K. 626 (Bruno Walter, Wiener Philharmoniker, Wiener Staatsopernchor, 1956) - 01. Requiem aeternam.ogg|5分38秒]]
|-
|<!--曲 名--> style="font-size:11pt; background-color:#ffffdd;" | 第2曲 キリエ
|<!-- file -->[[File:W. A. Mozart - Requiem, K. 626 (Bruno Walter, Wiener Philharmoniker, Wiener Staatsopernchor, 1956) - 02. Kyrie eleison.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:W. A. Mozart - Requiem, K. 626 (Bruno Walter, Wiener Philharmoniker, Wiener Staatsopernchor, 1956) - 02. Kyrie eleison.ogg|3分5秒]]
|-
|<!--曲 名--> style="font-size:11pt; background-color:#ffffdd;" | '''第3曲 怒りの日'''
|<!-- file -->[[File:W. A. Mozart - Requiem, K. 626 (Bruno Walter, Wiener Philharmoniker, Wiener Staatsopernchor, 1956) - 03. Dies irae.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:W. A. Mozart - Requiem, K. 626 (Bruno Walter, Wiener Philharmoniker, Wiener Staatsopernchor, 1956) - 03. Dies irae.ogg|1分53秒]]
|-
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" | '''第8曲 [[w:ラクリモーサ (レクイエム)|ラクリモサ<span style="font-size:9pt;"> (涙の日)</span>]]
|<!-- file -->[[File:W. A. Mozart - Requiem, K. 626 (Bruno Walter, Wiener Philharmoniker, Wiener Staatsopernchor, 1956) - 08. Lacrimosa.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:W. A. Mozart - Requiem, K. 626 (Bruno Walter, Wiener Philharmoniker, Wiener Staatsopernchor, 1956) - 08. Lacrimosa.ogg|3分25秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「クラリネット協奏曲」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |『'''[[w:クラリネット協奏曲 (モーツァルト)|クラリネット協奏曲]]'''』<span style="font-size:9pt;">K.622</span><br> より '''第2楽章'''
|<!--発表年--> style="font-size:9pt;" |1791
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Klarinettenkonzert A-Dur - 2. Adagio.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Klarinettenkonzert A-Dur - 2. Adagio.ogg|6分59秒]] [[:c:Category:Audio files of KV 622 by Wolfgang Amadeus Mozart|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「魔笛」】-->
| rowspan="4" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="4" style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:14pt; background-color:#ffffcc;" |歌劇『'''[[W:魔笛|魔 笛]]'''』<span style="font-size:9pt;">K620 より</span><br><span style="font-size:11pt;"> '''序 曲'''
|<!--発表年--> rowspan="4" style="font-size:9pt;" |1791
|<!-- file -->[[File:Magic Flute Overture.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Magic Flute Overture.ogg|6分36秒]] [[:c:Category:Audio files of Die Zauberflöte|c]]
|-
|<!--曲 名--> [[w:アリア|アリア]]「[[w:私は鳥刺し|私は鳥刺し]]」<span style="font-size:11pt;">
|<!-- file -->[[File:W. A. Mozart - Die Zauberflöte - 03. Der Vogelfänger bin ich ja (Ferenc Fricsay, 1953).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:W. A. Mozart - Die Zauberflöte - 03. Der Vogelfänger bin ich ja (Ferenc Fricsay, 1953).ogg|5分55秒]] [[:c:Category:Der Vogelfänger bin ich ja|c]]
|-
|<!--曲 名--> style="background-color:#ffffcc;" | '''[[w:夜の女王のアリア|夜の女王のアリア]]'''(2)<br><span style="font-size:7pt;">「[[w:復讐の炎は地獄のように我が心に燃え|復讐の炎は地獄のように我が心に燃え]]」</span>
|<!-- file -->[[File:Der Hoelle Rache.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Der Hoelle Rache.ogg|3分11秒]] [[:c:Category:Audio files of Der Hölle Rache kocht in meinem Herzen|c]]
|-
|<!--曲 名--> 「パパパの二重唱」ほか
|<!-- file -->[[File:W. A. Mozart - Die Zauberflöte - 28. Papagena! Papagena! Papagena! (Ferenc Fricsay, 1953).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:W. A. Mozart - Die Zauberflöte - 28. Papagena! Papagena! Papagena! (Ferenc Fricsay, 1953).ogg|7分13秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「クラリネット五重奏曲」】-->
| rowspan="2" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |『'''[[W:クラリネット五重奏曲 (モーツァルト)|クラリネット五重奏曲]]'''』<br> <span style="font-size:8pt;">K.581 </span> より '''第1楽章'''
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1789
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Clarinet Quintet - 1. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Clarinet Quintet - 1. Allegro.ogg|7分3秒]] [[:c:Category:Quintet for Clarinet and Strings, K. 581 (Mozart)|c]]
|-
|<!--曲 名--> style="font-size:11pt;" | 第2楽章
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Clarinet Quintet - 2. Larghetto.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Clarinet Quintet - 2. Larghetto.ogg|8分9秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「交響曲第41番」】-->
| rowspan="4" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
! rowspan="4" <!--作曲者--> style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:13pt; background-color:#ffffcc;" |『'''[[W:交響曲第41番 (モーツァルト)|交響曲第41番<br> <span style="font-size:12pt;">(ジュピター)</span>]]'''』<span style="font-size:9pt;">K.551 より</span><br><span style="font-size:12pt;"> '''第1楽章'''
| rowspan="4" <!--発表年--> style="font-size:9pt;" |1788
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Symphony No. 41 1st Movement (Jupiter), K.551.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:Symphony No. 41 (Mozart)|c:]]<br>[[:File:Wolfgang Amadeus Mozart - Symphony No. 41 1st Movement (Jupiter), K.551.ogg|8分5秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:12pt; background-color:#ffffdd;" | 第2楽章
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Symphony No. 41 2nd Movement (Jupiter), K.551.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Symphony No. 41 2nd Movement (Jupiter), K.551.ogg|7分59秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:12pt; background-color:#ffffdd;" | 第3楽章
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Symphony No. 41 3rd Movement (Jupiter), K.551.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Symphony No. 41 3rd Movement (Jupiter), K.551.ogg|4分33秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:12pt; background-color:#ffffcc;" | '''第4楽章'''
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Symphony No. 41 4th Movement (Jupiter), K.551.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Symphony No. 41 4th Movement (Jupiter), K.551.ogg|6分7秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「交響曲第40番」】-->
| rowspan="4" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
! rowspan="4" <!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:13pt; background-color:#ffffcc;" |『'''[[w:交響曲第40番 (モーツァルト)|交響曲第40番]]'''』<span style="font-size:9pt;">K.550 より</span><br><span style="font-size:12pt;"> '''第1楽章'''
| rowspan="4" <!--発表年--> style="font-size:9pt;" |1788
|<!-- file -->[[File:Mozart Symphony 40 G minor - 1 Molto allegro.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:Audio files of KV 550 by Wolfgang Amadeus Mozart|c:]]<br>[[:File:Mozart Symphony 40 G minor - 1 Molto allegro.oga|7分57秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:12pt; background-color:#ffffdd;" | 第2楽章
|<!-- file -->[[File:Mozart Symphony 40 G minor - 2 Andante.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart Symphony 40 G minor - 2 Andante.oga|11分27秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:12pt; background-color:#ffffdd;" | 第3楽章
|<!-- file -->[[File:Mozart Symphony 40 G minor - 3 Menuetto, Allegretto-Trio.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart Symphony 40 G minor - 3 Menuetto, Allegretto-Trio.oga|4分13秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:12pt; background-color:#ffffdd;" | 第4楽章
|<!-- file -->[[File:Mozart Symphony 40 G minor - 4 Allegro assai.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart Symphony 40 G minor - 4 Allegro assai.oga|6分54秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「交響曲第39番」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:13pt;" |『[[w:交響曲第39番 (モーツァルト)|交響曲第39番]]』<span style="font-size:9pt;">K.543
|<!--発表年--> style="font-size:9pt;" |1788
|<!-- file -->[[#モーツァルト「交響曲第39番」|外部音源を聴く]]<ref>モーツァルト作曲「交響曲第39番」がウィキメディア・コモンズに見当たらないため、代わりに外部音源を参照します。</ref>
|<!--リンク--> style="font-size:8pt;"|
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ピアノソナタ第16番」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |『'''[[w:ピアノソナタK.545|ピアノソナタ第16番]]'''』<br> (K.545)<span style="font-size:12pt;"> より '''第1楽章'''
|<!--発表年--> style="font-size:9pt;" |1788
|<!-- file -->[[File:Wolfgang Amadeus Mozart - sonata no. 16 in c major, k.545 'sonata facile' - i. allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - sonata no. 16 in c major, k.545 'sonata facile' - i. allegro.ogg|2分14秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ピアノ協奏曲第26番(戴冠式)」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt;" |『'''[[w:ピアノ協奏曲第26番 (モーツァルト)|ピアノ協奏曲第26番]]'''』<br> '''「戴冠式」'''<span style="font-size:9pt;">K.537</span><br><span style="font-size:11pt;"> より '''第1楽章'''
|<!--発表年--> style="font-size:9pt;" |1788
|<!-- file -->[[File:Mozart; Piano Concerto No. 26 in D Major, KV 537 "Coronation", 1. Allegro.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart; Piano Concerto No. 26 in D Major, KV 537 "Coronation", 1. Allegro.flac|13分28秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ドン・ジョヴァンニ」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |歌劇『'''[[w:ドン・ジョヴァンニ|ドン・ジョヴァンニ]]'''』<br> <span style="font-size:8pt;">K.527</span> より '''序曲'''
|<!--発表年--> style="font-size:9pt;" |1787
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Don Giovanni - Overtüre.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Don Giovanni - Overtüre.ogg|6分49秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「アイネ・クライネ・ナハトムジーク」】-->
| rowspan="4" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="4" style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |<span style="font-size:10pt;">[[w:セレナーデ|セレナーデ]]第13番</span><br><span style="font-size:12pt;">『'''[[w:アイネ・クライネ・ナハトムジーク|アイネ・クライネ・<br> ナハトムジーク]]'''』</span><span style="font-size:8pt;">K.525 より</span><br><span style="font-size:12pt;"> '''第1楽章'''</span>
| rowspan="4" <!--発表年--> style="font-size:9pt;" |1787
|<!-- file -->[[File:Mozart - Eine kleine Nachtmusik - 1. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:Audio files of KV 525 by Wolfgang Amadeus Mozart|c:]]<br>[[:File:Mozart - Eine kleine Nachtmusik - 1. Allegro.ogg|5分55秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#ffffdd;" | 第2楽章
|<!-- file -->[[File:Mozart K525 Serenade in G Major 2 - Romance.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart K525 Serenade in G Major 2 - Romance.ogg|4分27秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#ffffdd;" | 第3楽章
|<!-- file -->[[File:Mozart K525 Serenade in G Major 3 - Minuet.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart K525 Serenade in G Major 3 - Minuet.ogg|2分03秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" | '''第4楽章'''
|<!-- file -->[[File:Mozart Eine kleine Nachtmusik KV525 Satz 4 Rondo.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart Eine kleine Nachtmusik KV525 Satz 4 Rondo.ogg|4分00秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「交響曲第38番『プラハ』」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt;" |[[w:交響曲第38番 (モーツァルト)|交響曲第38番'''「プラハ」''']]<span style="font-size:9pt;">K.504</span><br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1787
|<!-- file -->[[File:Mozart Symphony 38 D major Prague KV 504 - 1 Adagio—Allegro.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart Symphony 38 D major Prague KV 504 - 1 Adagio—Allegro.oga|13分36秒]] [[:c:Category:Symphony No. 38 (Mozart)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ピアノ協奏曲第23番」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |『'''[[w:ピアノ協奏曲第23番 (モーツァルト)|ピアノ協奏曲第23番]]'''』<span style="font-size:9pt;">K.488</span><br><span style="font-size:11pt;"> より '''第1楽章'''
|<!--発表年--> style="font-size:9pt;" |1786
|<!-- file -->[[File:Mozart Piano Concerto 23, KV 488 part 2 - Andante (embellished). Otto Ede Pool.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart Piano Concerto 23, KV 488 part 2 - Andante (embellished). Otto Ede Pool.ogg|7分31秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ピアノ協奏曲第21番」】-->
| rowspan="2" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |『'''[[w:ピアノ協奏曲第21番 (モーツァルト)|ピアノ協奏曲第21番]]'''』</span><span style="font-size:8pt;">K.467</span><br><span style="font-size:12pt;"> より '''第2楽章'''</span>
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1785
|<!-- file -->[[File:File-PDP-CH - Artur Schnabel with the London Symphony Orchestra - Malcolm Sargent - Piano Concerto No. 21 - Part 5 - 2nd Movement - Mozart - Hmv-db3101-2ea4608.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:Piano Concerto No. 21 (Mozart)|c:]]<br>
[[:File:File-PDP-CH - Artur Schnabel with the London Symphony Orchestra - Malcolm Sargent - Piano Concerto No. 21 - Part 5 - 2nd Movement - Mozart - Hmv-db3101-2ea4608.flac|4分27秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" | 第2楽章(つづき)
|<!-- file -->[[File:File-PDP-CH - Artur Schnabel with the London Symphony Orchestra - Malcolm Sargent - Piano Concerto No. 21 - Part 6 - 2nd Movement - Mozart - Hmv-db3101-2ea4609.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:File-PDP-CH - Artur Schnabel with the London Symphony Orchestra - Malcolm Sargent - Piano Concerto No. 21 - Part 6 - 2nd Movement - Mozart - Hmv-db3101-2ea4609.flac|3分49秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ピアノ協奏曲第20番」】-->
| rowspan="2" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |『'''[[w:ピアノ協奏曲第20番 (モーツァルト)|ピアノ協奏曲第20番]]'''』</span><span style="font-size:8pt;">K.466</span><br><span style="font-size:12pt;"> より '''第1楽章'''</span>
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1785
|<!-- file -->[[File:Mozart; Concerto No. 20 in D Minor- I. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:Piano Concerto No. 20 (Mozart)|c:]]<br>
[[:File:Mozart; Concerto No. 20 in D Minor- I. Allegro.ogg|13分10秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" | '''第2楽章'''
|<!-- file -->[[File:Mozart; Concerto No. 20 in D Minor- II. Romanza.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart; Concerto No. 20 in D Minor- II. Romanza.ogg|8分00秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「交響曲第36番『リンツ』」】-->
| rowspan="4" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
! rowspan="4" <!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt;" |[[w:交響曲第36番 (モーツァルト)|交響曲第36番'''「リンツ」''']]<span style="font-size:9pt;">K.425</span><br> より 第1楽章
| rowspan="4" <!--発表年--> style="font-size:9pt;" |1783
|<!-- file -->[[File:Mozart Symphony 36 KV 425 Linz 1.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:Symphony No. 36 (Mozart)|c:]] [[:File:Mozart Symphony 36 KV 425 Linz 1.oga|10分32秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt;" | 第2楽章
|<!-- file -->[[File:Mozart Symphony 36 KV 425 Linz 2.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart Symphony 36 KV 425 Linz 2.oga|10分34秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt;" | 第3楽章
|<!-- file -->[[File:Mozart Symphony 36 KV 425 Linz 3.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart Symphony 36 KV 425 Linz 3.oga|3分40秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt;" | 第4楽章
|<!-- file -->[[File:Mozart Symphony 36 KV 425 Linz 4.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart Symphony 36 KV 425 Linz 4.oga|7分28秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ピアノソナタ第11番」】-->
| rowspan="4" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
! rowspan="4" <!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
| rowspan="1" <!--曲 名--> style="font-size:11pt; background-color:#ffffee;" |『'''[[w:ピアノソナタ第11番 (モーツァルト)|ピアノソナタ第11番]]'''』<span style="font-size:8pt;">K.331</span><br> <span style="font-size:11pt;"> より 第1楽章
| rowspan="4" <!--発表年--> style="font-size:9pt;" |1783
|<!-- file -->[[File:Mozart - Piano Sonata No. 11 in A major - I. Andante grazioso.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart - Piano Sonata No. 11 in A major - I. Andante grazioso.ogg|13分56秒]] [[:c:Category:Audio files of Piano Sonata No. 11, KV 331 by Wolfgang Amadeus Mozart|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ピアノソナタ第11番◆トルコ行進曲」】-->
| rowspan="3" <!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" | 〃 第3楽章<br> <span style="font-size:12pt;">「'''トルコ行進曲'''」</span><br> <small>(3ファイル聴き比べ)</small>
|<!-- file -->[[File:Mozart - Piano Sonata No. 11 in A major - III. Allegro (Turkish March).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart - Piano Sonata No. 11 in A major - III. Allegro (Turkish March).ogg|3分14秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!-- file -->[[File:Mozart-Marsz turecki-(Romuald Greiss).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart-Marsz turecki-(Romuald Greiss).ogg|3分01秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!-- file -->[[File:Sure, Ma's Version of 'Turkish March' in piano classroom for piano education.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Sure, Ma's Version of 'Turkish March' in piano classroom for piano education.ogg|2分31秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「交響曲第35番『ハフナー』」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt;" |[[w:交響曲第35番 (モーツァルト)|交響曲第35番'''「ハフナー」''']]<br> <span style="font-size:9pt;">K.385</span> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1782
|<!-- file -->[[File:Symphony no. 35 in D 'Haffner' K. 385 I. Allegro con spirito (Mozart) European Archive.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Symphony no. 35 in D 'Haffner' K. 385 I. Allegro con spirito (Mozart) European Archive.ogg|5分05秒]] [[:c:Category:Symphony No. 35 (Mozart)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ヴァイオリンとヴィオラのための協奏交響曲」】-->
| rowspan="3" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="3" style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt;" |『[[w:ヴァイオリンとヴィオラのための協奏交響曲 (モーツァルト)|ヴァイオリンとヴィオラの<br> ための協奏交響曲]]』</span><span style="font-size:8pt;">K.364</span><br><span style="font-size:12pt;"> より 第1楽章</span>
|<!--発表年--> rowspan="3" style="font-size:9pt;" |1779
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Sinfonia Concertante für Violine, Viola und Orchester - 1. Allegro mæstoso.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Sinfonia Concertante für Violine, Viola und Orchester - 1. Allegro mæstoso.ogg|13分23秒]]
|-
|<!--曲 名--> style="font-size:11pt;" | 第2楽章
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Sinfonia Concertante für Violine, Viola und Orchester - 2. Andante.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Sinfonia Concertante für Violine, Viola und Orchester - 2. Andante.ogg|10分05秒]]
|-
|<!--曲 名--> style="font-size:11pt;" | 第3楽章
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Sinfonia Concertante für Violine, Viola und Orchester - 3. Presto.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Sinfonia Concertante für Violine, Viola und Orchester - 3. Presto.ogg|6分29秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「フィガロの結婚」】-->
| rowspan="2" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:13pt; background-color:#ffffcc;" |歌劇『'''[[w:フィガロの結婚|フィガロの結婚]]'''』<br> <span style="font-size:8pt;">K.492</span> より '''序曲'''
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1778
|<!-- file -->[[File:Mozart, The Marriage of Figaro (overture).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart, The Marriage of Figaro (overture).ogg|4分00秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;"
|<!--曲 名--> style="font-size:9pt; background-color:#ffffcc;" | 〃 [[w:アリア|アリア]]<br> 「'''[[w:もう飛ぶまいぞこの蝶々|もう飛ぶまいぞこの蝶々]]'''」
|<!-- file -->[[File:Mozart - Le Nozze di Figaro (Fricsay) - Act 1 - 20. Non più andrai.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart - Le Nozze di Figaro (Fricsay) - Act 1 - 20. Non più andrai.ogg|3分45秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「フルートとハープのための協奏曲」】-->
| rowspan="2" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:13pt; background-color:#ffffcc;" |『'''[[w:フルートとハープのための協奏曲 (モーツァルト)|フルートとハープの<br> ための協奏曲]]'''』</span><span style="font-size:8pt;">K.299</span><br><span style="font-size:13pt;"> より '''第1楽章'''</span>
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1778
|<!-- file -->[[File:Mozart - Concerto for Flute and Harp - 1. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart - Concerto for Flute and Harp - 1. Allegro.ogg|12分08秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:13pt; background-color:#ffffcc;" | 〃 '''第2楽章'''
|<!-- file -->[[File:Mozart - Concerto for Flute and Harp - 2. Andantino.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart - Concerto for Flute and Harp - 2. Andantino.ogg|9分39秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「オーボエ、クラリネット、ホルン、ファゴットと管弦楽のための協奏交響曲」】-->
| rowspan="2" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;"|[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt;" |『[[w:オーボエ、クラリネット、ホルン、ファゴットと管弦楽のための協奏交響曲|オーボエ、クラリネット、<br> ホルン、ファゴットと管弦楽<br> のための協奏交響曲]]』</span><span style="font-size:8pt;">K.297b</span><br><span style="font-size:11pt;"> より 第1楽章</span>
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1778
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Sinfonia Concertante for Oboe, Clarinet, Horn, Bassoon and Orchestra - 1. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Sinfonia Concertante for Oboe, Clarinet, Horn, Bassoon and Orchestra - 1. Allegro.ogg|14分08秒]]
|-
|<!--曲 名--> style="font-size:11pt;" | 第2楽章
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Sinfonia Concertante for Oboe, Clarinet, Horn, Bassoon and Orchestra - 2. Adagio.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Sinfonia Concertante for Oboe, Clarinet, Horn, Bassoon and Orchestra - 2. Adagio.ogg|9分47秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「きらきら星変奏曲」】-->
| rowspan="2" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
! rowspan="2" <!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffdd;" |『'''[[w:きらきら星変奏曲|きらきら星変奏曲]]'''』<span style="font-size:9pt;">K.265</span>
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1778
|<!-- file -->[[File:Mozart - 12 Variations K. 265 - Stefano Ligoratti.mp3]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart - 12 Variations K. 265 - Stefano Ligoratti.mp3|12分28秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:9pt; background-color:#ffffdd;" | 〃 (同曲の主題より)
|<!-- file -->[[File:Twinkle Twinkle Little Star.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Twinkle Twinkle Little Star.ogg|0分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「フルート四重奏曲第1番」】-->
| rowspan="3" |[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
! rowspan="3" <!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ffffcc;" |『'''[[w:フルート四重奏曲 (モーツァルト)|フルート四重奏曲]]第1番'''』<br> <span style="font-size:9pt;">K.285</span><span style="font-size:11pt;"> より 第1楽章
| rowspan="3" <!--発表年--> style="font-size:9pt;" |1777<br>-78頃
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Flute Quartet No. 1 in D Major - 1. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Flute Quartet No. 1 in D Major - 1. Allegro.ogg|7分10秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#ffffdd;" | 〃 第2楽章
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Flute Quartet No. 1 in D Major - 2. Adagio.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Flute Quartet No. 1 in D Major - 2. Adagio.ogg|2分30秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#ffffdd;" | 〃 第3楽章
|<!-- file -->[[File:Wolfgang Amadeus Mozart - Flute Quartet No. 1 in D Major - 3. Rondeau - Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wolfgang Amadeus Mozart - Flute Quartet No. 1 in D Major - 3. Rondeau - Allegro.ogg|4分15秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「オーボエ協奏曲」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt;" |『[[w:オーボエ協奏曲 (モーツァルト)|オーボエ協奏曲]]』<br> <span style="font-size:9pt;">K.314</span><span style="font-size:11pt;"> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1777
|<!-- file -->[[File:Oboe Concerto in C K.314 271k I. Allegro (Mozart) European Archive.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Oboe Concerto in C K.314 271k I. Allegro (Mozart) European Archive.ogg|7分42秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ファゴット協奏曲」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt;" |『[[w:ファゴット協奏曲 (モーツァルト)|ファゴット協奏曲]]』<br> <span style="font-size:9pt;">K. 191(186e)</span> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1774
|<!-- file -->[[File:Mozart - Bassoon Concerto in Bb major - Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Mozart - Bassoon Concerto in Bb major - Allegro.ogg|7分28秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【モーツァルト「ディヴェルティメント K.138」】-->
|[[File:Wolfgang-amadeus-mozart 1.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ヴォルフガング・アマデウス・モーツァルト|モーツァルト]]
|<!--曲 名--> style="font-size:11pt;" |『'''[[w:ディヴェルティメント K.138|ディヴェルティメント]]'''』<br> <span style="font-size:9pt;">K. 138</span> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1772
|<!-- file -->[[File:Divertimento in F major, K. 138 (125c) - 1st movement.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Divertimento in F major, K. 138 (125c) - 1st movement.oga|4分12秒]]
|- <!--【■ハイドンの楽曲】-->
! colspan="7" style="background-color:LIGHTGRAY;" |[[w:フランツ・ヨーゼフ・ハイドン#作品|ハイドンの楽曲]]([[w:en:Joseph_Haydn#Works|Compositions by Joseph Haydn]])古典派
|-
!<!--【ROWSPAN】--> rowspan="9" style="background-color:LIGHTGRAY;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ハイドン「トランペット協奏曲」】-->
|[[File:Joseph Haydn, målning av Thomas Hardy från 1792.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]
|<!--曲 名--> style="font-size:11pt;" |『'''[[w:トランペット協奏曲 (ハイドン)|トランペット協奏曲]]'''』<br> より 第3楽章
|<!--発表年--> style="font-size:9pt;" |1797
|<!-- file -->[[File:Real Filharmonía de Galicia - Haydn's Trumpet Concerto in E-flat major, Hob.VIIe-1 - III. Finale allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Real Filharmonía de Galicia - Haydn's Trumpet Concerto in E-flat major, Hob.VIIe-1 - III. Finale allegro.ogg|4分25秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ハイドン「交響曲第101番 (時計)」】-->
|[[File:Joseph Haydn, målning av Thomas Hardy från 1792.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]
|<!--曲 名--> style="font-size:11pt;" |『'''[[w:交響曲第101番 (ハイドン)|交響曲 第101番「時計」]]'''』<br> より 第2楽章
|<!--発表年--> style="font-size:9pt;" |1794
|<!-- file -->[[File:The Geneva Camerata - Haydn's Symphony No.101 in D major (The Clock), Hob.I-101 - II. Andante.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:The Geneva Camerata - Haydn's Symphony No.101 in D major (The Clock), Hob.I-101 - II. Andante.ogg|7分23秒]] [[:c:Category:Symphony No. 101 (Haydn)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ハイドン「交響曲第100番(軍隊)」】-->
|[[File:Joseph Haydn, målning av Thomas Hardy från 1792.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]
|<!--曲 名--> style="font-size:11pt;" |『'''[[w:交響曲第100番 (ハイドン)|交響曲 第100番「軍隊」]]'''』<br> より 第2楽章
|<!--発表年--> style="font-size:9pt;" |1794
|<!-- file -->[[File:Haydn; Symphony No. 100 In G Major "Military"- 2. Allegretto.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Haydn; Symphony No. 100 In G Major "Military"- 2. Allegretto.ogg|5分48秒]] [[:c:Category:Symphony No. 100 (Haydn)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ハイドン「交響曲第94番 (驚愕)」】-->
|[[File:Joseph Haydn, målning av Thomas Hardy från 1792.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]
|<!--曲 名--> style="font-size:11pt;" |『'''[[w:交響曲第94番 (ハイドン)|交響曲 第94番「驚愕」]]'''』<br> より '''第2楽章'''<br> <small>(※「驚愕の一撃」で有名)</small>
|<!--発表年--> style="font-size:9pt;" |1791
|<!-- file -->[[File:Haydn; Symphony No. 94 "Surprise", 2. Andante.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Haydn; Symphony No. 94 "Surprise", 2. Andante.ogg|7分18秒]] [[:c:Category:Symphony No. 94 (Haydn)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ハイドン「弦楽四重奏曲Op.64-5(ひばり)」】-->
|[[File:Joseph Haydn, målning av Thomas Hardy från 1792.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]
|<!--曲 名--> style="font-size:10pt;" |『'''[[w:弦楽四重奏曲第67番 (ハイドン)|弦楽四重奏曲 第67番(第53番)<br><span style="font-size:12pt;">「ひばり」]]</span>'''』Op.64-5<ref name="ハイドン弦楽四重奏曲ひばり">'''[[w:ハイドンの弦楽四重奏曲一覧|ハイドンの弦楽四重奏曲]]'''は数が多く、数え方も幾通りもあるため非常に分かりにくいですが、このニ長調の通称'''「ひばり」(The Lark)'''は、'''「四重奏曲第67番」'''または偽作などを除いて'''「四重奏曲第53番」(String Quartet No. 53)'''と呼ばれ、「'''[[w:作品番号|作品番号]]64-5'''([[w:en:List_of_string_quartets_by_Joseph_Haydn#Opus_64,_the_"Tost"_quartets,_set_III_(1790)|Op. 64]], No. 5)」、また[[w:ホーボーケン番号|ホーボーケン番号]]という数え方だと「'''Hob. III:63'''」などとなります。[[w:en:String Quartets, Op. 64 (Haydn)]]</ref><br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1790
|<!-- file -->[[File:Haydn StringQuartetInDMajorOp.64 JosephHaydn-StringQuartetInDOp.645H363Lark-01-AllegroModerato.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Haydn StringQuartetInDMajorOp.64 JosephHaydn-StringQuartetInDOp.645H363Lark-01-AllegroModerato.ogg|6分12秒]] [[:c:Category:Audio files of Quartet No. 53 in D major (The Lark), Op. 64, No. 5, Hoboken No. III:63|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ハイドン「弦楽四重奏曲Op.54-2(トスト)」】-->
|[[File:Joseph Haydn, målning av Thomas Hardy från 1792.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]
|<!--曲 名--> style="font-size:10pt;" |『弦楽四重奏曲 第58番(第42番)』<br>「第一トスト弦楽四重奏曲」Op64-5<ref name="ハイドン弦楽四重奏曲トスト">'''[[w:ハイドンの弦楽四重奏曲一覧|ハイドンの弦楽四重奏曲]]'''は数が多く、数え弦楽方も幾通りもあるため非常に分かりにくいですが、このハ長調曲(in C major)は、'''「四重奏曲第58番」'''または偽作などを除いて'''「四重奏曲第43番」'''または'''「四重奏曲第42番」(String Quartet No. 42)'''と呼ばれ、「'''[[w:作品番号|作品番号]]64-5'''([[w:en:List_of_string_quartets_by_Joseph_Haydn#Opus_64,_the_"Tost"_quartets,_set_III_(1790)|Op. 54]], No. 2)」、また[[w:ホーボーケン番号|ホーボーケン番号]]という数え方だと「'''Hob. III:57'''」などとなります。[[w:en:List_of_string_quartets_by_Joseph_Haydn#Opus_54,_55,_the_"Tost"_quartets,_sets_I_&_II_(1788)]]</ref> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1788
|<!-- file -->[[File:The Danish String Quartet - Haydn's String Quartet No. 42 in C major, Op. 54, No. 2, Hob.III-57 - I. Vivace.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:The Danish String Quartet - Haydn's String Quartet No. 42 in C major, Op. 54, No. 2, Hob.III-57 - I. Vivace.ogg|4分24秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ハイドン「チェロ協奏曲第2番」】-->
|[[File:Joseph Haydn, målning av Thomas Hardy från 1792.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]
|<!--曲 名--> style="font-size:11pt;" |『'''[[w:チェロ協奏曲第2番 (ハイドン)|チェロ協奏曲第2番]]'''』<br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1783
|<!-- file -->[[File:CELLO LIVE PERFORMANCES JOHN MICHEL-HAYDN CELLO CONCERTO in D 1 recapcad.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:CELLO LIVE PERFORMANCES JOHN MICHEL-HAYDN CELLO CONCERTO in D 1 recapcad.ogg|6分5秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ハイドン「チェロ協奏曲第1番」】-->
|[[File:Joseph Haydn, målning av Thomas Hardy från 1792.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:12pt;" |[[w:フランツ・ヨーゼフ・ハイドン|ハイドン]]
|<!--曲 名--> style="font-size:11pt;" |『'''[[w:チェロ協奏曲第1番 (ハイドン)|チェロ協奏曲第1番]]'''』<br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1765<br>-67頃
|<!-- file -->[[File:The Metropolitan Chamber Orchestra - Haydn's Cello Concerto No. 1 in C major, Hob.VIIb-1 - I. Moderato.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:The Metropolitan Chamber Orchestra - Haydn's Cello Concerto No. 1 in C major, Hob.VIIb-1 - I. Moderato.ogg|9分44秒]]
|- <!--【■バロック音楽■】-->
! colspan="7" style="background-color:#b6eeb6;" |[[w:バロック音楽|バロック音楽]] ([[w:en:Baroque music|Baroque music]]: 1580–1750頃)<br> >後期バロック(Late baroque: 1680–1750頃)
|-
!<!--【ROWSPAN】--> rowspan="15" style="background-color:#b6eeb6;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ラモー「新クラヴサン組曲集」】-->
| rowspan="2" |[[画像:Attribué à Joseph Aved, Portrait de Jean-Philippe Rameau (vers 1728) - 001.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;" |[[w:ジャン=フィリップ・ラモー|ラモー]]
|<!--曲 名--> style="font-size:9pt;" |『新[[w:チェンバロ|クラヴサン]]組曲集』<ref>[[w:en:Pièces_de_Clavecin#Nouvelles_Suites_de_Pièces_de_Clavecin_(1726–1727)]]</ref><ref>[[w:fr:Troisième livre de pièces de clavecin de Rameau]]</ref><br> (第5巻<ref>[[w:en:Pièces_de_Clavecin#Suite_in_A_minor,_RCT_5]]</ref>) より<br> 第7曲 ガヴォットと6つの変奏<ref>[https://enc.piano.or.jp/musics/23679 新クラヴサン組曲集 第1番(第4組曲) ガヴォットと6つの変奏/Nouvelles suites de pièces de clavecin "Gavotte et 6 doubles" - ラモー - ピティナ・ピアノ曲事典]</ref>
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1726-<br>1727
|<!-- file -->[[File:Jean-Philippe Rameau - Gavotte and Variations.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Jean-Philippe Rameau - Gavotte and Variations.ogg|2分31秒]]
|-
|<!--曲 名--> style="font-size:9pt;" | (第6巻<ref>[[w:en:Pièces_de_Clavecin#Suite_in_G_major/G_minor,_RCT_6]]</ref>) より<br> 第4曲 雌鶏<ref>[https://enc.piano.or.jp/musics/23684 新クラヴサン組曲集 第2番(第5組曲) 雌鶏/Nouvelles suites de pièces de clavecin "La poule" - ラモー - ピティナ・ピアノ曲事典]</ref>
|<!-- file -->[[File:Jean-Philippe Rameau - La Poule (Marcelle Meyer, 1953).flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Jean-Philippe Rameau - La Poule (Marcelle Meyer, 1953).flac|3分06秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ペツォールト「メヌエット」】-->
|
!<!--作曲者--> style="font-size:9pt;" |[[w:クリスティアン・ペツォールト|ペツォールト]]
|<!--曲 名--> style="font-size:11pt; background-color:#ddffdd;" |<span style="font-size:7pt;">「[[w:アンナ・マクダレーナ・バッハ#アンナ・マクダレーナ・バッハの音楽帳|アンナ・マグダレーナ・バッハの音楽帳]]」<br> より メヌエット(BWV Anh.114)</span><br> '''"ペツォールトのメヌエット"'''
|<!--発表年--> style="font-size:9pt;" |1725
|<!-- file -->[[File:Menuet bwv anh 114 115 Anna Magdalena2.wav]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Menuet bwv anh 114 115 Anna Magdalena2.wav|1分36秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【クープラン「第5前奏曲」】-->
|[[File:Francois Couperin 2.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:フランソワ・クープラン|クープラン]]
|<!--曲 名--> style="font-size:11pt;" |『[[w:フランソワ・クープラン#『クラヴサン奏法』|クラヴサン奏法]]』<ref>[[w:en:L'art de toucher le clavecin]]</ref>より<br> 第5[[w:前奏曲|前奏曲]]
|<!--発表年--> style="font-size:9pt;" |1716
|<!-- file -->[[File:Couperin Cinquieme Prelude Equal.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Couperin Cinquieme Prelude Equal.ogg|2分16秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【マルチェッロ「オーボエ協奏曲」】-->
|[[File:Alessandro Marcello.png|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:アレッサンドロ・マルチェッロ|マルチェッロ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eeffee;" |『[[w:オーボエ協奏曲 (マルチェッロ)|オーボエ協奏曲]]』D935<br><span style="font-size:9pt;"> ➡[[w:ヨハン・ゼバスティアン・バッハ|バッハ]]による編曲<br> (チェンバロ独奏曲 BWV 974)</span>
|<!--発表年--> style="font-size:9pt;" |1715
|<!-- file -->[[File:Bach-Marcello-Adagio BWV974-Stephan.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach-Marcello-Adagio BWV974-Stephan.ogg|4分30秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【コレッリ「合奏協奏曲」】-->
| rowspan="3" |[[画像:Arcangelo corelli.jpg|border|center|50px]]
!<!--作曲者--> rowspan="3" style="font-size:12pt;" |[[w:アルカンジェロ・コレッリ|コレッリ]]
|<!--曲 名--> style="font-size:10pt;" |『[[w:コンチェルト・グロッソ|合奏協奏曲]]』<span style="font-size:8pt;">(作品番号6)</span> <ref>[[w:en:Twelve concerti grossi, Op. 6 (Corelli)]]</ref><br> 第4番<ref>[[w:en:Concerto grosso in D major, Op. 6, No. 4 (Corelli)]]</ref> より 第1楽章
|<!--発表年--> rowspan="3" style="font-size:9pt;" |1712
|<!-- file -->[[File:Corelli - Concerto Grosso Op. 6 No. 4 - 1. Adagio - Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Corelli - Concerto Grosso Op. 6 No. 4 - 1. Adagio - Allegro.ogg|3分25秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:10pt;" | 第8番 "クリスマス協奏曲" <ref>[[w:en:Christmas Concerto]]</ref><br> より 第1~第2楽章
|<!-- file -->[[File:Corelli - Concerto Grosso in G minor - Christmas Concerto - part 1.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Corelli - Concerto Grosso in G minor - Christmas Concerto - part 1.ogg|3分23秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:10pt;" | 〃 第4~第6楽章
|<!-- file -->[[File:Corelli - Concerto Grosso in G minor - Christmas Concerto - part 2.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Corelli - Concerto Grosso in G minor - Christmas Concerto - part 2.ogg|6分52秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【クーナウ?「われらに嬰児生まれ給う」】-->
|[[File:Johann Kuhnau.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |作者不明?<br>[[w:ヨハン・クーナウ|クーナウ]]?<ref name="嬰児">[[w:en:Uns ist ein Kind geboren, BWV 142]] は、19世紀後半に出版されたときはバッハ作曲と考えられましたが、やがて疑念を持たれ、作曲者不明ですが、クーナウが有力と考えられています。</ref>
|<!--曲 名--> style="font-size:11pt;" |<span style="font-size:9pt;">クリスマスカンタータ</span><br>『我らに<ruby><rb>嬰児</rb><rp>(</rp><rt>みどりご</rt><rp>)</rp></ruby>生まれ給う』<br> BWV 142<ref name="嬰児"/> より 協奏曲
|<!--発表年--> style="font-size:9pt;" |1711
|<!-- file -->[[File:Uns ist ein Kind geboren, BWV 142 - 1 Concerto.mid]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Uns ist ein Kind geboren, BWV 142 - 1 Concerto.mid|1分17秒]] [[:c:Category:MIDI files of Uns ist ein Kind geboren, BWV 142|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【パッヘルベル「カノンとジーグ」】-->
| rowspan="2" |
!<!--作曲者--> rowspan="2" style="font-size:11pt;" |[[w:ヨハン・パッヘルベル|パッヘルベル]]
|<!--曲 名--> style="font-size:10pt; background-color:#ddffdd;" |『3つのヴァイオリンと通奏低音のための <span style="font-size:12pt;">'''カノンとジーグ'''</span>』
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1680-<br>1706頃
|<!-- file -->[[File:Canon and Gigue in D.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Canon and Gigue in D.ogg|6分27秒]] [[:c:Category:Pachelbel's Canon|c:]]
|- <!--【パッヘルベルのカノン】-->
|<!--曲 名--> style="font-size:10pt; background-color:#ccffcc;" |<span style="font-size:12pt;"> '''"パッヘルベルのカノン"'''</span>
|<!-- file -->[[File:Pachelbel's Canon.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Pachelbel's Canon.ogg|2分51秒]]
|- <!--【】-->
! colspan="7" |
|- <!--【】-->
! colspan="7" |
|- <!--【】-->
! colspan="7" |
|- <!--【■ヘンデル】-->
! colspan="7" style="background-color:#98fb98;" |[[w:ゲオルク・フリードリヒ・ヘンデル#主な作品|ヘンデルの楽曲]]([[w:en:George_Frideric_Handel#Works|Compositions by Georg Friedrich Händel]])後期バロック音楽
|-
!<!--【ROWSPAN】--> rowspan="8" style="background-color:#98fb98;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ヘンデル「メサイアよりハレルヤ」】-->
|[[File:Haendelsmall.jpg|border|center|50px]]
!<!--作曲者-->[[w:ゲオルク・フリードリヒ・ヘンデル|ヘンデル]]
|<!--曲 名--> style="font-size:12pt; background-color:#eeffee;" |<span style="font-size:8pt;">[[w:オラトリオ|オラトリオ]]</span>『'''[[w:メサイア (ヘンデル)|メサイア]]'''』<span style="font-size:8pt;">(HWV 56)</span><br><span style="font-size:11pt;"> 第2部 より</span>「'''[[w:ハレルヤ|ハレルヤ]]'''」
|<!--発表年--> style="font-size:9pt;" |1741
|<!-- file -->[[File:Handel - messiah - 44 hallelujah.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Handel - messiah - 44 hallelujah.ogg|3分47秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ヘンデル「オンブラマイフ」】-->
| rowspan="2" |[[File:Haendelsmall.jpg|border|center|50px]]
!<!--作曲者--> rowspan="2" |[[w:ゲオルク・フリードリヒ・ヘンデル|ヘンデル]]
|<!--曲 名--> style="font-size:11pt; background-color:#eeffee;" |歌劇『[[w:セルセ (ヘンデル)|セルセ]]』<span style="font-size:8pt;">(HWV 40)</span> より<br> 「'''[[w:オンブラ・マイ・フ|オンブラ・マイ・フ]]'''」
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1738
|<!-- file -->[[File:Enrico Caruso, George Frideric Handel, Ombra mai fu (Serse).ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Enrico Caruso, George Frideric Handel, Ombra mai fu (Serse).ogg|4分16秒]] [[:c:Category:Ombra mai fu|c]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ヘンデル「ラルゴ」】-->
|<!--曲 名--> style="font-size:12pt; background-color:#ccffcc;" | '''"ヘンデルのラルゴ"'''
|<!-- file -->[[File:Largo (Händel).mid]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Largo (Händel).mid|2分11秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ヘンデル「水上の音楽」】-->
| rowspan="1" |[[File:Haendelsmall.jpg|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ゲオルク・フリードリヒ・ヘンデル|ヘンデル]]
|<!--曲 名--> style="font-size:12pt; background-color:#ddffdd;" |『'''[[w:水上の音楽|水上の音楽]]'''』第1組曲<br> <span style="font-size:8pt;"> (HWV 348)</span> より<br> 第5曲 '''アリア'''
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1717
|<!-- file -->[[File:5-George Frideric Handel - Water Music Suite in F major (Air) HWV348.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:5-George Frideric Handel - Water Music Suite in F major (Air) HWV348.ogg|4分11秒]] [[:c:Category:Audio files of the Water Music|c]]
|- <!--【】-->
! colspan="7" |
|- <!--【】-->
! colspan="7" |
|- <!--【】-->
! colspan="7" |
|- <!--【■J.S. バッハ】-->
! colspan="7" style="background-color:lawngreen;" |[[w:ヨハン・ゼバスティアン・バッハ#作品|J. S. バッハの楽曲]]([[w:en:Johann_Sebastian_Bach#Compositions|compositions by Johann Sebastian Bach]])後期バロック音楽
|-
!<!--【ROWSPAN】--> rowspan="32" style="background-color:lawngreen;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「ロ短調ミサ曲」】-->
| rowspan="1" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:11pt; background-color:#eeffee;" |<span style="font-size:14pt;">『'''[[w:ミサ曲 ロ短調|ロ短調ミサ曲]]'''』</span><br><span style="font-size:11pt;"> (BWV 232)<br> より「[[w:アニュス・デイ (音楽)|神の小羊]]」</span>
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1733-<br>1749?<ref name="Bach-list">[[w:en:List_of_compositions_by_Johann_Sebastian_Bach]] 参照。</ref>
|<!-- file -->[[File:Johann Sebastian Bach - Mass in B minor - Agnus Dei.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Johann Sebastian Bach - Mass in B minor - Agnus Dei.ogg|4分41秒]] [[:c:Category:Mass in B minor|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「ゴルトベルク変奏曲」】-->
| rowspan="3" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="3" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:9pt; background-color:#ddffdd;" |『クラヴィーア練習曲集』第4巻<br>「2段鍵盤付きクラヴィチェンバロ<br> のためのアリアと種々の変奏」<br> (BWV 988)(※ピアノ演奏版)<br> <span style="font-size:14pt;">'''"[[w:ゴルトベルク変奏曲|ゴルトベルク変奏曲]]"'''</span><br> より アリア~第9変奏</span>
|<!--発表年--> rowspan="3" style="font-size:9pt;" |1740?<ref name="Bach-list"/>
|<!-- file -->[[File:GoldbergVariations MehmetOkonsar-1of3 Var1to10.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:Audio files of the Open Goldberg Variations|c]]<br>[[:File:GoldbergVariations MehmetOkonsar-1of3 Var1to10.ogg|11分48秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:9pt; background-color:#eeffee;" | 〃 第10~第22変奏
|<!-- file -->[[File:GoldbergVariations MehmetOkonsar-2of3 Var11to23.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:GoldbergVariations MehmetOkonsar-2of3 Var11to23.ogg|20分09秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:9pt; background-color:#eeffee;" | 〃 第23~第30変奏・アリア
|<!-- file -->[[File:GoldbergVariations MehmetOkonsar-3of3 Var23to32END.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:GoldbergVariations MehmetOkonsar-3of3 Var23to32END.ogg|16分04秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「管弦楽組曲第2番 第7曲」】-->
| rowspan="1" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eeffee;" |『'''[[w:管弦楽組曲|管弦楽組曲]] 第2番'''』<br> (BWV 1067)<span style="font-size:11pt;"> より<br> 第7曲 [[w:バディヌリー|バディヌリー]]</span>
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1739頃?<ref name="Bach-list"/>
|<!-- file -->[[File:Bach, Johann Sebastian - Suite No.2 in B Minor - X. Badinerie.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach, Johann Sebastian - Suite No.2 in B Minor - X. Badinerie.ogg|1分23秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「フルートとオブリガート・チェンバロのためのソナタ」第1楽章】-->
| rowspan="3" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="3" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:10pt;" |『フルートとオブリガート・<br>チェンバロのためのソナタ』<br> 第1番 (BWV 1030) より<br><span style="font-size:11pt;"> 第1楽章</span>
|<!--発表年--> rowspan="3" style="font-size:9pt;" |1736/<br>1737<ref name="Bach-list"/>
|<!-- file -->[[File:Bach - Flute Sonata Bmin - 1. Andante - Traverso and Harpsichord.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach - Flute Sonata Bmin - 1. Andante - Traverso and Harpsichord.ogg|7分34秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「フルートとオブリガート・チェンバロのためのソナタ」第2楽章】-->
|<!--曲 名--> style="font-size:11pt;" | 第2楽章
|<!-- file -->[[File:Bach - Flute Sonata Bmin - 2. Largo e Dolce - Traverso and Harpsichord.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach - Flute Sonata Bmin - 2. Largo e Dolce - Traverso and Harpsichord.ogg|4分56秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「フルートとオブリガート・チェンバロのためのソナタ」第3楽章】-->
|<!--曲 名--> style="font-size:11pt;" | 第3楽章
|<!-- file -->[[File:Bach - Flute Sonata Bmin - 3. Presto - Traverso and Harpsichord.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach - Flute Sonata Bmin - 3. Presto - Traverso and Harpsichord.ogg|6分50秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「前奏曲とフーガ」前奏曲】-->
| rowspan="2" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="2" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:11pt;" |『前奏曲とフーガ』<span style="font-size:9pt;">(BWV 543)</span><br> より 前奏曲 </span>
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1730<br>以後?<ref name="Bach-list"/>
|<!-- file -->[[File:Johann Sebastian Bach Prelude in A minor BWV 543 Robert Köbler Silbermann-Organ.mp3]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Johann Sebastian Bach Prelude in A minor BWV 543 Robert Köbler Silbermann-Organ.mp3|3分18秒]] [[:c:Category:BWV 543 – Prelude and Fugue in A minor for organ|c]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「前奏曲とフーガ」フーガ】-->
|<!--曲 名--> style="font-size:11pt;" | フーガ
|<!-- file -->[[File:Johann Sebastian Bach Fugue in A minor BWV 543 Robert Köbler Silbermann-Organ.mp3]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Johann Sebastian Bach Fugue in A minor BWV 543 Robert Köbler Silbermann-Organ.mp3|6分24秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆バッハ「管弦楽組曲」】-->
| rowspan="6" |[[画像:BachJS.gif|border|center|50px]]
! rowspan="6" <!--作曲者-->|[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eeffee;" |<span style="font-size:13pt;">『'''[[w:管弦楽組曲|管弦楽組曲]] 第3番'''』</span><br> (BWV 1068)<br><span style="font-size:11pt;"> より 序曲</span>
| rowspan="6" <!--発表年--> style="font-size:9pt;" |1730頃?<ref name="Bach-list"/>
|<!-- file -->[[File:PDP-CH - Adolf Busch Chamber Players - Adolf Busch - Suite No. 3 in D major, BWV 1068 - Overture, Part 1 - Bach - Hmv-db3018-2ea3896.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:BWV 1068 – Orchestral Suite No. 3 in D major|c:]]<br>[[:File:PDP-CH - Adolf Busch Chamber Players - Adolf Busch - Suite No. 3 in D major, BWV 1068 - Overture, Part 1 - Bach - Hmv-db3018-2ea3896.flac|4分22秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#eeffee;" | 〃 序曲(つづき)
|<!-- file -->[[File:PDP-CH - Adolf Busch Chamber Players - Adolf Busch - Suite No. 3 in D major, BWV 1068 - Overture, Conclusion - Bach - Hmv-db3018-2ea3897.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - Adolf Busch Chamber Players - Adolf Busch - Suite No. 3 in D major, BWV 1068 - Overture, Conclusion - Bach - Hmv-db3018-2ea3897.flac|3分04秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「管弦楽組曲第3番」】-->
|<!--曲 名--> style="font-size:11pt; background-color:#ccffcc;" | 〃 第2曲 '''[[w:エール (音楽)|エール <small>(アリア)</small>]]'''</span>
|<!-- file -->[[File:PDP-CH - Adolf Busch Chamber Players - Adolf Busch - Suite No. 3 in D major, BWV 1068 - Air - Bach - Hmv-db3019-2ea3895.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - Adolf Busch Chamber Players - Adolf Busch - Suite No. 3 in D major, BWV 1068 - Air - Bach - Hmv-db3019-2ea3895.flac|4分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ/ヴィルヘルミ「G線上のアリア」】-->
|<!--曲 名--> style="font-size:13pt; background-color:#bbffbb;" | '''"[[w:G線上のアリア|G線上のアリア]]"'''<ref name="Air_on_the_G_String"/>
|<!-- file -->[[File:Air.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Air.ogg|3分03秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#eeffee;" | 〃 第3曲 ガヴォット
|<!-- file -->[[File:PDP-CH - Adolf Busch Chamber Players - Adolf Busch - Suite No. 3 in D major, BWV 1068 - Gavotte - Bach - Hmv-db3019-2ea3898.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - Adolf Busch Chamber Players - Adolf Busch - Suite No. 3 in D major, BWV 1068 - Gavotte - Bach - Hmv-db3019-2ea3898.flac|3分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:11pt; background-color:#eeffee;" | 〃 第4曲 ブーレ<br> 〃 第5曲 ジーグ
|<!-- file -->[[File:PDP-CH - Busch Chamber Players - Orchestral Suite No. 3 in D major, BWV1068 - Johann Sebastian Bach - Hmv-db3020-2ea3899.flac]]
|<!--リンク--> style="font-size:8pt;"|[[:File:PDP-CH - Busch Chamber Players - Orchestral Suite No. 3 in D major, BWV1068 - Johann Sebastian Bach - Hmv-db3020-2ea3899.flac|4分13秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「2つのヴァイオリンのための協奏曲」】-->
| rowspan="1" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:11pt;" |『[[w:2つのヴァイオリンのための協奏曲 (バッハ)|2つのヴァイオリンのため<br> の協奏曲]]』(BWV 1043)<span style="font-size:11pt;"><br> より 第2楽章</span>
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1730頃??<ref name="Bach-list"/>
|<!-- file -->[[File:Johann Sebastian Bach - Concerto for Two Violins in D minor - 2. Largo ma non tanto.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Johann Sebastian Bach - Concerto for Two Violins in D minor - 2. Largo ma non tanto.ogg|6分42秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「マタイ受難曲」】-->
| rowspan="1" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:15pt; background-color:#eeffee;" |『'''[[w:マタイ受難曲|マタイ受難曲]]'''』<br> <span style="font-size:12pt;">(BWV 244)</span>
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1727<ref name="Bach-list"/>
|<!-- file -->[[#バッハ「マタイ受難曲」|外部音源を探す]]<ref>バッハ作曲「マタイ受難曲」がウィキメディア・コモンズに見当たらないため、代わりに外部音源を参照します。</ref>
|<!--リンク--> style="font-size:8pt;"|
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「ヨハネ受難曲」】-->
| rowspan="1" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:15pt; background-color:#eeffee;" |『'''[[w:ヨハネ受難曲|ヨハネ受難曲]]'''』<br> <span style="font-size:12pt;">(BWV 245)</span>
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1724<ref name="Bach-list"/>
|<!-- file -->[[#バッハ「ヨハネ受難曲」|外部音源を探す]]<ref>バッハ作曲「ヨハネ受難曲」がウィキメディア・コモンズに見当たらないため、代わりに外部音源を参照します。</ref>
|<!--リンク--> style="font-size:8pt;"|
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「主よ、人の望みの喜びよ」】-->
|[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者-->[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:9pt; background-color:#eeffee;" |『[[w:心と口と行いと生活で|心と口と行いと生活で]]』BWV147<br> より<br><span style="font-size:12pt;">'''"[[w:主よ、人の望みの喜びよ|主よ、人の望みの喜びよ]]"'''</span>
|<!--発表年--> style="font-size:9pt;" |1723
|<!-- file -->[[File:Jesu, Joy of Man's Desiring2.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Jesu, Joy of Man's Desiring2.ogg|3分13秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「平均律クラヴィーア曲集 第1巻 第1番」】-->
| rowspan="1" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:11pt; background-color:#ccffcc;" |『'''[[w:平均律クラヴィーア曲集|平均律クラヴィーア曲集]]'''』<br> '''第1巻 第1番''' (BWV 846)<ref>[[w:en:Prelude and Fugue in C major, BWV 846]]</ref><br> より '''前奏曲'''<ref>前奏曲の部分は、[[w:シャルル・グノー|シャルル・グノー]]が『[[w:アヴェ・マリア (グノー)|アヴェ・マリア]]』の伴奏に用いたことでも知られています。</ref></span>
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1722<ref name="Bach-list"/>
|<!-- file -->[[File:Bach C Major Prelude Equal.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach C Major Prelude Equal.ogg|2分02秒]] [[:c:Category:BWV 846|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆バッハ「ブランデンブルク協奏曲」第2番】-->
| rowspan="5" |[[画像:BachJS.gif|border|center|50px]]
! rowspan="5" <!--作曲者--> |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:9pt; background-color:#eeffee;" |<span style="font-size:8pt;">『いくつかの楽器による六つの協奏曲』</span><br><span style="font-size:12pt;">'''"[[w:ブランデンブルク協奏曲|ブランデンブルク協奏曲]]"'''</span><br> <span style="font-size:12pt;">'''第2番'''</span> (BWV 1047) '''第1楽章'''
| rowspan="5" <!--発表年--> style="font-size:9pt;" |1721<ref name="Bach-list"/>
|<!-- file -->[[File:Bach - Brandenburg Concerto.No. 2 in F Major- I. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:c:Category:Brandenburg Concertos|c:]]<br>[[:File:Bach - Brandenburg Concerto.No. 2 in F Major- I. Allegro.ogg|5分08秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【「ブランデンブルク協奏曲第3番」第1楽章】-->
|<!--曲 名--> style="font-size:9pt; background-color:#eeffee;" | <span style="font-size:12pt;">'''第3番'''</span> (BWV 1048) '''第1楽章'''
|<!-- file -->[[File:Bach - Brandenburg Concerto No. 3 - 1. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach - Brandenburg Concerto No. 3 - 1. Allegro.ogg|5分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【「ブランデンブルク協奏曲第3番」第3楽章】-->
|<!--曲 名--> style="font-size:9pt; background-color:#eeffee;" | <span style="font-size:12pt;">第3番</span> 第3楽章
|<!-- file -->[[File:Bach - Brandenburg Concerto No. 3 - 3. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach - Brandenburg Concerto No. 3 - 3. Allegro.ogg|4分34秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【「ブランデンブルク協奏曲第5番」第1楽章】-->
|<!--曲 名--> style="font-size:9pt; background-color:#eeffee;" | <span style="font-size:12pt;">'''第5番'''</span> (BWV 1050) '''第1楽章'''
|<!-- file -->[[File:Bach - Brandenburg Concerto 5 - 1. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach - Brandenburg Concerto 5 - 1. Allegro.ogg|9分59秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【「ブランデンブルク協奏曲第5番」第3楽章】-->
|<!--曲 名--> style="font-size:9pt; background-color:#eeffee;" | <span style="font-size:12pt;">第5番</span> 第3楽章
|<!-- file -->[[File:Bach - Brandenburg Concerto 5 - 3. Allegro.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach - Brandenburg Concerto 5 - 3. Allegro.ogg|4分57秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「無伴奏チェロ組曲 第1番」】-->
| rowspan="1" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:12pt; background-color:#ddffdd;" |『'''[[w:無伴奏チェロ組曲|無伴奏チェロ組曲]]'''』<br> '''第1番''' (BWV 1007)<span style="font-size:11pt;"> より<br> '''前奏曲 (プレリュード)'''</span>
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1720<ref name="Bach-list"/>
|<!-- file -->[[File:Bach - Cello Suite no. 1 in G major, BWV 1007 - I. Prélude.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Bach - Cello Suite no. 1 in G major, BWV 1007 - I. Prélude.ogg|2分30秒]] [[:c:Category:BWV 1007|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「シャコンヌ」】-->
| rowspan="1" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:10pt; background-color:#ddffdd;" |『[[w:無伴奏ヴァイオリンのためのソナタとパルティータ|無伴奏ヴァイオリンのための<br> ソナタとパルティータ]]』の<br> '''[[w:無伴奏ヴァイオリンのためのソナタとパルティータ#パルティータ第2番ニ短調_BWV1004|パルティータ第2番]]''' (BWV 1004)<br><span style="font-size:11pt;"> より 第5曲 <span style="font-size:13pt;">'''シャコンヌ'''</span></span>
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1720<ref name="Bach-list"/>
|<!-- file -->[[File:Johann Sebastian Bach - Chaconne for violin alone.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Johann Sebastian Bach - Chaconne for violin alone.ogg|12分30秒]] [[:c:Category:BWV 1004 – Partita No. 2 in D minor for violin solo|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「小フーガ」】-->
| rowspan="1" |[[画像:BachJS.gif|border|center|50px]]
!<!--作曲者--> rowspan="1" |[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
|<!--曲 名--> style="font-size:15pt; background-color:#ccffcc;" | '''[[w:フーガ BWV578|フーガ]]''' (BWV 578)<br> '''"小フーガ"'''
|<!--発表年--> rowspan="1" style="font-size:9pt;" |1713?<ref name="Bach-list"/>
|<!-- file -->[[File:J.S.Bach – BWV 578.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:J.S.Bach – BWV 578.oga|4分50秒]] [[:c:Category:BWV 578 – Fugue in G minor for organ|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バッハ「トッカータとフーガ(BWV 565)」】-->
| rowspan="2" |[[画像:BachJS.gif|border|center|50px]]
! rowspan="2" |<!--作曲者-->[[w:ヨハン・ゼバスティアン・バッハ|J.S. バッハ]]
| rowspan="2" <!--曲 名--> style="font-size:14pt; background-color:#ccffcc;" | '''[[w:トッカータとフーガ ニ短調 BWV 565|トッカータとフーガ]]'''<br> (BWV 565)
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1704?<ref name="Bach-list"/>
|<!-- file -->[[File:Toccata et Fugue BWV565.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Toccata et Fugue BWV565.ogg|8分34秒]] [[:c:Category:BWV 565|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!-- file -->[[File:Toccata and Fugue in D Minor (ISRC USUAN1100350).mp3]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Toccata and Fugue in D Minor (ISRC USUAN1100350).mp3|8分42秒]]
|- <!--【■ヴァヴァルディ】-->
! colspan="7" style="background-color:lime;" |[[w:アントニオ・ヴィヴァルディ#作品|ヴィヴァルディの楽曲]]([[w:en:Antonio_Vivaldi#Works|Compositions by Antonio Vivaldi]])後期バロック音楽
|-
!<!--【ROWSPAN】--> rowspan="5" style="background-color:lime;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ヴィヴァルディ「四季」】-->
|[[画像:Vivaldi.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:アントニオ・ヴィヴァルディ|ヴィヴァルディ]]
|<!--曲 名--> style="font-size:10pt; background-color:#ccffcc;" |ヴァイオリン協奏曲集<br><span style="font-size:13pt;">『'''[[w:四季 (ヴィヴァルディ)|四季]]'''』 第1曲 '''"春"'''<br> より 第1楽章
|<!--発表年--> style="font-size:9pt;" |1725頃
|<!-- file -->[[File:Vivaldi - Four Seasons 1 Spring mvt 1 Allegro - John Harrison violin.oga]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Vivaldi - Four Seasons 1 Spring mvt 1 Allegro - John Harrison violin.oga|3分35秒]]
|- <!--【】-->
! colspan="7" |
|- <!--【】-->
! colspan="7" |
|- <!--【】-->
! colspan="7" |
|- <!--【】-->
! colspan="7" |
<!--
! colspan="7" style="background-color:#aeffae;" | ゑ
-->
|}
<!--
<span style="font-size:11pt;">
</span>
-->
=== 外部音源より ===
ウィキメディア・コモンズに音声ファイルがない楽曲について、以下の '''[[/外部音源]]''' などで代用します。
*[https://rekion.dl.ndl.go.jp/ 歴史的音源]([[w:国立国会図書館|国立国会図書館]]デジタルコレクション)、[[画像:YouTube Logo 2017.svg|80px]] [https://www.youtube.com/ YouTube]
====ワルトトイフェル「スケーターズワルツ」====
:[[画像:P music.svg|35px]]<u>[https://rekion.dl.ndl.go.jp/info:ndljp/pid/2915122 管絃樂 スケータース・ワルツ - 歴史的音源]</u><small>(国立国会図書館デジタルコレクション)</small>
====ビゼー「アルルの女 メヌエット」====
:[[画像:P music.svg|35px]]<u>[https://rekion.dl.ndl.go.jp/info:ndljp/pid/1316638 管弦楽:アルルの女(メヌエット) - 歴史的音源]</u><small>(国立国会図書館デジタルコレクション)</small>
====メンデルスゾーン「春の歌」====
:[[画像:P music.svg|35px]]<u>[https://rekion.dl.ndl.go.jp/info:ndljp/pid/1316511 ピアノ独奏:春の歌 - 歴史的音源]</u><small>(国立国会図書館デジタルコレクション)</small>
====ウェーバー「舞踏への勧誘」====
:[[画像:P music.svg|35px]]<u>[https://rekion.dl.ndl.go.jp/info:ndljp/pid/1316645 ピアノ独奏:舞踏への勧誘(上) - 歴史的音源]</u><small>(国立国会図書館デジタルコレクション)</small>
:[[画像:P music.svg|35px]]<u>[https://rekion.dl.ndl.go.jp/info:ndljp/pid/1316646 ピアノ独奏:舞踏への勧誘(下) - 歴史的音源]</u><small>(国立国会図書館デジタルコレクション)</small>
====ゴセック「ガヴォット」====
:[[画像:P music.svg|35px]]<u>[https://rekion.dl.ndl.go.jp/info:ndljp/pid/8275619 管弦楽:ガボット - 歴史的音源]</u><small>(国立国会図書館デジタルコレクション)</small>
====ボッケリーニ「メヌエット」====
:[[画像:P music.svg|35px]]<u>[https://rekion.dl.ndl.go.jp/info:ndljp/pid/2916152 ヴァイオリン練習用伴奏曲「メヌエット」 - 歴史的音源]</u><small>(国立国会図書館デジタルコレクション)</small>
====アンゲラー「おもちゃの交響曲」====
:[[画像:P music.svg|35px]]<u>[https://rekion.dl.ndl.go.jp/info:ndljp/pid/3576307 (児童のための音楽)管弦楽:玩具の交響曲 - 歴史的音源]</u><small>(国立国会図書館デジタルコレクション)</small>
====モーツァルト「交響曲第39番」====
:[[画像:YouTube Logo 2017.svg|80px]] [https://www.youtube.com/ YouTube]から音源を探す: [[画像:Nuvola apps xmag.png|35px]][https://www.youtube.com/results?search_query=Symphony+No.39 Symphony No.39]、 [[画像:Nuvola apps xmag.png|35px]][https://www.youtube.com/results?search_query=K.543 K.543]、 [[画像:Nuvola apps xmag.png|35px]][https://www.youtube.com/results?search_query=KV543 KV543]
====バッハ「マタイ受難曲」====
:[[画像:YouTube Logo 2017.svg|80px]] [https://www.youtube.com/ YouTube]から音源を探す: [[画像:Nuvola apps xmag.png|35px]][https://www.youtube.com/results?search_query=Matth%C3%A4us-Passion Matthäus-Passion]、 [[画像:Nuvola apps xmag.png|35px]][https://www.youtube.com/results?search_query=BW244 BW244]
====バッハ「ヨハネ受難曲」====
:[[画像:YouTube Logo 2017.svg|80px]] [https://www.youtube.com/ YouTube]から音源を探す: [[画像:Nuvola apps xmag.png|35px]][https://www.youtube.com/results?search_query=Passio+Secundum+Joannem+Bach Passio Secundum Joannem Bach]、 [[画像:Nuvola apps xmag.png|35px]][https://www.youtube.com/results?search_query=BWV245 BWV245]
<!-- これより予備タグ -->
<div style="color:#fefefe">
<span style="text-align:left;font-family:Times New Roman;font-size:15pt;">
<span style="font-size:11pt;">
<!--
style="font-size:11pt;"|
-->
|- <!--【】-->
! colspan="7" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【】-->
|[[画像:|border|center|50px]]
!<!--作曲者--><!--[[w:|]]
|<!--曲 名--><!--[[w:|]]
|<!--発表年--> style="font-size:9pt;" |
|<!-- file -->[[]]
|<!--リンク--> style="font-size:8pt;"|[[:|分秒]]
◆──────────◆──────────◆──────────◆──────────◆──────────◆──────────
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【】-->
| rowspan="2" |[[画像:|center|50px]]
!<!--作曲者--> rowspan="2" style="font-size:11pt;" |<!--[[w:|]]
|<!--曲 名--> rowspan="2" style="font-size:11pt;" |<!--[[w:|]]
|<!--発表年--> rowspan="2" style="font-size:9pt;" |
|<!-- file -->[[]]
|<!--リンク--> style="font-size:8pt;"|[[:|分秒]]
|-
|<!-- file -->[[]]
|<!--リンク--> style="font-size:8pt;"|[[:|分秒]]
</div>
__toc__
==著作権についての注記==
著作権保護期間を満了していない作曲家の楽曲については、本稿では採り上げません。<br>ウィキメディア・コモンズには、著作権が切れていない可能性がある作品のファイルもアップされていますが、扱わないこととします。<br>それらの楽曲については、YouTube(無料動画多数)やAmazon Musicなどの音楽配信サイトをご利用ください。詳しくは、以下の記事を参照してください。
*[[/作曲家の一覧]]
*[[著作権保護期間]]
**[[著作権保護期間/作曲家・楽曲の事例|/作曲家・楽曲の事例]]
----
:'''著作権が切れている作曲家''' <ref>[https://music-bells.com/?mode=f20 著作権の切れている作曲家・作品(音楽)リスト - 楽譜出版社 《ミュージック・ベルズ》 Music Bells Publishing] などを参照。</ref>
::【注意】米国の著作権法による著作権保護期間<ref>[[w:著作権法_(アメリカ合衆国)#著作権の保護期間]]</ref>は、1923年以前に発表された作品は満了ですが、1924年~1963年に発表された作品は更新手続きがされていれば発表から95年後に満了、1964年~1977年に発表された作品は発表から95年後に満了、と複雑になっています。そのため、作曲家の没後70年が過ぎていても1924年以降に発表された作品に著作権がまだ有効な場合があります。
:以下に、1924年以後も作品を発表しているおもな作曲家を挙げます。
*[[w:リヒャルト・シュトラウス|リヒャルト・シュトラウス]]([[画像:Flag of Germany.svg|border|25px]]1949年没):日本国内では1999年末、米国では2019年末で満了。
*[[w:バルトーク・ベーラ|バルトーク・ベーラ]](ハンガリー1945年没):日本国内では2005年末、米国では2015年末で満了。
*[[w:ケネス・アルフォード|ケネス・アルフォード]]([[画像:Flag of the United Kingdom.svg|border|25px]]1945年没:『[[w:ボギー大佐|ボギー大佐]]』など):日本国内では2005年末、米国では2015年末で満了。
*[[w:セルゲイ・ラフマニノフ|セルゲイ・ラフマニノフ]]([[画像:Flag of the United States.svg|border|25px]]1943年没):日本国内では1993年末+戦時加算10年余、米国では2013年末で満了。
*[[w:ジョージ・ガーシュウィン|ジョージ・ガーシュウィン]](1937年没):実兄との共同著作物337曲は、2053年まで保護期間が延長されたが<ref>[[w:ジョージ・ガーシュウィン#著作権]]</ref>、『[[w:ラプソディ・イン・ブルー|ラプソディ・イン・ブルー]]』などはパブリックドメイン。
*[[w:グスターヴ・ホルスト|グスターヴ・ホルスト]]([[画像:Flag of the United Kingdom.svg|border|25px]]1934年没:[[w:惑星 (組曲)|組曲『惑星』]]など)
*[[w:エドワード・エルガー|エドワード・エルガー]]([[画像:Flag of the United Kingdom.svg|border|25px]]1934年没:『威風堂々』など)
;参考リンク
*[https://logosfoundation.org/copyleft/public_domain_composers.html Public Domain Composers - No Copyright](作曲家の著作権保護期間満了年を記載)
==脚注==
<references/>
== 関連項目 ==
*[[協奏曲の鑑賞]]
:
*[[音声ファイルで聴く英語版ウィキペディア]]
== 関連記事 ==
;日本語版ウィキペディア
*[[w:Portal:クラシック音楽]]
;英語版ウィキペディア
*[[w:en:Portal:Classical music]]
;英語版ウィキブックス
*[[:b:en:Category:Subject:Music]]
**'''[[:b:en:Western Music History]]'''
**[[:b:en:Category:Book:Introduction to Classical Music]]
**:'''[[:b:en:Introduction to Classical Music]]'''
===ウィキメディア・コモンズ===
{{Commons|Category:Classical music|クラシック音楽}}
{{Commons|Category:Classical composers|クラシック音楽の作曲家}}
{{Commons|Category:Compositions by composer|作曲家別の作曲}}
{{Commons|Category:Audio files of classical music by composer|作曲家別のクラシック音楽の音声ファイル}}
{{Commons|Category:Audio files of classical music|クラシック音楽の音声ファイル}}
{{Commons|Category:Videos of classical music|クラシック音楽の動画ファイル}}
{{Commons|Category:Audio files of classical music by ensemble|楽団別のクラシック音楽の音声ファイル}}
{{Commons|Category:Audio files of classical music by the Berlin Philharmonic|ベルリンフィルの音声ファイル}}
{{Commons|Category:Audio files of classical music by conductor|指揮者別のクラシック音楽の音声ファイル}}
== 外部リンク ==
*[https://enc.piano.or.jp/ ピアノ曲事典 | ピティナ・ピアノホームページ - ピティナ・ピアノ曲事典]
===Musopen===
{{Commons|Category:Musopen|Category:Musopen}}
[[w:Musopen|Musopen]](パブリックドメインの録音と楽譜の電子図書館)
:https://musopen.org/ (Free Sheet Music, Royalty Free & Public Domain Music)
===abcnotation.com===
:https://abcnotation.com/ ([[w:en:ABC notation|ABC notation]] / [[w:ABC記譜法|ABC記譜法]])
[[Category:クラシック音楽|かいふおんけん]]
<!--
{{Wikipedia|
-->
[[Category:音声ファイルで聴くクラシック音楽入門|*]]
[[Category:クラシック音楽|おんせい*]]
[[Category:音楽|くらしつく]]
dyu0vs9eg6b50nwu4riikwukiva7j96
音声ファイルで聴くクラシック音楽入門/行進曲
0
33273
262843
261967
2024-10-31T12:41:17Z
Linguae
449
/* 「マーチ王」スーザの行進曲特集 */ +スーザ「ウルヴァリン行進曲」「ライト・フォワード」「追悼:ガーフィールド大統領の葬送行進曲」「ガーフィールド大統領就任式」
262843
wikitext
text/x-wiki
<!--【2022年1月2日起稿】-->
<div style="text-align:center">
{|
|-
|[[画像:Gartoon mimetypes ogg.svg|border|150px]]
|[[画像:Band of the Welsh Guards, Buckingham Palace, London - Diliff.jpg|border|400px|]]
|[[画像:Gartoon mimetypes midi.svg|border|150px]]
|}
</div>
== クラシック音楽の行進曲 ==
クラシック音楽「行進曲」または「マーチ」には次のようなものがあります。
*軍隊の行進に合わせて伴奏される楽曲
*祝祭(結婚・葬送など)や儀式の行列に合わせて伴奏される楽曲
*上記のような伴奏の形式で作曲された楽曲
ここでは20世紀の作品を中心に定番の曲を採り上げます。
*'''[[#聴いておきたい行進曲]]'''(アメリカ合衆国のマーチ音楽、ヨーロッパの行進曲)
**[[#行進曲の動画]]
**<span style="background-color:#ccffff;">'''[[#「マーチ王」スーザの行進曲特集]]'''</span>
ほか
== 聴いておきたい行進曲 ==
*<!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|border|40px]]印は、スクリーマー<ref>[[w:en:Screamer (march)]]</ref> などと呼ばれる[[w:サーカス|サーカス]]音楽<ref>[[w:en:Circus music|Circus music]]</ref>です。
*<!--▼トロンボーン-->[[画像:Band Silhouette 04.jpg|border|30px]]印は、金管楽器の[[w:トロンボーン|トロンボーン]]が中心的役割を果たす行進曲を示します。
{| class="wikitable"
|- style="text-align:left;font-family:Times New Roman;font-size:15pt;"
|
!作曲者
!曲 名
! style="font-size:9pt;" |発表年
!音声ファイル
! style="font-size:10pt;"|再生時間
|- <!--【■アメリカのマーチ音楽】-->
! colspan="6" style="height:1em; vertical-align:bottom;text-align:center; background-color:#ddffff; font-size:13pt;" |[[画像:Flag of the United States (1912-1959).svg|100px]] <span style="color:#B31942;">アメリカ合衆国</span>の<span style="color:#0A31a1;">マーチ音楽<small>([[w:en:American march music|American march music]]: 19世紀後半~1920s~1940s)</small></span>
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ヴァン・ボスケルク「常に備えあり」】-->
! -
|<!--作曲者--> style="font-size:9pt;" |ヴァン・ボスケルク<ref name="ヴァン・ボスケルク">'''フランシス・サルタス・ヴァン・ボスケルク''' [https://ml.naxos.jp/composer1/104609]([[w:en:Francis Saltus Van Boskerck|Francis Saltus Van Boskerck]]: 1868-1927)は[[w:アメリカ沿岸警備隊|アメリカ沿岸警備隊]]の将校・作曲家。同沿岸警備隊の公式行進曲『'''[[w:常に備えあり|常に備えあり]]'''』([[w:en:Semper Paratus (march)|Semper Paratus]])の作曲者として知られています。</ref>
|<!--曲 名--> style="font-size:12pt;" |[[w:常に備えあり|常に備えあり]] <ref name="ヴァン・ボスケルク"/><br> <span style="font-size:9pt;">([[w:アメリカ沿岸警備隊|米沿岸警備隊]]公式マーチ)</span>
|<!--発表年--> style="font-size:9pt;" |1927
|<!-- file -->[[File:Semper Paratus, 1945.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Semper Paratus, 1945.ogg|4分14秒]] [[:c:Category:Semper Paratus (march)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ヘンリー・フィルモア「時の人」】-->
|[[画像:Henry Fillmore at age 16.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |フィルモア <ref name="フィルモア">'''ヘンリー・フィルモア'''([[w:en:Henry Fillmore|Henry Fillmore]]: 1881–1956)は、アメリカの作曲家。「マーチの王」[[w:ジョン・フィリップ・スーザ|スーザ]]が没した後には、彼も「マーチの王」と呼ばれました。[[w:トロンボーン|トロンボーン]]を用いた曲を多く手がけています。</ref>
|<!--曲 名--><!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|border|40px]]時の人 <ref>フィルモア作曲「時の人」(The Man of the Hour)</ref>
|<!--発表年--> style="font-size:9pt;" |1924
|<!-- file -->[[File:Henry Fillmore's "The Man of the Hour" (1924), performed by the U.S. Navy Band.oga]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Henry Fillmore's "The Man of the Hour" (1924), performed by the U.S. Navy Band.oga|3分25秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ウォルター・イングリッシュ「王宮のお触れ」】-->
! -
|<!--作曲者--> style="font-size:9pt;" |イングリッシュ <ref name="ウォルター・イングリッシュ">'''ウォルター・イングリッシュ'''([[w:en:Walter English|Walter English]]: 1867-1916)は、サーカス音楽などで知られるアメリカの作曲家です。</ref>
|<!--曲 名--> style="font-size:9pt;" |<!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|border|40px]]王宮のお触れ <ref>'''王宮のお触れ'''(Royal Decree March)は、ウォルター・イングリッシュ([[w:en:Walter English|Walter English]])が作曲したサーカス音楽です。</ref>
|<!--発表年--> style="font-size:9pt;" |1916
|<!-- file -->[[File:Royal Decree - U.S. Air Force Heritage of America Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Royal Decree - U.S. Air Force Heritage of America Band.ogg|2分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ヘンリー・フィルモア「ローリング・サンダー」】-->
|[[画像:Henry Fillmore at age 16.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |フィルモア <ref name="フィルモア"/>
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |<!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|border|40px]]ローリング・サンダー<br> <small>(とどろく雷鳴)</small> <ref>[[w:en:Rolling Thunder (march)]]</ref>
|<!--発表年--> style="font-size:9pt;" |1916
|<!-- file -->[[File:RollingThunder (USAFB).ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:RollingThunder (USAFB).ogg|1分57秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ヘンリー・フィルモア「ラッサス・トロンボーン」】-->
|[[画像:Henry Fillmore at age 16.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |フィルモア <ref name="フィルモア"/>
|<!--曲 名--> style="font-size:9pt;" |<!--▼トロンボーン-->[[画像:Band Silhouette 04.jpg|border|30px]]ラッサス・トロンボーン <ref>フィルモアが1915年に作曲した「ラッサス・トロンボーン」 "Lassus Trombone" は[[w:トロンボーン|トロンボーン]]を主役とする「トロンボーン・ファミリー」のうちの1曲です。</ref>
|<!--発表年--> style="font-size:9pt;" |1915
|<!-- file -->[[File:Lassus Trombone - Concert Band - United States Air Force Heritage of America Band.mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Lassus Trombone - Concert Band - United States Air Force Heritage of America Band.mp3|2分58秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ヘンリー・フィルモア「サーカス・ビー」】-->
|[[画像:Henry Fillmore at age 16.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |フィルモア <ref name="フィルモア"/>
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |<!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|border|40px]]'''サーカス・ビー'''<br> <small>(サーカスの人気者)</small><ref>フィルモアの [[w:en:The Circus Bee|The Circus Bee]] は「サーカスの人気者」などと訳されています[https://ml.naxos.jp/opus/268079]。</ref>
|<!--発表年--> style="font-size:9pt;" |1908
|<!-- file -->[[File:The Circus Bee.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Circus Bee.ogg|2分34秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ヘンリー・フィルモア「ミス・トロンボーン」】-->
|[[画像:Henry Fillmore at age 16.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |フィルモア <ref name="フィルモア"/>
|<!--曲 名--> style="font-size:9pt;" |<!--▼トロンボーン-->[[画像:Band Silhouette 04.jpg|border|30px]]ミス・トロンボーン <ref>フィルモアが1908年に作曲した「ミス・トロンボーン」 "Miss Trombone" は[[w:トロンボーン|トロンボーン]]を主役とする「トロンボーン・ファミリー」のうちの1曲です。フィルモアのこの曲は、黒人音楽の影響を受けた「[[w:ラグタイム|ラグタイム]]」という音楽ジャンルの曲とみなされています。</ref><br> <small>【※[[w:ラグタイム|ラグタイム]]】 </small>
|<!--発表年--> style="font-size:9pt;" |1908
|<!-- file -->[[File:Fillmore, Henry - Miss Trombone (1911).ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Fillmore, Henry - Miss Trombone (1911).ogg|2分21秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【エドモンド・L・グルーバー「陸軍は進んで行く」】-->
|[[画像:Edmund L. Gruber (US Army brigadier general).jpg|border|center|50px]]
|<!--作曲者--> style="font-size:9pt;" |グルーバー <ref name="エドモンド・L・グルーバー">'''エドモンド・L・グルーバー''' [https://ml.naxos.jp/composer/104372]([[w:en:Edmund L. Gruber|Edmund L. Gruber]]: 1879-1941)は[[w:アメリカ陸軍|アメリカ陸軍]]の砲兵将校・将軍で、軍楽の作曲家。同陸軍の公式行進曲『'''[[w:陸軍は進んで行く|陸軍は進んで行く]]'''』([[w:en:The Army Goes Rolling Along|The Army Goes Rolling Along]])の作曲者として知られています。なお、彼のドイツの祖先[[w:フランツ・クサーヴァー・グルーバー|フランツ・クサーヴァー・グルーバー]]は[[w:クリスマス・キャロル|クリスマス・キャロル]]『[[w:きよしこの夜|きよしこの夜]]』の作曲者です。</ref>
|<!--曲 名--> style="font-size:11pt;" |[[w:陸軍は進んで行く|陸軍は進んで行く]] <ref name="エドモンド・L・グルーバー"/><br> <span style="font-size:9pt;">([[w:アメリカ陸軍|米陸軍]]公式マーチ)</span>
|<!--発表年--> style="font-size:9pt;" |1908/<br>1917<ref>『'''[[w:陸軍は進んで行く|陸軍は進んで行く]]'''』は1908年に'''エドモンド・L・グルーバー'''によって『'''弾薬輸送車の歌'''』("The Caissons Go Rolling Along")として作曲されましたが、1917年に「マーチ王」'''[[w:ジョン・フィリップ・スーザ|ジョン・フィリップ・スーザ]]'''によって編曲され、彼の行進曲『[[w:アメリカ野砲隊|アメリカ野砲隊]]』([[w:en:U.S. Field Artillery March]])に組み込まれました。</ref>
|<!-- file -->[[File:The Army Goes Rolling Along - U.S. Army Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Army Goes Rolling Along - U.S. Army Band.ogg|1分10秒]] [[:c:Category:The Army Goes Rolling Along|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ツィンマーマン「錨を上げて」】-->
|[[画像:AnchorsAweigh.jpeg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |ツィンマーマン <ref>[[w:en:Charles A. Zimmermann]]</ref>
|<!--曲 名--> style="background-color:#aaffff;" |<span style="font-size:18pt;">'''[[w:錨を上げて|錨を上げて]]'''</span> <ref>[[w:en:Anchors Aweigh]]</ref><br> <span style="font-size:9pt;">([[w:アメリカ海軍|米海軍]]の非公式マーチ)</span>
|<!--発表年--> style="font-size:9pt;" |1906
|<!-- file -->[[File:Anchors Aweigh (1951), by Philip Green and his Orchestra.oga]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Anchors Aweigh (1951), by Philip Green and his Orchestra.oga|1分50秒]] [[:c:Category:Anchors Aweigh|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【バグリー「国民の象徴」】-->
! rowspan="2" | -
!<!--作曲者--> rowspan="2" style="font-size:10pt;" |バグリー <ref name="バグリー">'''エドウィン・ユージーン・バグリー'''([[w:en:Edwin Eugene Bagley|Edwin Eugene Bagley]]: 1857-1922)はアメリカの作曲家です。その代表曲『'''国民の象徴'''』('''[[w:en:National Emblem|National Emblem]]''')は、冒頭部にアメリカ国歌『'''[[w:星条旗 (国歌)|星条旗]]'''』[[File:The Star-Spangled Banner (USMC Band).ogg]] を取り入れているため、とても人気の高い曲です。この曲は1902年頃に作曲され、1906年に発表されました。なお、'''[[wikt:en:Bagley#English|Bagley]]''' というつづりの発音は'''バグリー'''([[wikt:en:Bagley#English|/ˈbæɡli/]])に近いとかんがえられますが、日本語訳では「バーグレイ」などの表記も見られます。</ref>
|<!--曲 名--> rowspan="2" style="font-size:16pt; background-color:#ddffff" |'''国民の象徴''' <ref name="バグリー"/>
|<!--発表年--> rowspan="2" style="font-size:9pt;" |1902/<br>1906<ref name="バグリー"/>
|<!-- file -->[[File:National Emblem - U.S. Army Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:National Emblem - U.S. Army Band.ogg|3分4秒]] [[:c:Category:National Emblem|c:]]
|-
|<!-- file -->[[File:"National Emblem" performed by the United States Naval Academy Band in 1977.oga]]
|<!--リンク--> style="font-size:10pt;"|[[:File:"National Emblem" performed by the United States Naval Academy Band in 1977.oga|3分1秒]] [[:c:Category:National Emblem|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ヘンリー・フィルモア「トロッパーズ・トライビューナル」】-->
|[[画像:Henry Fillmore at age 16.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |フィルモア <ref name="フィルモア"/>
|<!--曲 名--> style="font-size:8pt;" |<!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|border|40px]]トロッパーズ・トライビューナル <ref>フィルモアが1905年に作曲したサーカス行進曲 "Troopers Tribunal" の曲名は「軍人法廷」のような意味ですが、これは彼が保守的な父親から曲の真の意味を隠すために劇団の名前をもじって軍人のように装ったシャレだといわれています。邦題はそのままカタカナで「トロッパーズ・トライビューナル」と表記されています[https://ml.naxos.jp/opus/270314]。</ref>
|<!--発表年--> style="font-size:9pt;" |1905
|<!-- file -->[[File:U.S. Air Force Band - Henry Fillmore - Troopers Tribunal.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:U.S. Air Force Band - Henry Fillmore - Troopers Tribunal.ogg|2分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【アレクサンダー「エル・キャニーの襲撃」】-->
! -
|<!--作曲者--> style="font-size:9pt;" |アレクサンダー <ref name="ラッセル・サレクサンダー">'''ラッセル・アレクサンダー'''([[w:en:Russell Alexander|Russell Alexander]]: 1877-1915)は、サーカス音楽などで知られるアメリカの作曲家で、エンターテイナーです。</ref>
|<!--曲 名--> style="font-size:9pt;" |<!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|border|40px]]エル・キャニーの襲撃 <ref>'''エル・キャニーの襲撃'''([[w:en:The Storming of El Caney|The Storming of El Caney]])は、ギャロップが特徴的なサーカス音楽の曲です。曲名は、[[w:米西戦争|米西戦争]](1898年)の出来事にちなんで名づけられました。</ref>
|<!--発表年--> style="font-size:9pt;" |1903
|<!-- file -->[[File:"The Storming of El Caney" by Russell Alexander.wav]]
|<!--リンク--> style="font-size:10pt;"|[[:File:"The Storming of El Caney" by Russell Alexander.wav|2分05秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【クローア「ビルボード・マーチ」】-->
! -
|<!--作曲者--> style="font-size:9pt;" |クローア(クロール)<ref name="クローア">[[w:en:John N. Klohr]]</ref>
|<!--曲 名--> style="font-size:9pt;" |<!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|border|40px]]ビルボード・マーチ <ref>[[w:en:The Billboard March]]</ref>
|<!--発表年--> style="font-size:9pt;" |1901
|<!-- file -->[[File:The Billboard - U.S. Air Force Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Billboard - U.S. Air Force Band.ogg|2分17秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【アレクサンダー「ベルフォードの謝肉祭」】-->
! -
|<!--作曲者--> style="font-size:9pt;" |アレクサンダー <ref name="ラッセル・サレクサンダー"/>
|<!--曲 名--> style="font-size:9pt;" |<!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|border|40px]]ベルフォードの謝肉祭 <ref>'''ベルフォードの謝肉祭'''(Belford's Carnival)は、ラッセル・アレクサンダー([[w:en:Russell Alexander|Russell Alexander]])が作曲したサーカス音楽の曲です。</ref>
|<!--発表年--> style="font-size:9pt;" |1897
|<!-- file -->[[File:"Belford's Carnival", performed by the United States Navy Band.wav]]
|<!--リンク--> style="font-size:10pt;"|[[:File:"Belford's Carnival", performed by the United States Navy Band.wav|2分0秒]]
|- <!--【■】-->
| colspan="6" style="height:1em;" |
|- <!--【◆ジョン・フィリップ・スーザの行進曲◆】-->
! colspan="6" style="background-color:#ffccff; font-size:13pt;" |「マーチ王 (The March King)」[[画像:Flag of the United States.svg|border|30px]] [[w:ジョン・フィリップ・スーザ|ジョン・フィリップ・スーザ]]の行進曲<br>([[w:en:List of marches by John Philip Sousa|List of marches by John Philip Sousa]])~ 後期ロマン派<ref>ここからは[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|40px]]'''[[w:ジョン・フィリップ・スーザ|ジョン・フィリップ・スーザ]]([[w:en:John Philip Sousa|John Philip Sousa]])の行進曲です'''。スーザはロマン派に区分されることがあります。</ref> '''➡[[#「マーチ王」スーザの行進曲特集|#スーザ特集]]'''
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「美中の美」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|30px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:14pt; background-color:#ddffff;" |'''[[w:美中の美|美中の美]]''' <ref>スーザ作曲『'''美中の美'''』('''[[w:en:The Fairest of the Fair|The Fairest of the Fair]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1908
|<!-- file -->[[File:The Fairest of the Fair.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Fairest of the Fair.ogg|3分42秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「海を越える握手」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|50px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:16pt; background-color:#ddffff;" |'''[[w:海を越える握手|海を越える握手]]''' <ref>スーザ作曲『'''海を越える握手'''』('''[[w:en:Hands Across the Sea (march)|Hands Across the Sea]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1899
|<!-- file -->[[File:Hands Across the Sea.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Hands Across the Sea.ogg|3分2秒]] [[:c:Category:Hands Across the Sea|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「星条旗よ永遠なれ」】-->
| rowspan="2" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|50px]]
! rowspan="2" |<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
| rowspan="2" <!--曲 名--> style="background-color:#99ffff;" |<span style="font-size:19pt;">'''[[w:星条旗よ永遠なれ|星条旗よ永遠なれ]]'''</span><br> <span style="font-size:9pt;">(アメリカ合衆国の公式マーチ) <ref>スーザ作曲『'''[[w:星条旗よ永遠なれ|星条旗よ永遠なれ]]'''』('''[[w:en:The Stars and Stripes Forever|The Stars and Stripes Forever]]''')は、1987年に[[w:アメリカ合衆国議会|合衆国議会]]によって、'''アメリカ合衆国の公式な国民的行進曲'''(the official National March of the United States of America)に制定されました[https://www.law.cornell.edu/uscode/text/36/304]。</ref></span>
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1896
|<!-- file -->[[File:USMC stars stripes forever.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:USMC stars stripes forever.ogg|3分36秒]] [[:c:Category:Audio files of the Stars and Stripes Forever|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!-- file -->[[File:Sousa's Band - Stars and Stripes Forever.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's Band - Stars and Stripes Forever.ogg|4分32秒]] [[:c:Category:Audio files of the Stars and Stripes Forever|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「エル・カピタン」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|30px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="background-color:#ddffff;" |<span style="font-size:9pt;">[[w:オペレッタ|喜歌劇]]『[[w:エル・カピタン|エル・カピタン]]』より</span><br><span style="font-size:13pt;">'''[[w:エル・カピタン|エル・カピタン]]'''</span><br><small>(エル・キャピタン)</small> <ref>スーザ作曲『'''エル・カピタン'''』([[w:en:El Capitan (operetta)|El Capitan]])</ref>
|<!--発表年--> style="font-size:9pt;" |1895
|<!-- file -->[[File:El Capitan - United States Marine Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:El Capitan - United States Marine Band.ogg|2分26秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「キング・コットン」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|25px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:13pt; background-color:#ddffff;" |'''キング・コットン''' <ref>スーザ作曲『'''キング・コットン'''』([[w:en:King Cotton (march)|King Cotton]])</ref>
|<!--発表年--> style="font-size:9pt;" |1895
|<!-- file -->[[File:King Cotton.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:King Cotton.ogg|2分58秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「マンハッタン・ビーチ」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|25px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:14pt; background-color:#ddffff;" |'''[[w:マンハッタン・ビーチ (行進曲)|マンハッタン・ビーチ]]'''<br> <small>(マンハッタンの海辺)</small> <ref>スーザ作曲『'''マンハッタン・ビーチ'''』([[w:en:Manhattan Beach (march)|Manhattan Beach]])</ref>
|<!--発表年--> style="font-size:9pt;" |1893
|<!-- file -->[[File:Manhattan Beach.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Manhattan Beach.ogg|2分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「自由の鐘」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|30px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:14pt; background-color:#ddffff;" |'''[[w:自由の鐘 (行進曲)|自由の鐘]]''' <ref>スーザ作曲『'''自由の鐘'''』('''[[w:en:The Liberty Bell (march)|The Liberty Bell]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1893
|<!-- file -->[[File:Liberty bell march.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Liberty bell march.ogg|3分22秒]] [[:c:Category:The Liberty Bell (march)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「士官候補生」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|25px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="height:2em; font-size:14pt; background-color:#ddffff;" |'''[[w:士官候補生 (行進曲)|士官候補生]]''' <ref>スーザ作曲『'''士官候補生'''』([[w:en:The High School Cadets|The High School Cadets]])</ref>
|<!--発表年--> style="font-size:9pt;" |1890
|<!-- file -->[[File:Sousa's "The High School Cadets" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The High School Cadets" - United States Marine Band (2017).mp3|2分37秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ワシントン・ポスト」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|50px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="background-color:#bbffff;"|<span style="font-size:17pt;">'''[[w:ワシントン・ポスト (行進曲)|ワシントン・ポスト]]'''</span><ref>スーザ作曲『'''ワシントン・ポスト'''』('''[[w:en:The Washington Post (march)|The Washington Post]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:Washington Post.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Washington Post.ogg|2分40秒]] [[:c:Category:The Washington Post (march)|c::]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「雷神」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|50px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="background-color:#bbffff;" |<span style="font-size:17pt;">'''[[w:雷神 (行進曲)|雷神]]'''</span> <ref>スーザ作曲『'''雷神'''』('''[[w:en:The Thunderer|The Thunderer]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:The Thunderer - U.S. Army Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Thunderer - U.S. Army Band.ogg|2分49秒]] [[:c:Category:The Thunderer|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「忠誠」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|50px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="background-color:#bbffff;" |<span style="font-size:17pt;">'''[[w:忠誠 (行進曲)|忠誠]]'''</span> (忠誠行進曲) <ref>スーザ作曲『'''忠誠'''』('''[[w:en:Semper Fidelis (march)|Semper Fidelis]]''')</ref><br> <span style="font-size:9pt;">([[w:アメリカ海兵隊|米海兵隊]]公式マーチ)</span>
|<!--発表年--> style="font-size:9pt;" |1888
|<!-- file -->[[File:Semper Fidelis.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Semper Fidelis.ogg|2分50秒]] [[:c:Category:Semper Fidelis (march)|c:]]
|- <!--【■】-->
| colspan="6" style="height:2em; text-align:center;" | '''➡[[#「マーチ王」スーザの行進曲特集|#スーザ特集]]'''<br>
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ミーチャム「アメリカン・パトロール」】-->
! -
!<!--作曲者--> style="font-size:13pt;" |[[w:フランク・W・ミーチャム|ミーチャム]]
|<!--曲 名--> style="font-size:14pt; background-color:#ffddff;" |'''[[w:アメリカン・パトロール|アメリカン・パトロール]]'''<small><ref>[[w:en:American Patrol]]</ref></small>
|<!--発表年--> style="font-size:9pt;" |1885
|<!-- file -->[[File:American Patrol Meacham United States Marine Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:American Patrol Meacham United States Marine Band.ogg|4分12秒]] [[:c:Category:American Patrol|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ボイヤー「71連隊行進曲」】-->
! rowspan="2" | -
| rowspan="2" <!--作曲者--> style="font-size:9pt;background-color:#eee;" | ボイヤー <ref>'''ソーントン・バーンズ・ボイヤー'''(Thornton Barnes Boyer: 1856-1936)[https://ml.naxos.jp/composer/114171] はアメリカのバンド監督・編曲者・作曲者です。</ref>
| rowspan="2" <!--曲 名--> style="background-color:#ffddff;" |'''71連隊行進曲''' <ref>[[w:en:Joyce's 71st New York Regiment March]]</ref></span><br><span style="font-size:8pt;">(ジョイスの第71ニューヨーク連隊行進曲)
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1881
|<!-- file -->[[File:Joyce's 71st New York Regiment March · United States Army Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Joyce's 71st New York Regiment March · United States Army Band.ogg|2分38秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;"
|<!-- file -->[[File:Joyce's 71st New York Regiment · Thornton Barnes Boyer · The President's Own U.S. Marine Band (1922).ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Joyce's 71st New York Regiment · Thornton Barnes Boyer · The President's Own U.S. Marine Band (1922).ogg|3分46秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【「海兵隊賛歌」】-->
![[画像:Offenbach-by-Fritz-Luckhart.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:11pt;" |[[w:ジャック・オッフェンバック|オッフェンバック]]<br>原曲作曲/<br>作詞者不詳
|<!--曲 名--> style="font-size:13pt; background-color:#ffddff;" |'''[[w:海兵隊讃歌|海兵隊賛歌]]''' <ref>[[w:en:Marines' Hymn]]</ref> <br> <span style="font-size:9pt;">([[w:アメリカ海兵隊|米海兵隊]]公式マーチ)</span>
|<!--発表年--> style="font-size:9pt;" |1867
|<!-- file -->[[File:The Marines' Hymn - Concert Band - United States Air Force Band.mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Marines' Hymn - Concert Band - United States Air Force Band.mp3|0分40秒]] [[:c:Category:Marines' Hymn|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【クラウディオ・C・グラフラ「ワシントン騎兵隊」】-->
! rowspan="2" | -
! rowspan="2" <!--作曲者--> style="font-size:10pt;" |グラフラ<ref>'''クラウディオ・S・グラフラ'''([[w:en:Claudio S. Grafulla|Claudio S. Grafulla]])は19世紀のアメリカの作曲家です。[[w:南北戦争|南北戦争]]の初期に軍楽を作曲していたとされています。表記はグラフーラ[https://ml.naxos.jp/composer/23013] とも。</ref>
| rowspan="2" <!--曲 名--> style="background-color:#efddef; font-size:12pt;" |'''ワシントン騎兵隊''' <ref>'''ワシントン騎兵隊'''([[w:en:Washington Grays (song)|Washington Grays]])などを参照。</ref>
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1861
|<!-- file -->[[File:U.S. Air Force Band - Claudio S. Grafulla - Washington Grays.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:c:Category:Claudio S. Grafulla|c:]]<br>[[:File:U.S. Air Force Band - Claudio S. Grafulla - Washington Grays.ogg|3分55秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!-- file -->[[File:Washington Grays - U.S. Army Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Washington Grays - U.S. Army Band.ogg|4分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【「リパブリック賛歌」】-->
! rowspan="2" | -
! rowspan="2" <!--作曲者--> style="font-size:9pt;" |[[w:ウィリアム・ステッフ|ステッフ]]作曲/<br>[[w:ジュリア・ウォード・ハウ|ハウ]]作詞
|<!--曲 名--> style="background-color:#ffccff; font-size:16pt;" |'''[[w:リパブリック讃歌|リパブリック賛歌]]''' <ref>[[w:en:Battle Hymn of the Republic]]</ref><br> (曲のみ)
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1856<br>作曲
|<!-- file -->[[File:"The Battle Hymn of the Republic" US Air Force Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:"The Battle Hymn of the Republic" US Air Force Band.ogg|1分55秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!--曲 名--> style="font-size:10pt; background-color:#ffccff;" | (歌唱付き)<br> <small>(〽オタマジャクシは蛙の子)</small>
|<!-- file -->[[File:Battle Hymn of the Republic - U.S. Coast Guard Band.wav]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Battle Hymn of the Republic - U.S. Coast Guard Band.wav|4分08秒]]
|- <!--【■】-->
| colspan="6" style="height:3em;" |
|- <!--【■ヨーロッパの行進曲】-->
| colspan="6" style="height:1em; vertical-align:bottom;text-align:center; background-color:#003399; color:#ffcc00; font-size:20pt;" |[[画像:Flag of Europe.svg|50px]]ヨーロッパの行進曲
|- <!--【近代音楽】-->
! colspan="6" style="background-color:#aeffff;" |[[w:近代音楽|近代音楽]]([[w:en:Modernism (music)|Modernism (music)]]: 1890~1975頃)
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【アルフォード「ボギー大佐」】-->
| rowspan="2" |[[画像:RICKETTS Frederick J.jpg|border|center|40px]]
| rowspan="2" <!--作曲者--> style="background-color:#eee; font-size:11pt;" |[[画像:Flag of the United Kingdom.svg|border|20px]] '''[[w:ケネス・アルフォード|アルフォード]]'''
| rowspan="2" <!--曲 名--> style="background-color:#bbe2f1;" |<span style="font-size:17pt;">'''[[w:ボギー大佐|ボギー大佐]]'''</span> <ref>[[w:en:Colonel Bogey March]]</ref>
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1914
|<!-- file -->[[File:Colonel Bogey.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Colonel Bogey.ogg|3分51秒]] [[:c:Category:Colonel Bogey March|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!-- file -->[[File:ColonelBogey.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:ColonelBogey.ogg|3分37秒]] [[:c:Category:Colonel Bogey March|c:]]
|- <!--【■】-->
| colspan="6" style="height:1em;" |
|- <!--【■ロマン派音楽】-->
! colspan="6" style="background-color:#eeb6ee;" |[[w:ロマン派音楽|ロマン派音楽]]([[w:en:Romantic music|Romantic music]]:1800~1910頃)
|- style="text-align:left;font-family:Times New Roman;font-size:10pt;" <!--【フュルスト「バーデンヴァイラー行進曲」】-->
! -
|<!--作曲者-->[[画像:Flag of Germany (1867–1918).svg|border|20px]]<ref name="ドイツ帝国">[[画像:Flag of Germany (1867–1918).svg|border|20px]] は[[w:ドイツ帝国|ドイツ帝国]](第二帝政時代 1871-1918)の国旗です。</ref> フュルスト <ref>ゲオルク・フュルスト([[w:de:Georg Fürst|Georg Fürst]]: 1870-1936)はドイツの軍楽隊長でした。</ref>
|<!--曲 名-->[[w:バーデンヴァイラー行進曲|バーデンヴァイラー行進曲]]
|<!--発表年--> style="font-size:9pt;" |1914頃
|<!-- file -->[[File:Badonviller - U.S. Marine Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Badonviller - U.S. Marine Band.ogg|4分12秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【フチーク「フローレンス行進曲」】-->
|[[画像:Fucik portait3.jpg|border|center|50px]]
|<!--作曲者--> style="background-color:#eee;" |[[画像:Flag of the Habsburg Monarchy.svg|border|20px]]<ref name="オーストリア=ハンガリー">[[画像:Flag of the Habsburg Monarchy.svg|border|20px]] は[[w:オーストリア=ハンガリー帝国|オーストリア=ハンガリー帝国]](1867-1918)の国旗です。[[w:ユリウス・フチーク (作曲家)|フチーク]]や[[w:ヨーゼフ・フランツ・ワーグナー|J.F.ワーグナー]]はこの国の国民でした。</ref> '''[[w:ユリウス・フチーク (作曲家)|フチーク]]'''
|<!--曲 名--> style="background-color:#ffcdcd;" |フローレンス行進曲<br><small>(フローレンティナー行進曲)</small>
|<!--発表年--> style="font-size:9pt;" |1907
|<!-- file -->[[File:Florentiner March, performed by the United States Navy Band.wav]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Florentiner March, performed by the United States Navy Band.wav|5分53秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【エルガー:威風堂々】-->
|[[画像:Edward Elgar.jpg|border|center|50px]]
|<!--作曲者--> style="background-color:#eee;" |[[画像:Flag of the United Kingdom.svg|border|20px]] '''[[w:エドワード・エルガー|エルガー]]'''
|<!--曲 名--> style="font-size:17pt; background-color:#eeb6ee" |'''[[w:威風堂々 (行進曲)|威風堂々]] 第1番'''
|<!--発表年--> style="font-size:9pt;" |1901-<br>1907頃
|<!-- file -->[[File:Pomp and Circumstance, Op. 39 - No. 1 - United States Army Band.mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Pomp and Circumstance, Op. 39 - No. 1 - United States Army Band.mp3|6分37秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【J.F.ワーグナー:】-->
! style="height:4em;" | -
|<!--作曲者--> style="background-color:#eee; font-size:11pt;"|[[画像:Flag of the Habsburg Monarchy.svg|border|20px]]<ref name="オーストリア=ハンガリー"/> <br>'''[[w:ヨーゼフ・フランツ・ワーグナー|J.F.ワーグナー]]'''<ref>有名な[[w:リヒャルト・ワーグナー|リヒャルト・ワーグナー]]とは、同姓の異人。</ref>
|<!--曲 名--> style="background-color:#ffdddd;" |<span style="font-size:18pt;">'''[[w:双頭の鷲の旗の下に|双頭の鷲の旗の下に]]'''</span>
|<!--発表年--> style="font-size:9pt;" |1902
|<!-- file -->[[File:Under the Double Eagle.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Under the Double Eagle.ogg|2分40秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【フチーク「剣闘士の入場」】-->
|[[画像:Fucik portait3.jpg|border|center|50px]]
|<!--作曲者--> style="background-color:#eee;" |[[画像:Flag of the Habsburg Monarchy.svg|border|20px]]<ref name="オーストリア=ハンガリー"/> '''[[w:ユリウス・フチーク (作曲家)|フチーク]]'''
|<!--曲 名--> style="background-color:#ffcdcd;" |[[w:剣闘士の入場|剣闘士の入場]] <ref>[[w:en:Entrance of the Gladiators]]</ref> <!--▼サーカス-->[[画像:OpenMoji-color 1F921.svg|40px]]
|<!--発表年--> style="font-size:9pt;" |1897
|<!-- file -->[[File:Julius Fučík's "Entrance of the Gladiators", performed by the United States Marine Band.wav]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Julius Fučík's "Entrance of the Gladiators", performed by the United States Marine Band.wav|2分35秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【タイケ「旧友」】-->
| rowspan="2" |[[画像:Carl Albert Hermann Teike.png|border|center|40px]]
| rowspan="2" style="background-color:#eee;" |<!--作曲者-->[[画像:Flag of Germany (1867–1918).svg|border|20px]]<ref name="ドイツ帝国-タイケ">[[画像:Flag of Germany (1867–1918).svg|border|20px]] は[[w:ドイツ帝国|ドイツ帝国]](第二帝政時代 1871-1918)の国旗です。[[w:カール・タイケ|タイケ]]の『[[w:旧友 (行進曲)|旧友]]』はこの時代に作曲されて、ドイツを代表する行進曲になりました。</ref> '''[[w:カール・タイケ|タイケ]]'''
| rowspan="2" <!--曲 名--> style="background-color:#ffbcbc;" |<span style="font-size:21pt;">'''[[w:旧友 (行進曲)|旧友]]'''</span> (旧友行進曲) <span style="font-size:10pt;"><ref>[[w:en:Alte Kameraden]]</ref></span>
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:Viejos-Camaradas.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Viejos-Camaradas.ogg|2分51秒]] [[:c:Category:Alte Kameraden|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!-- file -->[[File:Anker-5387-10815.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Anker-5387-10815.ogg|3分25秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【プランケット「サンブル・エ・ムーズ連隊行進曲」】-->
|[[画像:Robert Planquette by Paul Boyer.png|border|50px]]
|<!--作曲者-->|[[画像:Flag of France (1794–1815, 1830–1974, 2020–present).svg|border|20px]] プランケット <ref name="プランケット">'''ロベール・プランケット'''([[w:fr:Robert Planquette|Robert Planquette]]: 1848-1903)はおもに[[w:オペレッタ|オペレッタ (喜歌劇)]]などを作曲したフランスの作曲家ですが、彼の最も知られた曲は、この愛国的な行進曲『[[w:サンブル・エ・ミューズ連隊行進曲|サンブル・エ・ムーズ連隊行進曲]]』です。</ref>
|<!--曲 名--> style="font-size:10pt;" |[[w:サンブル・エ・ミューズ連隊行進曲|サンブル・エ・ムーズ連隊行進曲]]<ref name="プランケット"/>
|<!--発表年--> style="font-size:9pt;" |1874
|<!-- file -->[[File:Beaufort regiment de sambre et 1909 cd 1001.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Beaufort regiment de sambre et 1909 cd 1001.ogg|3分54秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ヴェルディ「アイーダ 凱旋行進曲」】-->
|[[画像:Verdi-1850s.jpg|border|50px]]
|<!--作曲者--> style="background-color:#eee;" |[[画像:Flag of Italy (1861–1946).svg|border|20px]]<ref name="イタリア王国1861–1946">[[画像:Flag of Italy (1861–1946).svg|border|20px]] は[[w:イタリア王国|イタリア王国]](1861–1946)の国旗です。</ref> '''[[w:ジュゼッペ・ヴェルディ|ヴェルディ]]'''
|<!--曲 名--> style="background-color:#eeb6ee;" |歌劇『'''[[w:アイーダ|アイーダ]]'''』より<br> '''[[w:アイーダ#凱旋行進曲|凱旋行進曲]]'''
|<!--発表年--> style="font-size:9pt;" |1871
|<!-- file -->[[File:Triumphal March from Aida.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Triumphal March from Aida.ogg|5分08秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:10pt;" <!--【ピーフケ「ケーニヒグレッツ行進曲」】-->
|[[画像:Johann Gottfried Piefke.jpg|border|center|50px]]
|<!--作曲者-->[[画像:Flag of the Kingdom of Prussia (1803-1892).svg|border|20px]]<ref name="ピーフケ-プロイセン王国">[[画像:Flag of the Kingdom of Prussia (1803-1892).svg|border|20px]] [[w:プロイセン王国|プロイセン王国]](1803-1892)の国旗。[[w:ヨハン・ゴットフリート・ピーフケ|ピーフケ]]の『[[w:ケーニヒグレッツ行進曲|ケーニヒグレッツ行進曲]]』は[[w:普墺戦争|普墺戦争]]の[[w:ケーニヒグレーツの戦い|ケーニヒグレーツの戦い]](1966年)でプロイセンが[[w:オーストリア帝国|オーストリア帝国]]を破ったことを記念して作曲されました。</ref> [[w:ヨハン・ゴットフリート・ピーフケ|ピーフケ]]
|<!--曲 名-->[[w:ケーニヒグレッツ行進曲|ケーニヒグレッツ行進曲]]
|<!--発表年--> style="font-size:9pt;" |1866
|<!-- file -->[[File:Der Königgrätzer-Marsch.wav]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Der Königgrätzer-Marsch.wav|2分27秒]] [[:c:Category:Königgrätzer Marsch|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ラデツキー行進曲】-->
|[[画像:Johan Strauss padre.jpg|border|center|50px]]
|<!--作曲者--> style="background-color:#eee;" |[[画像:Flag of the Habsburg Monarchy.svg|border|20px]]<ref name="オーストリア帝国1804-1867">[[画像:Flag of the Habsburg Monarchy.svg|border|20px]] は[[w:オーストリア帝国|オーストリア帝国]](1804-1867)の国旗です。</ref> <br>'''[[w:ヨハン・シュトラウス1世|J.シュトラウス<br>1世(父)]]'''
|<!--曲 名--> style="background-color:#eeb6ee;" |<span style="font-size:16pt;">'''[[w:ラデツキー行進曲|ラデツキー行進曲]]'''</span>
|<!--発表年--> style="font-size:9pt;" |1848
|<!-- file -->[[File:Radetzky March.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Radetzky March.ogg|2分34秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【シューベルト「軍隊行進曲 第1番」】-->
|[[画像:Franz Schubert by Wilhelm August Rieder 1875 larger version (head cropped).png|border|center|50px]]
|<!--作曲者--> style="background-color:#eee; font-size:12pt;" |[[画像:Flag of the Habsburg Monarchy.svg|border|20px]]<ref name="オーストリア帝国1804-1867"/> '''[[w:フランツ・シューベルト|シューベルト]]'''
|<!--曲 名-->『'''[[w:軍隊行進曲 (シューベルト)|三つの軍隊行進曲]]'''』<br> より '''第1番'''
|<!--発表年--> style="font-size:9pt;" |1818
|<!-- file -->[[File:F. Schubert - Marche militaire op. 51 no. 1 D 733.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:F. Schubert - Marche militaire op. 51 no. 1 D 733.ogg|4分12秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ベートーヴェン「ヨルク軍団行進曲」】-->
|[[画像:Beethoven.jpg|border|center|50px]]
|<!--作曲者--> style="background-color:#eee;" |[[画像:Flag of the Habsburg Monarchy.svg|border|20px]]<ref name="オーストリア帝国1804-1867"/> <br>'''[[w:ルートヴィヒ・ヴァン・ベートーヴェン|ベートーヴェン]]'''
|<!--曲 名-->ヨルク軍団行進曲<ref>[[w:en:Yorckscher Marsch]] などを参照してください。</ref>
|<!--発表年--> style="font-size:9pt;" |1808-09
|<!-- file -->[[File:Yorckscher Marsch - U.S. Marine Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Yorckscher Marsch - U.S. Marine Band.ogg|2分32秒]]
|- <!--【■】-->
| colspan="6" style="height:1em;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【クレス「ポリ連隊行進曲」】-->
! -
|<!--作曲者--> style="background-color:#eee; font-size:9pt;" |クレス <ref>作曲者不明などともいわれていますが、ドイツの作曲家 '''クリスチャン・フリードリヒ・クレス'''([[w:fi:C. F. Kress|fi:Christian Friedrich Kress]] : 1767-1812)が作曲者、または編曲者などともいわれます。[https://ml.naxos.jp/composer/61588]</ref>
|<!--曲 名--> style="font-size:11pt;" |[[画像:Military flag of Finland.svg|border|20px]]<ref name="フィンランド軍旗">[[画像:Military flag of Finland.svg|border|20px]] は[[w:フィンランド|フィンランド]]の軍旗。作曲者クレスはドイツ出身ですが、この曲はフィンランドの軍歌・行進曲となっています。</ref> ポリ連隊行進曲 <ref>ポリ連隊行進曲([[w:en:Björneborgarnas marsch]])</ref>
|<!--発表年--> style="font-size:9pt;" |18世紀
|<!-- file -->[[File:Björneborgarnas marsch.MID]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Björneborgarnas marsch.MID|1分51秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【「英国擲弾兵」】-->
! -
!<!--作曲者--> style="font-size:9pt;" |(不詳)
|<!--曲 名--><span style="font-size:14pt;">'''[[w:ブリティッシュ・グレナディアーズ|英国擲弾兵]]'''</span><br><span style="font-size:9pt;">(ブリティッシュ・グレナディアーズ)</span>
|<!--発表年--> style="font-size:9pt;" |17世紀
|<!-- file -->[[File:British Grenadiers.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:British Grenadiers.ogg|1分45秒]]
|- <!--【■】-->
| colspan="6" style="height:2em;" |
|- <!--【冠婚葬祭・儀式の行進曲】-->
! colspan="6" |祝祭や儀式の「行進曲」
|- style="text-align:left;font-family:Times New Roman;font-size:9pt;" <!--【メンデルスゾーン「結婚行進曲」】-->
|[[画像:Felix Mendelssohn Bartholdy.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:10pt;" |[[w:フェリックス・メンデルスゾーン|メンデルスゾーン]]
|<!--曲 名-->[[w:付随音楽|劇付随音楽]]<span style="font-size:11pt;">『[[w:夏の夜の夢 (メンデルスゾーン)|夏の夜の夢]]』</span>より<br> <span style="font-size:14pt;">「'''[[w:結婚行進曲 (メンデルスゾーン)|結婚行進曲]]'''」</span>
|<!--発表年--> style="font-size:9pt;" |1842
|<!-- file -->[[File:A Midsummer Night's Dream Op. 61 Wedding March (Mendelssohn) European Archive.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:A Midsummer Night's Dream Op. 61 Wedding March (Mendelssohn) European Archive.ogg|4分54秒]] [[:c:Category:Wedding march|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:11pt;" <!--【ワーグナー「結婚行進曲」】-->
| rowspan="2" |[[画像:RichardWagner.jpg|border|center|50px]]
! rowspan="2" |<!--作曲者-->[[w:リヒャルト・ワーグナー|ワーグナー]]
| rowspan="2" |<!--曲 名-->歌劇『[[w:ローエングリン|ローエングリン]]』より<br> 「[[w:婚礼の合唱|婚礼の合唱]]」<br>(<span style="font-size:13pt;">'''「[[w:結婚行進曲|結婚行進曲]]」'''</span>)
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1850
|<!-- file -->[[File:Wagner Bridal Chorus.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wagner Bridal Chorus.ogg|2分19秒]]
|-
|<!-- file -->[[File:Wedding March Richard Wagner Piano Edition Player Piano-Boy Jason M. C., Han.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:Wedding March Richard Wagner Piano Edition Player Piano-Boy Jason M. C., Han.ogg|2分20秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【葬送行進曲】-->
|[[画像:Chopin, by Wodzinska.JPG|border|center|50px]]
!<!--作曲者-->[[w:フレデリック・ショパン|ショパン]]
|<!--曲 名-->『[[w:ピアノソナタ第2番 (ショパン)|ピアノソナタ第2番]]』<br> 第3楽章「'''葬送行進曲'''」
|<!--発表年--> style="font-size:9pt;" |1837
|<!-- file -->[[File:Frederic Chopin Piano Sonata No.2 in B flat minor Op35 - III Marche Funebre.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Frederic Chopin Piano Sonata No.2 in B flat minor Op35 - III Marche Funebre.ogg|9分49秒]]
|- <!--【番外】-->
! colspan="6" |(番外)
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スッペ「軽騎兵」序曲】-->
|[[画像:Franz von Suppé by Gabriel Decker 1847.jpg|border|center|50px]]
!<!--作曲者-->[[w:フランツ・フォン・スッペ|スッペ]]
|<!--曲 名-->喜歌劇『軽騎兵』<ref>[[w:en:Leichte Kavallerie]]</ref> 序曲
|<!--発表年--> style="font-size:9pt;" |1866
|<!-- file -->[[File:Overture to Light Cavalry - U.S. Marine Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Overture to Light Cavalry - U.S. Marine Band.ogg|6分59秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|[[画像:Charles Leroux Upper than knee.jpg|border|center|50px]]
!<!--作曲者-->[[w:シャルル・ルルー|ルルー]]
|<!--曲 名-->『陸軍分列行進曲』
|<!--発表年--> style="font-size:9pt;" |1886
|<!-- file -->[[File:Kanpeishiki Bunretsukōshinkyoku Fusōka.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Kanpeishiki Bunretsukōshinkyoku Fusōka.ogg|3分02秒]]
|}
===行進曲の動画===
{| class="wikitable"
|- style="text-align:left;font-family:Times New Roman;font-size:15pt;"
!作曲者
! style="width:12em;" |曲 名
! style="font-size:10pt;"|動画ファイル
! style="font-size:10pt;width:5em;"|再生時間・<br>保存形式・<br>伝送速度
! style="width:15em;"|コメント
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【ピーフケ「プロイセンの栄光」】-->
!<!--作曲者--> style="font-size:11pt;"|[[w:ヨハン・ゴットフリート・ピーフケ|ピーフケ]]
|<!--曲 名-->[[w:プロイセンの栄光|プロイセンの栄光]] <ref>[[w:de:Preußens Gloria]], [[w:en:Preußens Gloria]]</ref>
|<!-- file -->[[File:Video Heeresmusikkorps Preußentag Festung Ehrenbreitstein Koblenz 2011.webm|border|100px]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Video Heeresmusikkorps Preußentag Festung Ehrenbreitstein Koblenz 2011.webm|1分57秒<br>WebM<br>2.22 Mbps]]
|<!--コメント--> style="font-size:9pt;"|この曲は[[w:プロイセン王国|プロイセン王国]]が[[w:普仏戦争|普仏戦争]]に勝利した1871年に作曲され、凱旋の戦勝パレードで初演されました。動画は2011年に独[[w:コブレンツ|コブレンツ]]の要塞で陸軍音楽隊によって演奏されたものです。
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆】-->
!<!--作曲者--> style="font-size:11pt;"| <!--[[w:|]]
|<!--曲 名--> <!--[[w:|]]-->
|<!-- file --> <!--[[|border|100px]]-->
|<!--リンク--> style="font-size:10pt;"| <!--[[:|分秒<br><br>]]-->
|<!--コメント--> style="font-size:9pt;"|
|}
<!-- これより予備タグ -->
<div style="color:#fefefe">
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-size:10pt;"></span>
|- <!--【】-->
! colspan="6" |
</div>
===<!--■--><span style="font-size:18pt; background-color:#bbffff;">「マーチ王」スーザの行進曲特集</span><!--■-->===
{| class="wikitable"
|- <!--【◆ジョン・フィリップ・スーザの行進曲◆】-->
! rowspan="2" colspan="2" style="background-color:#ffccff; font-size:13pt;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|150px]]
! colspan="3" style="background-color:#ffccff; font-size:13pt;" |「マーチ王 (The March King)」<br>[[画像:Flag of the United States.svg|border|30px]] [[w:ジョン・フィリップ・スーザ|ジョン・フィリップ・スーザ]]の行進曲<br>([[w:en:List of marches by John Philip Sousa|List of marches by John Philip Sousa]])~ 後期ロマン派<ref group="Sousa">ここからは[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|50px]]'''[[w:ジョン・フィリップ・スーザ|ジョン・フィリップ・スーザ]]([[w:en:John Philip Sousa|John Philip Sousa]])の行進曲です'''。スーザはロマン派に区分されることがあります。</ref>
! rowspan="2" colspan="2" style="background-color:#ffccff; font-size:13pt;" |[[画像:JohnPhilipSousa-Chickering.LOC.jpg|150px]]
|- style="text-align:left;font-family:Times New Roman;font-size:15pt;"
| colspan="3" style="background-color:#ffffff; font-size:12pt;" | '''[[w:ジョン・フィリップ・スーザ|ジョン・フィリップ・スーザ]]'''([[w:en:John Philip Sousa|John Philip Sousa]]: 1854-1932)は、アメリカ合衆国の作曲家です。[[w:オペレッタ|喜歌劇]]・[[w:管弦楽曲|管弦楽曲]]・[[w:舞曲|舞曲]]や[[w:合唱|合唱曲]]・[[w:歌曲|歌曲]]など多くの楽曲を手掛けていますが、特に彼の名を不朽のものとしているのは '''[[w:行進曲|行進曲(マーチ)]]''' です。130曲を超える行進曲を作曲しているため「'''マーチの王'''」(The March King) と呼ばれています。『'''[[w:星条旗よ永遠なれ|星条旗よ永遠なれ]]'''』『'''[[w:ワシントン・ポスト (行進曲)|ワシントン・ポスト]]'''』『'''[[w:雷神 (行進曲)|雷神]]'''』『'''[[w:忠誠 (行進曲)|忠誠]]'''』などが代表作として知られています。
|- style="text-align:left;font-family:Times New Roman;font-size:15pt;"
|
! style="width:5em; font-size:10pt;"" |作曲者
! style="width:23em; font-size:10pt;"" |曲 名
! style="width:2em; font-size:9pt;" |発表年
! style="width:12em;" |音声ファイル
! style="width:2em; font-size:10pt;" |再生時間
! style="width:2em; font-size:10pt;" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ウェールズ銃兵連隊」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |ウェールズ銃兵連隊<br><small>(ウェールズ小銃連隊)</small> <ref group="S">スーザ作曲『'''ウェールズ銃兵連隊''' (ウェールズ小銃連隊)』([[w:en:The Royal Welch Fusiliers (march)|The Royal Welch Fusiliers]])</ref>
|<!--発表年--> style="font-size:9pt;" |1930
|<!-- file -->[[File:The Royal Welch Fusiliers.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Royal Welch Fusiliers.ogg|2分40秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ミネソタ・マーチ」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |ミネソタ・マーチ <ref group="S">スーザ作曲『'''ミネソタ・マーチ'''』([[w:en:The Minnesota March|The Minnesota March]])</ref>
|<!--発表年--> style="font-size:9pt;" |1927
|<!-- file -->[[File:The Minnesota March by John Philip Sousa (1927) performed by the U.S. Marine Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Minnesota March by John Philip Sousa (1927) performed by the U.S. Marine Band.ogg|3分42秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「古い甲鉄艦」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |古い甲鉄艦 <ref group="S">スーザ作曲『古い甲鉄艦』(Old Ironsides)</ref>
|<!--発表年--> style="font-size:9pt;" |1926
|<!-- file -->[[File:Sousa's "Old Ironsides" - United States Marine Band (2020).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Old Ironsides" - United States Marine Band (2020).mp3|2分33秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「国技」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |国技 <ref group="S">スーザ作曲『国技』(The National Game)</ref>
|<!--発表年--> style="font-size:9pt;" |1925
|<!-- file -->[[File:Sousa's "The National Game" - United States Marine Band (2020).ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The National Game" - United States Marine Band (2020).ogg|2分54秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「マーケット大学行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |マーケット大学行進曲 <ref group="S">スーザ作曲『マーケット大学行進曲』(Marquette University March)</ref>
|<!--発表年--> style="font-size:9pt;" |1924
|<!-- file -->[[File:Sousa's "Marquette University March" - United States Marine Band (2020).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Marquette University March" - United States Marine Band (2020).mp3|2分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「黒馬騎兵中隊」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |黒馬騎兵中隊 <ref group="S" name="黒馬騎兵中隊">スーザ作曲『'''黒馬騎兵中隊'''』([[w:en:The Black Horse Troop|The Black Horse Troop]])。表記は[https://ml.naxos.jp/composer/24864]によりました。この曲は1924年に作曲され、1925年に発表されました。</ref>
|<!--発表年--> style="font-size:9pt;" |1924/<br>1925<ref group="S" name="黒馬騎兵中隊"/>
|<!-- file -->[[File:14-The-Black-Horse-Troop.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:14-The-Black-Horse-Troop.ogg|3分34秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「由緒ある名誉砲兵中隊」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |由緒ある名誉砲兵中隊<small>(蛍の光行進曲)</small> <ref group="S">スーザ作曲『由緒ある名誉砲兵中隊』(Ancient and Honorable Artillery Company)。日本の『[[w:蛍の光|蛍の光]]』の原曲『[[w:オールド・ラング・サイン|オールド・ラング・サイン]]』のメロディを取り込んでいるため「蛍の光行進曲」とも呼ばれることがあります。</ref>
|<!--発表年--> style="font-size:9pt;" |1924
|<!-- file -->[[File:Sousa's "Ancient and Honorable Artillery Company" - United States Marine Band (2020).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Ancient and Honorable Artillery Company" - United States Marine Band (2020).mp3|2分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「聖なる殿堂の貴族たち」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |聖なる殿堂の貴族たち <ref group="S">スーザ作曲『'''聖なる殿堂の貴族たち'''』([[w:en:Nobles of the Mystic Shrine (march)|Nobles of the Mystic Shrine]])。表記は[https://ml.naxos.jp/opus/153955]によりました。</ref>
|<!--発表年--> style="font-size:9pt;" |1923
|<!-- file -->[[File:Sousa's "Nobles of the Mystic Shrine" - United States Marine Band (2020).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Nobles of the Mystic Shrine" - United States Marine Band (2020).mp3|3分17秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「力と栄光」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |力と栄光 <ref group="S">スーザ作曲『力と栄光』(March of the Mitten March - Power and Glory)</ref>
|<!--発表年--> style="font-size:9pt;" |1923
|<!-- file -->[[File:Sousa's "March of the Mitten Men" - United States Marine Band (2020).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "March of the Mitten Men" - United States Marine Band (2020).mp3|3分10秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「不屈の大隊」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |不屈の大隊 <ref group="S">スーザ作曲『'''不屈の大隊'''』([[w:en:The Dauntless Battalion|The Dauntless Battalion]])。表記は[https://ml.naxos.jp/opus/154970]によりました。</ref>
|<!--発表年--> style="font-size:9pt;" |1922
|<!-- file -->[[File:Sousa's "The Dauntless Battalion" - United States Marine Band (2020).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Dauntless Battalion" - United States Marine Band (2020).mp3|2分50秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「勇敢なる第七連隊」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |勇敢なる第七連隊 <ref group="S">スーザ作曲『'''勇敢なる第七連隊'''』([[w:en:The Gallant Seventh|The Gallant Seventh]])</ref>
|<!--発表年--> style="font-size:9pt;" |1922
|<!-- file -->[[File:The Gallant Seventh.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Gallant Seventh.ogg|3分22秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「団結の足並み揃えて」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |団結の足並み揃えて <ref group="S">スーザ作曲『団結の足並み揃えて』(Keeping in Step With the Union)</ref>
|<!--発表年--> style="font-size:9pt;" |1921
|<!-- file -->[[File:Sousa's "Keeping Step with the Union" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Keeping Step with the Union" - United States Marine Band (2019).mp3|3分09秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「海軍人名録」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |海軍人名録 <ref group="S">スーザ作曲『海軍人名録』(Who's Who In Navy Blue)</ref>
|<!--発表年--> style="font-size:9pt;" |1920
|<!-- file -->[[File:Sousa's "Who's Who in Navy Blue" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Who's Who in Navy Blue" - United States Marine Band (2019).mp3|2分49秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「キャンパスにて」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |キャンパスにて <ref group="S">スーザ作曲『キャンパスにて』(On the Campus)</ref>
|<!--発表年--> style="font-size:9pt;" |1920
|<!-- file -->[[File:Sousa's "On the Campus" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "On the Campus" - United States Marine Band (2019).mp3|2分57秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「在郷軍人会の戦友たち」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |在郷軍人会の戦友たち <ref group="S">スーザ作曲『在郷軍人会の戦友たち』(Comrades of the Legion)</ref>
|<!--発表年--> style="font-size:9pt;" |1920
|<!-- file -->[[File:Sousa's "Comrades of the Legion" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Comrades of the Legion" - United States Marine Band (2019).mp3|2分41秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「金の星」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |金の星 <ref group="S">スーザ作曲『金の星』(The Golden Star)</ref>
|<!--発表年--> style="font-size:9pt;" |1919
|<!-- file -->[[File:Sousa's "The Golden Star" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Golden Star" - United States Marine Band (2019).mp3|4分26秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「結婚行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |結婚行進曲 <ref group="S">スーザ作曲『結婚行進曲』(Wedding March)</ref>
|<!--発表年--> style="font-size:9pt;" |1918
|<!-- file -->[[File:Sousa's "Wedding March" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Wedding March" - United States Marine Band (2019).mp3|6分54秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「義勇兵」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |義勇兵 <ref group="S">スーザ作曲『義勇兵』(The Volunteers)</ref>
|<!--発表年--> style="font-size:9pt;" |1918
|<!-- file -->[[File:Sousa's "The Volunteers" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Volunteers" - United States Marine Band (2019).mp3|3分17秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「米陸軍救急隊行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |米陸軍救急隊行進曲 <ref group="S">スーザ作曲『米陸軍救急隊行進曲』(USAAC March)。USAAC とは、[[w:南北戦争|南北戦争]]当時の米国陸軍救急隊(the United States Army Ambulance Corps)のこと。</ref>
|<!--発表年--> style="font-size:9pt;" |1918
|<!-- file -->[[File:Sousa's "USAAC March" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "USAAC March" - United States Marine Band (2019).mp3|3分06秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「勇士は前線へ」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |勇士は前線へ <ref group="S">スーザ作曲『勇士は前線へ』(Solid Men to the Front)</ref>
|<!--発表年--> style="font-size:9pt;" |1918
|<!-- file -->[[File:Sousa's "Solid Men to the Front" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Solid Men to the Front" - United States Marine Band (2019).mp3|3分56秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「剣と拍車」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |剣と拍車 <ref group="S">スーザ作曲『剣と拍車』(Sabre and Spurs, March of the American Cavalry)</ref>
|<!--発表年--> style="font-size:9pt;" |1918
|<!-- file -->[[File:Sousa's "Sabre and Spurs" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Sabre and Spurs" - United States Marine Band (2019).mp3|3分11秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「自由の旗」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |自由の旗 <ref group="S">スーザ作曲『自由の旗』(Flags of Freedom)。<br>この曲は、[[w:第一次世界大戦|第一次大戦]]中の[[w:戦時国債|戦時国債]]「第四回自由公債」運動の議長ジョゼフ・ギャノンの要請で作曲されました。そのため、この曲には、連合国であるフランス国歌『[[w:ラ・マルセイエーズ|ラ・マルセイエーズ]]』、イギリス国歌『[[w:国王陛下万歳|神よ国王を守り給え]]』、アメリカの愛国歌『[[w:コロンビア・大洋の宝|コロンビア・大洋の宝]]』などのメロディが織り込まれています。</ref>
|<!--発表年--> style="font-size:9pt;" |1918
|<!-- file -->[[File:Sousa's "Flags of Freedom" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Flags of Freedom" - United States Marine Band (2019).mp3|2分17秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「水夫の行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |水夫の行進曲 <ref group="S">スーザ作曲『水夫の行進曲』(The Chantyman's March)</ref>
|<!--発表年--> style="font-size:9pt;" |1918
|<!-- file -->[[File:Sousa's "The Chantyman's March" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Chantyman's March" - United States Marine Band (2019).mp3|2分46秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「銃弾と銃剣」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |銃弾と銃剣 <ref group="S">スーザ作曲『銃弾と銃剣』(Bullets and Bayonets)</ref>
|<!--発表年--> style="font-size:9pt;" |1918
|<!-- file -->[[File:Sousa's "Bullets and Bayonets" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Bullets and Bayonets" - United States Marine Band (2019).mp3|3分37秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「錨と星」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |錨と星 <ref group="S">スーザ作曲『'''錨と星'''』([[w:en:Anchor and Star|Anchor and Star]])</ref>
|<!--発表年--> style="font-size:9pt;" |1918
|<!-- file -->[[File:Sousa's "Anchor and Star" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Anchor and Star" - United States Marine Band (2019).mp3|3分35秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ウィスコンシン大学の将来よ永遠なれ」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ウィスコンシン大学の将来よ永遠なれ <ref group="S">スーザ作曲『ウィスコンシン大学の将来よ永遠なれ』(Wisconsin Forward Forever)</ref>
|<!--発表年--> style="font-size:9pt;" |1917
|<!-- file -->[[File:Sousa's "Wisconsin Forward Forever" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Wisconsin Forward Forever" - United States Marine Band (2019).mp3|3分22秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「白いばら」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |白いばら <ref group="S">スーザ作曲『白いばら』(The White Rose)</ref>
|<!--発表年--> style="font-size:9pt;" |1917
|<!-- file -->[[File:Sousa's "The White Rose" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The White Rose" - United States Marine Band (2019).mp3|3分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「アメリカ野砲隊」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |[[w:アメリカ野砲隊|アメリカ野砲隊]] <ref group="S">スーザ作曲『'''アメリカ野砲隊'''』([[w:en:U.S. Field Artillery March|U.S. Field Artillery March]])</ref>
|<!--発表年--> style="font-size:9pt;" |1917
|<!-- file -->[[File:The United States Field Artillery - U.S. Marine Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The United States Field Artillery - U.S. Marine Band.ogg|2分14秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「海軍予備役」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |海軍予備役 <ref group="S">スーザ作曲『海軍予備役』(The Naval Reserve)</ref>
|<!--発表年--> style="font-size:9pt;" |1917
|<!-- file -->[[File:Sousa's "The Naval Reserve" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Naval Reserve" - United States Marine Band (2019).mp3|2分17秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「自由公債」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |自由公債 (行進曲) <ref group="S">スーザ作曲『'''自由公債 行進曲'''』([[w:en:Liberty Loan March|Liberty Loan March]])。この曲は題名通り、[[w:第一次世界大戦|第一次大戦]]中の[[w:戦時国債|戦時国債]]「自由公債」運動のために作曲されました。</ref>
|<!--発表年--> style="font-size:9pt;" |1917
|<!-- file -->[[File:Sousa's "Liberty Loan" - United States Marine Band (2019).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Liberty Loan" - United States Marine Band (2019).mp3|2分40秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「アメリカのボーイスカウト」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |アメリカのボーイスカウト <ref group="S">スーザ作曲『'''アメリカのボーイスカウト'''』([[w:en:Boy Scouts of America (march)|Boy Scouts of America]])。題名通り「[[w:ボーイスカウトアメリカ連盟|ボーイスカウトアメリカ連盟]]」([[w:en:Boy Scouts of America|Boy Scouts of America]])に捧げられた曲です。</ref>
|<!--発表年--> style="font-size:9pt;" |1916
|<!-- file -->[[File:Sousa's "The Boy Scouts of America" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Boy Scouts of America" - United States Marine Band (2018).mp3|3分24秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「アメリカ・ファースト」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |アメリカ・ファースト<small>(アメリカ第一)</small> <ref group="S">スーザ作曲『アメリカ・ファースト』(America First)</ref>
|<!--発表年--> style="font-size:9pt;" |1916
|<!-- file -->[[File:Sousa's "America First" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "America First" - United States Marine Band (2018).mp3|2分17秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「パナマ開拓者」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |パナマ開拓者 <ref group="S">スーザ作曲『パナマ開拓者』(The Pathfinder of Panama)</ref>
|<!--発表年--> style="font-size:9pt;" |1915
|<!-- file -->[[File:Sousa's "The Pathfinder of Panama" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Pathfinder of Panama" - United States Marine Band (2018).mp3|3分35秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ニューヨーク・ヒポドローム」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ニューヨーク・ヒポドローム <ref group="S">スーザ作曲『ニューヨーク・ヒポドローム』(The New York Hippodrome)</ref>
|<!--発表年--> style="font-size:9pt;" |1915
|<!-- file -->[[File:Sousa's "The New York Hippodrome" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The New York Hippodrome" - United States Marine Band (2018).mp3|3分51秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「子羊の行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |子羊の行進曲 <ref group="S">スーザ作曲『子羊の行進曲』(The Lambs' March)</ref>
|<!--発表年--> style="font-size:9pt;" |1914
|<!-- file -->[[File:Sousa's "Lambs' March" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Lambs' March" - United States Marine Band (2018).mp3|1分59秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「コロンビアの誇り」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |コロンビアの誇り <ref group="S">スーザ作曲『'''コロンビアの誇り'''』([[w:en:Columbia's Pride|Columbia's Pride]])。ここでいう「[[w:コロンビア (曖昧さ回避)|コロンビア]]」とは、南米の国[[w:コロンビア|コロンビア]]のことではなく、米国の美称であり擬人化としての [[w:en:Columbia (personification)|Columbia]] のことです。</ref>
|<!--発表年--> style="font-size:9pt;" |1914
|<!-- file -->[[File:Sousa's "Columbia's Pride" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Columbia's Pride" - United States Marine Band (2018).mp3|1分09秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「メイン州からオレゴン州へ」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |メイン州からオレゴン州へ <ref group="S">スーザ作曲『メイン州からオレゴン州へ』(From Maine to Oregon)</ref>
|<!--発表年--> style="font-size:9pt;" |1913
|<!-- file -->[[File:Sousa's "From Maine to Oregon" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "From Maine to Oregon" - United States Marine Band (2018).mp3|2分00秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「イギリス連邦」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |イギリス連邦 <ref group="S">スーザ作曲『イギリス連邦』(The Federal)</ref>
|<!--発表年--> style="font-size:9pt;" |1910
|<!-- file -->[[File:Sousa's "The Federal" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Federal" - United States Marine Band (2018).mp3|2分32秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ヤンキー海軍の栄光」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ヤンキー海軍の栄光<small>(米海軍の栄光)</small> <ref group="S">スーザ作曲『ヤンキー海軍の栄光』(The Glory of the Yankee Navy)</ref>
|<!--発表年--> style="font-size:9pt;" |1909
|<!-- file -->[[File:Sousa's "The Glory of the Yankee Navy" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Glory of the Yankee Navy" - United States Marine Band (2018).mp3|3分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆スーザ「美中の美」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|30px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:15pt; background-color:#ddffff;" |'''[[w:美中の美|美中の美]]''' <ref group="S">スーザ作曲『'''[[w:美中の美|美中の美]]'''』('''[[w:en:The Fairest of the Fair|The Fairest of the Fair]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1908
|<!-- file -->[[File:The Fairest of the Fair.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Fairest of the Fair.ogg|3分42秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ポウハタン酋長の娘」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ポウハタン酋長の娘 <ref group="S">スーザ作曲『ポウハタン酋長の娘』(Powhatan's Daughter)。イギリスのアメリカ入植300年を記念した1907年の[[w:ジェームズタウン (バージニア州)|ジェームズタウン]]博覧会のために作曲されたもので、アメリカ先住民[[w:ポウハタン|ポウハタン族]]の[[w:ポウハタン酋長|酋長]]であったワフンスナコックの娘[[w:ポカホンタス|ポカホンタス]]に捧げられました。</ref>
|<!--発表年--> style="font-size:9pt;" |1907
|<!-- file -->[[File:Sousa's "Powhatan's Daughter" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Powhatan's Daughter" - United States Marine Band (2018).mp3|3分13秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「フリー・ランス」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |フリー・ランス <ref group="S">スーザ作曲『フリー・ランス』(The Free Lance)</ref>
|<!--発表年--> style="font-size:9pt;" |1906
|<!-- file -->[[File:Sousa's "The Free Lance" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Free Lance" - United States Marine Band (2018).mp3|4分11秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「外交官」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |外交官 <ref group="S">スーザ作曲『外交官』(The Diplomat)</ref>
|<!--発表年--> style="font-size:9pt;" |1904
|<!-- file -->[[File:Sousa's "The Diplomat" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Diplomat" - United States Marine Band (2018).mp3|3分22秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ジャック・ター」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ジャック・ター <ref group="S">スーザ作曲『ジャック・ター』(Jack Tar)</ref>
|<!--発表年--> style="font-size:9pt;" |1903
|<!-- file -->[[File:Sousa's "Jack Tar" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Jack Tar" - United States Marine Band (2018).mp3|2分28秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「エドワード王行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |エドワード王行進曲 <ref group="S">スーザ作曲『'''エドワード王行進曲'''』([[w:en:Imperial Edward|Imperial Edward]])</ref>
|<!--発表年--> style="font-size:9pt;" |1902
|<!-- file -->[[File:Sousa's "Imperial Edward" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Imperial Edward" - United States Marine Band (2018).mp3|2分33秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ピッツバーグの誇り」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ピッツバーグの誇り <ref group="S">スーザ作曲『ピッツバーグの誇り』(The Pride of Pittsburgh)</ref>
|<!--発表年--> style="font-size:9pt;" |1901
|<!-- file -->[[File:Sousa's "The Pride of Pittsburgh" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Pride of Pittsburgh" - United States Marine Band (2018).mp3|4分41秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「無敵の鷲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |無敵の鷲 <ref group="S">スーザ作曲『'''無敵の鷲'''』([[w:en:The Invincible Eagle|The Invincible Eagle]])</ref>
|<!--発表年--> style="font-size:9pt;" |1901
|<!-- file -->[[File:The Invincible Eagle - U.S. Army Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Invincible Eagle - U.S. Army Band.ogg|3分31秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「自由の精神に万歳」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |自由の精神に万歳 <ref group="S">スーザ作曲『自由の精神に万歳』(Hail to the Spirit of Liberty)</ref>
|<!--発表年--> style="font-size:9pt;" |1900
|<!-- file -->[[File:Sousa's "Hail to the Spirit of Liberty" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Hail to the Spirit of Liberty" - United States Marine Band (2018).mp3|3分19秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「銃後の男」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |銃後の男 <ref group="S">スーザ作曲『銃後の男』(The Man Behind the Gun)</ref>
|<!--発表年--> style="font-size:9pt;" |1900
|<!-- file -->[[File:Sousa's "The Man Behind the Gun" - United States Marine Band (2018).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Man Behind the Gun" - United States Marine Band (2018).mp3|2分20秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆スーザ「海を越える握手」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|60px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:16pt; background-color:#ddffff;" |'''[[w:海を越える握手|海を越える握手]]''' <ref group="S">スーザ作曲『'''[[w:海を越える握手|海を越える握手]]'''』('''[[w:en:Hands Across the Sea (march)|Hands Across the Sea]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1899
|<!-- file -->[[File:Hands Across the Sea.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Hands Across the Sea.ogg|3分2秒]] [[:c:Category:Hands Across the Sea|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「いかさま師」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |いかさま師 <ref group="S">スーザ作曲『いかさま師』(The Charlatan)</ref>
|<!--発表年--> style="font-size:9pt;" |1898
|<!-- file -->[[File:Sousa's "The Charlatan" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Charlatan" - United States Marine Band (2017).mp3|2分55秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「選ばれた花嫁(許嫁)行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |[[w:オペレッタ|喜歌劇]]『選ばれた花嫁(許嫁)』より 行進曲 <ref group="S">スーザ作曲 [[w:オペレッタ|喜歌劇]]『選ばれた花嫁』行進曲(The Bride Elect)</ref>
|<!--発表年--> style="font-size:9pt;" |1897
|<!-- file -->[[File:Sousa's "The Bride Elect" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Bride Elect" - United States Marine Band (2017).mp3|2分24秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆スーザ「星条旗よ永遠なれ」】-->
| rowspan="2" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|80px]]
! rowspan="2" |<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
| rowspan="2" <!--曲 名--> style="background-color:#99ffff;" |<span style="font-size:23pt;">'''[[w:星条旗よ永遠なれ|星条旗よ永遠なれ]]'''</span><br> <span style="font-size:9pt;">(アメリカ合衆国の公式マーチ) <ref group="S">スーザ作曲『'''[[w:星条旗よ永遠なれ|星条旗よ永遠なれ]]'''』('''[[w:en:The Stars and Stripes Forever|The Stars and Stripes Forever]]''')は、1987年に[[w:アメリカ合衆国議会|合衆国議会]]によって、'''アメリカ合衆国の公式な国民的行進曲'''(the official National March of the United States of America)に制定されました[https://www.law.cornell.edu/uscode/text/36/304]。</ref></span>
| rowspan="2" <!--発表年--> style="font-size:9pt;" |1896
|<!-- file -->[[File:USMC stars stripes forever.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:USMC stars stripes forever.ogg|3分36秒]] [[:c:Category:Audio files of the Stars and Stripes Forever|c:]]
| rowspan="2" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;"
|<!-- file -->[[File:Sousa's Band - Stars and Stripes Forever.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's Band - Stars and Stripes Forever.ogg|4分32秒]] [[:c:Category:Audio files of the Stars and Stripes Forever|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「エル・カピタン」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|30px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="background-color:#ddffff;" |<span style="font-size:9pt;">[[w:オペレッタ|喜歌劇]]『[[w:エル・カピタン|エル・カピタン]]』より</span><br><span style="font-size:14pt;">'''[[w:エル・カピタン|エル・カピタン]]'''</span><br><small>(エル・キャピタン)</small> <ref group="S">スーザ作曲『'''[[w:エル・カピタン|エル・カピタン]]'''』([[w:en:El Capitan (operetta)|El Capitan]])</ref>
|<!--発表年--> style="font-size:9pt;" |1895
|<!-- file -->[[File:El Capitan - United States Marine Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:El Capitan - United States Marine Band.ogg|2分26秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「キング・コットン」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|25px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:14pt; background-color:#ddffff;" |'''キング・コットン''' <ref group="S">スーザ作曲『'''キング・コットン'''』([[w:en:King Cotton (march)|King Cotton]])</ref>
|<!--発表年--> style="font-size:9pt;" |1895
|<!-- file -->[[File:King Cotton.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:King Cotton.ogg|2分58秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「理事会」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |理事会 <ref group="S">スーザ作曲『理事会』(The Directorate)。1893年のセントルイス博覧会([[w:en:Saint Louis Exposition|Saint Louis Exposition]])の理事会からスーザに与えられた名誉に感謝して作曲したものです。</ref>
|<!--発表年--> style="font-size:9pt;" |1894
|<!-- file -->[[File:Sousa's "The Directorate" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Directorate" - United States Marine Band (2017).mp3|2分29秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「マンハッタン・ビーチ」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|25px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:14pt; background-color:#ddffff;" |'''[[w:マンハッタン・ビーチ (行進曲)|マンハッタン・ビーチ]]'''<br> <small>(マンハッタンの海辺)</small> <ref group="S">スーザ作曲『'''[[w:マンハッタン・ビーチ (行進曲)|マンハッタン・ビーチ]]'''』([[w:en:Manhattan Beach (march)|Manhattan Beach]])</ref>
|<!--発表年--> style="font-size:9pt;" |1893
|<!-- file -->[[File:Manhattan Beach.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Manhattan Beach.ogg|2分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「自由の鐘」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|30px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:15pt; background-color:#ddffff;" |'''[[w:自由の鐘 (行進曲)|自由の鐘]]''' <ref group="S">スーザ作曲『'''[[w:自由の鐘 (行進曲)|自由の鐘]]'''』('''[[w:en:The Liberty Bell (march)|The Liberty Bell]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1893
|<!-- file -->[[File:Liberty bell march.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Liberty bell march.ogg|3分22秒]] [[:c:Category:The Liberty Bell (march)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「理想の極致」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |理想の極致<br>(美の極致) <ref group="S">スーザ作曲『理想の極致(美の極致)』(The Beau Ideal)</ref>
|<!--発表年--> style="font-size:9pt;" |1893
|<!-- file -->[[File:Sousa's "The Beau Ideal" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Beau Ideal" - United States Marine Band (2017).mp3|3分22秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「トリトン」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |トリトン <ref group="S">スーザ編曲『トリトン』(The Triton)</ref>
|<!--発表年--> style="font-size:9pt;" |1892
|<!-- file -->[[File:Sousa's "The Triton" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Triton" - United States Marine Band (2017).mp3|2分02秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「オン・パレード」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |オン・パレード <ref group="S">スーザ作曲『オン・パレード』(On Parade)</ref>
|<!--発表年--> style="font-size:9pt;" |1892
|<!-- file -->[[File:Sousa's "On Parade" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "On Parade" - United States Marine Band (2017).mp3|3分21秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ロイヤル・トランペット行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ロイヤル・トランペット行進曲 <ref group="S">スーザ作曲『ロイヤル・トランペット行進曲』(March of the Royal Trumpets)</ref>
|<!--発表年--> style="font-size:9pt;" |1892
|<!-- file -->[[File:Sousa's "March of the Royal Trumpets" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "March of the Royal Trumpets" - United States Marine Band (2017).mp3|4分06秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「シカゴの美人」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |シカゴの美人 <ref group="S">スーザ作曲『シカゴの美人』(The Belle of Chicago)</ref>
|<!--発表年--> style="font-size:9pt;" |1892
|<!-- file -->[[File:Sousa's "The Belle of Chicago" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Belle of Chicago" - United States Marine Band (2017).mp3|2分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「家路」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |家路 <ref group="S">スーザ作曲『家路』(Homeward Bound)</ref>
|<!--発表年--> style="font-size:9pt;" |1891<br>/-92
|<!-- file -->[[File:Sousa's "Homeward Bound" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Homeward Bound" - United States Marine Band (2017).mp3|2分33秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「忠誠軍団」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |忠誠軍団 <ref group="S">スーザ作曲『忠誠軍団』(The Loyal Legion)</ref>
|<!--発表年--> style="font-size:9pt;" |1890
|<!-- file -->[[File:Sousa's "The Loyal Legion" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Loyal Legion" - United States Marine Band (2017).mp3|2分39秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「士官候補生」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|25px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="height:2em; font-size:14pt; background-color:#ddffff;" |'''[[w:士官候補生 (行進曲)|士官候補生]]''' <ref group="S">スーザ作曲『'''[[w:士官候補生 (行進曲)|士官候補生]]'''』([[w:en:The High School Cadets|The High School Cadets]])</ref>
|<!--発表年--> style="font-size:9pt;" |1890
|<!-- file -->[[File:Sousa's "The High School Cadets" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The High School Cadets" - United States Marine Band (2017).mp3|2分37秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「コーコラン士官候補生」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |コーコラン士官候補生 <ref group="S">スーザ作曲『コーコラン士官候補生』(Corcoran Cadets)</ref>
|<!--発表年--> style="font-size:9pt;" |1890
|<!-- file -->[[File:Sousa's "Corcoran Cadets" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Corcoran Cadets" - United States Marine Band (2017).mp3|3分05秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆スーザ「ワシントン・ポスト」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|60px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="background-color:#bbffff;"|<span style="font-size:20pt;">'''[[w:ワシントン・ポスト (行進曲)|ワシントン・ポスト]]'''</span><ref group="S">スーザ作曲『'''[[w:ワシントン・ポスト (行進曲)|ワシントン・ポスト]]'''』('''[[w:en:The Washington Post (march)|The Washington Post]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:Washington Post.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Washington Post.ogg|2分40秒]] [[:c:Category:The Washington Post (march)|c::]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆スーザ「雷神」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|60px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="background-color:#bbffff;" |<span style="font-size:20pt;">'''[[w:雷神 (行進曲)|雷神]]'''</span> <ref group="S">スーザ作曲『'''[[w:雷神 (行進曲)|雷神]]'''』('''[[w:en:The Thunderer|The Thunderer]]''')</ref>
|<!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:The Thunderer - U.S. Army Band.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:The Thunderer - U.S. Army Band.ogg|2分49秒]] [[:c:Category:The Thunderer|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「キルティング・パーティ行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |キルティング・パーティ行進曲 <ref group="S">スーザ作曲『キルティング・パーティ行進曲』(The Quilting Party March)</ref>
|<!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:Sousa's "The Quilting Party" - United States Marine Band (2017).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Quilting Party" - United States Marine Band (2017).mp3|1分30秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ピカドール」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ピカドール <ref group="S">スーザ作曲『ピカドール』(The Picador)</ref>
|<!--発表年--> style="font-size:9pt;" |1889
|<!-- file -->[[File:Sousa's "The Picador" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Picador" - United States Marine Band (2016).mp3|2分50秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【◆スーザ「忠誠」】-->
|[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|60px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="background-color:#bbffff;" |<span style="font-size:20pt;">'''[[w:忠誠 (行進曲)|忠誠]]'''</span> (忠誠行進曲) <ref group="S">スーザ作曲『'''[[w:忠誠 (行進曲)|忠誠]]'''』('''[[w:en:Semper Fidelis (march)|Semper Fidelis]]''')</ref><br> <span style="font-size:9pt;">([[w:アメリカ海兵隊|米海兵隊]]公式マーチ)</span>
|<!--発表年--> style="font-size:9pt;" |1888
|<!-- file -->[[File:Semper Fidelis.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Semper Fidelis.ogg|2分50秒]] [[:c:Category:Semper Fidelis (march)|c:]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「国民防衛隊」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |国民防衛隊 <ref group="S">スーザ作曲『国民防衛隊』(National Fencibles)</ref>
|<!--発表年--> style="font-size:9pt;" |1888
|<!-- file -->[[File:Sousa's "National Fencibles" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "National Fencibles" - United States Marine Band (2016).mp3|3分22秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「十字軍」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |十字軍 <ref group="S">スーザ作曲『十字軍』(The Crusader)</ref>
|<!--発表年--> style="font-size:9pt;" |1888
|<!-- file -->[[File:Sousa's "The Crusader" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Crusader" - United States Marine Band (2016).mp3|3分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ベン・ボルト」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ベン・ボルト <ref group="S">スーザ作曲『ベン・ボルト』(Ben Bolt)</ref>
|<!--発表年--> style="font-size:9pt;" |1888
|<!-- file -->[[File:Sousa's "Ben Bolt" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Ben Bolt" - United States Marine Band (2016).mp3|2分40秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「オクシデンタル」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |オクシデンタル <ref group="S">スーザ作曲『オクシデンタル』(The Occidental)</ref>
|<!--発表年--> style="font-size:9pt;" |1887
|<!-- file -->[[File:Sousa's "The Occidental" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Occidental" - United States Marine Band (2016).mp3|2分44秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ライフル小銃連隊」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ライフル小銃連隊 <ref group="S">スーザ作曲『ライフル小銃連隊』(The Rifle Regiment)</ref>
|<!--発表年--> style="font-size:9pt;" |1886
|<!-- file -->[[File:Sousa's "The Rifle Regiment" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Rifle Regiment" - United States Marine Band (2016).mp3|3分11秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「グラディエーター・マーチ」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |グラディエーター・マーチ <br>(剣闘士の行進) <ref group="S">スーザ作曲『'''グラディエーター・マーチ'''』([[w:en:The Gladiator March|The Gladiator March]])</ref>
|<!--発表年--> style="font-size:9pt;" |1886
|<!-- file -->[[File:U.S. Air Force Band - John Philip Sousa - The Gladiator March.ogg]]
|<!--リンク--> style="font-size:10pt;"|[[:File:U.S. Air Force Band - John Philip Sousa - The Gladiator March.ogg|2分49秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「時の勝利」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |時の勝利 <ref group="S">スーザ作曲『時の勝利』(Triumph of Time)</ref>
|<!--発表年--> style="font-size:9pt;" |1885
|<!-- file -->[[File:Sousa's "Triumph of Time" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Triumph of Time" - United States Marine Band (2016).mp3|2分23秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「サウンド・オフ」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |サウンド・オフ <ref group="S">スーザ作曲『サウンド・オフ』(Sound Off)</ref>
|<!--発表年--> style="font-size:9pt;" |1885
|<!-- file -->[[File:Sousa's "Sound Off" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Sound Off" - United States Marine Band (2016).mp3|2分55秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「マザー・ハバート行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |マザー・ハバート行進曲 <ref group="S">スーザ作曲『マザー・ハバート行進曲』(Mother Hubbard March)</ref>
|<!--発表年--> style="font-size:9pt;" |1885
|<!-- file -->[[File:Sousa's "Mother Hubbard March" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Mother Hubbard March" - United States Marine Band (2016).mp3|2分32秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ミカド・マーチ」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ミカド・マーチ <ref group="S">スーザ作曲『ミカド・マーチ』(The Mikado March)</ref>
|<!--発表年--> style="font-size:9pt;" |1885
|<!-- file -->[[File:Sousa's "Mikado March" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Mikado March" - United States Marine Band (2016).mp3|2分14秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「白い羽毛飾り」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |白い羽毛飾り <ref group="S">スーザ作曲『白い羽毛飾り』(The White Plume)</ref>
|<!--発表年--> style="font-size:9pt;" |1884
|<!-- file -->[[File:Sousa's "The White Plume" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The White Plume" - United States Marine Band (2016).mp3|2分10秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「金星の日面通過」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:12pt; background-color:#eef;" |[[w:金星の日面通過 (行進曲)|金星の日面通過]]<br>(金星の太陽面通過) <ref group="S">スーザ作曲『'''金星の日面通過'''』([[w:en:Transit of Venus March|Transit of Venus March]])</ref>
|<!--発表年--> style="font-size:9pt;" |1883
|<!-- file -->[[File:Sousa's "Transit of Venus" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Transit of Venus" - United States Marine Band (2016).mp3|2分03秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ライト・レフト」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ライト・レフト <ref group="S">スーザ作曲『ライト・レフト』(Right-Left)</ref>
|<!--発表年--> style="font-size:9pt;" |1883
|<!-- file -->[[File:Sousa's "Right Left" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Right Left" - United States Marine Band (2016).mp3|2分00秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ご婦人方のお気に入り」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ご婦人方のお気に入り <ref group="S">スーザ作曲『ご婦人方のお気に入り』[https://ml.naxos.jp/opus/346192](Pet of the Petticoats)</ref>
|<!--発表年--> style="font-size:9pt;" |1883
|<!-- file -->[[File:Sousa's "Pet of the Petticoats" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Pet of the Petticoats" - United States Marine Band (2016).mp3|1分49秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「マザー・グース」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |マザー・グース <ref group="S">スーザ作曲『マザー・グース』(Mother Goose)</ref>
|<!--発表年--> style="font-size:9pt;" |1883
|<!-- file -->[[File:Sousa's "Mother Goose" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Mother Goose" - United States Marine Band (2016).mp3|2分10秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「愛しいアニー・ローリー」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |愛しいアニー・ローリー <ref group="S">スーザ作曲『愛しいアニー・ローリー』(Bonnie Annie Laurie)。「[[w:アニーローリー|アニー・ローリー]]」は古い[[w:スコットランド|スコットランド]]民謡。</ref>
|<!--発表年--> style="font-size:9pt;" |1883
|<!-- file -->[[File:Sousa's "Bonnie Annie Laurie" - United States Marine Band (2016).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Bonnie Annie Laurie" - United States Marine Band (2016).mp3|2分36秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「コングレス・ホール」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |コングレス・ホール <ref group="S">スーザ作曲『コングレス・ホール』(Congress Hall)</ref>
|<!--発表年--> style="font-size:9pt;" |1882
|<!-- file -->[[File:Sousa's "Congress Hall" - United States Marine Band (2015).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Congress Hall" - United States Marine Band (2015).mp3|2分07秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ヨークタウン100周年祝祭行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ヨークタウン100周年祝祭行進曲 <ref group="S">スーザ作曲『ヨークタウン100周年祝祭行進曲』[https://ml.naxos.jp/opus/268275](Yorktown Centennial March)</ref>
|<!--発表年--> style="font-size:9pt;" |1881
|<!-- file -->[[File:Sousa's "Yorktown Centennial" - United States Marine Band (2015).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Yorktown Centennial" - United States Marine Band (2015).mp3|3分18秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ウルヴァリン行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ウルヴァリン行進曲 <ref group="S">スーザ作曲『ウルヴァリン行進曲』(The Wolverine)。ウルヴァリン([[w:en:Wolverine|wolverine]])とは[[w:クズリ|クズリ]]という獣のことで、[[w:ミシガン州|ミシガン州]]の象徴です。この曲は、当時のミシガン州の知事に捧げられた行進曲です。</ref>
|<!--発表年--> style="font-size:9pt;" |1881
|<!-- file -->[[File:Sousa's "The Wolverine" - United States Marine Band (2015).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "The Wolverine" - United States Marine Band (2015).mp3|2分20秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ライト・フォワード」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ライト・フォワード <ref group="S">スーザ作曲『ライト・フォワード』(Right Forward)</ref>
|<!--発表年--> style="font-size:9pt;" |1881
|<!-- file -->[[File:Sousa's "Right Forward" - United States Marine Band (2015).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "Right Forward" - United States Marine Band (2015).mp3|2分22秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「追悼:ガーフィールド大統領の葬送行進曲」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |追悼:ガーフィールド大統領の葬送行進曲 <ref group="S">スーザ作曲『追悼:ガーフィールド大統領の葬送行進曲』([[w:en:In Memoriam: President Garfield's Funeral March|In Memoriam: President Garfield's Funeral March]])。1881年7月、第20代アメリカ大統領[[w:ジェームズ・ガーフィールド|ジェームズ・ガーフィールド]]が就任6か月のときに銃撃で暗殺されて、スーザはショックを受けました。スーザは大統領の国葬のためにこの曲を作曲し、スーザ自身が指揮をして演奏しました。</ref>
|<!--発表年--> style="font-size:9pt;" |1881
|<!-- file -->[[File:Sousa's "In Memoriam" (President Garfield's Funeral) - United States Marine Band (2015).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "In Memoriam" (President Garfield's Funeral) - United States Marine Band (2015).mp3|2分58秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「ガーフィールド大統領就任式」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |ガーフィールド大統領就任式 <ref group="S">スーザ作曲『ガーフィールド大統領就任式』(President Garfield's Inauguration)。1881年の第20代アメリカ大統領[[w:ジェームズ・ガーフィールド|ジェームズ・ガーフィールド]]の[[w:1881年ジェームズ・ガーフィールド大統領就任式|就任式]]のために作曲された行進曲です。しかし、スーザは半年後に大統領の国葬の行進曲を作曲することになります。</ref>
|<!--発表年--> style="font-size:9pt;" |1881
|<!-- file -->[[File:Sousa's "President Garfield's Inauguration" - United States Marine Band (2015).mp3]]
|<!--リンク--> style="font-size:10pt;"|[[:File:Sousa's "President Garfield's Inauguration" - United States Marine Band (2015).mp3|6分48秒]]
|- <!--【■】-->
| colspan="6" style="height:1em;" |
|}
*'''[[c:Category:Audio files of music by John Philip Sousa]]'''
**'''[[c:Category:The Complete Marches of John Philip Sousa]]'''
*[https://ml.naxos.jp/composer/24864#:~:text=%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BB%E3%83%95%E3%82%A3 ジョン・フィリップ・スーザ (John Philip Sousa) - 作曲家(クラシック) - NML ナクソス・ミュージック・ライブラリー]
<!-- これより予備タグ -->
<div style="color:#fefefe">
<span style="text-align:left;font-family:Times New Roman;font-size:15pt;">
<!--
style="font-size:11pt;"|
-->
|- <!--【】-->
! colspan="6" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【】-->
|[[画像:|border|center|50px]]
!<!--作曲者--><!--[[w:|]]
|<!--曲 名--><!--[[w:|]]
|<!--発表年--> style="font-size:9pt;" |
|<!-- file -->[[]]
|<!--リンク--> style="font-size:10pt;"|[[:|分秒]]
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【スーザ「●」】-->
| style="height:1em;" |[[画像:John Philip Sousa, band director and composer (SAYRE 9828).jpg|border|center|20px]]
!<!--作曲者-->[[w:ジョン・フィリップ・スーザ|スーザ]]
|<!--曲 名--> style="font-size:10pt;" |● <ref group="S">スーザ作曲『●』(●)</ref>
|<!--発表年--> style="font-size:9pt;" |188●
|<!-- file -->[[]]
|<!--リンク--> style="font-size:10pt;"|[[:|分秒]]
</div>
==日本や中国の「行進曲」==
{| class="wikitable"
|- style="text-align:left;font-family:Times New Roman;font-size:15pt;"
|
! style="width:5em;" |作曲者
! style="width:10em;" |曲 名
! style="width:3em;font-size:9pt;" |発表年
!音声ファイル
! style="width:2em;font-size:8pt;" |再生<br>時間
|}
===軍艦行進曲(軍艦マーチ)===
{| class="wikitable"
|- style="text-align:left;font-family:Times New Roman;font-size:15pt;"
|
! style="width:5em;" |作曲者
! style="width:10em;" |曲 名
! style="width:3em;font-size:9pt;" |発表年
!音声ファイル
! style="width:2em;font-size:8pt;" |再生<br>時間
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【軍艦行進曲】-->
|[[画像:Setoguchi Toukichi.jpg|border|center|50px]]
!<!--作曲者--> style="font-size:9pt;" |[[w:瀬戸口藤吉|瀬戸口藤吉]]
|<!--曲 名-->[[w:軍艦行進曲|軍艦行進曲]]<br>(行進曲「軍艦」)
|<!--発表年--> style="font-size:9pt;" |1896
|<!-- file -->[[File:01 軍艦行進曲.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:01 軍艦行進曲.ogg|3分20秒]]
|-
| style="font-size:10pt;" colspan="6" |ご存じ、パチンコ店のBGM「軍艦マーチ」。日本の軍国主義の象徴として、現在の中国ではご禁制の曲です。
{|
|-
| style="vertical-align:top;" |1. <ruby><rb>守</rb><rp>(</rp><rt>まも</rt><rp>)</rp></ruby>るも<ruby><rb>攻</rb><rp>(</rp><rt>せ</rt><rp>)</rp></ruby>むるも <ruby><rb>黑鐵</rb><rp>(</rp><rt>くろがね</rt><rp>)</rp></ruby>の<br> <ruby><rb>浮</rb><rp>(</rp><rt>う</rt><rp>)</rp></ruby>かべる<ruby><rb>城</rb><rp>(</rp><rt>しろ</rt><rp>)</rp></ruby>ぞ <ruby><rb>賴</rb><rp>(</rp><rt>たの</rt><rp>)</rp></ruby>みなる<br> <ruby><rb>浮</rb><rp>(</rp><rt>う</rt><rp>)</rp></ruby>かべるその<ruby><rb>城</rb><rp>(</rp><rt>しろ</rt><rp>)</rp></ruby> <ruby><rb>日</rb><rp>(</rp><rt>ひ</rt><rp>)</rp></ruby>の<ruby><rb>本</rb><rp>(</rp><rt>もと</rt><rp>)</rp></ruby>の<br> <ruby><rb>皇國</rb><rp>(</rp><rt>みくに</rt><rp>)</rp></ruby>の<ruby><rb>四方</rb><rp>(</rp><rt>よも</rt><rp>)</rp></ruby>を <ruby><rb>守</rb><rp>(</rp><rt>まも</rt><rp>)</rp></ruby>るべし<br> <ruby><rb>眞鐵</rb><rp>(</rp><rt>まがね</rt><rp>)</rp></ruby>のその<ruby><rb>艦</rb><rp>(</rp><rt>ふね</rt><rp>)</rp></ruby> <ruby><rb>日</rb><rp>(</rp><rt>ひ</rt><rp>)</rp></ruby>の<ruby><rb>本</rb><rp>(</rp><rt>もと</rt><rp>)</rp></ruby>に<br> <ruby><rb>仇</rb><rp>(</rp><rt>あだ</rt><rp>)</rp></ruby><ruby><rb>爲</rb><rp>(</rp><rt>な</rt><rp>)</rp></ruby>す<ruby><rb>國</rb><rp>(</rp><rt>くに</rt><rp>)</rp></ruby>を <ruby><rb>攻</rb><rp>(</rp><rt>せ</rt><rp>)</rp></ruby>めよかし
| style="vertical-align:top;" |2. <ruby><rb>石炭</rb><rp>(</rp><rt>いはき</rt><rp>)</rp></ruby>の<ruby><rb>煙</rb><rp>(</rp><rt>けぶり</rt><rp>)</rp></ruby>は <ruby><rb>大洋</rb><rp>(</rp><rt>わたつみ</rt><rp>)</rp></ruby>の<ref>現代仮名遣いでは「い<u>わ</u>きのけ<u>む</u>りはわ<u>だ</u>つみの」となります。</ref><br> <ruby><rb>龍</rb><rp>(</rp><rt>たつ</rt><rp>)</rp></ruby>かとばかり <ruby><rb>靡</rb><rp>(</rp><rt>なび</rt><rp>)</rp></ruby>くなり<br> <ruby><rb>彈</rb><rp>(</rp><rt>たま</rt><rp>)</rp></ruby><ruby><rb>擊</rb><rp>(</rp><rt>う</rt><rp>)</rp></ruby>つ<ruby><rb>響</rb><rp>(</rp><rt>ひゞ</rt><rp>)</rp></ruby>きは <ruby><rb>雷</rb><rp>(</rp><rt>いかづち</rt><rp>)</rp></ruby>の<br> <ruby><rb>聲</rb><rp>(</rp><rt>こゑ</rt><rp>)</rp></ruby>かとばかり <ruby><rb>響</rb><rp>(</rp><rt>どよ</rt><rp>)</rp></ruby>むなり<ref>現代仮名遣いでは「こ<u>え</u>かとばかりどよむなり」となります。</ref><br> <ruby><rb>萬里</rb><rp>(</rp><rt>ばんり</rt><rp>)</rp></ruby>の<ruby><rb>波濤</rb><rp>(</rp><rt>はたう</rt><rp>)</rp></ruby>を <ruby><rb>乘</rb><rp>(</rp><rt>の</rt><rp>)</rp></ruby>り<ruby><rb>越</rb><rp>(</rp><rt>こ</rt><rp>)</rp></ruby>えて<ref>現代仮名遣いでは「ばんりのは<u>と</u>うをのりこえて」となります。</ref><br> <ruby><rb>皇國</rb><rp>(</rp><rt>みくに</rt><rp>)</rp></ruby>の<ruby><rb>光</rb><rp>(</rp><rt>ひかり</rt><rp>)</rp></ruby> <ruby><rb>輝</rb><rp>(</rp><rt>かゞや</rt><rp>)</rp></ruby>かせ<ref>現代仮名遣いでは「みくにのひかり か<u>が</u>やかせ」となります。</ref>
| style="vertical-align:top;" |3. <ruby><rb>海</rb><rp>(</rp><rt>うみ</rt><rp>)</rp></ruby><ruby><rb>行</rb><rp>(</rp><rt>ゆ</rt><rp>)</rp></ruby>かば <ruby><rb>水</rb><rp>(</rp><rt>み</rt><rp>)</rp></ruby><ruby><rb>漬</rb><rp>(</rp><rt>づ</rt><rp>)</rp></ruby>く<ruby><rb>屍</rb><rp>(</rp><rt>かばね</rt><rp>)</rp></ruby><br> <ruby><rb>山</rb><rp>(</rp><rt>やま</rt><rp>)</rp></ruby><ruby><rb>行</rb><rp>(</rp><rt>ゆ</rt><rp>)</rp></ruby>かば <ruby><rb>草</rb><rp>(</rp><rt>くさ</rt><rp>)</rp></ruby><ruby><rb>生</rb><rp>(</rp><rt>む</rt><rp>)</rp></ruby>す<ruby><rb>屍</rb><rp>(</rp><rt>かばね</rt><rp>)</rp><br></ruby><br> <ruby><rb>大君</rb><rp>(</rp><rt>おほきみ</rt><rp>)</rp></ruby>の <ruby><rb>邊</rb><rp>(</rp><rt>へ</rt><rp>)</rp></ruby>にこそ<ruby><rb>死</rb><rp>(</rp><rt>し</rt><rp>)</rp></ruby>なめ<ref>現代仮名遣いでは「お<u>お</u>きみのへにこそしなめ」となります。</ref><br> <ruby><rb>長</rb><rp>(</rp><rt>の</rt><rp>)</rp></ruby><ruby><rb>閑</rb><rp>(</rp><rt>ど</rt><rp>)</rp></ruby>には<ruby><rb>死</rb><rp>(</rp><rt>し</rt><rp>)</rp></ruby>なじ
| style="vertical-align:top;" |4. <br> (後奏)
|-
| colspan="4" |[[w:鳥山啓|鳥山啓]](1837-1914)作詞、[[w:瀬戸口藤吉|瀬戸口藤吉]](1868-1941)作曲
|}
|}
===义勇军进行曲 / 義勇軍進行曲 (中国の国歌)===
{| class="wikitable"
|- style="text-align:left;font-family:Times New Roman;font-size:15pt;"
|
! style="width:5em;" |作曲者
! style="width:10em;" |曲 名
! style="width:3em;font-size:9pt;" |発表年
!音声ファイル
! style="width:2em;font-size:8pt;" |再生<br>時間
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【】-->
|[[画像:Tian Han and Nie Er.jpg|border|center|50px]]
!<!--作曲者-->[[w:聶耳|聶耳]]
|<!--曲 名-->[[w:義勇軍進行曲|義勇軍進行曲]]
|<!--発表年--> style="font-size:9pt;" |1935
|<!-- file -->[[File:March_of_the_Volunteers_instrumental.ogg]]
|<!--リンク--> style="font-size:8pt;"|[[:File:March_of_the_Volunteers_instrumental.ogg|0分49秒]]
|-
| style="font-size:10pt;" colspan="6" |中華人民共和国の国歌です。
{|
|-
|-
!簡体字 による歌詞
!繁体字 による歌詞
!日本語訳
|-
| style="vertical-align:top;" | 起来!不愿做奴隶的人们!<br> 把我们的血肉,筑成我们新的长城!<br> 中华民族到了最危险的时候,<br> 每个人被迫着发出最后的吼声。<br> 起来!起来!起来!<br> 我们万众一心,<br> 冒着敌人的炮火,前进!<br> 冒着敌人的炮火,前进!<br> 前进!前进!进!
| style="vertical-align:top;" | 起來!不願做奴隸的人們!<br> 把我們的血肉,築成我們新的長城!<br> 中華民族到了最危險的時候,<br> 每個人被迫著發出最後的吼聲。<br> 起來!起來!起來!<br> 我們萬眾一心,<br> 冒著敵人的炮火,前進!<br> 冒著敵人的炮火,前進!<br> 前進!前進!進!
| style="vertical-align:top;" | 起て!支配望まぬ者よ!<br> 血肉で新たな長城を築こう!<br> 中華民族に最大の危機せまる、<br> 最後の雄叫びをあげる時だ。<br> 起て!起て!起て!<br> 我ら、心一つにして<br> 敵の砲火をついて進め<br> 敵の砲火をついて進め!<br> 進め!進め!進め!
|}
|}
<!-- これより予備タグ -->
<!--
<ruby><rb>●</rb><rp>(</rp><rt>●</rt><rp>)</rp></ruby>
-->
<div style="color:#fefefe">
<span style="text-align:left;font-family:Times New Roman;font-size:15pt;">
<span style="font-size:11pt;">
<!--
style="font-size:11pt;"|
-->
|- <!--【】-->
! colspan="6" |
|- style="text-align:left;font-family:Times New Roman;font-size:13pt;" <!--【】-->
|[[画像:|border|center|50px]]
!<!--作曲者--><!--[[w:|]]
|<!--曲 名--><!--[[w:|]]
|<!--発表年--> style="font-size:9pt;" |
|<!-- file -->[[]]
|<!--リンク--> style="font-size:8pt;"|[[:|分秒]]
</div>
==著作権についての注記==
:[[音声ファイルで聴くクラシック音楽入門#著作権についての注記]] を参照。
==脚注==
<references/>
=== スーザ脚注 ===
{{Reflist|group="Sousa"}}
{{Reflist|group="S"}}
== 関連項目 ==
*[[音声ファイルで聴くクラシック音楽入門]]
**[[音声ファイルで聴くクラシック音楽入門/行進曲|/行進曲]]
**[[音声ファイルで聴くクラシック音楽入門/バロック音楽・古楽/チェンバロの曲|/チェンバロの曲]]
**[[音声ファイルで聴くクラシック音楽入門/動画ファイルで視聴してみよう|/動画ファイルで視聴してみよう]]
**[[音声ファイルで聴くクラシック音楽入門/外部音源|/外部音源]]
**[[音声ファイルで聴くクラシック音楽入門/作曲家の一覧|/作曲家の一覧]]
== 関連記事 ==
{{Commons|Category:Marches (music)|行進曲}}
*[[c:Category:Marches (music)]]
:
*'''[[w:en:Category:March music]]''':行進曲(マーチ音楽)のカテゴリ
**[[w:en:March (music)]]:行進曲(マーチ音楽)
***[[w:en:American march music]]:アメリカのマーチ音楽
*[[w:en:Martial music]]:軍楽
**'''[[w:en:Category:Military marches]]''':軍隊行進曲(マーチ)
***'''[[w:en:Category:American military marches]]''':アメリカの軍隊行進曲(マーチ)
***[[w:en:Category:British military marches]]''':イギリスの軍隊行進曲(マーチ)
**[[w:en:Category:Military musicians]]:軍楽家
**[[w:en:Category:United States military musicians]]:アメリカの軍楽家のカテゴリ
[[Category:音声ファイルで聴くクラシック音楽入門|こうしんきよく]]
hm5cmjxbjx7zoh5jjvys3eyhzpyt22l
カテゴリ:満洲語
14
36286
262848
218552
2024-10-31T13:03:55Z
MiiCii
32480
MiiCii がページ「[[カテゴリ:満州語]]」を「[[カテゴリ:満洲語]]」に移動しました: 「満州」→満洲
218552
wikitext
text/x-wiki
[[カテゴリ:アジアの言語|まんしゆう]]
025aapsnchhk58s9uqafczfuxxiy1gz
プログラミング/列挙型
0
36426
262856
261026
2024-10-31T21:21:09Z
Ef3
694
校閲と推敲
262856
wikitext
text/x-wiki
プログラミングにおいてデータ型は重要な要素です。データ型を正しく理解することで、効率的なコード作成やバグの防止が可能になります。その中でも列挙型は、特定の値の集合から選択できる便利なデータ型です。
列挙型は、決まった値以外を選べないよう制約を設けることで、入力ミスを防ぎます。また、コードの可読性や保守性を向上させるためにも役立ちます。
この節では、列挙型の基本概念、使用方法、実際の活用例について学び、より洗練されたコード作成を目指します。
__TOC__
== 列挙型とは ==
プログラミングでは、データの種類を明確にする必要があります。数字、文字列、真偽値など、それぞれに異なる処理が必要だからです。
列挙型は、あらかじめ定義された複数の値から一つを選択するデータ型です。例えば、「曜日」を表す列挙型では、「月曜日」「火曜日」「水曜日」などが選べます。列挙型を使うことで、特定の値しか取れないことが保証され、プログラムの品質向上やバグの削減に役立ちます。
列挙型の主な利点:
* タイプセーフティの向上
* コードの可読性向上
* コンパイル時のエラーチェック
* リファクタリングの容易さ
== 列挙型の定義方法 ==
列挙型は、プログラミング言語によって定義方法が異なりますが、一般的には以下のような形式で定義します。
:<syntaxhighlight lang=java>
enum 列挙型名 {
列挙子1,
列挙子2,
列挙子3,
...
}
</syntaxhighlight>
ここで、「列挙型名」は定義する列挙型の名前を、「列挙子1」「列挙子2」「列挙子3」といったものは、列挙型が取りうる値を定義するものです。
例えば、以下のように「曜日」を表す列挙型を定義することができます(プログラミング言語はJava)。
:<syntaxhighlight lang=java>
enum DayOfWeek {
MONDAY, // 慣習的に大文字で定義
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
</syntaxhighlight>
列挙型名は「DayOfWeek」とし、それぞれの列挙子には曜日の名前を設定しています。多くの言語では、列挙子は慣習的に大文字で記述します。
== 列挙型の使用方法 ==
列挙型を使用する際には、定義した列挙型の名前と列挙子を指定します。
例えば、上記の「DayOfWeek」列挙型を使用する場合には、以下のように記述します。
:<syntaxhighlight lang=java>
DayOfWeek today = DayOfWeek.WEDNESDAY; // 完全修飾名を使用
</syntaxhighlight>
変数「today」には「WEDNESDAY」という値が設定されます。多くの言語では型安全性を確保するため、列挙型の値を参照する際は完全修飾名の使用が推奨されます。
== 列挙型と網羅性の担保 ==
列挙型で定義された列挙値をswitchや類似の制御構造で網羅していなかった場合、コンパイラ等は静的に網羅性の担保を支援することができます。
=== Rustの場合 ===
Rustは、列挙型(enum)とマッチング(match)構文を組み合わせて、パターンマッチングを実現しています。これにより、全てのパターンを網羅するかどうかをコンパイル時に確認することができます。
:<syntaxhighlight lang=rust>
#[derive(Debug)] // デバッグ出力用の派生マクロ
enum Suit {
Heart,
Diamond,
Club,
Spade,
}
fn print_card(suit: Suit) {
match suit {
Suit::Heart => println!("This is a heart."),
Suit::Diamond => println!("This is a diamond."),
Suit::Club => println!("This is a club."),
Suit::Spade => println!("This is a spade."),
}
}
fn main() {
print_card(Suit::Heart);
print_card(Suit::Diamond);
print_card(Suit::Club);
print_card(Suit::Spade);
}
</syntaxhighlight>
=== Swiftの場合 ===
Swiftは、列挙型(enum)とスイッチ(switch)文を組み合わせて、全てのケースを網羅していることをコンパイラが確認します。
:<syntaxhighlight lang=swift>
enum Suit: String, CaseIterable { // CaseIterableプロトコルを採用
case heart
case diamond
case club
case spade
}
func printCard(suit: Suit) {
switch suit {
case .heart:
print("This is a heart.")
case .diamond:
print("This is a diamond.")
case .club:
print("This is a club.")
case .spade:
print("This is a spade.")
}
}
// すべての列挙子を走査する例
for suit in Suit.allCases {
printCard(suit: suit)
}
</syntaxhighlight>
; F#
F#は、列挙型(enum)とパターンマッチング(pattern matching)を組み合わせて、全てのパターンを網羅していることを確認する機能を持っています。また、F#では、列挙型に対して、マップやリストなどのデータ構造を組み合わせることができます。
:<syntaxhighlight lang=fsharp>
// スートを表す列挙型を定義する
type Suit =
| Heart // ハート
| Diamond // ダイヤ
| Club // クラブ
| Spade // スペード
// スートに基づいてカードを印刷する関数を定義する
let printCard suit =
match suit with
| Heart -> printfn "This is a heart." // ハートの場合
| Diamond -> printfn "This is a diamond." // ダイヤの場合
| Club -> printfn "This is a club." // クラブの場合
| Spade -> printfn "This is a spade." // スペードの場合
// カードを表示する
printCard Heart
printCard Diamond
printCard Club
printCard Spade
</syntaxhighlight>
; Kotlin
:<syntaxhighlight lang=kotlin>
// トランプのカードのスートを表す列挙型
enum class Suit {
HEART, // ハート
DIAMOND, // ダイヤ
CLUB, // クラブ
SPADE // スペード
}
// スートに応じてカードを表示する関数
fun printCard(suit: Suit) {
// スートに応じて処理を分岐
when (suit) {
Suit.HEART -> println("This is a heart.") // ハートの場合
Suit.DIAMOND -> println("This is a diamond.")// ダイヤの場合
Suit.CLUB -> println("This is a club.") // クラブの場合
Suit.SPADE -> println("This is a spade.") // スペードの場合
}
}
fun main() {
// カードを表示する
printCard(Suit.HEART) // ハートのカードを表示する
printCard(Suit.DIAMOND) // ダイヤのカードを表示する
printCard(Suit.CLUB) // クラブのカードを表示する
printCard(Suit.SPADE) // スペードのカードを表示する
}
</syntaxhighlight>
; Java
:<syntaxhighlight lang=java>
// 列挙型 Suit を定義する
enum Suit {
HEART, // ハート
DIAMOND, // ダイヤ
CLUB, // クラブ
SPADE // スペード
}
class Main {
// printCard メソッドを定義する
static void printCard(Suit suit) {
// 引数で受け取った suit に応じて分岐する
switch (suit) {
case HEART: // suit が HEART の場合
// ハートであることを表示する
System.out.println("This is a heart.");
break; // 分岐から抜ける
case DIAMOND: // suit が DIAMOND の場合
// ダイヤであることを表示する
System.out.println("This is a diamond.");
break; // 分岐から抜ける
case CLUB: // suit が CLUB の場合
// クラブであることを表示する
System.out.println("This is a club.");
break; // 分岐から抜ける
case SPADE: // suit が SPADE の場合
// スペードであることを表示する
System.out.println("This is a spade.");
break; // 分岐から抜ける
}
}
// main メソッドを定義する
public static void main(String[] args) {
// printCard メソッドを呼び出して、それぞれのトランプのマークを表示する
printCard(Suit.HEART);
printCard(Suit.DIAMOND);
printCard(Suit.CLUB);
printCard(Suit.SPADE);
}
}
</syntaxhighlight>
; Go
:<syntaxhighlight lang=go>
package main
import "fmt"
// 列挙型 Suit を定義
type Suit int
const (
Heart Suit = iota // ハートのスート
Diamond // ダイヤのスート
Club // クラブのスート
Spade // スペードのスート
)
// スートを出力する関数 print_card を定義
func print_card(suit Suit) {
// 引数で渡されたスートに応じてメッセージを出力
switch suit {
case Heart:
fmt.Println("This is a heart.")
case Diamond:
fmt.Println("This is a diamond.")
case Club:
fmt.Println("This is a club.")
case Spade:
fmt.Println("This is a spade.")
}
}
// main関数で4つの異なるスートを出力する
func main() {
print_card(Heart) // ハートのスートを出力
print_card(Diamond) // ダイヤのスートを出力
print_card(Club) // クラブのスートを出力
print_card(Spade) // スペードのスートを出力
}
</syntaxhighlight>
;Scala
:<syntaxhighlight lang=scala>
// 列挙型 Suit を定義
object Suit extends Enumeration {
type Suit = Value
val Heart, Diamond, Club, Spade = Value
}
// スートを出力する関数 print_card を定義
def print_card(suit: Suit.Suit): Unit = {
// 引数で渡されたスートに応じてメッセージを出力
suit match {
case Suit.Heart => println("This is a heart.")
case Suit.Diamond => println("This is a diamond.")
case Suit.Club => println("This is a club.")
case Suit.Spade => println("This is a spade.")
}
}
// main関数で4つの異なるスートを出力する
def main(args: Array[String]): Unit = {
print_card(Suit.Heart) // ハートのスートを出力
print_card(Suit.Diamond) // ダイヤのスートを出力
print_card(Suit.Club) // クラブのスートを出力
print_card(Suit.Spade) // スペードのスートを出力
}
</syntaxhighlight>
; Haskell
:<syntaxhighlight lang=haskell>
-- 列挙型 Suit を定義
data Suit = Heart | Diamond | Club | Spade
deriving (Show)
-- スートを出力する関数 print_card を定義
print_card :: Suit -> IO ()
print_card suit = case suit of
Heart -> putStrLn "This is a heart."
Diamond -> putStrLn "This is a diamond."
Club -> putStrLn "This is a club."
Spade -> putStrLn "This is a spade."
-- main関数で4つの異なるスートを出力する
main :: IO ()
main = do
print_card Heart -- ハートのスートを出力
print_card Diamond -- ダイヤのスートを出力
print_card Club -- クラブのスートを出力
print_card Spade -- スペードのスート
</syntaxhighlight>
以上のように、これらのプログラミング言語では、列挙型を使った網羅性の担保を支援する機能が提供されています。
== 歴史 ==
列挙型は、プログラミング言語やデーターベース管理システムにおいて、複数の異なる定数を1つの集合として定義したデーター型です。
古くは、Algol Hの言語定義に現れますが、辿ることが可能な初見の1つにPascalの(スカラー型から分岐した)列挙型が挙げられます。
;[https://onlinegdb.com/f861aQs72 例]:<syntaxhighlight lang=pascal line>
program EnumExample(output);
type
TSeassons = (Spring, Summer, Autumn, Winter);
var
seasson: TSeassons;
begin
Writeln('seasson --> Ord(seasson)');
Writeln('------------------------');
for seasson := Spring to Winter do
Writeln(seasson, ' --> ', Ord(seasson));
end.
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
seasson --> Ord(seasson)
------------------------
Spring --> 0
Summer --> 1
Autumn --> 2
Winter --> 3
</syntaxhighlight>
== 列挙型のベストプラクティス ==
列挙型を効果的に使用するためのベストプラクティスをいくつか紹介します:
* 命名規則
** 列挙型名は名詞で、単数形を使用(例:DayOfWeek, CardSuit)
** 列挙子は大文字で記述(言語の慣習に従う)
* 関連データの付加
** 必要に応じて列挙子に値を関連付ける
** メソッドや計算プロパティを活用して機能を拡張
* ドキュメント化
** 各列挙子の意味や用途を明確に文書化
** API参照用のコメントを適切に記述
* テスト
** すべての列挙子に対するテストケースを作成
** 網羅性のテストを実装
これらの原則に従うことで、より保守性の高い、品質の良いコードを作成することができます。
== 用語集 ==
* データ型(data type):プログラム内で扱うデータの種類を表す型。
* 列挙型(enum):あらかじめ定義された一連の値の中から1つを選ぶことができるデータ型。
* プログラム(program):コンピュータに実行させるための命令の集まり。
* バグ(bug):プログラムの実行中に発生するエラーのこと。
* 読みやすさ(readability):コードが容易に理解できること。
* 保守性(maintainability):プログラムが変更された場合に、容易に修正できること。
* 定義方法(definition):列挙型を定義するための方法。
* 列挙子(enumerator):列挙型が取りうる値を定義するもの。
* Java:オブジェクト指向プログラミング言語の一種。
* 指定する(specify):明確に示すこと。
* 網羅性(exhaustiveness):全ての場合分けが正確に記述されていること。
* 静的に(statically):コンパイル時に判断されること。
* Rust:システムプログラミング言語の一種。
* マッチング(matching):値がどのパターンに合致するかを比較すること。
* パターンマッチング(pattern matching):値があるパターンに合致するかを判定し、適切な処理を行うこと。
[[カテゴリ:プログラミング]]
32v1s3l0uipvagcpwcg29zwcgh0a1gh
262857
262856
2024-10-31T21:44:38Z
Ef3
694
/* 列挙型と網羅性の担保 */ リファクタリング
262857
wikitext
text/x-wiki
プログラミングにおいてデータ型は重要な要素です。データ型を正しく理解することで、効率的なコード作成やバグの防止が可能になります。その中でも列挙型は、特定の値の集合から選択できる便利なデータ型です。
列挙型は、決まった値以外を選べないよう制約を設けることで、入力ミスを防ぎます。また、コードの可読性や保守性を向上させるためにも役立ちます。
この節では、列挙型の基本概念、使用方法、実際の活用例について学び、より洗練されたコード作成を目指します。
__TOC__
== 列挙型とは ==
プログラミングでは、データの種類を明確にする必要があります。数字、文字列、真偽値など、それぞれに異なる処理が必要だからです。
列挙型は、あらかじめ定義された複数の値から一つを選択するデータ型です。例えば、「曜日」を表す列挙型では、「月曜日」「火曜日」「水曜日」などが選べます。列挙型を使うことで、特定の値しか取れないことが保証され、プログラムの品質向上やバグの削減に役立ちます。
列挙型の主な利点:
* タイプセーフティの向上
* コードの可読性向上
* コンパイル時のエラーチェック
* リファクタリングの容易さ
== 列挙型の定義方法 ==
列挙型は、プログラミング言語によって定義方法が異なりますが、一般的には以下のような形式で定義します。
:<syntaxhighlight lang=java>
enum 列挙型名 {
列挙子1,
列挙子2,
列挙子3,
...
}
</syntaxhighlight>
ここで、「列挙型名」は定義する列挙型の名前を、「列挙子1」「列挙子2」「列挙子3」といったものは、列挙型が取りうる値を定義するものです。
例えば、以下のように「曜日」を表す列挙型を定義することができます(プログラミング言語はJava)。
:<syntaxhighlight lang=java>
enum DayOfWeek {
MONDAY, // 慣習的に大文字で定義
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
</syntaxhighlight>
列挙型名は「DayOfWeek」とし、それぞれの列挙子には曜日の名前を設定しています。多くの言語では、列挙子は慣習的に大文字で記述します。
== 列挙型の使用方法 ==
列挙型を使用する際には、定義した列挙型の名前と列挙子を指定します。
例えば、上記の「DayOfWeek」列挙型を使用する場合には、以下のように記述します。
:<syntaxhighlight lang=java>
DayOfWeek today = DayOfWeek.WEDNESDAY; // 完全修飾名を使用
</syntaxhighlight>
変数「today」には「WEDNESDAY」という値が設定されます。多くの言語では型安全性を確保するため、列挙型の値を参照する際は完全修飾名の使用が推奨されます。
== 列挙型と網羅性の担保 ==
列挙型で定義された列挙値をswitchや類似の制御構造で網羅していなかった場合、コンパイラ等は静的に網羅性の担保を支援することができます。
=== Rustの場合 ===
Rustは、列挙型(enum)とマッチング(match)構文を組み合わせて、パターンマッチングを実現しています。これにより、全てのパターンを網羅するかどうかをコンパイル時に確認することができます。
:<syntaxhighlight lang=rust>
enum Suit {
Heart,
Diamond,
Club,
Spade,
}
fn print_card(suit: Suit) {
match suit {
Suit::Heart => println!("This is a heart."),
Suit::Diamond => println!("This is a diamond."),
Suit::Club => println!("This is a club."),
Suit::Spade => println!("This is a spade."),
}
}
fn main() {
print_card(Suit::Heart);
print_card(Suit::Diamond);
print_card(Suit::Club);
print_card(Suit::Spade);
}
</syntaxhighlight>
=== Swiftの場合 ===
Swiftは、列挙型(enum)とスイッチ(switch)文を組み合わせて、全てのケースを網羅していることをコンパイラが確認します。
:<syntaxhighlight lang=swift>
enum Suit: String, CaseIterable { // CaseIterableプロトコルを採用
case heart
case diamond
case club
case spade
}
func printCard(suit: Suit) {
switch suit {
case .heart:
print("This is a heart.")
case .diamond:
print("This is a diamond.")
case .club:
print("This is a club.")
case .spade:
print("This is a spade.")
}
}
// すべての列挙子を走査する例
for suit in Suit.allCases {
printCard(suit: suit)
}
</syntaxhighlight>
=== F#の場合 ===
F#は代数的データ型としての列挙型を提供し、パターンマッチングによる網羅性チェックを行います。
:<syntaxhighlight lang=fsharp>
type Suit =
| Heart // ハート
| Diamond // ダイヤ
| Club // クラブ
| Spade // スペード
let printCard suit =
match suit with
| Heart -> printfn "This is a heart."
| Diamond -> printfn "This is a diamond."
| Club -> printfn "This is a club."
| Spade -> printfn "This is a spade."
// すべての列挙子で試す
printCard Heart
printCard Diamond
printCard Club
printCard Spade
</syntaxhighlight>
=== Kotlinの場合 ===
Kotlinはwhen式による網羅性チェックを提供します。
:<syntaxhighlight lang=kotlin>
enum class Suit {
HEART, // ハート
DIAMOND, // ダイヤ
CLUB, // クラブ
SPADE // スペード
}
fun printCard(suit: Suit) {
when (suit) {
Suit.HEART -> println("This is a heart.")
Suit.DIAMOND -> println("This is a diamond.")
Suit.CLUB -> println("This is a club.")
Suit.SPADE -> println("This is a spade.")
}
}
fun main() {
printCard(Suit.HEART)
printCard(Suit.DIAMOND)
printCard(Suit.CLUB)
printCard(Suit.SPADE)
}
</syntaxhighlight>
=== Javaの場合 ===
Javaはswitch文で列挙型を扱い、IDEの支援により網羅性チェックを行えます。
:<syntaxhighlight lang=java>
enum Suit {
HEART, // ハート
DIAMOND, // ダイヤ
CLUB, // クラブ
SPADE // スペード
}
class Main {
static void printCard(Suit suit) {
switch (suit) {
case HEART:
System.out.println("This is a heart.");
break;
case DIAMOND:
System.out.println("This is a diamond.");
break;
case CLUB:
System.out.println("This is a club.");
break;
case SPADE:
System.out.println("This is a spade.");
break;
}
}
public static void main(String[] args) {
printCard(Suit.HEART);
printCard(Suit.DIAMOND);
printCard(Suit.CLUB);
printCard(Suit.SPADE);
}
}
</syntaxhighlight>
=== Goの場合 ===
GoはC言語スタイルの列挙型を提供し、switch文による分岐を行います。
:<syntaxhighlight lang=go>
package main
import "fmt"
type Suit int
const (
Heart Suit = iota
Diamond
Club
Spade
)
func printCard(suit Suit) {
switch suit {
case Heart:
fmt.Println("This is a heart.")
case Diamond:
fmt.Println("This is a diamond.")
case Club:
fmt.Println("This is a club.")
case Spade:
fmt.Println("This is a spade.")
}
}
func main() {
printCard(Heart)
printCard(Diamond)
printCard(Club)
printCard(Spade)
}
</syntaxhighlight>
=== Scalaの場合 ===
Scalaはパターンマッチによる網羅性チェックを提供します。
:<syntaxhighlight lang=scala>
object Suit extends Enumeration {
type Suit = Value
val Heart, Diamond, Club, Spade = Value
}
def printCard(suit: Suit.Suit): Unit = {
suit match {
case Suit.Heart => println("This is a heart.")
case Suit.Diamond => println("This is a diamond.")
case Suit.Club => println("This is a club.")
case Suit.Spade => println("This is a spade.")
}
}
def main(args: Array[String]): Unit = {
printCard(Suit.Heart)
printCard(Suit.Diamond)
printCard(Suit.Club)
printCard(Suit.Spade)
}
</syntaxhighlight>
=== Haskellの場合 ===
Haskellは代数的データ型による強力な型システムと網羅性チェックを提供します。
:<syntaxhighlight lang=haskell>
data Suit = Heart | Diamond | Club | Spade
deriving (Show)
printCard :: Suit -> IO ()
printCard suit = case suit of
Heart -> putStrLn "This is a heart."
Diamond -> putStrLn "This is a diamond."
Club -> putStrLn "This is a club."
Spade -> putStrLn "This is a spade."
main :: IO ()
main = do
printCard Heart
printCard Diamond
printCard Club
printCard Spade
</syntaxhighlight>
これらの言語は、それぞれの特徴を活かした形で列挙型の網羅性チェックを実現しています。特に関数型言語(F#, Haskell, Scala)ではパターンマッチングと組み合わせることで、より堅牢な型安全性を提供しています。
=== 網羅性の担保とは ===
網羅性の担保とは、列挙型で定義されたすべての値(列挙子)に対して、適切な処理が漏れなく実装されていることを保証することです。
主に以下の2つの側面があります:
* コンパイル時チェック
** 列挙型の値を処理する際(switch文やパターンマッチングなど)、すべてのケースが処理されているかをコンパイラが確認
** 未処理のケースがある場合、コンパイルエラーまたは警告を発生
* 実行時の安全性
** 想定外の値による実行時エラーを防止
** デフォルトケース(else節)に頼らない、明示的な処理の実装を促進
=== 網羅性担保の意義 ===
==== バグの早期発見 ====
* 列挙型に新しい値を追加した際、その値を処理するコードが必要な箇所を容易に特定
* コンパイル時に漏れを検出できるため、実行時エラーを未然に防止
; process.swift
:<syntaxhighlight lang=swift>
enum Status {
case active
case inactive
case pending // 後から追加された値
}
func processStatus(_ status: Status) {
switch status {
case .active:
print("Active")
case .inactive:
print("Inactive")
// pendingケースが未処理のため、コンパイルエラー
}
}
</syntaxhighlight>
==== コードの品質向上 ====
* 明示的な処理の実装を強制することで、コードの意図が明確に
* デフォルトケースの安易な使用を防ぎ、各ケースに適切な処理を実装することを促進
; payment.rs
:<syntaxhighlight lang=rust>
enum PaymentStatus {
Pending,
Approved,
Rejected
}
fn process_payment(status: PaymentStatus) {
match status {
PaymentStatus::Pending => {
// 保留中の処理
}
PaymentStatus::Approved => {
// 承認時の処理
}
PaymentStatus::Rejected => {
// 却下時の処理
}
// 網羅性により、default caseは不要
}
}
</syntaxhighlight>
==== メンテナンス性の向上 ====
* リファクタリング時の安全性を確保
* 列挙型の変更影響箇所を確実に把握可能
* 開発者の意図しない処理漏れを防止
==== ドキュメントとしての役割 ====
* コード自体が仕様を表現
* すべての状態とその処理が明示的に記述されることで、コードの理解が容易に
=== 網羅性担保のベストプラクティス ===
* デフォルトケースの使用を避ける
** 新しい列挙子が追加された際の検出が困難になるため
* テストケースの作成
** すべての列挙子に対するテストを実装
** エッジケースの確認
* コードレビュー時の確認
** 網羅性チェックの警告や除外を慎重に検討
* 適切なエラーハンドリング
** 必要に応じて、未知の値に対する適切な対応を実装
これらの実践により、より堅牢で保守性の高いコードを実現することができます。
== 歴史 ==
列挙型は、プログラミング言語やデーターベース管理システムにおいて、複数の異なる定数を1つの集合として定義したデーター型です。
古くは、Algol Hの言語定義に現れますが、辿ることが可能な初見の1つにPascalの(スカラー型から分岐した)列挙型が挙げられます。
;[https://onlinegdb.com/f861aQs72 例]:<syntaxhighlight lang=pascal line>
program EnumExample(output);
type
TSeassons = (Spring, Summer, Autumn, Winter);
var
seasson: TSeassons;
begin
Writeln('seasson --> Ord(seasson)');
Writeln('------------------------');
for seasson := Spring to Winter do
Writeln(seasson, ' --> ', Ord(seasson));
end.
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
seasson --> Ord(seasson)
------------------------
Spring --> 0
Summer --> 1
Autumn --> 2
Winter --> 3
</syntaxhighlight>
== 列挙型のベストプラクティス ==
列挙型を効果的に使用するためのベストプラクティスをいくつか紹介します:
* 命名規則
** 列挙型名は名詞で、単数形を使用(例:DayOfWeek, CardSuit)
** 列挙子は大文字で記述(言語の慣習に従う)
* 関連データの付加
** 必要に応じて列挙子に値を関連付ける
** メソッドや計算プロパティを活用して機能を拡張
* ドキュメント化
** 各列挙子の意味や用途を明確に文書化
** API参照用のコメントを適切に記述
* テスト
** すべての列挙子に対するテストケースを作成
** 網羅性のテストを実装
これらの原則に従うことで、より保守性の高い、品質の良いコードを作成することができます。
== 用語集 ==
* データ型(data type):プログラム内で扱うデータの種類を表す型。
* 列挙型(enum):あらかじめ定義された一連の値の中から1つを選ぶことができるデータ型。
* プログラム(program):コンピュータに実行させるための命令の集まり。
* バグ(bug):プログラムの実行中に発生するエラーのこと。
* 読みやすさ(readability):コードが容易に理解できること。
* 保守性(maintainability):プログラムが変更された場合に、容易に修正できること。
* 定義方法(definition):列挙型を定義するための方法。
* 列挙子(enumerator):列挙型が取りうる値を定義するもの。
* Java:オブジェクト指向プログラミング言語の一種。
* 指定する(specify):明確に示すこと。
* 網羅性(exhaustiveness):全ての場合分けが正確に記述されていること。
* 静的に(statically):コンパイル時に判断されること。
* Rust:システムプログラミング言語の一種。
* マッチング(matching):値がどのパターンに合致するかを比較すること。
* パターンマッチング(pattern matching):値があるパターンに合致するかを判定し、適切な処理を行うこと。
[[カテゴリ:プログラミング]]
27u692at34bub5vtajp0jjrw7v178le
262858
262857
2024-10-31T22:26:58Z
Ef3
694
/* 歴史 */ 校閲と推敲。Algol Hについて加筆
262858
wikitext
text/x-wiki
プログラミングにおいてデータ型は重要な要素です。データ型を正しく理解することで、効率的なコード作成やバグの防止が可能になります。その中でも列挙型は、特定の値の集合から選択できる便利なデータ型です。
列挙型は、決まった値以外を選べないよう制約を設けることで、入力ミスを防ぎます。また、コードの可読性や保守性を向上させるためにも役立ちます。
この節では、列挙型の基本概念、使用方法、実際の活用例について学び、より洗練されたコード作成を目指します。
__TOC__
== 列挙型とは ==
プログラミングでは、データの種類を明確にする必要があります。数字、文字列、真偽値など、それぞれに異なる処理が必要だからです。
列挙型は、あらかじめ定義された複数の値から一つを選択するデータ型です。例えば、「曜日」を表す列挙型では、「月曜日」「火曜日」「水曜日」などが選べます。列挙型を使うことで、特定の値しか取れないことが保証され、プログラムの品質向上やバグの削減に役立ちます。
列挙型の主な利点:
* タイプセーフティの向上
* コードの可読性向上
* コンパイル時のエラーチェック
* リファクタリングの容易さ
== 列挙型の定義方法 ==
列挙型は、プログラミング言語によって定義方法が異なりますが、一般的には以下のような形式で定義します。
:<syntaxhighlight lang=java>
enum 列挙型名 {
列挙子1,
列挙子2,
列挙子3,
...
}
</syntaxhighlight>
ここで、「列挙型名」は定義する列挙型の名前を、「列挙子1」「列挙子2」「列挙子3」といったものは、列挙型が取りうる値を定義するものです。
例えば、以下のように「曜日」を表す列挙型を定義することができます(プログラミング言語はJava)。
:<syntaxhighlight lang=java>
enum DayOfWeek {
MONDAY, // 慣習的に大文字で定義
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
</syntaxhighlight>
列挙型名は「DayOfWeek」とし、それぞれの列挙子には曜日の名前を設定しています。多くの言語では、列挙子は慣習的に大文字で記述します。
== 列挙型の使用方法 ==
列挙型を使用する際には、定義した列挙型の名前と列挙子を指定します。
例えば、上記の「DayOfWeek」列挙型を使用する場合には、以下のように記述します。
:<syntaxhighlight lang=java>
DayOfWeek today = DayOfWeek.WEDNESDAY; // 完全修飾名を使用
</syntaxhighlight>
変数「today」には「WEDNESDAY」という値が設定されます。多くの言語では型安全性を確保するため、列挙型の値を参照する際は完全修飾名の使用が推奨されます。
== 列挙型と網羅性の担保 ==
列挙型で定義された列挙値をswitchや類似の制御構造で網羅していなかった場合、コンパイラ等は静的に網羅性の担保を支援することができます。
=== Rustの場合 ===
Rustは、列挙型(enum)とマッチング(match)構文を組み合わせて、パターンマッチングを実現しています。これにより、全てのパターンを網羅するかどうかをコンパイル時に確認することができます。
:<syntaxhighlight lang=rust>
enum Suit {
Heart,
Diamond,
Club,
Spade,
}
fn print_card(suit: Suit) {
match suit {
Suit::Heart => println!("This is a heart."),
Suit::Diamond => println!("This is a diamond."),
Suit::Club => println!("This is a club."),
Suit::Spade => println!("This is a spade."),
}
}
fn main() {
print_card(Suit::Heart);
print_card(Suit::Diamond);
print_card(Suit::Club);
print_card(Suit::Spade);
}
</syntaxhighlight>
=== Swiftの場合 ===
Swiftは、列挙型(enum)とスイッチ(switch)文を組み合わせて、全てのケースを網羅していることをコンパイラが確認します。
:<syntaxhighlight lang=swift>
enum Suit: String, CaseIterable { // CaseIterableプロトコルを採用
case heart
case diamond
case club
case spade
}
func printCard(suit: Suit) {
switch suit {
case .heart:
print("This is a heart.")
case .diamond:
print("This is a diamond.")
case .club:
print("This is a club.")
case .spade:
print("This is a spade.")
}
}
// すべての列挙子を走査する例
for suit in Suit.allCases {
printCard(suit: suit)
}
</syntaxhighlight>
=== F#の場合 ===
F#は代数的データ型としての列挙型を提供し、パターンマッチングによる網羅性チェックを行います。
:<syntaxhighlight lang=fsharp>
type Suit =
| Heart // ハート
| Diamond // ダイヤ
| Club // クラブ
| Spade // スペード
let printCard suit =
match suit with
| Heart -> printfn "This is a heart."
| Diamond -> printfn "This is a diamond."
| Club -> printfn "This is a club."
| Spade -> printfn "This is a spade."
// すべての列挙子で試す
printCard Heart
printCard Diamond
printCard Club
printCard Spade
</syntaxhighlight>
=== Kotlinの場合 ===
Kotlinはwhen式による網羅性チェックを提供します。
:<syntaxhighlight lang=kotlin>
enum class Suit {
HEART, // ハート
DIAMOND, // ダイヤ
CLUB, // クラブ
SPADE // スペード
}
fun printCard(suit: Suit) {
when (suit) {
Suit.HEART -> println("This is a heart.")
Suit.DIAMOND -> println("This is a diamond.")
Suit.CLUB -> println("This is a club.")
Suit.SPADE -> println("This is a spade.")
}
}
fun main() {
printCard(Suit.HEART)
printCard(Suit.DIAMOND)
printCard(Suit.CLUB)
printCard(Suit.SPADE)
}
</syntaxhighlight>
=== Javaの場合 ===
Javaはswitch文で列挙型を扱い、IDEの支援により網羅性チェックを行えます。
:<syntaxhighlight lang=java>
enum Suit {
HEART, // ハート
DIAMOND, // ダイヤ
CLUB, // クラブ
SPADE // スペード
}
class Main {
static void printCard(Suit suit) {
switch (suit) {
case HEART:
System.out.println("This is a heart.");
break;
case DIAMOND:
System.out.println("This is a diamond.");
break;
case CLUB:
System.out.println("This is a club.");
break;
case SPADE:
System.out.println("This is a spade.");
break;
}
}
public static void main(String[] args) {
printCard(Suit.HEART);
printCard(Suit.DIAMOND);
printCard(Suit.CLUB);
printCard(Suit.SPADE);
}
}
</syntaxhighlight>
=== Goの場合 ===
GoはC言語スタイルの列挙型を提供し、switch文による分岐を行います。
:<syntaxhighlight lang=go>
package main
import "fmt"
type Suit int
const (
Heart Suit = iota
Diamond
Club
Spade
)
func printCard(suit Suit) {
switch suit {
case Heart:
fmt.Println("This is a heart.")
case Diamond:
fmt.Println("This is a diamond.")
case Club:
fmt.Println("This is a club.")
case Spade:
fmt.Println("This is a spade.")
}
}
func main() {
printCard(Heart)
printCard(Diamond)
printCard(Club)
printCard(Spade)
}
</syntaxhighlight>
=== Scalaの場合 ===
Scalaはパターンマッチによる網羅性チェックを提供します。
:<syntaxhighlight lang=scala>
object Suit extends Enumeration {
type Suit = Value
val Heart, Diamond, Club, Spade = Value
}
def printCard(suit: Suit.Suit): Unit = {
suit match {
case Suit.Heart => println("This is a heart.")
case Suit.Diamond => println("This is a diamond.")
case Suit.Club => println("This is a club.")
case Suit.Spade => println("This is a spade.")
}
}
def main(args: Array[String]): Unit = {
printCard(Suit.Heart)
printCard(Suit.Diamond)
printCard(Suit.Club)
printCard(Suit.Spade)
}
</syntaxhighlight>
=== Haskellの場合 ===
Haskellは代数的データ型による強力な型システムと網羅性チェックを提供します。
:<syntaxhighlight lang=haskell>
data Suit = Heart | Diamond | Club | Spade
deriving (Show)
printCard :: Suit -> IO ()
printCard suit = case suit of
Heart -> putStrLn "This is a heart."
Diamond -> putStrLn "This is a diamond."
Club -> putStrLn "This is a club."
Spade -> putStrLn "This is a spade."
main :: IO ()
main = do
printCard Heart
printCard Diamond
printCard Club
printCard Spade
</syntaxhighlight>
これらの言語は、それぞれの特徴を活かした形で列挙型の網羅性チェックを実現しています。特に関数型言語(F#, Haskell, Scala)ではパターンマッチングと組み合わせることで、より堅牢な型安全性を提供しています。
=== 網羅性の担保とは ===
網羅性の担保とは、列挙型で定義されたすべての値(列挙子)に対して、適切な処理が漏れなく実装されていることを保証することです。
主に以下の2つの側面があります:
* コンパイル時チェック
** 列挙型の値を処理する際(switch文やパターンマッチングなど)、すべてのケースが処理されているかをコンパイラが確認
** 未処理のケースがある場合、コンパイルエラーまたは警告を発生
* 実行時の安全性
** 想定外の値による実行時エラーを防止
** デフォルトケース(else節)に頼らない、明示的な処理の実装を促進
=== 網羅性担保の意義 ===
==== バグの早期発見 ====
* 列挙型に新しい値を追加した際、その値を処理するコードが必要な箇所を容易に特定
* コンパイル時に漏れを検出できるため、実行時エラーを未然に防止
; process.swift
:<syntaxhighlight lang=swift>
enum Status {
case active
case inactive
case pending // 後から追加された値
}
func processStatus(_ status: Status) {
switch status {
case .active:
print("Active")
case .inactive:
print("Inactive")
// pendingケースが未処理のため、コンパイルエラー
}
}
</syntaxhighlight>
==== コードの品質向上 ====
* 明示的な処理の実装を強制することで、コードの意図が明確に
* デフォルトケースの安易な使用を防ぎ、各ケースに適切な処理を実装することを促進
; payment.rs
:<syntaxhighlight lang=rust>
enum PaymentStatus {
Pending,
Approved,
Rejected
}
fn process_payment(status: PaymentStatus) {
match status {
PaymentStatus::Pending => {
// 保留中の処理
}
PaymentStatus::Approved => {
// 承認時の処理
}
PaymentStatus::Rejected => {
// 却下時の処理
}
// 網羅性により、default caseは不要
}
}
</syntaxhighlight>
==== メンテナンス性の向上 ====
* リファクタリング時の安全性を確保
* 列挙型の変更影響箇所を確実に把握可能
* 開発者の意図しない処理漏れを防止
==== ドキュメントとしての役割 ====
* コード自体が仕様を表現
* すべての状態とその処理が明示的に記述されることで、コードの理解が容易に
=== 網羅性担保のベストプラクティス ===
* デフォルトケースの使用を避ける
** 新しい列挙子が追加された際の検出が困難になるため
* テストケースの作成
** すべての列挙子に対するテストを実装
** エッジケースの確認
* コードレビュー時の確認
** 網羅性チェックの警告や除外を慎重に検討
* 適切なエラーハンドリング
** 必要に応じて、未知の値に対する適切な対応を実装
これらの実践により、より堅牢で保守性の高いコードを実現することができます。
== 歴史 ==
列挙型(enumeration type)は、プログラミング言語やデータベース管理システムにおいて、複数の異なる定数を1つの集合として定義したデータ型です。型安全性とコードの可読性を向上させる重要な機能として、多くの言語で採用されています。
=== 初期の発展 ===
; 1960年代 : ''' ALGOL 60の後継言語で列挙型の概念が検討される ''' コンパイル時の型チェックによる安全性向上が目的
; 1970年代
: ''' Algol Hが先進的な列挙型を提案 ''' orderとscalarによる2種類の列挙型を導入。Pascalに影響を与える
: ''' Pascalが実用的な列挙型を実装 ''' 型安全性と値の制約を実現
; 1980年代 : ''' Ada, Modula-2などが拡張された列挙型機能を導入 ''' 列挙子への値の割り当てや演算のサポート
=== Algol Hの列挙型 ===
Algol Hは、ALGOL 68の拡張言語として提案され、現代の列挙型の重要な先駆けとなりました<ref>[https://dl.acm.org/doi/pdf/10.5555/1061701.1061711 Proposals for ALGOL H - A Superlanguage of ALGOL 68]</ref>。
;基本的な例:<syntaxhighlight lang="text">
mode suit = order (clubs, diamonds, hearts, spades, notrumps)
mode sex = scalar (male, female)
</syntaxhighlight>
; Algol Hの列挙型の特徴:
* orderとscalarという2種類の列挙型を提供
** order: 順序付きの列挙型
** scalar: 順序を持たない列挙型
* 完全な型安全性(異なる列挙型間での誤った代入を防止)
* 効率的なメモリ使用(必要最小限のビット数での表現)
* 標準入出力のサポート
* 意味的な明確さ(数値による表現よりも意図が明確)
これらの特徴の多くは、後のPascalなど、現代のプログラミング言語における列挙型の設計に影響を与えました。
{{コラム|Algol Hの先進性|width=100%|2=Algol Hの列挙型設計は非常に洞察に満ちていました。現代的な視点から見ても、以下のような先進的な特徴があります:
# <code>order</code> と <code>scalar</code> の明示的な分離
#* 多くの現代言語では、列挙型に順序があるかないかが暗黙的であったり、一貫性がない場合があります
#* 例:
#** JavaScriptのEnum-likeオブジェクトは順序の概念が曖昧
#** Pythonの<code>Enum</code>は比較可能だが、<code>IntEnum</code>や<code>StrEnum</code>との区別が必要
#** Rustでは<code>PartialOrd</code>や<code>Ord</code>トレイトの実装有無で区別するが、言語レベルでの明示的な区別はない
# 型安全性への強い注力
#* 異なる列挙型間の混同を完全に防ぐ設計
#* 現代でも、C++の旧式enumや、TypeScriptの文字列リテラル型などで、型の境界が曖昧になることがある
# メモリ効率への考慮
#* 必要最小限のビット数での表現を意識
#* これは現代でも、組み込みシステムなどで重要な考慮事項
# 標準入出力のサポート
#* Pascalなどの後続の言語でも、必ずしも標準でサポートされていない機能
#* 例:C++では、enumの入出力に追加の実装が必要
# 文脈や意図の明確化
#* <code>trumps := spades</code> vs <code>trumps := 3</code> の例に見られるように、コードの意図を明確にする設計思想
#* これは現代のドメイン駆動設計(DDD)の考え方にも通じる
このような設計は、後の言語に大きな影響を与えただけでなく、現代のプログラミング言語設計でも参考にすべき点が多くあります。特に、<code>order</code>と<code>scalar</code>の分離は、型の意味論をより正確に表現する手段として、今日の言語設計でも再考される価値があると考えられます。
}}
=== Pascalの列挙型 ===
Pascalの列挙型は、現代のプログラミング言語における列挙型の基礎となりました。
;基本的な例:<syntaxhighlight lang=pascal>
program EnumExample(output);
type
TSeasons = (Spring, Summer, Autumn, Winter);
var
season: TSeasons;
begin
Writeln('season --> Ord(season)');
Writeln('------------------------');
for season := Spring to Winter do
Writeln(season, ' --> ', Ord(season));
end.
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
season --> Ord(season)
------------------------
Spring --> 0
Summer --> 1
Autumn --> 2
Winter --> 3
</syntaxhighlight>
Pascalの列挙型の特徴:
* 順序付けられた値の集合を定義
* 各列挙子に整数値が自動的に割り当て
* 型安全性の保証
* 比較演算子のサポート
* '''Ord'''関数による序数値の取得
=== 現代言語における発展 ===
==== C/C++の拡張 ====
C++11以降では、より強力な列挙型(scoped enumeration)が導入されました:
:<syntaxhighlight lang=cpp>
enum class Season {
Spring,
Summer,
Autumn,
Winter
};
</syntaxhighlight>
特徴:
* 名前空間による分離
* 暗黙の型変換の防止
* 前方宣言のサポート
==== Javaの列挙型 ====
Java 5.0で導入された列挙型は、クラスベースの高機能な実装を提供:
:<syntaxhighlight lang=java>
public enum Season {
SPRING("Warm"),
SUMMER("Hot"),
AUTUMN("Cool"),
WINTER("Cold");
private final String temperature;
Season(String temperature) {
this.temperature = temperature;
}
public String getTemperature() {
return temperature;
}
}
</syntaxhighlight>
特徴:
* メソッドやフィールドの定義が可能
* シングルトンパターンの実装
* シリアライズのサポート
==== 関数型言語での実装 ====
Haskellなどの関数型言語では、代数的データ型として列挙型を実装:
:<syntaxhighlight lang=haskell>
data Season = Spring | Summer | Autumn | Winter
deriving (Show, Eq, Ord, Enum)
</syntaxhighlight>
特徴:
* パターンマッチングとの統合
* 型クラスの自動導出
* 完全な型安全性
=== 現代的な活用 ===
現代のソフトウェア開発では、列挙型は以下のような場面で重要な役割を果たしています:
* ドメインモデリング
** ビジネスロジックの表現
** 状態遷移の定義
* API設計
** エンドポイントの状態コード
** エラー種別の定義
* データベース設計
** 制約付きドメインの実装
** マイグレーション安全性の確保
列挙型は、型安全性とコードの可読性を向上させる重要な言語機能として、今後も進化を続けていくと考えられます。
== 列挙型のベストプラクティス ==
列挙型を効果的に使用するためのベストプラクティスをいくつか紹介します:
* 命名規則
** 列挙型名は名詞で、単数形を使用(例:DayOfWeek, CardSuit)
** 列挙子は大文字で記述(言語の慣習に従う)
* 関連データの付加
** 必要に応じて列挙子に値を関連付ける
** メソッドや計算プロパティを活用して機能を拡張
* ドキュメント化
** 各列挙子の意味や用途を明確に文書化
** API参照用のコメントを適切に記述
* テスト
** すべての列挙子に対するテストケースを作成
** 網羅性のテストを実装
これらの原則に従うことで、より保守性の高い、品質の良いコードを作成することができます。
== 用語集 ==
* データ型(data type):プログラム内で扱うデータの種類を表す型。
* 列挙型(enum):あらかじめ定義された一連の値の中から1つを選ぶことができるデータ型。
* プログラム(program):コンピュータに実行させるための命令の集まり。
* バグ(bug):プログラムの実行中に発生するエラーのこと。
* 読みやすさ(readability):コードが容易に理解できること。
* 保守性(maintainability):プログラムが変更された場合に、容易に修正できること。
* 定義方法(definition):列挙型を定義するための方法。
* 列挙子(enumerator):列挙型が取りうる値を定義するもの。
* Java:オブジェクト指向プログラミング言語の一種。
* 指定する(specify):明確に示すこと。
* 網羅性(exhaustiveness):全ての場合分けが正確に記述されていること。
* 静的に(statically):コンパイル時に判断されること。
* Rust:システムプログラミング言語の一種。
* マッチング(matching):値がどのパターンに合致するかを比較すること。
* パターンマッチング(pattern matching):値があるパターンに合致するかを判定し、適切な処理を行うこと。
[[カテゴリ:プログラミング]]
kqxokwo1lak70k7i0hho7pdkg7st276
262859
262858
2024-10-31T22:38:36Z
Ef3
694
/* 脚註 */ {{Wikipedia|{{SUBPAGENAME}}}} <references />
262859
wikitext
text/x-wiki
プログラミングにおいてデータ型は重要な要素です。データ型を正しく理解することで、効率的なコード作成やバグの防止が可能になります。その中でも列挙型は、特定の値の集合から選択できる便利なデータ型です。
列挙型は、決まった値以外を選べないよう制約を設けることで、入力ミスを防ぎます。また、コードの可読性や保守性を向上させるためにも役立ちます。
この節では、列挙型の基本概念、使用方法、実際の活用例について学び、より洗練されたコード作成を目指します。
__TOC__
== 列挙型とは ==
プログラミングでは、データの種類を明確にする必要があります。数字、文字列、真偽値など、それぞれに異なる処理が必要だからです。
列挙型は、あらかじめ定義された複数の値から一つを選択するデータ型です。例えば、「曜日」を表す列挙型では、「月曜日」「火曜日」「水曜日」などが選べます。列挙型を使うことで、特定の値しか取れないことが保証され、プログラムの品質向上やバグの削減に役立ちます。
列挙型の主な利点:
* タイプセーフティの向上
* コードの可読性向上
* コンパイル時のエラーチェック
* リファクタリングの容易さ
== 列挙型の定義方法 ==
列挙型は、プログラミング言語によって定義方法が異なりますが、一般的には以下のような形式で定義します。
:<syntaxhighlight lang=java>
enum 列挙型名 {
列挙子1,
列挙子2,
列挙子3,
...
}
</syntaxhighlight>
ここで、「列挙型名」は定義する列挙型の名前を、「列挙子1」「列挙子2」「列挙子3」といったものは、列挙型が取りうる値を定義するものです。
例えば、以下のように「曜日」を表す列挙型を定義することができます(プログラミング言語はJava)。
:<syntaxhighlight lang=java>
enum DayOfWeek {
MONDAY, // 慣習的に大文字で定義
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
</syntaxhighlight>
列挙型名は「DayOfWeek」とし、それぞれの列挙子には曜日の名前を設定しています。多くの言語では、列挙子は慣習的に大文字で記述します。
== 列挙型の使用方法 ==
列挙型を使用する際には、定義した列挙型の名前と列挙子を指定します。
例えば、上記の「DayOfWeek」列挙型を使用する場合には、以下のように記述します。
:<syntaxhighlight lang=java>
DayOfWeek today = DayOfWeek.WEDNESDAY; // 完全修飾名を使用
</syntaxhighlight>
変数「today」には「WEDNESDAY」という値が設定されます。多くの言語では型安全性を確保するため、列挙型の値を参照する際は完全修飾名の使用が推奨されます。
== 列挙型と網羅性の担保 ==
列挙型で定義された列挙値をswitchや類似の制御構造で網羅していなかった場合、コンパイラ等は静的に網羅性の担保を支援することができます。
=== Rustの場合 ===
Rustは、列挙型(enum)とマッチング(match)構文を組み合わせて、パターンマッチングを実現しています。これにより、全てのパターンを網羅するかどうかをコンパイル時に確認することができます。
:<syntaxhighlight lang=rust>
enum Suit {
Heart,
Diamond,
Club,
Spade,
}
fn print_card(suit: Suit) {
match suit {
Suit::Heart => println!("This is a heart."),
Suit::Diamond => println!("This is a diamond."),
Suit::Club => println!("This is a club."),
Suit::Spade => println!("This is a spade."),
}
}
fn main() {
print_card(Suit::Heart);
print_card(Suit::Diamond);
print_card(Suit::Club);
print_card(Suit::Spade);
}
</syntaxhighlight>
=== Swiftの場合 ===
Swiftは、列挙型(enum)とスイッチ(switch)文を組み合わせて、全てのケースを網羅していることをコンパイラが確認します。
:<syntaxhighlight lang=swift>
enum Suit: String, CaseIterable { // CaseIterableプロトコルを採用
case heart
case diamond
case club
case spade
}
func printCard(suit: Suit) {
switch suit {
case .heart:
print("This is a heart.")
case .diamond:
print("This is a diamond.")
case .club:
print("This is a club.")
case .spade:
print("This is a spade.")
}
}
// すべての列挙子を走査する例
for suit in Suit.allCases {
printCard(suit: suit)
}
</syntaxhighlight>
=== F#の場合 ===
F#は代数的データ型としての列挙型を提供し、パターンマッチングによる網羅性チェックを行います。
:<syntaxhighlight lang=fsharp>
type Suit =
| Heart // ハート
| Diamond // ダイヤ
| Club // クラブ
| Spade // スペード
let printCard suit =
match suit with
| Heart -> printfn "This is a heart."
| Diamond -> printfn "This is a diamond."
| Club -> printfn "This is a club."
| Spade -> printfn "This is a spade."
// すべての列挙子で試す
printCard Heart
printCard Diamond
printCard Club
printCard Spade
</syntaxhighlight>
=== Kotlinの場合 ===
Kotlinはwhen式による網羅性チェックを提供します。
:<syntaxhighlight lang=kotlin>
enum class Suit {
HEART, // ハート
DIAMOND, // ダイヤ
CLUB, // クラブ
SPADE // スペード
}
fun printCard(suit: Suit) {
when (suit) {
Suit.HEART -> println("This is a heart.")
Suit.DIAMOND -> println("This is a diamond.")
Suit.CLUB -> println("This is a club.")
Suit.SPADE -> println("This is a spade.")
}
}
fun main() {
printCard(Suit.HEART)
printCard(Suit.DIAMOND)
printCard(Suit.CLUB)
printCard(Suit.SPADE)
}
</syntaxhighlight>
=== Javaの場合 ===
Javaはswitch文で列挙型を扱い、IDEの支援により網羅性チェックを行えます。
:<syntaxhighlight lang=java>
enum Suit {
HEART, // ハート
DIAMOND, // ダイヤ
CLUB, // クラブ
SPADE // スペード
}
class Main {
static void printCard(Suit suit) {
switch (suit) {
case HEART:
System.out.println("This is a heart.");
break;
case DIAMOND:
System.out.println("This is a diamond.");
break;
case CLUB:
System.out.println("This is a club.");
break;
case SPADE:
System.out.println("This is a spade.");
break;
}
}
public static void main(String[] args) {
printCard(Suit.HEART);
printCard(Suit.DIAMOND);
printCard(Suit.CLUB);
printCard(Suit.SPADE);
}
}
</syntaxhighlight>
=== Goの場合 ===
GoはC言語スタイルの列挙型を提供し、switch文による分岐を行います。
:<syntaxhighlight lang=go>
package main
import "fmt"
type Suit int
const (
Heart Suit = iota
Diamond
Club
Spade
)
func printCard(suit Suit) {
switch suit {
case Heart:
fmt.Println("This is a heart.")
case Diamond:
fmt.Println("This is a diamond.")
case Club:
fmt.Println("This is a club.")
case Spade:
fmt.Println("This is a spade.")
}
}
func main() {
printCard(Heart)
printCard(Diamond)
printCard(Club)
printCard(Spade)
}
</syntaxhighlight>
=== Scalaの場合 ===
Scalaはパターンマッチによる網羅性チェックを提供します。
:<syntaxhighlight lang=scala>
object Suit extends Enumeration {
type Suit = Value
val Heart, Diamond, Club, Spade = Value
}
def printCard(suit: Suit.Suit): Unit = {
suit match {
case Suit.Heart => println("This is a heart.")
case Suit.Diamond => println("This is a diamond.")
case Suit.Club => println("This is a club.")
case Suit.Spade => println("This is a spade.")
}
}
def main(args: Array[String]): Unit = {
printCard(Suit.Heart)
printCard(Suit.Diamond)
printCard(Suit.Club)
printCard(Suit.Spade)
}
</syntaxhighlight>
=== Haskellの場合 ===
Haskellは代数的データ型による強力な型システムと網羅性チェックを提供します。
:<syntaxhighlight lang=haskell>
data Suit = Heart | Diamond | Club | Spade
deriving (Show)
printCard :: Suit -> IO ()
printCard suit = case suit of
Heart -> putStrLn "This is a heart."
Diamond -> putStrLn "This is a diamond."
Club -> putStrLn "This is a club."
Spade -> putStrLn "This is a spade."
main :: IO ()
main = do
printCard Heart
printCard Diamond
printCard Club
printCard Spade
</syntaxhighlight>
これらの言語は、それぞれの特徴を活かした形で列挙型の網羅性チェックを実現しています。特に関数型言語(F#, Haskell, Scala)ではパターンマッチングと組み合わせることで、より堅牢な型安全性を提供しています。
=== 網羅性の担保とは ===
網羅性の担保とは、列挙型で定義されたすべての値(列挙子)に対して、適切な処理が漏れなく実装されていることを保証することです。
主に以下の2つの側面があります:
* コンパイル時チェック
** 列挙型の値を処理する際(switch文やパターンマッチングなど)、すべてのケースが処理されているかをコンパイラが確認
** 未処理のケースがある場合、コンパイルエラーまたは警告を発生
* 実行時の安全性
** 想定外の値による実行時エラーを防止
** デフォルトケース(else節)に頼らない、明示的な処理の実装を促進
=== 網羅性担保の意義 ===
==== バグの早期発見 ====
* 列挙型に新しい値を追加した際、その値を処理するコードが必要な箇所を容易に特定
* コンパイル時に漏れを検出できるため、実行時エラーを未然に防止
; process.swift
:<syntaxhighlight lang=swift>
enum Status {
case active
case inactive
case pending // 後から追加された値
}
func processStatus(_ status: Status) {
switch status {
case .active:
print("Active")
case .inactive:
print("Inactive")
// pendingケースが未処理のため、コンパイルエラー
}
}
</syntaxhighlight>
==== コードの品質向上 ====
* 明示的な処理の実装を強制することで、コードの意図が明確に
* デフォルトケースの安易な使用を防ぎ、各ケースに適切な処理を実装することを促進
; payment.rs
:<syntaxhighlight lang=rust>
enum PaymentStatus {
Pending,
Approved,
Rejected
}
fn process_payment(status: PaymentStatus) {
match status {
PaymentStatus::Pending => {
// 保留中の処理
}
PaymentStatus::Approved => {
// 承認時の処理
}
PaymentStatus::Rejected => {
// 却下時の処理
}
// 網羅性により、default caseは不要
}
}
</syntaxhighlight>
==== メンテナンス性の向上 ====
* リファクタリング時の安全性を確保
* 列挙型の変更影響箇所を確実に把握可能
* 開発者の意図しない処理漏れを防止
==== ドキュメントとしての役割 ====
* コード自体が仕様を表現
* すべての状態とその処理が明示的に記述されることで、コードの理解が容易に
=== 網羅性担保のベストプラクティス ===
* デフォルトケースの使用を避ける
** 新しい列挙子が追加された際の検出が困難になるため
* テストケースの作成
** すべての列挙子に対するテストを実装
** エッジケースの確認
* コードレビュー時の確認
** 網羅性チェックの警告や除外を慎重に検討
* 適切なエラーハンドリング
** 必要に応じて、未知の値に対する適切な対応を実装
これらの実践により、より堅牢で保守性の高いコードを実現することができます。
== 歴史 ==
列挙型(enumeration type)は、プログラミング言語やデータベース管理システムにおいて、複数の異なる定数を1つの集合として定義したデータ型です。型安全性とコードの可読性を向上させる重要な機能として、多くの言語で採用されています。
=== 初期の発展 ===
; 1960年代 : ''' ALGOL 60の後継言語で列挙型の概念が検討される ''' コンパイル時の型チェックによる安全性向上が目的
; 1970年代
: ''' Algol Hが先進的な列挙型を提案 ''' orderとscalarによる2種類の列挙型を導入。Pascalに影響を与える
: ''' Pascalが実用的な列挙型を実装 ''' 型安全性と値の制約を実現
; 1980年代 : ''' Ada, Modula-2などが拡張された列挙型機能を導入 ''' 列挙子への値の割り当てや演算のサポート
=== Algol Hの列挙型 ===
Algol Hは、ALGOL 68の拡張言語として提案され、現代の列挙型の重要な先駆けとなりました<ref>[https://dl.acm.org/doi/pdf/10.5555/1061701.1061711 Proposals for ALGOL H - A Superlanguage of ALGOL 68]</ref>。
;基本的な例:<syntaxhighlight lang="text">
mode suit = order (clubs, diamonds, hearts, spades, notrumps)
mode sex = scalar (male, female)
</syntaxhighlight>
; Algol Hの列挙型の特徴:
* orderとscalarという2種類の列挙型を提供
** order: 順序付きの列挙型
** scalar: 順序を持たない列挙型
* 完全な型安全性(異なる列挙型間での誤った代入を防止)
* 効率的なメモリ使用(必要最小限のビット数での表現)
* 標準入出力のサポート
* 意味的な明確さ(数値による表現よりも意図が明確)
これらの特徴の多くは、後のPascalなど、現代のプログラミング言語における列挙型の設計に影響を与えました。
{{コラム|Algol Hの先進性|width=100%|2=Algol Hの列挙型設計は非常に洞察に満ちていました。現代的な視点から見ても、以下のような先進的な特徴があります:
# <code>order</code> と <code>scalar</code> の明示的な分離
#* 多くの現代言語では、列挙型に順序があるかないかが暗黙的であったり、一貫性がない場合があります
#* 例:
#** JavaScriptのEnum-likeオブジェクトは順序の概念が曖昧
#** Pythonの<code>Enum</code>は比較可能だが、<code>IntEnum</code>や<code>StrEnum</code>との区別が必要
#** Rustでは<code>PartialOrd</code>や<code>Ord</code>トレイトの実装有無で区別するが、言語レベルでの明示的な区別はない
# 型安全性への強い注力
#* 異なる列挙型間の混同を完全に防ぐ設計
#* 現代でも、C++の旧式enumや、TypeScriptの文字列リテラル型などで、型の境界が曖昧になることがある
# メモリ効率への考慮
#* 必要最小限のビット数での表現を意識
#* これは現代でも、組み込みシステムなどで重要な考慮事項
# 標準入出力のサポート
#* Pascalなどの後続の言語でも、必ずしも標準でサポートされていない機能
#* 例:C++では、enumの入出力に追加の実装が必要
# 文脈や意図の明確化
#* <code>trumps := spades</code> vs <code>trumps := 3</code> の例に見られるように、コードの意図を明確にする設計思想
#* これは現代のドメイン駆動設計(DDD)の考え方にも通じる
このような設計は、後の言語に大きな影響を与えただけでなく、現代のプログラミング言語設計でも参考にすべき点が多くあります。特に、<code>order</code>と<code>scalar</code>の分離は、型の意味論をより正確に表現する手段として、今日の言語設計でも再考される価値があると考えられます。
}}
=== Pascalの列挙型 ===
Pascalの列挙型は、現代のプログラミング言語における列挙型の基礎となりました。
;基本的な例:<syntaxhighlight lang=pascal>
program EnumExample(output);
type
TSeasons = (Spring, Summer, Autumn, Winter);
var
season: TSeasons;
begin
Writeln('season --> Ord(season)');
Writeln('------------------------');
for season := Spring to Winter do
Writeln(season, ' --> ', Ord(season));
end.
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
season --> Ord(season)
------------------------
Spring --> 0
Summer --> 1
Autumn --> 2
Winter --> 3
</syntaxhighlight>
Pascalの列挙型の特徴:
* 順序付けられた値の集合を定義
* 各列挙子に整数値が自動的に割り当て
* 型安全性の保証
* 比較演算子のサポート
* '''Ord'''関数による序数値の取得
=== 現代言語における発展 ===
==== C/C++の拡張 ====
C++11以降では、より強力な列挙型(scoped enumeration)が導入されました:
:<syntaxhighlight lang=cpp>
enum class Season {
Spring,
Summer,
Autumn,
Winter
};
</syntaxhighlight>
特徴:
* 名前空間による分離
* 暗黙の型変換の防止
* 前方宣言のサポート
==== Javaの列挙型 ====
Java 5.0で導入された列挙型は、クラスベースの高機能な実装を提供:
:<syntaxhighlight lang=java>
public enum Season {
SPRING("Warm"),
SUMMER("Hot"),
AUTUMN("Cool"),
WINTER("Cold");
private final String temperature;
Season(String temperature) {
this.temperature = temperature;
}
public String getTemperature() {
return temperature;
}
}
</syntaxhighlight>
特徴:
* メソッドやフィールドの定義が可能
* シングルトンパターンの実装
* シリアライズのサポート
==== 関数型言語での実装 ====
Haskellなどの関数型言語では、代数的データ型として列挙型を実装:
:<syntaxhighlight lang=haskell>
data Season = Spring | Summer | Autumn | Winter
deriving (Show, Eq, Ord, Enum)
</syntaxhighlight>
特徴:
* パターンマッチングとの統合
* 型クラスの自動導出
* 完全な型安全性
=== 現代的な活用 ===
現代のソフトウェア開発では、列挙型は以下のような場面で重要な役割を果たしています:
* ドメインモデリング
** ビジネスロジックの表現
** 状態遷移の定義
* API設計
** エンドポイントの状態コード
** エラー種別の定義
* データベース設計
** 制約付きドメインの実装
** マイグレーション安全性の確保
列挙型は、型安全性とコードの可読性を向上させる重要な言語機能として、今後も進化を続けていくと考えられます。
== 列挙型のベストプラクティス ==
列挙型を効果的に使用するためのベストプラクティスをいくつか紹介します:
* 命名規則
** 列挙型名は名詞で、単数形を使用(例:DayOfWeek, CardSuit)
** 列挙子は大文字で記述(言語の慣習に従う)
* 関連データの付加
** 必要に応じて列挙子に値を関連付ける
** メソッドや計算プロパティを活用して機能を拡張
* ドキュメント化
** 各列挙子の意味や用途を明確に文書化
** API参照用のコメントを適切に記述
* テスト
** すべての列挙子に対するテストケースを作成
** 網羅性のテストを実装
これらの原則に従うことで、より保守性の高い、品質の良いコードを作成することができます。
== 用語集 ==
* データ型(data type):プログラム内で扱うデータの種類を表す型。
* 列挙型(enum):あらかじめ定義された一連の値の中から1つを選ぶことができるデータ型。
* プログラム(program):コンピュータに実行させるための命令の集まり。
* バグ(bug):プログラムの実行中に発生するエラーのこと。
* 読みやすさ(readability):コードが容易に理解できること。
* 保守性(maintainability):プログラムが変更された場合に、容易に修正できること。
* 定義方法(definition):列挙型を定義するための方法。
* 列挙子(enumerator):列挙型が取りうる値を定義するもの。
* Java:オブジェクト指向プログラミング言語の一種。
* 指定する(specify):明確に示すこと。
* 網羅性(exhaustiveness):全ての場合分けが正確に記述されていること。
* 静的に(statically):コンパイル時に判断されること。
* Rust:システムプログラミング言語の一種。
* マッチング(matching):値がどのパターンに合致するかを比較すること。
* パターンマッチング(pattern matching):値があるパターンに合致するかを判定し、適切な処理を行うこと。
== 脚註 ==
{{Wikipedia|{{SUBPAGENAME}}}}
<references />
{{DEFAULTSORT:れつきよかた}}
[[Category:プログラミング]]
b49jn8rt5ev9b572wfvazeu6hv2vgc4
プログラミング/パターンマッチング
0
40099
262860
250881
2024-10-31T23:14:44Z
Ef3
694
パターンマッチングは、プログラミングにおいて与えられたデータや構造を特定のパターンに基づいて識別し、条件に一致した場合に対応する処理を実行する手法です。複雑な条件やデータ構造を簡潔に表現でき、可読性や保守性の向上に役立ちます。
262860
wikitext
text/x-wiki
{{Nav}}
= パターンマッチング =
パターンマッチングは、プログラミングにおいて与えられたデータや構造を特定のパターンに基づいて識別し、条件に一致した場合に対応する処理を実行する手法です。複雑な条件やデータ構造を簡潔に表現でき、可読性や保守性の向上に役立ちます。
== 特徴 ==
* 型安全性: パターンマッチングは型チェックを組み込むことで、安全にデータを操作できます。
* 柔軟な条件指定: 単純な値の一致だけでなく、構造、型、条件付きマッチングが可能です。
* 明快なコード構造: 各パターンの処理を明確に表現することで、コードの意図が分かりやすくなります。
== ユースケース ==
* データ構造の分解
* 型に基づく分岐処理
* 条件分岐の簡素化
* 複雑なデータの条件付き処理
== 言語別の実例 ==
=== Scala ===
Scalaでは、<code>match</code>キーワードを用いてパターンマッチングを行います。
:<syntaxhighlight lang=scala>
val value: Any = ("Hello", 42)
value match {
case (str: String, num: Int) if num > 40 => println(s"String: $str, Number is greater than 40")
case _ => println("No match")
}
</syntaxhighlight>
この例では、タプル内の要素が条件を満たす場合に特定の処理を行います。
=== Kotlin ===
Kotlinでは、<code>when</code>構文がパターンマッチングの一部として機能します。
:<syntaxhighlight lang=kotlin>
val obj: Any = 42
when (obj) {
is String -> println("It's a string!")
is Int -> println("It's an integer!")
else -> println("Unknown type")
}
</syntaxhighlight>
この構文は、型に基づいた条件分岐を簡単に記述できます。
=== Haskell ===
Haskellのパターンマッチングは関数定義内で自然に使用されます。
:<syntaxhighlight lang=haskell>
factorial :: Int -> Int
factorial 0 = 1
factorial n = n * factorial (n - 1)
</syntaxhighlight>
この例では、<code>0</code>にマッチした場合は1を返し、それ以外の整数では再帰的な計算を行います。
=== Rust ===
Rustでは、<code>match</code>キーワードでパターンマッチングを行い、特にオプション型やエラーハンドリングに便利です。
:<syntaxhighlight lang=rust>
let number = Some(5);
match number {
Some(n) if n > 3 => println!("Number is greater than 3"),
Some(n) => println!("Number is: {}", n),
None => println!("No number"),
}
</syntaxhighlight>
この例では、<code>Option</code>型のマッチングが行われ、条件に応じて異なる処理をします。
=== Ruby ===
Rubyでは、<code>case</code>文を使用してパターンマッチングに近い処理を行うことができます。Ruby 2.7以降では、<code>case</code>文と<code>in</code>句を使ってより強力なパターンマッチングが可能になりました。
:<syntaxhighlight lang=ruby>
value = ["Hello", 42]
case value
when ["Hello", Integer] if value[1] > 40
puts "String is 'Hello' and number is greater than 40"
else
puts "No match"
end
</syntaxhighlight>
この例では、配列の構造と要素の型に基づいてパターンマッチングを行っています。さらに<code>in</code>句を使うことで、より直感的なパターンマッチングが可能です。
:<syntaxhighlight lang=ruby>
value = { name: "Alice", age: 30 }
case value
in { name: "Alice", age: age } if age > 20
puts "Name is Alice and age is greater than 20"
else
puts "No match"
end
</syntaxhighlight>
この構文では、ハッシュの構造を分解し、条件に応じて処理を実行しています。Rubyのパターンマッチングは、可読性が高く、複雑な条件でもシンプルに記述できるのが特徴です。
=== Python ===
Python 3.10以降では、<code>match</code>文が導入されました。
:<syntaxhighlight lang=python>
value = ("Hello", 42)
match value:
case (str_val, num) if num > 40:
print(f"String: {str_val}, Number is greater than 40")
case _:
print("No match")
</syntaxhighlight>
Pythonのパターンマッチングは構造の分解やガード条件をサポートします。
== キャプチャー ==
パターンマッチングにおける'''キャプチャー'''とは、パターンに一致したデータを取り出し、その値を変数にバインドして利用する機能を指します。キャプチャーは、データの構造を分解しつつ、その中の特定の要素を変数として保持できるため、条件に一致したデータを後続の処理で使用することができます。
キャプチャーは、パターンマッチングを行う際に単なる一致判定を超えて、マッチした部分のデータをプログラム内で再利用できることが特長です。これにより、複雑なデータ構造やオブジェクトをシンプルに扱えるようになります。
=== 例: Scala におけるキャプチャー ===
Scalaでは、<code>match</code>式内でキャプチャー変数を利用できます。
:<syntaxhighlight lang=scala>
val data = (5, "Hello")
data match {
case (num, str) => println(s"Number: $num, String: $str")
case _ => println("No match")
}
</syntaxhighlight>
この例では、タプルの各要素を<code>num</code>と<code>str</code>にキャプチャーし、それを<code>println</code>で出力しています。
=== 例: Ruby におけるキャプチャー ===
Ruby 2.7以降の<code>in</code>句でもキャプチャーを行うことができます。
:<syntaxhighlight lang=ruby>
value = { name: "Bob", age: 40 }
case value
in { name: name, age: age }
puts "Name: #{name}, Age: #{age}"
else
puts "No match"
end
</syntaxhighlight>
この例では、ハッシュのキーに基づいて値をキャプチャーし、それらを変数として扱っています。
=== 例: Python におけるキャプチャー ===
Python 3.10以降では、<code>match</code>文でキャプチャーがサポートされています。
:<syntaxhighlight lang=python>
data = ("Alice", 25)
match data:
case (name, age):
print(f"Name: {name}, Age: {age}")
case _:
print("No match")
</syntaxhighlight>
この例では、タプルの要素を<code>name</code>と<code>age</code>としてキャプチャーし、それを後続の処理で使用しています。
=== ベストプラクティス ===
* '''変数名に意味を持たせる''': キャプチャーしたデータを再利用する際に、分かりやすい変数名を使うと可読性が向上します。
* '''ガード条件を併用する''': キャプチャーとともにガード条件を使うことで、さらに詳細な条件に基づいたマッチングが可能になります。
* '''スコープに注意''': キャプチャーした変数は通常、そのパターンマッチングブロック内でのみ有効です。スコープを意識して使用しましょう。
キャプチャーを利用することで、パターンマッチングは単なる一致判定から、柔軟でパワフルなデータ処理手法へと進化します。
== ベストプラクティス ==
* '''意図を明確にする''': パターンの順番を考慮し、マッチする最適な順番でケースを記述しましょう。
* '''ガード条件を活用''': 条件付きマッチを使用して、特定の条件を満たした場合のみ処理を実行します。
* '''デフォルトケースを含める''': 必ず<code>else</code>や<code>_</code>のケースを追加し、予期しない入力にも対応しましょう。
* '''シンプルに保つ''': あまり複雑になりすぎないように、必要に応じて関数に分割するなどの工夫を行います。
== まとめ ==
パターンマッチングは、複雑なデータ構造の処理や型安全な条件分岐を簡潔に表現できる強力な手法です。[[Scala]]、[[Kotlin]]、[[Haskell]]、[[Rust]]、[[Ruby]]、[[Python]]などの言語では、それぞれの特性に応じてパターンマッチングを活用し、可読性や保守性を高めることができます。
{{Nav}}
{{DEFAULTSORT:はたんまつちんく}}
[[Category:プログラミング]]
dc9iogsuqcvfq11f3y6yuiklg9yh1sf
学習方法/小学校全般/難関大学進学を考える場合
0
42886
262855
261344
2024-10-31T16:52:40Z
Nermer314
62933
262855
wikitext
text/x-wiki
:※ 中高生になってから気づいても手遅れなので、小学校の段階で説明する。
== 参考書の予習 ==
=== 学問は、参考書で早めに中学高校に入るべし。 ===
10歳児って、もっと頭いいですよ。歴史なら、10歳児で三国志の漫画を読めたりする子、いっぱいいるワケですし。中学受験用の、受験研究社とか旺文社の参考書、あんなん、算数以外は小4くらいが読む本です。読めば大体、分かるんだし。
昭和の昔は予習用の参考書が無かったが(受験研究社の本はやや復習用)、今では予習用の平易でイメージしやすい参考書があるので、それで中学範囲の参考書を読もう。
さらに、中学受験の細かい問題集よりも先に、中学参考書そのものを読み始めるべきです。受験の直前の数か月前くらいに、中学受験の問題集を読めば良いのです。
たとえば、私立中高で「東大合格者 毎年 ●●人」とか出している名門中高一貫校の連中は、もう小学校時代に中学参考書の大半を終わらしている。中学時代に高校参考書に入るのが普通である。
YouTubeの塾動画などで、そういう私立中高一貫校の卒業生の塾講師などからの報告が上がっている。
特に小学校の教科書・参考書は、思考・検証の水準のあさい物が多く、小学校の時点で止まると、表面的な知識になりやすい。なので、なるべく早めに、少なくとも中学レベルの参考書に、入るのが良い。
小学校の6年の算数の文章題とか、すでに塾などで小4~小5から文章題を学んでいた子には、ほとんど効果が無いので、家庭では、さっさと中学の数学を始めるべきである。あるいは、理科で、中学を始めるべき。
他のページでも述べたが、どうしても図鑑(ずかん)などを読みふけりたい場合は、まず先に、参考書を通読し終える事。たとえば機械の図鑑など、小学校の理科であつかわない内容の図鑑を読む場合でも、先に中学の理科まで学んでしまう方が効果的だろう。
ただし、中学の社会科の参考書のうち高校受験用のハイレベルな参考書が、予習用には作られていない。中3の復習用に、中学社会科の参考書の「地理」分野が、作られてしまっている。
このため、社会科が好きな子は、なんらかの対策をしないといけない。
:<del>対策A - 社会科は予習せずに英語など他教科の予習をする。</del> ← ※社会科が好きな子の場合、この選択肢は、アリエナイ。
:対策B - 簡単な参考書(定期テスト対策レベルのヤツ)を使い、地理→歴史→公民の順番で予習をする。
:対策C - 歴史から読む。
:対策D - あきらめて地理から、復習用の参考書を読む。
== 副教科や部活など ==
=== 部活とは距離を置く ===
たとえば部活の時間とか、そういう難関大学進学者の多い中高では、(部活の時間が)少ない。
YouTubeの塾動画などで、そういう私立中高一貫校の卒業生の塾講師などからの報告が上がっている。
部活は週に2日のみ、1人2時間まで、とかそういう制限がある。
さらに部活の引退が早く、高校2年生の秋で部活を引退する。
よって、'''部活の負担が重い中高への、進学をさけるべき'''である。「文武両道」とか「人格形成」とかそういうキーワードの中高は、避ける。文武「'''別'''」道はギリギリ可。もちろん、最初から主要5教科に専念する学校のほうが、もっと良い。
部活とかああいうのは、気分転換とか、運動不足の解消とか、そういうののために、週に2時間ていど、ときどき少しだけヤレば十分、とでも考えれば充分。
医学部とかだと面接で運動部アピールとかあるが、実態は、国立医学部などの進学志望者は籍だけ運動部においている'''幽霊部員'''である。だから「東大合格者 ●●人」とかの高校の部活の大会出場実績は、地区予選あたりで即座に負けるのが実態。
でもそれでも東大も京大も困ってない。なぜなら東大も京大も、スポーツ大学でもなければ芸術大学でもないからだ。
そういう進学校で全国大会とか県大会上位に出てる子は、フェンシング部とかのマイナースポーツばかり。けっして野球部とかサッカー部とかの公立中学にでもある部活で、勝ち抜いているわけではない。マイナースポーツだと、1~2回勝つだけで全国大会に出れたりする。
== 進学先の選びかた ==
=== 進学実績だけで中高を選ぶ ===
中学受験先として、進学実績の悪い学校は、避けるべき。「独自の教育方針」みたいなのは、勉強の苦手だったりする子の、敗者復活戦のために、独自の教育をする学校でしかない。
そういう進学実績がイマイチの私立は、「カネ持ちの家に生まれたから塾に通って最低限の勉強はするけれど、でも本音では、勉強があまり好きでもなく得意でもない」という感じの子のための私立である。
けっして、なにか中世ルネッサンスのレオナルド=ダ=ヴィンチだとか、あるいは大正自由教育のような、なにか全人格的な人間形成を行うことを目指した学校ではない。なぜなら東大・京大の人間が、大してスポーツを出来なくても困らないのが現実である。それと同じ。
このような東大・京大などの進学者の統計的な事実がある。その事実から、けっして目を背けてはいけない。都合の悪い統計的現象から目を背ける時点で、人間形成が不十分である。
日本に、全人格的な人間形成を行うことを目指した学校は無い。小中高だけではなく、大学にもない。
リベラルアーツ学部とかあるが、ああいう所はスポーツも芸術もやらないし、理系もあまりやらないし、単に文系科目を複数専攻できるだけである。
もう一度いう。'''日本に、全人格的な人間形成を行うことを目指した学校は無い'''。
そもそも世の中は、分業で、なりたっている。
なので、そもそも論として、あまり全人格的な人間形成とやらを必要としない。
英語の知識と世界史の知識みたいに、連動する知識であるなら、それは再利用性が高い知識であるので、学ぶ価値の高い有用な知識である。
しかし、体育や芸術は、連動しておらず、再利用性が低い。学校の授業で習う程度は良いが、それ以上は、あまり深入りをしないほうが安全だろう。
難関大への進学実績がイマイチの私立の中高も、普通の人生では遭遇しないような金持ち家庭の子や5教科以外の芸術などの才能ある子に遭遇しがちなのは面白い学校かもしれませんが、しかし医者や弁護士や科学者といった高度技術職に子どもをつけたい家庭にとっては、単純に学力がイマイチなので、あまりお勧めできない学校でしょうか。
自分の進路や志望にあった学校を選びましょう。
=== 学校に期待をしない ===
勉強は、基本的には、自分で行うものである。
学校は、単に方向性の確認や、独学だと困難な実習などの機会を与えられる場として活用するのが良い。
=== スポーツ産業などに期待をしない ===
だから、公立高校の作っている、スポーツ高校だとか芸術高校とか、ああいうのも、一般人は避けるべきである。なにかそういう才能のある特殊人材だけが進学すればよい。
部活などで、全国大会に出場できそうな才能のある人物だけが、そういうスポーツ高校だとかに進学すればよい。それ以外は、目指さないのが安全である。そもそも、ああいうスポーツとかの業界は、終身雇用ではない。地方リーグだとか2軍とかマイナースポーツなどだと、20歳台の後半とかでプロ引退とかをさせられる場合も多い業界である。
そういうスポーツ高校に進学できない時点で、才能が無いと考え、体育・芸術などは捨てるのが良いだろう。
大手新聞社やテレビ局などのマスコミが、スポーツとかをいくら宣伝しても、でもその大手新聞社の社長とか会長は、スポーツの学歴なんか無い、東大卒・京大卒とか、そんなのだよ。
まあ、サラリーマン社長とかなら別かもしれないが、その場合は別の人間が実権を握っている。
p7u8nd4sjsfoqvhcxvlgs8akrueuzsh
高等学校日本史探究/古代国家の形成Ⅰ
0
43191
262864
262839
2024-11-01T01:13:38Z
春秋菊
84653
遣隋使の部分を修正。場所を変更。国書の遣隋使と留学生らの遣隋使に差があったため。
262864
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>古代国家の形成Ⅰ
==6世紀の朝鮮半島と倭==
ヤマト政権は、6世紀まで朝鮮半島南部の伽耶諸国に影響力を持っていました。しかし、高句麗が南下するのにともない、圧迫された百済や新羅が伽耶地域に進出しました。倭で政治を主導していた大伴金村もこれに伴って、6世紀初めに失脚しました。『日本書紀』にも、伽耶西部に百済の支配権が及んだことを問題視されたことが記載されています。6世紀中ごろには、百済新羅両国が伽耶を併合しました。結果、ヤマト政権は、朝鮮半島にもつ影響力を後退させました。
このころ、'''仏教'''が正式に伝来しました。百済の聖明王が欽明天皇に仏像や経典を送ったとされます。ただし、それまでにも民間では、仏教の伝来があったとされます。
大伴氏が衰退した後、大王家の欽明天皇のもと物部氏と新興の蘇我氏が台頭しました。蘇我氏は、①大王家と婚姻関係を結ぶ②渡来人との連携を強化する③屯倉など財政権を強化するなどの方法で勢力を拡大していきました。さらに、仏教を積極的に受容しました。一方で、物部氏や中臣氏は、在来の信仰を重んじ、仏教を排除しようとしていました。そんな中、'''蘇我馬子'''は王位継承問題もからんで'''物部守屋'''と対立し、587年に守屋を滅ぼしました。さらに、馬子は自身が擁立した崇峻天皇を592年に暗殺しました。このようにして、蘇我氏が実権を握りました。
==推古朝の外交と内政==
崇峻天皇が暗殺されたのち、飛鳥で'''推古天皇'''が即位しました。初の女性の天皇です。ここで登用されたのが'''厩戸王'''(のちの'''聖徳太子''')でした。『日本書紀』にも、「摂政」という言葉があり、政治に参画したことがうかがえます。推古天皇も厩戸王も蘇我氏と血縁があり、蘇我馬子の影響力が強い政権でした。推古天皇は、厩戸王と蘇我馬子らに仏教を興隆させるよう命じました。これは、仏教が一部の人に信仰されるのにとどまっていたからです。蘇我馬子は、'''法興寺'''('''飛鳥寺''')を、厩戸王は、'''四天王寺'''や'''法隆寺'''('''斑鳩寺''')を、秦河勝も広隆寺を建立しました。
推古朝では、中国統一王朝である'''隋'''と外交を結ぶため、'''遣隋使'''を派遣しました。『隋書』によれば、600年に一度遣隋使を派遣していますが、『日本書紀』などにはその記述がありません。
遣隋使からの情報により、推古朝は、国家組織を再編成しようとしました。603年に'''冠位十二階'''を定め、個人の功績に応じて冠位を与えました。これにより、それまでの氏姓制度によって集団ごとに編成された身分秩序を再編しようとしました。翌604年にも'''憲法十七条'''を定めました。これは、役人を統制するための道徳規範としての意味を持ちます。憲法十七条は、仏教を重んじているのに加え、日本古来の精神性と儒教や道教など大陸からもたらされた教えを融合させているのが特徴です。
国家組織を再編成した推古朝は、607年にも'''小野妹子'''を遣隋使として、派遣しました。この時妹子は、国書を隋の皇帝であった煬帝に差し出しましたが、無礼だとされました。なぜならその国書は、倭が隋に従属しないという態度を示していたためです。倭の五王までは、中国の王朝に冊封をもとめていたので大きな変化でした。結局、煬帝は、高句麗に侵攻している情勢もあって、裴世清を倭に送りました。
国家体制が充実してきた推古朝は、歴史書編纂にも取り組みました。厩戸王と蘇我馬子が中心となり、620年に『天皇記』や『国記』などを編纂しました。これらは、6世紀に成立した「帝紀」や「旧辞」を基に、天皇と諸氏の関係性を示し、天皇の支配が正当であることを示そうとしていたと考えられます。
==7世紀の東アジアと倭国==
3度目の遣隋使では、留学生や留学僧を同行させました。中国の制度や思想、文化などを取り込もうとしたのです。このとき、留学生の'''高向玄理'''や留学僧の'''旻'''・'''南淵請安'''が重要です。その後、4度目の遣隋使として犬上御田鍬を送りましたが、これが最後の遣隋使となります。隋が滅び唐が建国したからです。前述の留学生や留学僧は、唐の建国に学び帰国した後、7世紀初めの政治に大きな影響を及ぼしました。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『[https://www.jikkyo.co.jp/material/dbook/R5_chireki_20220510/?pNo=6 日本史探究]』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『[https://new-textbook.yamakawa.co.jp/j-history/ 詳説日本史探究]』株式会社山川出版社 2023年
* 山中裕典著'''『'''[https://www.amazon.co.jp/%E5%A4%A7%E5%AD%A6%E5%85%A5%E5%AD%A6%E5%85%B1%E9%80%9A%E3%83%86%E3%82%B9%E3%83%88-%E6%97%A5%E6%9C%AC%E5%8F%B2B%E3%81%AE%E7%82%B9%E6%95%B0%E3%81%8C%E9%9D%A2%E7%99%BD%E3%81%84%E3%81%BB%E3%81%A9%E3%81%A8%E3%82%8C%E3%82%8B%E6%9C%AC-%E5%B1%B1%E4%B8%AD-%E8%A3%95%E5%85%B8/dp/4046041994/ref=sr_1_7?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=36OGLMABMI16H&keywords=%E5%85%B1%E9%80%9A%E3%83%86%E3%82%B9%E3%83%88+%E6%97%A5%E6%9C%AC%E5%8F%B2&qid=1673018030&sprefix=%E4%BB%8A%E6%97%A5%E6%89%93%E3%81%A4%E3%83%86%E3%82%B9%E3%83%88+%E6%97%A5%E6%9C%AC%E5%8F%B2%2Caps%2C248&sr=8-7 大学入学共通テスト 日本史Bの点数が面白いほどとれる本]'''』'''株式会社KADOKAWA 2020年
* 佐藤信、五味文彦ほか編著『[https://www.amazon.co.jp/%E8%A9%B3%E8%AA%AC%E6%97%A5%E6%9C%AC%E5%8F%B2%E7%A0%94%E7%A9%B6-%E4%BD%90%E8%97%A4-%E4%BF%A1/dp/4634010739/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2JVCFQ6ZSAM4W&keywords=%E6%97%A5%E6%9C%AC%E5%8F%B2%E7%A0%94%E7%A9%B6&qid=1673018227&sprefix=%E6%97%A5%E6%9C%AC%E5%8F%B2%E7%A0%94%E7%A9%B6%2Caps%2C229&sr=8-1 詳説日本史研究]』株式会社山川出版社 2017年
* 河合敦著『[https://www.amazon.co.jp/%E4%B8%96%E7%95%8C%E4%B8%80%E3%82%8F%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%84-%E6%B2%B3%E5%90%88%E6%95%A6%E3%81%AE-%E6%97%A5%E6%9C%AC%E5%8F%B2B-%E3%80%8C%E5%8E%9F%E5%A7%8B-%E9%8E%8C%E5%80%89%E3%80%8D%E3%81%AE%E7%89%B9%E5%88%A5%E8%AC%9B%E5%BA%A7-%E6%B2%B3%E5%90%88/dp/404600794X/ref=d_pd_sbs_sccl_2_1/355-7112149-5713814?pd_rd_w=H8Pxa&content-id=amzn1.sym.820591ed-a555-4556-9bf6-5ebd5493c69e&pf_rd_p=820591ed-a555-4556-9bf6-5ebd5493c69e&pf_rd_r=ZWG9FNM6AD22NFF5WK2G&pd_rd_wg=scszo&pd_rd_r=8c1e9eda-f944-4c80-9e4e-7e35244ab2a6&pd_rd_i=404600794X&psc=1 世界一わかりやすい河合敦の日本史B[原始~鎌倉]の特別講座]』株式会社KADOKAWA 2014年(絶版本)
[[カテゴリ:高等学校日本史探究]]
km9gartzdayv8af331nya96ogic4tz9
満州語
0
43212
262846
2024-10-31T13:01:29Z
MiiCii
32480
MiiCii がページ「[[満州語]]」を「[[満洲語]]」に移動しました: 「満州」→満洲
262846
wikitext
text/x-wiki
#転送 [[満洲語]]
grqc2y0wa0gd8u44mrv91h3y42damzr
カテゴリ:満州語
14
43213
262849
2024-10-31T13:03:55Z
MiiCii
32480
MiiCii がページ「[[カテゴリ:満州語]]」を「[[カテゴリ:満洲語]]」に移動しました: 「満州」→満洲
262849
wikitext
text/x-wiki
#転送 [[:カテゴリ:満洲語]]
6jmn4t9brdqplyxjtvnq03p6hgww0n2
プログラミング/リフレクション
0
43214
262861
2024-10-31T23:46:28Z
Ef3
694
リフレクションとは、プログラムが実行時に自分自身の構造を調べ、操作する能力のことです。これにより、動的な型情報の取得や変更が可能となり、プログラムの柔軟性が向上しますが、同時に複雑性が増し、パフォーマンスへの影響や型安全性の懸念も生じます。
262861
wikitext
text/x-wiki
'''リフレクション'''(Reflection)とは、プログラムが実行時に自分自身の構造を調べ、操作する能力のことです。これにより、動的な型情報の取得や変更が可能となり、プログラムの柔軟性が向上しますが、同時に複雑性が増し、パフォーマンスへの影響や型安全性の懸念も生じます。
以下では、代表的なプログラミング言語におけるリフレクションの例と、それに関連するユースケースやベストプラクティスについて紹介します。
== Java ==
JavaはリフレクションAPIを標準ライブラリでサポートしており、<code>java.lang.reflect</code>パッケージを使用します。
; 例: クラスのメソッドを取得・呼び出す
:<syntaxhighlight lang=java>
import java.lang.reflect.Method;
public class ReflectionExample {
public void sayHello() {
System.out.println("Hello, World!");
}
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("ReflectionExample");
Method method = clazz.getMethod("sayHello");
method.invoke(clazz.getDeclaredConstructor().newInstance());
} catch (Exception e) {
e.printStackTrace();
}
}
}
</syntaxhighlight>
; 特徴とユースケース:
:* '''動的インスタンス生成''': 依存関係注入やプラグインシステムで使用。
:* '''メソッド呼び出し''': パラメータや名前を動的に変更可能。
:* '''制約''': パフォーマンスが低下しやすく、型安全性が失われる。
== Go ==
Goのリフレクションは、<code>reflect</code>パッケージを通じて行われます。型情報の取得や動的操作が可能ですが、制限が多く、慎重に使用する必要があります。
; 例: 型とフィールドの取得
:<syntaxhighlight lang=go>
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "John", Age: 30}
val := reflect.ValueOf(p)
for i := 0; i < val.NumField(); i++ {
fmt.Printf("Field %d: %v\n", i, val.Field(i))
}
}
</syntaxhighlight>
; 特徴とユースケース:
:* '''JSONシリアライズ/デシリアライズ''': フィールドのタグ情報を参照。
:* '''ジェネリック的処理''': 型安全性を維持しながら複雑な動作を回避。
:* '''制約''': 冗長なコードになりやすく、誤用するとパニックを引き起こすことも。
== Rustにおけるリフレクション ==
Rustはリフレクションを直接的にサポートしているわけではありませんが、マクロや型システムを活用することで、型情報をコンパイル時に取得し、柔軟なコードを実現しています。特に、<code>println!()</code>マクロはその良い例です。
=== println!()マクロ ===
<code>println!()</code>はRustの標準ライブラリに組み込まれているマクロで、異なる型の引数を受け取り、フォーマットされた文字列をコンソールに出力します。このマクロは、引数の型をコンパイル時に解析し、型安全性を確保しつつパフォーマンスを維持します。
==== 使用例 ====
以下のコードは、<code>println!()</code>マクロを使用して、整数、浮動小数点数、文字列を出力する例です。
:<syntaxhighlight lang=rust>
fn main() {
let integer = 42;
let float = 3.14;
let text = "Hello, world!";
println!("Integer: {}", integer);
println!("Float: {}", float);
println!("Text: {}", text);
}
</syntaxhighlight>
==== 型安定性 ====
<code>println!()</code>マクロは、引数の型をコンパイル時に取得するため、実行時のオーバーヘッドがなく、型安全です。これは、Rustの型システムとマクロの特性を利用して実現されています。
=== 注意点 ===
* '''マクロ特有の癖''': マクロはコード生成を行うため、デバッグ時にエラーメッセージがわかりにくくなることがあります。
* '''過度な使用に注意''': マクロの強力さを活かす一方で、過剰なマクロ使用はコードの可読性を低下させる可能性があるため、使い所を見極めることが重要です。
Rustの<code>println!()</code>マクロのように、マクロを使用して型情報を取得することは、型安全性やパフォーマンスの面で非常に有益です。ただし、マクロ特有の特性を理解し、適切に使用することが求められます。これにより、パワフルな機能を持ちながらも、堅牢でメンテナブルなコードを書くことが可能になります。
== Ruby ==
Rubyは、リフレクションの機能を標準で豊富に備えており、<code>Object</code>クラスや<code>Method</code>クラスを活用してクラスの情報を調べたり、メソッドを動的に呼び出したりすることができます。Rubyのリフレクションは、シンプルかつ直感的で、メタプログラミングにもよく使用されます。
; 例: クラスのメソッド一覧を取得して呼び出す
:<syntaxhighlight lang=ruby>
class Example
def hello
puts "Hello, World!"
end
def greet(name)
puts "Hello, #{name}!"
end
end
obj = Example.new
# クラス内のパブリックメソッド一覧を取得して表示
methods = obj.public_methods(false)
puts "Methods: #{methods}"
# 'hello' メソッドを呼び出し
if obj.respond_to?(:hello)
obj.send(:hello)
end
# 'greet' メソッドを動的に呼び出し
obj.send(:greet, "Alice")
</syntaxhighlight>
; 特徴とユースケース:
:* '''柔軟なメタプログラミング''': 新しいメソッドを追加したり、既存のメソッドを上書きしたりできます。
:* '''属性とメソッドの動的探索''': テストやAPIドキュメント生成に便利です。
:* '''動的メソッド呼び出し''': メソッド名を文字列やシンボルで指定し、柔軟に呼び出せます。
; 制約:
:* 過度なリフレクションの使用は、コードの可読性やデバッグの難易度を上げます。
:* メソッドやプロパティが動的に追加されるため、型安全性を確保するのが難しい場合があります。
; ベストプラクティス
:# '''理解を持って使用''': リフレクションを使うことで、コードの振る舞いが動的に変化するため、適切なドキュメントやコメントをつけることが重要です。
:# '''他の手法を優先''': 必要以上にリフレクションを使わず、既存のRubyメソッドや構造を活用して問題を解決することを優先します。
:# '''安全性の考慮''': ユーザーからの入力を<code>send</code>メソッドで使用する際は、入力の検証を忘れずに行いましょう。
Rubyのリフレクションは非常に強力で、メタプログラミングにおいて非常に役立ちますが、他の言語と同様、正しい使用方法を心掛ける必要があります。
== Python ==
Pythonは非常に強力なリフレクション機能を持っており、組み込み関数や<code>inspect</code>モジュールを使用します。
; 例: クラスの属性やメソッドを取得
:<syntaxhighlight lang=python>
class Example:
def method(self):
print("Method called")
obj = Example()
method_name = 'method'
if hasattr(obj, method_name):
method = getattr(obj, method_name)
method()
</syntaxhighlight>
; 特徴とユースケース:
:* '''メタプログラミング''': クラスや関数を動的に生成、変更。
:* '''デバッグツール''': オブジェクトの構造を調査。
:* '''制約''': 過度に使うとコードの可読性が低下。
== C# ==
C#では、<code>System.Reflection</code>名前空間を使用してリフレクションが行われます。
; 例: 型のプロパティを取得
:<syntaxhighlight lang=csharp>
using System;
using System.Reflection;
public class Example {
public string Name { get; set; }
public int Age { get; set; }
public static void Main() {
Example obj new Example { Name "Alice", Age = 25 };
Type type = obj.GetType();
foreach (PropertyInfo prop in type.GetProperties()) {
Console.WriteLine($"{prop.Name}: {prop.GetValue(obj)}");
}
}
}
</syntaxhighlight>
; 特徴とユースケース:
:* '''コード生成''': アセンブリの動的生成やロード。
:* '''属性の取得''': カスタムアノテーションの解析。
:* '''制約''': 型安全性の確保が難しい場合がある。
= ベストプラクティス =
{{Wikipedia|リフレクション (情報工学)}}
# '''最小限に留める''': リフレクションは高い柔軟性を提供しますが、過度な使用は可読性やメンテナンス性を低下させます。
# '''型安全性を考慮''': 型の整合性が崩れるとバグやセキュリティの問題に繋がります。
# '''パフォーマンスを意識''': リフレクションは通常のメソッド呼び出しよりも遅いため、必要な場合のみ使用するようにしましょう。
{{DEFAULTSORT:りふれくしよん}}
[[Category:プログラミング]]
nem0rodj7xvxdo0la86g2mn7o68ilgv
Cargoハンドブック
0
43215
262866
2024-11-01T03:11:43Z
Ef3
694
Cargoは、Rustプログラミング言語のパッケージマネージャであり、ビルドシステムです。Cargoを使用することで、Rustプロジェクトの依存関係の管理、ビルド、パッケージの作成が簡単に行えます。
262866
wikitext
text/x-wiki
'''Cargo'''は、Rustプログラミング言語のパッケージマネージャであり、ビルドシステムです。Cargoを使用することで、Rustプロジェクトの依存関係の管理、ビルド、パッケージの作成が簡単に行えます。
== インストール ==
Cargoは、Rustの公式インストーラーであるrustupを通じてインストールできます。以下のコマンドを実行して、rustupをインストールします。
:<syntaxhighlight lang=bash>
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
</syntaxhighlight>
インストール後、次のコマンドでCargoのバージョンを確認できます。
:<syntaxhighlight lang=bash>
cargo --version
</syntaxhighlight>
== プロジェクトの作成 ==
Cargoを使って新しいプロジェクトを作成するには、以下のコマンドを使用します。
:<syntaxhighlight lang=bash>
cargo new プロジェクト名
</syntaxhighlight>
このコマンドは、指定したプロジェクト名のディレクトリを作成し、基本的なCargo設定ファイルである<code>Cargo.toml</code>を生成します。
== Cargo.toml ==
<code>Cargo.toml</code>は、プロジェクトの依存関係やメタデータを定義するファイルです。以下は<code>Cargo.toml</code>の基本的な構成です。
;Cargo.toml
:<syntaxhighlight lang=toml>
[package]
name = "プロジェクト名"
version = "0.1.0"
edition = "2018"
[dependencies]
依存関係名 = "バージョン"
</syntaxhighlight>
== コマンド ==
Cargoにはいくつかの便利なコマンドがあります。以下に主要なコマンドを示します。
=== ビルド ===
プロジェクトをビルドするには、以下のコマンドを実行します。
:<syntaxhighlight lang=bash>
cargo build
</syntaxhighlight>
=== テスト ===
テストを実行するには、次のコマンドを使用します。
:<syntaxhighlight lang=bash>
cargo test
</syntaxhighlight>
=== 実行 ===
プロジェクトを実行するには、次のコマンドを使います。
:<syntaxhighlight lang=bash>
cargo run
</syntaxhighlight>
=== パッケージの公開 ===
Cargoを使用して、プロジェクトをCrates.ioに公開するには、以下のコマンドを実行します。
:<syntaxhighlight lang=bash>
cargo publish
</syntaxhighlight>
== 依存関係の管理 ==
Cargoは、依存関係を簡単に管理できます。<code>Cargo.toml</code>の<code>[dependencies]</code>セクションに依存関係を追加し、以下のコマンドで更新できます。
:<syntaxhighlight lang=bash>
cargo update
</syntaxhighlight>
== 参考文献 ==
* [https://doc.rust-lang.org/cargo/ 公式Cargoドキュメント]
* [https://www.rust-lang.org/ Rustプログラミング言語]
== 外部リンク ==
{{Wikipedia|Rust (プログラミング言語)#Cargo}}
* [https://github.com/rust-lang/rust GitHub - Rust]()
* [https://crates.io/ Crates.io]
{{DEFAULTSORT:CARGOはんとふつく}}
[[Category:Rust]]
m0uqtwg6hi0akqwvzd4f6ibeklqaxhv
262867
262866
2024-11-01T03:27:50Z
Ef3
694
/*クレートの構造*/
262867
wikitext
text/x-wiki
'''Cargo'''は、Rustプログラミング言語のパッケージマネージャであり、ビルドシステムです。Cargoを使用することで、Rustクレートの依存関係の管理、ビルド、パッケージの作成が簡単に行えます。
== インストール ==
Cargoは、Rustの公式インストーラーであるrustupを通じてインストールできます。以下のコマンドを実行して、rustupをインストールします。
:<syntaxhighlight lang=bash>
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
</syntaxhighlight>
インストール後、次のコマンドでCargoのバージョンを確認できます。
:<syntaxhighlight lang=bash>
cargo --version
</syntaxhighlight>
== クレートの作成 ==
新しいクレートを作成するには、以下のコマンドを使用します。
:<syntaxhighlight lang=bash>
cargo new クレート名
</syntaxhighlight>
このコマンドは、指定したクレート名のディレクトリを作成し、基本的なCargo設定ファイルである<code>Cargo.toml</code>を生成します。
== クレートの構造 ==
典型的なRustのクレートは、次のような構造を持ちます:
:<syntaxhighlight lang=text>
my_crate/
├── src/
│ ├── main.rs
│ ├── lib.rs
│ └── other_module.rs
├── Cargo.toml
└── README.md
</syntaxhighlight>
:* '''src/:''' クレートのソースコードを含むディレクトリ。
:* '''Cargo.toml:''' クレートのメタデータ、依存関係、ビルド構成などを含むファイル。
:* '''README.md:''' クレートのドキュメント。
== Cargo.toml ==
<code>Cargo.toml</code>は、クレートの依存関係やメタデータを定義するファイルです。以下は<code>Cargo.toml</code>の基本的な構成です。
;Cargo.toml
:<syntaxhighlight lang=toml>
[package]
name = "クレート名"
version = "0.1.0"
edition = "2018"
[dependencies]
依存関係名 = "バージョン"
</syntaxhighlight>
== コマンド ==
Cargoにはいくつかの便利なコマンドがあります。以下に主要なコマンドを示します。
=== ビルド ===
クレートをビルドするには、以下のコマンドを実行します。
:<syntaxhighlight lang=bash>
cargo build
</syntaxhighlight>
=== テスト ===
テストを実行するには、次のコマンドを使用します。
:<syntaxhighlight lang=bash>
cargo test
</syntaxhighlight>
=== 実行 ===
クレートを実行するには、次のコマンドを使います。
:<syntaxhighlight lang=bash>
cargo run
</syntaxhighlight>
=== クレートの公開 ===
Cargoを使用して、クレートをCrates.ioに公開するには、以下のコマンドを実行します。
:<syntaxhighlight lang=bash>
cargo login <APIトークン>
cargo publish
</syntaxhighlight>
このコマンドを実行する前に、<code>Cargo.toml</code>で必要なメタデータを設定しておく必要があります。ログインにはCrates.ioのAPIトークンが必要です。
== 依存関係の管理 ==
Cargoは、依存関係を簡単に管理できます。<code>Cargo.toml</code>の<code>[dependencies]</code>セクションに依存関係を追加し、以下のコマンドで更新できます。
:<syntaxhighlight lang=bash>
cargo update
</syntaxhighlight>
== 参考文献 ==
* [https://doc.rust-lang.org/cargo/ 公式Cargoドキュメント]
* [https://www.rust-lang.org/ Rustプログラミング言語]
== 外部リンク ==
{{Wikipedia|Rust (プログラミング言語)#Cargo}}
* [https://github.com/rust-lang/rust GitHub - Rust]()
* [https://crates.io/ Crates.io]
{{DEFAULTSORT:CARGOはんとふつく}}
[[Category:Rust]]
q9dkn0k1kkfwduj6m6p0p5sre65thcj