『データマネジメントが30分でわかる本』を読んだ

4 月からプログラマーからデータアーキテクト(データ整備人)にキャリアチェンジして(そうなの?)、Looker Advent Calendar 2020 のこの記事で知ったので読みました。¥500 と、大変お求めやすい価格になっています。 データマネジメント知識体系 DMBOK (でぃんぼっく)の独自要約とケーススタディ集です。全 11 章それぞれで 30 秒、3 分、30 分コースを選ぶことが出来るので、ざっと読むのもじっくり読むのも自由な点が秀逸です。 DMBOK 自体知らなかったので、取っ掛かりにはとても良い本でした。SLA はいずれ決めようかなーとか思ったりしました。

2020-12-20 (Sun) · masutaka

優先度より優先順位のほうが偉い

この記事は Feedforce Advent Calendar 2020 の 3 日目の記事です。 昨日は kysnrm の「さよなら湯島 」でした。私も今のところに住んで来年で 6 年になるので、8 回目の引っ越しを少し考えてますが、まだ状況が流動的なので悩ましい…。 (ここから歌詞) 優先度を付けると、高高高高高高とかになることあるよね。みんな優先度が高い。 でも人間は一度に複数のタスクを処理することは出来ないよ。 それに実際終わってみたら、終わった順番が付いているはずだよ。 じゃあ 1, 2, 3… とタスクに順番を付けてみようか。つまりは優先順位ね。 優先度より優先順位のほうが偉い。ダンダン 優先度は優先順位を決める1つの要素でしかないよ。区別しようか。 例えば他にもこんなのを考慮する必要があるよ。 ・期日 ・かかる時間 ・かかるお金 ・サービスへのインパクト(顧客増加、顧客満足度など) ・他のタスクがどれだけ効率化するか? 優先度より優先順位のほうが偉い。ダンダンダン 先の例だと、優先度はだいたい「期日」と「サービスへのインパクト」でふんわり決まっていることが多いと思うよ。 作業者は他の要素も考慮して「優先順位」を決めると良いよ。 とは言え、考えすぎても難しいから、最初は「優先度」「かかる時間」「期日」から「優先順位」を決めると良いよ。 タスクAのほうが優先度が高いけど、タスクBはすぐ終わりそうだし、タスクAの期日までまだ余裕があるから、タスクBを先にやろう的な。 優先度より優先順位のほうが偉い。ダンダンダ、ダン つまりは優先度よりも優先順位は上位のレイヤー、優先度より優先順位のほうが偉いということよ! 優先度より優先順位のほうが偉い。ダンダンダ、ダダン(号泣してみんな立ち上がる) (歌詞終わり) 次回(?)は、私が使っている優先順位を決めるための具体的なテクニックをご紹介します。 明日の Feedforce Advent Calendar 2020 は、八百くんがよく日報に書いていた AI Quest の話をしてくれるみたいです。お楽しみに。

2020-12-03 (Thu) · masutaka

『理論から学ぶデータベース実践入門』を読んだ

4 月から Looker という BI ツールを使って、ウェブ広告の媒体数値や計測数値などの分析や可視化をすべく、日々取り組んでいます。 ちょうど先月社内勉強会でそんな話をしました。 現在扱っているデータは Web アプリケーションで扱うような、正規化されたきれいなデータではありません。NULL は頻繁に出てきますし、サブクエリ等でゴリッときれいにしてキャッシュする処理も書いたりします。いつの間にか想定外のレコードが入っていて、定義を変更することもあります。 今までこのようなデータに向き合ったことはなかったので、こんなスキーマで良いのかなあ?とか思いながらの毎日でした。 そんな中、数年前に 94 ページ目まで読んで挫折したこの本が頭にちらついていました。 以前はふわっと読み始めたと記憶していますが、今回は割と明確な課題があります。今回は挫折しなさそうな気がしたのと、何かのヒントを期待して読むことにしました。 結論から書くと P155 に明確な答えが書いてありました。 リレーショナルモデルに適合しないデータをテーブルを用いて格納する場合は、リレーショナルモデルの原理原則に従う必要はまるでありません。そのようなテーブルでは、NULLを用いてもかまいませんし、正規化をする必要すらないでしょう。 ここを読むまでは、仮にリレーショナルモデルの原理原則に従うのだとしたら、すべてのカラムで NULL を許容しているテーブルを ETL 等でリレーショナルモデルに適合したテーブルにクリーニングするのかなあ?でも現実的ではないなあ?など考えながら読んでいました。なので、急に答えが降ってきたようでした。 SQL はリレーショナルモデルを扱うことが得意ですが、そうでないものも扱って良いと力強く書いてあります。もちろん用法用量を守って。 特に目の前の課題が解決したわけではありませんが、なにか光が見えた気がしました。 他の話も一応書いておくと、理論だけあって全部を理解するのはかなり難しく、特に第2〜4章は全く頭に入ってきませんでした。数年前はここで挫折…。 ただし、第1章の SQL と集合の関係については比較的容易で、私が数年前に読んだ時は SQL への向き合い方が変わりました。気になる人は第1章だけでも読むと良いかもしれません。他も第9章の履歴データや第13章のリファクタリングなども。 なにか課題を抱えている人は、あまり気負わずに流して読むと良いかもしれません。

