名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

ノーススターメトリックについてのメモ

プロダクトマネジメントのすべて、を読んでいます。

Part1, 2あたりを読んでいる感じでは、要求や要望をどう分析していくかが主眼に書かれています。

本書では何となく聞いたことがあるワードや手法について丁寧に解説されています。

その中で特に聞き覚えがないのが NSM(North Star Metric, ノーススターメトリック) だったので、少し調べてみることにします。

読んだ記事

メモ

  • North Star(常に北を指す星)であるので、プロダクト・プロジェクトに関わる人が常に意識すべき指標
    • ぶれないのが大事
  • KPI, KGI に対して影響が大きい
    • KGI = Key Goal Indicator, 重要業績評価指標 らしい
      • 事業に対する評価であるため、売り上げに対する指標となることが多い
    • KPI = Key Performance Indicator, 重要経営指標 らしい
      • 一般的にはプロダクトの施策と結びつける、売り上げにつながる指標
      • KGI を実現するための1つ1つの観測指標、みたいな感じかなと思った
      • KPIを達成するために施策が決まる(アクセス数どれくらいにしたいとか)
    • NSM は KGI と KPI の間に存在する指標
  • KPI に関しての問題点としては、プロダクト体験の評価がしずらいという問題がある
    • それしかないので使わざるを得ない、みたいな状況だと単純な利用ユーザー数は増えるがプロダクト経験はよくならない的な?
    • 競合が出てきた時の分析手法として弱いはず
  • その前に将来の指標に関しては先行指標と、遅行指標の2つがある
  • NSM は先行指標を増やすところにかかわる目標
  • NSM を分類すると重要要素は「時間」「トランザクション数」「タスク数」に分類できるっぽい
    • 納得感はある
  • 重要要素に対してそのサービスの特性に合わせたNSMを設定する
    • SNSサイトなら利用時間、ECサイトなら商品購入数、など
    • NSM は1つであるべき(北極星なので)
      • ただし1システムで複数のユーザーのペルソナを満たす場合は、例外となる
      • ユーザーが「売り手」「買い手」の両方になりえるとか、「配信者」「視聴者」の関係になりえるとか
  • NSMを分解してKPIを設定する
    • KPIは「広がり」「深さ」「頻度」「効率」の4つに分解するのが基本

大体わかってきた気がする。

まとめ

KGI、KPIを定めましょう、というところで、一番サービスの売りとしたいコアな部分が North Star Metric にあたるのであり、それを実現するために分解されたKPIを設定したりするんだなというのを学びました。

確かに自分の実経験を振り返ってみても、意味のない指標(遅延指標)で図ってみすぎたことあったなー(仕事ではなく、イベントでのマネジメントですが)、というのはあったので、NSMを確実に決めて、KPIを決めて… というところをやっていきたいですね。

というかKPIに落とすための手法としては非常にわかりやすかったように思えます。これまで KGI、 KPI だけ決まっていて、そこのつながりがどうもうまくいかないので、NSMが生まれた、とかなんですかね。まあわかる…。

KGIはうーん、しばらく自分で設定する日が来るかわかりませんが(というかビジネス面だとフェーズとかにもよりそうだし難しいね)、個人プロジェクトだと一番大事にしたいところを NSM で決めておく、そしてそれを満たすための KPI を決める、施策を決めて動く、というのはできそうなので、実践できればなと思いました。

最後としては知識としてはつけられたので、実践あるのみ!ですね。

この2週間くらいについての振り返り(2021/04/05)

結構いろいろやっていた。

輪読会

Kubernetesで実践するクラウドネイティブDevOps

Kubernetesで実践するクラウドネイティブDevOps

これを まんてらスタジオ で輪読会しているのだが、この前は発表者だった。

そのために下記やら下記やらをやっていて大変だった。書く方の本質に集中できてなかった感じ。

namonakimichi.hatenablog.com

namonakimichi.hatenablog.com

marp は今後自分の過去発表スライドとかも移していく中で有力候補ではあるので、使いこなそうと思う…(てかもう手元に pdf 残らないと不安になった)。

LT会

これの裏方やってました。

www.youtube.com

ちょっと活動の見積もりが甘すぎたのと、普段LTやるときと全くコミュニケーション形態が違ったので、新鮮かつ大変でしたね(エンジニアの人ってすごいオープンチャット読みがちなんだけど、DMじゃないと読まない人もいるっていうのは文化の違いを感じました)。

あとは結構今回はネタを頑張って作ったので、うまく話せたらよかったんですが、どう考えても4分のLTができたので、早口になりましたね。

3分難しいねんな… 3分、LT、配信ならそれなりにノウハウたまりつつあるので、自分でもなんかやってみるのもありなのかも。

回線

IPv6 にしたって話、書いたような書いてないような気がする。

自分が住んでいるマンションはパケットが詰まりがち?で夜間低速になることが多発していたのですが、大幅に緩和され、安定したような気がします。

