(C)とは?

辞典・百科事典の検索サービス - Weblio辞書

初めての方へ

参加元一覧


用語解説|製品情報|ニュース|動画|文献|全文検索|用例

三省堂 大辞林

三省堂三省堂

シー 1 [ C ・ c ]

(1)英語のアルファベット第三字。

(2)創案Celsius頭文字から〕摂氏温度であることを表す記号( C )。
(3)蛇口などで)冷たい(cold)ことを表す記号( C )。
⇔H
(4)等級三番目。
「―クラス落ちる」
(5)〔音〕
(ア)ハの音。
(イ)四分の四拍子記号( C )。〔本来は右の一部を欠いた円〕
(6)世紀century)を示す記号( C )。
(7)炭素carbon)の元素記号( C )。
(8)サイクルcycle)を表す記号( c )。
(9)ローマ数字の一〇〇( C )。
(10)電気量単位クーロンcoulomb)を表す記号( C )。
(11)センチcenti-)を表す記号( c )。
(12)プログラム言語の名称( C )。

C

(1)等級の3番目。

(2)創案Celsius頭文字から)摂氏温度であることを表す記号
(3)アメリカ・イギリス・ドイツ(ツェー)の音名の一。ハ調長音階の第1音「ド」,日本音名の「ハ」。また,4分の4拍子記号
(4)Century
世紀を表す記号
(5)carbon
炭素元素記号
(6)ローマ数字100
(7)coulomb
電気量単位クーロンを表す記号
(8)ブラジャーABCD分けカップサイズでDについで大きいもの。Cカップ
(9)(オランダ) cyaan
青緑色を表す記号シアンの略。
(10)衣料品の,胸囲あるいはチェストを表す記号

c [centi]

単位冠する接頭語で,10-2倍を表す。


ビデオ用語集

社団法人日本映像ソフト協会社団法人日本映像ソフト協会

AB(C)ロール 【AB(C)rolls】

ABロール編集の略。あらかじめ複数テープロール)に収録された映像素材を2台以上のVTR同期再生しながら、別のVTR編集収録すること。編集機での制御不可欠スイッチャを介してカットインカットアウトだけでなく、ディゾルブワイプオーバーラップ等の効果をつけながら収録することが可能。


ねじ用語集

丸ヱム製作所丸ヱム製作所

炭素(C)

炭素(Carbon)は、元素記号 C で表され、原子番号は6、原子量は約12.01比重は2.25(g/cc)である。炭素族属する。同位体存在し、炭素12原子量基準とされるダイヤモンド黒鉛無定形炭素三種同素体天然産する化学的安定通常溶媒に溶けず、酸・アルカリにもおかされない。
ステンレス鋼添加されると、オーステナイト結晶粒界Cr炭化物析出し、粒界腐食起こす種々の元素化合物をつくり、硬さ強度を増す。


日本化学物質辞書Web

独立行政法人科学技術振興機構独立行政法人科学技術振興機構

アセチレンブラック

分子式C
慣用名炭素動物性,植物性】、カーボンブラックエキストラクト、Carbon black extractCarbon、C、活性炭Activated carbon活性炭素、Graphitized carbon blackCarbon blackAcetylene blackせきぼく、Grapite、カーボンブラック、アセチレンブラック、黒鉛化カーボンブラック、Activeated carbonpowder】、活性炭粒状】、Activeated carbongranule】、活性炭粉末】、AST-120、クレメジン、Kremezin
体系名:炭素


ダイアモンド



生物学用語辞典

JabionJabion

システイン

同義/類義語:シスチン
英訳・(英)同義/類義語:Cys, cysteine, C , Cys , cysteien, cysteine

タンパク質を構成するアミノ酸一種で、残基部分SH基を持つためタンパク質分子中で立体構造保持活性部位として働くこともある。また、分泌タンパク質では2つのSH基結合されてーS-S-結合作りタンパク質立体構造安定化に働く場合もある。略号Cys , C

シチジン

英訳・(英)同義/類義語:cytidine, C , Cyd, cytidine

ピリミジン塩基シトシンリボースがグリコシル結合してできたヌクレオシド

シトシン

英訳・(英)同義/類義語:C, cytosine, , Cyt, cytosine

ウラシルチミンと共に核酸構成するピリミジン塩基

補体

英訳・(英)同義/類義語:C, complement

血清中に存在するタンパク群で、抗体働き助け標的細胞破壊することから補体とよばれる


臓器移植関連用語集

トランスプラント・コミュニケーション [臓器移植の情報サイト]トランスプラント・コミュニケーション [臓器移植の情報サイト]

補体(Complement、略号=C)

動物血清中の約20種類蛋白構成される物質遺伝的な欠損症の研究もとづき補体第1成分C1)から第9成分C9)まで分類されている。補体系抗体細菌成分によって刺激されると連鎖反応起こし食細胞機能増強抗原抗体結合強化リンパ球からの活性物質放出促進、あるいは細菌溶解など多彩な働きをする。最近研究から、異種移植で起こる超急性拒絶反応でも補体系が重要な役割をはたしているといわれる


隠語大辞典

皓星社皓星社

読み方:しー

  1. 軍団のことをいふ。独語Die Corp(ディーコープ)の頭字を取つたものである。〔軍隊語〕

分類 軍隊

隠語大辞典は、明治以降の隠語解説文献や辞典、関係記事などをオリジナルのまま収録しているため、不適切な項目が含れていることもあります。ご了承くださいませ。 お問い合わせ


ウィキペディア

ウィキペディアウィキペディア

C

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2012/03/23 14:58 UTC 版)

C c C c

Cは、ラテン文字アルファベット)の3番目の文字。小文字は c

目次

字形

大文字、小文字とも半円形である。同形のキリル文字С сは別字で、ラテン文字のSに相当する文字である。

フラクトゥールでは\mathfrak{C\ c}のようである。

呼称

日本では「シー」と呼ぶことが多い。

音価

多くの言語の正書法や音標記号などにおいて用いられるが、正書法の流儀は大きく2つに分類できる。

E・I・Yなどの前では歯擦音など、それ以外ではK音を表す正書法

元々のラテン語の c は常に [k] で発音されるものだったが、俗ラテン語時代になると転訛しはじめ、e・i・y・æ の前にある場合に限り、それら前舌母音の影響を受けて、[c]「ティ」と「キ」の間のような子音)や [ʧ]「チャチュチョ」のような子音)で発音されるようになった。これを軟音化と呼ぶ。時代が下りロマンス諸語が分化するにつれ、この音はさらに多様な音へと分化した。これらの言語の正書法は、こうした自然の音変化を受け継いだものである。また、フランス語の影響を大きく受けた英語でも、同様の読み方をする[1]

どの言語においても、a・o・u・l・r などの前の c はラテン語と同様の [k] を保持している。 また、フランス語やルーマニア語などでは語末に c を置く単語がいくらかあり、これらも [k] で発音される[5]

ほかに、以下のような類例もある。

  • ベトナム語の正書法「クオック・グー[6]では、a・o・ô・u・ơ・ư・ă・â の前でのみ [k] を c と綴る[7]。また音節末にも [k] やそれに近い音(いずれも内破音)が立つが、これを c で綴る。ただしこれら以外の音を c で表すことはない。

ラテン語のCとヨーロッパの言語

上記以外のヨーロッパ圏の言語では c をこのように使い分けることはないが、ラテン語やフランス語、英語などから c を含む単語を借用する場合、e・i・y(・ä[8] の前の c を z, c, s などに、a・o・u・l・r の前の c は k に、それぞれ置き換えて用いるのが伝統的であった[9]。一例を挙げれば:

いずれも英語やフランス語の concert 「コンサート」の借用で、各言語の規則にしたがって字を置き換えたものである。

位置にかかわらず破擦音などに当てる正書法

ポーランド語チェコ語スロバキア語スロベニア語などのスラヴ系言語バルト語派に分類されるラトビア語リトアニア語、その他ハンガリー語アルバニア語など、ラテン文字を用いる東欧の言語の多くでは、c は後続音の如何にかかわらず、常に [ts] 音を表す[10]。ポーランド人ルドヴィコ・ザメンホフの考案によるエスペラントもまた同様である。

また中国語ピンインにおいては、“息を出さない「ツ」音” [ts] を z と書くのに対して、“息を強く出す「ツ」音” [tsʰ] を c と表している。

東欧以外のいくつかの言語では c を [ʧ] の音標とするものがあり、インドネシア語マレー語はその代表である。

トルコ語や、トルコ語に倣って正書法を定めたアゼルバイジャン語などでは、c は [dʒ]「ジャジュジョ」のような子音)を表し、[ʧ] にはセディーユ付きの ç が当てられている。

音標文字、音標記号など

ラテン文字による正書法のない言語などで音素寄りの音標文字としてラテン文字を使う場合は、c は [c][ʧ] の音に当てるのが慣例である。例えばサンスクリットは伝統的にこうした方法で音写されている。また日本人になじみの深い例として、アイヌ語のラテン文字表記を挙げることができる。

国際音声記号では c をそのまま使うほか、形の似た記号には ɔɕ などがある。

記号付き文字、多重音字などについて

各種ダイアクリティカルマークの付いた c については、#関連項目を参照。

二重音字としては、ゲルマン系の言語で ck [k] が広く定着しているほか、多くの言語で ch が様々に使われている。 後者については ch を参照のこと。

歴史

ギリシア文字のガンマ(Γ)は元々様々な角度で書かれていた。このうち、「く」の字の角度で書かれたものを丸めた形に由来する。キリル文字のГは同系である。なおGを参照。

C の意味

学術的な記号・単位

  • ラテン語で100を意味するcentum、ないしその派生語の略。
    • 1/100 を表すSI接頭辞センチ(小文字)。
    • ¢は英語ではセントと読み、基本通貨単位(ユーロドルなど)の1/100を表す単位として多くの国で使われる(国によって呼び名は異なる)。
  • ローマ数字の100。
  • 十六進数二十進数において、十二十進数での12)を一(一文字)で表すために用いられる。
  • 炭素元素記号
  • 電荷の単位クーロンのシンボル。
  • 温度を示すセルシウス度(摂氏)で用いられる記号(℃)。
  • 数学では一般に既知の数、集合、行列等を示す、A, Bに次ぐ文字として用いられる。
  • 大文字太字の Cは、数学において複素数 (Complex number) 全体の集合を表す。
  • 定数 (constant) を表す。特に積分定数を表す時は通例大文字。
  • nCm組合せ (Combination) の総数。
  • 光速度を表す(小文字)。
  • 自然科学では熱容量電気容量Capasity、大文字だが比熱容量を表す際は小文字)、濃度( Concentration)、光度カンデラ:candela)を示す文字に用いる。電気容量を表すことから、回路素子のコンデンサ (Condenser, Capacitor) を表す際にも用いる
  • 加熱を示すときに用いられる場合がある。加熱を表すフランス語「Chauffage」の略。
  • トランジスタの端子の1つ。コレクタ (Collector)
  • C言語。プログラミング言語の1つ。
  • 虫歯を表す。また C1 ~ C4 でその進行度を表す。
  • 文法で、補語 (complemant)、可算名詞 (countable) の略号。
  • 音楽で用いられる拍子の1つ、4 分の 4 拍子の記号は大文字の C に似ているが、起源的に関係がない。
  • カラー印刷などで使われる基本色 YMC, YMCK の中のシアン (Cyan)。
  • 音楽で用いられる音名の1つ(英米式、ツェー(独式))。イタリア式で「do」(ド)、日本式では「」に相当。 → ハ (音名)
    • 音階の1番目の音であることから、日本の音楽・芸能関係者の間で1を表す隠語として使われる。例:C(ツェー)万=1万(円)
  • 写真印画紙の面種が光沢仕上げ (crystal) であることを意味する。対する絹目はS (silk) で示す。
  • 視力検査で用いられるランドルト環は、Cを基にしている。
  • ケッペンの気候区分温帯を表すC

その他の記号

商品名・作品名

その他Cに関すること

符号位置

大文字 Unicode JIS X 0213 文字参照 小文字 Unicode JIS X 0213 文字参照 備考
C U+0043 1-3-35 C
C
c U+0063 1-3-67 c
c
U+FF23 1-3-35 C
C
U+FF43 1-3-67 c
c
全角

関連項目

脚注

[ヘルプ]
  1. ^ オランダ語も同様。ただしラテン語やフランス語由来の語彙自体が英語よりはずっと少ない。
  2. ^ なお両言語とも、母音字 y を用いるのは外来語のみである。
  3. ^ フランス語・英語以外では cy の組み合わせは稀。
  4. ^ cy の組み合わせは稀。
  5. ^ フランス語では無音の場合もある。例: blanc 「白い」
  6. ^ フランス人宣教師によって、ポルトガル語を考慮しつつ制定された。
  7. ^ 他の環境では k や qu を用いる。
  8. ^ ドイツ語ではラテン語の æ を ä と綴る。
  9. ^ ただし現代では、英語が世界的に隆盛なこともあり、英単語をそのまま借用することが多くなっている。
  10. ^ ルーマニア語は例外。

C Sharp

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2011/09/29 13:33 UTC 版)

((C) から転送)

