【アジャイル】アジャイル(スクラム)をやれるチャンスがきたので考えを整理する

はじめに

ちょうど2年前に以下のエントリーを書きました。

fujiyasu.hatenablog.com

ただ、前の会社では自分の力不足により断念した感じでした。
しかし、今一度やれるチャンスが出てきたので、考えの整理にも兼ねて
書いておきます。

やること

上長以上の人にアジャイルを理解してもらった上でやる

当たり前のことだと思うのですが、このバックグランドがあるのとないのとでは
「業務でやるアジャイル」はできないと考えます。

「よくわからんがやりたいからやらせている」ということでは
何かあった際に説明するのが難しいですし、同じ目線で話すことができません。

また、現場ベースからのボトムアップも時には必要だと思うので
「一度会話してOKもらったから」という考えにならずに
いつでも上の人たちに説明できるように準備しておくことも大事です。

アサインメンバー(予定者含む)には事前学習をやってもらう

特に未経験者は「アジャイルって何?」からなので
いきなり「こういうやり方でやっていきます!」とリーダーっぽい人から
言われるとその方向に目線が行ってしまいチームとして機能しにくくなると思います。

なので、まず事前学習をしてもらうようにするのが良いと考えました。

学習に最適なものは以下の通りです。

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

言わずと知れたサムライ本です。
厳密的にはスクラムではありませんが「アジャイル」とはなんぞや?
というのを広く浅く学べる本です。

SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK

スクラムに関する本は他にもありますが、ちょうどいいページ数で
マンガテイストなイラストがあるものでスクラム導入からリリースまでを
簡潔にわかりやすく書かれている本なので、こちらがオススメです。

https://www.scrumguides.org/docs/scrumguide/v2016/2016-Scrum-Guide-Japanese.pdf

スクラムのことを十数ページで書かれているもので
時間がないときやスクラムってこれでいいんだっけ?というときに読めそうなものです。

他にもいろいろな本がありますが、読む時間も限られているので
最初はこのぐらい読むまでで良いと思います。

プロダクトについて理解をする

アジャイル(スクラム)は、「プロジェクト」に対してコミットするのではなく
「プロダクト」に対してコミットするものです。

なので、事前にどういうプロダクトなのか?というのを理解しておくことが大事です。
実際に使ってみたり、なぜこのサービスを作ったのかを運用者に聞いてみたり。

アジャイル(スクラム)を勉強した人がいたら、舵取りになる

自分も含めて未経験には不安がつきものです。
未経験者に対しては随時フォローを行い、自分の知識を共有していきます。

ただし「リーダー」ではないので、自分の意見が100%にならないように
うまくチームを誘導していくことも意識していければと思っています。

現状

今まさにスクラムの学習(復習)とチーム作り真っ最中であり
形になっていないのが現状です。

ただ、自分が2年前に宣言してやれなかったことが
今やれているので、不安要素はたくさんありますが形になるようやっていきます。

後は、プログラマとしてのスキル上げなくちゃな・・・

【superset】supersetでSQL Labを使い複数テーブルをJOINしたものをグラフ化する

はじめに

業務でBIツールを導入する話となり、re:dashにしようかな?と思いましたが
あえてsupersetを試してみたくなったので、ローカル環境を作り
いろいろとイジってみました。

ただし、UIは非常に直感的ではなく、すぐにグラフ化するところまで
いかなかったので、操作方法を共有するために手順を書きます。

環境

  • maxOS Sierra
  • Vagrant 1.8.1
    • CentOS6.5
    • superset 1.5.1
    • MySQL 5.6

前提条件

また、以下のエントリでsupersetで日本語を表示できるようにしておいてください。

fujiyasu.hatenablog.com

やり方

SQLの記述と実行

SQL Lab → SQL Editorで画面を開き、下記のようにSQLを作成します。

select
 tc.birthplace
 , mi.name
 , count(mi.name) as 'count'
from
  trn_sale ts
inner join 
  trn_customer tc on ts.trn_customer_id = tc.id
inner join 
  mst_item mi on ts.mst_item_id = mi.id
group by tc.birthplace, mi.name

Run Queryボタンを押下した結果。 f:id:fujikawa-y:20170131200150p:plain

グラフ化

