G検定単語帳 - AIの社会実装に向けて

BPR

企業などで既存の業務の構造を抜本的に見直し、業務の流れを最適化する観点から再構築すること。事業や顧客にとって真に価値のある工程のみを残し、本質的には無駄な工程を排除することを主眼とする。

企業内の業務プロセスを、顧客に対する価値を生み出すための活動の積み重ねとして再設計し、それに合わせて職務や組織、業務手順、規則などを刷新する。組織内部の都合によって生じている本質的には無意味な業務や、歴史的経緯などにより重複している組織や業務は抜本的に取り除かれ、合理化、効率化が図られる。

現代の大企業などの組織は事業が高度に分業化され、部門ごとに部分最適に陥りがちである。顧客が求める価値や組織の目的に何ら貢献しない内部的な書類や作業が産み出され、惰性で放置され続けることで、事業の効率やスピードを毀損している。

業務改善などの手法は既存の組織や業務を前提に、その効率化や省力化、自動化などを企図するが、BPRの発想では、無価値な作業は効率化しても無価値であることに変わりはないため、組織や業務プロセス全体を再考して取り除く必要があると考える。

BPRを成功させるには、経営トップと組織全体のコミットメント、徹底的なビジネスニーズ分析と業務プロセスの練り込み、適切なITインフラの導入とITを前提とした業務設計、変革を妨げる組織文化や従業員の抵抗意識など「人」の要因に対する丁寧な対応、継続的な改善などが鍵となる。

BPRは1990年にマサチューセッツ工科大学(MIT)のマイケル・ハマー(Michael M. Hammer)教授が提唱し、1993年に同氏とジェームス・チャンピー(James A. Champy)氏の共著「リエンジニアリング革命: 企業を根本から変える業務革新」(原題『Reengineering the Corporation: A Manifesto for Business Revolution』)で注目を集めた。

CRISP-DM

データ分析プロジェクトを体系的に進めるための業界横断的な標準モデル。業務上のデータ分析のプロセスを標準化したもので、ビジネス理解からモデル運用までの工程を整理し、再現性と効率性を高める。

業種や職種、データの種類や分析の目的を問わず、様々な分野や業界で利用できる汎用的な分析プロセスの標準を定義している。一度の分析を行うための直線的なモデルではなく、必要に応じて前の段階に戻ったり、新たに得られた知見をモデルに反映するといった継続的、循環的な活動を想定している。主要な段階(フェーズ)として以下の6つが定義されている。

  1. ビジネス理解(business understanding) … ビジネス観点から分析の目的や課題を明確化する。
  2. データ理解(data understanding) … 必要なデータを収集し、探索的な解析で特徴を把握する。
  3. データ準備(data preparation) … 欠損値の処理や特徴量生成など、データを分析に適した形式に加工する。
  4. モデリング(modeling) … 分析に適したモデルやアルゴリズムを選択し、データに基づくモデルの構築を行う。
  5. 評価(evaluation) … 構築したモデルが当初の目的をどの程度満たしているか評価し、展開可否を判断する。
  6. 展開(deployment) … モデルを実際の業務環境に組み込み、継続的に利用できる体制を整える。

CRISP-ML

機械学習プロジェクトを体系的に進めるための業界横断的な標準モデル。業務に用いる機械学習モデルの構築・運用のプロセスを標準化したもので、ビジネス理解から運用・改善までの工程を整理し、再現性と効率性を高める。

データ分析のプロセス標準である「CRISP-DM」を基に、機械学習固有の要求を組み込んで拡張したものである。業種や職種、データの種類や分析の目的を問わず、様々な分野や業界で利用できる汎用的な分析プロセスの標準を定義している。

一度の機械学習モデル導入を行うための直線的なプロセスではなく、必要に応じて前の段階に戻ったり、新たに得られた知見をモデルに反映するといった継続的、循環的な活動を想定している。主要な段階(フェーズ)として以下の6つが定義されている。

  1. ビジネスとデータの理解(business and data understanding) … ビジネス目標を設定し学習データを収集する。
  2. データ準備(data engineering/preparation) … データの加工や調整、特徴量選択などモデル作成の準備をする。
  3. 機械学習モデル作成(ML model engineering) … モデルの種類やアルゴリズムを選択し、データにより学習を行う。
  4. 機械学習モデル評価(ML model evaluation) … モデルの性能を検証し、要件を満たすか判定する。
  5. モデル展開(model deployment) … 本番環境へモデルを展開し、利用者が使用可能な状態にする。
  6. 監視と保守(monitoring and maintenance) … 実環境でのモデルの性能を計測し続け、必要に応じて新しいデータの収集や再学習を実施する。