本来の表記は「C#」です。この記事に付けられた題名は記事名の制約から不正確なものとなっています。
C#
パラダイム 構造化命令型オブジェクト指向
登場時期 2000年
設計者 アンダース・ヘルスバーグ
開発者 マイクロソフト
最新リリース C# 4.0
型付け 強い静的型付け(4.0から動的型導入)
主な処理系 共通言語ランタイムMono
方言 1.0, 1.5, 2.0 (ECMA), 3.0, 3.5, 4.0
影響を受けた言語 LISPDelphiC++JavaEiffel
影響を与えた言語 NemerleD言語、Java
プラットフォーム Microsoft Windows
テンプレートを表示

C#(シーシャープ)はマイクロソフト社によって同社の.NET戦略の一環として開発されたオブジェクト指向プログラミング言語である。

目次

概要

開発にはボーランド社のTurbo PascalDelphiを開発したアンダース・ヘルスバーグを筆頭に多数のDelphi開発陣が参加している。

C#は共通言語基盤共通言語ランタイムなど)が解釈する共通中間言語コンパイルされて実行される。基本的な書式がC言語風になっているため、初見の構文はサン・マイクロシステムズ社によるJavaに近いと言われるが、実際の構文はDelphiに準じており、C言語風ということもありC++ Builderの独自拡張構文に極めて近い内容となっている。またプロパティデリゲートなどDelphiの構文そのまま、もしくは名称変更しただけの機能となっているものが多い。

自動ボックス化デリゲートプロパティインデクサカスタム属性ポインタ演算操作、構造体(値型オブジェクト)、多次元配列可変長引数、などの機能を持つ。また、Javaと同様に大規模ライブラリプロセッサ・アーキテクチャに依存しない実行形態、ガベージコレクションJITコンパイルによる実行の高速化、などが実現されている(もっともこれらはC#の機能というより.NET Frameworkによるものである)。

.NET構想における中心的な開発言語であり、XML WebサービスASP.NETの記述にも使用される。他の.NET系の言語でも記述可能だが、生産性・機能においてC#が最も優れるとされる。マイクロソフトの統合開発環境では、Microsoft Visual C#がC#に対応している。

共通言語仕様のCLSによって、他のCLS準拠の言語(Visual Basic .NETVisual C++ (C++/CLI)など)と相互に連携することができる。他言語で記述されたクラス継承することも、またその逆も可能である。

C#はEcma International[1]および国際標準化機構 (ISO)[2] によって標準化され、日本においても日本工業規格 (JIS)[3] によって採択された。

言語仕様

さまざまな意味において、基盤であるCLIの機能をもっとも反映している言語であるといえる。C#にある組み込み型のほとんどは、CLIフレームワークに実装されている値型と対応している。しかし、C#の言語仕様はコンパイラのコード生成については何も言及していない。つまり、CLRに対応しなければならないとか、共通中間言語 (CIL) などの特定のフォーマットのコードを生成しなければならないとかいうことは述べられていない。そのため、理論的にはC++FORTRANのように環境依存のマシン語を生成することも可能である。しかし、現在存在するすべてのC#コンパイラはCLIをターゲットにしている。

CやC++からの改良点

C#では、CやC++と比較してさまざまな制限や改良が加えられている。その例を次に挙げる。

  • グローバル変数やグローバルメソッドは存在しない。すべてのメソッドとメンバはクラスの一部として宣言されなければならない。
  • 外のブロックで宣言した変数名を、内のブロックで再宣言してはいけない。これはC++ではしばしば混乱や曖昧のもととされているが、C#では禁止されている。
  • Cのprintf()関数のように関数をグローバルで公開するのではなく、すべての関数はクラス内で宣言されなければならない。ほとんどの場合クラスは名前の衝突を避けるために名前空間に所属する。
  • 名前空間は階層構造をもつ。つまり、名前空間は他の名前空間の中に宣言することができる。
  • 原始型を含めたすべての型は、objectクラスの派生クラスである。つまりobjectクラスのもつすべてのプロパティやメソッドを継承する。例えば、すべての型はToString()メソッドをもつ。
  • C#にはブール型boolが存在する。whileifのように条件をとるステートメントには、bool型の式を与えなければならない。CやC++にもブール型が存在するが、これは整数型と相互に変換可能で、while文やif文に与える式として整数やポインタも許容していた。C#ではミスを防止するために、このブール型と整数が可換であるという仕様を禁止している。
  • ポインタをサポートする。ポインタはunsafeスコープ内のみで使用することができ、適切な権限をもつプログラムのみがunsafeとマークされたコードを実行することができる。オブジェクトへのアクセスの大部分は管理された安全な参照によってなされ、大部分の算術演算はオーバフローのチェックがなされる。unsafeポインタは値型や文字列を指すことができる。セーフコードでは、必ずしもそうする必要はないものの、IntPtr型を通してポインタをやりとりすることができる。
  • マネージドなメモリを明示的に解放する方法は存在せず、参照されなくなったメモリはガベージコレクタによって自動的に解放される。ガベージコレクタは、メモリの解放忘れによって起こるメモリリークを解消する。C#は、データベース接続のようなアンマネージドなリソースに対しても明示的に制御する方法を提供している。これはIDisposableインタフェースとusingステートメントによってなされる。
  • クラスは複数のインタフェースを実装することができるが、多重継承はサポートされない。
  • C#はC++に比べて型安全である。既定の暗黙変換は、整数の範囲を広げる変換や、派生クラスから基底クラスへの変換といった、安全な変換のみに限定される。これは、コンパイル時、JITコンパイル時、そして一部の動的なケースでは実行時に強制される。ブール型と整数型、列挙型と整数型、の間は暗黙変換はできない。暗黙変換をユーザ定義する際は、明示的にそのように指定しなければならない。これはC++のコンストラクタとは違った仕様である。
  • 列挙型のメンバは、列挙型の名前空間の中におかれる。また、列挙型の定数名を取得することができる。さらに、列挙型の定数名から動的に定数値を得ることができる。
  • プロパティと呼ばれるアクセサは、C++におけるメンバフィールドのような構文でオブジェクトにアクセスすることができる。C++では、publicとしてメンバを宣言することでメンバを読むことも変更することもできるようになるが、C#ではプロパティによってメンバアクセスやデータの正当性チェックを制御することができる。
  • switch文で、基本型のみならず、定数文字列によって分岐することができる。

C# 2.0からの仕様

部分型

部分型 (Partial Type) が導入された。以下のようにクラスや構造体の宣言にpartial修飾子をつけることで、その宣言を分割することができる。

partial class MyClass { int a; }
partial class MyClass { int b; }

これは以下と同義である:

class MyClass { int a; int b; }

これによって、巨大なクラスを分割したり、自動生成されたコードを分離したりすることができる。partial 修飾子はすべての宣言につける必要がある。

ジェネリクス

ジェネリクスが導入された。これは.NET Framework 2.0の機能である。クラス、構造体、インタフェース、デリゲート、メソッドに対して適用することができる。.NETのGenericsはC++のテンプレート、あるいはJavaにおけるそれとも異なるもので、コンパイルによってではなく実行時にランタイムによって特殊化される。これによって異なる言語間の運用を可能にし、リフレクションによって型パラメタに関する情報を取得することができる。また、where節によって型パラメタに制約を与えることができる。一方、C++のように型パラメタとしてを指定することはできない。なお、ジェネリックメソッドの呼び出し時に引数によって型パラメタが推論できる場合、型パラメタの指定は省略できる。

静的クラス

静的クラスが導入された。static属性をクラスの宣言につけることで、クラスはインスタンス化できなくなり、静的なメンバしか持つことができなくなる。

yieldキーワード

yieldキーワードによるコルーチンを使うことで、イテレータを楽に実装できるようになった。

匿名デリゲート

クロージャの機能を提供する匿名デリゲートが導入された。

プロパティに対する個別のアクセス制御

プロパティのget もしくは setアクセサのどちらかにアクセス修飾子を指定することでアクセス制御が別個にできるようになった。次の例では、getアクセサはpublicsetアクセサはprivateである。

public class MyClass
{
  private string status = string.Empty;
  public string Status
  {
    get { return status; }
    private set { status = value; }
  }
}

Null許容型とnull結合演算子

nullを保持できる値型、Nullableが導入された。

int? i = 512;
i = null;
 
int? j = i + 500; //jはnullとなる。nullとの演算の結果はnullになる。

int?Nullable<int>糖衣構文である。また、nullを保持しているNull許容型のインスタンスをボックス化しようとすると、単に空参照 (null) に変換される[4]

int? x = null;
object o = x;
System.Console.WriteLine(o == null); //Trueが出力される

また、null結合演算子 (??)が導入された。これは、nullでない最初の値を返す。

object obj1 = null;
object obj2 = new object();
object obj3 = new object();
return obj1 ?? obj2 ?? obj3; // obj2 を返す

この演算子は主にNullable型を非Nullable型に代入するときに使われる。

int? i = null;
int j = i ?? -1; // nullをint型に代入することはできない

C# 3.0からの仕様

varキーワード

var キーワードが導入され、型推論を利用したローカル変数の宣言ができるようになった。

var s = "foo";
// 上の文は右辺が string 型であるため、次のように解釈される:
string s = "foo";
// 以下に挙げる文は誤りである:
var v; // 初期化式を欠いている (型を推論する対象が存在しない)
var v = null; // 型が推論できない (曖昧である)

拡張メソッド

拡張メソッドが導入された。既存のクラスを継承して新たなクラスを定義することなく新たなインスタンスメソッドを追加定義することができる。具体的には、独自の静的クラス内に this 修飾子をつけた、拡張メソッドを追加する対象の型の引数を最初に持つメソッドを定義することによって、通常の静的メソッドとしての呼び出しの他に指定した型のインスタンスメソッドとしての呼び出しを行うことができるメソッドを作ることができる。以下に例を挙げる:

public static class StringUtil
{
  public static string Repeat(this string str, int count)
  {
    var array = new string[count];
    for (var i = 0; i < count; ++i) array[i] = str;
    return string.Concat(array);
  }
}

この例は string 型に、文字列 (string 型のインスタンス)を指定した回数繰り返したものを返すメソッド Repeat を追加している。このメソッドは、以下のように呼び出すことができる:

// 静的メソッドとしての呼び出し
StringUtil.Repeat("foo", 4);
// 拡張メソッドとしての呼び出し
"foo".Repeat(4);
// (どちらの例も "foofoofoofoo" を返す)

また、列挙型やインターフェースなど本来メソッドの実装を持ち得ない型に、見かけ上インスタンスメソッドを追加することも可能である。以下に例を挙げる:

public enum Way
{
  None, Left, Right, Up, Down
}
 
public static EnumUtil
{
  public static Way Reverse(this Way src)
  {
    switch(src)
    {
      case Way.Left:  return Way.Right;
      case Way.Right: return Way.Left;
      case Way.Up:    return Way.Down;
      case Way.Down:  return Way.Up;
      default : return Way.None;
    }
  }
}

このメソッドは以下のように呼び出すことができる:

Way l = Way.Left;
Way r = l.Reverse(); // Way.Right

部分メソッド

部分メソッドが導入された。部分型(partial 型)内で定義された private で、かつ戻り値が void のメソッドに partial 修飾子をつけることでメソッドの宣言と定義を分離させることができる。定義されていない部分メソッドは何も行わず、何らエラーを発生させることもない。例えば:

partial class Class
{
  partial void DebugOutput(string message);
 
  void Method()
  {
    DebugOutput("Some message");
    Console.WriteLine("Did something.");
  }
}

上のコードにおいて Method() を呼び出すと、Did something. と表示されるだけだが、ここで以下のコード:

partial class Class
{
  partial void DebugOutput(string message)
  {
    Console.Write("[DEBUG: {0}] ", message);
  }
}

を追加した上で Method() を呼び出すと、[DEBUG: Some message] Did something. と表示される。

ラムダ式

匿名メソッドをより簡略化した記法として、ラムダ式が導入された。この名前はラムダ計算に由来する。

以下の匿名メソッド

// iを変数としてi+1を返すメソッド
delegate (int i) { return i + 1; }

は、ラムダ式を使って次のように記述できる:

(int i) => i + 1; /* 式形式のラムダ */
//或いは:
(int i) => { return i + 1; }; /* ステートメント形式のラムダ */

ラムダ式は匿名メソッドと同様に扱えるが、式形式のラムダがExpression<TDelegate>型として扱われた場合のみ匿名メソッドとして扱われず、コンパイラによって式木を構築するコードに変換される。匿名デリゲートが実行前にコンパイルされたCILを保持するのに対し、式木はCILに実行時コンパイル可能であるDOMのような式の木構造そのものを保持する。これはLINQクエリをSQLクエリなどに変換する際に役立つ。

以下は、3つの任意の名前の変数、整数、括弧、及び四則演算子のみで構成された式を逆ポーランド記法に変換する汎用的なコードである:

public static string ToRPN(Expression<Func<int, int, int, int>> expression)
{
  return Parse((BinaryExpression) expression.Body).TrimEnd(' ');
}
 
private static string Parse(BinaryExpression expr)
{
  string str = "";
 
  if (expr.Left is BinaryExpression)
  {
    str += Parse((BinaryExpression) expr.Left);
  }
  else if (expr.Left is ParameterExpression)
  {
    str += ((ParameterExpression) expr.Left).Name + " ";
  }
  else if (expr.Left is ConstantExpression)
  {
    str += ((ConstantExpression) expr.Left).Value + " ";
  }
 
  if (expr.Right is BinaryExpression)
  {
    str += Parse((BinaryExpression) expr.Right);
  }
  else if (expr.Right is ParameterExpression)
  {
    str += ((ParameterExpression) expr.Right).Name + " ";
  }
  else if (expr.Right is ConstantExpression)
  {
    str += ((ConstantExpression) expr.Right).Value + " ";
  }
 
  return str + expr.NodeType.ToString()
    .Replace("Add", "+")
    .Replace("Subtract", "-")
    .Replace("Multiply", "*")
    .Replace("Divide", "/")
    + " ";
}
 
// 呼び出し例:
ToRPN((x, y, z) => (x + 1) * ((y - 2) / z)); // "x 1 + y 2 - z / *" を返す

オブジェクト初期化の簡略化

オブジェクトの初期化が式として簡潔に記述できるようになった。

var p = new Point { X = 640, Y = 480 };
// 上の文は次のように解釈される:
Point __p = new Point();
__p.X = 640;
__p.Y = 480;
Point p = __p;

また、コレクションの初期化も同様に簡潔に記述できるようになった。

var l = new List<int> {1, 2, 3};
var d = new Dictionary<string, int> {{"a", 1}, {"b", 2}, {"c", 3}};
// 上の文は次のように解釈される:
List<int> __l = new List<int>();
__l.Add(1);
__l.Add(2);
__l.Add(3);
List<int> l = __l;
Dictionary<string, int> __d = new Dictionary<string, int>();
__d.Add("a", 1);
__d.Add("b", 2);
__d.Add("c", 3);
Dictionary<string, int> d = __d;

但し、上のコードでは匿名の変数に便宜的に __p、__l、__d と命名している。実際はプログラマはこの変数にアクセスすることはできない。

自動実装プロパティ

プロパティをより簡潔に記述するための自動実装プロパティが導入された。プロパティの定義に get; set; と記述することで、プロパティの値を保持するための匿名のフィールド(プログラマは直接参照することはできない)と、そのフィールドにアクセスするためのアクセサが暗黙に定義される。また,get;set;のどちらか片方だけを記述することは出来ない。以下のコード:

public int Value { get; set; }

は、以下のようなコードに相当する動作をする:

private int __value;
public int Value
{
  get { return __value; }
  set { __value = value; }
}

但し、上のコードでは匿名のフィールドに便宜的に __value と命名している。実際はプログラマはこのフィールドにアクセスすることはできない。

匿名型

一時的に使用される型を簡単に定義するための匿名型が導入された。以下に例を挙げる:

new { Name = "John Doe", Age = 20 }

上の式は、以下の内容のクラスを暗黙に定義する。定義されたクラスは匿名であるが故にプログラマは参照できない。

public string Name { get; }
public int Age { get; }

同じ型、同じ名前のプロパティを同じ順序で並べた匿名型は同じであることが保証されている。即ち、以下のコード:

var her = new { Name = "Jane Doe", Age = 20 }
var him = new { Name = "John Doe", Age = 20 }

において、her.GetType() == him.GetType()true である。

配列宣言の型省略

new キーワードを用いた配列の宣言の際、型を省略できるようになった。匿名型の配列を宣言する際に威力を発揮する。

var a = new[] {"foo", "bar", null};
// 上の文は次のように解釈される:
string[] a = new string[] {"foo", "bar", null};
// 以下の文:
var a = new[] {"foo", "bar", 123};
// は次のように解釈されることなく、誤りとなる:
object[] a = new object[] {"foo", "bar", 123};

クエリ式

LINQ をサポートするために、クエリ式が導入された。これは SQL の構文に類似しており、最終的に通常のメソッド呼び出しに変換されるものである。以下に例を示す:

var passedStudents =
  from s in students
  where s.MathScore + s.MusicScore + s.EnglishScore > 200
  select s.Name;

上のコードは以下のように変換される:

var passedStudents = students
  .Where(s => s.MathScore + s.MusicScore + s.EnglishScore > 200)
  .Select(s => s.Name);

C# 3.0で追加された構文の多くは式であるため、より巨大な式(当然クエリ式も含まれる)の一部として組み込むことができる。旧来複数の文に分けたり、作業用の変数を用意して記述していたコードを単独の式としてより簡潔に記述できる可能性がある。

C# 4.0からの仕様

dynamicキーワード

dynamicキーワードが導入され、動的型付け変数を定義できるようになった。dynamic型として宣言されたオブジェクトに対する操作のバインドは実行時まで遅延される。

// xはint型と推論される:
var x = 1; 
// yはdynamic型として扱われる:
dynamic y = 2; 
 
public dynamic GetValue(dynamic obj)
{
  // objにValueが定義されていなくとも、コンパイルエラーとはならない:
  return obj.Value;
}

オプション引数・名前付き引数

VBC++に実装されているオプション引数・名前付き引数が、C#でも利用できるようになった。

public void MethodA()
{
  // 第1引数と第2引数を指定、第3引数は未指定:
  Console.WriteLine("Ans: " + MethodB(1, 2));  // Ans: 3 … 1 + 2 + 0となっている
 
  // 第1引数と第3引数を指定、第2引数は未指定:
  Console.WriteLine("Ans: " + MethodB(A: 1, C: 3));  // Ans: 4 … 1 + 0 + 3となっている
}
 
// 引数が指定されなかった場合のデフォルト値を等号で結ぶ:
public int MethodB(int A = 0, int B = 0, int C = 0)
{
  return A + B + C;
}

ジェネリクスの共変性・反変性

ジェネリクスの型引数に対してin、out修飾子を指定することにより、ジェネリクスの共変性・反変性を指定できるようになった。

IEnumerable<string> x = new List<string> { "a", "b", "c" };
// IEnumerable<T>インターフェイスは型引数にout修飾子が指定されているため、共変である。
// したがって、C# 4.0では次の行はコンパイルエラーにならない
IEnumerable<object> y = x;

実装

C#の言語仕様は標準化団体Ecma Internationalを通じて公開・標準化されており、第三者がマイクロソフトとは無関係に実装することができる。 現段階で、C#の実装は次の4つが知られている。

名称

  • ECMA-334 4th edition によると、C# は「C Sharp」(シーシャープ)と発音し、「C#」 (LATIN CAPITAL LETTER C (U+0043) の後にNUMBER SIGN # (U+0023)) と書く [5]。 音楽のシャープ (♯, MUSIC SHARP SIGN (U+266F)) ではなくナンバーサイン (#) を採用したのは、フォントやブラウザなどの技術的な制約に加え、標準的キーボードには前者の記号が存在しないためである。
  • "#"接尾辞は、既存言語から派生した多くの.NET言語にも使用されている。これには、J#(Javaのマイクロソフトによる実装)、A#(Adaから)、F#(おそらくMLファミリに使われた型システムのSystem Fから)が含まれる。この接尾辞はGtk#GTK+などのGNOMEライブラリの.NETラッパ)、Cocoa#(Cocoaのラッパ)などのライブラリにも使用されている。
  • C#という名称の解釈として、「(A~Gで表された)直前の音を半音上げる」という音楽記号の役割に着目し、「C言語を改良したもの」を意味したのではないか、というものがある。これは、C++の名称が「C言語を1つ進めたもの」という意味でつけられたことにも似ている。
  • アンダース・ヘルスバーグは、「C#」が「C++++」(すなわち「C++をさらに進めたもの」)にみえるのが由来である、と語っている。[6][7]

関連項目

外部リンク

脚注

  1. ^ Standard ECMA-334 C# Language Specification
  2. ^ ISO/IEC 23270:2003 C# Language Specification
  3. ^ JIS X 3015 プログラミング言語C#
  4. ^ null 許容型のボックス化 (C# プログラミング ガイド) MSDNライブラリ
  5. ^ Standard ECMA-334 C# Language Specification
  6. ^ レポート:コミュニティスペシャルセッション with Anders Hejlsberg in Microsoft Developers Conference 2006
  7. ^ C#への期待。アンダースからの返答

C++

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2012/04/20 10:14 UTC 版)

C++
パラダイム マルチパラダイム
登場時期 1980年代前半
設計者 ビャーネ・ストロヴストルップ
型付け nominative, 安全でない強い静的型付け
主な処理系 GCCMicrosoft Visual C++
方言 ISO/IEC C++ 1998
ISO/IEC C++ 2003
ISO/IEC C++ 2011
影響を受けた言語 C言語SimulaAda
影響を与えた言語 JavaC#D言語PHP
テンプレートを表示

C++シープラスプラス、日本では略してシープラプラシープラ、あるいはシータスタスなどとも)は、汎用プログラミング言語の一つである。高度な機能を使用してもプログラムの実行性能が低下しすぎないように、言語仕様・ライブラリに様々な工夫が施されている。1990年代以降、C++は、最もよく利用される商用のプログラミング言語の1つとなっている。静的な型システムを持ち、手続き型プログラミングデータ抽象オブジェクト指向プログラミングジェネリックプログラミングといった複数のプログラミングパラダイムをサポートするマルチパラダイムプログラミング言語である。