2020-11-10 (Tue) · masutaka

CircleCI の旧 UI で設定した Slack Integration の設定を確認も変更も削除もできない件への対応方法

今年の春くらいに CircleCI の UI が新しくなったタイミングで、各プロジェクトで設定した Slack 通知用の設定ページはどこかにいってしまいました。 こんな画面でした。 各プロジェクトの設定ページによると、現在は Slack orb を使う必要があるそう。 例: https://app.circleci.com/settings/project/github/masutaka/example/slack それはまあ移行すれば良いのですが、旧 UI で設定した Slack の Webhook URL を確認したくても出来ません。Slack orb に移行した場合に、旧 UI で設定した通知を無効にしてくれるのかも気になります。 CircleCI のサポートに聞いたところ、残念ながらそのような UI は用意されておらず、Slack orb に移行しても自動的な無効化はしてくれないそう。 マジすか・・・! Undocumented API を使って無効化が必要とのこと。新 UI では確認も変更も削除もできないとのこと。それはさすがに困る人が多いんじゃないかなあ…?全部サポート対応するのかしら。 それはそれとして、この記事ではその Undocumented API を使って、旧 UI で設定した Slack Integration の確認と変更、削除のやり方をまとめます。説明しませんが、IRC も出来ると思います。 ※ 9 月にサポートに聞いた時、「Undocumented API を使うのは構わないのだけど、やり方自体も Undocumented なのは変なのでヘルプページに書いて欲しい」と伝えたけど、書かれてないようなのでこの記事を書いています。 確認する こんな感じです。CIRCLE_TOKEN は https://app.circleci.com/settings/user/tokens で作ります。 CIRCLE_TOKEN=xxxxxx VCS=gh ORG=masutaka PROJECT=example curl "https://circleci.com/api/v1.1/project/${VCS}/${ORG}/${PROJECT}/settings" \ -X GET \ -H 'Content-Type: application/json; charset=utf-8' \ -H "Circle-Token: $CIRCLE_TOKEN" \ | jq '{ vcs_url: ....

2020-10-30 (Fri) · masutaka

Looker User Meetup in Tokyo #4(BEACON Japan 前夜祭)に参加した #lookermeetup

【Looker ユーザー限定】Looker User Meetup in Tokyo #4 - connpass 昨日開催されたこちらのイベントに参加しました。本日 9/3 から 4 週に渡って行われる Looker BEACON Japan の前夜祭です。 よく考えたら Looker ユーザーの方々を拝見するのは初めてで、生の声を聴けたことが一番の成果でした。運営の方々、ありがとうございました。 今は会社で Looker を導入し、そろそろ Jumpstart プログラムが終わるフェーズで、これからボッチ LookML 開発に拍車がかかるところです。実装がんばります・・・! 以下、個人的なメモです。 User Talk 1 : Lookerを利用した医療ビッグデータのマーケティング分析ツールの開発 医療データと Looker は相性が良かったとのこと。 それにしても作り込んであるなあ。元が構造化されたデータで扱いやすいのかもしれないが、複雑なデータであることは確かっぽい。 User Talk 2 : DeNAゲームタイトルの共通分析におけるLooker活用事例 ソシャゲだけあって規模感がすごかった。スピーカーの鈴木さんによると、最大 5 人で LookML を開発していて、KPI ごとに担当者を分けているそう。5 人 x チーム数分のようだった。規模がすごいなあ。 共通定義プロジェクトを用意して、継承(extends)して使っているそう。共通定義の定義が難易度高そうだった。どうなんだろう? User Talk 3 : トレタの分析環境とLookerへのこだわり Redash で行き詰まり(?)、Looker に移行したそう。分かる。とは言え、Looker はリターンが多い分、学習コストがかなり高いんだけど、その辺どうだったのかな。 開発体制はスピーカーの CTO 鄧さんと業務委託 2 人で 3 ヶ月で作ったそう。Jumpstart 使ったのかな?あと 2 人くらい Looker のエバンジェリスト的な人(ビジネス職の人かな?)はいるっぽい。...

2020-09-03 (Thu) · masutaka

CircleCI の orb を fork して PR を送る前の動作確認方法

今回 pbrisbin/pushover orb を変更した。PR を送る前に、動作確認がてらしばらく使っている。今後のためにやり方を残しておく。 動作確認用の orb を publish するために masutaka/pushover という scope を作る。orb の scope は一度作ったら削除できず、リネームしか出来ないようだ。自分用なので気にしないことにする。 $ circleci orb create masutaka/pushover You are creating an orb called "masutaka/pushover". You will not be able to change the name of this orb. If you change your mind about the name, you will have to create a new orb with the new name. ✔ Are you sure you wish to create the orb: `masutaka/pushover`: y Orb `masutaka/pushover` created....

2020-09-02 (Wed) · masutaka

テレビ用に HDMI 切替器を買った