Docker

Linux上で独立した別のLinuxシステムを起動するコンテナ型仮想化を利用するための管理ソフトウェアの一つ。Docker社(旧dotCloud社)が開発し、オープンソースソフトウェアとして公開されている。

コンテナ型の仮想化では仮想的な物理マシンの構築は行わず、元のオペレーティングシステム(OS)環境上に隔離されたエリアを作り、あたかも新規にOSを導入・起動したかのように新たなソフトウェア実行環境を作り出す。DockerはLinux上に隔離された環境を作り出し、元の環境に影響を及ぼさずにソフトウェアの導入や実行ができる。

OSの設定やアプリケーションソフトの導入の済んだLinux環境を丸ごと実行イメージとして保存する機能(Dockerfile)があり、別のコンピュータ上のDockerに持ち込んでそのまま実行することができる。

ソフトウェア開発時にDockerを利用すれば迅速にテスト環境やステージング環境を用意することができ、完成したイメージをそのまま配布パッケージとして利用者に提供することもできる。複雑な導入・設定作業を省略し、元の環境との違いなどを意識しなくても素早く簡単にソフトウェアを導入できる。

Docker自身はLinux環境の構築・実行に特化しているが、Docker for Windows/macOSではそれぞれのOS標準の仮想化機能(Hyper-Vなど)を用いて仮想マシンを立ち上げ、極めて軽量なLinuxディストリビューション(標準ではAlpine Linux)によりLinuxコンテナを起動することができる。

Jupyter Notebook

Webブラウザ上でプログラムコード、実行結果、説明文、数式、図表、画像などを一つの文書として管理・編集することができる開発環境。オープンソースのWebアプリケーションとして提供されており、主にデータサイエンスや機械学習の分野で教育や研究に活用されている。

一つの文書が「セル」(cell:細胞)と呼ばれる単位の組み合わせで構成される。セルには、Pythonなどのソースコードを記述して即座に実行できる「コードセル」と、Markdown形式で説明や図、数式を記述できる「Markdownセル」の二種類がある。プログラムと実行結果、その解説などを一つの文書として保存でき、単一のファイルとして公開・配布することもできる。

コードセルを実行すると、すぐ下に計算結果やグラフ、表などプログラムからの出力内容が表示される。データ分析のプロセスを試行錯誤しながら探索的に進め、その過程を視覚的に分かりやすく記録することができる。複雑な分析プロセスを他の利用者と共有したり、探求の記録として後からすぐ再現できる形で保存しておくことができる。

標準のファイル形式は「.ipynb」という拡張子で保存され、中身はJSON形式となっている。Jupyter Notebook自体はWebアプリケーションであり、利用者のローカル環境にWebサーバを構築して使用するが、「Google Colaboratory」のようなクラウドサービスも提供されており、サーバを用意しなくても手軽に利用できる。

もともとPythonを対話的に実行する「IPython」というソフトウェアの開発プロジェクトから派生したもので、ファイル拡張子にその名残りが見られる。プログラミング言語としてPythonが選ばれることが多いが、R言語やJuliaなど他の言語にも対応しており、「Jupyter」の名称はJulia、Python、Rを繋げたものが由来とされる。「カーネル」と呼ばれる実行エンジンを追加することで数十の言語に対応させることができる。

機械学習の分野では、データの読み込み、前処理、モデルの構築、訓練、評価までの一連の作業を、一つの文書内で完結させることができる。対話的な実行環境であるため教育にも向いており、様々な分野でコードと解説を一体化した資料が教材やチュートリアルとして配布されている。

MLOps

機械学習モデルの開発、学習、評価、運用環境への展開、監視、改善と再展開といった一連のプロセスの標準化と自動化を進め、機械学習システムを安定して継続的に提供し続ける取り組み。

