The Value Stream Management Market & Certifications の翻訳版です。
バリューストリームマネジメントの市場と認証
2021年9月29日
著者: Cassandra Stanek / Product Marketing Manager
今年、発表された「バリュー・ストリーム・マネジメントの現状レポート2021」では、DevOpsを実現するための重要な可視化要素であるVSMの導入において、企業組織がどのような状況にあるかを示す基準が示されました。このレポートによると、市場はVSM導入の初期段階にありますが、チームは競争力のある成長とポジショニングのために、VSMの導入と活用に積極的に取り組んでいます。
このレポートは、企業のリーダーや製品・サービスの開発に携わる方々にとって、一読の価値があるものです。成功しているチームがどのフロー指標に注目しているか、企業がデジタルバリューストリームに基づいてどのようにチームを編成し、組織化しているか、バリューストリームマッピングで発見されたこと、DevOpsの導入をどのように進めるかなど、有益なデータが満載です。HCLソフトウェアのDevOps製品責任者である Brian Muskoff は、このレポートに貢献しており、HCLソフトウェアはVSMCの5つの設立メンバーの1つです。
このレポートから得られた素晴らしい洞察に基づいて、VSMCはDevOps Instituteを通じてValue Stream Management Foundation認証も開発しました。この包括的なコースは、バリュー・ストリーム・マネジメントの原則、実践、ツールを紹介するものです。このコースは、デジタルバリューストリームにおける価値の流れと実現を最適化し、この新興分野のスキルを開発することを目的としています。デジタル・バリュー・ストリームには、ソフトウェア・アプリケーションやサービスに加えて、クラウド・インフラストラクチャやDevOpsツールチェーンなど、それらを支えるプラットフォームも含まれます。
Gartner社によると、2023年までに70%の組織がバリューストリームマネジメントを使用してDevOpsパイプラインのフローを改善し、顧客価値の迅速な提供につなげるとしています。このようなVSMの積極的な市場導入を念頭に、リーダーや開発者は、VSMの歴史と進化、価値の流れの特定方法、価値の流れのマッピング、DevOpsツールチェーンの接続、価値の流れの測定基準などを理解することで、成功に向けた体制を整えることができます。バリュー・ストリーム・マネジメントの認定を受けることは、実践を拡大するための基盤となり、VSMCのメンバーであれば誰でも無料で受けることができます。
効率的で価値主導のソフトウェアデリバリーは、企業のデジタルトランスフォーメーションを成功させるための主要な要素です。そのため、デジタルトランスフォーメーションで最も困難なのは、その測定です。ここで重要になるのが、バリューストリームマネジメントです。これは、成功したDevOpsプラクティスとデジタルトランスフォーメーションの取り組みを定義し、測定することを目的とした、ソフトウェアデリバリーの新しいプラクティスです。
バリュー・ストリーム・マネジメントが導入される前のソフトウェア・デリバリーは、GPSのない国を横断する長いドライブ旅行のようなものでした。ドライバーは目的地と方向を知っていますが、おそらく最短ルートではないでしょう。遅れることもあれば、何度か道に迷うこともあり、目的地にたどり着くまでに多くの時間と費用を費やすことになります。企業にとって、このような効率性と可視性の欠如は、数百万ドルにもなり、デジタルトランスフォーメーションの旅の車輪が回転しているようなものです。
HCL Accelerate は、業界をリードするデータ駆動型のバリューストリーム管理プラットフォームであり、自動化されたガバナンスと指標の可視化により、より迅速なソフトウェアデリバリーを導き、より効率的なデジタルトランスフォーメーションを可能にします。
HCL Compass Rest APIs In Action の翻訳版です。
HCL Compass Rest API の活用
2021年9月20日
著者: Pradeesh S P / Technical Specialist, HCL Software
この記事では、HCL Compass 2.0.2バージョンで提供されるRESTFULサービスについて説明します。HCL Compassでは、ウェブやデスクトップ・インターフェースの他に、Perl APIやJava Native Interfaceを使用することができます。これらの2つのオプションは、複雑で柔軟性に欠けているため、Compassを中心としたアプリケーションや統合の構築が難しく、時間がかかります。
HCL Compass REST APIは、開発者がHTTPベースのREST APIを使用してHCL Compassと対話することを可能にします。REST APIは、レコードの表示や修正、クエリの作成と編集、テキスト検索など、HCL Compassの多くの機能を実行するために使用できます。REST APIの機能は、コンポーネントとしてHCL Compassのインストールに含まれています。これは、Apache Tomcatインスタンス上に展開され、CQwebサービスから独立して実行されます。一度インストールすれば、あとはサービスを起動するだけで使い始めることができます。このブログでは、REST APIを利用してHCL Compassのデータと対話するPythonスクリプトを開発します。このスクリプトを作成しながら、一般的に使用されているRESTAPIのいくつかを紹介します。
この記事は、プログラミングや、特定のタスクを実現するためのコードを提供するものではありません。単に、Compassデータと対話するためにREST APIを実用的な文脈で使用する方法を紹介するものです。もちろん、Pythonスクリプトを書くには、関数を使うなど、もっと簡単で効率的な方法があります。データ操作のコードの一部はスニペットに含まれておらず、ほとんどがREST APIと対話するためのリクエストモジュールの使い方を扱っています。
スクリプトを実行すると、システムで利用可能なリポジトリのリストを表示します。 パラメータとしてユーザー名、パスワード、データベースを入力することで、認証するリポジトリをリストから選ぶことができます。 選択したリポジトリに関連するデータベースを一覧表示します。 ユーザーにデータベースの提供を求め、そのユーザーに割り当てられたレコードを表示するためのクエリを構築する。 クエリを実行して、結果セットを表示します。 クエリを削除します。 REST サーバーからログアウトします。
Repos API - Schema Repositories のリストを取得します。 Authenticate API - CCM REST サーバーへの認証を行います。 Databases API - スキーマリポジトリに関連付けられたデータベースを一覧表示する。 Folders API - クエリを作成する親フォルダーをリストアップする。 QueryDefs API - クエリ定義を作成する。 ResultSets API - クエリ定義を実行して、結果セットを構築します。 ResultSet API - 以前に実行された Query Definition の単一ページを取得します。 QueryDef API - クエリ定義を削除するためのものです。 Authenticate API - CCM Rest Server からログオフする。
では、これらのAPIを詳細に確認しながら、スクリプトを作成していきましょう。
最初のタスクは、ユーザーがスキーマリポジトリを選択できるように、スキーマリポジトリのリストを取得することです。これには、REPOS API、特にエンドポイントである/ccmweb/rest/repos を使用します。この目的のためには、GET HTTPリクエストを使用する必要があります。このデモでは、Python Requests モジュールを使用してREST APIスクリプトを作成します。そのためには、スクリプトにモジュールをインポートする必要があります。そして、request.get()関数を使用して、このAPIリクエストを送信します。request.get関数は、リポジトリのエンドポイントをURLとして受け取り、ヘッダを引数として渡します。この特定のAPIでは、期待されるヘッダーは次のとおりです。
'Content-Type': "application/json"
ヘッダー情報は headers という変数に保存され、URL は repo_endpoint という変数に保存されます。これは、Rest APIのリクエストを行うために、このスクリプト全体でrequestモジュールにパラメータを渡すための、標準的なテンプレートになります。
cont_type = “application/json”
headers={‘Content-Type’: cont_type}
repo_endpoint = “https://servername:8190/ccmweb/rest/repos”
response = requests.get(
repo_endpoint,
headers=headers
)
上記のコードは、システムで利用可能なリポジトリのリストを取得します。
システムでリポジトリが利用できるようになり、ユーザーがログインするリポジトリを選択できるようになったので、認証を行う必要があります。REST サーバーへの認証には、/ccmweb/rest/authenticate をエンドポイントとする Authenticate API を使用します。使用するHTTPリクエストはPOSTです。まず、ユーザーにユーザー名、パスワード、リポジトリ名、ログインしたいデータベースを入力してもらいます。以前のREPOS APIとは異なり、Authenticate APIでは、上記の情報をJSON形式でボディに送信する必要があります。ヘッダーとURLの他に、今回はボディデータもrequests.postメソッドで提供しなければなりません。また、リクエストが何らかの例外やエラーメッセージを発生させたかどうかを知る必要があり、そのために raise_for_status() メソッドを使用します。すべてがうまくいけば、このリクエストは認証トークンをJSON形式で出力します。これは、Compassのデータを取得または変更するための今後のAPIリクエストに使用する必要があります。このデータを操作してトークンを取得するためには、このJSON出力を処理してPythonの辞書データ構造に変換する必要があります。そのために、.json()メソッドを使用します。Json.dumps関数は、Pythonで処理できるようにjsonデータを文字列に変換します。前回のAPIコールと同じヘッダーを今回も渡していることに注目してください。
期待されるヘッダーは、「Content-Type」。"application/json"
eponame = input(“\nEnter Repository Name : “)
auth_url = “https://servername:8190/ccmweb/rest/authenticate”
username = input(“\nEnter your username : “)
password = input(“\nEnter your password : “)
db1name = input(“\nEnter db name : “)
body_data={“username”:username,
“password”:password,
“repo”:reponame,
“db”:db1name
}
auth_response = requests.post(auth_url,headers=headers,data=json.dumps(body_data))
auth_response.raise_for_status()
auth_data=auth_response.json()
スキーマ・リポジトリに関連するデータベースの一覧を表示するには、エンドポイントがccmweb/rest/repos/repository name/databasesのDatabases APIを使用します。HTTPリクエストは GET です。今回は、先ほどのAPIコールのヘッダーとは別に、Authentication Token(先ほどのAPIコールの後に出力として受け取ったもの)を以下のフォーマットで送る必要があります。
期待されるヘッダーは ‘Content-Type’: “application/json”,
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInJlcG8iOiIxMC4wLjAiLCJleHAiOjE1NzM2NjE5NDUsImlhdCI6MTU3MzU3NTU0NSwiZGIiOiJTQU1QTCJ9.Lgdk9gPm6mFFGEnr6mRt7Vrq-nTnlP86ARKc16bP4syeTIvKQ55JX5r6aFXVC20xC2NwsjqbvAhd2f1r2PiIUA
requests.get関数では、URLとヘッダを渡しています。また、resay_for_status()を行い、.json関数でレスポンスを読み込んでいます。このAPIでは、必須のボディデータはありません。データベースを辞書として取得し、それを処理してユーザーがCompassデータへのアクセスを選択できるように表示する必要があります。
auth = “Bearer”+” “+auth_data[‘token’]
headers1={‘Content-Type’: cont_type,
‘Authorization’: auth
}
db_url = f”https://servername:8190/ccmweb/rest/repos/{RespositoryName}/databases”
dbname_response = requests.get(db_url,
headers=headers1
)
dbname_response.raise_for_status()
dbnames = dbname_response.json()
ワークスペース内のあるフォルダにクエリを作成する必要があります。そのためには、ルートワークスペースにどのようなフォルダがあるかを調べる必要があります。この例では、クエリは一時的なものなので、「Public Queries」フォルダに保存します。そのため、ワークスペース内の「Public Queries」フォルダの DBID を調べる必要があります。この目的のために Folders API を使用し、エンドポイントを /ccmweb/rest/repos/ リポジトリ名 /databases/ データベース名 /workspace/folders とします。 使用する HTTP リクエストは GET です。
期待されるヘッダーは、'Content-Type': "application/json",
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInJlcG8iOiIxMC4wLjAiLCJleHAiOjE1NzM2NjE5NDUsImlhdCI6MTU3MzU3NTU0NSwiZGIiOiJTQU1QTCJ9.Lgdk9gPm6mFFGEnr6mRt7Vrq-nTnlP86ARKc16bP4syeTIvKQ55JX5r6aFXVC20xC2NwsjqbvAhd2f1r2PiIUA
requests.get関数にパラメータを渡し、いつものようにraise_for_status関数を使い、.json関数を使って出力されたレスポンスをキャッチする必要があります。このJSONデータをjson.dumps関数に渡します。この出力から、次のAPIで必要となるdbIdデータに興味があります。
parent_url = f”https://servername:8190/ccmweb/rest/repos/{RepositoryName}/databases/{DatabaseName}/workspace/folders”
parent_dbid_response = requests.get(parent_url ,headers=headers1)
parent_dbid_response.raise_for_status()
parent_dbid_higher = parent_dbid_response.json()
parent_dbid = parent_dbid_higher[1][‘dbId’]
ユーザーからアクセスが必要なデータベースと親DBIDの入力を得たら、スクリプトの目的は、そのデータベース内のどの欠陥が所有されているかをユーザーに表示することです。このため、最初のステップでは、ログインユーザが所有するすべての欠陥を表示するためのクエリ定義を作成する必要があります。この目的のために、QueryDefs API を使用します。エンドポイントは /ccmweb/rest/repos/リポジトリ名/データベース名/workspace/queryDefs で、使用する HTTP リクエストは POST です。このAPIでは、従来のAPIと同様のヘッダが必要ですが、構築されるクエリの構造を形成するボディデータが必須となります。
期待されるヘッダは ‘Content-Type’: “application/json”,
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInJlcG8iOiIxMC4wLjAiLCJleHAiOjE1NzM2NjE5NDUsImlhdCI6MTU3MzU3NTU0NSwiZGIiOiJTQU1QTCJ9.Lgdk9gPm6mFFGEnr6mRt7Vrq-nTnlP86ARKc16bP4syeTIvKQ55JX5r6aFXVC20xC2NwsjqbvAhd2f1r2PiIUA
本体のデータは以下のようになり、変数query_dataに格納されます。
query_data={ “name”: “MyDefects”,
“dbIdParent”: parent_dbid,
“primaryEntityDefName”: “Defect”,
“queryFieldDefs”: [
{
“fieldPathName”: “Headline”,
“isShown”: “true”
}
],
“filterNode”: {
“boolOp”: “BOOL_OP_AND”,
“fieldFilters”: [
{
“fieldPath”: “Owner”,
“compOp”: “COMP_OP_EQ”,
“values”: [username],
“stringExpression”: “= username”
}
]
}
}
ボディデータをもう少し詳しく見てみましょう。いつものように、ボディデータはJSON形式です。
name – Name of the query.
dbIdParent – The dbid of the parent directory where the query is to be created.
primaryEntityDefName – Record type name.
queryFieldDefs – fieldPathName is the field name.
isShown : true – To display the specific field in the result set.
filterNode – boolOp – AND – Operator for adding multiple filters to the query.
fieldFilters – These are the fields to provide as filters.
fieldPath : Owner – Field name of the filter
compOp – COMP_OP_EQ – Denotes Equal to
values : [username] – ユーザー名は、ユーザーの実際のユーザー名に置き換えられます。この条件では、フィールドOwnerが提供されたユーザー名と等しくなっています。したがって、クエリはオーナーが提供されたユーザー名であるすべてのDefectをリストアップする必要があります。
API用のパラメータの準備ができたので、これらを requests.post 関数に渡し、いつものように raise_for_status 関数を使用して、.json 関数を使用して出力レスポンスをキャッチします。json.dumps関数でJSONデータを渡します。この出力から、次のAPIで必要となるdbIdのデータに興味があります。
query_db = input(“\nEnter Database name to build query : “)
query_data={ “name”: “MyDefects”,
“dbIdParent”: parent_dbid,
“primaryEntityDefName”: “Defect”,
“queryFieldDefs”: [
{
“fieldPathName”: “Headline”,
“isShown”: “true”
}
],
“filterNode”: {
“boolOp”: “BOOL_OP_AND”,
“fieldFilters”: [
{
“fieldPath”: “Owner”,
“compOp”: “COMP_OP_EQ”,
“values”: [username],
“stringExpression”: “= username”
}
]
}
}
query_url = f”https://servername:8190/ccmweb/rest/repos/{RepositoryName}/databases/{DatabaseName}/workspace/queryDefs”
query_response = requests.post(query_url,headers=headers1,data=json.dumps(query_data))
query_response.raise_for_status()
query_out = query_response.json()
query_dbid = query_out[‘dbId’]
前のステップで Query Dbid を受け取ったので、これを使ってクエリの実行と結果セットの構築を行う必要があります。これらの操作はいずれも ResultSets API で行います。使用する HTTP リクエストは POST です。この目的のために、次のエンドポイントを使用します。/ccmweb/rest/repos/repositoryname/databases/databasename/workspace/queryDefsquerydbid/resultsets。使用するヘッダーは、前のステップと同じです。
期待されるヘッダーは ‘Content-Type’: “application/json”,
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInJlcG8iOiIxMC4wLjAiLCJleHAiOjE1NzM2NjE5NDUsImlhdCI6MTU3MzU3NTU0NSwiZGIiOiJTQU1QTCJ9.Lgdk9gPm6mFFGEnr6mRt7Vrq-nTnlP86ARKc16bP4syeTIvKQ55JX5r6aFXVC20xC2NwsjqbvAhd2f1r2PiIUA
このAPIでは、ボディデータの受け入れが必須となっています。もし特定のパラメータがない場合は、以下のように空の json を渡すことができます。
query_exec_data={
}
これ以外にも、URL、データ、ヘッダーが requests.get 関数に渡されます。いつものように、ここでも raise_for_status、json.dumps、.json の各関数を使います。出力結果から、次のAPIリクエストに渡すための「result_set_id」が得られることを期待しています。
query_exec_url = f”https://servername:8190/ccmweb/rest/repos/{RepositoryName}/databases/{DatabaseName}/workspace/queryDefs/{Querydbid}/resultsets”
query_exec_data={
}
query_exec_response=requests.post(query_exec_url,headers=headers1,data=json.dumps(query_exec_data))
query_exec_response.raise_for_status()
query_exec_results = query_exec_response.json()
resultset_id = query_exec_results[‘result_set_id’]
いよいよ結果セットをユーザーに表示します。これには、ResultSet API を使用し、エンドポイントとして /ccmweb/rest/repos/repositoryname/databases/databasename/workspace/queryDefs/querydbid/resultsets/resultsetid を指定します。前のステップの出力としてresultsetidを取得しました。HTTPリクエストはPOSTです。パラメータとしてURLとヘッダを指定するだけです。
期待されるヘッダは ‘Content-Type’: “application/json”,
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInJlcG8iOiIxMC4wLjAiLCJleHAiOjE1NzM2NjE5NDUsImlhdCI6MTU3MzU3NTU0NSwiZGIiOiJTQU1QTCJ9.Lgdk9gPm6mFFGEnr6mRt7Vrq-nTnlP86ARKc16bP4syeTIvKQ55JX5r6aFXVC20xC2NwsjqbvAhd2f1r2PiIUA
Python Prettytableパッケージを使って、結果を表形式で表示します。結果セットの出力は、辞書形式で提供されます。そこから行の値を取得して、必要な値をPythonのリストとして抽出します。クエリ構成データでは、表示フィールドにHeadlineというフィールドのみを要求しましたが、出力にはデフォルトでdisplayNameが含まれており、これはレコードのID以外の何物でもありません。
result_set_url = f”https://servername:8190/ccmweb/rest/repos/{RepositoryName}/databases/{DatabaseName}/workspace/queryDefs/{Querydbid}/resultsets/{Resultsetid}”
result_set_response = requests.get(result_set_url,headers=headers1)
result_set_response.raise_for_status()
resultset_results = result_set_response.json()
second_final = resultset_results[‘rows’]
headline_value = []
id_value = []
for i in second_final:
headline_value.append(i[‘values’])
id_value.append(i[‘displayName’])
x.add_column(“ID”,id_value)
x.add_column(“Headline”,headline_value)
print(x)
次の作業は、作成したクエリを削除して、スクリプトを実行するたびに新しいクエリが作成されるように、Compass のデータベースに表示されないようにすることです。これには QueryDef API を使用し、エンドポイントを /ccmweb/rest/repos/reposittoryname/databases/databasename/workspace/queryDefs/querydbid とします。このためのHTTPリクエストはDELETEです。パラメータとしてurlとheadersを受け取ります。
期待されるヘッダーは ‘Content-Type’: “application/json”,
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInJlcG8iOiIxMC4wLjAiLCJleHAiOjE1NzM2NjE5NDUsImlhdCI6MTU3MzU3NTU0NSwiZGIiOiJTQU1QTCJ9.Lgdk9gPm6mFFGEnr6mRt7Vrq-nTnlP86ARKc16bP4syeTIvKQ55JX5r6aFXVC20xC2NwsjqbvAhd2f1r2PiIUA
これまでのAPIリクエストで使われていた通常の機能とは別に、今回の違いは、何の出力も受け取らないということです。この場合、クエリが正常に削除されたかどうかをどうやって知ることができるでしょうか?それには、HTTPステータスコードを利用します。通常、HTTPレスポンスコードが200の範囲にあれば、リクエストが成功したことを意味します。そこで、HTTPレスポンスからステータスコードを取得するために、response.status_code関数が必要になります。これを条件文に渡すことで、クエリの削除が成功したかどうかを検証することができます。
remove_query_url = f”https://servername:8190/ccmweb/rest/repos/(RepositoryName}/databases/{DatabaseName}/workspace/queryDefs/{Querydbid}”
remove_query_response = requests.delete(remove_query_url,headers=headers1)
remove_query_response.raise_for_status()
remove_query_final_response = str(remove_query_response.status_code)
if remove_query_final_response.startswith(’20’):
print(“\nRemoving Query Successful”)
else:
print(“\nRemoving query failed! Please manually remove”)
クエリの出力をユーザーに表示することができたので、意図したタスクはすべて完了しました。あとは、セッションを蓄積してサーバに負荷をかけないようにするために、サーバからログオフするだけです。この目的のために、Authenticate APIを使用し、エンドポイントを/ccmweb/rest/authenticate/logoff とします。HTTPリクエストはPOSTです。先ほどのAPIリクエストと同様に、パラメータとしてURLとヘッダーのみを受け取ります。前のステップで行ったように、ログアウトが成功したかどうかを知るための出力はありませんので、ステータスコードも調べます。
期待されるヘッダーは 'Content-Type': "application/json",
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInJlcG8iOiIxMC4wLjAiLCJleHAiOjE1NzM2NjE5NDUsImlhdCI6MTU3MzU3NTU0NSwiZGIiOiJTQU1QTCJ9.Lgdk9gPm6mFFGEnr6mRt7Vrq-nTnlP86ARKc16bP4syeTIvKQ55JX5r6aFXVC20xC2NwsjqbvAhd2f1r2PiIUA
logout_url=”https://servername:8190/ccmweb/rest/authenticate/logoff”
logout_response = requests.post(logout_url,headers=headers1)
logout_response.raise_for_status()
logout_final_response = str(logout_response.status_code)
if logout_final_response.startswith(’20’):
print(“\nLogout Successful”)
else:
print(“\nLogout Failed!”)
スクリプトの完全な出力は以下の通りです。システム内のリポジトリの一覧が表示されます。RESTサーバへの認証のために、ユーザ名、パスワード、データベースを入力する必要があります。
次に、ユーザが所有するレコードをリストアップするためのクエリを作成するために親ディレクトリを見つけます。レコードを作成して表示した後、クエリを削除してRESTサーバーからログアウトし、途中でエラーが発生した場合は報告します。
The repositories available on this server are
———————————–
CadenceTest RestAPIDemo
Authenticating to Compass Rest API server!
Enter Repository Name : RestAPIDemo
Enter your username : admin
Enter your password :
Enter db name : RESTD
Listing the Databases for the repository RestAPIDemo
The database name(s) are as follows
RESTD
restn
Building a Query to display records assigned to you
Enter Database name to build query : RESTD
Executing the Query
Displaying the Result Set
+—————+———————————–+
| ID | Headline |
+—————+———————————–+
| RESTD00000041 | [‘Testing RestAPI Demo Record 1’] |
| RESTD00000042 | [‘Testing RestAPI Demo Record 2’] |
+—————+———————————–+
Removing the Query
Removing Query Successful
Logging off
Logout Successful
これで、COMPASS HTTP REST APIの使用を実演するための簡単なスクリプトを作成するという、我々がやろうとしたことは達成されました。これが、HCL Compassのデータを使ったより複雑なアプリケーションやインテグレーションの開発に役立つことを期待しています。
eSignature package feature in HCL Compass https://blog.hcltechsw.com/compass/esignature-package-feature-in-hcl-compass/
HCL Compass の eSignature パッケージ機能
2021年9月20日
著者: Garima Hans / HCL TECHNICAL SPECIALIST
電子署名(e-signature)とは、署名者を識別するための信頼できる方法を提供し、その人を電子文書の内容に拘束する電子的手段のことです。
電子署名は、コンパスの問題を解決するために、ユーザー認証とアクティビティの追跡を提供することで、データ・セキュリティの向上に役立ちます。 例えば、電子署名は、Compass環境を米国FDAに準拠させるために必要となる場合があります。
このような仕組みになっています。 あるレコードタイプにeSignatureパッケージを適用する。 そのレコードタイプのレコードには、eSignatureフィールドの新しいタブが含まれます。ユーザー名」「パスワード」「署名ログ」「Is Current」です。署名が必要な場合、ユーザー名とパスワードは必須フィールドとなり、そうでない場合は読み取り専用となります。
パッケージを適用できるのは、スキーマ管理者権限を持つユーザーまたはスーパーユーザー/コンパス管理者のみです。Compass管理ツールがインストールされているマシンから適用する必要があります。
完了をクリックして、選択したパッケージをインストールする。
インストールが完了したら、最新のスキーマバージョンの変更を確認して、ユーザーDBをアップグレードする必要があります。この作業は元に戻すことができませんので、DBA と共にバックアップを取ることを忘れないでください。
次のステップは、CompassのWebUIで行います。 あなた(または指定されたユーザー)は、選択したレコードタイプとデジタル署名を取得するアクションのためにeSig_Configを作成する権限を持っている必要があります。必要なオプションを選択し、保存をクリックします。
eSig_Configレコードには、署名するレコードタイプを選択するためのフィールドと、そのタイプのレコードがいつ署名されるかを示すために使用する2つのオプションが用意されています。ステート」と「アクション」です。レコード タイプがステートフルの場合は、State と Action の両方のオプションが使用できます。レコードタイプがステートレスの場合は、アクションのみが利用可能です。レコード タイプを変更すると、ステートとアクションの選択はクリアされます。
eSig_Config レコードに対してアクションベースの基準とステートベースの基準の両方を選択した場合、指定したタイプのレコードがいずれかの基準を満たす場合には、署名が必要となります。
署名が必要な場合、ここで入力されたユーザー名とパスワードは、HCL Compass環境へのログインに使用されたユーザー名とパスワードと比較されます。アイデンティティが一致した場合、変更が受け入れられ、署名が記録されます。IDが一致しない場合は、エラーメッセージが表示され、データベースへの変更は行われません。
セットアップが完了すると、誰かが既存のレコードや新しいレコードを変更した場合、変更を保存するためにeSignatureのユーザー名とパスワードのフィールドが必須となります。
eSignature Logに表示される情報は以下の通りです。
署名は、署名が適用されてからレコードが変更されていない場合にのみ有効です。読み取り専用のフィールドIs Currentには、レコードへの最後の変更に署名が含まれている場合は値「True」が、そうでない場合は値「False」が格納されます。
eSignature」タブには、レコードの署名履歴を表示するフィールド「eSignature Log」があります。このフィールドには、署名が行われた変更のみが含まれます。
eSigログはカスタマイズも可能です。詳しいカスタマイズ方法については、https://help.hcltechsw.com/compass/2.0.2/com.hcl.compass.doc/webhelp/oxy_ex-1/com.ibm.rational.clearquest.schema.ec.doc/topics/sch_pkgs/c_customize_esig.html を参照してください。
あなたの組織では、スキーマにeSigパッケージのような同様の要件がありますか?下記のディスカッションにご参加ください。
DevOps India Summit 2021 Recap の翻訳版です。
DevOps India Summit 2021 Recap
2021年9月1日
著者: Bhavani Sidharth / DevOps Sales, HCL
DevOps India Summit(DOIS)は、南アジア最大のDevOpsイベントとして注目されています。インドの開発者数は全世界の2700万人のうち600万人と非常に多く、このイベントはソフトウェア開発業界において非常に重要な意味を持っています。今年の8月27日と28日に開催されたDOISでは、2日間に渡って、スピーカーセッション、パラレルトーク、ディスカッションが行われ、世界中の人々が考えを共有しました。
今回のサミットではパンデミックに焦点が当てられておらず、「前例のない時代」「在宅勤務」「セキュリティと事業継続」「運用上の課題」「パンデミックがIT業界の働き方に与える影響」などの議論はほとんどありませんでした。まるで、業界が新しい常識に慣れてしまい、それが「いつものこと」になっているかのようでした。では、世界最大の開発者コミュニティにとって、「いつものこと」とはどのようなものなのでしょうか。以下に、複数のソートリーダーから集めたいくつかのテーマを紹介します。
環境に配慮した開発や、今後数年間に組織が行う選択が、ソフトウェアの構築方法を左右することになるでしょう。持続可能性に関しては、すべての人が関わっているのに、なぜ開発者は不可決なのか?
環境に優しいソフトウェア開発とは何でしょうか?それは、PythonかC言語か、GCPかAWSか、自動化か手動化かといった選択の問題です。開発者は環境に配慮した選択を求められ、組織全体の二酸化炭素排出量の目標に合わせることを求められるでしょう。
アマゾンで働き、毎月リーダーシップミーティングに同席している友人によると、これらのミーティングで常に問われるのは、「それはどのようにお客様の役に立つのか」ということだそうです。すべてのアイデア、すべての製品、すべての新しい考えは、この1つの質問に答える必要があります。長い間、開発者やデザイナーは自由を必要とする創造的な人々であり、創造はほとんどが孤立して行われていました。
Value Stream Management(VSM)は、私たちが見ているように、「Day 2 DevOps」、つまり多くの組織が今取り組んでいるDevOpsの進化の次の段階です。開発者はもちろん、営業やマーケティング、さらには財務や人事を含む開発・運用チームは、すべて顧客に答えを出すことになります。指標があること、可視性があること、システムに効率性があること、レポートがあること、そしてスピードがあることは当たり前のことです。しかし、これらすべてがどのようにしてビジネス価値をもたらすのでしょうか?チームはアジャイルでテストを自動化し、本番へのデプロイを高速化していますが、それがNPSの向上にどうつながるのでしょうか。しかし、それがNPSの向上にどう結びつくのでしょうか、マーケットシェアの拡大にどう結びつくのでしょうか。顧客サービスの迅速化にどう結びつくのか?
それは、ループを完成させ、データポイント間の点をつなげることです(これはまさに HCL Accelerate が行っていることです)。メトリクスは十分ではありません。顧客により良いサービスを提供するために新しいソフトウェアの開発に投資している CFO/CEO にとって、ループは閉じなければなりません。
障害を検出して報告するだけでは十分ではありません。不具合は自動的に治癒される必要があります。これは、テスト、デプロイメント、ソースコード管理、バージョン管理、プランニングなどに見られます。すべての製品は、自動修正する生来の知能を持ち、AI/MLが混入され、同じプラットフォーム上にある必要があります。さらに、開発と運用のプロセスは、修正が依存関係にどのような影響を与えるかを確認できるように、エンドツーエンドの可視性を持つ必要があります。当社のDevOpsソリューションは、問題の検出、修正、防止のための機能を提供し、ソフトウェア・デリバリー・パイプライン全体のガバナンスを向上させます。 オープンソースの役割
小規模なチームであれば、無料のツールを使ってすぐにスタートを切ることができますが、企業レベルではセキュリティとスケールがより重要になります。しかし、どちらか一方だけを選択する必要はありません。オープンソースであるかどうかに関わらず、開発者が自分の好きなツールを使い続け、その上にセキュリティ、テスト、バリューストリームマネジメントなどのエンタープライズツールのエコシステムを構築することができます。私たちのソリューションは、「引き裂いて置き換える」という考え方ではなく、多様なツールチェーンにエンタープライズレベルのセキュリティ、スケーリング、分析機能を追加するものです。
DevOps India Summitは、複数のソートリーダーやイノベーターから、DevOpsの過去、現在、未来について話を聞くことができる興味深い2日間でした。カンファレンスに参加された方は、ご自身の感想をコメントでお聞かせください。
Technology Integration: The Next Generation of HCL OneTest の翻訳版です。
テクノロジーの統合: 次世代のHCL OneTest
2021年8月23日
著者: Nabeel Jaitapker / Product Marketing Lead, HCL Software
HCL OneTest の最新リリースで最もクールな機能の一つは、様々なタイプの技術と統合できることです。
例えば、参照整合性を拡張してカスタムリレーションシップを追加したり、バージョン10.2でDDLを生成したりすることができます。
さらに、InstallAnywhere は、Installation Manager でサポートされている HCL OneTest 製品ファミリーの 14 言語すべてをサポートしています。これにより、翻訳されたインストールパッケージのおかげで、フレンドリーなインストール体験が保証されます。
HCL OneTest Server (GA)におけるHTTPトランスポートのサービス仮想化
Webサービス(SOAP、REST、HTTP)やIBM MQベースのアプリケーションをサポートし、サーバー上で仮想化することで、仮想サービスのスケーリングを簡素化し、デバッグを容易にし、新しいシステムモデル・ビューで使用状況を可視化します。
コントラクトテストのサポート: コンシューマ・ドリブン
APIが成熟するにつれ、提供者と消費者の間にはかなりの摩擦が生じます。- APIの仕様を少し変更しただけで、消費者の行動がおかしくなり、下流で複数の問題が発生する可能性があります。コントラクトテストにより、APIプロバイダとコンシューマは、API仕様の変更を迅速かつ容易に検証し、導入時の問題を回避することができます。
次世代のHCL OneTestについて説明したオンデマンドのウェビナーをご覧ください。
Enterprising Ecosystems: The Next Generation of HCL OneTest の翻訳版です。
HCL OneTest: 次世代版におけるエンタープライズ・エコシステム
2021年8月12日
著者: Nabeel Jaitapker / Product Marketing Lead, HCL Software
HCL OneTest の最新版のおかげで、企業のエコシステムでの生活が格段に楽になりました。
最新版ではどのようなことができるのか、簡単に見てみましょう。
Microsoftの環境におけるAzure DevOpsサービスとの統合は、ユーザーエクスペリエンスを向上させるために拡張され続けています。そうすることにしたのは、多くのお客様が開発やテストのシナリオにAzureプラットフォームを採用しており、その選択した環境でのサポートを継続したいからです。
さらに、パッケージ化されたAzure Kubernetes Serviceのデプロイメントサーバーをユーザーにインストールしてもらうことで、よりシンプルで管理しやすくなります。また、バックアップにはVeleroなどのAzure Kubernetesサービスを利用することで、真に統合された体験を提供しています。
シンプルなテスト実行手段を提供することは、HCL OneTestのコアバリューであり、UIテスト用のシンプルなエージェントを公開することで、テスターが利用できる実行メカニズムの範囲を拡大します。デスクトップとモバイルの実行機能が更新されたことで、ユーザーはWindowsデスクトップアプリケーション、モバイルWeb、iOSおよびAndroidデバイスのハイブリッドアプリケーションで実行を指揮できます。
バージョン10.2では、ネイティブおよびハイブリッドのモバイルアプリケーションに対するアプローチも刷新されています。
Web UIテストのSmartShotテクノロジーを採用し、複雑なアプリケーションフローを記録し、プロセスの各ステップのインタラクティブなスクリーンショットで検証ポイントを設定することができるようになりました。これにより、テストにおける検証の設定にかかる労力が劇的に簡素化されます。また、OneTest UIは、ローコード/ノーコードのアプローチをとることで、AIドリブンヒーリングツールキットを適用し、テストのメンテナンスにかかる労力を大幅に削減できます。
モバイルデバイスでの実行は、エミュレータ、付属の物理デバイス、またはPerfecto、Bitbarなどのパートナーを介して実現できます。
最新バージョンでは、Windows上のデスクトップアプリケーションのテストに対するアプローチも一新されました。
10.2のWindows Native Applicationsのサポートにより、Windows 10でのデスクトップアプリケーションのテスト方法が変わります。Webやモバイルのネイティブテストで行ってきたように、SmartShotのインタラクティブなスクリーンショット技術をデスクトップアプリケーションのテストに導入し、リッチなクロスアプリケーションのテストシナリオを可能にしています。
次世代のHCL OneTestについてのオンデマンド・ウェビナーをご覧ください。
The Future of Software Delivery の翻訳版です。
HCL Accelerate: ソフトウェアデリバリーの未来
2021年8月12日
著者: Cassandra Stanek / Product Marketing Manager
ソフトウェア業界の変化の速さには目を見張るものがありますが、特にDevOpsの文脈で考えると、その速さは際立っています。わずか10年前にはDevOpsという言葉はほとんど知られていませんでしたが、ソフトウェアデリバリーにおけるこの根本的な変化は、今日では誰もが認めるところとなっています。
ソフトウェアデリバリーの未来は、アイデア出し、反復、そしてサイロ化した作業の打破に、より多くの時間を費やすことです。これはどのように行われるのでしょうか。それは、ビジネスやチェンジマネジメントの世界で長く実践されてきた、「バリューストリーム・マネジメント」という概念です。ソフトウェア・デリバリーにおけるバリュー・ストリーム・マネジメントとは、ソフトウェア・デリバリーをエンド・ツー・エンドで監視し、"付加価値 "を最適化することです。簡潔に言えば、これはDevOpsの次の自然な進化です。
Gartner社は、2021年はバリューストリームがDevOpsの未来を決める年になると予測 しています。この破壊的な新しいDevOpsの考え方は、チームが複数の製品をリンクさせて、ソフトウェアデリバリーのための「バリューツールチェーン」を作り始めたことから始まります。従来、このプロセスはサイロ化されており、チームはフィードバックなしに合理的なプロセスでコードを構築し、デプロイしていました。
現在、企業はソフトウェアデリバリープロセスのパフォーマンスを可視化するために、バリューストリームマップを活用する最前線に立っています。The State of Value Stream Management Report 2021 によると、バリューストリームの可視化により、ボトルネックを減らし、ソフトウェアデリバリーの速度を向上させられます。報告された最も価値のあるメトリクスのトップ5は以下の通りです。
このレポート では、これらの重要な指標を収集する際にチームが直面している共通の課題も明らかにしています。
バリューストリーム管理ツール HCL Accelerate は、チームがこれらのメトリクスの収集を自動化し、バリューストリームを中心に組織化し、継続的な改善のエコシステムを構築する機会を提供します。VSMツールの中には、特定のDevOpsツールからのデータしか使用できないものもありますが、HCL Accelerateは、組織がすでに使用しているすべてのDevOpsツールと統合します。スプレッドシートでデリバリーメトリクスを追跡する手動プロセスを排除し、バリューストリームがどのように運用されているかの統合ビューを作成します。
DevOpsツールチェーンを可視化することで、調整が容易になり、デジタルトランスフォーメーションの進行状況を明確に測定できるようになります。世界中に仕事が分散し、IT環境が複雑化しているこの時代に、ソフトウェアデリバリーを最適化するためには、ワークロードの自動可視化が必要です。
HCL Accelerateは、SoFy(クラウドネイティブなソリューションファクトリー)で利用できます。
Business vs. Development: How value stream management fits in の翻訳版です。
HCL Accelerate: ビジネス vs. 開発におけるバリューストリームマネジメントの導入
2021年8月16日
著者: Elise Yahner / Marketing Strategy and Campaigns for HCL Software DevOps
ビジネス側は、開発の進捗が遅すぎるし、お金をかけすぎていると思っている。開発は、ビジネスが時間的・金銭的に無理な要求をしていると考えている。聞き覚えがありませんか?ビジネスと開発の戦いは、多くの企業にとって共通のものですが、だからといって解決できないわけではありません。アナリスト企業であるForrester社は、Integrated Value Stream Management Benefits Business and Development Leaders というレポートを発表し、この問題とその解決方法を採りあげています。
この記事では、このレポートから得られた重要なポイントと、それが組織にとってどのような意味を持つのか、そしてどのように行動すべきなのかをご紹介します。
これは当然のことのように思えるかもしれませんが、この2つの視点の違いをより深く掘り下げて考えてみましょう。ビジネスリーダーはROIとTime to Marketを重視し、開発リーダーはソフトウェア製品の作成に必要なステップを重視します。しかし、スピードが問題であることはどちらも同じです。Forrester社のレポートによると、「開発リーダーもビジネスリーダーも同様に、C-suiteが現在の変化のペースに満足していないとForrester社に語っている」という。
ビジネス目標を伝えるのは電話ゲームのようなもので、目標が開発に伝えられるまでに、重要な要素が失われてしまうことがよくあります。開発者は、自分たちが何を求められているのか、その「理由」がわからず、暗闇の中に取り残されたような気分になります。その結果、優先順位がずれたり、ビジネス目標を達成できないソフトウェアソリューションが生まれたりするのです。開発チームとビジネスチームが異なる言語を話しているのに、誰も翻訳者が必要であることを知らないのと同じです。
戦略レベルでのバリューストリームは、ビジネスと開発の間で必要とされる翻訳者です。ビジネスはなぜ開発が迅速に進まないのかを理解できず、開発はビジネスが何を求めているのかを理解できないとき、価値観の流れは、バラバラになったチームのすべてのデータを可視化し、行動可能にすることで、その答えを導き出します。バリューストリームの定義によれば、行われているすべての作業をある価値に結びつけることで、組織全体のリーダーは、何が価値を生み出しているのか、何がボトルネックの原因になっているのかを簡単に見分けられます。
バリューストリームマッピングは最初のステップですが、静的な情報を用いた手動のプロセスです。バリューストリームから本当に利益を得るためには、戦略的な情報収集と解釈を自動化するバリューストリームマネジメント(VSM)ツールが必要です。Forrester のレポートで指摘されているように、「戦略的な優先順位付けの基準としてバリューストリームを使用することで、製品チームにガイダンスが与えられ、製品チームは VSM を使用して製品の提供を成功させることができます」。
例えば、HCL Accelerate は、DevOps パイプライン全体のツールからデータを集約し、そのデータを正規化し、それを使用してカスタムキーメトリクスに基づくダイナミックダッシュボードを作成します。HCL Accelerateのさまざまなバリューストリームビューを使用することで、ビジネスリーダーと開発リーダーの両方が、誰が、何を、いつ、どこで、何のために作業をしているのかを明確に可視化できます。単一の真実の情報源があり、誰もが同じ情報にアクセスできると、コミュニケーションが容易になり、直感ではなくデータに基づいた意思決定が可能になります。
強力なツールを導入しただけでは十分ではありません。バリューストリームマネジメントの恩恵を真に受けるためには、ビジネスリーダーや開発リーダーがデータ駆動型の文化を受け入れ、それをチームに伝道する必要があります。そのためには、ビジネスとデベロップメントが、成功を特定して測定するための共通のフレームワークとして、目的と主要な結果(OKR)に同意することが不可欠です。Forrester社のレポートでは、「タイムボックス付きのパフォーマンス期間を設定することで、対話を活発にし、必要に応じてチームがピボットできるようにする」と述べられています。VSMツールでこれらのOKRをモニタリングすることで、組織内のすべてのグループは、組織が何を目指しているのか、自分たちの仕事がこれらの目標にどのように影響するのかを確認できます。言い換えれば、組織内の各グループに情報と説明責任を持たせることができる。
VSMを組織全体に導入するためのもう一つの重要なポイントは、VSMのチャンピオンを特定することである。もちろん、リーダーはVSMの導入を提唱すべきだが、個々のコントリビューターレベルでチャンピオンがいれば、文化的な変化を加速させることができる。ビジネス部門と開発部門にバリューストリーム・マネージャーの役割を設けることで、戦略的バリューストリームの文化をさらに促進し、これらの部門間のギャップを埋められます。
戦略的バリューストリームの利点は明らかであり、バリューストリームマネジメントはこのコンセプトを最大限に活用するための方法です。より速く前進し、競争力を維持したいのであれば、組織内でVSM戦略の導入を始めるかどうかではなく、いつ、どのように始めるかが問題となるはずです。HCL Accelerateは無料のCommunity Editionを提供していますので、すぐに始められます。こちらからダウンロード してください。