Blog - Cloud ComputingCommentary from our cloud experts around the globeBLOG アクセンチュア・ クラウド・ ダイアリーズ

October 18, 2019
導入済みのクラウド環境を活用するNewIT人材育成
By: 蒋楠琛

テクノロジーコンサルティング本部 Intelligent Cloud & Infrastructure(ICI)の蒋楠琛(Jiang Nanchen)と申します。主要な仕事は企業のデジタルトランスフォーメーションを支援するコンサルティングワークですが、そのコンサルティングワークで描いたイメージをプロトタイプに具現化するためのクラウドネイティブ開発も担当しております。


はじめに
近年、AIやビッグデータなどのNewIT技術を企業の戦略レベルで検討している企業が増えていますが、NewITに対する理解や技術者の不足等が理由で計画段階で止まっているケースが多く見受けられます。その状況を打破するため、AWS、Azure、Googleなどのパブリッククラウドベンダーが次々と提供しているNewIT関連サービスとクラウドサービスを活用し、最小労力で実証実験を始めることで、企業戦略におけるデジタルトランスフォーメーションの実現に向けて前進することが可能です。

今回はクラウド導入済み企業のIT・情報関連部署向けに、せっかく導入したクラウド環境を如何に活用し、企業のNewIT人材育成に役立てるかというテーマで書きます。尚、記事の後半に、5分でクラウドにPoC環境を作り、Googleの学習済みAPIを呼び出す方法をコマンド付きで紹介します。


ABC戦略におけるクラウドのメリット
最近、AI・ビッグデータというキーワードを見ない日はないと言っても過言ではないでしょう。中国のIT業界では、そこにクラウドを加えて、ABC(AI・ビッグデータ・クラウド)戦略と呼んでいます。それは、「クラウドがビッグデータを蓄積する」・「ビッグデータがAIを最適化する」・「AIがクラウド上で威力を発揮してさらにデータを集める」という三位一体のサイクルを表現しています。



ABC戦略。Click to expand.


(図 ABC戦略)
参考:バイドゥ「ABCサミット2019」の開催でAIの産業化を加速
https://xtrend.nikkei.com/atcl/contents/technology/00004/00127/



普段、クラウドのメリットと聞かれると、「管理負荷・コストの削減」や「業務の効率化」といったキーワードが思い浮かぶかもしれませんが、このABC戦略においては、クラウドの最大のメリットは「データとサービスの距離を縮め、アイデアを最小労力でプロトタイプにする」というところにあると考えられます。そして、ここで言う「サービス」とは、企業が作ろうとしているサービスだけではなく、オープンソースやクラウドのプロバイダーが提供しているサービスのことも指しています。

ここで、GCP(Google Cloud Platform)を例として、パブリッククラウドのプロバイダーが提供しているNewIT系のサービスを見てみましょう。



GCPのAI・ビッグデータ等のNewIT関連サービス一部まとめ。Click to expand.


(自作の表:GCPのAI・ビッグデータ等のNewIT関連サービス一部まとめ)



"最先端"の理想と現実
理想的には、上の表で羅列したサービスをうまく組み合せれば、スピーディーな計画・実装・検証・改善を行い、アイデアを最短距離でプロトタイプ化させ一刻も早くNewIT技術を活用したビジネスモデルをマーケットで検証することができます。

しかし現実を見ると、トップダウンでNewITを導入せよという指示の下、プロジェクトを実施したものの、ROIが見合わない等の理由でそのままPoCの域から出られないケースが多く見受けられます。その原因の一つとして、「NewITを導入せねば」と計画している場合、そもそもNewITとはいったい何を指しているかが明確になっていないことが考えられます。何故ならばNewITという言葉自体は非常に広範囲な意味を持つ言葉であり、世の中を見ても、とりあえずNewITと言っておけば注目を集められると思われてしまう状況でもあります。

そういった中で、教科書やネット記事のみでNewITというキーワードで知識を仕入れようとすると、大量な情報に埋もれます。故にNewIT人材を効率良く育成させるには、やはり手で動かせる、そして目に見えるNewITの実験環境を整備しないと、いつまで経ってもNewITを導入することでどのようなビジネス価値を創出できるかは見えないままになってしまいます。

一方、今までインフラとして使われていたクラウド環境ですが、上の表で示した通り、インフラだけではなく、AIやビッグデータ等のNewITサービスも沢山提供されています。さらにその中で、機械学習・深層学習等の専門知識がなくても、いわゆる学習済みの機械学習モデルを手軽に操作できるサービスがあるため、それを駆使すればどんなユースケースでどんなことができるかをプログラムの動きを見ながら直感的にかつクイックに確認できます。NewITの特徴と限界を効率よく理解するという観点では、まさに最適な環境だと考えられます。

