ネガティブリストの抽出がなんで難しいかの話

BI でセグメント抽出の相談を受けるときにつらい話です。

3行

  • ポジティブリスト (条件にマッチしたデータ) を取り出すのは簡単だけど、ネガティブリスト (条件にマッチしないデータ) を取り出すのは難しい
  • だけど、この難しさが伝わらない
  • 伝えるための文章

この記事は「顧客の注文データ (顧客 1 : 注文 N)」や「ユーザのアクセスデータ (ユーザ 1 : ページ N)」のような構造のデータの場合の話です

よくあるリスト抽出

「商品Xを買った人」「直近30日で予約した人」——この手のリストは一瞬で出せる。Looker でも b→dash でも、フィルタをポチポチやれば終わり。

ところが「商品Xを買っていない人」になった瞬間、急に出せなくなります。というか出るんだけど、それはあってないのです。

言葉の上では「した/していない」をひっくり返しただけなのに、データの世界ではまったく難易度が違う。これ、使い方が悪いわけでも、ツールがショボいわけでもなくて、構造的にそうなっている。

「ある」の確認と「ない」の確認は対称じゃない

まず計算の話をする。

「買った」を確認するのは簡単で、購入履歴を上から見ていって1件でも見つかった時点で「はい、買ってます」と確定できる。途中で打ち切れる。

-- 1件見つかれば即確定
SELECT DISTINCT customer_id
FROM orders
WHERE product_id = 'X';

一方「買っていない」は、その人の購入履歴を全部舐めて、どこにも該当がないことを確認して初めて言える。途中で止められない。

-- 全顧客 × 全注文を突き合わせないと言えない
SELECT c.customer_id
FROM customers c
WHERE NOT EXISTS (
  SELECT 1 FROM orders o
  WHERE o.customer_id = c.customer_id
    AND o.product_id = 'X'
);

EXISTS と NOT EXISTS。SQL なら書き方はほぼ対称だけど、計算量は非対称。これが第一の理由です。 つまり、

  • 「買った」は1件あればOK
  • 「買ってない」は「顧客の全リストを集約」して始めてわかる

という構造的な違いがある (これを集約の集約と呼んだりします)。

BI ツールは「集約の集約」ができない

BI ツールは基本的に「2段階の絞り込み」ができない (derived table の話ではないです)

「〜していない人」を出すには、

  1. 顧客ごとに、その行動が何件あるか数える(GROUP BY + COUNT)
  2. その結果が0件の人だけ残す(HAVING count = 0)

という2段階の処理が要る。SQL でいう副問い合わせとか HAVING の世界。

Looker や b→dash のセルフサーブ画面は、この「一度集計して、その結果でもう一度絞る」ができない設計になっている。これはバグじゃなくて、わかりやすさと安全性のためにあえてそうしている。

(「SQLなら一瞬なのに」と言われることがあるけど、それは SQL にその機能があるからであって、BI ツールの役割が違うだけの話)

よくある誤解:「X以外」で絞ればいいのでは

ここ、直感が裏切られるポイント。

「商品Xを買っていない人」を出したくて、「商品 ≠ X」でフィルタをかける。一見よさそうだけど、これだとXもYも買った人が Y の行でヒットして残ってしまう。

-- これは「Xを買っていない人」ではない
-- 「X以外の何かを買った人」であり、XとYを両方買った人が残る
SELECT DISTINCT customer_id
FROM orders
WHERE product_id != 'X';

NOT filter ≠ ネガティブリスト。ここを混同すると、抽出結果がサイレントに間違ってしまうことが多いです。

でこれに対する回避策ですが、「フラグを先に焼いておく」というのがあります。 現実的な方法は1つで、難しい2段階目を、データチーム側で先にやっておく。

具体的には mart 層で「この顧客は商品Xを買ったことがあるか? はい/いいえ」のフラグを事前に計算しておく。

SELECT
  c.customer_id,
  MAX(CASE WHEN o.product_id = 'X' THEN 1 ELSE 0 END) AS has_purchased_x
FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_id;

こうしておけば、BI ツール側は has_purchased_x = 0 で絞るだけ。セルフサーブで「Xを買っていない顧客」が出せるようになる。

ただしこの方法は全然筋が良くなくて

  • 固定条件(「初回購入」「最新予約」など)→ フラグ化できる。いまの mart はだいたいこっち
  • パラメトリック条件(「○月以降、予約していない」「△円以上買っていない」)→ 日付や金額の組み合わせが無限にあるので、フラグとして事前に焼けない。都度データチームに個別依頼するしかない

さらに複合条件になると話はもっと厄介で、「キャンセルして再予約していない」みたいなのは——人間が見れば一目でわかるんだけど——フラグ化の難易度が跳ね上がる。

壁を「仕様」にする

運用で一番効くのは、何がセルフサーブで出せて、何が出せないかの線引きを明文化しておくこと。

  • フラグが用意してある条件 → セルフサーブで抽出可能
  • それ以外 → データチームに依頼

このカタログがあるだけで、「できるはずなのにできない」というモヤモヤが「これは依頼するもの」という納得に変わる。

壁を仕様に変える。地味だけど、これがいちばんの近道だと思っている。

補足

集約の集約が難しい話とかは割と議論はありますが、 「構造の違い」「BIツール」のかみ合わせの悪さを書いた記事がなかったので書きました

AIとのコードレビューを「GitHubのPRっぽく」並行で流す — crit で実装者・レビュアー・自分の三者ループ

AI と延々コードを書いていると、同時に3つくらいコメントしたいことがあります。 ただ、 AI (Claude Codeとか) との対話は基本シングルスレッドなので、1つ目を話して長くなると2つ目以降が何だったかよくわからなくなります。 1つ目が枝分かれしたりするともう、積み残しも、一体何を直したかったかもわからなくなるのを Crit を使って解消した話


crit というツールを miyagawa さんのポスト で知りました。

Crit は "inline code review for AI agent workflows" を掲げる CLI で、ローカルに立てた Web UI 上で diff に GitHub の PR そっくりのインラインコメントを付けられる。しかもエージェントがそのコメントに --reply-to で返信できる。

実際に自分の開発ループに組み込んでみたら、冒頭の課題が解消しました。


困っていたこと:

AIとの対話はシングルスレッド

AI コーディングを日常的にやっていると、対話の最中に「気になる箇所」が同時多発的に湧く。ここの命名が変、この関数は責務が多すぎる、ついでにこのエラーハンドリング握りつぶしてないか——みたいなやつが、次々に。

ところが AI との対話はシングルスレッドで、ひとつ指摘を投げると、会話はその解決に引きずられる。1個目が長引くと、2個目・3個目は宙に浮く。で、しばらくして戻ってきたときには「あれ、他に何を言おうとしてたんだっけ?」になっている。結局スクロールしてログを遡って拾い直すことになります。

人間相手というか github のコードレビューではこれが起きません。 GitHub の PR が指摘をコメント単位で並行に保持してくれるから。10個コメントを置いて、それぞれ独立したスレッドで進み、片付いたら resolve する。頭の中のスタックを UI 側に逃がせてよくできています。

Crit はまさにこれを AI との対話に持ち込むツールで、会話の単線に全部載せるのをやめて、気づいた端から diff にコメントを置いていく。各コメントが独立したトラックとして残り、消化順も並行度も自分で握れるのがよいです。


で、もう一歩進めると、みんなやってる「実装者とレビュアー」を別 subagent にして改善していくやつもここでやらせると、議論の過程がヒューマンリーダブルでとてもよいです。

なにが良いかというと、改善がブラックボックスにならない。「AI がなんかいい感じに直しました」ではなく、どの指摘に何をどう対応したのかが crit 上に全部残る。後から経緯を追える。 レビューの証跡がそのまま設計判断のログになるのが、僕はかなり気に入っています。

