SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集「ソフトウェア開発 自動化ツール」

ソフトウェア開発を取り巻く自動化ツールの現況と導入のポイント

  • X ポスト
  • このエントリーをはてなブックマークに追加

 ソフトウェアを提供している組織では、テクノロジーの発展とともにその組織内における自動化の可能性がどんどん広がってきました。もちろん、なにを自動化しているかは組織によって異なります。本稿では、自動化するためのツールやサービスをソフトウェア開発に焦点をあてて整理し、それらを導入するための戦略を紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

自動化ツールの概要

 筆者が自動化するという言葉をソフトウェア開発で初めて聞いたのは、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をサポートしています。一例ではありますが、こういった大企業が提供しているクラウドサービスや、それらの活用を支援する企業がコード化を通した自動化にフレンドリーな部分は、現在の自動化の流れを加速していると言えます。

 他の自動化でもそうですが、2009年からは特にDevOpsというキーワードで組織やビジネスの改善を促し、その技術的な基盤として自動化の導入を進めている組織も増えてきました。各地で行われているカンファレンスなどの事例も増えてきています。

 開発プロセスやビジネスモデルによって、どのタイミングでどのツールを使ったり、利用しているツールの範囲が異なったりすることは組織によってさまざまですが、例えばチームやプロダクト単位での仕事や情報、モノの流れを整理した上で、各種ツールをその流れに重ねると次のように表現できます。この例では、会社はいくつかのプロダクトを開発、運用していて、それらのプロダクトやチームの状況から経営陣が経営判断を下している場合における自動化ツールやサービスの利用想定です。図にある矢印が仕事や情報やモノの流れを、青い四角でツール群を、オレンジの枠で組織を表現しています。

 各ツールは複数の役割を担うことができますし、あくまで一例としての分類なので、以降の分類に限定した使い方である必要はありません。

ビルド

 ソフトウェアをコンパイル、パッケージングすることが主な役割のツールです。ビルドという言葉の定義にはさまざまな解釈があり、自動テストとパッケージングまで含めるものもあれば、コンパイルまでのものの場合もあります。

テスト

 ソフトウェアが正常に動作しているかを検証することが主な役割のツールです。テストの定義は広範囲にわたります。ここでは、ソフトウェアを動作させる動的テストだけではなく、動作させずに行う静的テストのツールも紹介します。

汎用的なテスティングフレームワーク

 プログラミング言語を利用して、チェックの記述、実行、検証、レポートを行うことが主な役割のツールです。

GUIテスト

 GUIの操作や表示の検証をサポートすることが主な役割のツールです。筆者はWebブラウザ、ネイティブアプリ、スマートフォンなどのGUIを対象にしたツールを利用しています。

パフォーマンステスト

 例えばHTTPで大量にアクセスすることでサーバーに負荷をかけるなど、パフォーマンステストや負荷テストをサポートすることが主な役割のツールです。

静的解析ツール

 ソフトウェアのコードなどを対象にバグの温床になりそうな記述がないかを検査することが主な役割のツールです。このような静的解析ツールのSaaSも登場しています。

次のページ
環境構築

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集「ソフトウェア開発 自動化ツール」連載記事一覧

もっと読む

この記事の著者

きょん(キョン)

株式会社オンザロード テストアーキテクト主な研究対象はソフトウェアテストの体系的知識を踏まえた自動化やテスト以外での品質担保です。 2015年からは特にアジャイル開発におけるテストやメトリクスを活用した高品質なアジャイル開発に取り組んでいます。主な講演 Scrum Gathering Tokyo 2016 「Scrum, Test, Metrics」 アジャイルジャパン2016 「まだテスト期間とかつくっているの? ~アジャイルな開発におけるテストとの付き合い方~

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9722 2016/12/01 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング