トレンド情報 / 記事を探すCOLUMN

システム開発を取り巻く自動化ツールの現状と導入のコツ

更新日|2020.05.20

Qbook編集部

システム開発を取り巻く自動化ツールの現状と導入のコツ

システム開発のイテレーションを繰り返していく中で課題に挙がるのが、システム開発の各種作業の自動化です。技術の発展が進んでいる背景もあり、システム開発の工程の各所で自動化を進める可能性は非常に高まっています。

しかし、限られたリソースを活用してどのような部分を自動化すれば良いか、ということは誰もが悩むポイントだと思います。これを解決してより効果的に自動化するには、自動化の手段としてどのようなものがあるか知り、自社の状況と照らし合わせて適切なものを選定していくことが必要です。

今回の記事では自動化を推進するにあたって知っておきたい自動化ツールについて、その役割と分類、導入時に気をつけたいポイントについて解説していきます。

自動化ツールの概要

自動化というと、人間の力を借りずに全ての業務を処理してくれる、便利で有能なロボットのようなものを想像してしまう方もいると思います。

たしかに自動化によって人間の作業が削減されたり、マニュアル操作では負担の大きかった作業をツールに任せることができるようになったりします。これにより、多くの人が自動化の施策に期待する「コスト削減」に直接的に繋がる部分も多いです。しかし、今まで人力でこなしていた分野を自動化するとなると、人間の判断で行っていた膨大な処理パターンや手続きを再現する必要が出てきます。このような場合、理想とする自動化のシステムやツールを作り上げたり導入したりする手続きをとるだけで、多大な労力とコストがかかってしまう可能性もあります。

自動化ツールは、自社の既存の業務フローにとらわれず、課題解決を重視した手段をとることが必要です。そのためにも、流行りのツールや多くの企業で利用されるシステムを安易に取り入れるべきではありません。活用できるツールの性質や特徴を理解して、目的に沿ったものを選択できるようにしましょう。

自動化ツールの役割と分類

自動化ツールの役割と分類

ここでは、自動化ツールの役割と分類について、解説していきます。

ビルド自動化ツール

ビルドという言葉には様々な考え方がありますが、ソフトウェアをコンパイルしたり、パッケージングすることが主な意味合いです。ソースコードをもとに実際に動くプログラムを作り出す作業を意味し、これを自動化できるのがビルドの自動化ツールです。

手動でビルドを行う場合、ビルドを行いたいタイミングでビルドの知識がある開発者やインフラの担当者に依頼しなければビルドの作業ができないといった事態になり兼ねません。しかし、ビルド自動化ツールを活用することでソースコードをコミットした後にコンパイルからビルド、ものによっては自動テストやパッケージングまで自動で行えます。

主なビルド自動化ツールとしては、AntやMaven、Gradle、Bazelが挙げられます。これらをJenkinsやBambooといったCIツールと組み合わせることで、継続的インテグレーションの実施が容易になります。

テスト自動化ツール

ソフトウェアの動作を確認するためのプロセスを自動化するツールです。テストの自動化は、主に作業などの人的コストの削減と人為的なミスに伴うテストの失敗・テスト品質の低下を防ぐ役割があります。一方で、テスト内容によっては導入が難しかったり、必要な部分について自動化の実現が叶わなかったりする場合もあります。

テスティングフレームワークとしては、テスト目的やテスト対象に応じて様々なものがあります。フレームワークを利用することで、チェック内容の記述や実行、検証からレポート作成までできるのが共通した特徴です。

【1】GUIテスト

GUI(Graphical User Interface)はシステムの画面や操作性、使い心地に関わる点を指します。マウスやパソコンでの操作、および画面表示を検証する際に活用できます。例えばTestCompleteなど、キーやマウス操作を記録して作成したスクリプトを再実行することで自動化するようなツールもあります。

【2】パフォーマンステスト

パフォーマンステストは、システムの性能の検証を行うテストです。具体的には、応答速度やアクセス数の増加による負荷が重なった場合のシステムの挙動を確認することを目的としています。

テストの性質として、負荷をかけるだけのデータ量を準備したり、必要な負荷のアクセス数を再現することが手動では難しくなります。このような側面のあるテストでは、JMeterなどのツールを活用して大量データを流し、マニュアルでは実現できないようなテストが可能になります。

【3】静的解析ツール

FindBugsやCoverityといった静的解析テストでは、ソースコードを実行しない状態で検証します。例えば、システムの挙動ではなく実際の構造に関してルールやマナーに違反した箇所を検知することを指します。