C++は、1983年にベル研究所のコンピュータ科学者であったビャーネ・ストロヴストルップが、C言語の拡張として開発した。当時の名前は「C with Classes」(クラス付きのC言語)というものであった。拡張はクラスの追加に始まり、仮想関数多重定義多重継承テンプレート例外処理といった機能が続いていった。C++言語の最初の標準は1998年にISO/IEC 14882:1998として承認された。最新のバージョンは、2003年の改訂版を経て、2011年に制定されたISO/IEC 14882:2011である。このバージョンは、元々、非公式に「C++0x」と呼ばれていた。2000年代中に制定され、正式に「C++09」と呼称されるであろうことを見越した仮称であったが、2000年代中には実現しなかった。2011年8月10日まで続いた最終国際投票で C++0x は全会一致で承認された。これにより C++0x と呼ばれてきた C++ の次期改正案はついに国際標準になり、「C++11」と呼べるようになった。

目次

歴史

ストロヴストルップはC with Classesの開発を1979年に開始した。彼は大規模なソフトウェアの開発に有用な特徴をSimulaが備えていることに気がついたが、Simulaは実行速度が遅く実用的でなかった。一方でBCPLは実行速度こそ速かったものの、大規模なソフトウェア開発を念頭に置いた場合にあまりにも低級であった。これらの事情を鑑みて、ストロヴストルップは当時既に汎用的な言語であったC言語にSimulaの特徴を取り入れることを試みた。この取り組みにあたってはALGOL68AdaCLUML等の言語の影響も受けている。最初はクラスと派生クラス、型検査機構の強化、インライン関数、デフォルト引数の機能を、Cfrontを介してC言語に追加した。1985年10月に最初の商用リリースがなされた[1]