企業内で利用するソフトウェアの開発と運用を統合したプロセスである「DevOps」を機械学習(ML:Machine Learning)システムに適用した概念である。企業内で利用する機械学習モデルを継続的に改善しながら安定的に運用することを目的とした実践を意味する。

機械学習モデルと関連するプログラムコード、学習データを統合的に管理し、プログラム開発、モデルの学習、検証や評価、実運用環境への展開(デプロイ)、監視といった一連の作業を効率よく継続的に実施する仕組みを整える。

機械学習特有の課題として、展開後のデータの変動やモデルの劣化といった状況に対処する必要がある。モデルは時間の経過と共に、実世界側の状況の変化などによって「内容が古くて役に立たなくなる」など予測精度が低下が生じるため、展開後も性能を継続的に監視し、閾値を下回ったら再学習を行うといったプロセスを構築する必要がある。

ソフトウェア開発の効率化に用いられる「CI/CD」(継続的インテグレーション/継続的デプロイ)の考え方をデータを用いた学習プロセスや評価プロセスにも適用し、関連するツールを用いて自動化を進めることで、継続して安定的に機械学習モデルの改善と再展開を進めることができる。

PoC

新しい概念や理論、原理などが実現可能であることを示すための簡易な試行。一通り全体を作り上げる試作(プロトタイプ)の前段階で、要となる新しいアイデアなどの実現可能性を示すためだけに行われる、不完全あるいは部分的なデモンストレーションなどを意味する。

新たな発見や技術、今までにないアイデアや手法、あるいは既知の要素についての試されたことのない組み合わせについて、机上の理論や構想に留まらず、具現化や実用化、応用、導入などが可能であることを実地で検証するプロセスを指す。

PoCは原理が実装可能であることを示し、計画の次の段階への進行や投資の可否を関係者が判断することを目的に行われる。成果物は核心部分のみのシンプルな構成であり、それ自体を元に実際の製品の試作品や完成品が作られることは少ない。

ビジネス上のプロジェクトの場合、コストや費用対効果、現状や他社との比較といった商業的な価値の検討はPoVなど別の工程に分けて行うことが多いが、これも含めてPoCとして実施する場合もある。

PoCは先端的な科学技術研究や工業製品の研究開発、大規模な商業プロジェクトで行われ、特に、基礎とする理論や構成要素が複雑、巨大で机上の検証では不十分なもの(航空機開発など)、実地での試行以外で効果や影響などを確かめるのが難しいもの(新薬など)、現物には多大なコストと期間が必要なため小規模な実証で出資者や関係者の理解を得る必要があるもの(映画製作など)で行われる。

ITの分野では、業務への新しい機器やシステムの導入、システム開発への新技術や新手法の適用、コンピュータセキュリティにおいて新たに発見された攻撃手法が実地で機能することを示す実証プログラム(PoCコード)などでよく知られる。

Python

簡潔で読みやすい文法が特徴的な汎用の高水準プログラミング言語の一つ。いわゆるスクリプト言語の草分けの一つで、各種OS向けに実行環境が移植され広く普及している。近年では初学者向けの学習用途、統計処理やAI関連のプログラム記述用途として用いられることが多い。

最初のバージョンは1991年にオランダのグイド・ヴァン・ロッサム(Guido van Rossum)氏によって発表された。初期にはOS操作の自動化などで活躍し、Webが普及するとWebアプリケーションの開発環境としても広まった。近年ではデータ処理や統計解析、AIシステム開発などで人気が高いほか、プログラミング初心者の学習用としてもよく用いられる。

標準の言語処理系(CPython)にはソースコードを読み込みながら同時に実行するインタプリタが含まれ、コンパイルやビルドなど手間や時間のかかる作業を省略して記述したプログラムを即座に実行してみることができる。この処理系はオープンソースソフトウェアとして公開されている。

主な特徴

基本的な特徴としては、豊富なデータ型とコンテナ型、動的型付け、ガベージコレクション、Unicodeによる多言語対応、プログラムのモジュール(部品)化による他のプログラムへの容易な組み込み、プログラムの仕様の文書化(ドキュメンテーション)を支援する機能などがある。

当初はC言語風の記法を基本とする手続き型言語とオブジェクト指向言語の特徴を備えたスクリプト言語として設計されたが、その後、関数型言語の要素の多くを取り入れ、様々なスタイルのプログラミングが可能なマルチパラダイム言語となっている。

