blog.toxn

あしあと

チーム

最近チームリーダーっぽいものになった。 新しくできた部署で、新しいことをやるチームのリーダー。 未経験のことなのでわからんのだけど、何事も挑戦だなーと思うので、気張らずにやりたい。

中途でつい最近入ってきた人もメンバーでいるのだけど、その人から「キャラの濃いチームですよね。でも、すごい楽しいです。」と言われた。 こんな感じで、まずは楽しくやりたいなと思う。

勉強のしかた

自分の会社にもニューフェイスが入ってきた。 落ち着いてるし、しっかり自分の意見が言える。芯があってすごいなぁ。

Twitter見ても研修の話が流れてくるし、毎年この時期は若者に負けてらんないなってモチベが上がる。

今、google analyticsを勉強していて、google analytics academyの初級コースを終えて、上級コースに入ったところ。 勉強するときの悪い癖なんだけど、単語ひとつひとつとか細かい所が気になって都度調べ始めてしまう。効率が悪い。 今回はそこを意識・我慢して、提供されている通りにざっくり概要を学んでから細かい所を掘り下げる進め方にした。

一時的にモヤッとするんだけど、段階的に分からなかった点が解消されていって、これはこれで良いなと。 勉強するときにおいても「完璧を目指すよりもまずは終わらせろ」が大事だなと確認できてそれも収穫だったなと感じた。

その前はAWSのサービスを勉強していたんだけど、途中で止まっている。 割り込みでgoogle analyticsを実務で使いそうだったので止めたんだけど、これただ単に時間かけ過ぎなんだなと気づいた。 その前は在庫管理の本読んでたし(途中で止まってる)、その前はデータ分析の勉強していたし(途中)、会社で読んでねと言われた本もあるし(途中)

スピード重視を意識していきたい。

AWSの入門で読んでたのは↓です。公式ドキュメント読んでたけどどうも理解が進まずにいたので…参考になった。

AWSによるサーバーレスアーキテクチャ | SEshop.com | 翔泳社の通販

TED鑑賞会

1ヶ月くらい前からTED鑑賞会をしている。 同僚に勉強熱心な人がいるんだけど、技術的な話題に色々と興味があるというので、自分が感銘を受けた話とかを紹介したいなと思ったのがきっかけ。

あと、社内でもプレゼン見るのが好きな人とか技術に興味ある人がいないかなという淡い期待を持っていて(残念ながらまだ巡り合っていないが)昼休みにオープンスペースで観ている。

日本語字幕ついているものしか観ていないんだけど、大体15分くらいなので、1回で2本を目安にしている。前フリの話とか、観終わった後のフォローをしていると昼休み終わってしまうので悩ましいところ。

次は何見ようかなーと考えていると、以前何観たのかが怪しくなる時があるので、記録で残しておこうと思う。

How algorithms shape our world https://www.ted.com/talks/kevin_slavin_how_algorithms_shape_our_world

一番好きなプレゼン。いつ観てもシビれる。 技術の進歩に対して深く考えさせられる。

Averting the climate crisis https://www.ted.com/talks/al_gore_on_averting_climate_crisis

これは、たまたま鑑賞会やってるのを見つけた偉い人が教えてくれたプレゼン。 アルゴアの話は掴みがうまいと思う。あと営業力。

How computers learn to recognize objects instantly https://www.ted.com/talks/joseph_redmon_how_a_computer_learns_to_recognize_objects_instantly

物体検知の話。オープンソースでこういう技術を使えるのっていい時代だな。安いカメラでも色々出来そう。

The era of blind faith in big data must end https://www.ted.com/talks/cathy_o_neil_the_era_of_blind_faith_in_big_data_must_end

ビッグデータによる判断に対する注意とか。 アルゴリズムに入り込む倫理観について。

Meet Spot, the robot dog that can run, hop and open doors https://www.ted.com/talks/marc_raibert_meet_spot_the_robot_dog_that_can_run_hop_and_open_doors

ボストン ダイナミクスの話。未来感がハンパない。