MVOWIZON というメーカー 今は ¥1,899 だけど、私は ¥1,399 で買えた https://www.amazon.co.jp/gp/product/B087YRSHZK/ で購入したがすでにページがなかった 5 入力 1 出力、リモコン付き、補助電源も可能でこのお値段はすごい 3 入力 1 出力もある。現在 ¥1,198 https://www.amazon.co.jp/dp/B07QQDV39T/ テレビと繋げるための HDMI ケーブルは別途必要だった 30cm の https://www.amazon.co.jp/gp/product/B00QLF74BQ/ を買った こんな感じで使用中。補助電源はせずに使えている テレビ HDMI1: 個人用 MacBook Air(Thunderbolt) テレビ HDMI2: 仕事用 MacBook Pro(USB Type-c) テレビ HDMI3: 今回の HDMI 切替器 Chromecast PS4 Pro Nintendo Switch 未使用 未使用 HDMI 切替器を Mac と繋いだ時はうまくいかなかった Nature Remo と連携したが、PS4 や Switch を ON にすると勝手に切り替わるのでほぼ使っていない Google Home mini とも連携したが、そもそもテレビと Chromecast の区別がついていなかった(?)事情もあり挙動が不安定 成功する時は「セレクターのチャンネルを1にして」で OK。失敗することもある Nature Remo にテレビとして登録する必要はあるっぽい ダメな配線の例:

2020-08-21 (Fri) · masutaka

Emacs-27.1 がリリースされたので elscreen.el を tab-bar.el に移行した

8/11 に Emacs 27.1 がリリースされました。 全然追ってなかったのですが、タブ機能がようやくネイティブでサポートされたそうなので、elscreen.el から移行してみました。 https://github.com/masutaka/dotfiles-public/commit/14710b91d5342c4aec6666c0bd38dec7808d9927 tab-bar.el のコード(※)を見て、出来るだけ独自の設定はせずに、elscreen.el の挙動と合わせてみました。 ※ M-x find-library [Enter] tab-bar [Enter] で開けます。 真のデフォルト厨なら C-x t ? で確認できるキーを使うべきなのでしょうが、ヘタレなので elscreen.el と同じ C-z を Prefix key にしました。 タブ数の制限がなくなったのはうれしいです(elscreen.el は 10 個までだった)。100 個以上作れることは確認しました。C-x t m (tab-move) でタブを移動できるようになったのも改善点です(しかしドラッグアンドドロップには対応していない…)。C-z C-m とかに定義するかも。 C-x 3 で縦分割したときに、右側のウインドウがタブ領域を上書きしなくなったのもうれしいです。 2020 年にもなって、こんなことで困っていたんだよなあ…。 追記(2022-08-10): しかしドラッグアンドドロップには対応していない… Emacs 28 で drag-mouse-1 (tab-bar-mouse-move-tab) が実装されて、出来るようになっていました。

2020-08-16 (Sun) · masutaka

Chromecast を第1世代から第3世代に買い替えた

https://store.google.com/jp/product/chromecast 触ってられないほどの発熱だったのに触っていられる!これはすごい!() 性能は向上しているので、変な遅延とかは感じられない スマホやタブレットからの YouTube のキャストは良いかも。PS4 やテレビ(LG)のアプリだと概要欄とコメントが見られないので YouTube Music とかの Music のキャストはオーバーかなあ。テレビ付けてるに音楽流すだけなので Google Home Mini がテレビと Chromecast をどう区別しているか分かっていない テレビの HDMI 端子足りない。PS4 と Switch が 3 つのうち 2 つを専有していて、残り 1 つを Chromecast と Mac からの出力で取り合っている。HDMI 分配器を買えば良いのかな 関連記事: Chromecast第3世代、第1世代やUltraと比べて快適さは? - ケータイ Watch

2020-08-14 (Fri) · masutaka

何年も続いている私の Emacs パッケージ管理方法

こちらの記事の私なりのアンサー記事になります。 Emacs のパッケージを少しずつアップデートした: 麦汁三昧 そもそも lock が Emacs のパッケージシステムと相性が良くはないのでちょっと考え直したいところはある el-get は昔試したことはありますが、なにか合わなくて止めました。 今は素の package.el に落ち着いてます。 インストールするパッケージは init.el で管理。 起動時にインストールされてなければインストールされるけど、それよりむしろインストールしたパッケージの把握のためにベタ書きしている。 アップデートが溜まってきたらゴリッとアップデートする。 バックアップを取って、 $ cd ~/.emacs.d $ tar czf ~/.Trash/elpa-$(date '+%Y%m%d%H%M%S').tar.gz elpa M-x list-packages → U → x でアップデート。 Emacs を再起動してエラーになったら、バックアップを復元して後で調べる。でも最近は遭遇してないな。 拙作の BitBar プラグイン Emacs Package Updates でのアップデート確認が便利。 追記(2022-05-05): BitBar は xbar として再起動し、Emacs Package Updates の URL も変わりました。 SwiftBar という BitBar の fork 版もあり、私はこちらを使っています。

2020-07-24 (Fri) · masutaka