Visualizeボタンを押下して、グラフを作成します。 このとき、Datasource Nameは、一時テーブルが作成されるっぽいので わかりやすい名前がいいと思います。 ボタンを押下すると、未保存状態のグラフ作成画面に遷移します。 f:id:fujikawa-y:20170131200225p:plain

棒グラフではわかりずらいので、テーブル一覧にします。 また、nameカラムがないため、Group byにnameを追加して表示させます。 そして、クエリを実行した結果がこちらです。 f:id:fujikawa-y:20170131200234p:plain

まとめ

JOIN句を入れたものでも簡単にグラフ化をすることができました。
この手軽さがBIツールのいいところだと思います。

次回は、今まで作ったものをダッシュボードに表示するようにしてみます。

【superset】supersetでSQL Labを使い単一テーブルのグラフ化をする

はじめに

業務でBIツールを導入する話となり、re:dashにしようかな?と思いましたが
あえてsupersetを試してみたくなったので、ローカル環境を作り
いろいろとイジってみました。

ただし、UIは非常に直感的ではなく、すぐにグラフ化するところまで
いかなかったので、操作方法を共有するために手順を書きます。

環境

  • maxOS Sierra
  • Vagrant 1.8.1
    • CentOS6.5
    • superset 1.5.1
    • MySQL 5.6

前提条件

また、以下のエントリでsupersetで日本語を表示できるようにしておいてください。

fujiyasu.hatenablog.com

やり方

SQLの記述と実行

SQL Lab → SQL Editorで画面を開き、下記のようにSQLを作成します。

SELECT 
    CASE sex
        WHEN '0' THEN '男'
        WHEN '1' THEN '女'
    END as 'sex'
    , COUNT(*) 'count'
FROM 
    trn_customer
GROUP BY 
    sex

そして、RunQueryボタンを押してSQLを実行させます。 以下、Run Queryボタンを押下した結果。

f:id:fujikawa-y:20170122144611p:plain

グラフ化

Visualizeボタンを押下して、グラフを作成します。
このとき、Datasource Nameは、一時テーブルが作成されるっぽいので
わかりやすい名前がいいと思います。

f:id:fujikawa-y:20170122144823p:plain

ボタンを押下すると、未保存状態のグラフ作成画面に遷移します。

f:id:fujikawa-y:20170122144833p:plain

そして、グラフを保存すると実行したSQLベースのテーブルが作成されます。

f:id:fujikawa-y:20170122145108p:plain

まとめ

今回は単一テーブルのグラフ化をSQLで行いました。 やはり、プログラマとしてはSQLの方が簡単に思えて仕方ないです。 なので、結局メインはSQLで書くことになりそうです。

次回は、supersetのSQL Labを使って複数テーブルを結合したグラフ化をしていきます。

【superset】supersetで単一テーブルをグラフ化するやり方

はじめに

業務でBIツールを導入する話となり、re:dashにしようかな?と思いましたが
あえてsupersetを試してみたくなったので、ローカル環境を作り
いろいろとイジってみました。

ただし、UIは非常に直感的ではなく、すぐにグラフ化するところまで
いかなかったので、操作方法を共有するために手順を書きます。

環境

  • maxOS Sierra
  • Vagrant 1.8.1
    • CentOS6.5
    • superset 1.5.1
    • MySQL 5.6

前提条件

また、以下のエントリでsupersetで日本語を表示できるようにしておいてください。

fujiyasu.hatenablog.com

やり方

テーブルの追加

Sources → Tables → +ボタン で遷移して、以下の通り入力します。 f:id:fujikawa-y:20170114145736p:plain f:id:fujikawa-y:20170114145746p:plain

上記のように登録したら、保存をします。
保存した結果、一覧に表示されます。 f:id:fujikawa-y:20170114145832p:plain

グラフの作成

Slices → +ボタン で遷移して、以下の通り入力します。 f:id:fujikawa-y:20170114145850p:plain f:id:fujikawa-y:20170114145903p:plain

未保存状態のグラフ作成画面まで遷移すればOK。 f:id:fujikawa-y:20170114145921p:plain

出身都道府県の件数をグラフ化

以下のように設定して、クエリを実行します。 f:id:fujikawa-y:20170114145952p:plain

クエリの実行が完了すると、テーブル表示で表示されます。 f:id:fujikawa-y:20170114150009p:plain

