データを繋げる Web/REST API
AI/Machine learning やデータサイエンスの盛り上がりっていますが、それらを陰で支えている技術の一つとして Web API があります。どういった解析をするにしてもまずはデータが集められないと始まりません。ご存知のとおり、有名なSNS (Twitter, Facebook, Qiita... )には Web API*1/REST API*2 が実装されている場合も多く、プログラミングすることで投稿の自動化や、データの取得が可能です。データ解析するのに用いられるような有名どころのプログラミング言語にはHTTP関連のライブラリが充実していますし、個別のSNSに特化したようなライブラリまであったり、文字列データの処理に長けているスクリプト言語もあります。これらを利用した実装例は比較的容易に発見することが可能で、実際に簡単なデータを取得するだけのプログラムをPythonで実装すれば数十行程度で動作します。小難しい処理はライブラリ任せとなるので、Web 界隈の用語さえ慣れてしまえば問題なくデータの取得が可能となります。
特に AI ( Deep learning ) 界隈では Python ライブラリが充実しており、既にかなり充実したエコシステムが形成されています。環境を整えるとすぐにデータ解析を実行でき、AI による分類や学習を実装できます。とはいえ、確かに余り馴染みがない場合にいきなりプログラムをしても心理的なハードルが高いので、Web API にどうやって接続しようか迷われるかもしれません。API と言っていますが、単なる HTTP(S) を利用したアクセスなので、URI さえわかってしまえばブラウザでも試行可能です。端末上で簡単に試してみるだけであれば、プログラミングをする必要はなく、Linux のコマンドラインから curl コマンドで簡単にデータを取得することができます。
例. openBD)
curl "http://api.openbd.jp/v1/get?isbn=4822298426"
サンプルのAPI は書籍のIDである ISBN 番号から、書籍の詳細を取得できるもの*3です。 取得できたデータはJSON (JavaScript Object Notation) 形式*4と呼ばれているもので、JavaScript のデータ形式に近くWeb アプリケーションから扱いやすいデータ形式です。 構造は配列"[…]"とハッシュ"{name: value}" の入れ子であり、
こんな感じになります。
とは言え、curl で取得できたJSON は改行コードが無いことも多く、それはターミナル上だと確認にくいものです。 そんな時はjson_pp/json_reformat がインストールされていればパイプ(|)でつなげて、
例. json_reformat)
curl "http://api.openbd.jp/v1/get?isbn=4822298426" | json_reformat
と実行すると、読み易くなります。さすがにデータの量が多いと一画面に収まらず手に余りますが、雰囲気は味わっていただけるかと思います。
上記の例はオープンなプロジェクトですが、設計の現場でもバグ管理をするためにBTS (Bug Tracking System) の一つである Redmine や継続的インテグレーション (CI: Continuous Integration) ツールのJenkins などを導入されている職場も多くなっていると思います。これらのツールには当然のように Web API が実装されていて、これらの API を使って Redmine や Jenkins, ソースコード管理用に使われている SVN などのレポジトリを連動させて、人間の介在無しに多くのことを自動化することのできる世界があります。更に、そこに蓄えられている貴重な設計に関するデータをプログラムにより解析することも可能で、設計や検証を客観的な統計データとして扱えるようになります。
論理回路の設計に目を向けると、検証を客観的なデータで説明したり、評価するためにコードカバレッジや機能カバレッジを取得したりしていると思います。これら設計、検証に使っているデータをBTSデータと共に解析し、チャートにすることで、実施している検証の効率や、振り返りを感覚ではなく、データに基づく解析に移行できると思います。これはまさにデータサイエンスで、AI/Machine learning につながる道筋となります。
弊社 Cadence® vManager™ に実装されている Web API をうまく利用することで、自分で考えたフローをプログラミングに落とし込むことが以前よりも容易となり、リグレッション結果も自在に取得可能です。実際に Jenkins と連携するためのプラグインを公開しています*5。
AI/Machine learning を活用した検証環境はもう現実になってきています。皆さんも新しいデータドリブンの世界に踏み込んでみませんか?
*1 Web API : https://en.wikipedia.org/wiki/Web_API
*2 REST API : https://ja.wikipedia.org/wiki/Representational_State_Transfer
*3 OpenBD : https://openbd.jp/
*4 JSON : https://www.json.org/json-ja.html
*5 Jenkins Plug-in : https://wiki.jenkins.io/display/JENKINS/Cadence+vManager+Plugin
フィールドエンジニアリング&サービス本部
システム&ベリフィケーション
加藤木 聡
この記事に関する問い合せ先:
コーポレート・マーケティング部
E-mail:cdsj_info@cadence.com
Latest Issue
Archive
2023 Issues
2022 Issues
2021 Issues
2020 Issues