1983年にはC with ClassesからC++に名称を変更した。この際に、仮想関数と、関数と演算子の多重定義参照型、const型、ユーザー制御可能な自由領域メモリ制御、型検査機構の改良、BCPL形式(「//」による)の行単位のコメントアウトなどの機能が追加された。1985年には『The C++ Programming Language』の初版が出版された(邦訳『プログラミング言語C++』(1988年))。この時点では公式な標準が策定されていなかった為に、この本が事実上のリファレンスとなった。1989年C++のヴァージョン2.0として、多重継承抽象クラス、静的メンバ関数constメンバ関数、protectedメンバ等の機能が追加されたものがリリースされた。1990年に『The Annotated C++ Reference Manual (ARM)』が出版され、将来の標準化の土台となるものを提供した。後に追加された機能にはテンプレート例外処理名前空間、新形式のキャストブール型が含まれた。

C++言語の進化に伴い、標準ライブラリもまた進化していった。C++標準ライブラリに最初に追加されたのは、従来のC言語の printfscanf といった関数を置き換えるしくみを提供する、ストリームI/Oライブラリであった。それ以降の標準ライブラリへの追加で最も重要なものはStandard Template Library (STL)である。

標準規格

規格制定日 C++ 標準規格 非公式名称
1998年9月1日 ISO/IEC 14882:1998[2] C++98
2003年10月16日 ISO/IEC 14882:2003[3] C++03
2007年11月15日 ISO/IEC TR 19768:2007[4] C++TR1
2011年9月1日 ISO/IEC 14882:2011[5] C++11

長年にわたる作業の後、ANSIとISOの合同委員会はC++言語を1998年に標準化した(ISO/IEC 14882:1998)。1998年の標準の公式なリリースから数年間に渡って委員会は不具合の報告を続け、2003年に訂正版を出版した。2003年12月に制定された日本工業規格JIS X 3014:2003(プログラム言語 C++)は、ISO/IEC 14882:2003 (E)の翻訳である。

2007年11月15日に「C++ Technical Report 1」 (TR1)というテクニカルレポートがリリースされた。これは標準の公式な一部ではないが、次のバージョンのC++に含まれると期待される、標準ライブラリへの数多くの拡張を与えている。現在メンテナンスされているC++コンパイラの大部分が、TR1のサポートに取り組んでいる。

将来

C++に対しては、今もなお要望が絶えない。特にBoostはC++の方向性の決定に大きく貢献し、さらにC++標準化委員会へ改良すべき点などを意見している。現在はマルチパラダイムプログラミングをより自然に行えるようにすることに力が注がれており、たとえばBoostでは、C++の関数型プログラミングメタプログラミングの可能性を模索している。

C++11と呼ばれている新しいバージョンのC++標準ではこれらが取り込まれることになると見られている。

C++という名称

この名称はRick Mascittiの功績で、最初に使用されたのは1983年の12月である。初期の研究期間では、開発中の言語は「C with Classes」と呼ばれていた。最終名は、変数の値を1つ加算する、C言語の「++」演算子からの派生である。また一般的な命名規則での「+」の使用は、機能強化されたコンピュータプログラムを意味する。ストロヴストルップによれば「この名前は、C言語からの変更の革新的な本質を示している」ということである。C+は、より初期の無関係なプログラミング言語の名前であった。

ストロヴストルップは著書「The C++ Programming Language」の前文で名前の起源を語り、ジョージ・オーウェルの「1984年」の付録から「C++」が連想されるかもしれないと付け加えている。新語法という架空の言語の解説に宛てられた3つの章の中に、科学技術に関する専門用語とジャーゴンの解説に宛てられた「C vocabulary」という章がある。新語法で「ダブルプラス」は最上級の修飾語である。ゆえに新語法で「C++」は「最も極端な専門用語またはジャーゴン」という意味になるであろう。

1992年、Rick Mascittiは名前について非公式に質問されると、彼はおふざけのつもりで命名したという旨の回答をした。彼はこの言語の正式な名称になるとは夢にも思わなかったのである。

哲学

ビャーネ・ストロヴストルップは著書『C++の設計と進化(1994)』でC++を設計する際に用いたルールを述べている。

  • C++はCと同等の実行効率と移植性を持つ静的に型付けされた汎用言語である。
  • C++は直接的かつ包括的に複数のプログラミングスタイル (手続き型プログラミング抽象化オブジェクト指向ジェネリックプログラミング)をサポートする。
  • C++はもしプログラマが間違っている可能性があったとしてもプログラマに選択の余地を与える。
  • C++は可能な限りC言語との互換性を持ち、C言語からスムーズに移行できる。
  • C++はプラットフォームに固有な機能や汎用的でない機能の実装を避ける。
  • C++は利用しない機能についてはオーバーヘッドが生じない(ゼロオーバーヘッドの原則)。
  • C++は高級な実行環境を必要としない。

C++のコンパイラがどのようにコードを出力しメモリのレイアウトを決めるのかということについてはInside the C++ Object Model (Lippman, 1996)に記載されている。ただしコンパイラが出力するコードの仕様はコンパイラ制作者の裁量に任されている。

標準ライブラリ

1998年に施行されたANSI/ISO C++ 規格は言語仕様とライブラリの2つのパートで構成される。ライブラリ規格の大半はStandard Template Library (STL)とC言語の標準ライブラリの改良版についての内容である。標準規格以外にも様々なライブラリが数多く存在し、リンカを使用することにより、C言語FORTRANPascalBASICのような言語を用いて作成されたライブラリを利用できる。規格外のライブラリが利用できるかどうかはコンパイラに依存する。

C++標準ライブラリはC++向けに若干の最適化が施されたC言語標準ライブラリを含んでいる。C++標準ライブラリの大部分はSTLである。 コンテナ(可変長配列リストなど)、コンテナを配列のように扱えるようにするイテレータ、検索やソートを行うアルゴリズムといった有用なツールが提供されている。さらにmapやmultimapのような連想配列や、setやmultisetのようなソート済みコンテナも提供され、これらは全てインターフェイスに互換性がある。テンプレートを用いることにより、あらゆるコンテナ(またはイテレータで定義したシーケンス)に適用できる汎用的なアルゴリズムを記述できる。C言語と同様にライブラリ機能には#include ディレクティブを使ってヘッダファイルを読み込むことによってアクセスする。C++には69本の標準ヘッダファイルがあるが、このうち19本については非推奨となっている。

STLは標準規格に採用される前はヒューレット・パッカードの(一時はシリコングラフィックスの)商用ライブラリであった。STLは標準規格の単なる一部分に過ぎず規格書にSTLという表記は見られないが、STL以外の部分(入出力ストリーム、国際化、デバッグ機能、C言語標準ライブラリ等)と区別するために今でも多くの人がSTLという用語を使っている。

大半のC++コンパイラはSTLを含むC++標準ライブラリの実装を提供している。STLPortのようなコンパイラ非依存のSTLも存在する。様々な目的でC++標準ライブラリを独自に実装しているプロジェクトは他にもある。

C++の標準ライブラリは大きく次のように分けられる。多種多様な実行環境が存在することを考慮して、スレッドGUIに関するライブラリは標準に含まれていない。

  • 入出力
  • 文字列
  • 現地化(ロケール)
  • 数値演算
  • STL
  • その他(例外処理や日付と時刻の処理など)

外部ライブラリ

以下に、C++で広く使われていると思われるライブラリを挙げる。

  • Boost 次期C++標準とも言われる様々なライブラリの集合。 正規表現を扱うBoost.Regexや無名関数(ラムダ計算)を簡潔に記述できるBoost Lambda Libraryなどが有名。
  • Apache Xerces C++での主要XMLパーサの一つ。Java版も存在する。
  • CppUnit C++でのユニットテストフレームワーク。 クラス毎の動作確認に威力を発揮する。→xUnit

特徴

C言語に、オブジェクト指向プログラミングをサポートするための改良が加えられたものといえるが、他のオブジェクト指向を念頭において作られた言語と違い、旧来のCと同様に手続き型言語としても扱えるという特徴がある(このとき、C++をbetter Cというふうに呼ぶことがある)。また基本的にC言語に対して上位互換性がある。初期のC++はCへのトランスレータとして実装された(すなわち、C++プログラムを一旦Cプログラムに変換してからコンパイルしていた)。

その後、先祖であるC言語の標準規格制定時には、const修飾など、C++の機能がC言語に取り入れられることにもなった。現在ではC言語とC++との間には厳密な互換性はない。特にC99の出現により、C言語との互換性は完全に失われている。

次のような多種多様な機能を持っており、言語仕様は大変複雑である。言語仕様を完全に満たしているコンパイラは、現在数えるほどしかない。

ここから、よりオブジェクト指向を強化し、「なんでもあり」ではない代わりに分かりやすくスマートな設計を目指した新たな言語(JavaD言語など)が作られることとなった。

Hello World!

C++はC言語及びそのプリプロセッサの構文をほぼ継承している。以下のサンプルはストロヴストルップが記述した標準C++ライブラリのストリーム機能を用いて標準出力に出力するHello worldプログラムである[6][7]

#include <iostream>
 
int main()
{
   std::cout << "Hello, world!\n";
}

演算子と演算子のオーバーロード

C++には四則演算、ビット演算、参照、比較、論理演算などの30を超える演算子がある。メンバーアクセス演算子(.と.*)のような一部の例外はあるが、大半の演算子はユーザー定義によるオーバーロードが可能である。オーバーロード可能な演算子が豊富に揃えられているためC++を一種のドメイン固有言語として利用できる。またオーバーロード可能な演算子はスマートポインタのような先進的な実装テクニックに欠かせないものとなっている。演算子をオーバーロードしても演算の優先順位は変化せず、また演算子のオペランドの数も変化しない(ただし指定したオペランドが無視される可能性はある)。

テンプレート

C++ではテンプレートを使ってジェネリックプログラミングができる。C++は関数テンプレートとクラステンプレートの両方をサポートしている。テンプレートは型、コンパイル時定数またはその他のテンプレートによってパラメタライズできる。テンプレートはコンパイル時にインスタンス化される。コンパイラは関数やクラスをインスタンス化するためにテンプレート仮引数を特定の値に置き換える。テンプレートはジェネリックプログラミングテンプレートメタプログラミング、コード最適化などのために利用される強力なツールであるが、一定のコストを伴う。各テンプレートのインスタンスはテンプレート仮引数毎にテンプレートコードのコピーを生成するためコードサイズが肥大化する。コンパイル時に型の情報を削除して単一のテンプレートインスタンスを生成するランタイム型のジェネリクスを実装したJavaなどの言語とは対照的である。

テンプレートとマクロはいずれもコンパイル時に処理される言語機能であり条件に基づいたコンパイルが行われるが、テンプレートは字句の置き換えに限定されない。テンプレートはC++の構文と型を解析し、厳密な型チェックに基づいた高度なプログラムの流れの制御ができる。マクロは条件コンパイルに利用できるが、新しい型の生成、再帰的定義、型の評価などは行えないため、コンパイル前のテキストの置き換えや追加・削除といった用途に限定される。つまりマクロは事前に定義されたシンボルに基づいてコンパイルの流れを制御できるものの、テンプレートとは異なり独立して新しいシンボルを生成することはできない。テンプレートは静的な多態(下記参照)とジェネリックプログラミングのためのツールである。

C++のテンプレートはコンパイル時におけるチューリング完全なメカニズムである。これはテンプレートメタプログラムを用いて実行する前にコンピュータが計算可能なあらゆる処理を表現できることを意味している。

概略すれば、テンプレートはインスタンス化に必要な引数を明確にしなくても記述できるコンパイル時にパラメタライズされる関数またはクラスである。インスタンス化した結果は、テンプレート仮引数に指定した型に特化した形で記述されたコードと全く等価になる。これによりテンプレートは、汎用的かつおおまかに記述された関数及びクラス(テンプレート)と特定の型に特化した実装(インスタンス化されたテンプレート)の依存関係を解消し、パフォーマンスを犠牲にすることなく抽象化できる手段を提供する。

オブジェクト

C++はC言語オブジェクト指向プログラミングをサポートするための改良を加えたものといえる。C++のクラスにはオブジェクト指向言語で一般的な抽象化カプセル化継承多態の4つの機能がある。オブジェクトは実行時に生成されるクラスのインスタンスである。クラスは実行時に生成される様々なオブジェクトのひな形と考えることができる。

カプセル化

カプセル化とは、データ構造を保証し、演算子が意図したとおりに動作し、クラスの利用者が直感的に使い方を理解できるようにするためにデータを隠蔽することである。クラスや関数はC++の基礎的なカプセル化のメカニズムである。クラスのメンバはpublic、protected、privateのいずれかとして宣言され明示的にカプセル化できる。publicなメンバはどの関数からでもアクセスできる。privateなメンバはクラスのメンバ関数から、またはクラスが明示的にアクセス権を与えたフレンド関数からアクセスできる。protectedなメンバはクラスのメンバおよびフレンド関数に加えてその派生クラスのメンバからもアクセスできる。

オブジェクト指向では原則としてクラスのメンバ変数にアクセスする全ての関数はクラスの中にカプセル化されなければならない。C++ではメンバ関数およびフレンド関数によりこれをサポートするが、強制はされない。プログラマはメンバ変数の一部または全体をpublicとして定義でき、型とは無関係な変数をpublicな要素として定義できる。このことからC++はオブジェクト指向だけでなく、モジュール化のような機能分割のパラダイムもサポートしているといえる。

一般的には、全てのデータをprivateまたはprotectedにして、クラスのユーザに必要最小限の関数のみをpublicとして公開することがよい習慣であると考えられている。このようにしてデータの実装の詳細を隠蔽することにより、設計者はインターフェイスを変更することなく後日実装を根本から変更できる [8] [9]

継承

継承を使うと他のクラスの資産を流用できる。基底クラスからの継承はpublic、protected、privateのいずれかとして宣言する。このアクセス指定子により、派生クラスや全く無関係なクラスが基底クラスのpublicおよびprotectedメンバにアクセスできるかどうかを決定できる。普通はpublic継承のみがいわゆる派生に対応する。残りの二つの継承方法はあまり利用されない。アクセス指定子を省略した場合、構造体はpublic継承になるのに対し、classではprivate継承になる。基底クラスをvirtualとして宣言することもできる。これは仮想継承と呼ばれる。仮想継承は基底クラスのインスタンスが1つだけ存在することを保証するものであり、多重継承の曖昧さの問題を避けることができる。

多重継承はC++の中でもしばしば問題になる機能である。多重継承では複数の基底クラスから1つのクラスを派生できる。これにより継承関係が複雑になる。例えば"Flying Cat"クラスは"Cat"クラスと"Flying Mammal"クラスから派生できる。JavaC#では、基底クラスの数を1つに制限する一方で、複数のインタフェースを継承でき、これにより制約はあるものの多重継承に近い機能を実現できる。インタフェースはクラスと異なりメンバ関数を宣言できるのみであり、関数の実装やメンバ変数は定義できない。JavaとC#のインタフェースや抽象クラスはC++の抽象基底クラスと呼ばれる関数宣言のみを持つクラスに相当する。JavaやC#の継承モデルを好むプログラマは、非抽象クラスからのみクラスを派生させる方法を選択できる。この場合は抽象基底クラスのメンバ関数を必ず明示的に定義しなければならず、またこのクラスを継承することはできない。

多態

多態(ポリモーフィズム)はよく多用されているインターフェイスの機能であり、様々な状況下でオブジェクトに異なる振る舞いをさせることができる。

C++は静的な多態動的な多態の両方をサポートする。コンパイル時に解決される静的な多態は実行時には考慮されないのに対し、ランタイム時に解決される動的な多態はパフォーマンス的に不利である。

静的な多態

関数のオーバーロードは名称が同じ複数の関数を宣言できる機能である。ただし引数は異なっていなければならない。関数は引数の型や数で区別される。同名の関数はコードの文脈によってどの関数が呼ばれるのかが決まる。関数の戻り値の型で区別することはできない。

関数を宣言する際にプログラマはデフォルト引数を指定できる。関数を呼び出すときに引数を省略した場合はデフォルト引数が適用される。関数を呼び出すときに宣言よりも引数の数が少ない場合は、左から右の順で引数の型が比較され、後半部分にデフォルト引数が適用される。たいていの場合は1つの関数にデフォルト引数を指定するよりも引数の数が異なる関数をオーバーロードする方が望ましい。

C++のテンプレートではより洗練された汎用的な多態を実現できる。特にCuriously Recurring Template Patternにより仮想関数のオーバーライドをシミュレートした静的な多態を実装できる。C++のテンプレートは型安全かつ チューリング完全であるため、 テンプレートメタプログラミングによりコンパイラに条件文を再帰的に解決させて実行コードを生成させることにも利用できる。

動的な多態

派生

基底クラスへのポインタ変数及び参照は、正確に型が一致するオブジェクトだけでなく、その派生クラスのオブジェクトを示すことができる。これにより配列やコンテナは複数の型へのポインタを保持できる。ポインタ変数は実行時に値が割り当てられるためこれは実行時の話である。

dynamic_castは基底オブジェクトから派生オブジェクトへの変換を安全に行うための演算子である(派生オブジェクトから基底オブジェクトへの変換ではキャストは必要ない)。この機能は実行時型情報 (RTTI)に依存している。オブジェクトが特定の派生オブジェクトであることがあらかじめわかっている場合はstatic_castでキャストすることもできる。static_castは純粋にコンパイル時に解決されるため動作が速くRTTIを必要としない。

仮想関数

基底クラスの関数を派生クラスでオーバーライドした場合、実際に呼び出される関数はオブジェクトの型によって決定される。派生クラスによってオーバーライドでされるのは引数の数や型が同じ関数である。基底クラスのポインタのみが与えられた場合、コンパイラはオブジェクトの型をコンパイル時に特定できず正しい関数を呼び出せないため、実行時にこれを特定する。これをダイナミックディスパッチと呼ぶ。仮想関数やメソッド[10]により、オブジェクトに割り当てられた実際の型に従って、最上位の派生クラスで実装した関数が呼び出される。一般的なC++コンパイラは仮想関数テーブルを用いる。オブジェクトの型が判明している場合はスコープ解決演算子を利用して仮想関数テーブルを使わないようにバイパスすることもできるが、一般的には実行時に仮想関数の呼び出しを解決するのが普通である。

標準のメンバ関数に加え、オーバーロードした演算子やデストラクタも仮想関数にできる。原則的にはクラスが仮想関数を持つ場合はデストラクタも仮想関数にすべきである。コンストラクタやその延長線上にあるコピーコンストラクタはコンパイルされた時点でオブジェクトの型が確定しないため仮想関数にできない。しかしながら、派生オブジェクトへのポインタが基底オブジェクトへのポインタとして渡された場合に、そのオブジェクトのコピーを作らなければならない場合は問題が生じる。このような場合はclone()関数(またはそれに準じる物)を仮想関数として作成するのが一般的な解決方法である。clone()は派生クラスのコピーを生成して返す。

= 0を関数宣言の閉じ括弧とセミコロンの間に挿入することによりメンバ関数を純粋仮想関数にできる。純粋仮想関数を持つクラスは純粋仮想クラスと呼ばれ、このクラスからオブジェクトを生成することはできない。このような純粋仮想クラスは基底クラスとしてのみ利用できる。派生クラスは純粋仮称関数を継承するため、派生クラスのオブジェクトを生成したい場合は全ての純粋仮想関数をオーバーライドして実装しなければならない。純粋仮想関数を持つクラスのオブジェクトを生成しようと試みるようなプログラムは行儀が悪い。

単一行コメント

かつてC言語とC++との分かりやすい差異として、// で始まり改行で終わる、単一行コメントの有無があった。

単一行コメントはもともと、C言語の祖先にあたるBCPLに含まれていた仕様である。現在のC++のコンパイラの多くがC言語のコンパイラとしても使えるようになっているのと同様に、C言語が生まれて間もない頃は、C言語に加えB言語やBCPLのコンパイルができるコンパイラが用いられていた。それらコンパイラは、C言語のソースであってもBCPLと同様に単一行コメントが使用できるよう独自の拡張がなされていたため、BCPLの単一行コメントに慣れ親しんでいたプログラマ達は、C言語でも単一行コメントを使い続けた。その慣習がC++の誕生時まで生き残っていたため、C++では単一行コメントを「復活」させることになったのである。

そのためもあって、C言語での仕様外の単一行コメントの使用は半ば常習と化し、現在ではC99によって、C言語でも正式に単一行コメントがサポートされるようになった。 (//に対応していない古い仕様のCコンパイラでもcppを対応したものに変更することにより使用可能)

C++ソースコードの処理とパーサ

LALR(1)のような旧式のパースアルゴリズムを用いてC++のパーサを記述することは比較的難しい[11]。その理由の一つはC++の文法がLALRではないことである。このため、コード分析ツールや、高度な修正を行うツール(リファクタリングツールなど)は非常に少ない。この問題を取り扱う方法としてLALR(1)でパースできるように改良されたC++の亜種(SPECS)を利用する方法がある。GLRパーサのようにより強力でシンプルなパーサもあるが処理が遅い。

パースはC++を処理するツールを作成する際の最も難しい問題ではない。このようなツールはコンパイラと同じように識別子の意味を理解しなければならない。従ってC++を処理する実用的なシステムはソースコードをパースするだけでなく、各識別子の定義を正確に適用し(つまりC++の複雑なスコープのルールを正確に取り扱い)、型を正しく特定できなければならない。

いずれにせよC++ソースコード処理ツールが実用的であるためには(GNU GCCVisual C++で使われているような)様々なC++の方言を取り扱えなければならず、適切な分析処理やソース変換やソース出力などが実装できなければならない。GLRのような先進的なパースアルゴリズムとシンボルテーブルを組み合わせてソースコードを変換する方法を利用すればあらゆるC++ツールを開発できる。

互換性

C++規格に準拠したコンパイラを開発するのは一般的に難しい。何年にも渡りC++に部分的に準拠した様々なコンパイラが作られ、テンプレートの部分特殊化などの部分で実装にばらつきがあった。最近のメジャーなC++コンパイラは1998年の規格にほぼ準拠している[12]。規格に完全に準拠する実装は恐らくまだ無いと考えられる。

テンプレートの宣言と実装を分離できるようにするためのexportは問題のキーワードの一つである。規格がリリースされてから5年後の2003年前半にComeau C/C++が初めてexportを実装した。2004年にBorland C++ Builder Xexportを実装した。これらのコンパイラはいずれもEDGのフロントエンドをベースにしていた。大半のコンパイラで実装されていないexportは多くのC++関連書籍(例えばBeginning ANSI C++ Ivor Horton著)にサンプルが記されているが、exportが記載されていることによる問題は特に指摘されていないということも注目すべき点である。GCCをはじめとするその他のコンパイラでは全くサポートしていない。Herb SutterはC++の標準規格からexportを削除することを推奨していたが[13]、最終的にこれを残すことで決定している[14]

コンパイラ開発者の裁量で決められる範囲を確保するため、C++標準化委員会は名前修飾例外処理などの実装に依存する機能の実装方法を決定しないことに決めた。この決定の問題はコンパイラが異なるとオブジェクトファイルの互換性が保証されない点である。特定の機種やOSでコンパイラの互換性を持たせようとするABI[15]のような非標準の規格もあり、一部のコンパイラではこうした準規格を採用している。

C言語との互換性

C++は基本的にC言語の上位互換であるが、厳密には異なる[16]。C言語で記述された大半のプログラムはC++でコンパイルできるように簡単に修正できるが、C言語では正当でもC++では不正になる部分や、C++とは動作が異なる部分が若干存在する。

例えば、C言語では汎用ポインタ( void* )は他のポインタに暗黙で変換できるが、C++では変換を明示する必要がある。またC++では newclass といった数多くの新しいキーワードが追加されたが、移植の際に元のC言語のプログラムでそれらが識別子(例えば変数名)として使われていると、問題になる。

C言語の標準規格である C99 やその後継 C11 ではこうした非互換性の一部が解決されており、//形式のコメントや宣言とコードの混在といったC++の機能がC言語でサポートされている。その一方でC99では、可変長配列、複素数型の組み込み変数、指示初期化子、複合リテラルといった、C++でサポートしていない数多くの新機能が追加された[17]。しかしながらC99で追加された新機能の一部はC++の次期バージョンであるC++0xに含まれる見込みである。また、可変長配列や複素数型などの C99 に追加された機能の一部は C11 でオプションとなった。

C言語のコードとC++のコードを混在させるためにはCリンケージを利用する必要があり、関数をextern "C" { ... }のブロックの中で宣言しなければならない。Cリンケージを利用した関数については、C++名前修飾がされず、名前修飾に依存している関数オーバーロード機能は利用できない。

主なC++処理系

脚注

[ヘルプ]
  1. ^ Bjarne Stroustrup's FAQ - When was C++ invented?” (English). 2006年5月30日閲覧。
  2. ^ ISO/IEC 14882:1998
  3. ^ ISO/IEC 14882:2003
  4. ^ ISO/IEC TR 19768:2007
  5. ^ ISO/IEC 14882:2011
  6. ^ Bjarne Stroustrup (2000年). The C++ Programming Language (Special Edition ed.). Addison-Wesley. pp. 46. ISBN 0-201-70073-5. 
  7. ^ Open issues for The C++ Programming Language (3rd Edition) - このコードはストロヴストルップ自身による訂正文からの引用(633ページ)。std::endl'\n'に改めている。またmain関数がデフォルトで0を返す件についてはwww.research.att.com及びwww.delorie.com/djgpp/ を参照されたし。このデフォルト仕様はmain関数のみであり他の関数にはない。
  8. ^ Sutter, Herb; Alexandrescu, Andrei (2004). C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. Addison-Wesley. 
  9. ^ Henricson, Mats; Nyquist, Erik (1997). Industrial Strength C++. Prentice Hall. ISBN ISBN 0-13-120965-5. 
  10. ^ Stroustrup, Bjarne (2000). The C++ Programming Language (Special Edition ed.). Addison-Wesley. p. 310. ISBN 0-201-70073-5. "A virtual member function is sometimes called a method. (仮想関数のことをメソッドと呼ぶ場合がある)" 
  11. ^ Andrew Birkett. “Parsing C++ at nobugs.org”. Nobugs.org. 2009年7月3日閲覧。
  12. ^ Herb Sutter (2003年4月15日). “C++ Conformance Roundup”. Dr. Dobb's Journal. 2006年5月30日閲覧。
  13. ^ Why We Can’t Afford Export (PDF, 266 KB)
  14. ^ Minutes of J16 Meeting No. 36/WG21 Meeting No. 31, April 7-11, 2003” (2003年4月25日). 2006年9月4日閲覧。
  15. ^ C++ ABI”. 2006年5月30日閲覧。
  16. ^ Bjarne Stroustrup's FAQ - Is C a subset of C++?”. 2008年1月18日閲覧。
  17. ^ C9X -- The New C Standard”. 2008年12月27日閲覧。

参考文献

関連項目


著作権

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2012/05/18 08:06 UTC 版)

((C) から転送)

著作権(ちょさくけん)とは、言語音楽絵画建築図形映画写真コンピュータプログラムなどの表現形式によって自らの思想・感情を創作的に表現した者に認められる、それらの創作物の利用を支配することを目的とする権利をいう。著作権は特許権商標権にならぶ知的財産権の一つとして位置づけられている。

著作権の保護については、『文学的及び美術的著作物の保護に関するベルヌ条約』(ベルヌ条約)、『万国著作権条約』、『著作権に関する世界知的所有権機関条約』(WIPO著作権条約)、『知的所有権の貿易関連の側面に関する協定』(TRIPS協定)などの条約が、保護の最低要件などを定めており、これらの条約の締約国が、条約上の要件を満たす形で、国内の著作権保護法令を定めている。

著作権者を表すコピーライトマーク「©」は、現在では、方式主義をとるカンボジア及びラオスの2か国以外では著作権の発生要件としての法的な意味はないが、著作権者をわかりやすく表すなどのために広く使われている(#コピーライトマーク参照。)。

目次

権利としての特徴

著作権は著作者に対して付与される財産権の一種であり、著作者に対して、著作権の対象である著作物を排他的に利用する権利を認めるものである。例えば、小説の作者は、その小説を排他的に出版、映画化、翻訳する権利を有しており、他人が著作者の許諾なしに無断で出版、映画化、翻訳した場合には、著作権を侵害することになる。

著作権は無体財産権であるが、著作者が作品の媒体たる有体物の所有権を他人に譲渡した場合でも、その行為によって著作権が消滅したり、移転したりすることはない。例えば、小説家は執筆原稿を出版者に譲渡しても、依然として著作者としての諸権利を有している。

著作権は相対的独占権あるいは排他権である。特許権や意匠権のような絶対的独占権ではない。すなわち、既存の著作物Aと同一の著作物Bが作成された場合であっても、著作物Bが既存の著作物Aに依拠することなく独立して創作されたものであれば、両著作物の創作や公表の先後にかかわらず、著作物Aの著作権の効力は著作物Bの利用行為に及ばない。同様の性質は回路配置利用権にもみられる。

著作権による保護の対象

著作権は「変更」すなわち著作物(「思想又は感情」の「創作的」な「表現」であり、文芸、学術、美術又は音楽の範囲に属するもの)に対する保護を与える。ここで、「創作的」については表現者の個性が表れていれば足り、新規性や独創性までは要せず、他と区別できる程度であればよいとされる。

著作権の対象として想定されるのは、典型的には美術、音楽、文芸、学術に属する作品である。絵画、彫刻、建築、楽曲、詩、小説、戯曲、エッセイ、研究書などがその代表的な例である。他に、写真、映画、テレビゲームなど、新しい技術によって出現した著作物についても保護の対象として追加されてきた。

美術的分野では、著作権のほか、意匠権工業デザインの権利を保護するが、著作権は原則として美術鑑賞のための作品などに適用され、実用品には適用されないとする。ただし、この境界線は必ずしも明解ではなく、美術工芸品は双方の権利が及ぶとする説もある。また、国によっては意匠法と著作権法をまとめて扱っている場合もある。

国によって保護の対象が異なる場合があり、例えば、フランスの著作権法では著作物本体のほかにそのタイトルも創作性があれば保護する旨を規定している。同じく、一部の衣服のデザインが保護されることが特に定められている。米国の著作権法では船舶の船体デザインを保護するために特に設けられた規定がある。他に、明文規定によるものではないが、活字の書体は日本法では原則として保護されないが、保護する国もある。

権利が生じないもの

権利が生じず、保護の対象にならないものとして、典型的にはまったく創作性のない表現と情報やアイディア・ノウハウがある。例えば、五十音順に人名と電話番号を配しただけの電話帳や丁寧に書かれただけの正方形などは著作物ではないので保護されない(電話帳については、その配列によって創作性を有する編集著作物であるとされることもある[1])。最低限どのような創作性が必要になるかについては必ずしも明瞭な判断基準は存在しない。

また、非常に独創的な思想や非常に貴重な情報であっても、そうした思想自体、情報自体が著作権法によって保護されることはない。ここから、ある数学の問題の解法やニュース報道で取り上げられる事実などは、その発見や取材に非常な努力を要することがあっても、著作権で保護されることはない。ただし、その解法の表現や、ニュース報道における事実の表現などは著作権で保護されることがある。

著作権の発生要件

特許権、意匠権、商標権などは登録が権利発生の要件であるが、著作権の発生要件について登録等を権利発生の要件とするか否かについては立法例が分かれる。ベルヌ条約は、加盟国に無方式主義の採用を義務付けている(ベルヌ条約5条2項、無方式主義)。なお、日本には著作権の登録があるものの、ベルヌ条約の加盟国であることもあり発生要件ではない。あくまでも、第三者対抗要件に過ぎない。

また、著作物が有形の媒体に固定されている必要があるか否かについても立法例が分かれる。ベルヌ条約では固定を要件とするか否かに関しては加盟国の立法に委ねている(ベルヌ条約2条2項)。アメリカ合衆国著作権法では、著作物が固定されていることが保護の要件となっており(102条(a))、未固定の著作物は専ら州法の規律による。日本の場合は固定を要件としていないが、映画の著作物については物への固定が要件であると一般的には解されている(ただし、この点には議論がある)[2]

尚、北朝鮮もベルヌ条約加盟国であるが、日本は北朝鮮を国家として承認していない事を理由に、2011年12月、北朝鮮の著作物に関しては日本国内で保護義務が無いとの司法判断が最高裁によってなされた[3][4]

コピーライトマーク

Copyright.svg

コピーライトマーク「©」は、著作権の発生要件として著作物への一定の表示を求めていたかつての米国をはじめとする方式主義国において、要件を満たす著作権表示を行うために用いられるマークである。

一方、日本などの無方式主義を採る国においては著作物を創作した時点で著作権が発生するため、著作物に特定の表示を行う義務は課されていない。しかし、著作権は各国ごとに発生するため、無方式主義国における著作物でも、方式主義国において著作権保護を得るためにはその国での著作権の発生要件を満たす必要があり、このマークを付すことが一般的に行われていた。

しかし、かつては方式主義を採り、方式主義と無方式主義の両方を許容する万国著作権条約のみを締結していた米国が、1989年に無方式主義を義務づけるベルヌ条約を締結して、無方式主義を採用するなどした結果、現在、万国著作権条約のみを締結して方式主義を採用している国はカンボジアだけであり)[5][6]、カンボジア以外では、このマークにはもはや著作権発生要件としての法的な意味は存在していない。

しかしながら、アメリカ合衆国著作権法においては、著作権表示が行われている場合、著作権侵害になることを知らなかったという善意侵害の抗弁は考慮されないとの規定があるとともに(401条(d))、著作権者を明確に表示するために便利な記述であるため、このマークは現在でも広く使われている。

著作者人格権との関係

著作権は財産権の一種であるが、著作者に認められる権利(著作者の権利)としては、その他に著作者の人格的利益を保護するものとして、人格権の一種である著作者人格権がある。両者の関係については考え方及び立法例が分かれる。

まず、著作権法により著作者に対して保障する権利を純粋に財産権としての著作権として把握する考え方がある。この考え方を徹底しているのがアメリカ合衆国著作権法であり、著作者の人格的権利はコモン・ロー上の人格権の範疇に含まれる。もっとも、ベルヌ条約が加盟国に対して著作者人格権の保護を要求していることもあり、1990年の法改正により、視覚芸術著作物について限定された形で著作者人格権を保護する旨の規定を設けた(106A条)。

第2に、著作者に対して、財産的権利と人格的権利の双方を著作権法上保障する考え方がある。大陸法の著作権法は基本的にこのような考え方に立脚している。フランスの知的所有権法典に関する1992年7月1日の法律がこの考え方に立脚しており、著作者の権利について、人格的な性質と財産的な性質を包含するものとして規定し(111の1条第2項)、いわゆる著作者人格権は処分できないものとする(121の1条第3項)のに対し、著作権は処分できるものとして(122の7 条)区別している点にこのような考え方が現れている。

第3に、著作者に対して、財産的権利と人格的権利の双方を著作権法上保障するが、両者は一体となっており分離できないものとして把握する考え方がある。ドイツの1965年9月9日の著作権及び著作隣接権に関する法律がこの考え方に立脚しており、著作者の権利の内容を構成するものとして著作者人格権に関する規定を置いているが(11条-14条)、財産権と人格権が一体化しているがゆえに、財産権をも含む著作者の権利について譲渡ができない旨の規定が置かれている(29条)点にこのような考え方が現れている。

日本法の法制は、著作権法上、著作者の権利として財産権たる著作権と人格権たる著作者人格権を保障しつつ、前者は譲渡可能なものとして理解し、後者は譲渡不可能なものとして理解している点でフランス法に近い。

著作権の歴史

古来から書籍は貴重なもので、その閲覧や複写を制限しようという考え方はあり、また、真の著者をめぐって争われることもあった。

しかし、本格的に考慮されるようになったのは、15世紀にグーテンベルクによる印刷術が確立し[7]、読者層が従来の聖職者、学者[要出典]からブルジョワ階級に広がって以降である。

16世紀になると、ヴェネツィアなど出版の盛んな地域で出版権が認められるようになり、イギリスでも特許の一種として、しばしば、個別の著作が認定されていたが、1662年に最初の出版権を定めた法が制定された。1709年のアン法で著作者の権利、すなわち、著作権が認められた[7]。この法では、著作権の有効期間(著者の死後14年、1度更新可能で最大28年)や、その後のパブリック・ドメインの概念も制定されている[8]

フランスでは革命時に、著作者の権利が宣言され、アメリカ合衆国では1790年に著作権法が制定されている。19世紀に入ると著作権の対象は印刷物以外(音楽写真など)に拡大されていく。

その後、1886年のベルヌ条約で国際的な著作権の取り決めができ、1952年に万国著作権条約が締結された。

著作権法および著作権についての考え方は、著作者・著作権者・利用者など利害関係者の様々な要請を受け、広く一般に主張が起きたり、専門家の間で議論が起きたり、立法の場で話し合われたり、行政の場で検討されたり、司法の場で争われたりするなど絶えず変更を受け続けている[9]

20-21世紀に入り、テクノロジーの著しい進歩及び権利ビジネスの伸張など経済社会の変化を受けた産業保護の観点からの要請と、著作物の自由な利用の要請(時には自由な言論の存続の希望を含む)との衝突が顕著な争点の一つになっている[10]

1984年に判決が出た米国のベータマックス事件(ソニー勝訴)[11]1992年に生まれた日本の私的録音録画補償金制度[12]1997年に創設されたインタラクティブ送信に係る公衆送信権・送信可能化権(日本)[13]1999年に起こされたソニー・ボノ法への違憲訴訟(米国、2003年に合憲判決)[14]2001年ナップスター敗訴(米国)[15]などである。

日本における著作権

以下本節において、著作権という用語は日本の著作権法での定義どおり著作者人格権を含まない意味で用いる。

著作権法は以下で条数のみ記載する。

歴史

日本では、近代以前においては版木の所有者である版元が出版物に関する権利者と考えられ、著作権に相当する概念が存在しなかったとされている。明治初期に福沢諭吉らの紹介と政府への働きかけにより、「版権」として著作権の一部が保護を受けることになった。

19世紀末に日本がベルヌ条約への加盟をするにあたり、国内法の整備の一環として初めて著作権法が制定された。この著作権法は「旧著作権法」とも呼ばれるもので、1970年(昭和45年)に旧法を全部改正して制定された新著作権法とは通常区別される。

20世紀半ば以降、企業により著作物が製作されるようになると、便宜的に架空の人物を著作者とした事例が出てくるようになった(八手三郎アラン・スミシーなど)。

権利の内容と譲渡可能性

日本の著作権法の下では、原則として、著作権は創作の時点で自動的に創作者(著作者)に帰属する(無方式主義 cf.方式主義)。つまり、原始的には著作者たる地位と著作権者たる地位が同一人に帰属する。

もっとも、著作権は財産権の一種であり、譲渡することが可能であり、さらには、以下のような支分権ごとにも譲渡可能と理解されている。したがって、創作を行った者と現時点の著作権者とは一致しないこともあるし、支分権ごとに権利者が異なることもありうる。また、映画の著作物については、著作権の原始的帰属について特例が設けられている(16条)。この場合でも人格権としての著作者人格権は著作者に残されるため(59条)、著作権者であるといえども無断で著作物を公表・改変したり、氏名表示を書き換えたりすることはできない。

なお、著作者と著作権者の用語の使い分けが分かりづらいためか、2005年(平成17年)1月に文化審議会著作権分科会から発表された「著作権法に関する今後の検討課題」の中では、用語の整理の検討が必要であると言及されている。

支分権

複製権
著作物を複製する権利。
上演権及び演奏権
著作物を公に上演したり演奏したりする権利。
上映権
著作物を公に上映する権利。
公衆送信権
著作物を公衆送信したり、自動公衆送信の場合は送信可能化したりする権利。また、公衆送信されるその著作物を受信装置を用いて公に伝達する権利。
口述権
言語の著作物を公に口述する権利。
展示権
美術の著作物や未発行の写真の著作物を原作品により公に展示する権利[16]
頒布権
映画の著作物をその複製によって頒布する権利。
譲渡権
著作物を原作品か複製物の譲渡により、公衆に伝達する権利(ただし、映画の著作物は除く)。
貸与権
著作物をその複製物の貸与により公衆に提供する権利。
翻訳権
翻案権」。 著作物を翻訳し、編曲し、若しくは変形し、又は脚色し、映画化し、その他翻案する権利。
追求権

権利行使

著作権者は、他人に対し、その著作物の利用を許諾することができる(63条1項)。この許諾を得た者は、その許諾に係る利用方法及び条件の範囲内において、その許諾に係る著作物を利用することができる(63条2項)。また、この許諾に係る著作物を利用する権利は、著作権者の承諾を得ない限り、譲渡することができない(63条3項)。

  • 著作物の放送又は有線放送についての許諾は、契約に別段の定めがない限り、当該著作物の録音又は録画の許諾を含まないものとする(63条4項)。
  • 著作物の送信可能化についての許諾を得た者が、その許諾に係る利用方法及び条件(送信可能化の回数又は送信可能化に用いる自動公衆送信装置に係るものを除く。)の範囲内において反復して又は他の自動公衆送信装置を用いて行う当該著作物の送信可能化については、23条1項の規定は、適用しない(63条5項)。23条1項の規定とは、「著作者は、その著作物について、公衆送信(自動公衆送信の場合にあつては、送信可能化を含む)を行う権利を専有する」とするものである。

共有著作権(共同著作物の著作権その他共有に係る著作権)は、その共有者全員の合意によらなければ、行使することができないが(65条2項)、各共有者は、正当な理由がない限り、合意の成立を妨げることができない(65条3項)し、信義に反して合意の成立を妨げることができない(65条4項、64条2項)。また、代表権に加えられた制限は、善意の第三者に対抗することができない(65条4項、64条4項)。

著作権の対象とならないもの

10条2項は「事実の伝達にすぎない雑報及び時事の報道は、前項第1号に掲げる著作物に該当しない」と規定している。

13条は、次の著作物が「この章の規定による権利の目的となることができない。」と規定している。これらの著作物の内容は、国民の権利や義務を形成するものであり、一般国民に対して広く周知されるべきものであるため、著作権による保護対象とすることは妥当でないと考えられるからである。

  1. 憲法その他の法令
    • 条約(未批准条約を含む)、外国の法令、廃止された法令も含まれる。また、政府作成の法律案、法律草案、改正試案なども、本号に含まれるものと解する。ただし、新聞社が作成した日本国憲法改正私案のように、私人が作成した法令案は本号の対象外であって、著作権の対象となりうる。
  2. 若しくは地方公共団体の機関又は独立行政法人(独立行政法人通則法(平成11年法律第103号)第2条第1項に規定する独立行政法人をいう。以下同じ。)が発する告示、訓令、通達その他これらに類するもの
  3. 裁判所の判決、決定、命令及び審判並びに行政庁の裁決及び決定で裁判に準ずる手続により行われるもの
  4. 前3号に掲げるものの翻訳物及び編集物で、国若しくは地方公共団体の機関又は独立行政法人が作成するもの

著作権の制限

著作物の利用や使用について、その便宜上必要とされる範囲または著作権者の利権を害しない範囲において著作権が制限されることがある。主なものは以下の通り。

私的使用を目的とした複製(30条
個人的に又は家庭内、或いはこれに準ずる限られた範囲内において使用する場合は、権利者の承諾を得なくても複製を行うことが出来る。ただし、複製を行う装置・媒体がデジタル方式の場合は「補償金」を権利者に払わなければならないとされる(一般に「補償金」はそれらの装置や媒体を購入する時の値段に含まれる。詳しくは私的録音録画補償金制度を参照)[17]。また、技術的保護手段(いわゆる「コピーガード」)を回避しての複製を意図的に行うことは、私的使用であっても権利者の承諾があった場合に初めて認められるとしている。
ただ、ユーザーの間では、合法的に代金を支払って正規のソフトウェアを購入した場合においては、私的目的の範囲であれば、たとえ、そのソフトウェアのガードを回避してコピーを作成したとしても、「権利者に対し事前の複製許可を求めなくても、正規のお金を払ったのだから、実質的には問題無い。」とも考えられているようである[18]。しかし、その「正規のお金」は有体物としてのソフトウェアの「所有権に対する対価」であって「著作権に対する対価」ではなく、所有権と著作権を混同したエンドユーザーの誤解に過ぎない。(#著作権と所有権を参照)
ただし、b:著作権法第47条の3において第113条2項が適用されない場合に「自ら当該著作物を電子計算機において利用するために必要と認められる限度において、当該著作物の複製又は翻案(これにより創作した二次的著作物の複製を含む。)をすることができる。」と定められている。
図書館における複製(31条
政令で定められた図書館(公立図書館、国立国会図書館及び社団法人、財団法人並びに日本赤十字社の設置する図書館)において、利用者の求めに応じ、その調査研究の用に供するために、公表された著作物の一部分(判例(多摩市立図書館事件)により当該著作物の半分以下。発行後相当期間を経過した(次の号が発行された)定期刊行物に掲載された個個の著作物にあっては、その全部)の複製物を1人につき1部提供する場合、図書館資料の保存の必要性がある場合、他の図書館等の求めに応じて絶版等の理由により一般に入手することが困難な図書館資料の複製物を提供する場合、権利者の承諾がなくても複製が出来る。ただし、いずれも営利を目的としない場合に限られる[17]
引用32条
公表された著作物は自由に引用して利用することが出来る。ただし、それは公正な慣行に合致するものであり、かつ、報道・批評・研究その他の引用の目的上正当な範囲内で行われるものでなければならないとされる[19]
営利を目的としない上演等(38条
営利を目的とせず(非営利)、聴衆・観衆から料金を受けず(無償)、かつ実演家・口述家が報酬を受けない(無報酬)場合には、公表された著作物を上演・演奏・上映・口述することができる。実際には、非営利の要件は厳しく、上演等の主催者が営利目的の商業施設や店舗、会場や催事等である場合には、非営利とは認められない。また、観客等からだけでなく、開催者から実演家に報酬など直接の対価がある場合も認められない。(1項)
営利を目的とせず(非営利)、聴衆・観衆から料金を受けない(無償)場合には、放送・有線放送される著作物を受信して有線放送し、自動公衆送信し、または受信装置により公に伝達することができる。ここでの自動公衆送信については、それによる受信対象地域が放送対象地域に限定されている必要がある。この規定は放送等と同時に伝達することを要件としており、放送等を録画・録音して事後に再度伝達する事は含まれない。また、「受信装置により公に伝達」とは、受信装置により通常の方法で伝達されることを想定しており、受信装置以外の特殊な方法、装置を用いて伝達範囲を拡大することなどは認められない。なお、通常の家庭用受信装置(テレビ、ラジオなど)により公に伝達する場合は、非営利・無償の要件は適用されない。よって、営利目的の店舗等に置かれている家庭用テレビ・ラジオによる伝達は権利の対象とならない。(2項)
営利を目的とせず(非営利)、貸与を受ける者から料金を受けない(無償)場合には、映画の著作物以外の著作物の複製物(権限者による複製物であって、私的使用を目的とした複製(30条)により増製されたものではない)を公衆に貸与することができる。図書館等が無償で著作物を貸与できるようにするための規定であるが、主体は限定されていないため、私人間における非営利・無償の貸与も対象となる。なお、DVDなど映画の著作物については適用されないため、図書館で映画を公衆に貸与する場合、図書館から著作権者に著作権料が支払われている。(3項)
映画の著作物に関しては、権限者による複製物の頒布(譲渡、貸与)も頒布権が及ぶが、図書館ほか政令で定める公的な視聴覚施設間における無償の頒布は、補償金を権利者に支払うことにより認められる。(4項)なお、私人が所有する家庭用のDVD、ビデオテープ等については頒布権は消尽するとされている[20]
行政機関情報公開法等による開示のための利用(42条の2
行政機関の長、独立行政法人等又は地方公共団体の機関若しくは地方独立行政法人は、行政機関情報公開法、独立行政法人等情報公開法又は情報公開条例の規定により著作物を公衆に提供し、又は提示することを目的とする場合には、それぞれの法令で定める方法により開示するために必要と認められる限度で著作物を利用することができる。なお、行政機関以外では、最高裁判所は「最高裁判所の保有する司法行政文書の開示等に関する事務の取扱要綱」に、衆議院事務局は「衆議院事務局の保有する議院行政文書の開示等に関する事務取扱規程」に基づき情報公開制度を実施しているが、本条による著作物の利用を行えないため、国の機関以外の者が作成した著作物について、著作権を理由に不開示決定することが可能となる。

著作権と所有権

著作権に明るくない一般人においては、しばしば、著作物を表象した有体物の所有権を取得したことにより、著作権に類する権限も取得できると誤解する場合がある。しかし、所有権を取得したからといって著作権にかかる諸権利まで取得できるわけではない。このことは美術の著作物についての判例「顔真卿自書建中告身帖事件[21]で明らかになっている。

ただし、美術の著作物についての原作品の所有者による著作物の展示や展示に伴う複製などの行為には著作権の効力が及ばないとする規定がある(45条47条)。所有権者による当該行為にまで著作権の効力が及ぶものとすると、美術品の所有権を得た者の利益が著しく損なわれるため、著作権と所有権の調整を図ったものである。

著作権の保護期間

類似の権利

著作者人格権

著作隣接権

著作隣接権は著作権が対象としている著作物に密接に関連している権利であり、財産権と人格権を含む。作詞家・作曲家によって制作された楽曲は著作物であり、著作者である作詞家・作曲家は著作権を有している。楽曲を演奏する実演家や、それを録音するレコード製作者、楽曲を放送する放送事業者は、著作物の著作者ではないが、著作物に密接に関わる活動を業としている。このような著作物の利用者に発生する権利が著作隣接権として扱われる。保護期間は公開されてから50年間となっている[22]

2011年(平成23年)日本で自炊代行業者を相手どった提訴があり[23]、2012年(平成24年)1月20日、衆議院第2議員会館で出版社が公明党衆院議員池坊保子文部科学部会長や自民党議員らに出版社が著作隣接権をもてるよう要望した[24]。また著作者に対し著作隣接権を求めはじめている[25]

その他の知的財産権

脚注

  1. ^  東京地方裁判所平成8(ワ)9325
    2007年03月17日 判決
    判決全文 (PDF)”. 判例検索システム. 最高裁判所. 2012年3月17日閲覧。
    判決情報”. 判例検索システム. 最高裁判所. 2012年3月17日閲覧。
  2. ^ 『著作権とは何か』 51頁。
  3. ^ 2011年12月8日 MSN産経ニュース 北朝鮮の作品に著作権保護義務なし 最高裁判決
  4. ^ 著作権侵害差止等請求事件最高裁判所判決
    2011年12月08日 第一小法廷判決
    平成21(受)602
    判決全文 (PDF)”. 判例検索システム. 最高裁判所. 2011年12月9日閲覧。
    判決情報”. 判例検索システム. 最高裁判所. 2011年12月9日閲覧。
  5. ^ http://www.wipo.int/export/sites/www/treaties/en/documents/pdf/berne.pdf。WIPOのHPのベルヌ条約加盟国一覧
  6. ^ 著作権に基づく差止請求権不存在確認請求控訴事件,同附帯控訴事件 大阪高等裁判所判決
    2007年10月02日 判決
    平成19(ネ)713
    判決全文 (PDF)”. 判例検索システム. 最高裁判所. 2012年3月17日閲覧。
    判決情報”. 判例検索システム. 最高裁判所. 2012年3月17日閲覧。
  7. ^ a b 『著作権とは何か』 113頁。
  8. ^ もっとも、この時代は著作権の対象は書籍だけで、音楽などは対象外であり、モーツァルトも盛んに盗作【既存の音楽の再利用、改変】を行っていた。
  9. ^ 『著作権とは何か』 111-112頁。
  10. ^ 『著作権とは何か』 112-118・199-207頁。
  11. ^ 『著作権とは何か』 127-129頁。
  12. ^ 『著作権とは何か』 131-132頁。
  13. ^ 『著作権とは何か』 133-134頁。
  14. ^ 『著作権とは何か』 194-199頁。
  15. ^ 『著作権とは何か』 137-138頁。
  16. ^ 日本の著作権法に独特の規定。
  17. ^ a b 『著作権とは何か』 123頁。
  18. ^ 例えばITmediaコラム『「ソフトを購入する」ということ』(萩原栄幸)に示されたユーザーの事例のように、対価を支払ってソフトウェアメディアを購入、「使用する権利」を手に入れたことを拡大解釈、そのソフトをどう扱おうと問題にならないと認識するエンドユーザーも見られるところである
  19. ^ 『著作権とは何か』 123・176-177頁。
  20. ^ 平成14年04月25日最高裁判所第一小法廷判決、民集第56巻4号808頁
  21. ^ 最高裁昭和59年1月20日第2小法廷・別冊ジュリスト著作権判例百選第3版No.157 4頁
  22. ^ 著作隣接権 - 文化庁
  23. ^ 書籍スキャン代行業者を提訴=著名作家7人が差し止め請求-東京地裁
  24. ^ 自公、出版業界と懇談 「自炊」代行業者提訴などで
  25. ^ 赤松健 なぜ出版社は「著作隣接権」が欲しいのか

参考文献

関連文献

  • 岡本薫 『著作権の考え方』 岩波新書:ISBN 4004308690
  • 岡本薫 『この1冊で誰でも分かる著作権』 全日本社会教育連合会:ISBN 4793701329
  • 加戸守行『著作権法逐条講義』著作権情報センター、2006年:ISBN 4885260523
  • 北村行夫、雪丸真吾編『Q&A 引用・転載の実務と著作権法』中央経済社、2005年 ISBN 4-502-92680-9
  • 斉藤博・半田正夫共監修『著作権判例百選』有斐閣、2001年。
  • 作田知樹『クリエイターのためのアートマネジメント ―常識と法律』八坂書房、2009年 ISBN 978-4896949346
  • 作花文雄『詳解著作権法』ぎょうせい、2004年。
  • 千野直邦、尾中普子『著作権法の解説』一橋出版、 ISBN 4834836207
  • 田村善之『著作権法概説』有斐閣、2001年。
  • 中村俊介、植村元雄監修『「どこまでOK?」迷ったときのネット著作権ハンドブック』翔泳社 2006年ISBN 4798109428
  • 本橋光一郎『要約 著作権判例212』学陽書房、2005年。
  • 松本肇『ホームページ泥棒をやっつける ─弁護士不要・著作権・知的財産高等裁判所強制執行』花伝社 2006年 ISBN 4763404806

関連項目

外部リンク


寿司


著作権表示

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2012/03/19 14:23 UTC 版)

((C) から転送)

万国著作権条約の著作権表示に必要な©記号

著作権表示(ちょさくけんひょうじ)は、著作物の複製物につける著作権者や著作物の発行年等に関する表示である。著作者が著作権を取得するため、著作物の創作のほか、何らかの手続き等(方式)が必要な法域においては、著作権表示は重要な意味があるが、現在は、ほぼ全ての法域で著作権は、著作物の創作とともに発生するので、重要性は失われている。


目次

法的背景

著作権の発生要件については、無方式主義方式主義の二つの法制が存在するが、前者は大陸法圏に由来する法制であるのに対し、後者は英米法圏に由来する法制であるといわれる。

無方式主義
著作物を著作もしくは発表した時点で自動的に著作権が発生し、それ以外には何らの方式(又は手続)の履行を要求しない法制
方式主義
納入、登録、表示、官庁への納入、登録、登録手数料の支払い、自国内における製造もしくは発行などといった「方式」を履行することにより著作権の著作権の発生要件とする法制

無方式主義は、著作権を著作者の自然権としてとらえる大陸法系の思想に合致する。ヨーロッパ諸国は無方式主義を採っており、それらの国々は1886年ベルヌ条約を締結した。ベルヌ条約は無方式主義と内国民待遇を定めており、加盟国は他の加盟国の著作物も、自国の著作物同様に(当然、無方式主義でということになる)保護しなければならない。日本など後発加盟国も、これらに従うことになる。

これに対し、著作権の保護目的を功利主義的にとらえる英米法圏の思想からは、著作権を発生させるために、官庁への登録などの手続を求め、方式主義を採ることは自然である。アメリカ合衆国などアメリカ大陸のいくつかの国は方式主義を取っており、1902年にパンアメリカン条約を締結し、加盟国間で方式主義による著作権を保護した。

こうして、著作権の国際的な保護について世界に二つの陣営が並立し、相手陣営では著作権の保護が受けられなくなった。この問題を解決するため、1952年万国著作権条約が締結された。この条約の3条1項により、加盟国間ならば、無方式主義国で作られた著作物は方式主義国内では著作権表示が方式とみなされ、著作権表示があれば保護されるようになった。

なお、逆に、方式主義国の国民が無方式主義国で保護を受けるには、著作権表示は必要ない。万国著作権条約も内国民待遇を定めているので、加盟国間ならば自国の著作物同様、無方式主義に基づき保護される。

条約上の根拠

条約では、万国著作権条約3条1項に著作権表示に関する規定があり、その内容は、 1952年条約、1971年改正条約とも同一である。

締約国は、自国の国内法令に基き著作権の保護の条件として納入、登録、表示、公証人による証明、手数料の支払又は自国内における製造若しくは発行のような方式に従うことを要求するときは、この条約に基いて保護を受ける著作物で、自国外で最初に発行され、かつ、その著作者が自国民でないものについて、著作者又は著作権を有する他の者の許諾を得て発行された著作物のすべての複製物にその最初の発行の時から©の記号が著作権を有する者の氏名及び最初の発行の年とともに表示されている限り、これらの要求が満たされたものと認めなければならない。ただし、その記号、氏名及び発行の年は、著作権が留保されていることを表示するのに適当な方法で、かつ、適当な場所に掲げなければならない。

書式

万国著作権条約に基づく著作権表示には、次の3つの表示が必要である。

  • ©の記号 (symbol ©)
  • 著作権者の氏名 (name of the copyright proprietor)
  • 最初の発行の年 (the year of first publication)

順序は定められておらず、この順序でなくてもいい。慣習的に「©」を最初に書くことが多いが、氏名と年の順序はさまざまである。

使用する文字紀年法も特に定められていないが、国外での著作権保護のためという目的上、ラテン文字西暦を使うのが普通である。

©記号

ベルヌ条約加盟前のアメリカ合衆国の国内法では、「©」以外に「Copyright」や「Copr.」も認められていた(現在も米国著作権法第401条に規定がある)。ただし、国際的に通用することが万国著作権条約で保障されているのは「©」のみである。

コンピュータタイプライターの文書では、慣習的に「(c)」や「(C)」も使われる。

著作権者の氏名

著作者ではなく著作権者の氏名を表示する。つまり、著作者が著作権を譲渡売却等した場合は、譲渡等された者の氏名を表示する。

氏名は、周知の変名ペンネーム等)でもかまわない。ただし、周知でない変名(著名でないということではなく、誰のことかわからないということ)は認められない。

複数の著作権者がいる場合は、全ての名を書く。法的にはどんな順序でもいいが、慣習的に、二次著作物に原作者と二次著作物の作者を表示する場合は、原作者を先に書く。

最初の発行の年

複数のバージョンがある場合は最初のバージョンの最初の発行年を表示する。たとえば、1990年に最初のバージョンを発行した著作物の、2000年に発行した改定バージョンにつける著作権表示では、「1990」が正しい。これ以外を表示してはいけないということはないので「1990-2000」は問題ないが、「2000」だけでは間違いである。

必要性

ベルヌ条約加盟国(2008年・随時更新)

著作権表示が有効な国

著作権表示は、国内での著作権保護に対しては、本国が方式主義か無方式主義か、相手国が方式主義か無方式主義かに関わらず、不要である。必要なのは、万国著作権条約に加盟している無方式主義国の著作物が、方式主義の国で著作権保護を受けたい場合である。

かつてはアメリカ合衆国や一部の中南米諸国が方式主義の万国著作権条約加盟国であり、著作権表示はそれらの国で著作権保護を受けるために必要であった。しかし、アメリカは1988年10月31日に著作権法を改正して無方式主義に切り替え、1989年3月1日に改正が発行し同日にベルヌ条約に加盟した。中南米諸国もまもなくそれに倣った。その後は、方式主義のサウジアラビア1994年7月13日に万国著作権条約に加盟したが、2004年3月11日にはベルヌ条約にも加盟した。

現在では、ほとんどの国はベルヌ条約加盟国(したがって無方式主義)である。わずかな非加盟国もほとんどは、そもそも万国著作権条約にも加盟しておらず、著作権表示は(著作権が認められるか認められないかはともかく)意味がない。なお、双方に非加盟の国(地域)として台湾が有名だが、TRIPS協定加盟国なのでベルヌ条約相当の条約義務を負っている。

著作権表示が有効な国があるとしたら、

  • 方式主義(したがってベルヌ条約に非加盟)で、かつ、次のいずれか。
    • 万国著作権条約加盟国。なお、これに当てはまる可能性がある、ベルヌ条約に非加盟(方式主義とは限らない)の万国著作権条約加盟国は、ラオスカンボジアである[1]
    • 万国著作権条約にも非加盟だが、万国著作権条約とは無関係に著作権表示を認めている国。

ということになるが、現在も存在するかどうかはっきりしない。

副次的な目的

そのため現在は、本来の目的とは異なる、次のような副次的目的が主となっている。

  • 著作者が氏名表示権を行使できる。
  • 著作物の利用者が、著作権消滅の時期や、利用許諾を得るための連絡先を知ることができる。
  • 善意の著作権侵害を予防できる(後述)。

もちろん、著作権表示は著作権という財産権の帰属主体を示しているので、必要がないからといって事実と異なる表示をすると違法行為となる可能性がある。

善意の侵害者

アメリカ合衆国では、著作権者による著作権表示が全く無意味というわけではない。

1988年の改正著作権法は、ベルヌ条約に従い著作権表示の有無に関わらず著作権を認めてはいるが、著作権表示がない場合の「善意の侵害者 (innocent infrigers)」も認めている。この「善意」とは法律用語であり、「ある事実を知らずに何かをすること」を意味する。

善意で著作権を侵害した、つまり、著作権があることを知らずに侵害してしまった場合、法的責任を問われない。つまり、損害賠償責任がない(利益は返還を要求されることがある)。

しかし、著作権表示があった場合、善意の侵害者であるとは認められない。そのため、著作権表示をしていたほうが法的には無難である。

万国著作権条約以外の表示

通常著作権表示と言われるのは、万国著作権条約で定められた「©」表示だが、他の著作権表示や類似の表示もある。

なお、「®」(マルR)はその直前の語が登録商標であることを示す表示で、著作権とは無関係である。

℗(マルP)

「℗」(マルP)表示は、「許諾を得ないレコードの複製からのレコード製作者の保護に関する条約」(レコード保護条約)第5条で定められている[2]原盤権」による保護を受けるための表示である。なお、「レコード」には、CDカセットなどのあらゆる音楽用メディアが含まれる。

原盤権とは、著作権法上の用語では「著作隣接権」のうちの「レコード製作者の権利」であり、いわゆる「マスター音源」の製作者が有する権利である。著作権とは異なる内容の権利である(ただし、アメリカ合衆国著作権法には著作隣接権という概念はなく、原盤権は copyright として扱われる)が、日本では著作権法の中でその権利内容が規定されている。。

「©」同様、無方式主義国のレコードが方式主義国で保護を受けるための表示である。ただし、原盤権についても現在ではほとんどの国が無方式主義である。

「℗」記号と、最初の発行年を、レコードまたはその容器包装(ジャケットなど)に表示する。「©」表示と違い、レコードまたはその容器包装の表示から原盤権者が明らかなときは、「℗」表示自体に名前は必要ない。

著作権者と原盤権者が同一である場合には、「℗&© ……」とまとめて表示することもある。

All rights reserved

しばしば著作権表示に書かれる「All rights reserved」は、著作権の保護を受けるための「著作権表示」ではあるが、万国著作権条約とは無関係である。1910年にアメリカ合衆国など方式主義諸国が調印したブエノスアイレス条約第3条で、

The acknowledgement of a copyright obtained in one State, in conformity with its laws, shall produce its

effects of full right, in all the other States, without the necessity of complying with any other formality, provided always there shall appear in the work a statement that indicates the reservation of the property right.[3]

要約: 他の加盟国で著作権保護を受けるには「権利を留保する」という趣旨の表示が必要

と定められていたことによる。この表示により、ブエノスアイレス条約加盟国間で著作権が保護される。

そのため、アメリカのような万国著作権条約加盟国かつブエノスアイレス条約加盟国では、「© 権利者名 発行年 All rights reserved」などという著作権表示がされる。これにより、万国著作権条約加盟国とブエノスアイレス条約加盟国の双方で著作権の保護が受けられる。

ただし現在では、ブエノスアイレス条約加盟国も全てベルヌ条約に加盟しており、無方式主義により一切の著作権表示なしで著作権が保護される。したがって、「All rights reserved」は現在では意味がない。

もちろん、日本などブエノスアイレス条約の非加盟国の著作物には、過去・現在とも意味がない。

版権所有

日本の版権法(明治26年法律第16号)5条で定められていた表記。版権法では、版権(現行の出版権に相当)について保護を受けるためには、内務省に対する登録とともに、出版する複製物に「版権所有」の文字を記載する必要があった。

旧著作権法(明治32年法律第39号)により、著作権の発生要件に関して無方式主義に移行したため、この表記の意味は失われた。

出典

  1. ^ en:List of parties to international copyright agreements
  2. ^ 許諾を得ないレコードの複製からのレコード製作者の保護に関する条約(日本語)
  3. ^ ブエノスアイレス条約原文(英語)





(C)と同じ種類の言葉


固有名詞の分類





(C)のページへのリンク
「(C)」の関連用語
(C)のお隣キーワード
モバイル
モバイル版のWeblioは、下記のURLからアクセスしてください。
http://m.weblio.jp/
» モバイルで「(C)」を見る
_ _   


(C)のページの著作権
Weblio 辞書情報提供元は参加元一覧にて確認できます。

  
三省堂三省堂
Copyright (C) 2001-2012 Sanseido Co.,Ltd. All rights reserved.
株式会社 三省堂三省堂 Web Dictionary
社団法人日本映像ソフト協会社団法人日本映像ソフト協会
Copyright © 2000-2012 Japan Video Software Association
丸ヱム製作所丸ヱム製作所
© 1998-2012 Maruemu Works Co,. Ltd. All rights reserved.
独立行政法人科学技術振興機構独立行政法人科学技術振興機構
All Rights Reserved, Copyright © Japan Science and Technology Agency
JabionJabion
Copyright (C) 2012 NII,NIG,TUS. All Rights Reserved.
トランスプラント・コミュニケーション [臓器移植の情報サイト]トランスプラント・コミュニケーション [臓器移植の情報サイト]
© 1996-2008 Transplant Communication All Rights Reserved (Unless otherwise noted.)
皓星社皓星社
Copyright (C) 2012 株式会社皓星社 All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのC (改訂履歴)、C Sharp (改訂履歴)、C++ (改訂履歴)、著作権 (改訂履歴)、著作権表示 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2012 Weblio RSS