グラフの保存

Save asボタンを押下すると、以下のモーダルが表示されるので任意の名前を入力して保存します。 f:id:fujikawa-y:20170114150035p:plain

今回は「2017-01-15_blog_001」という名前で保存します。 f:id:fujikawa-y:20170115153311p:plain

保存が完了すると以下のようになります。 f:id:fujikawa-y:20170115153336p:plain

Slicesの一覧ページを見るとちゃんと保存されているのがわかります。 f:id:fujikawa-y:20170115153415p:plain

まとめ

単一のテーブルだけですが、やろうと思えばSQLを書かずにグラフ化が可能ということがわかりました。
ただ、プログラマとしてはSQLを書いてグラフ化するのが普通だと思います。
re:dashはメインがそれになります。

次回は、supersetのSQL Labを使ってグラフ化をしていきます。

【superset】supersetで日本語を文字化させないようにするやり方

はじめに

業務でBIツールを導入する話となり、re:dashにしようかな?と思いましたが
あえてsupersetを試してみたくなったので、ローカル環境を作り
いろいろとイジってみました。

RDSと繋ぐのは簡単だったのですが、まさかの日本語が文字化けてしまい
正常に表示するのに苦労したのでやり方を共有します。

環境

  • maxOS Sierra
  • Vagrant 1.8.1
    • CentOS6.5
    • superset 1.5.1
    • MySQL 5.6

前提条件

  • VagrantからCentOSに接続できること
  • supersetがインストールされていてログインできること
  • 日本語のデータ登録されているMySQLがあること

やり方

Sources → Databasesを選択します。 f:id:fujikawa-y:20170114151057p:plain

次に+ボタンを押下して、新規登録画面に遷移します。 f:id:fujikawa-y:20170114151344p:plain f:id:fujikawa-y:20170114151402p:plain

そして、MySQLの場合、以下のように記述します。
※今回は、BOX内にMySQLをインストールしてそこを参照しています。 f:id:fujikawa-y:20170114152347p:plain

「SQLAlchemy URI」のURI末尾に「?charset=utf8」をつけたら日本語の文字化けはなくなりました。
最初、Extraの設定でうまくいくかもと思ったのですが、まったくうまくいかず
結局、URLにパラメータをつけるということにしました。

そして、日本語が表示されるようになったか確認します。 f:id:fujikawa-y:20170114152955p:plain 日本語が正常に表示されています。

OSSになってまだ半年も経ってない。
また、日本での運用事例もないため、だいぶ苦戦しました。

次はテーブルの作成手順を書きます。

【Python】CentOS6.5にPython3.5.2をインストールするとき「locale.Error: unsupported locale setting」が出るときの対処法

はじめに

ちょっとPythonでやりたいことがあり
Pythonを触ったことない人がPythonをインストールを実施したところ
数十分ハマったので、メモ書き程度の話です。

環境

  • OS X El capitan
  • Vagrant 1.8.1
    • CentOS6.5
  • Python3.5.2をmake installでインストールする

前提条件

  • VagrantからCentOSに接続できること
  • pyenvを使わずにインストールする

やってみた

以下に書かれていた内容をそのまま実施してみました。

chyka.hatenablog.jp

その結果、エラーが発生

locale.Error: unsupported locale setting

エラーの通りなのですが、localeがサポートされていないということらしいです。
なので、localeを確認します。

[vagrant@vagrant-centos65 ~]$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=ja_JP.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

言語がバラバラだからかな?と思い、言語を英語にしてみたりしました。

sudo vi /etc/sysconfig/i18n
. /etc/sysconfig/i18n

しかし、うまくいかず困ったときのstackoverflowです。
そして、同じように悩んでいる記事を見つけました。

stackoverflow.com

その結果、以下のコマンドを打てば良いということです。
適用した内容も載せておきます。

[vagrant@vagrant-centos65 ~]$ export LC_ALL=C
[vagrant@vagrant-centos65 ~]$ locale
LANG=en_US.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

重要なのは、「LC_ALL」のようですね。
そして、インストールを再実行してみたところうまくいきました。

まとめ

こういうところで行き詰まると、本来やりたかったことが
遠のき大変ですがもっと簡単にインストールできないものかな?と思いました。