(というか Windows OS に起因する部分もあって、アップデートによって調子が良くなってそう)

スマホ

iPhone12 に変えました。キャリア久々に変えて思ったのですが、紐づいているもの多すぎない?ってなりました。多分、携帯電話以外を紐づけるのは微妙なのでやらないようにしたいです(Payとかクレカとか、管理が大変すぎ)。

ちなみに FaceID は素晴らしい発明だと思います。認証が安全かつ高速なのは本当に経験としてよいですね。

あとはもう少し世間が安定してきたら Mac でも買って、 iOS 開発とかも頭に入れたいですね(作りたいものは特にないけど、顔のトラッキングでもできたらやってみて、遊ぼうかなと)。

ウマ娘

自分のソーシャルゲームに対する取り組み方が根本的にダメで、続かないので、もう起動してない。

レアリティが、キャラクターが、とかではなく、パラメーターとスキルしか見なくなってしまい、キャラクターの名前がほとんど頭に入ってない。

昔の経験があまり良くなかったためか、よくできているのにソーシャルゲーム続けるの無理になってしまっている。

何がすごいかというとこの辺

  • 3Dモデルグラフィックス
  • 3Dモデルの動き
  • ゲーム性(育成に加えて、レースも結構運が絡んだりと、確実に勝てるわけでないのが面白いところであり、つらいところ)

3Dモデル見てるだけでも結構おなかいっぱいな感じがするので、そういうのを見るためだけにやってみるのもありなんじゃないかな。

モンハン

一応エンディング的なものが流れるところまでやって、すでに若干飽きている。

というのもモンスターの影形と戦う気持ちが強くなっていて、ハンティングみたいな気持ちで挑めないからである。

とはいえ、モンスターハンターライズは4G以降初めて触るモンハンなのだが、ゲーム性がかなり快適だったりする。

  • 飛ぶ!(重たい武器でも飛ぶとスタイリッシュアクションになる)
  • 移動が速い(サブキャンプとか、ガルクの機能により、移動が最小限になり狩りに集中しやすい)
  • シームレスで、高低差の激しい世界(ゲームとしての移動がないので、世界観に没頭しやすい)
  • 通信(かなり安定している)
  • オプションが充実している(カメラ速度とか、アイコン表示とかの制御が細かい)
  • あとからクエストに参加(合わせてクエストに行く必要がないので、トイレとか飲み物用意してからゆっくりクエストには入れる)

とかとか、快適な要素しかないまである。初めてやった2ndのころからするとびっくりするくらい別のゲームだったりする。

あとからクエストに参加できるのが本当に良くて、最近自分はおなかが痛くなりがちなのだが、先に知人にクエストに入ってもらってから自分は後から入る、というスタイルが取れている。正直すごく快適で、この機能は素晴らしい。

.hack//G.U.

痛みの森イベントだけ残してるといったが、痛みの森イベントも完走した。これは5階層ごとにお題がついている、100階層ダンジョンである。

namonakimichi.hatenablog.com

久々にやって思ったことは下記。

  • 見積もりの完全な失敗
    • 最初の5階層を17分で回ったので、17 * (100 / 5) = 17 * 20 = 340 = 6時間弱、で回るつもりだった
    • 後半の50階層はバトル回数が多くないと報酬が取れず、しかも縛りプレイが必須の敵がいくつか出てくる
    • 結局9時間かかった。3時に終わるつもりが、7時に終わった。マジで疲れた。
    • 痛みの森クリア分のムービー、見た覚えがなかったので新鮮だった
      • 当時やり残せたことをやれて、満足感
  • フェーズボーナスがきつい
    • 当然、全部取りに行ったが厳しすぎて笑った
    • 魔法しか聞かないとか、物理しか効かないとか、状態異常とか、連続攻撃が重なるとか etc
    • 後半はいかに楽な敵と戦うか、戦闘回数を最小限にしつつボーナスを取るか考えてました
    • あとはコンボ数も地味にきつかったです(味方が強すぎて勝手に倒すか、攻撃の手を止めてしまってコンボが切れるか、のどっちかが多発)
  • 後半50階層が出られない
    • セーブあるけど、ちょっと戻りたいぞ?って気持ちになったことが何度か
    • あとはアクセスポイントにフリーマーケット機能つけてほしかったという個人的な意見

とまああ、つら^^^^^^^^^^^^^^^^^とか思いましたが、やっぱり最後クリアしてムービー見たのは達成感ありました。

とはいえ、バランス的にはどうなの?って気持ちはある。

.hack に関しては、無印のリメイク(リマスターでもいいんだけど)を一生待っているので楽しみなところ。てか時間があればPS2でやりたい(時間はねん出されない)。

プロダクトマネジメントのすべて

これを読んでいる。