ユニークな特徴としては、多くの他の言語では人間にとってプログラムを読みやすくするために便宜的に行われるインデント(字下げ)を言語仕様上の構文の一つとして採用しており、インデントの深さでブロックの範囲やブロック間の入れ子構造(親子関係)を表現する。

ライブラリと実行環境

言語自体の文法や語彙、記法な最小限のシンプルなものに抑えられているが、対照的に、極めて広範囲の分野に渡り豊富な機能を提供する標準ライブラリが用意されている。パッケージ管理システムも標準の言語処理系に含まれており、開発者が望む開発環境を素早く構築できるようになっている。

用途の広がりに合わせて他の言語や環境との連携機能も発展しており、Pythonからアクセスできない低レベルの機能をC言語で記述して拡張モジュールとして組み入れる仕組みが提供されているほか、Javaライブラリを利用できる実行環境の「Jython」や、Microsoft .NET環境で.NET Frameworkの機能を利用できる「IronPython」などの処理系もある。

Web API

HTTPなどのWeb技術を応用して、あるコンピュータで動作しているソフトウェアの機能を、ネットワークを通じて他のコンピュータから利用できるようにする仕組み。

API(Application Programming Interface)とは、コンピュータプログラムが提供する機能を他のプログラムから呼び出して利用するための規約で、処理要求や応答のデータ形式、双方のやり取りの手順などで定義される。

Web APIはWebサーバ上で動作しているプログラムが外部に機能を提供するためのAPIで、Webサイトに別のサイトの提供する機能やデータを組み込んだり、アプリケーションソフトからWeb上で提供されているサービスの機能やデータを利用するために用いられる。

Web APIで機能を公開しているサーバに対して、インターネットなどを通じて依頼内容をHTTPリクエストの形で送信すると、処理結果がHTTPレスポンスの形で送られてくる。呼び出し側が挙動や入力データを指定する引数はURLパラメータ(クエリ文字列)などの形でURLの一部として指定することが多い。

送受信されるデータの形式はAPIの種類や目的によって様々だが、WebコンテンツやWebサービスで馴染み深いHTMLやJSON、XML、プレーンテキストなどがよく用いられる。応答として画像ファイルやPDFファイル、CSVファイルなど、内容を特定形式のファイルにまとめて送る仕組みもよく見られる。

RESTful APIとSOAP

Web APIの構成法としてよく知られるものに「SOAP(Simple Object Access Protocol/ソープ)と「REST」(Representational State Transfer/レスト)がある。

SOAPはXMLとHTTPを基本として、Web APIで用いるメッセージの形式や通信手順(プロトコル)などを規定した標準規格で、用途や目的ごとに詳細な拡張仕様が規定されている。2000年代初頭にWebサービス実装の有力な規格として期待されたが、仕様の複雑さや規模の大きさが敬遠されあまり普及しなかった。

RESTはシンプルさを重視するAPIの設計原則で、セッションなどの状態管理の仕組みを持たない(ステートレスである)など、4つの原則で構成される。これをWeb APIの設計に適用したものを「RESTful API」(レストフルAPI)あるいは「REST API」という。

RESTfulなWeb APIではHTTPやURLなどWeb技術の仕様をなるべくそのまま取り込み、HTTPメソッドによる動作の指定、HTTPステータスコードによる結果の通知、URLだけで機能や対象の一意な指定や識別を行う、実行状態を保存せず同じ入力に対しては常に同じ出力を返すなどの特徴がある。

REST自体は原則を示しているだけで個別の用途に応じた仕様の策定などは開発者に任されるため、似た目的のためにそれぞれ互換性のないAPI仕様が乱立するなどの問題はあるものの、仕様がシンプルで開発や利用が容易なことから広く普及している。

アジャイル

ソフトウェアを迅速に、また、状況の変化に柔軟に対応できるように開発する手法の総称。短いプロセスを何度も反復して次第に全体を組み立てていくアプローチの手法が多い。

従来から主流であるウォーターフォール型などの開発プロセスでは、要件定義、設計、実装、テストなどの各工程を順番に一度だけ行なうことを前提にしているが、アジャイル開発では一度ですべてを作ろうとせずに、当初は最低限の機能だけを持ったソフトウェアの完成を目指し、各工程を迅速に進める。「アジャイル」(agile)には、俊敏な、しなやかな、素早い、などの意味がある。

