自動化ツールの概要
筆者が自動化するという言葉をソフトウェア開発で初めて聞いたのは、Webブラウザを自動操作したり、ドキュメントを生成したりするものでした。そこからソースコードをバージョン管理、テスト自動化、デプロイ自動化、環境構築自動化と、どんどんいろんなものを自動化できるようになりました。現在ではクラウド環境を利用することで高速に大量のソフトウェアを提供したり、自動化の基盤として利用したりできます。
さまざまなものが自動化できるようになり、それらの自動化の方法はいくつかありますが、現在はできるだけプレーンテキストでバージョン管理できるようにすることが多いようです。例えば自動化ツール、サービスを提供するHashicorp社のブログでは彼らの考えが次の8つのポイントでまとめられており、その中でもこのコード化について触れています。
The Tao of HashiCorp 日本語参考訳
- ワークフローであり、技術ではない(Workflows, not Technologies)
- 単純で、モジュール型で、組みあわせ可能な(Simple, Modular, Composable)
- 通信の連結した手続き(Communicating Sequential Processes)
- 不変であること(Immutability)
- コード化を通したバージョン管理(Versioning through Codification)
- コード化を通した自動化(Automation through Condification)
- 弾力的なシステム(Resilient system)
- 実用主義(Pragmatism)
HashiCorp社の製品は世界で使われているクラウドサービスの40%以上、日本市場では70%以上であるAmazon Web Services、Microsoft Azure、Google Cloud Platformをサポートしています。一例ではありますが、こういった大企業が提供しているクラウドサービスや、それらの活用を支援する企業がコード化を通した自動化にフレンドリーな部分は、現在の自動化の流れを加速していると言えます。
- 参考 : Amazon Leads; Microsoft, IBM & Google Chase; Others Trail _ Synergy Research Group
- 参考 : 国内クラウド市場は2019年度に2兆円へ成長 ≪ ニュースリリース _ 株式会社MM総研
他の自動化でもそうですが、2009年からは特にDevOpsというキーワードで組織やビジネスの改善を促し、その技術的な基盤として自動化の導入を進めている組織も増えてきました。各地で行われているカンファレンスなどの事例も増えてきています。
開発プロセスやビジネスモデルによって、どのタイミングでどのツールを使ったり、利用しているツールの範囲が異なったりすることは組織によってさまざまですが、例えばチームやプロダクト単位での仕事や情報、モノの流れを整理した上で、各種ツールをその流れに重ねると次のように表現できます。この例では、会社はいくつかのプロダクトを開発、運用していて、それらのプロダクトやチームの状況から経営陣が経営判断を下している場合における自動化ツールやサービスの利用想定です。図にある矢印が仕事や情報やモノの流れを、青い四角でツール群を、オレンジの枠で組織を表現しています。
各ツールは複数の役割を担うことができますし、あくまで一例としての分類なので、以降の分類に限定した使い方である必要はありません。
ビルド
ソフトウェアをコンパイル、パッケージングすることが主な役割のツールです。ビルドという言葉の定義にはさまざまな解釈があり、自動テストとパッケージングまで含めるものもあれば、コンパイルまでのものの場合もあります。
テスト
ソフトウェアが正常に動作しているかを検証することが主な役割のツールです。テストの定義は広範囲にわたります。ここでは、ソフトウェアを動作させる動的テストだけではなく、動作させずに行う静的テストのツールも紹介します。
汎用的なテスティングフレームワーク
プログラミング言語を利用して、チェックの記述、実行、検証、レポートを行うことが主な役割のツールです。
GUIテスト
GUIの操作や表示の検証をサポートすることが主な役割のツールです。筆者はWebブラウザ、ネイティブアプリ、スマートフォンなどのGUIを対象にしたツールを利用しています。
パフォーマンステスト
例えばHTTPで大量にアクセスすることでサーバーに負荷をかけるなど、パフォーマンステストや負荷テストをサポートすることが主な役割のツールです。
静的解析ツール
ソフトウェアのコードなどを対象にバグの温床になりそうな記述がないかを検査することが主な役割のツールです。このような静的解析ツールのSaaSも登場しています。