コーディングの段階でエラー検出ができるので、修正スピードが早くなるメリットがあります。また、可読性の高いコードを書くことや、コード関わる知見を新人にも共有しやすいという利点もあります。CIツールと組み合わせてルール違反を自動的にチェックできるので、開発者の負担を下げつつ再発防止のための対策までカバー可能になります。

【4】単体テストツール

単体テストとは、ソフトウェアの最小単位であるモジュールごとに実施されるテストのことです。主にコーディングを行ったプログラマーが担当し、モジュールが意図した通りに動作するかを確認します。

この単体テストによく用いられるツールがxUnitです。Java向けにはJUnit、C/C++向けにはCppUnit、.NET向けにはNunitというフレームワークが用意されています。

導入時におさえておきたいポイント

導入時におさえておきたいポイント

自動化ツールに関しては年々改良されたり新規のツールが開発されたりしていますが、導入する際にまず気をつけたいポイントはほぼ一定です。
自動化の導入は、失敗すると導入前よりも工数が増えてしまったり、ミスやトラブルに繋がることも多いので注意が必要です。導入前の自動化箇所の検討からツールの選定に到るまで、以下のようなポイントに留意してみてください。

ポイント1:自動化で解決したい問題を特定する

手順書に基づいて作業を洗い出したら、その作業における問題点を洗い出します。ここでは具体的に何が問題なのかを明確に定義しておくべきです。

特に、「時間」「手間」「ミスが発生した場合のリスクの高さ」「属人的な作業かどうか」といった観点で多角的に確認するのが良いでしょう。前述したように、何もかも自動化すると時間もコストもかかってしまうので、安直に自動化ツールを採用すべきではありません。問題の洗い出しを通じて、自動化したい対象とそのステップを細かく特定していくことが有効です。

ポイント2:手順の再確認

作業やプロセスを自動化したい場合、何よりもまず着手すべきなのは手順書の再確認です。自動化したい箇所の大小問わず、明確な作業フローに従って自動化の施策を検討する必要があるからです。

すでに手順書やマニュアルとして落とし込まれている知見があれば、それを確認していくのが最も効率的で有効な方法だと言えます。手順書の内容をより細かい作業フローに置き換え、作業の特性に基づいて分類していくと良いでしょう。

着目すべきは、「時間」「手間」がかかる作業です。人間が作業していて面倒な部分やコストを払っている部分に自動化すべきポイントが含まれている可能性が高いからです。手順書に無いような判断を人間が行わなければならなかったり、複雑で難しい操作を行わなければならなかったりする箇所は、自動化によって解決すべき問題が潜んでいます。

ポイント3:全てを一度に自動化しない

自動化は、部分的だとしても導入すれば一定の効果を発揮できます。よって、初めから完璧な状態を目指すのではなく、抱えている課題に従ってピンポイントの自動化の導入から始めるのが効率的だと言えます。

自社の業務プロセスを維持したまま全ての工程を自動化することは、あまり現実的ではありません。だからこそ、自動化する部分とマンパワーで解決する部分をうまく両立させ、ハイブリッド型の最も適した形を模索していくのが良いでしょう。

おわりに

今回の記事では、自動化ツールについてその種類や役割と導入時に留意すべきポイントについてご紹介してきました。自動化ツールはマニュアルテストでは実現できないようなテスト条件の再現やテスト実行・結果確認が可能になります。特に、開発プロセスのどの部分を自動化するか、どのような目的で自動化するかを特定したうえで最も適したテスト手法を選択するのが有効です。

自社の開発プロセスにとって適切なテスト手法を選択し、導入時のポイントに留意して自動化の推進が成功できるよう、ぜひ試してみてください。

参考URL

  • 特集「ソフトウェア開発 自動化ツール」ソフトウェア開発を取り巻く自動化ツールの現況と導入のポイント|CodeZine 開発者のための実装系Webマガジン(https://codezine.jp/article/detail/9722
  • 特集・コラム 運用自動化コラム 第2回 失敗しない自動化とは|CTCシステムマネジメント株式会社(http://www.ctcs.co.jp/special/automation/02.html)
  • 特集:運用自動化ツールで実現する、クラウド時代の運用スタイル(6):運用自動化、ここだけは押さえておきたい4つのポイント (1/2)|atmarkit @IT(http://www.atmarkit.co.jp/ait/articles/1502/26/news043.html)
  • 自動ビルド環境を作り上げることで、開発効率もコードの品質も向上させよう[PR]|Publickey Enterprise IT Technologies(https://www.publickey1.jp/blog/15/atlbuild.html)

資料ダウンロード

ライター:Qbook編集部

ライター

バルテス株式会社 Qbook編集部。 ソフトウェアテストや品質向上に関する記事を執筆しています。