とりあえず動作するソフトウェアを元に、開発チーム内あるいは顧客とチームが密接に議論を交わし、変更する箇所や追加する機能を決め、もう一度各工程を反復する。このサイクルを短い周期(多くの手法では数週間以下)で何度も繰り返すことにより徐々にソフトウェアの完成度を高めていく。

適用範囲

アジャイル開発はどのような開発プロジェクトにも適しているわけではなく、一ヵ所に集まった10人程度までの少人数の開発チームが、インターネット関連など変化の速い分野や、最初からはっきりとした要件を定義するのが難しい案件のソフトウェアを開発する際に最も適しているとされる。

一方、開発途上で要件がほとんど変化しないことが最初から分かっている場合や、大人数や大規模なプロジェクト、不具合が人命や財産に大きく関わるような社会的に重要なシステムなどの開発には適さないとされる。

代表的な開発手法

どのような条件を満たせばアジャイルであると言えるのかという厳密な定義や要件が決まっているわけではないが、2001年に著名な軽量開発手法の提唱者が集まって共同で策定した「アジャイルソフトウェア開発宣言」の主旨に適う手法が該当するとされる。

代表的な手法として、「エクストリームプログラミング」(XP:eXtreme Programming)や「Scrum」(スクラム)、「Crystal」(クリスタル)、「フィーチャ駆動型開発」(FDD:Feature Driven Development)、「適応的ソフトウェア開発」(ASD:Adaptive Software Development)、「リーンソフトウェア開発」(LSD:Lean Software Development)などがよく知られている。

ウォーターフォール

システム開発の手順を模式化したモデルの一つで、設計やプログラミングといった各段階を一つずつ順番に終わらせ、次の工程に進んでいく方式。最も古典的な開発モデルの一つで現代でも広く普及している。

要件定義、外部設計、内部設計、開発(実装)、試験、本番稼働(納品)、運用といった各工程を時系列に沿って順に並べ、一つ前の工程が終わったらその成果物をもとに次の工程を始める、という単純なルールで進めていく方式である。滝(waterfall)を水が流れ落ち、逆戻りしないという意味合いでこのように呼ばれるようになった。

各工程は一度限り行われることが期待され、次の工程へ進む前に成果物の品質が厳しくチェックされる。それでも何らかの問題や状況変更が起き、前工程をやり直す必要が生じる場合もあり、これを「手戻り」という。

工程管理や見積もりのしやすさ、分かりやすさから、現代でも特に大規模開発で広く用いられている。よく指摘される問題点として、設計前に要件が、実装前に設計が完全に固まり、詳細かつ明確に定義され、後から変更されないという前提が現実離れしており、しばしば工程管理上の問題や依頼主とのトラブルの原因になっていると言われる。

ウォーターフォールモデルとは異なる開発プロセスのモデルとして、「スパイラルモデル」や「インクリメンタルモデル」「プロトタイピングモデル」などが提唱されている。これらは一度で全体を作ろうとせずに、少しずつ完成度を高めていく方法論を取っている。また、現代では「アジャイル開発モデル」と総称される反復的な開発手法が普及し、小規模なチームで迅速にソフトウェア開発を行う場合に適用されている。

オープンイノベーション

企業などにおける研究開発や新事業創出の方法論の一つで、組織内で秘密裏に進めるのではなく、外部の企業や研究機関、公的機関、消費者などを巻き込んで、協力・連携して取り組むこと。

社会に変革をもたらすような斬新で革新的な技術や製品、サービス、ビジネスモデル、社会的な仕組みを生み出す活動(あるいは、その成果である新技術や新ビジネスなど)を「イノベーション」(innovation)という。

従来は企業などの組織が単独で研究開発や新規事業開拓などに取り組み、その成果を新製品や新サービスなどの形で実装することでイノベーションを実現してきた。この方式を「クローズドイノベーション」(closed innovation)という。

オープンイノベーションでは対照的に、外部の企業や研究機関、公的機関、既存顧客、消費者などを巻き込んで、各自の知識や技術、技能、知的財産、ノウハウ、アイデアなどを持ち寄り、共通のテーマについて共同で創発的な活動に取り組むことでイノベーションを引き起こすことを企図する。