The real reason manufacturing jobs are disappearing https://www.ted.com/talks/augie_picado_the_real_reason_manufacturing_jobs_are_disappearing

貿易の保護主義の話とか。今や世界分業化しているから、輸入品に多額の関税をかけることは結果として価格上昇して消費者の負担になる。だからやめるべきって話だったけど、工業製品ならまだしも農作物や食品は別ではないかなぁと思ったり。

See invisible motion, hear silent sounds https://www.ted.com/talks/michael_rubinstein_see_invisible_motion_hear_silent_sounds_cool_creepy_we_can_t_decide

最近全く聞かなくなったけど、どうなんだろVisual Microphone。 使い道として、医療か犯罪捜査、スパイ活動みたいなことしか思いつかないねという話はした。

How the blockchain is changing money and business https://www.ted.com/talks/don_tapscott_how_the_blockchain_is_changing_money_and_business

ブロックチェーンの話。仮想通貨に使われているぐらいしか知識なかった。計算リソース大量に使ってマイニングした結果、改竄が極めて難しい公開台帳になるってことでいいんですよね?そのインセンティブとして仮想通貨が与えられているってことで。そこまでよく考えたなと、脱帽。

技術寄りのが多いんですけど、他にも面白そうなものかあるからゆっくり楽しんでいきます。 オススメあったら教えてください。

データ解析の実務プロセス入門を読んだ

きっかけ

自分が今勤めているのが小売をやってる会社なんですが、 社内から「しっかり利益出すためにもデータ分析が大事だよね!情シスとしても色々提案して!」という声が上がってきたことがきっかけ。 ディープラーニングとかAIとか流行りのワードでの外からの提案などもあるので、検討する会社は多いのでは?と思ったり。

社内SEとして商品マスタやPOSデータと接する機会も多いです。自分の入社前から店舗や商品のデータ分析系ツールもある程度は用意されているんだけど、「店舗売上ランキング」「ABC分析」など集計値を見る程度。 売上低迷している店舗や商品に対する施策を練る目的で使うかというと、分析ツールの機能が多すぎて現場もどう使っていいか分からない模様。(つらい)

自分自身も商品開発や店舗運営の知識がある訳でもないので、提案と言われてもどう手をつけたらいいのか分からず、現場まできちんと落とし込めるようにするアプローチを学びたいと思って手に取ったわけです。

感想

実務プロセス入門というだけあって、目的設定からデータ収集、分析、検証までの道筋が示されていて、自分の求めていた内容。いい本に出会えてありがたい。 特に、分析だけやってればいい、他で問題があっても関係ないみたいな考え方は間違っているとか、仕事する上でのマインドセットが書かれていたのは印象的。(これ、データ解析以外でも通用する話だと思うので、若手に読んでもらいたいな。)

データ解析のアプローチについても、ドメイン知識が無くても出来る探索的データ解析についてはまさに知りたかった内容でした。早速自社のデータ使って分析してみたい。 ただ、今社内で持っていて分析に使っているのが本当に良いデータなのか、だいぶ不安。一つ一つを精査する必要がありそう。

新しいデータを集めるにしても、使えないデータにならないか慎重に進めるべきだなと。 読んでて思い出したけど、少し前にコンビニで客層ボタンやめるって記事になってた件、納得がいった。忙しくて適当に打ってるようなら分析に使うにも躊躇する。ポイントカードで客層データ集めた方が効率的で確実だし…

テキストマイニングも未経験の領域なのでやってみたい。TwitterInstagramで自社関連のエゴサはよくやってるけど、活用できるレベルまで持ってこられるといいな。

まとめ

AIでデータ分析!とか華々しいキーワードで飾られていても、実際に運用するには泥臭いやり方で進めていくしかないなと改めて感じました。 技術の進歩も凄いですけど、新しいことにばかり向いていると現場とのギャップで辛さが増す(そして現場の人からの期待感はかなり大きい)ので、そういう現場にいきなり入る前の心構えとして、この本を読んでおくのも良いのかなと思いました。

関連書籍読みたくなりました。深掘りしていきたいです。

データ解析の実務プロセス入門

