ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
無料
ブラウザよりも高速アクセス!
 

Don't repeat yourself

索引 Don't repeat yourself

Don't repeat yourself (DRY) あるいはは、特にコンピューティングの領域で、重複を防ぐ考え方である。この哲学は、情報の重複は変更の困難さを増大し透明性を減少させ、不一致を生じる可能性につながるため、重複するべきでないことを強調する。 DRY は、 と の著書 (邦題:達人プログラマー) において中心となる原則である。 彼らはこの原則を、データベーススキーマ、テスト計画、ビルドシステムや、ドキュメンテーションにいたるまで非常に幅広く適用している 。 DRY 原則がうまく適用されたとき、システムに対するいかなる要素の変更も、論理的に関連のない他の要素の変更にはつながらない。さらに、論理的に関連した要素は予測できる形で統一的に変更され、したがってそれらの変更は同期が取れたものとなる。.

28 関係: 単体テスト同期ミラーリングバージョン管理システムトランザクション処理ビルド (ソフトウェア)テンプレート (プログラミング)データベースウィキオブジェクト (プログラミング)オブジェクト指向プログラミングクラス (コンピュータ)コンピューティングコードの再利用ソフトウェアテストソフトウェアドキュメンテーション冗長化継承 (プログラミング)結合度関心の分離関係の正規化重複コード自動プログラミングKISSの原則YAGNI構造体構成管理情報

単体テスト

ンピュータプログラミングにおいて単体テスト(たんたいテスト)あるいはユニットテストとは、ソースコードの個々のユニット、すなわち、1つ以上のコンピュータプログラムモジュールが使用に適しているかどうかを決定するために、関連する制御データ、使用手順、操作手順とともにテストする手法である。ユニットとはアプリケーションのテスト可能な最小の部品単位である、と直観的にとらえることができる。手続き型プログラミングでは、ユニットは、モジュール全体のこともあるが、より一般的には、個々の関数や手続きである。オブジェクト指向プログラミングでは、ユニットは、クラスなどのインタフェース全体だが、個々のメソッドであることもある。単体テストは開発プロセス中にプログラマー、時にはホワイトボックステスターによって作成される。 理想的には、各テストケースは他から独立しているべきである。メソッドスタブ、モックオブジェクト、フェイク、テストハーネスなどのような代替を、モジュールを分離した状態のテストを支援するために使用できる。一般的に単体テストは、コードが設計通りであることと、意図したとおりに動作することを確認するため、ソフトウェア開発者の手によって書かれ、実行される。その実装は手作業(鉛筆と紙)からビルド自動化の一環として定式化される場合まで、さまざまである。 今日では、単体テストはxUnitといったテスト自動化ツールを用いて行われるのが主流となっており、単体テストを自動化されたテストとして言及するケースもある(本項目も、自動化されたテストとしての記述を含む)。しかし、単体テストはあくまでテストの粒度に対する分類であり、必ずしもテスト自動化を意味しないため、注意が必要である。.

新しい!!: Don't repeat yourselfと単体テスト · 続きを見る »

同期

同期(どうき)とは、時期が同じであること。.

新しい!!: Don't repeat yourselfと同期 · 続きを見る »

ミラーリング

ミラーリング (Mirroring).

新しい!!: Don't repeat yourselfとミラーリング · 続きを見る »

バージョン管理システム

バージョン管理システム(バージョンかんりシステム)とは、コンピュータ上で作成、編集されるファイルの変更履歴を管理するためのシステム。特にソフトウェア開発においてソースコードの管理に用いられることが多い。.

新しい!!: Don't repeat yourselfとバージョン管理システム · 続きを見る »

トランザクション処理

トランザクション処理 (Transaction Processing) とは、トランザクションと呼ばれる不可分な操作から構成される情報処理の形態。.

新しい!!: Don't repeat yourselfとトランザクション処理 · 続きを見る »

ビルド (ソフトウェア)

フトウェアのビルド(build)は、ソースコードファイルを独立したソフトウェア生成物に変換するコンピュータ上で実行されるプロセス、またはその結果を指す。ビルドにおいて最も重要なのはコンパイルプロセスであり、ソースコードファイルを実行ファイルに変換する。 単純なプログラムでは、単一のファイルをコンパイルするだけで済むが、複雑なソフトウェアではソースコードは多数のファイルで構成されており、異なった組み合わせ方をすることで異なったバージョンを生成できる。 コンピュータプログラムのビルドは、一般にビルドツールと呼ばれるプログラムを使い、他のプログラムを制御・統合して行う。ビルドツールの例としては、make、ant、maven、SConsなどがある。ビルドユーティリティは、各種ファイル群を正しい順序でコンパイルしリンクする必要がある。また、開発時には何度もビルドを繰り返すが、前回のビルドから何も変更されていないファイルはコンパイルする必要がない(ただし、ヘッダファイルなどの依存関係も考慮する必要がある)。洗練されたビルドユーティリティは無駄な再コンパイルをしないようにして、ビルドに要する時間を短縮している。Subversionなどのバージョン管理システムはビルドユーティリティの機能を内蔵している。さらに複雑なプロセスになると、ビルド中に他のプログラムを使ってコードやデータを生成することもある。.