ところで、NewITの実験環境の必要性を色々検討しましたが、「結局どんなことができるの?」など、まだまだイメージしにくい部分もあるのではないでしょうか?ここでは具体的なユースケースを3つ紹介します。

  • IT部署の業務上、海外拠点とのやり取りが頻繁に発生し、文書を翻訳するのに毎回翻訳サイトを開くのは面倒臭いしセキュリティ上も不安という現場の声が上がってきたため、既存のグループウェアまたは社内サイトに翻訳APIを組み入れることを考案した。が、その前に、翻訳APIの精度がどれぐらいあるかを検証したい。
  • 事業部門から、マーケティングをより効率的に行うためには、部署が運営しているTwitterのアカウントの返信からキーワードを抽出し、そのキーワードで特定のニュースを収集する仕組みを作って欲しいという要望がIT部署に来たため、それを実現するための第一歩として、リアルタイムでニュース及びツイートからキーワードを抽出する機能を考案した。が、その前に、文章からどんなキーワードを抽出できるかを検証したい。
  • バックオフィスの部署から、スキャンしたファイルの名前が分かりづらくてファイルを開かないと中身が分からず、大量のデータをスキャンした場合はファイルの振り分けだけで何時間も取られちゃうというスキャンナーに対するクレームがなぜかIT部署に来たため、スキャンしたファイルの中身を識別して、ファイル名を変更する上で格納先フォルダを自動的に振り分ける仕組みを考案した。が、その前に、ファイルの中身をどこまで識別できるかを検証したい。


本記事では、GCPを例に、上記3つのユースケースに対して、実験の環境を実際に構築する方法を紹介します。


NewITサービス実験環境の作成

  • 目的:翻訳、文書の構成要素抽出及びAI-OCR機能をクイックに作成・検証できる環境を構築する
  • 環境:GCP(Google Cloud Platform)、Cloud Datalab
  • 言語:Python

詳細手順は以下の通りです:

①GCPの管理コンソールの「APIとサービス」で以下の5つを検索して有効化にします。

  • Cloud Source Repositories API
  • Cloud Translation API
  • Cloud Vision API
  • Cloud Natural Language API
  • Cloud Speech API


Cloud Source Repositories API. Click to expand.

Cloud Speech-to-Text API. Click to expand.

②コンソール画面右上のCloud ShellのアイコンをクリックしCloud Shellを起動します。

Cloud Shell. Click to expand.



③下記のコマンドを実行し、任意の名前でDatalab実行用のInstanceを作成し、継続しますかと聞かれたら「Y(Yes)」を入力します。

datalab create <任意の名前> --zone asia-northeast1-a

※作成済みのDatalab Instanceにアクセスするには、以下のコマンドを使用します。

datalab connect <作成済みのinstanceの名前>

④作成完了後、右上の「ウェブプレビューアイコン」で「ポートの変更」を選択し、「8081」を入力して実行します。



The connection to Datalab is now open and will remain until this command is killed. Click to expand.
SageMakerのマネジメントコンソール

ポートの変更。Click to expand.
SageMakerのマネジメントコンソール

プレビューポートの変更。Click to expand.
SageMakerのマネジメントコンソール



⑤Datalabで「+Notebook」ボタンをクリックするタイミングでPythonの実行環境構築が完了しました。

Google Cloud Datalab. Click to expand.
SageMakerのマネジメントコンソール



⑥Notebookを作成したら、「Kernel」のプールダウンリストで「python3」を選択します。



Kernel: python3. Click to expand.
SageMakerのマネジメントコンソール



⑦上記⑤で作成したNotebookで「+code」をクリックし下記コマンドを貼り付けます。

!pip install google-cloud
!pip install --upgrade google-cloud-language
!pip install --upgrade google-cloud-speech
!pip install --upgrade google-cloud-translate
!pip install --upgrade google-cloud-vision

⑧コマンドを実行して(Shift + Enter)pythonのライブラリをインストールします。

⑨ライブラリのインストールが完了したら一度「Reset Session」をクリックし、kernelを再起動します。

Reset Session. Click to expand.
SageMakerのマネジメントコンソール

Restart kernel. Click to expand.
SageMakerのマネジメントコンソール

⑩Notebookで「+code」ボタンをクリックし、下記Translate APIを呼び出すコマンドを貼り付けして実行します。

from google.cloud import translate
 
translate_client = translate.Client()
#翻訳したいテキストを入力
text = 'I would like to migrate three servers to cloud environment'
#翻訳対象言語を日本語(ja)に設定
target = 'ja'
 
#テキストと対象言語を指定し、APIを呼び出す
translation = translate_client.translate(
    text,
    target_language=target)
 
print('Translation: {}'.format(translation['translatedText']))