データ解析の実務プロセス入門

子供用ハーネス試してみた感想

子供もそろそろ2歳になります。早い。 歩くのも達者になってきて嬉しい半面、ちょっと目を離すと遠くに行ってしまいそうなので、リストバンドタイプのハーネスを買いました。

↓これです。

迷子防止紐 ハーネス 子ども 迷子防止縄 お出かけ用品 事故防止 伸び縮可 超軽量(長めの2.5m オレンジ)

リュックタイプのハーネスを初めてみた時は、そこまで必要なのかなーと少し面食らったのですが、最近考えを改めました。 手をつないでいても、振り払って自分の好きな所に行ってしまうので、本当に命綱だと思いました。

最初はめちゃくちゃ嫌がっていたけど、付けているとそんなに気にならなくなったみたい。 芯にワイヤーが入っていて付け根が金属なので、ちょっと重いなという感じ。 あと、子供側のリストバンドはマジックテープが二重になっているので付けたり取ったりが手間ではある。 テープが固いので巻き方気をつけないと食い込んで痛くなりそうだなと思いました。

手をつなぐのが前提ではあるんですが、万が一のことを考えると安心感があって良いと思います。

.net, sqlserverで時間を扱う時のTipsとか

時間の計算とか、保存をする際に色々ハマったので。

はじめに

時間を扱うにあたって、実世界ではよくある「25時」とか「40時間」みたいな表記を.net frameworkSQL Serverなどで用意されている時刻型データではうまく扱うことができず、文字列型で保持するような記事が散見されるのだけど、できるだけ時刻型データを使う方向で調査し得られた知見を残す。

.net編

日時データはDateTime、時間はTimeSpanを利用する。

25時とか非実在の時刻を表現するために

一度、TimeSpanに入れて、DateTimeに加算する。

giste189915923de3dbbd94503b4e67dfc57

TimeSpanをLinqで扱うとき

TimeSpanのList等を使う際には、Ticksを使う。

LinqでTimeSpanは使えず、プリミティブな数値型しか受け付けてくれないので、Ticks(long型)を介して集計等を行う。

↓例

TimeSpan-sample01.cs

SQL Server

TimeSpanはTicksにしてbigintで保持

SQL Serverにはtime型があるが、有効範囲は00:00:00.0000000〜23:59:59.999999なので、24時間以上の時間は保持できない。(MySQLは838:59:59まで保持できるのに)

数時間ならばいいが、24時間を超えた経過時間を持つ際にはTicksでの保持になる。

既にTime型で持っている場合は、次の関数でbigintに変換すればよい。

TimeToTicks.sql

参考:

time (Transact-SQL)

stackoverflow.com

stackoverflow.com

T-SQLでカレンダーを作る

日付をキーとするようなデータを1ヶ月分表示するようなときに使える。 レコードが毎日作られるとは限らない場合、テーブルに保存されているデータだけではどこが欠けているのか分からないが、これを使えば全日分並べることができる。

declare @d as date = '2017-01-01';

with _month(i) as ( select 0 as i union all select i+1 from _month where i < datediff(day, @d, EOMONTH(@d)))
select * from (select cast(DateAdd(day, i, @d) as date) as 日付 from _month) as A

何をしているのか

変数でその月の初日を用意しておく

そのまんま。

declare @d as date = '2017-01-01';

再帰CTE(共通テーブル式)を使って、その月の日数を列挙していく

そのテーブル式にwith句で_monthと名前をつけた。 EOMONTH関数を使うとその月の末日を返してくれるので、datediff関数で1日から末日までの日数差を出す。 結果、1月ならば列iに0〜30の値が入ったテーブル_monthができる。

with _month(i) as ( select 0 as i union all select i+1 from _month where i < datediff(day, @d, EOMONTH(@d)))

用意した変数に、DateAdd関数で日数を足していく

intervalをdayにして、0〜その月の日数-1 を足していけばカレンダーの出来上がり。

select * from (select cast(DateAdd(day, i, @d) as date) as 日付 from _month) as A

あとは、別のテーブルの日付とjoinすれば完了です。