これにより、自社内では得られない新しい発想やアイデアの取り込み、自社単独では成し得ない水準の製品やサービスの実現、外部との相乗効果による予期し得ない革新などの効果が得られることが期待される。共同作業による開発コストや期間の削減が見込める場合もある。

ただし、意図しない営業秘密やノウハウが他社に流出したり、知的財産を公開することで競争上の優位を失ったり、責任の所在が曖昧になり大した成果が得られないまま時間とコストを浪費してしまったり、協働する主体間で目的や理念が十分に共有されず「同床異夢」になるなどのリスクや短所もある。

クラウド

まとまった計算資源を通信ネットワークを介して遠隔から利用するシステム形態のこと。また、利用側から見て、ネットワークを通じて遠隔から計算資源を提供するシステムなどのこと。

従来は手元のコンピュータに導入して利用していたようなソフトウェアやデータ、あるいはそれらを提供するための機器や回線といった技術的な基盤を、インターネットなどのネットワークを通じて必要に応じて利用者に提供する方式を意味する。

IT業界では、システム構成図などを描く際に通信回線の向う側にある外部のネットワークやコンピュータ、情報システムなどをまとめて雲(cloud)の形の絵記号で記す慣例があることから、このように呼ばれるようになった。これと対比して、従来型の自前施設内に設置した機器やシステムを指す場合は「オンプレミス」(on-premises)という。

提供方式

サービスの提供者は大規模なデータセンターなどに多数のサーバコンピュータや通信機器などを用意し、遠隔からインターネットなどの広域回線網(WAN)を経由して契約者にシステムを操作させる。利用者は登録後すぐに用意されたシステムの提供する機能や資源にアクセスして使用することができる。

利用者は機器やソフトウェアの「買い切り」をせず、通信回線のように利用期間や利用実績に応じて料金を支払いサービスを利用する。オープンなサービスの場合はネット環境さえあればどのような場所や端末からでも自分用の操作画面やデータにアクセスできる。

課金体系

一般消費者向けサービスの場合は、登録や基本機能の使用を無料として、追加機能や容量に毎月一定額を課金するフリーミアムモデルを取るものが多い。

法人向けサービスの場合は、月額基本料金に使用実績(外部へのデータ転送量など)に応じた従量課金を組み合わせた料金体系のサービスが多い。

企業などで情報システムを運用する場合、自社内設置(オンプレミス)だと固定的に設備(その多くは税法上の資産)や人員を抱えることになるが、金額が同水準でもサービス料の形で支払う方が財務・会計の都合上好ましい場合も多い。

パブリッククラウドとプライベートクラウド

クラウドを運用するシステムのうち、広く一般の利用に供され、インターネットを通じてオープンにアクセスできるようになっているものを「パブリッククラウド」(public cloud)という。

契約者はインターネットを通じて事業者のサーバにアクセスして設定や管理などを行い、自らの業務のため、あるいは自らの製品やサービスの顧客のためにシステムを運用する。一般消費者向けサービスや、Webサイトやネットサービスの公開・提供のために用いられるクラウドサービスなどはこの形態を取る。

一方、特定のネットワークや登録利用者からのアクセスのみを受け付け、インターネットや公衆網からは切り離されて運用されているものを「プライベートクラウド」(private cloud)という。

企業や官公庁などが内部的に使用する情報システムの運用などに適した形態で、オンプレミス型の従来システム同様、組織内の施設や設備を用いて内部ネットワーク上に構築される。クラウド事業者が専用回線やVPNを経由して外部から切り離されたクラウド環境を提供する場合もあり、「仮想プライベートクラウド」(virtual private cloud)等と呼ばれる。

SaaS/PaaS/IaaS

クラウドは提供する機能や資源の種類により、大きく分けて「SaaS」「PaaS」「IaaS」の三つに分類することが多い。

「SaaS」(Software as a Service:サービスとしてのソフトウェア)は特定の機能を持つアプリケーションソフトをWebブラウザなどを通じて遠隔から操作できるようにしたサービスを指す。従来、オペレーティングシステム(OS)の一部として実装されてきた機能や、パッケージソフトなどの形で販売・公開されていたものをインターネットを通じてサービスとして提供する。オンラインストレージやWebブラウザで使用できるオフィスソフトなどが該当する。