しかも、ここに自分自身も第三のレビュアーとして同席することができるのでめちゃめちゃ良いです。 Crit は URL を localhost で出してくれるので、これに人間もコメントを書ける (というか、そういうツールだし)。 つまり AI同士の二者のループに、僕自身が第三のレビュアーとして割り込める。

AI同士でレビューを回させると、放っておくと綺麗に典型的な失敗へ入っていく。

  • 袋小路: 互いに相手の前提を踏襲して、同じところをぐるぐるする
  • 視野狭窄: 直近の指摘の解決に最適化して、そもそもの要件・前提から離れていく
  • ワークアラウンド化: 「とりあえず通る」パッチが積み上がって、設計がなし崩しに劣化する

これを、同じ Crit の画面上でコメント一発で軌道修正できる。 「その方向は前提が違う」「それはワークアラウンドだから debt として残して先へ」——PRレビューと同じ操作感で、AIの暴走を早い段階で折れる。AIに丸投げでもなく、一から手取り足取りでもなく、同席レビューの距離感。これがすこぶる良いです。

実際にやって踏んだ罠

crit の diff は起動時に凍結される

Crit で git-diff モード(--base-branch )で立てて、ラウンドごとに commit しながら回していたら、レビュアーや僕の画面に新しい変更がいつまで経っても出てこない現象が発生しました。

調べた結果(手元は crit 0.16.5)、crit が配信する diff は daemon 起動時のスナップショットで凍結されているので、起動後の変更は、commit しようが未コミットで編集しようが反映されない。/api/file が起動時の断面を返し続けるし、live 更新用と思しき SSE を購読していても変わらなかった。少なくとも僕が観測した範囲では、そうでした。

対策自体はシンプルで、ラウンドの commit ごとに daemon を再起動して現 HEAD を取り直す。幸い crit のレビューは (repo, branch, base) をキーに永続化されるので、--base-branch を保てば再起動してもコメントは消えない。変わるのは port=URL だけ。そこだけ都度共有し直せばいい。

# ラウンド終了時
crit stop --all
nohup crit --base-branch main --no-open --quiet &
crit status --json   # 新しい port を拾って共有し直す

「URL を固定したいから再起動を渋る」は詰みで、未コミット編集も同じく凍結されるので最新は映らない。URL固定と最新反映は両立しない、と割り切ってラウンド再起動を受け入れるのが正解でした。

まとめ

  • AIとの対話がシングルスレッドで文脈が溶ける問題は、crit で 指摘をコメント単位に並行化すると解ける
  • 実装者とレビュアーを 別 subagent に分けると、改善がブラックボックス化せず経緯を追える
  • 僕も同席レビュアーとして割り込めるのが決定打。袋小路・視野狭窄・ワークアラウンド化を早い段階で折れる
  • 実測の罠として、crit の diff は起動時凍結。commit ごとに再起動する

この運用、手順は地味に多いので、僕は Claude Code の skill(/crit-dev-loop)に固めて再利用しています。 実装者・レビュアーのペルソナは再利用可能な agent 定義に切り出して、crit 固有の作法だけを skill が注入する形にした。その構成の話は、また別途やっていきます。

エンジンと LLM の関係 / Claude Code の LifeCycle イベント

エンジンと LLM の関係をきちんと分けて整理しておかないと、決定論的に動作する部分と確率的に動作する部分を意識した指示が出せなくなるのでまとめる そんでもって決定論的に動作する Hook の LifeCycle イベントもまとめておく


  • LLM はあくまで「入力の文字列を元にして、出力の文字列を返すだけのステートレスな API」
    • LLM は AI 側のサンプリング(temperature)によって確率的に動作する
  • 他方、エンジンは Claude Code / Claude Cowork / Codex / Kiro / Gemini などなんでもよいが、 LLM と人間・システムの橋渡しをするラッパーソフトウェア
    • エンジンはソフトウェアなのでイベントを持ち、こちらに介入する仕組み hooks や workflow は「確実に(決定論的に)」実行される
flowchart LR
    Human["人"]
    System["システム<br/>(Bash / HTTP)"]

    subgraph Core["エンジン ⇄ LLM"]
        direction LR
        Engine["エンジン<br/>(決定論)"]
        LLM["LLM<br/>(確率論)"]
        Engine <--> LLM
    end

    Human <--> Engine
    System <--> Engine

イベント

では決定論的に動いてくれる LifeCycle イベントはどんなものか、というと以下

※Block=そのイベントでエンジンの進行を止めたり差し替えたりできるか。✅ は「ここで処理を差し込んで先に進ませない/内容を書き換える」介入点になる

カテゴリ イベント タイミング Block
セッション/ライフサイクル SessionStart セッション開始・再開時
セッション/ライフサイクル Setup --init-only / -p--init--maintenance 起動時
セッション/ライフサイクル SessionEnd セッション終了時
プロンプト入力 UserPromptSubmit プロンプト送信時(処理前)
プロンプト入力 UserPromptExpansion ユーザー入力コマンドがプロンプトに展開される前
ツール実行 PreToolUse ツール実行の直前
ツール実行 PermissionRequest 許可ダイアログが出るとき
ツール実行 PermissionDenied auto モード分類器が拒否したとき
ツール実行 PostToolUse ツール成功後
ツール実行 PostToolUseFailure ツール失敗後
ツール実行 PostToolBatch 並列ツール群が解決し次のモデル呼び出し前
応答/表示 Notification Claude Code が通知を出すとき
応答/表示 MessageDisplay アシスタントのテキスト表示中
応答/表示 Stop Claude が応答を終えたとき
応答/表示 StopFailure API エラーでターンが終わったとき
subagent/タスク/チーム SubagentStart subagent が起動したとき
subagent/タスク/チーム SubagentStop subagent が終了したとき
subagent/タスク/チーム TaskCreated TaskCreate でタスク作成時
subagent/タスク/チーム TaskCompleted タスク完了マーク時
subagent/タスク/チーム TeammateIdle チームメイトが idle に入る直前
コンテキスト/設定/ファイル InstructionsLoaded CLAUDE.md / .claude/rules/*.md 読込時
コンテキスト/設定/ファイル ConfigChange セッション中に設定ファイルが変わったとき
コンテキスト/設定/ファイル CwdChanged 作業ディレクトリ変更時
コンテキスト/設定/ファイル FileChanged 監視中ファイルがディスク上で変わったとき
コンテキスト/設定/ファイル PreCompact コンパクション直前
コンテキスト/設定/ファイル PostCompact コンパクション完了後
worktree WorktreeCreate worktree 作成時(--worktree/isolation:"worktree"
worktree WorktreeRemove worktree 削除時
MCP Elicitation MCP サーバがツール実行中にユーザー入力を要求したとき
MCP ElicitationResult MCP elicitation 応答後、サーバに返す前

出典: https://code.claude.com/docs/en/hooks


まとめ

イベントを使った介入には以下の2系統がある

  1. エンジンが直接処理する (ツールを止める/lint を走らせる/ログを残す) =LLM を介さず完全に決定論的。
  2. プロンプトに文脈を注入する=注入は決定論的だが、従うかは確率的。

「確実にやらせたい段取りは1、判断は2」と置き分けられるのがポイント。

こういった、どんなイベントがあるかわかっていれば「エージェントを起動する前になにかをして、応答が返ってきたらこうしてほしい」を明記して LLM のプロンプトとして決定論的に渡すことができる。 ただし、決定論的に渡したLLM に投げた後に確実な(=決定論的)に指示に従ってくれるかはわからない (確率論的) ということです

書きたかったのは (メモしておきたかったのは) イベント一覧ですw

2019年の振り返りと2020年のやっていき

会社の立ち位置として大きく変革があった年だった。自分の業務としてはすっげー面白い分析をしているんだけど、相変わらずクライアント的なあれこれで公開しづらくて来年こそは、って思ってる。 今年よりも来年の方がデータ分析業務の責任感としては無双感が高まる気配しか無い。 一方で会社分割に伴いリソース不足が発生したり、それに伴ってサービス品質の低下は拭えなかったりと悔しい思いも現在進行系でしている。

2019年

  • 2019年は会社が分割した。前職も会社分割があったので、前職の先輩から「分割が好きなんですね」と言われたりした。
  • 分割後速やかに「日本テレビ株の大きな会社」から「全局が出資している会社からの100%出資会社」に売却された。
  • 勘のよいかたはわかるだろうけど、全局の視聴データを扱えるような座組としての準備が整った
  • 各局のキーマンと視聴データのシステム、視聴データの利活用、個人情報保護法などについて多くの議論を行う場をもらえた
  • 代理店の方と一緒に研究とかもすすめることができた

番組のメタデータと視聴データが組み合わせ

  • ウェブと違い、テレビの視聴データは基本的には選択肢が7つ(NHKx2 + 民放5)しかない。
  • ウェブが能動的メディアと呼ばれることに対して、視聴データは受動的メディアと呼ばれ、「関心があるコーナーだけではなく、前後のコンテンツも閲覧する」
  • このことからウェブと違ってより狭い嗜好性の抽出は難しいかもしれない(例えば、「ベンツのSクラス」といった検索や閲覧はありえない)が、適切な処理を施すことで、視聴者の関心を徐々に徐々に浮き彫りにすることができる(そう)
  • テレビは「世帯で視聴するから家庭内で関心の無い視聴者にレコメンドなどが行われる可能性がある」などと言われ、ビデオリサーチ社の個人視聴率が重視されているが、ある種の方法を使うことで、「世帯の視聴データ」を「個人の視聴データに分割」できる(そう)

こういった、視聴データの分析は、まさに期初の「データの山から金のつぶをコツコツと拾い集める」が実感でき、データを見る業務としては楽しさしか無い

個人情報保護法

  • 年初に副社長と「焦らなくても世の中のデータの使い方を考えると、必ずどこかがやらかして炎上すると思う」と話していたら、想像以上にでかい企業が想像以上にでかく炎上した
  • 年明けすぐに民間資格ではあるが「個人情報保護士」の資格を取っておいて、絶妙なタイミングだったので非常に助かった
  • GDPR 翻訳・原文、 CCPA 翻訳・原文、過去の高木先生のブログを読み漁って、うっかり「個人情報保護法の逐次解説(鈍器・通称 宇賀本)」まで買った
  • 法律の本質的な目的や、容易照合性に向き合ったシステム構成を学べた
  • ぶっちゃけ、「技術 x 法律 x 放送」の3つを理解できている人はほとんどいないので、それっぽいバリューを出せている

2020年

  • 視聴データをどこまで利活用できるか、を考えることが僕のメインミッションになる
    • 当然、新規なサービス・既存のビジネスにどう寄与していくかという意味でドメイン知識不可避だし、これまで以上に法律を理解していく(何なら法律を推し進めていく必要だってあるかもしれない)必要はあるし、技術的にこれらをどう実現していくか、をより一層考えていく
  • 何度か書いたけど1兆8千億円の広告費をどこまでいじって行けるか、人の釜に手どころか腕まで突っ込んで放送局・広告主・視聴者の利益を考えていくか、それを技術・データの立場から推進していけるのは楽しさしか無い

採用活動

  • 人手が足りなさすぎて、研究もできてないし、メンバーにその余暇も提供できてない
  • そんなどころではなく走っているシステムやデータの補正に時間が取られ、毎日シャトルランをしている(復旧・メンテ→プロダクト開発)感じでメンタルがすり減ってきている
  • インフラ・アプリエンジニア/データエンジニア/データサイエンティストを募集しています
  • 業界水準と比べても弊社、能力に対して待遇はいいので来て欲しさしか無い

抱負

やっていくぞ!

2018年の振り返りと2019年のやっていき

昨年は民放各局とどう付き合っていくか、放送業界の中でどう振る舞っていくか、を頭の中心に据えて技術よりもどちらかというと政治よりに近いポジションで仕事をしていたので、書けないことが多い年だった

昨年取り組んでたこと

放送業界でのプレゼンス確立

チームマネジメント

  • 本格的にデータに向き合うべく、データユニットができ、メンバがアサインされたので、チームの構築と教育
    • 苦戦はしたものの、半年でみなデータとの向き合いがどういうことかが見えてきてインサイトの抽出やレポート作成ができるようになってきた
    • 今後は「2 up-down」のレポーティングができるようになってくれると嬉しいし、自分自身ももっと鍛えたい

業界の人との人脈づくり

  • みなさま良くしてくださり、「ザ・業界人」という感じの方とも飲みに行ったりできた。
  • うまく成立しなかったけど LL イベントで「データ放送の BML」セッションでお声がけをした方たちとなんとかコンタクトを維持してくださってる。来年こそ成立させたい

昨年取り組めなかったこと

  • 分析における技術的なインプットができなかった
    • 野生のデータサイエンティストなので手持ちの武器とドメイン知識の吸収力でなんとか凌いでいるのは自分が一番理解している
    • 手持ちの武器を増やすとともに、他分野のデータサイエンティストたちがどのような取り組みをしているかもう少しインプットしたい
  • 個人情報保護法・情報セキュリティの勉強
    • なんだかんだ中に入ると放送業界の上記の技術面は強いとはいい難く、みな知識や担保を求めているのでこのあたり資格コレクターではないけれど、「実務経験があるだけではなく、ちゃんと保証もありますよ」と伝えることで業界全体をうまく安全安心な方面のリテラシ向上もしていきたい
  • AIでなんでも解決マンになるわけではないが、技術検証の意味も込めて視聴データを相手にいろいろ取り組みたかった(が取り組めなかった

今年取り組んでいくこと

  • 資格を取って HAROiD が中心となってリードしていく
  • DeepLearning でデータをもっと嬲る
  • チーム強化
  • データ駆動での放送業界のマネタイズのリフトアップ
  • データ分析系イベントに参加してインプットを増やし、アウトプットの幅を広げる

やっていき

テレビ、視聴率が下がっているって言われてるけどまだまだ 1兆8千億円の広告費が年で投入されてて、ここ1%改善するだけで莫大な利益が生み出されるます。 視聴ログ・クロスデバイスのログ分析したい人、一攫千金のロマンがあると自分では思ってるので、全力で向き合っていきたい

とあるドメインに紐づく GKE の pod を探せ!

証明書更新の時期、ありますね。僕はこの作業がとても嫌いです。 よきにはからってくれていればいいのですが、引き継いだりした場合に

  • どこで動いているかわからない
  • どうやって変えればわからない
  • そもそもどのリポジトリ

ってあるあるだと思います(前職で同じことが起こっていたら非常に申し訳ない)。

kubernetes は便利なんで pod を上げると思うのですがそうなるともう何がなんだかになります。 今日はこれを探すメモです。

手順

% nslookup ${該当のドメイン}
% kubectl get svc
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)         AGE
XXXX      LoadBalancer   10.AAA.BBB.CCC   104.FFF.GGG.HHH   443:KKKKK/TCP   1y
YYYY      LoadBalancer   10.AAA.BBB.DDD   104.FFF.GGG.III        443:LLLLL/TCP   1y
ZZZZ      LoadBalancer    10.AAA.BBB.EEE   104.FFF.GGG.JJJ     443:MMMMM/TCP   1y

ってすれば NAME がでてくるので、あとは kubectl get pod して kubectl exec -it XXXX bash すれば、何者様なのかがわかります

2018年 抱負

前職の(しかも入社したての)頃から「muddyさんはいつ転職するんですか?」と言われ続けていましたが、 2017年の7月1日付けで HAROiD に転職して半年が過ぎました。

HAROiD は3年目に突入したばかりの会社ですが、 TV x Web というのを実現しつつありとてもエキサイティングな環境で働いています。

2017年にやってきたこと

  • プロジェクトごとにプライベートだった Slack Channel をほぼ全て Public 化による社内情報のオープン化
  • 放送局様からの要請 / プロダクトアウトだったためサービスのファクトを各種レポートとして提出
  • InterBEE のためのプレゼン資料づくり
  • 「インフラ/アプリ」「フロント」に分かれていたエンジニアチームをマージ
  • 開発速度を調整しながら必要な箇所の運用の冗長化
  • 経営指針となる情報の提供

あんまり直接的な売上にコミットできてないですね・・・安定性の補強と主体性のある人が自分でキャッチアップして進むための基盤を整備したってところまでです。

あ、あとエンジニアチームのキャリア・アンカーをやって皆の志向性を意識した1on1をやったくらい。

この半年あまりコード自体は書かずに、主に設計とコードのレビュー、キャリアを意識したアサインなど清く正しいエンジニアリングマネージメントとビジネスデベロップメントにリソースを振り向けていた感じです。 今年ももう少し後述するビジネスデベロップメントに注力し、ビジネスを立ち上げてからまたコードをガンガン書いていきたいと思っています。

2018年にやってやりたいこと

データビジネス

HAROiD では、スマホ/PCでログインすることでウェブと紐付けられている視聴履歴データは最高に面白くて、年末の InterBEE で紹介した 「HAROiD x Ad」を今年はきちんと商品化して多くの放送局様・広告主様に利用いただけるように商品品質を高め、実績を積み上げていきます。

もちろん各種のファクトを収集可視化し、サジェストから対策の企画・改善案提案までのトータルでのデータアナリティクス・データに基づくコンサルティングによって自社サービスのグロース・テレビのデータ放送の価値向上はより加速していきます。

ハレのLiVECM からケの視聴体験への進化

ACC に選ばれた「視聴者がウェブからテレビに介入する体験」を提供する LiVECM を「ウェブ→テレビ」から「テレビ↔ウェブ」へより融合したインタラクションに昇華させつつ、より日常の視聴体験の中に馴染ませ、新たな視聴体験を提供していきたいと思っています。

HAROiD では個のクリエイターの力だけではなく、クリエイティブを現実のものに着地させていくテクニカルディレクターの力、それを実現する @toritori0318を筆頭としたエンジニアの力を一つの矢として束ねればそう遠くない未来に実現可能だと考えています。

スマホとテレビ

スマホが台頭し、番組のウェブ配信が始まったことでテレビに費やす視聴時間自体は減っているものの、1億2千万人に視聴率15〜20%の番組、すなわち、その1時間なりの時間で1500万~2500万UUを相手にできるメディアはまだまだ大きな媒体です。 テレビというレガシー(だと思われていて)で参入障壁が高いレッドオーシャンにいつつ TV x Web は実はブルーオーシャンです。

もちろん、レガシーなだけに既得権益との政治的なあれこれはあるかと思っていますが、だからこそ・そこも含めて新しい市場を開拓することは面白いと思えています。

まとめ

下記3つをやってやるぞい!

  • データビジネスの本格的な立ち上げとマネタイズ
  • エンジニアチームのエンパワー
  • テレビとウェブに新たなケの視聴体験の立ち上げ

コードは少し我慢。

おまけ

エンジニアもプランナーもディレクターもほんと能力が高くて、30人ポッキリの会社によくこれだけの人材がいるなぁと思う。 エンジニアチームだけでも、立ち上げ時期だということを理解し、事業を実現するためという大目的に立脚した上で、開発が好きな連中が集まっていて、ディスカッションが常に前向きでとても楽しいです。 あと、酒が好きな人が多いので、個人的には最高の職場です。(転職して明らかにいい意味で酒の量が増え、健康診断があれだった)

HAROiD では仲間を超絶募集しています

www.wantedly.com

www.wantedly.com