OBOEとは? わかりやすく解説

オーボエ【(イタリア)oboe】

読み方:おーぼえ

木管楽器の一。リード2枚もつ縦笛。歌うような旋律適し合奏では高音部を受け持つ。オーボー

オーボエの画像
オーボエ(手前)/撮影・Thorsten Krienke https://goo.gl/coll2G

オーボエ[oboe / ob]

オーボエは、ダブル・リード円錐管管楽器で、フランス語のhaut(高い、音が大きい)とbois(木)、つまり、“高音の(音が大きい)木管楽器”が語源といわれる17世紀中頃に、ショームから今日のオーボエに直接つながるタイプのオーボエが登場した考えられている。最初期には、キー3つ1700年頃には2つに減る)だけだったが、19世紀はじめ頃から、派生音演奏容易にするためにキー追加されていき、現在では16または13個のキー備えようになった。2オクターブ半を越え音域で、やや鋭いが、牧歌的哀愁帯びた音色をもち、田園的な音楽には欠くことができないピッチ調整はあまりできないため、オーケストラなど音合わせでは、オーボエを基準に他の楽器合わせることになる。18世紀前半には、オーボエは、大規模な声楽作品いろいろな器楽作品の中で、幅広く用いられるようになったビバルディテレマンヘンデルらの協奏曲ソナタ室内楽多く書かれた。バッハの受難曲カンタータにも、同族楽器であるオーボエ・ダモーレや、オーボエ・ダ・カッチャを含めれば、ほとんどの曲でオーボエが効果的に使われている。18世紀後半には、ホルンとともに最初にオーケストラ管楽器セクション定席をもった。この頃作品では、モーツァルトの協奏曲(K.314)や四重奏曲(K.370)が重要である。19世紀には、協奏曲は減るが、ベートーベンシューベルトブラームスブルックナーマーラーなどの交響曲や、ウェーバーベルリオーズベルディワーグナーらのオペラの中で活躍している。たとえば、ブラームスの「交響曲第2番」の第3楽章では、田園的な素朴な旋律をオーボエが歌いワーグナーの「ローエングリン」では、乙女エルザ登場を表す。今世紀に入ると、オーボエのための協奏曲R.シュトラウス、ボーン・ウィリアムズなど)やオーボエを含んだ構成室内楽も再び多く書かれるようになっている

Off-by-oneエラー

(OBOE から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 16:40 UTC 版)

ナビゲーションに移動 検索に移動

Off-by-oneエラー(オフ-バイ-ワンエラー、off-by-one error、OBOE)とは、境界条件の判定に関するエラーの一種である。コンピュータプログラミングにおいて、ループが正しい回数より一回多く、または一回少なく実行された場合などに発生する。

この問題の代表的な原因として、プログラマーが数字のカウントを0からではなく1から開始してしまう(多くのプログラミング言語では配列の添え字は0から始まる)、数値の比較において「~未満」とすべきところを「~以下」としてしまう、等が挙げられる。また、数学的な処理を行っている場合にも発生しうる。

配列上のループ

配列m番目の要素からn番目までの要素を処理する場合を考える。処理対象の要素はいくつだろうか?この場合、直感的に考えるとn-m個となるが、実際には1個異なり、n-m+1個が正しい。これは「植え木算エラー」の一種である。

上記のような理由により、コンピュータ上で数の範囲を表現する場合にはしばしば半開区間が用いられる。mnを含む区間は、植木算エラーを避けるためにmを含みn+1を含まない区間として表現される。例えば、5回繰り返して実行されるループは0から5までの左閉半開区間を用いて以下のように表現される。

for (i = 0; i < 5; i++) {
    /* ループ中の処理 */
}

ループ中の処理は最初iが0の状態で開始される。以降、iは1, 2, 3と増加し、4までは問題なく実行される。次の時点でiは5となり、条件文i < 5が偽と判定されてループは終了する。

もし、条件文で使用されている比較演算子が<=(「~未満」ではなく「~以下」)だった場合、ループの中の処理は6回実行されてしまう。つまり、iは0, 1, 2, 3, 4, 5と増加し、5まで実行される。同様に、iが0でなく1で初期化されていた場合にはループは4回しか実行されない。つまり、iは1, 2, 3と増加し、4まで実行される。これらのケースはどちらもoff-by-oneエラーの一種である。

このようなエラーが発生する他の例としては、while文を使用すべきところでdo-while文を使用した場合(逆も同じ)が挙げられる。do-whileループは必ず1回は実行される。

配列関連の勘違いはプログラミング言語ごとの差異に由来する場合もある。配列の添え字は0から始まる場合が一般的だが、1から始まる言語もいくつかある。Pascalでは配列の添え字をユーザが指定した数字から始めることができるが、これにより配列の添え字を問題のドメインに合わせて設定することができる。

植木算エラー

区間をn個に区切るにはn+1個のフェンスが必要になる

植木算エラーはoff-by-oneエラーの一種であり、「支柱(fencepost)エラー」、「電柱(telegraph pole)エラー」、「電灯(lamp-post)エラー」とも呼ばれる。このエラーは以下の問題で説明される。

100メートルのフェンスを作り、10メートルごとにフェンスの支柱を立てる場合、必要な支柱の本数は何本か?

直感的に考えると、100÷10=10であるため10本という答えになるが、これは誤りである。フェンスは10の区間に区切られるが、支柱は11本必要となる。

また、稀に、入力値に予期しない規則性があった場合のエラーが"植木算エラー"と呼ばれることもある。これは、例えば理論上は効率が良いはずの二分木ハッシュ関数が特定の入力によってまるでだめになってしまうことを指している。このエラーは、アルゴリズムに期待されている振る舞いと最悪の場合の振る舞いとの差によって発生する。

セキュリティとの関連

off-by-oneエラーのうちセキュリティに関係したバグとなる典型的な例は、libcstrncat関数の使用法の誤りによるものである。strncat関数に関するよくある誤解としては「連結した文字列と終端のnull文字を足した長さは引数で指定した最大長を超えることはない」というものがある。実際には、終端のnull文字を含めると、指定した最大長より1文字多く書き込みが行われる。以下のコードはこの種のバグを含んでいる。

void foo (char *s) {
    char buf[15];
    memset(buf, 0, sizeof(buf));
    strncat(buf, s, sizeof(buf)); // 最後の引数は sizeof(buf)-1 でなければならない
    return;
}

システムによっては(特にリトルエンディアンのアーキテクチャの場合)、このバグによってフレームポインタの最下位のバイトが上書きされてしまうことがある。攻撃者はこれを利用して呼び出し中のルーチンのローカル変数を書き換えられるため、このバグはセキュリティホールとなることがある。

参考文献

関連項目

外部リンク



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「OBOE」の関連用語

OBOEのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



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

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
ヤマハミュージックメディアヤマハミュージックメディア
Copyright(C) 2000-2025 YAMAHA MUSIC MEDIA CORPORATION. All Rights Reserved.
ヤマハミュージックメディア音楽用語ダス
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのOff-by-oneエラー (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS