YouTube でテックカンファレンスの動画を見ながら Scrapbox にメモを取るのが結構よい

ので年末年始にそういうのをやっていた。アニメを半クール分 or 映画を 1 本見る、GCP の動画を 2 本くらい見る、酒を飲む、ウーバーイーツで飯が届く、みたいな黄金サイクル。

scrapbox.io

最近はいろいろあり BigQuery を使おうとしているものの、これまでこういうのに全然触れてこなかったのでまったく土地勘がなく、世界観や各社の情勢を勉強するために YouTubeGoogle Cloud Next の動画を眺めたりしていた。

で、YouTube でこの手の動画をぼーっと見てるとだいたい眠くなってきて、そのうち飽きて別のことを始めたりとか、関連動画に出てる趣味の動画を見始めたりしてしまいがちなんだけど、なんらかメモを取りながらならそういう事態を避けられてよい。もはやほとんどメモをとるのが目的というつもりで見ているんだけど、ぼーっと見るよりは内容が頭に入ってくる感じはあるのでマシだと思う。

だいたいこういう感じでやってる:

  1. 動画を見ながらメモとりたいことが発話されるまで眺める、飛ばして良さそうな部分は普通にシークする
    • Google Cloud Next の動画はほとんどキャプション (字幕) (それも自動生成じゃないやつ) がついてて便利
      • 英語正直全然自信ないけど 1.25 倍とか 1.5 倍で再生してもまあついていける
  2. メモとりたいときメモを取る、動画の何分何秒くらいなのかも一緒にメモっておく
    • 気になるトピックがサクッと流されたときはググってちょっと調べたりして、参考になったページのリンクもメモに残す
  3. 動画が終わるまで繰り返す

メモとしてもそこそこ役に立つ感じのものが出来上がるし、他の人にこの動画よかったので見てくださいっていうというときにもメモごと見せたりできると便利。


こういうのをやるために、パソコンで検索可能な形でメモを残す手段にはいろいろあると思っていて、

などなど、人それぞれだと思う。

個人的には、

  • 真のプレーンテキストを書くのは素朴すぎてめんどくさく感じてしまう時がある
    • ふだんは Markdownはてな記法ばっかり書いてるわけなのにこう思ってしまうのはなぜなのか
  • EvernoteOneNote はたまに使ってみるもののなんかしっくりこない
  • ペンデバイスはそもそも持ってない

という感じで、あんまり決定打がなく、ずっとその時そのときで適当な方法でメモをとっていたんだけど、Scrapbox を使ってみたらかなりちょうどよかった。

Scrapbox の良さについてはいまさら語るまでもないと思う。

tech.recruit-mp.co.jp

  • 独自の軽量マークアップはそこそこ癖があると思うけどすぐ慣れる
    • はてな記法[http://***:title] が欲しくなることはまあある
    • MacCtrl + T を使ってカーソル前後の文字を入れ替える Emacs のアレを意外と使ってたんだなという気持ちになった
  • 隠すこともないかなっていうドキュメントをインターネットにそのまま公開できる

Fitbit Versa 買ってから毎日着けてて 2 ヶ月くらい経った気がする

なんか最近体調が悪くなりがちで、いろいろ心当りはあるものの、自分の体の各種メトリクスをモニタリングできたら客観的に判断できてよさそう、というつもりで買った。id:hitode909 さんが使っていて、不満はありますか、特にないです、という会話ができたのもある。

blog.sushi.money

もう 2019 年だけど、買ったのは 2018 年なので 2018 年買ってよかったもの情報ということでご査収ください。

気に入っているところ

  • 自動睡眠検出はそこそこ正確
    • 目が覚めたあとにベッドのなかでうだうだしてるのは当然睡眠にはカウントされない (それはそう)
    • ガッツリ2度寝したら後追いで睡眠が伸ばされたことになるのは便利
    • 睡眠の敏感さみたいな設定があって、普通と敏感の2種類が選べる、敏感の方に設定してるからかはわからないけど、昼寝もそこそこの制度で検出されて便利
      • 正月ということで思い切り昼夜逆転してる様子が数字として残り、Fitbit 社のビッグデータとなる
  • 心拍計もたぶん正確なんだと思うけど比較対象がないので本当にそうなのかはよくわからん
    • よくあるスマホのカメラに指くっつけて計測するアプリみたいなのとはほとんど同じ数字になるのでそういうもんだと思ってる
  • 電池は本当に4日くらい持つ
    • 2〜3日にいっぺんくらいの頻度でシャワー浴びてる間に充電しておく、みたいなリズムで使い続けている
      • 泳ぐのを測定できるくらいの防水なのでつけたままシャワーしても特に問題ない
  • Apple Watch より劇的に安い

困っているところ

  • iOS 謹製のヘルスケアアプリからは完全に独立しているという世界観
    • Fitbit・ヘルスケア間の同期ができるサードパーティアプリがそこそこ存在するけどいまいち決定版っぽいのがないという状態、いくつか試したけどどのアプリにも微妙に気に入らないところとか何故か同期してくれないメトリクスがあるので、これくらいなら自分で書いたほうが早そうな気もする
    • ヘルスケアアプリどうでもいいならどうでもよさそう
    • Fitbit ファミリーの外とは断絶されるので、OMRON connect みたいのとは相性よくない感じがする (使ってないけど)
  • ウォッチで使えるアプリらしいアプリはほとんどないので期待してはだめ
    • サードパーティアプリ本当にぜんぜんなくておもしろい、Windows Phone 7 のほうが遥かにアプリあったと思う
  • シュッとしてるウォッチフェイスの選択肢が限られている
    • Fitbit はウォッチフェイスに課金できる仕組みを提供していない *1 ので、サードパーティの開発者がシステムをまるごと提供しててだいたい皆それを使っているという状態
    • ウォッチフェイスはかなり簡単に自作できるけど、プリインストールされているフォントの選択肢が好みと合わなかった場合がめっちゃだるいと思う
      • 好きなフォントから必要な文字を SVG で取り出してなんかしたりする必要がありそう
    • Fitbit 純正のウォッチフェイスが全然好みではないのでかなり厳しい、時間見たいだけならチープカシオ買ったほうがいい
  • Fitbit アプリ、なんか独特の作りになってる部分があってむずい
    • 目的の情報がどこにあるのか慣れるまでわかりにくい感じがする
  • 時計内のストレージに音楽保存して Bluetooth イヤホンで聞けるということになっているけど特にうれしさはない
    • マルチペアリング対応の Bluetooth イヤホンでも、時計とペアリングとかしたらなんか面倒な挙動になりそうな予感しかしていない
    • 時計のストレージに音楽を転送するのが難しい
      • パソコン上の公式ユーティリティから Wi-Fi 経由で iTunes のライブラリを転送できるということになっているけど、めっちゃユーティリティが固まりまくるのでどうにもならなかった
  • Fitbit Pay 日本では一切使えないけど NFC リーダーに反応してバイブが発動するので自動改札通ったときとかにブブブってなったりしてやかましい
    • 機能自体をつぶせないのかと思ったけど無理っぽい

総評

安くてウォッチフェイス見づらくてもよくてライフログ (この言い方だれもしなくなったと思う) 記録するためだけならお買い得だと思う

*1:そんなことできるアプリをストアで配布するのは不可能な気もする

既存サービスでグロースハック的なことをやっていくとき、アプリケーションエンジニアとしてのとっかかり

最近は、はてなブログでグロースハック的なことをやっている id:polamjag です。このエントリははてなエンジニア Advent Calendar 2018 の 20 日目のために書かれました。

昨日のエントリは SRE の id:hokkai7go さんによる re:Invent2018に行ってきました - Hatena Developer Blog でした。re:Invent アツいですね。Amazon.com の CTO のキーノート、Skrillex のロゴ T シャツを着ていて、一体どういう文脈なのかと思ったら Skrillex が re:Play というアフターパーティーに出演していたらしいということを知り、そこからもスケールの違いを感じました。



今の数字がどうなっているのか、どう取っているのかを調べられるのはエンジニアだけかも

サービスを伸ばすためにどういう施策をやったらいいのか考えたり、考えた施策の優先順位を決めたり、といったときには、普通はなんらかの数字が重要な判断基準になると思います。数字といっても、今月の売上はいくらでした、といった粒度の数字だけではそういった判断はできないはずで、なぜ売上がそうなっているのか説明できないと本質に近づくことはできないと思います。

いわゆるコンシューマ向けのサービスであれば、ユーザーのみなさまの行動が重要な説明材料になるはずです。既に多くのユーザーさんに使っていただいているサービスであれば、今月はこのサービスでどういう行動をしましたか、なぜそうしようと思いましたか、といったことを全員に直接質問して回るのはたいてい不可能でしょう。というわけで、ユーザーのみなさまの行動のログをとっていい感じに分析できる必要がある、というふうに言えるでしょう。

Web アプリケーションやスマホアプリにおける行動ログを集計する仕組みには、概ね以下のような段階やジャンルが存在すると思います:

  • 行動ログを集めてるデータ基盤的な存在があるならそれで
  • Google Analytics などのサービスを入れていて、それで見れるメトリクスならそれで
  • サービスのデータベースに入っているアプリケーションのデータを集計することもあると思います
  • 基盤めいたものに入っていない状態なリバースプロキシなどのアクセスログを直接集計するのは最終手段に近い
    • どのようなセグメントのユーザーによる操作なのか、といった情報は普通のアクセスログには現れない

こういった仕組みの面倒を見るのは、基本的にはアプリケーションエンジニア (あるいは SRE などインフラサイド) の担当であることが多いと思います。また、実際にどういうフックポイントでどういう情報を送っているのか、データベースはどういうスキーマで何が保存されているのか、ということを知っているのも当然ながらアプリケーションエンジニアであるはずです。

ログについては、社内にそういうチームや横断組織があるならうまく連携してやっていくという感じかもしれないですし、なければとりあえずチーム内でまわしていくということになろうかと思います。手元にそういう仕組みがない状態でも、昔のログがとりあえず S3 に置かれてあれば、そこそこ大規模であってもほぼ前準備なしで Amazon Athena でいい感じに集計できたりと、まず素朴な数字を見てみてスタート地点に立つということをやりやすくなっているのではないかと思います。

ということで、実際に施策の実装をやっていく前のフェーズでも、アプリケーションエンジニアがグロースハックめいたことをやっていくためのスタート地点以前に立つためにできることはいろいろありそう、そのあたりから回していけるとチームの初速を出せるかもしれませんという話でした。


明日は id:takuji31 さんが Kotlin についてなにか書く回です。引き続きはてなエンジニア Advent Calendar 2018をよろしくおねがいします!

実売18000円のスマホで生活する

数ヶ月前に、それまで使っていた iPhone 6s の画面を完全に割ってしまい、これはまずいということで間に合わせの予備用として買ったのが moto e5 だった。

Amazon の紹介リンクを貼り付けているけど、画面を割ったのはプライムデー真っ最中のタイミングで、東京23区内でもお急ぎ便が数日かかりそうな感じだったのでヨドバシ.comで買った。値段はだいたい一緒。日曜の夜10時くらいに注文して、翌日月曜日の朝10時前に出社したときにはオフィスに届いていたのはさすがに笑ってしまった。

moto e5 は Android 8.0、RAM は 2GB、本体ストレージは 16GB、CPU は現行のローエンドという感じで、ディスコンになってない機種のなかでは最弱クラスだとおもう。安かろう悪かろうではなく安いのだ、というやつ。適当なベンチマークを走らせてみても、下手すると完走することすらできずにクラッシュしてしまうという感じで、スコアが出ても iPhone 6s の数割程度出ればいい方だ。

実際に使っていても、画面のスクロールがなめらかにできる瞬間というのが基本的に存在しない。Android の開発者メニューから GPU の利用状況を表示するアレを有効にしてみると、プリインストールのホームランチャーを含むほとんどすべての状況で 20 〜 40fps くらいしか出ていないことがわかる。スクロールだけでなく、あらゆる読み込みがのろくて、Windows XP とかのころを思い出す感じ。

一方で、のろいのはのろいけど動くことには動くのが面白い。Twitter も Instagram も YouTube も Netflix も Spotify も使える。Slack とかも遅いけど普通に使っている。Google カレンダーは最近のアップデートで一気にスクロールが重くなってちょっと困っている。あと、普通に写真だって撮れる。

f:id:polamjag:20181006164435j:plain
夕方の渋谷。もちろん色とかの補正はしているけど、撮る気が失せるほど画質が悪いというわけでもない

当然 Chrome も動くし、当たり前だけど ServiceWorker のオフラインキャッシュだってふつうに動いていた。

一応 Android のバージョンは新しいので、遅いこと以外は意外と困らないのが面白い (遅いのはまあまあ困るけど……)。2ヶ月くらい使っていて、18000 円でここまでインターネットを我が物にできるのはかなり尊いことだな、と思うようになった。あと、CPU がしょぼいのにバッテリーの容量は妙にでかい (4000mAh) ので、3〜5 日くらいは充電する必要がなくて面白い。ガラケーだってもっと頻繁に充電してたと思う。

個人的には音楽ライブラリは常に iTunes と同期したいので iPhone 6s の画面は修理したけど、面白くてしばらく moto e5 を使い続けていた*1。いまは iPhone XR の発売を待ち続けている。

*1:なんか iPhone の調子がおかしくてバッテリーがすぐ減るというのもあったけど

オープンソースソフトウェアなら、ドキュメントが散逸してもそれらはたいてい Web 上でパブリックに公開されているはずなので Google で検索すればなんとか辿り着くことができるかもしれない、一方クローズドソースの場合は、グループウェアとか GitHub のどこかとかレポジトリ内に Markdown も含めるとか Google ドキュメントとかでなんかいろいろ書くことになるだろうけど、それらの検索エンジンは Google の Web のそれほど賢くないので埋もれてしまうかもしれない、ということをふと思いついた。

macOS + Visual Studio Code で拡張を使わずに C-a で物理行頭と論理行頭をいったりきたりする

物理行頭・論理行頭っていうのはこういう意味[要出典]で、

function hoge () {
// ↙物理行頭
        alert(1);
//      ↑論理行頭
}

Emacs を使ってたころから、 C-a を一回押すと論理行頭に、もう一回押すと物理行頭に、更に押し続けると論理行頭と物理行頭を行き来する、という設定にしていたので、これを VS Code でも真似したい。

で、拡張作ったりしないとダメかな〜と思っていたものの、普通に Home を打鍵したときの挙動は既にこれと全く同じ感じだったことに気がついたので、C-a でも同じ command を実行するように設定すればよさそう、と思ってやってみたら正解だった。

Preferences > Keyboard Shortcuts > "For advanced customizations open and edit keybindings.json" をクリックすると開ける keybindings.json に、以下のようなエントリを追加すればよい。

[
    {
        "key": "ctrl+a",
        "command": "cursorHome",
        "when": "editorTextFocus"
    }
]

よくみると、デフォルトでは cursorLineStart コマンドになっている。