本当に PO 視点って感じ。開発メインでやってきたけど、スクラムマスターとかプロダクトオーナーとかもいつか経験してみたいなとおもっていて、ちょっとそれっぽい本も読んでいる。

SWOT分析とかあるな~と思いつつ、普段そこまで深く分析して物事を考えていないので、どこかに適応して活用して身に着けて… ということをしたい気持ちがある。

仕事上は開発メンバーとして入ることがほぼだが、どこかで何かを小さく始める、ということをやっていきたいかも(LTの運営かかわったりしてるけど、まだまだスプリントで何か、みたいなのを出せている状態ではない)。

テスコン

今年も個人で参加するらしい。去年も実は一応出てた。

品質関しては割と興味が高い。SETみたいにソフトウェアテスト自動化とかできたら楽しいよな~と思ってる。

分析も手法もまだまだこれから学んでいかなければ、という感じなので、何か学んだらメモを残すかも。

Base Bread

ノリで始めたが、40食は頼みすぎたかも、思ったよりおなかに残る。

カレー、メイプル、何か、を買ったが、まあまあ僕はどれでも食べれる感じで、味に不満はない。

なおめんどくさいのでレンジでは温めていない。

まとめ

この2週間くらい結構疲れていて、だらだらとゲームをしてしまったりしていたので、プログラム書いたり、本を読んだりする活動に対してもインプットアウトプットしなければな~という気持ちです。

とはいえ、しっかりゲームするときはする、しないときはしない、で切り替えて集中できているので、ある意味これはいいのかもしれません。

今年は自分にとって大切な一年になりそうなので、より一層勉強することや、他人と接して価値感覚を磨くこと(まあオンラインで)をやっていきたいですね。

おわり。

自分の環境で WSL2 + Marp を使って pdf を出力するスクリプト

これの続き。

namonakimichi.hatenablog.com

書いたshell

環境変数渡したり、なんかもはや pdf ファイルは一定のディレクトリ内に格納されたほうが便利かなと思って下記を書いた。

英語は感覚で書いているのでめちゃくちゃな気がする。

#!/bin/sh

if [ $# -eq 0 ] || [ $# -gt 2 ]; then
    cat << EOS 
How to use:
    Single File Mode:
    ex) ./build_pdf.sh test-slide/slide.md
    
    Create pdf file in output dir.
    For example input, output pdf file name is slide.pdf

    Optinal mode:
    ex) ./build_pdf.sh test-slide/slide.md out.pdf
    Create pdf file in output dir, output file name is out.pdf
EOS
    exit 1
fi

OUTPUT_DIRNAME="./output/"
if [ ! -e "$OUTPUT_DIRNAME/" ]; then
    mkdir $OUTPUT_DIRNAME
    touch "$OUTPUT_DIRNAME/.keep"
    echo "Create Dir: $OUTPUT_DIRNAME"
fi

OUTPUT_FILENAME=$2
if [ -z "$OUTPUT_FILENAME" ]; then
    OUTPUT_FILENAME=${1##*/}
    OUTPUT_FILENAME=${OUTPUT_FILENAME%.*}.pdf
fi

CHROME_PATH=$(which google-chrome-stable) pnpx marp "$1" -o "$OUTPUT_DIRNAME$OUTPUT_FILENAME"

run script で解決してみる

ところで npm run の形で環境変数を渡す手段もありそうだ。

とりあえず pakage.json にこんな感じの記載をして、固定して渡す環境変数を定義してしまう。

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "marp": "CHROME_PATH=$(which google-chrome-stable) marp"
  },

これで pnpm run marp したら marp が動く( pnpm 試してるので npm じゃないんですが、コマンド体系的に似てて、この動作については一緒なので以後、 pnpm になっていますが、お気になさらず)。

で、引数を雑に渡すと失敗する。

❯ pnpm run marp test-slide/slide.md -o output.pdf
 ERROR   ERROR  Unknown option: 'o'
For help, run: pnpm help run

下記の記事を参考に、引数の渡し方を変えたらできた。 run script では必須の知識ではないだろうか…。

qiita.com

❯ pnpm run marp test-slide/slide.md -- -o output.pdf

> marp-backup@1.0.0 marp /home/yumechi/work/github.com/yumechi/marp-backup
> CHROME_PATH=$(which google-chrome-stable) marp "test-slide/slide.md" "-o" "output.pdf"

[  INFO ] Converting 1 markdown...
[  INFO ] test-slide/slide.md => output.pdf

一応公式のページ

docs.npmjs.com

感想

まず npm run する方向性で考えればよかったですねという反省。まあ久々に shell 書いて勉強になったのでよしとしましょう。

shell 、すぐ書き方なり典型的な処理を忘れてしまうんので、今年こそまとめようと思います…。

追記

今書いてるのは private でいろいろやらないといけないものなので見せられないのですが、時間ができたら自分用の slide 公開場としてテンプレートっぽいディレクトリを作ろうと思います。