「PaaS」(Platform as a Service:サービスとしてのプラットフォーム)はソフトウェアの実行環境を遠隔から操作できるようにしたサービスを指す。コンピュータにOSやミドルウェア、プログラミング言語処理系などを導入済みの環境を契約者に遠隔から操作させるサービスで、利用者は必要なアプリケーションを導入して使用する。従来のホスティングサービス(レンタルサービス)に近く、ネットサービス運用などのために用いられることが多い。

「IaaS」(Infrastructure as a Service:サービスとしてのインフラ)は仮想化されたコンピュータ自体を遠隔から操作できるようにしたもので、利用者はOSなどのソフトウェアをすべて自前で用意して導入・運用する。ハードウェアに近い階層から自由に操作・設定できるようにしたサービスで、企業などの情報システム運用などに適している。

“cloud” と “crowd”

日本語のカタカナ表記では同音異義語になる単語として “crowd” があり、こちらは群衆、大衆、観衆、人混み、押し寄せる、群がる、などの意味がある。Webサイトやネットワークサービスなどにおける「不特定多数の利用者の集団」などといった意味合いで用いられることが多い。

相互に繋がりのない(または薄い)利用者が少しずつ情報を出し合って全体として有益な知見を生み出したり、労力や資金を出し合って大きなプロジェクトを形成するといった文脈で用いられるが多い。「クラウドソーシング」(crowd sourcing)や「クラウドファンディング」(crowd funding)などの「クラウド」はこの “crowd” である。

データサイエンティスト

統計解析や数理解析、機械学習、プログラミングなどを駆使して大量のデータを解析し、有用な知見を得る職業あるいは職種。

企業の事業活動の電子化、コンピュータ化が進み、取得可能なデータや実際に蓄積されるデータの種類や量は飛躍的に増大したが、IT部門はデータの記録や管理のみ、ビジネス部門は表計算ソフトでの集計など定型的な利用のみの場合が多く、十分な利活用がされないまま死蔵される例が多かった。

データサイエンティストは様々な意思決定上の局面やビジネス上の課題を認識し、データによって立証可能な仮説やモデルを組み立て、蓄積された実際のデータ群に対して様々な処理手法や解析手法を適用することで、現実の課題解決に資する有用な知見を提供する。

具体的なスキルとして、対象領域への基本的な理解やビジネス部門との折衝、解析結果のドキュメンテーションやプレゼンテーションといったビジネス領域のスキル、統計や数理解析、線形代数、機械学習、データモデリングなどの数理科学やコンピュータ科学の知識、データベース操作やデータ形式の理解、プログラミング、データ加工・変換・処理の技法といったエンジニアリング領域の技能が総合的に求められる。

日本では2011年頃からビッグデータ活用の重要性が叫ばれるようになるなか、データ活用を推進する具体的な人材像として2013年頃から「データサイエンティスト」という職種が認識され始めた。十分な技能を持ったデータサイエンティストは常に人材不足であるとされ、今後もそのニーズは高まっていくと予想されている。

大学などが専門のコースやカリキュラムを編成する事例が見られるほか、日本数学検定協会の「データサイエンス数学ストラテジスト」やデータサイエンティスト協会の「データサイエンティスト検定」、統計質保証推進協会の「統計検定 データサイエンス基礎」など民間資格の認定制度も相次いで開始されている。

アノテーション

「注釈」という意味の英単語で、ITの分野ではデータやプログラムの中に特殊な記法を用いて埋め込まれた付加情報のことをこのように呼ぶ。特に、他の人へ情報を伝達するためではなく、コンピュータが解釈して処理に反映するために埋め込まれる文字データなどを指すことが多い。

プログラミングでは、ソースコード中に登場する要素(クラスやメソッドなど)に対して、処理系に伝達したい付加的な情報(メタデータ)を注記する仕組みのことをアノテーションという。

「このメソッドはテスト用である」「ここでコンパイラは警告を出してはならない」「このメソッドはオーバーライドである」などの情報を付記し、コンパイル時や実行時に参照させることができる。

