GCPとG Suiteを活用したビッグデータ分析からプレゼンへ

Google Cloud Codeの最終マイル:ビッグデータ分析からスライドプレゼンテーションへ

2018年9月26日にWesley Chunさんが発表した内容をもとに、Google Cloud Platform(GCP)とG Suiteを利用したビッグデータの分析からプレゼンテーションに至るプロセスについて解説します。GCPは、インフラストラクチャ、サーバーレス製品、APIを提供しており、ビルドや革新、スケールアップを手助けします。一方、G Suiteは、生産性向上のためのツールや、開発者向けのAPI、拡張機能フレームワーク、ローコードプラットフォームを提供しています。これらのサービスを組み合わせることで、より強力で柔軟なソリューションが得られます。

GCPとG Suiteの統合

このセッションでは、G Suite Dev Showを通じて、GCPの強力なツールをG Suiteアプリケーションから利用する方法を紹介しています。特にBigQueryを使用することで、大量のデータから貴重なインサイトを引き出すことができます。しかし、単にデータを分析するだけではなく、その結果を経営陣にプレゼンテーションする必要があります。そこで、G Suiteの強みを活かし、データ分析から「経営者向け」プレゼンテーションを作成する一例を示します。

サンプルアプリケーションの概要

サンプルアプリケーションは、G Suiteのサーバーレス開発プラットフォームであるGoogle Apps Scriptを利用して構築されています。これは、G Suite APIやBigQueryなどのGCPツールへの簡単なアクセスを提供します。以下では、アプリケーションの主要な部分について説明します。

ステップ1: BigQueryへのクエリ発行

最初のステップでは、BigQueryへのクエリを発行し、その結果をGoogle Sheetsに格納します。以下は、クエリを実行するためのコードです:

function runQuery() {
    var request = {query: BQ_QUERY};
    var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
    var jobId = queryResults.jobReference.jobId;
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
    var rows = queryResults.rows;
    var data = new Array(rows.length);
    
    for (var i = 0; i < rows.length; i++) {
        var cols = rows[i].f;
        data[i] = new Array(cols.length);
        for (var j = 0; j < cols.length; j++) {
            data[i][j] = cols[j].v;
        }
    }

    var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
    var sheet = spreadsheet.getActiveSheet();
    var headers = queryResults.schema.fields;
    sheet.appendRow(headers);
    sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);
    
    return spreadsheet;
}

このコードは、新しいGoogle Sheetsを作成し、BigQueryの結果を格納します。

ステップ2: チャートの生成

次のステップでは、Google Sheetsのデータをもとにチャートを作成します。以下は、チャートを生成するためのコードです:

function createColumnChart(spreadsheet) {
    var sheet = spreadsheet.getSheets()[0];
    var chart = sheet.newChart()
        .setChartType(Charts.ChartType.COLUMN)
        .addRange(sheet.getRange(START_CELL + ':' + END_CELL))
        .setPosition(START_ROW, START_COL, OFFSET, OFFSET)
        .build();
    sheet.insertChart(chart);
    
    return chart;
}

このプロセスにより、ビジュアルデータが作成され、後のプレゼンテーションに役立ちます。

ステップ3: プレゼンテーションの作成

最終ステップでは、Google Slidesを用いてプレゼンテーションを作成します。以下は、そのためのコードです:

function createSlidePresentation(spreadsheet, chart) {
    var deck = SlidesApp.create(QUERY_NAME);
    var [title, subtitle] = deck.getSlides()[0].getPageElements();
    title.asShape().getText().setText(QUERY_NAME);
    subtitle.asShape().getText().setText('via GCP and G Suite APIs:n' + 'Google Apps Script, BigQuery, Sheets, Slides');
    
    var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
    var sheetValues = spreadsheet.getSheets()[0].getRange(START_CELL + ':' + END_CELL).getValues();
    var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length);
    
    for (var i = 0; i < sheetValues.length; i++) {
        for (var j = 0; j < sheetValues[0].length; j++) {
            table.getCell(i, j).getText().setText(String(sheetValues[i][j]));
        }
    }
    
    var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
    chartSlide.insertSheetsChart(chart);
    
    return deck;
}

このプロセスを通じて、データ分析の成果を魅力的に視覚化することが可能になります。

アプリケーションの実行

最初の三つの関数を連携させて、全体のアプリケーションを動作させるためには、以下のようなドライバー関数を作成します:

function createBigQueryPresentation() {
    var spreadsheet = runQuery();
    var chart = createColumnChart(spreadsheet);
    var deck = createSlidePresentation(spreadsheet, chart);
}

このようにして、ビッグデータの分析からGoogle Slidesでのプレゼンテーション作成まで、一連の流れが完成します。

まとめ

このコードのサンプルは、GCPとG Suiteを活用した一つの具体例であり、ビッグデータの分析から情報をプレゼンテーションとして可視化する過程を示しています。興味がある方は、g.co/codelabs/bigquery-sheets-slidesで詳細なガイドを受けることができ、また、GitHubリポジトリにも全コードが公開されています。

これからも、GCPとG Suiteを利用した様々な事例が登場する予定ですので、お楽しみに!データ分析からプレゼンテーション作成までの道のりを、皆さん自身のプロジェクトに活かしてみてはいかがでしょうか。