2017年5月26日金曜日

ピボットテーブルによるデータ管理のすすめ

はじめまして、やっまむーです。

初めての投稿は、タイトルにありますようにExcelのピボットテーブル機能についての紹介です。

現在、某ソーシャルゲームをプレイしているのですが、キャラクターの育成に必要な素材の種類・数が多くて何が必要なのか把握できていません。
知りたいと思った時に毎回Wikipediaで調べるのも大変なので、これをピボットテーブルで管理できるようにしました。

ピボットテーブルとは?

Excelの機能で、リスト形式のデータを任意の形式で分類、集計する機能です。
ビジネスでは売上データの集計など、個人では家計簿などに利用できます。


 家計簿のデータ(左)をピボットテーブルで簡単集計(右)!

テーブルにデータを登録しよう

[挿入]→[テーブル] で分析対象のデータを入力するテーブルを作成します。
どのように分析を行うかをイメージしながら列名を決めていきます。(後から変更もOK)
 ※.テーブル名を設定しておくと、参照する時にわかりやすくなります。

私の場合はキャラクターの育成に必要なアイテムの数を集計したいので、以下のようにしました。

テーブルのベースができたら実際にデータを入力していきます。
トータルで8264件のデータになりました。多い!

登録したデータをピボットテーブルで表示

[挿入]→[ピボットテーブル] でピボットテーブルを表示します。
分析するデータに先ほど作成したテーブルを指定し、新規ワークシートで作成します。

画面の右側に「ピボットテーブルのフィールドリスト」が表示されており、先ほど作成したテーブルの列名が並んでいます。
この列名を下側の列ラベル、行ラベル、値にドラッグすると、その通りのレポートが出来ます。

また、二つ以上のフィールドを設定すると子要素としてデータが細分化されていきます。
各要素はフィルタリングする事ができるので、ここから必要な情報だけを抽出して分析する事も出来ます。
実際に集計してみると、1000個以上必要な素材もあり愕然…。

リレーションシップを設定して複数のテーブルからピボットテーブルを作ろう(Excel2013以降)

先ほど作ったテーブルではキャラクターに関する情報が含まれていませんでした。
そのため、例えば「自分が所有しているキャラクターだけ」、「レアリティが高いキャラクター」といったフィルタリングができません。
先ほどのテーブルにキャラクターの情報を加えるとややこしくなるので、別のテーブルでキャラクター情報を管理し、二つのテーブル間でリレーションシップを設定します。

同じ要領でキャラクター情報のテーブルを作成してデータを登録します。

ピボットテーブルの作成を選択しますと、ダイアログの下の方に「複数のテーブルを分析するかどうか」という項目があります。
このチェックを入れて作成すると、ピボットテーブルで複数のテーブルからフィールドを選択できるようになります。

さて、このまま二つのテーブルからフィールドを選択すると正しく集計できません。
ランタンの必要数がおかしなことに!

これを解決するために二つのテーブルの間でリレーションシップの設定を行います。
右側に「テーブル間のリレーションシップが必要である可能性があります。」とメッセージが出ています。
作成を選択すると、以下のようなダイアログが出てきますので、リレーションシップに使用するテーブルの列を選択します。
(ここではキャラクター名で設定を行います)

リレーションシップを作成するとピボットテーブルが更新され、集計が正しく行われました。

この後はフィルターに別の列を指定していく等、自分が使いたいようにフィルタリングの設定を行っていきます。

ピボットテーブルの便利な点は、データが出来上がっていれば様々な集計が簡単に行える事です。
今回私が作成したのは各素材がいくつ必要なのか?を調べるための物でしたが、素材フィールドを行に移動するだけで各キャラクター毎に必要な素材を見るための表になります。

また、仕事においては顧客情報、商品情報、売上データといったテーブルを用意する事で詳細な売上分析表を作る事ができます。
みなさんも色々試してみはいかがでしょうか。

それではまた~。

2017年5月18日木曜日

Go言語 ~環境構築(on Windows)~

どうも

ひさびさのもりもりです。

先日、社内の会議で「バイリンガルになるべし」というお話がありました。
バイリンガルといっても、話す言語ではなく、プログラミング言語です。

一つの言語を習得すれば、その他言語にもとっつきやすいでしょう。
しか~し、それでも時間はかかると思います。

なので、少しでも時間があるうちにいろいろと触れておこうかと。

ということで、最近少しずつ盛り上がってきているGo言語を始めてみようと思います。

まずは環境の構築を。

Go環境の構築

下記を入れます。
  1.Visual Studio Code
    https://www.microsoft.com/ja-jp/dev/products/code-vs.aspx

  2.Git
    https://git-for-windows.github.io/

  3.Go
    https://golang.org/

VS Codeに必要なパッケージをインストール

cmdに下記を貼り付け。

go get -u -v github.com/nsf/gocode go get -u -v github.com/rogpeppe/godef go get -u -v github.com/zmb3/gogetdoc go get -u -v github.com/golang/lint/golint go get -u -v github.com/lukehoban/go-outline go get -u -v sourcegraph.com/sqs/goreturns go get -u -v golang.org/x/tools/cmd/gorename go get -u -v github.com/tpng/gopkgs go get -u -v github.com/newhook/go-symbols go get -u -v golang.org/x/tools/cmd/guru go get -u -v github.com/cweill/gotests/...

ですが、さっそくエラー。。。



warning: GOPATH set to GOROOT (C:\Go\) has no effect
ですって。


対策

GOPATHとGOROOTを別のパスに設定する。

set GOPATH=C:\Users\<ユーザー>\Go


これで再度、go get~。

デバッグ用のDELVEをインストール

デバッグに必要なのでインストール。

go get github.com/derekparker/delve/cmd/dlv

動作確認

下記のコードでいざ実行。

package main import "fmt" func main() {     fmt.Println("hoge") }

実行結果



とりあえず動いたので今日はこのへんで。

これからいろいろ試していきたいと思います。

ではまた~。


2017年5月12日金曜日

IT×日本酒

ちょっと、軽い話題で。

皆様、お酒は好きですか?

私は、普段お酒は全く飲まないのですが、先日とある日本酒を口にする機会がありました。
それが、旭酒造さんが作られている「獺祭」と言う日本酒です!
お酒好きな方の間では有名なのだと思うのですが、私は最近まで知りませんでした。。。
海外でも高く評価されているそうです。

この日本酒、何がすごいかと言うと、データの管理からお米を磨くところまで、
製造のほとんどを機械が行っているということです。
最近では、原料となる山田錦の安定調達のために、FUJITSUさんの「Akisai」というクラウドサービスも
利用されているそうです。
日本酒作りというと、杜氏の長年の経験や勘が必要とされるものかと思いますが、
ITを活用してこんなにおいしいお酒が造れるのですね。
フルーティーな感じで、日本酒が苦手な方でも飲みやすいなと思いました。

また、社長さんの「おいしいお酒を造りたい」という理念ですが、ものを作る側が、
一番大事にしなければならないことですよね。
私たちも作るものは違いますが、この気持ちを忘れずに、日々仕事に取り組んでおります。


2017年5月9日火曜日

ASP.NET Core WebアプリをBluemixにデプロイしてみた!

「Bluemix」って知ってますか?

アプリケーションを開発・実行する、IBMのクラウド・プラットフォームで、Java、Node.js、PHP、Python、Rubyなど
さまざまな言語で開発することができます。

今回は、Visual Studio 2017で作成したASP.NET Coreアプリを、Bluemixにデプロイしてみます。

ASP.NET Core Webアプリの作成


Visual Studio 2017でASP.NET Core Webアプリを作成します。

まず、「ASP.NET Core Web アプリケーション(.NET Core)」を選択し、プロジェクトを作成します。


























「Web API」を選択します。


これでプロジェクトが作成されました。
Getメソッドはデフォルトで文字列のコレクションを返すように実装されています。
デバッグ開始するとJSONデータのダウンロードとなってしまうのが煩わしいため、下記のように変更しました。
 
[HttpGet]
public string Get()
{
    return "value";
}


Bluemixへデプロイ


Bluemix上にデプロイします。


> cf push <アプリ名>


すると、アップロード完了後、下記のようなログが延々と表示されます。
どうやらアプリケーションの起動に失敗しているようです。


Uploading complete
Destroying container
Successfully destroyed container

0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
(ずっと続く)


ログを確認してみます。


> cf logs <アプリ名> --recent


ヘルスチェックに失敗しているようです。


2017-05-09T16:23:50.19+0900 [APP/0] OUT Now listening on: http://localhost:5000
2017-05-09T16:23:50.19+0900 [APP/0] OUT Application started. Press Ctrl+C to shut down.
2017-05-09T16:24:50.70+0900 [CELL/0] ERR Timed out after 1m0s: health check never passed.


仕方がないので、ヘルスチェックを無効にしてデプロイしてみます。


> cf push <アプリ名> -u none


デプロイに成功し、アプリケーションは正常に開始しましたが、アプリケーションのURLにアクセスするとエラーが発生しました。

 
502 Bad Gateway: Registered endpoint failed to handle the request.



Bluemixのスタートガイドに載っているGitHub上のサンプルアプリと見比べ、いろいろ試してみたところ、Mainメソッド内のホスト生成方法を変更すればよいことが分かりました。

まず、「Microsoft.Extensions.Configuration.CommandLine」をインストールします。






















そして、Mainメソッドを下記のように変更します。
これでデプロイすればOKです。
  
public static void Main(string[] args)
{
    var config = new ConfigurationBuilder()
        .AddCommandLine(args)
        .Build();
 
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseConfiguration(config)
        .UseStartup<Startup>()
        .Build();
 
    host.Run();
}
 

(Bluemixへのデプロイとは直接関係ありませんが、この変更を行うとVisual Studio上でデバッグを開始して起動しなくなってしまいました。プロジェクト設定の「起動URL」に設定されている「api/values」を、絶対URLに変更すると起動するようになります。)






















またいつか、どこかで。