アノテーション自体は実行コードの一部とはならず、コンパイラなどの言語処理系に指示を与えるためだけに用いられる。アノテーションにアノテーションを加える「メタアノテーション」(meta-annotation)の記法が用意されている言語もある。

ソースコード中に注釈を記入する仕組みにはコメント(comment)もあるが、これは主に他の開発者など人間に情報を伝えるために自然言語で書かれるもので、コンパイルなどの過程で削除され、処理系の動作には影響を及ぼさない。

オープンデータセット

誰でも自由に入手して利用できるように公開されているデータセット。統計解析や機械学習モデルの訓練や評価に広く利用されている。

学術機関や公的機関、企業などがインターネットなどを通じて公開しているデータ群で、文字(テキスト)、画像、音声、動画、表形式など、様々な形式のデータが提供されている。統計解析や機械学習に役立つよう、自然言語処理に用いる文字データであれば注釈を加えたコーパスに整形し、画像認識に用いる画像データであれば写っているものを示すラベルを付加するなど、一定の形式に加工されている。

クリエイティブ・コモンズ・ライセンス(CCライセンス)など、特定の利用許諾契約(ライセンス)に基づいて提供される場合が多く、添付文書でデータの利用や改変、再配布、商用利用の可否などの条件が規定されている。「パブリックドメイン」(public domain)が宣言されている場合は一切の権利が放棄された状態であり、ライセンスの制約なく自由に利用することができる。

機械学習モデルの研究者や開発者にとっては、オープンデータセットを用いることで手間や時間のかかるデータの収集や分類、ラベル付け(アノテーション)の工程を省略し、すぐにモデリングや学習に入ることができる。著名なオープンデータセットの中には、その分野の開発者がそのデータセットを用いて検証を行うことで、異なるモデルを共通の尺度で評価するベンチマークとしての役割を果たしている場合がある。

コーパス

自然言語の研究などのため、実際に書かれた文章、話された言葉の用例を大量に収集したデータベース。

日本語、英語など人間が記録や意思疎通に用いる自然言語を対象に大量の文例を集め、検索用の索引、品詞や構文の注釈など付加的な情報を与え、検索や分析などに利用しやすいよう一定の構造や形式で集積したデータ集合を指す。

「書き言葉コーパス」「話し言葉コーパス」といったように目的に応じて特定の種類の文例のみを集めたものもある。文字データとして蓄積したものが多いが、話し言葉を実際に朗読、発話して音声として録音し、付加データによって整理した「音声コーパス」も存在する。

言語学の研究のために以前から作られてきたが、近年ではコンピュータによる自然言語処理(NLP:Natural Language Processing)に用いるために電子化された大規模コーパスも整備されている。これを機械学習システムに学習データとして与え、AI(人工知能)が用いる言語モデルを構築する研究も進んでいる。

データリーケージ

機械学習モデルの訓練時に、学習データに本来は利用すべきではないデータが混入してしまうこと。テスト時に性能を過大評価してしまい、本番環境での性能が見込みより大幅に低下する事態につながる。

機械学習モデルを訓練するには学習データの入力を与えて予測させ、正解との誤差を計測してそれを正すようにパラメータを補正していく。この学習データとして本来利用すべきでないデータが意図せず混入してしまうことで、未知データに対する予測性能が劣化してしまうことがある。

例えば、用意したデータを学習用と検証用に分ける際、検証用のサンプルが意図せず学習用に混じってしまう場合がある。これを「トレインテスト汚染」(train-test contamiation)と呼ぶ。検証用のサンプルの情報を取り込んで学習したモデルは、検証時に「正解を知っている」状態でテストを受ける状況となり、(カンニングできない)本番環境の真の未知データに対しては正しい予測ができなくなってしまう。

また、データに時系列や因果関係がある場合、予測を行う時点では利用できないはずの特徴量を与えて学習させてしまう場合がある。これを「ターゲットリーケージ」(target leakage)と呼び、未来や結果の情報から過去や原因を予測するといった錯誤が生じる。

例えば、顧客がローンを滞納するかどうかを予測するモデルを構築する際、「滞納後に発行された督促状の記録」を特徴量として含めてしまうと、モデルは「督促状がある」という情報に強く依存してしまい、実環境で必要な他の特徴からの予測能力が損なわれる。督促状は滞納という事象の後に発生する情報であるため、予測には使えない。

ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる