(57)【要約】【課題】ブロック基盤データ分析方法およびシステムを提供する。【解決手段】コンピュータによって実行されるデータ分析方法であって、プログラミング言語基盤の関数および命令語が属性に応じて分類された複数のグループを対象として、グループ別に互いに異なる形状にマッピングされたブロックを提供し、提供された前記ブロックに対するユーザ選択が入力されるためのユーザインタフェースを提供し、前記ユーザインタフェースで選択されたブロックたちを組み合わせたユーザ作成ブロックを基盤としてデータ分析フローを生成し、前記ユーザ作成ブロックを基盤としたデータ分析フローを言語変換エンジンによって前記プログラミング言語基盤のデータ分析コードに変換し、変換された前記データ分析コードに基づいてデータ分析を実行することを含む。【選択図】図３
2018190400.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実行されるデータ分析方法であって、
プログラミング言語基盤の関数および命令語が属性に応じて分類された複数のグループを対象として、グループ別に互いに異なる形状にマッピングされたブロックを提供し、
提供された前記ブロックに対するユーザ選択が入力されるためのユーザインタフェースを提供し、
前記ユーザインタフェースで選択されたブロックを組み合わせたユーザ作成ブロックを基盤としてデータ分析フローを生成し、
前記ユーザ作成ブロックを基盤としたデータ分析フローを言語変換エンジンによって前記プログラミング言語基盤のデータ分析コードに変換し、
変換された前記データ分析コードに基づいてデータ分析を実行すること
を含む、データ分析方法。
【請求項２】
前記ブロックは、ソース（ｓｏｕｒｃｅ）、変換（ｔｒａｎｓｆｏｒｍ）、フィルタリング（ｆｉｌｔｅｒｉｎｇ）、集約、およびシンク（ｓｉｎｋ）うちのいずれか１つのグループにマッピングされること
を特徴とする、請求項１に記載のデータ分析方法。
【請求項３】
前記グループ別に互いに異なる形状にマッピングされたブロックを提供することは、
前記ブロックが示す属性情報を、当該ブロックに対応させて表示して提供すること
を特徴とする、請求項１に記載のデータ分析方法。
【請求項４】
前記ブロックに対するユーザ選択が入力されるためのユーザインタフェースを提供することは、
前記ブロックに対応する関数および命令語の属性に応じて予め指定された項目のうち、特定の項目を選択するための情報入力ウィンドウを前記ブロック内に挿入して提供し、
前記情報入力ウィンドウで選択された項目を示す指示子（ｉｎｄｉｃａｔｏｒ）を当該項目が選択されたブロックと関連付けて格納すること
を含む、請求項１に記載のデータ分析方法。
【請求項５】
前記プログラミング言語基盤のデータ分析コードに変換することは、
前記ユーザ作成ブロックを基盤としたデータ分析フローを、マルチパラダイムプログラミング言語のうち、ユーザによって選択された言語に対応するデータ分析コードに変換すること
を特徴とする、請求項１に記載のデータ分析方法。
【請求項６】
前記ユーザ作成ブロックは、画面の第１領域に表示される前記ブロックのうち、前記ユーザインタフェースに対応する第２領域にドラッグ（ｄｒａｇ）＆ドロップされたブロックを組み合わせたブロックを含むこと
を特徴とする、請求項１に記載のデータ分析方法。
【請求項７】
ユーザ作成ブロックを基盤とする前記データ分析フローは、対応するデータファイルと関連付けて格納されることにより、前記データファイルをローディングする他のユーザと共有されること
を特徴とする、請求項１に記載のデータ分析方法。
【請求項８】
コンピュータによって実行されるデータ分析システムであって、
プログラミング言語基盤の関数および命令語が属性に応じて分類された複数のグループを対象として、グループ別に互いに異なる形状にマッピングされたブロックを提供し、提供された前記ブロックに対するユーザ選択が入力されるためのユーザインタフェースを提供するブロック提供部と、
前記ユーザインタフェースで選択されたブロックを組み合わせたユーザ作成ブロックを基盤としてデータ分析フローを生成するフロー生成部と、
前記ユーザ作成ブロックを基盤としたデータ分析フローを言語変換エンジンによって前記プログラミング言語基盤のデータ分析コードに変換するコード変換部と、
変換された前記データ分析コードに基づいてデータ分析を実行するデータ分析部と、
を備える、データ分析システム。
【請求項９】
前記ブロックは、ソース（ｓｏｕｒｃｅ）、変換（ｔｒａｎｓｆｏｒｍ）、フィルタリング（ｆｉｌｔｅｒｉｎｇ）、集約、およびシンク（ｓｉｎｋ）うちのいずれか１つのグループにマッピングされること
を特徴とする、請求項８に記載のデータ分析システム。
【請求項１０】
前記ブロック提供部は、
前記ブロックが示す属性情報を、当該ブロックに対応させて表示して提供すること
を特徴とする、請求項８に記載のデータ分析システム。
【請求項１１】
前記ブロック提供部は、
前記ブロックに対応する関数および命令語の属性に応じて予め指定された項目のうち、特定の項目を選択するための情報入力ウィンドウを前記ブロック内に挿入して提供し、前記情報入力ウィンドウに選択された項目を示す指示子（ｉｎｄｉｃａｔｏｒ）を当該項目が選択されたブロックと関連付けて格納すること
を特徴とする、請求項８に記載のデータ分析システム。
【請求項１２】
前記コード変換部は、
前記ユーザ作成ブロックを基盤としたデータ分析フローを、マルチパラダイムプログラミング言語のうち、ユーザによって選択された言語に対応するデータ分析コードに変換すること
を特徴とする、請求項８に記載のデータ分析システム。
【請求項１３】
前記ユーザ作成ブロックは、画面の第１領域に表示される前記ブロックのうちで前記ユーザインタフェースに対応する第２領域にドラッグ（ｄｒａｇ）＆ドロップされたブロックを組み合わせたブロックを含むこと
を特徴とする、請求項８に記載のデータ分析システム。
【請求項１４】
ユーザ作成ブロックを基盤とする前記データ分析フローは、対応するデータファイルと関連付けて格納されることにより、前記データファイルをローディングする他のユーザと共有されること
を特徴とする、請求項８に記載のデータ分析システム。
【請求項１５】
プログラミング言語基盤の関数および命令語が属性に応じて分類された複数のグループを対象として、グループ別に互いに異なる形状にマッピングされたブロックを提供し、
提供された前記ブロックに対するユーザ選択が入力されるためのユーザインタフェースを提供し、
前記ユーザインタフェースで選択されたブロックを組み合わせたユーザ作成ブロックを基盤としてデータ分析フローを生成し、
前記ユーザ作成ブロックを基盤としたデータ分析フローを言語変換エンジンによって前記プログラミング言語基盤のデータ分析コードに変換し、
変換された前記データ分析コードに基づいてデータ分析を実行すること
を含むデータ分析方法を、コンピュータに実行させるためのプログラム。
【請求項１６】
前記ブロックは、ソース（ｓｏｕｒｃｅ）、変換（ｔｒａｎｓｆｏｒｍ）、フィルタリング（ｆｉｌｔｅｒｉｎｇ）、集約、およびシンク（ｓｉｎｋ）のうちのいずれか１つのグループにマッピングされること
を特徴とする、請求項１５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の説明は、スカラ（ｓｃａｌａ）、パイソン（ｐｙｔｈｏｎ）などのプログラミング言語を基盤としてデータを分析する技術に関する。
【背景技術】
【０００２】
最近は、パソコンの他に、タブレット（ｔａｂｌｅｔ）やスマートフォン（ｓｍａｒｔ  ｐｈｏｎｅ）のような高性能の携帯用機器が登場することに伴い、デスクトップパソコンを利用したインターネット接続だけではなく、モバイルからインターネットに接続してモバイルショッピング、検索、メール確認などを楽しむ人口が急増している。このような携帯用機器の普及化とモバイルインターネット技術の発達により、インターネット上に存在する多くのデータがウェブロボット、ウェブクローラ、スパイダーなどによって収集されており、収集されたビッグデータを目的に応じて分析して利用している。
【０００３】
既存のデータ分析システムでは、スカラ（ｓｃａｌａ）、パイソン（ｐｙｔｈｏｎ）などのプログラミング言語を利用して作成されたデータ分析コードを基盤にビッグデータを分析していた。言い換えれば、スカラ、パイソンなどのプログラミング言語を学習したユーザはデータ分析コードの作成が可能であるが、そのようなプログラミング言語を学習していないユーザは、データ分析コードの作成が難しく、他のユーザによって作成されたデータ分析フローを直観的に理解するのも難しいため、維持補修に困難をきたす。
【０００４】
これにより、パイソン、スカラなどのプログラミング言語を学習していないユーザでも、特定のデータファイルを自身が制御または修正するためにデータ分析フローを容易に作成できるようにサポートしてくれるデータ分析技術が求められている。
【０００５】
特許文献１は、ハドゥープ（Ｈａｄｏｏｐ）（登録商標）基盤の大容量不均衡データ分類分析システムおよび方法に関し、交通ビックデータを統合して学習データモデルを生成し、生成された学習データモデルに基づいてデータ分析を実行する技術を開示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】韓国公開特許第１０−２０１３−０１５５８０８号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的の一つは、パイソン、スカラなどのプログラミング言語を学習していないユーザでも、特定のデータファイルを自身が制御または修正するためにデータ分析フローを容易に作成できるようにサポートすることにある。
【０００８】
また、本発明の目的の他の一つは、他のユーザによって作成されたデータ分析フローを、使用されるプログラミング言語が分からなくても直観的に理解できるようにサポートすることにある。
【課題を解決するための手段】
【０００９】
本発明の一実施形態によれば、コンピュータによって実行されるデータ分析方法であって、プログラミング言語基盤の関数および命令語が属性に応じて分類された複数のグループを対象として、グループ別に互いに異なる形状にマッピングされたブロックを提供し、提供された前記ブロックに対するユーザ選択が入力されるためのユーザインタフェースを提供し、前記ユーザインタフェースで選択されたブロックを組み合わせたユーザ作成ブロックを基盤としてデータ分析フローを生成し、前記ユーザ作成ブロックを基盤としたデータ分析フローを言語変換エンジンによって前記プログラミング言語基盤のデータ分析コードに変換し、変換された前記データ分析コードに基づいてデータ分析を実行することを含むデータ分析方法が提供される。
【００１０】
また、本発明の一実施形態によれば、コンピュータによって実行されるデータ分析システムであって、プログラミング言語基盤の関数および命令語が属性に応じて分類された複数のグループを対象として、グループ別に互いに異なる形状にマッピングされたブロックを提供し、提供された前記ブロックに対するユーザ選択が入力されるためのユーザインタフェースを提供するブロック提供部と、前記ユーザインタフェースで選択されたブロックを組み合わせたユーザ作成ブロックを基盤としてデータ分析フローを生成するフロー生成部と、前記ユーザ作成ブロックを基盤としたデータ分析フローを言語変換エンジンによって前記プログラミング言語基盤のデータ分析コードに変換するコード変換部と、変換された前記データ分析コードに基づいてデータ分析を実行するデータ分析部と、を備えるデータ分析システムが提供される。
【００１１】
また、本発明の一実施形態によれば、プログラミング言語基盤の関数および命令語が属性に応じて分類された複数のグループを対象として、グループ別に互いに異なる形状にマッピングされたブロックを提供し、提供された前記ブロックに対するユーザ選択が入力されるためのユーザインタフェースを提供し、前記ユーザインタフェースで選択されたブロックを組み合わせたユーザ作成ブロックを基盤としてデータ分析フローを生成し、前記ユーザ作成ブロックを基盤としたデータ分析フローを言語変換エンジンによって前記プログラミング言語基盤のデータ分析コードに変換し、変換された前記データ分析コードに基づいてデータ分析を実行することを含むデータ分析方法を、コンピュータに実行させるためのプログラムが提供される。
【発明の効果】
【００１２】
データ分析フローを予め定義された多様な形状のブロックで表現することにより、スカラ（ｓｃａｌａ）、パイソン（ｐｙｔｈｏｎ）、ＳＱＬ（ｓｔｒｕｃｔｕｒｅｄ  ｑｕｅｒｙ  ｌａｎｇｕａｇｅ）などの言語を学習していないユーザでも、特定のデータファイルを自身が制御または修正するためにデータ分析フローを容易に作成できるようにサポートすることができる。
【００１３】
また、他のユーザによって作成されたデータ分析フローを、予め定義された様々な形状のブロックを組み立てた形態で提供することにより、使用されるプログラミング言語が分からなくても、データ分析フローが意味するものを直観的に理解できるようにサポートすることができる。例えば、社内セキュリティ分析などのように、ローカル（ｌｏｃａｌ）ネットワークで互いに異なるチーム間での協業のために共有されるデータファイルに対するデータ分析フローが、ブロックが組み立てられた形態で表現されることにより、そのデータファイルを容易に編集および制御することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態における、ネットワーク環境の例を示した図である。
【図２】本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。
【図３】本発明の一実施形態における、電子機器のプロセッサに含まれる構成要素の例を示したブロック図である。
【図４】本発明の一実施形態における、データ分析方法の例を示したフローチャートである。
【図５ａ】本発明の一実施形態における、グループ別に予め指定されたブロックを示した図である。
【図５ｂ】本発明の一実施形態における、グループ別に予め指定されたブロックを示した図である。
【図６ａ】本発明の一実施形態における、ブロックを組み合わせてデータ分析フローを生成する動作を説明するために提供された図である。
【図６ｂ】本発明の一実施形態における、ブロックを組み合わせてデータ分析フローを生成する動作を説明するために提供された図である。
【図７ａ】本発明の一実施形態における、視覚化された様々な形状のブロックおよび各ブロックに指定された項目を示した例示図である。
【図７ｂ】本発明の一実施形態における、視覚化された様々な形状のブロックおよび各ブロックに指定された項目を示した例示図である。
【図８ａ】本発明の一実施形態における、ブロック基盤のデータ分析フローをデータ分析コードに変換する動作を示した図である。
【図８ｂ】本発明の一実施形態における、ブロック基盤のデータ分析フローをデータ分析コードに変換する動作を示した図である。
【図９】本発明の一実施形態における、他のユーザとデータ分析フローを共有する動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１５】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【００１６】
本実施形態は、データ分析フローを予め定義されたブロックの組み合わせ（すなわち、組み立て）で表現するデータ分析方法およびシステムに関する。より詳細には、パイソン、スカラ、ＳＱＬなどの言語においてコーディング（ｃｏｄｉｎｇ）時に使用される関数および命令語を属性（すなわち、機能）に応じて複数のグループに分類し、グループ別にマッピングされたブロックを利用してデータ分析フローを表現し、ブロックの組み立てによって表現されたデータ分析フローをシステム自体で自動的にコーディング変換してデータ分析を実行する技術に関する。例えば、Ｌｉｎｕｘ（登録商標）、Ｕｎｉｘ（登録商標）基盤のプラットフォームで作成されたシェルスクリプト（ｓｈｅｌｌ  ｓｃｒｉｐｔ）などを、使用されるプログラミング言語を学習していないユーザでも編集が可能なようにＧＵＩタイプに視覚化されたブロックを提供し、提供されたブロックのうちから選択されたブロックが組み立てられた形態でデータ分析フローを提供する技術に関する。
【００１７】
本実施形態において、「ブロック」とは、上下左右方向に組み立て可能な形態のパズルブロック（形状によって組み合わせ可能な位置が限定されるブロック）を示すものであって、画面上でユーザによって選択されたブロックが上下左右方向に順に組み立てられることで、データ分析フローの示す情報が直観的に表現される。
【００１８】
本実施形態において、プログラミング言語には、オブジェクト指向プログラミング言語と関数型プログラミングの要素が結合したマルチパラダイムプログラミング言語（例えば、スカラ、パイソン）はもちろん、ＤＢ化されたデータを管理するために利用されるＳＱＬなどの対話式プログラミング言語が含まれる。
【００１９】
図１は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図１のネットワーク環境は、複数の電子機器１１０、１２０、１３０、１４０、複数のサーバ１５０、１６０、およびネットワーク１７０を含む例を示している。このような図１は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が図１のように限定されることはない。
【００２０】
複数の電子機器１１０、１２０、１３０、１４０は、コンピュータ装置によって実現される固定端末や移動端末である。複数の電子機器１１０、１２０、１３０、１４０の例としては、スマートフォン、携帯電話、ナビゲーション、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ノート型パソコン、デジタル放送用端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ＰＭＰ（Ｐｏｒｔａｂｌｅ  Ｍｕｌｔｉｍｅｄｉａ  Ｐｌａｙｅｒ）、タブレットなどがある。一例として、電子機器１（１１０）は、無線または有線通信方式を利用し、ネットワーク１７０を介して他の電子機器１２０、１３０、１４０および／またはサーバ１５０、１６０と通信する。
【００２１】
通信方式が限定されることはなく、ネットワーク１７０が含むことのできる通信網（一例として、移動通信網、有線インターネット、無線インターネット、放送網）を活用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク１７０は、ＰＡＮ（ｐｅｒｓｏｎａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＣＡＮ（ｃａｍｐｕｓ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＭＡＮ（ｍｅｔｒｏｐｏｌｉｔａｎ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＢＢＮ（ｂｒｏａｄｂａｎｄ  ｎｅｔｗｏｒｋ）、インターネットなどのネットワークのうちの１つ以上の任意のネットワークを含む。さらに、ネットワーク１７０は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター−バスネットワーク、ツリーまたは階層的（ｈｉｅｒａｒｃｈｉｃａｌ）ネットワークなどを含むネットワークトポロジのうちの任意の１つ以上を含んでもよいが、これらに限定されることはない。
【００２２】
サーバ１５０、１６０それぞれは、複数の電子機器１１０、１２０、１３０、１４０とネットワーク１７０を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供するコンピュータ装置または複数のコンピュータ装置によって実現される。
【００２３】
図２は、本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。図２では、１つの電子機器に対する例として電子機器１（１１０）の内部構成を、１つのサーバに対する例としてサーバ１５０）の内部構成を説明する。他の電子機器１２０、１３０、１４０やサーバ１６０も、同一または類似の内部構成を有する。
【００２４】
電子機器１（１１０）とサーバ１５０は、メモリ２１１、２２１、プロセッサ２１２、２２２、通信モジュール２１３、２２３、および入力／出力インタフェース２１４、２２４を含む。メモリ２１１、２２１は、コンピュータで読み取り可能な記録媒体であって、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、およびディスクドライブのような永久大容量記憶装置（ｐｅｒｍａｎｅｎｔ  ｍａｓｓ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）を含む。また、メモリ２１１、２２１には、オペレーティングシステムと、少なくとも１つのプログラムコード（一例として、電気機器１（１１０）にインストールされ駆動するブラウザやブロック基盤データ分析のためのアプリケーションなどのためのコード）が格納される。このようなソフトウェア構成要素は、ドライブメカニズム（ｄｒｉｖｅ  ｍｅｃｈａｎｉｓｍ）を利用してメモリ２１１、２２１とは別のコンピュータで読み取り可能な記録媒体からロードされる。このような別のコンピュータで読み取り可能な記録媒体は、フロッピー（登録商標）ドライブ、ディスク、テープ、ＤＶＤ／ＣＤ−ＲＯＭドライブ、メモリカードなどのコンピュータで読み取り可能な記録媒体を含む。他の実施形態において、ソフトウェア構成要素は、コンピュータで読み取り可能な記録媒体ではない通信モジュール２１３、２２３を通じてメモリ２１１、２２１にロードされてもよい。例えば、少なくとも１つのプログラムは、開発者またはアプリケーションのインストールファイルを配布するファイル配布システム（一例として、上述したサーバ１６０）がネットワーク１７０を介して提供するファイルによってインストールされるプログラム（一例として、上述したアプリケーション）に基づいてメモリ２１１、２２１にロードされる。
【００２５】
プロセッサ２１２、２２２は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成される。命令は、メモリ２１１、２２１または通信モジュール２１３、２２３によって、プロセッサ２１２、２２２に提供される。例えば、プロセッサ２１２、２２２は、メモリ２１１、２２１のような記録装置に格納されたプログラムコードにしたがって受信される命令を実行するように構成される。
【００２６】
通信モジュール２１３、２２３は、ネットワーク１７０を介して電子機器１（１１０）とサーバ１５０とが互いに通信するための機能を提供してもよいし、他の電子機器（一例として、電子機器２（１２０））または他のサーバ（一例として、サーバ１６０）と通信するための機能を提供してもよい。一例として、電子機器１（１１０）のプロセッサ２1２がメモリ２１１のような記録装置に格納されたプログラムコードにしたがって生成した要求（一例として、データ分析サービスのための要求）が、通信モジュール２１３の制御にしたがってネットワーク１７０を介してサーバ１５０に伝達される。これとは逆に、サーバ１５０のプロセッサ２２２の制御にしたがって提供される制御信号や命令、コンテンツ、ファイルなどが、通信モジュール２２３とネットワーク１７０を経て電子機器１（１１０）の通信モジュール２１３を通じて電子機器１（１１０）に受信されてもよい。例えば、通信モジュール２１３を通じて受信したサーバ１５０の制御信号や命令などは、プロセッサ２1２やメモリ２１１に伝達されてよく、コンテンツやファイルなどは、電子機器１（１１０）がさらに含むことのできる格納媒体に格納される。
【００２７】
入力／出力インタフェース２１４、２２４は、入力／出力装置２１５とのインタフェースのための手段である。例えば、入力装置は、キーボードまたはマウスなどの装置を、出力装置は、アプリケーションの通信セッションを表示するためのディスプレイのような装置を含む。他の例として、入力／出力インタフェース２１４は、タッチスクリーンのように入力と出力のための機能が１つに統合された装置とのインタフェースのための手段である。より具体的な例として、電子機器１（１１０）のプロセッサ２1２は、メモリ２１１にロードされたコンピュータプログラムの命令を処理するにあたり、サーバ１５０や電子機器２（１２０）が提供するデータを利用して構成されるサービス画面やコンテンツが、入力／出力インタフェース２１４を通じてディスプレイに表示される。
【００２８】
また、他の実施形態において、電子機器１（１１０）およびサーバ１５０は、図２の構成要素よりも多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、電子機器１（１１０）は、上述した入力／出力装置２１５のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）モジュール、カメラ、各種センサ、データベースなどのような他の構成要素をさらに含んでもよい。より具体的な例として、電子機器１（１１０）がスマートフォンである場合、一般的にスマートフォンが含んでいる加速度センサやジャイロセンサ、カメラ、物理的な各種ボタン、タッチパネルを利用したボタン、入力／出力ポート、振動のための振動器などのような多様な構成要素が電子機器１（１１０）にさらに含まれるように実現されてもよい。
【００２９】
本発明の実施形態に係るデータ分析システムは、アプリケーションが実行される装置に実現されてよい。言い換えれば、本発明の実施形態に係るブロック基盤のデータ分析方法は、アプリケーションのインストールおよび駆動が可能なすべての装置で実行することができ、この他にも、社内コンピュータサーバ、ビックデータやセキュリティデータ分析サービスを提供するサーバで実行されてもよい。
【００３０】
例えば、電子機器１１０の画面に表示されたブロックのうち、ユーザによって選択されたブロックを組み合わせたデータ分析フロー関連情報が、アプリケーションを通じて電子機器１１０からサーバ１５０に提供される。提供されたデータ分析フロー関連情報に基づいて言語変換エンジンによってデータ分析フローをデータ分析コードに変換してデータ分析を実行する。これにより、サーバ１５０は、アプリケーションを通じて電子機器１１０にデータ分析結果を提供するように応答することにより、データ分析結果が電子機器１１０の画面に表示されるように制御される。
【００３１】
以下では、説明の便宜のために、サーバ１５０から提供されたデータ分析サービスのプログラムコードまたはアプリケーションが格納された電子機器１１０で、対象となるプログラムコードやアプリケーションを実行することにより、ブロックを組み合わせてデータ分析フローを生成してデータ分析を実行する実施形態について説明する。
【００３２】
図３は、本発明の一実施形態における、電子機器のプロセッサに含まれる構成要素の例を示したブロック図であり、図４は、本発明の一実施形態における、データ分析方法の例を示したフローチャートである。
【００３３】
電子機器１１０は、データ分析システムを実現してよく、図３に示すように、電子機器１１０に含まれたプロセッサ２１２は、構成要素として、ブロック提供部３１０、フロー生成部３２０、コード変換部３３０、およびデータ分析部３４０を備える。このようなプロセッサ２１２およびプロセッサ２１２の構成要素は、図４のデータ分析方法が含む段階４１０〜４５０を実行するように電子機器１１０を制御する。このとき、プロセッサ２１２およびプロセッサ２１２の構成要素は、メモリ２１１が含むオペレーティングシステムのコードと少なくとも１つのプログラムのコードによる命令（ｉｎｓｔｒｕｃｔｉｏｎ）を実行するように実現される。ここで、プロセッサ２１２の構成要素は、電子機器１１０に格納されたプログラムコードが提供する制御命令にしたがってプロセッサ２１２によって実行される互いに異なる機能（ｄｉｆｆｅｒｅｎｔ  ｆｕｎｃｔｉｏｎｓ）として表現されてもよい。例えば、プロセッサ２１２が上述した制御命令にしたがってデータを分析する方法において、ユーザ作成ブロックを基盤としたデータ分析フローをプログラミング言語基盤のデータ分析コードに変換する動作の機能的表現としてコード変換部３３０が使用されてよい。
【００３４】
先ず、電子機器１１０は、サーバ１５０から提供された（例えば、ダウンロード）データ分析方法のためのプログラムのファイルが格納されたプログラムコードをメモリ２１２にロードする。例えば、電子機器１１０でデータ分析サービスのためのプログラム（またはアプリケーション）が実行されると、オペレーティングシステムの制御にしたがってプログラムのファイルからプログラムコードがメモリ２１１にロードされてる。これにより、データ分析システムである電子機器１１０の画面上に、データ分析フローの生成のために予め指定された様々なパズル片形状のブロックが提供される。
【００３５】
段階４１０で、データ分析サービスのためのプログラム（またはアプリケーション）が実行されると、ブロック提供部３１０は、プログラミング言語基盤の関数および命令語が属性（すなわち、関数および命令語の固有機能）に応じて事前に予め分類された複数のグループを対象として、グループ別に互いに異なる形状にマッピング（ｍａｐｐｉｎｇ）されたブロックを提供する。
【００３６】
一例として、プログラミング言語基盤の関数および命令語（演算子を含む）は、ローディング（ｌｏａｄｉｎｇ）、変換（ｔｒａｎｓｆｏｒｍ）、フィルタリング（ｆｉｌｔｅｒｉｎｇ）、集約、および保存（ｓａｖｅ）のうちのいずれか１つのグループに分類される。ここで、ローディング（ｌｏａｄｉｎｇ）とは、既に生成されたデータファイルのうち、対象のファイルが含んでいる情報（すなわち、内容）を編集または修正するために、そのファイルを電子機器１１０のメモリ２１１に読み込む機能が定義された関数および命令語が属するグループを示す。例えば、スカラ（ｓｃａｌａ）言語の場合、ｌｏａｄがソース（ｓｏｕｒｃｅ）グループに分類されてよい。さらに、変換、フィルタリング、および集約とは、生成しようとするファイルまたはローディングされたファイルの情報を生成および修正するための機能が定義された関数、命令語が属するグループを示す。保存（ｓａｖｅ）とは、生成または修正された（すなわち、編集された）ファイルを保存するための機能が定義された関数や命令語が属する保存グループを示す。例えば、スカラ（ｓｃａｌａ）言語の場合、ｓａｖｅがシンク（ｓｉｎｋ）グループに分類される。それぞれのグループには、様々な形状で予め定義されたブロックがマッピング（ｍａｐｐｉｎｇ）される。例えば、グループの識別子情報およびグループ別に属する関数や命令語を示す指示子（ｉｎｄｉｃａｔｏｒ）がマッチングされてデータベースに格納および記録される。このとき、グループの識別子情報とそのグループにマッピングされたブロックを示す指示子もマッチングされて格納および記録される。
【００３７】
段階４２０で、ブロック提供部３１０は、提供されたブロックに対するユーザ選択が入力されるためのユーザインタフェースを提供する。
【００３８】
一例として、ブロック提供部３１０は、画面に予め指定された第１領域に、グループ別に事前に予め指定されたブロックが表示されるように制御する。この後、ブロック提供部３１０は、第１領域に表示されるブロックを対象に、ユーザインタフェースを通じてユーザによって選択されたブロックが、画面に予め指定された第２領域に表示されるように制御する。例えば、複数のグループのうち、ユーザによって選択された特定のグループを示す表示情報が選択されると、選択された特定のグループに対応するブロックが第１領域に表示される。この後、第１領域に表示されたブロックのうち、ユーザによって選択された少なくとも１つのブロックが、第２領域に移動（例えば、ドラッグ＆ドロップ）されて表示される。
【００３９】
段階４３０で、フロー生成部３２０は、ユーザインタフェースで選択されたブロックを組み合わせたユーザ作成ブロックを基盤としてデータ分析フローを生成する。
【００４０】
例えば、画面上の第１領域から第２領域にドラッグ＆ドロップ（ｄｒａｇ＆ｄｒｏｐ）されたブロックが上下左右方向に組み立てられてよい。組み立てられたブロックのうちの少なくとも１つのブロックを対象として、コピーや削除などのようにブロック編集のための機能が提供され、保存に対応する表示情報が選択されると、フロー生成部３２０は、ユーザ作成ブロックが完成したものとして決定し、完成したユーザ作成ブロックをデータ分析フローとして生成する。
【００４１】
段階４４０で、コード変換部３３０は、生成されたデータ分析フローを言語変換エンジンによってプログラミング言語基盤のデータ分析コードに変換する。
【００４２】
このとき、コード変換部３３０は、ユーザによって選択されたプログラミング言語の種類に基づいて、データ分析フローをデータ分析コードに変換する。例えば、スカラ言語が選択された場合、ブロックが組み立てられた形態で表現されたデータ分析フローを、各ブロックに対応する関数、命令語、および演算子を呼び出してスカラ言語基盤のコードに変換する。他の例として、パイソン言語が選択された場合、ブロックが組み立てられた形態で表現されたデータ分析フローを、各ブロックに対応する関数、命令語、および演算子を呼び出してパイソン言語基盤のコードに変換する。この他にも、様々なプログラミング言語基盤のコードへの変換が可能である。選択された言語へのコード変換のためのアプリケーションまたはプログラムコード実行時に適用しようとするプログラミング言語は、例えば、初期画面のうちファイルを生成または読み込む画面上で、ユーザによって選択される。
【００４３】
段階４５０で、データ分析部３４０は、変換されたデータ分析コードに基づいてデータ分析を実行する。これにより、データ分析部３４０は、画面を通じて分析結果をユーザに提供し、分析結果を対象のファイルと関連付けて格納および記録する。例えば、データ分析は、例えば、データ分析コードにしたがってデータをロード、処理することに対応する。分析結果はこの処理によって得られた結果に対応する。
【００４４】
図５（図５ａ、図５ｂ）は、本発明の一実施形態における、グループ別に予め指定されたブロックを示した図である。
【００４５】
図５を参照すると、図５ａに示す画面５１０のようにグループ別に予め指定されたブロックは、ブロック別に区分されて表示されてもよいし、図５ｂに示す画面５２０のように１つの画面上にすべてのブロックが表示されてもよい。５１０および５２０を参照すると、ブロックが表示される領域の上側には、生成しようとするファイル名を入力したりロードされたファイル名を示したりする情報入力ウィンドウ５１５が表示される。
【００４６】
５１０を参照すると、変換グループに対応する表示情報５１１が選択されると、変換グループに属する関数、命令語、および演算子に対応するブロックが表示される。このとき、選択されたグループは、選択されなかった残りのグループと区分されるように他の色で表示される。集約グループに対応する表示情報５１３が選択されると、集約グループに属する関数、命令語、および演算などに対応するブロックが表示される。フィルタリンググループに対応する表示情報５１２が選択されると、フィルタリンググループに族する関数、命令語、および演算子などに対応するブロックが表示される。
【００４７】
例えば、「ｉｆ  ｔｈｅｎ」に対応する「もし  そうであれば」の文字列（ｓｔｒｉｎｇ）を含むブロック、「ｉｆ  ｔｈｅｎ  ｅｌｓｅ」に対応する「もし  そうであれば  そうでなければ」の文字列（ｓｔｒｉｎｇ）を含むブロック、「ｇｒｅｐ」に対応する「一致する」の文字列（ｓｔｒｉｎｇ）を含むブロック５１４などが画面５１０に表示される。すなわち、各ブロックに対応する関数および命令語と関連する属性（すなわち、機能）を示す文字列（ｓｔｒｉｎｇ）（例えば、「もし  そうであれば」など）が、対応するブロック内に挿入されて表示される。ここで、各ブロックは、ブロックに対応する関数および命令語の属性に応じてテキスト、数字などの情報を入力して予め指定された項目を選択するための少なくとも１つの情報入力ウィンドウを含む。例えば、ローディングされたファイルに含まれる情報を対象に、特定の文字列や特定のラインに対応する情報だけをフィルタリングしようとする場合、その文字列やラインが入力されるための情報入力ウィンドウがｇｒｅｐに対応するブロック５１４内に挿入される形態で表示される。
【００４８】
グループを示す表示情報が表示される領域５１６には、変換、フィルタリング、集約の他に、ローディングおよび保存を示す表示情報がさらに含まれてもよい。ローディングに対応する表示情報が選択されると、ファイル、命令実行結果、権限などがローディングされてよい。保存が選択されると、ブロックが組み合わされたユーザ作成ブロックが示すデータ分析フローが保存される。
【００４９】
図６（図６ａ、図６ｂ）は、本発明の一実施形態における、ブロックを組み合わせてデータ分析フローを生成する動作を説明するために提供された図である。
【００５０】
図６ａを参照すると、画面の第１領域６１０に表示されるブロックのうち、ユーザが制御しようとする機能を示している文字列を含むブロックが選択され、選択されたブロックが第２領域６２０にドラック＆ドロップされる。
【００５１】
例えば、特定のファイルで結果値が特定の条件を満たすという結果を得たい場合（ログインアカウントなどのセキュリティ分析時に、入力されたデータ権限の適合の有無を確認しようとする場合）、ブロックが表示される第１領域６１０で「権限・・・を取り込むことができれば」の文字列を含むブロック６１２が第２領域にドラッグ＆ドロップされたとする。この後、「もし  そうであれば  そうでなければ」の文字列を含むブロック６１１が第２領域にドラッグ＆ドロップされる。このとき、第２領域に既に表示されたブロック６２１（第１領域におけるブロック６１２に対応）の周辺領域にブロック６２２（第１領域におけるブロック６１１に対応）がドロップされることにより、フロー生成部３２０は、ブロック６２１とブロック６２２が組み立てられるように制御する。第１領域には、ファイルローディングと関連するブロック６１２の情報入力ウィンドウにデフォルト（ｄｅｆａｕｌｔ）で設定された「権限」が表示されているが、ファイル内容を呼び出そうとする場合には情報入力ウィンドウの項目が「ファイル内容」に変更選択される。例えば、「権限」が表示された情報入力ウィンドウが選択されると、設定可能な項目がリスト形態６１３で表示される。予め指定された設定可能項目のうち、選択されたいずれか１つの項目（例えば、「ファイル内容」）が、そのブロックの情報入力ウィンドウに表示される。このとき、項目の変更は、第１領域で実行されてもよいし、対応するブロックが第２領域に移動した後に第２領域で実行されてもよい。この後、特定の条件を満たしているか、フィルタリングなどのために特定の文字列や数字などを入力しようとする場合、入力しようとする文字列入力のためのブロック６１４が、属性が異なるブロック内に情報入力ウィンドウとして挿入される。例えば、ｇｒｅｐ機能（すなわち、属性）に対応するブロック内にブロック６１４が挿入される。
【００５２】
第１領域に配置されたブロックのうち、ユーザによって選択されて第２領域に移動したブロックを対象にブロックの組み合わせが完了すると、図６ｂに示す６３０のように、ユーザ作成ブロックを基盤として組み合わされたブロック間の連結関係が直観的に示されたデータ分析フローが生成される。これにより、ローディングされたファイルが作成されたデータ分析コードに対応するプログラミング言語をユーザが分からなくても、そのファイルで確認しようとする情報に対する結果を要請するデータ分析フローを生成することができるようになる。
【００５３】
図７（図７ａ、図７ｂ）は、本発明の一実施形態における、視覚化された様々な形状のブロックおよび各ブロックに指定された項目を示した例示図である。
【００５４】
図７では、プログラミング言語の関数および命令語などがマッピングされたブロックのＧＵＩを示しており、単位関数が属するグループ別にマッピングされたブロックを示している。
【００５５】
例えば、単位関数が実行する固有の機能（すなわち、属性）に応じて単位関数それぞれが、ソースグループ、変換グループ、フィルタリンググループ、集約グループ、シンクグループなどに分類され、各グループ別にブロックがマッピングされる。このとき、ブロックは、ブロックに対応する関数および命令語の属性に応じて予め指定された項目のうち、特定の項目を選択したり、条件を入力したりするための情報入力ウィンドウを含み、対応するブロックが実行する機能を示す文字列を含む。
【００５６】
例えば、単位関数は、ｌｏａｄ（７１０）、ｇｒｅｐ（７２０）、ｉｆ（７３０）、ｃｕｔ（７４０）、ｗｃ（７５０）、ｂｃ（７６０）、ｓａｖｅ（７７０）などを含み、下記の表１では、単位関数およびそれぞれの関数が属するグループを示している。
【００５７】
【表１】
2018190400.tif 000003
【００５８】
図７を参照すると、ソースグループに属する関数ｌｏａｄには、読み込みという属性と関連する複数の項目が予め指定される。例えば、権限、ファイル内容、命令語実行結果、ファイルのユーザ、ファイルのグループなどが単位関数ｌｏａｄ（７１０）に対応するブロック７１２の識別子情報とマッチングされて予め指定される。ここで、「権限」がｌｏａｄに対応するブロック７１２のデフォルト（ｄｅｆａｕｌｔ）として予め指定され、第１領域に配置されたブロックの情報入力ウィンドウ７１１に表示される。また、この項目を変更するために情報入力ウィンドウが選択されると、権限を含んだ残りの項目（ファイル内容、命令語実行結果、ファイルのユーザ、ファイルのグループなど）がリスト形態で提供される。これにより、このリストから選択された項目がブロック７１２内に挿入された情報入力ウィンドウ７１１に表示される。このとき、ファイル名、ファイルのユーザなどを入力するためのブロックが情報入力ウィンドウとしてブロック７１２内に挿入され、ｌｏａｄの固有機能（すなわち、属性）に対応する文字列である「データを取り込むことができれば」が、このブロック７１２内に表示される。
【００５９】
フィルタリンググループには、ｇｒｅｐ、ｉｆ、ｃｕｔなどの単位関数が属する。ｇｒｅｐには、ファイルから特定の文字列を見つけ出す属性と関連する複数の項目が予め指定される。例えば、一致する、一致しないなどの項目がｇｒｅｐ（７２０）に対応するブロック７２２の識別子情報とマッチングされて予め指定される。このとき、項目の選択のための情報入力ウィンドウ７２１および一致する、一致しないなどの判定の対象となる特定の文字列が入力されるための情報入力ウィンドウがブロック７２２内に挿入された形態で表示される。
【００６０】
集約グループには、ｗｃ、ｂｃなどの単位関数が属する。ｂｃ（７６０）の場合、関数ｂｃが実行する固有機能と関連する演算子（例えば、ＳＵＭ、ＭＩＮ、ＭＡＸ、ＡＶＧ）が項目に予め指定される。
【００６１】
保存グループには単位関数ｓａｖｅが属し、ｓａｖｅ（７７０）に対応するブロックは、ソースグループに基づいて読み取られたデータファイルを対象に、変換、フィルタリング、集約グループによって実行された演算の結果を保存および表示するために利用される。
【００６２】
このように、ユーザ作成ブロックは、変換、フィルタリング、集約のうちのいずれか１つのグループとソースグループ、シンクグループとが組み合わされた１つのセットが完成することにより、完成したユーザ作成ブロックがデータ分析フローとして生成されるようになる。
【００６３】
図８（図８ａ、図８ｂ）は、本発明の一実施形態における、ブロック基盤のデータ分析フローをデータ分析コードに変換する動作を示した図である。
【００６４】
図８を参照すると、ブロックが組み合わされてユーザ作成ブロック８１０が完成すると、ユーザ作成ブロック基盤のデータ分析フローは、言語変換エンジン８２０により、データ分析を実行しようとするプログラミング言語として解釈が可能なデータ分析コード８３０に変換される。例えば、各ブロックは、対応するブロックが示す関数、命令語の属性に応じて互いに異なる形状および色が指定される。これにより、コード変換部３３０は、言語変換エンジン８２０により、様々なブロックが組み合わされたユーザ作成ブロックのうち、ソースグループおよびシンクグループに該当するブロックを基準として水平方向および垂直方向に連結するブロックが示す関数および命令語を決定し、ブロック別に指定された項目および条件を抽出し、データ分析コード８３０を生成する。この後、データ分析コード８３０を基盤として実行された分析結果が再び画面に表示され、対応するファイルおよびデータ分析フローと共にマッチングされて格納される。これにより、データ分析フローは、他のユーザと共有されるようになる。
【００６５】
図９は、本発明の一実施形態における、他のユーザとデータ分析フローを共有する動作を説明するためのフローチャートである。
【００６６】
図９を参照すると、段階９１０で、データ分析部３４０は、ユーザ作成ブロックを基盤としたデータ分析フローを、対応するデータファイルと関連付けて格納および記録する。例えば、ロードされたデータファイル名および作成されたブロックファイル名がマッチングされて格納される。
【００６７】
段階９２０で、生成されたデータ分析フローは、ネットワークを介して他のユーザと共有される。
【００６８】
段階９２１で、ブロックファイル名を検索し、データ分析フローを画面にローディングする。例えば、他のユーザの電子機器の画面にロードされたデータ分析フローは、ブロックが組み合わされたユーザ作成ブロック８１０の形態で表示される。
【００６９】
これにより、段階９２２で、対象となるデータ分析フローのデータ分析のために利用されるプログラミング言語を他のユーザが分からなくても、ロードされたデータ分析フローにブロックを追加したり、削除したり、条件などを変更したりしてデータ分析フローを修正することができる。
【００７０】
一例として、ユーザ作成ブロック８１０に対応するデータ分析フローに条件が追加された場合（例えば、ファイル内容で一致する文字列が追加された場合）、第１領域からｇｒｅｐ関連ブロックを第２領域における対応する部分に追加したり、第２領域のｇｒｅｐ関連ブロックをコピーして対応する部分に追加したりし、追加されたブロック内に文字列を入力することにより、追加された条件を反映してデータ分析を実行するためのユーザ作成ブロックを生成する。
【００７１】
他の例として、結果値関連条件を修正しようとする場合、ロードされたユーザ作成ブロック８１０に対応するデータ分析フローで結果値関連情報入力ウィンドウに修正したい条件値を入力することにより、対応するデータ分析フローが修正される。これにより、対応するファイルと関連付けられて格納されたデータ分析フローは、修正されたデータ分析フローにアップデートされる。
【００７２】
段階９２３で、修正されたデータ分析フローは、言語変換エンジンによってデータ分析コードに変換され、変換されたデータ分析コードを基盤としてデータ分析された結果が画面に表示される。
【００７３】
このように、ブロックを組み合わせて作成されたデータ分析フローが、対応するファイルと関連付けられて格納および共有されることにより、そのファイルが実行する作業を協業するチームの構成員がプログラミング言語を学習していないユーザであったとしても、データ分析フローを容易に修正することができるようになる。
【００７４】
上述したシステムまたは装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現される。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ＡＬＵ（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）、デジタル信号プロセッサ、マイクロコンピュータ、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、ＰＬＵ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｕｎｉｔ）、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、１つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現される。処理装置は、オペレーティングシステム（ＯＳ）および前記ＯＳ上で実行される１つ以上のソフトウェアアプリケーションを実行する。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、１つの処理装置が使用されるとして説明される場合もあるが、処理装置が複数個の処理要素および／または複数種類の処理要素を含んでもよい。例えば、処理装置は、複数個のプロセッサまたは１つのプロセッサおよび１つのコントローラを含んでもよい。また、並列プロセッサのような、他の処理構成も可能である。
【００７５】
ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で格納されても実行されてもよい。ソフトウェアおよびデータは、１つ以上のコンピュータで読み取り可能な記録媒体に格納されてもよい。
【００７６】
実施形態に係る方法は、様々なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータで読み取り可能な媒体に記録される。コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含む。この媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであってもよいし、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータで読み取り可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク、および磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光媒体、フロプティカルディスク（ｆｌｏｐｔｉｃａｌ  ｄｉｓｋ）のような光磁気媒体、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【００７７】
以上のように、実施形態を、限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ／あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【００７８】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
【符号の説明】
【００７９】
２１２：プロセッサ
３１０：ブロック提供部
３２０：フロー生成部
３３０：コード変換部
３４０：データ分析部
【図１】
2018190400.tif 000004
【図２】
2018190400.tif 000005
【図３】
2018190400.tif 000006
【図４】
2018190400.tif 000007
【図５ａ】
2018190400.tif 000008
【図５ｂ】
2018190400.tif 000009
【図６ａ】
2018190400.tif 000010
【図６ｂ】
2018190400.tif 000011
【図７ａ】
2018190400.tif 000012
【図７ｂ】
2018190400.tif 000013
【図８ａ】
2018190400.tif 000014
【図８ｂ】
2018190400.tif 000015
【図９】
2018190400.tif 000016