出力例:

Translation: 3台のサーバーをクラウド環境に移行したい

⑪次に、Natural Language APIのEntity抽出機能を呼び出すコマンドを貼り付けして実行します。


from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types
 
languageClient = language.LanguageServiceClient()
entity_list = []
#Entityを抽出したいテキストを入力
text = '横浜中華街で唐揚げを食べたい。'
#テキスト・対象言語・入力形式を指定する
document = types.Document(
    content = text,
    language = "ja",
    type=enums.Document.Type.PLAIN_TEXT)
#APIを呼び出す
entities = languageClient.analyze_entities(document).entities
#影響のあるEntityのみを出力する
for entity in entities:
    if entity.salience > 0.01:
    entity_list.append(entity.name) 
print(entity_list)

出力例:

 ['横浜中華街', '唐揚げ']

⑫最後に、Vision APIのOCR機能を呼び出すコマンドを貼り付けして実行します(PDFのURLは各自ご用意する必要があります)。

import re
from google.cloud import vision
from google.cloud import storage
from google.protobuf import json_format
# Supported mime_types are: 'application/pdf' and 'image/tiff'
mime_type = 'application/pdf'
#識別したいPDFのURLを指定する
gcs_source_uri = < cloud="" storage="" url="" (例:'gs://xxx/yyy.pdf')="">
#識別したファイルの出力先とファイル名を指定する
gcs_destination_uri = < cloud="" storage="" url="" (例:'gs://xxx/yyy.pdf')="">
 
#PDFのページ数を設定する
batch_size = 2
 
client = vision.ImageAnnotatorClient()
 
#VisionAPIの識別タイプを「DOCUMENT_TEXT_DETECTION」に指定
feature = vision.types.Feature(
    type=vision.enums.Feature.Type.DOCUMENT_TEXT_DETECTION)
 
#入力ファイルのパラメーターを設定する
gcs_source = vision.types.GcsSource(uri=gcs_source_uri)
input_config = vision.types.InputConfig(
    gcs_source=gcs_source, mime_type=mime_type)
 
#出力ファイルのパラメーターを設定する
gcs_destination = vision.types.GcsDestination(uri=gcs_destination_uri)
output_config = vision.types.OutputConfig(
    gcs_destination=gcs_destination, batch_size=batch_size)
 
# 非同期でAPIを呼び出す
async_request = vision.types.AsyncAnnotateFileRequest(
    features=[feature], input_config=input_config,
    output_config=output_config)
 
# 処理の結果を取得する
operation = client.async_batch_annotate_files(
    requests=[async_request])
 
print('非同期処理中...')
operation.result(timeout=180)
 
# 出力したファイルを取得し、結果を表示する
storage_client = storage.Client()
 
match = re.match(r'gs://([^/]+)/(.+)', gcs_destination_uri)
bucket_name = match.group(1)
prefix = match.group(2)
bucket = storage_client.get_bucket(bucket_name)
 
blob_list = list(bucket.list_blobs(prefix=prefix))
print('Output files:')
for blob in blob_list:
    print(blob.name)
 
output = blob_list[0]
 
json_string = output.download_as_string()
response = json_format.Parse(
    json_string, vision.types.AnnotateFileResponse())
 
first_page_response = response.responses[0]
annotation = first_page_response.full_text_annotation
 
print(u'Full text:\n{}'.format(
    annotation.text))

※コードをコピーする際の注意事項:

  1. Pythonはスペースの数でコードのブロックを判断しているため、コピーしてそのまま貼り付ける場合でも書式のズレ等が無いようにご確認してください。
  2. 上記コード内容は本記事を作成する時点で動作確認が取れたものですが、GCP側の仕様変更やクライアントライブラリのバージョンアップ等によって実行できなくなる可能性もございます。最新のGCPドキュメントもご確認ください。

以上、インプットを変えながら色々と試したり、またはこれらのAPIを組み合わせたり(例えばOCRで識別した文字に翻訳をかけ、さらにEntityを抽出するなど)すると、NewITに対する理解を深め、次のステップに繋がるヒントを得られるのではないでしょうか。

結論
昨今の日本では「NewITを導入せねば時代に取り残される」という不安と焦燥感に苛まれている方は多いのではないでしょうか。そういった中で、ビジネスとテクノロジーの両方を理解し、NewITを導入することでビジネス価値を創出できる領域を見極めることができる人材が必要とされています。本稿をここまでご覧になった皆様で、いま現在NewITを直接触ったり弄ったりする環境がないという方がいっしゃいましたら、導入済みのクラウド環境をうまく活用し、ここに記載されている方法でNewITに対する理解を深めてみてはいかがでしょうか。

Popular Tags

    最新の記事

      アーカイブ