---
tags: スキル定義委員会, データ共有, 性質・関係性の把握, 事業への実装
---
# スキル定義委員会-095
## DE-95 データ共有 - データ展開 ⭐️
### Q.データ取得用のWeb API(REST)やWebサービス(SOAP)などを用いて、必要なデータを取得できる
### Web API(REST: Representational State Transfer)
Webサーバーにアクセスしてリソース(データや機能)を操作するための軽量な方法を提供するインターフェースです。RESTは、HTTPプロトコルを使用して、Webサーバーに対してリクエスト(GET、POST、PUT、DELETEなど)を送信することによって、リソースを操作します。REST APIは、Web上のさまざまなデバイス、プログラム、アプリケーション間でデータを共有するために使用されます。
#### Pythonライブラリ
- requests
requestsライブラリは、HTTPリクエストを送信するためのシンプルなインターフェースを提供し、JSON、XMLなどの形式でデータを受信することができます。
```python=
import requests
# REST APIからJSONデータを取得する
response = requests.get('https://api.example.com/data')
# JSONデータを解析する
data = response.json()
# データを処理する
for item in data:
print(item['name'], item['value'])
```
### Webサービス(SOAP)
XMLを使用してアプリケーション間でデータをやり取りするためのプロトコルです。SOAPは、Webサービスにおいて、標準的なメッセージング形式、プロトコル、およびアプリケーション間の通信モデルを提供します。
#### Pythonライブラリ
- suds
- zeep
- xml.etree.ElementTree & requests
WSDLを使用してWebサービスに接続し、XMLメッセージを送信し、Webサービスからのレスポンスを受信することができます。
```python=
import xml.etree.ElementTree as ET
import requests
# SOAP APIからXMLデータを取得する
headers = {'content-type': 'text/xml'}
body = '''
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example.com/">
<SOAP-ENV:Body>
<ns1:getData>
<ns1:id>123</ns1:id>
</ns1:getData>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
'''
response = requests.post('https://api.example.com/soap', headers=headers, data=body)
# XMLデータを解析する
root = ET.fromstring(response.content)
ns = {'ns1': 'http://example.com/'}
data = root.find('.//ns1:data', ns).text
# データを処理する
print(data)
```
------------------------------------------------------------------------
## DS-95 性質・関係性の把握 - 性質・関係性の把握 ⭐️ 🔥必須🔥
### Q.適切なデータ区間設定でヒストグラムを作成し、データのバラつき方を把握できる
```python=
import matplotlib.pyplot as plt
# Sample data
data = [
2, 4, 5, 6, 7, 8, 9, 10, 10,
11, 11, 11, 12, 12, 13, 14,
14, 14, 15, 16
]
# Set the number of bins and the range of the data
num_bins = 6
data_range = (min(data), max(data))
# Create the histogram
plt.hist(data, bins=num_bins, range=data_range)
# Set the x-axis label and the title of the plot
plt.xlabel('Data')
plt.ylabel('Frequency')
plt.title('Histogram of Data')
# Show the plot
plt.show()
```

- [Githubサンプルコード](https://github.com/jsakaguc/NCCEPOC/tree/main/define_skill/sample-95)
------------------------------------------------------------------------
## BZ-95 事業への実装 - 評価・改善の仕組み ⭐️⭐️
### Q.事業・現場へ実装するにあたりモニタリングの仕組みを適切に組み込むことができる
モニタリングは、実装したシステムやプロセスが正常に動作しているかどうかを監視するための重要な手段です。事業や現場に実装する際には、以下のような手順でモニタリングの仕組みを適切に組み込むことが重要です。
1. **監視対象の項目の明確化**
システムやプロセスの正常な動作を保証するために監視する項目を明確化し、監視項目を設定します。例えば、システムの稼働率、応答時間、エラー数、データの正確性などが監視項目となります。
1. **モニタリングツールの選定**
監視項目をモニタリングするためのツールを選定します。オープンソースの監視ツールやクラウドサービスの監視ツールなど、さまざまな種類のツールがあります。選定する際には、監視項目に合わせた機能を持つツールを選択することが重要です。
1. **監視項目のしきい値(指標)の設定**
監視対象の項目に対するしきい値を設定します。しきい値を超えた場合には、アラートが発生するように設定します。アラートの発生方法や通知先なども設定します。
1. **モニタリングの自動化**
監視ツールを使用して監視を自動化します。監視項目の監視周期やデータの収集、アラートの通知などを自動化することで、手動での監視作業を減らし、効率的に監視を行うことができます。
1. **モニタリング結果の分析と改善**
定期的に監視結果を分析し、問題があれば改善策を検討します。監視結果のログ解析や、アラートの発生パターンの分析などを行うことで、問題の早期発見や改善を行うことができます。
以上の手順を踏み、モニタリングの仕組みを適切に組み込むことで、システムやプロセスの正常な動作を確保し、問題が発生した場合には早期発見・早期対応が可能となります。また、モニタリングによって、システムやプロセスの改善点を把握し、さらなる効率化や品質向上につなげることができます。
* **監視項目に合わせた機能**
監視する項目に合わせた機能を持つツールを選択することが重要です。たとえば、システムの監視であれば、サーバーの稼働状況やアプリケーションの応答時間などを監視できるツールを選択することが必要です。
* **監視の拡張性**
将来的に監視項目を増やす場合に備え、ツールの拡張性があるかどうかを確認することが重要です。
* **アラートの通知方法**
アラートの通知方法は、監視ツールの重要な機能の一つです。アラートの通知先や通知方法が柔軟に設定できるかどうかを確認し、適切に設定することが必要です。
* **ログ解析機能**
監視結果のログ解析機能があると、問題発生時に原因を特定するのに役立ちます。
* **コスト**
監視ツールには、さまざまな価格帯のものがあります。機能や性能に合わせて選択することが重要です。
------------------------------------------------------------------------
# Quote
- [スキル定義委員会 from データサイエンティスト協会](https://twitter.com/jdss_skill)
<style>
.att0 {color: #eb4034;}
.att1 {color: #3465eb;}
.att2 {color: #69c976;}
</style>
<!-- <span class="att0"></span> -->