第4章 コードの管理 コードとテストを管理する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
DevSecOpsライフサイクルの中の3つのステージは、伝統的に開発者関連のタスクに焦点を当てている。これらには、開発またはコーディングそのもの、結果として得られたコードを実行可能なアプリケーションにビルドすること、そしてアプリケーションをテストすることが含まれる。完全なテストには品質保証(QA)など他のチームが関与するが、少なくとも一部のテストは開発者レベルで行われる。ビルドステップは、使用するプログラミング言語によってかなりカスタマイズされる。成果物のコンパイルが必要な言語もあれば、コンパイルしていない状態でデプロイできる言語もある。この章は開発に焦点を当てて始まり、ソフトウェアをテストするための概念とツールで締めくくられる。この章では、ソースコード管理のためのGitと、ソフトウェア開発時にGitを使うための2つのパターンも紹介する。
開発を検証する
プログラミング言語の数が多いため、その言語で成功する開発者になるために必要な知識を、1つのセクション、1つの章()、あるいは1冊の本に集約して提供することは不可能だ。また、高レベルのプログラミング設計やアーキテクチャに関する本も数多くある。手前味噌になるが、私がこれまでのキャリアで守ってきた一般化規則は、オライリー社から出版されている本を探すことだ。ソフトウェア設計とアーキテクチャの分野では、マーティン・ファウラーは、W・リチャード・スティーブンスによるTCP/IP Illustratedシリーズが長年に渡って入手可能な情報源であったのと同じように、それぞれの分野で典範となる本を何冊も書いている。それらや他の関連著作に敬意を表し、私がプロダクション・スタイルのプログラミングに取り組んでいる生徒たちに伝えようとしているアイデアがいくつかある。また特筆すべきは、これらのアイデア自体が、前述したものやその他のもののアイデアを抽出したものであるが、学生にとって非常に役に立ち、親しみやすいものであることを発見したことである。
意図的かつ計画的に
、人工知能がコーディングの問題に対して実行可能そうな答えを返してくれるようになる以前から、開発者は他人からコードを借りていた。そのコードが正確に動作するか、設計に合っているかは、単にタスクを完了することよりも二の次になることがあった。ここで、意図的であることと意図的であることが関係してくる。開発者は、入れ子になったループやハードコードされた値を使って技術的にタスクを完了させることもできるが、そうすると技術的負債が発生し、現在のタスクの狭い範囲や限られたテストの範囲を超えて正しく動作しない可能性がある。米国には常に50の州があり、そのアルファベット順は常に変わらないと仮定したコードを考えてみよう:
for (i = 0; i < 50; i++):
if (i == 49):
state_name = "Wisconsin"
この例はいささか極端かもしれないが、この種のハードコーディングは、時間的なプレッシャーやその他の要因によって、開発者が完全に開発されていないにもかかわらず、コードを完成したとみなす場合に存在する。
注
「技術的負債(Technical debt)」とは、、アプリケーションやシステムの将来の開発や進歩から時間を借りることを表す言葉である。変数や定数に値を抽象化するのではなく、プログラミングの中で値をハードコードすることは、テストデ ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access