新しい!!: Don't repeat yourselfとビルド (ソフトウェア) · 続きを見る »

テンプレート (プログラミング)

プログラミングにおけるテンプレートは、静的型付けのC++でデータ型にとらわれずにコードを書くことを可能にする機能であり、C++においてはジェネリックプログラミングに用いられる。 C++においてテンプレートは多重継承や演算子多重定義と並ぶ重要な機能となった。STL (Standard Template Library)はテンプレートによって構築されたフレームワークとなっている。.

新しい!!: Don't repeat yourselfとテンプレート (プログラミング) · 続きを見る »

データベース

データベース(database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指すが、紙の住所録などをデータベースと呼ぶ場合もある。コンピュータを使用したデータベース・システムでは、データベース管理用のソフトウェアであるデータベース管理システムを使用する場合も多い。.

新しい!!: Don't repeat yourselfとデータベース · 続きを見る »

ウィキ

ホノルル国際空港(ハワイ・ホノルル)のシャトルバスの名前。 ウィキ()あるいはウィキウィキ()とは、ウェブブラウザを利用してWebサーバ上のハイパーテキスト文書を書き換えるシステムの一種である。それらシステムに使われるソフトウェア自体や、システムを利用して作成された文書群全体を指して「〜に関するウィキサイト/ウィキ」などのように呼ぶこともある。 ウィキウィキはハワイ語で「速い」を意味する形容詞の wikiwiki から来ており、ウィキのページの作成更新の迅速なことを表し、ウォード・カニンガムがホノルル国際空港内を走る "Wiki Wiki Shuttle" からとって "WikiWikiWeb" と命名したことに始まる。.

新しい!!: Don't repeat yourselfとウィキ · 続きを見る »

オブジェクト (プログラミング)

ブジェクト(object)はオブジェクト指向プログラミングにおいて、プログラム上の手続きの対象を抽象化する概念である。.

新しい!!: Don't repeat yourselfとオブジェクト (プログラミング) · 続きを見る »

オブジェクト指向プログラミング

ブジェクト指向プログラミング(オブジェクトしこうプログラミング、)は、コンピュータ・プログラミングのパラダイムのひとつで、オブジェクト指向の概念や手法を取り入れたものである。プログラムを、データとその振舞が結び付けられたオブジェクトの集まりとして構成する、などといった特徴がある。このパラダイムを指向しているプログラミング言語がオブジェクト指向プログラミング言語である。.

新しい!!: Don't repeat yourselfとオブジェクト指向プログラミング · 続きを見る »

クラス (コンピュータ)

ラス()は、クラスベースのオブジェクト指向においてオブジェクトの設計図にあたるもの。抽象データ型の一つ。クラスから生成したオブジェクトのことをインスタンスという。 クラスには、インスタンスの保持するデータ(メンバ変数、フィールド(UMLでは「属性」ともいう))と操作(メソッド、メンバ関数)が記述される。 クラスは、継承・ポリモーフィズム・カプセル化などの、オブジェクト指向プログラミングにおける重要な概念を実現する強力な手段である。.

新しい!!: Don't repeat yourselfとクラス (コンピュータ) · 続きを見る »

コンピューティング

階差機関。多項式関数の解を計算する機械 とある大学の計算機室 (2003) ウィキメディア財団のサーバ コンピューティング(computing)の古来の意味は「数えること」と「計算すること」であり、算術ないしは数学の計算を指した。現在は転じてコンピュータによる数値計算や、より広くデータ処理(data processing)や情報処理 (information processing) といったコンピュータを使う活動全般も指すことがある。 日本語ではどちらも「計算」と呼んでいるが、対応する英語にはcalculationとcomputationがある。条件分岐などを伴う複雑な計算がcalculationではなくcomputationである。.

新しい!!: Don't repeat yourselfとコンピューティング · 続きを見る »

コードの再利用

ードの再利用(コードのさいりよう)またはソフトウェアの再利用とは、既存のソフトウェアまたはソフトウェアの知識を活用し、新たなソフトウェアを構築すること。コードの再利用はプログラミングの黎明期から行われてきた。プログラマは常にコードの一部、テンプレート、関数、プロシージャを再利用している。ソフトウェアの再利用はソフトウェア工学の研究対象である。.

新しい!!: Don't repeat yourselfとコードの再利用 · 続きを見る »

ソフトウェアテスト

フトウェアテスト()は、コンピュータのプログラムから仕様にない振舞または欠陥(バグ)を見つけ出す作業のことである。ソフトウェアテストで見つかったプログラム中の欠陥を修正する作業をデバッグという。ソフトウェアテストに成功するとは、テストで欠陥が発見されるか、規定した試験項目にすべて合格するか、規定した品質目標に到達することである。目標とした品質には、規定した試験項目にすべて合格することもある。例えば、OS, プログラミング言語では、仕様を満たしているかどうかの適合試験を規定している。ソフトウェアテストでは、欠陥が存在することを示すことはできるが、欠陥が存在しないことは証明できない。ソフトウェアに仕様にない振舞がないことを保証する作業を証明といい、証明用のシステム、証明しやすい言語も多数存在している。本項では動的なソフトウェアテストを中心に扱う。.

新しい!!: Don't repeat yourselfとソフトウェアテスト · 続きを見る »

ソフトウェアドキュメンテーション

フトウェアドキュメンテーションとは、コンピュータのソフトウェアに付随する文書、またはそのような文書を作成することを意味する。類似の用語としてソースコードドキュメンテーションがある。 仕様書を含むか、含まないかは立場により異なる。仕様書は設計/実装のために事前または事後に作成する文書である。ドキュメンテーションは開発中あるいは既に完成したソフトウェアに付随する文書を指す訳ではない。ソフトウェアに関する文書には作成する順番があるとは限らない。図からソフトウェアを生成する場合もあれば、ソフトウェアから図を生成する場合もある。ソフトウェアから仕様を生成する場合もあれば、仕様からソフトウェアを生成する場合もある。.

新しい!!: Don't repeat yourselfとソフトウェアドキュメンテーション · 続きを見る »

冗長化

冗長化(じょうちょうか)とは、システムの一部に何らかの障害が発生した場合に備えて、障害発生後でもシステム全体の機能を維持し続けられるように、予備装置を平常時からバックアップとして配置し運用しておくこと。冗長化によって得られる安全性は冗長性と呼ばれ、英語ではredundancyと呼ぶ。 常に実用稼動が可能な状態を保ち、使用しているシステムに障害が生じたときに瞬時に切り替えることが可能な仕組みを持つ。障害によってシステムが本来の機能を失うと、人命や財産が失われたり、企業活動が大きな打撃を受けるような場合には、冗長性設計が必須となっている。.

新しい!!: Don't repeat yourselfと冗長化 · 続きを見る »

継承 (プログラミング)

継承(けいしょう、inheritance:インヘリタンス)とはオブジェクト指向を構成する概念の一つである。あるオブジェクトが他のオブジェクトの特性を引き継ぐ場合、両者の間に「継承関係」があると言われる。 主にクラスベースのオブジェクト指向言語で、既存クラスの機能、構造を共有する新たなクラスを派生することができ(サブクラス化)、そのようなクラスは「親クラス(スーパークラス)を継承した」という。具体的には変数定義や操作(メソッド)などが引き継がれる。またJavaのインタフェース継承のように機能セットの仕様のみを引き継ぐ場合もある。 一般的に、BがAを継承する場合、B is a A. (BはAの一種である)という意味的な関係(Is-a関係)が成り立つ。従って、同じふるまいを持つからと言って、意味的に無関係なクラス間に継承関係を持たせるのは適切でない場合が多い。 プロトタイプベースのオブジェクト指向言語(Self、NewtonScript等)のように「クラス」という概念を持たない場合でも、クローン元となるオブジェクトを指して「継承」と呼ぶ。 継承と類似の概念に「委譲」があるが、継承では一度定まった継承関係は通常変更されないのに対して、委譲対象は必要に応じて変更されうるものである。 Is-a関係を持つ継承とは階層が異なる概念として集約 (aggregation) とコンポジション集約 (composition) があるが、これはクラス間の関係がHas-aである包含関係であり、クラス間の関係は継承よりも疎である。.

新しい!!: Don't repeat yourselfと継承 (プログラミング) · 続きを見る »

結合度

結合度(けつごうど、カップリング、coupling)とは、コンピュータープログラミングで用いられる(機械よりは)人間寄りの尺度。ソフトウェア測定法の一種。利用者またはメンテナンスをする者にとって対象を利用、保守しやすいように対象の内容が整理、分割できているかどうかを、その状態によって段階に分けて表現する。.

新しい!!: Don't repeat yourselfと結合度 · 続きを見る »

関心の分離

関心の分離(かんしんのぶんり、、SoC)とは、ソフトウェア工学においては、プログラムを関心(何をしたいのか)毎に分離された構成要素で構築することである。 プログラミングパラダイムは開発者が関心の分離を実践することを手助けするものもある。その為には、モジュール性とカプセル化の実装のしやすさが重要となる。 関心の分離は複雑で依存関係が入り乱れたシステムの理解・設計・運用を容易にすることが出来るので他の工学分野でもみられる。.

新しい!!: Don't repeat yourselfと関心の分離 · 続きを見る »

関係の正規化

関係の正規化(かんけいのせいきか)は、関係データベース (リレーショナル・データベース) において、正規形と呼ばれる形式に関係(リレーション)を準拠させることにより、データの一貫性の維持と効率的なデータアクセスを可能にする関係設計を導くための方法である。正規形には様々なものが存在するが、いずれにせよ、正規化を行うことにより、データの冗長性と不整合が起きる機会を減らすことができる。 多くの関係データベース管理システム (RDBMS) は、論理的なデータベース設計とデータを格納する物理的な実装方法とが十分に分離されていないので、完全に正規化されたデータベースへのクエリ(検索質問)はパフォーマンスが良くないことがある。このような場合、パフォーマンスを向上させるためにデータの一貫性の低下と引き換えにあえて非正規化されることもある。.

新しい!!: Don't repeat yourselfと関係の正規化 · 続きを見る »

重複コード

重複コード(ちょうふくコード、duplicate code)とは、ソースコード中に存在する同一、もしくは類似した部分のことである。コードクローンとも呼ばれる。.

新しい!!: Don't repeat yourselfと重複コード · 続きを見る »

自動プログラミング

自動プログラミング(じどうプログラミング、Automatic programming)は、人間のプログラマがコードを書くのではなく、何らかの機構によってプログラムを生成するプログラミングの一種である。.

新しい!!: Don't repeat yourselfと自動プログラミング · 続きを見る »

KISSの原則

KISS の原則 (KISS principle) とは、「Keep it simple, stupid.」(シンプルにしておけ!この間抜け)、もしくは、「Keep it short and simple.」(簡潔に単純にしておけ)という経験的な原則の略語。その意味するところは、設計の単純性(簡潔性)は成功への鍵だということと、不必要な複雑性は避けるべきだということである。意味はそのままに余計な文字を省略して、KISの原則とする人もいる。.

新しい!!: Don't repeat yourselfとKISSの原則 · 続きを見る »

YAGNI

"You ain't gonna need it"、縮めて YAGNI とは、機能は実際に必要となるまでは追加しないのがよいとする、エクストリーム・プログラミングにおける原則である。.

新しい!!: Don't repeat yourselfとYAGNI · 続きを見る »

構造体

構造体(こうぞうたい、structure)はプログラミング言語におけるデータ型の一つで、1つもしくは複数の値をまとめて格納できる型。それぞれのメンバ(フィールド)は型が異なっていてもよい点が配列と異なる。 C/C++やC#などでstructとしてサポートされているほか、Visual Basicのユーザ定義型や、PascalやAdaのrecord型も構造体に相当する。 クラスベースのオブジェクト指向言語では、抽象データ型としてのクラスが構造体の役割をも内包する。Cの文法を継承した言語ではstructキーワードを含むこともあるが、言語によってその役割は異なる。 例えば、C++ではアクセシビリティの初期値がpublicであることを除いては、classと同等の機能を持つことができる。 また、C#では値型として扱われる軽量なオブジェクト型を定義するためにstructキーワードを使用し、制限されたclassとして振る舞う。 同じくCの文法を継承したJavaでは、structキーワードは存在しない。 オブジェクト指向言語でないCなどでオブジェクト指向プログラミングを模倣するために構造体を使うこともある。標準ライブラリのFILE型がその典型的な例である。.

新しい!!: Don't repeat yourselfと構造体 · 続きを見る »

構成管理

トップレベルの構成管理の活動モデル 構成管理(こうせいかんり、Configuration Management、CM)とは、システムのライフサイクルにわたる範囲、性能、機能的および物理的要件、設計、操作に関する情報などを確立し維持する作業またはプロセスである。形態管理、コンフィギュレーションマネジメントとも。CMプロセスは、武器システム、車両、情報システムなどの複雑なシステムを管理するため、軍事工学組織で広く使われている。軍事以外では、ITILやISO/IEC 20000で定義されるようなITサービス管理、土木工学や生産技術の分野でのドメインモデルでも使われており、例えば道路・橋・運河・ダム・建築物の建設や保守管理がある。.

新しい!!: Don't repeat yourselfと構成管理 · 続きを見る »

情報

情報(じょうほう、英語: information、ラテン語: informatio インフォルマーティオー)とは、.

新しい!!: Don't repeat yourselfと情報 · 続きを見る »

ここにリダイレクトされます:

DRY

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »