【タイパ】コンテンツが溢れる時代の救世主?

タイパとは…🤔

みなさんは「タイパ」をご存知ですか?

「タイパ」とは「タイムパフォーマンス」の略語です。

かけた時間に対する効果、すなわち「時間対効果」のことである。かけた費用に対する効果(費用対効果)を意味する「コストパフォーマンス」の「コスト」を「タイム」(時間)に置き換えた造語で、和製英語。

Wikipedia – タイムパフォーマンス

ということみたいです。

タイパが「いい」と「悪い」⏱

「タイパ」は、Z世代を中心とした若者の間で流行している価値観になります。

YouTubeのショート動画やInstagramのストーリーズなど、空いた時間で手軽に情報を取り入れる手段が増え、自分が欲しい情報を簡単に集める事ができるので、かけた時間に対して高いパフォーマンスを得られることが流行の要因といえます。

反対に、長時間の映画などは「タイパが悪い」動画といえます🙅‍♀️
そんなタイパが悪い動画を解決するのが、動画の倍速再生機能になります。
この機能を使えば、1.5倍や2倍などの再生スピードで動画を視聴することができるので、「タイパの悪い」長尺動画を「タイパのいい」動画に変えることができます。

YouTubeをはじめ、様々な動画配信サービスには倍速再生機能がついており、「0.25〜2倍」ぐらいまで再生速度の調整できるようになっています。
ニュースや少し長い動画、ちょっと気になっていたドラマのあらすじをササッと見る際などに再生スピードを上げて視聴ことで、視聴時間を短くして少ない時間で効率良く動画を視聴しています。

逆に英語の発音やスポーツの得点シーンなど、ゆっくり再生してしっかりと確認したい場合は再生スピードを下げて視聴することもできます。

倍速再生が可能な動画配信サービス一覧

現時点で、倍速再生が可能な動画配信サービスは以下になります。(2023/04/25時点)

サービス名 倍速対応
YouTube
Netflix
Amazonプライムビデオ ×
Disney+ ×
U-NEXT
ABEMA
dTV
dアニメ
Hulu
TVer
Paravi
FOD
DAZN ×

一部サービスではテレビ視聴時未対応

倍速未対応のサービスで倍速再生をする方法⏯

ブラウザ拡張の「Video Speed Controller」を使うと、倍速再生に未対応のサービスで倍速再生ができるようになります。
ブラウザの拡張機能を利用するので、PC視聴限定となりますが非常に便利な拡張機能となっています。

【インストール方法】
以下の手順でインストールします。
Video Speed Controllerをインストール後、特に設定をしなくてもすぐに使うことができます。

  1. ChromeウェブストアからVideo Speed Controllerを追加する
  2. 動画再生画面を開く
  3. 再生画面の左上にコントローラーが表示されるので、そこから再生スピードを変更する

    左から順に、
    ・再生スピード
    ・10秒巻き戻し
    ・再生速度を下げる(-0.1倍)
    ・再生速度を上げる(+0.1倍)
    ・10秒早送り
    ・コントローラーを非表示
    となっています。

便利なショートカットキー🛠
以下のショートカットキーを利用すると、マウスで毎回ポチポチ操作せずとも再生スピードを操作することができます。
覚えると大変便利なのでぜひ使ってみてください。

ショートカットキー 操作内容
V コントローラーの表示・非表示
S 再生速度を下げる(-0.1倍)
D 再生速度を上げる(+0.1倍)
Z 10秒巻き戻し
X 10秒早送り
R 再生速度のリセット

なんだかんだ言って、使い分けることが大切…

散々「タイパ、タイパ」と連呼してしまいましたが、私は長編の映画などはゆっくり観たい派なので全ての動画を倍速再生しているわけではありません。笑
用途によって「タイパ」は使い分けていくことが大切だと思っています🥹

様々なコンテンツが溢れている現代ですが、より多くのコンテンツを楽しむために「タイパ」を日常に少し取り入れてみてはいかがでしょうか。

ふるさと納税で食べたいちごがおいしかった話

ふるさと納税——それは各地域のおいしいものが食べられる魅力的な仕組み。

 

というのは本来副次的なものですが、
ふるさと納税サイトでは返礼品を注文しているという感覚なので、
そしてそれを狙っているようにも感じるので間違いではないはず。

 

ふるさと納税を扱うサイトで返礼品を眺めているときに、
ふと、古都華といういちごがおいしいと聞いたことがあったのを思い出し、
古都華で検索してみるとおいしそうないちごだったので早速納税。

待つこと数日、古都華と書かれたきれいな箱が届きました。

箱の中身は、見るからに高そうなっゃっゃのいちごが、
大きいサイズと小さいサイズに分かれて2つのパックに入っていました。

味は、本当においしかったです。
いちごの味でした。

我ながら酷い語彙力なので「食レポ コツ」で検索してみましたが、
やっぱり、ただただおいしかったとしか言えません。
酸味と甘味がしっかりとあって、「いちごの味」というのを純粋に突き詰めた味。

 

実は、過去に古都華と書かれたいちごを食べたことがあって、
そのときは普通のイチゴとしか感じなかったように思います。

おいしいには違いなかったのですが、
化粧箱に入っているようなことはなくごく普通に売られていて
味も全然違ったような気がします。

そのとき食べたのは、実は古都華ではなかったりしたのかもしれませんが、
名産品はその地域外で食べると無難な味がしたりして、
あれ?ってなるのと似たようなものかとも思ったり。

また食べたいと思えるいちごでした。
気になった方は早速納税です。

ごちそうさまでした。

英語の面白い慣用句

こんにちは。開発担当のマットです。
オーストラリア生まれ育ちですが、人生の半分ぐらいは日本に住んでいます。

日本に来た時、日本語を必死に勉強しましたが、どれほど単語や文法を覚えても慣用句は完全に別物です。
「猫」も「小判」も単語として知ってても、いきなり「猫に小判」を聞くと・・・はぁ?となりますね。同じく、英語には多くの慣用句やことわざがありますので、この記事でいくつか面白いものを紹介したいと思います。

最近、AIの画像生成も楽しくやっていますので、それぞれに画像も付けておきたいと思います。

A snowball’s chance in Hell

直訳:「地獄の中の雪玉の見込み」
意味:絶対絶望。うまくいく確率ゼロ。
実例:”Our team has a snowball’s chance in Hell of winning the World Cup.”

A storm in a teacup

直訳:「茶碗の中の嵐」
意味:小さいことを大げさにする
実例:”I think this problem is just a storm in a teacup.”

On the fence

直訳:「柵の上」
意味:判断ができない状態
実例:”I’m on the fence if I should go or not.”

Spill the beans

直訳:「豆をこぼす」
意味:秘密を明かしてしまう
実例:”He spilled the beans about the party.”

Put on ice

直訳:「氷に付けておく」
意味:棚上げにする。ある問題を放置して先送りすること。
実例:”Let’s put this project on ice this year.”

The elephant in the room

直訳:「部屋の中の象」
意味: 見て見ぬふりをしている大きな問題
実例:”The relationship between the managers is the elephant in the room.”

まとめ

言語って、単語や文法だけではなく、多彩な文化が作り上げたものと考えると面白いですね。

[Solr]Jaegarと連携させて分散検索処理を追跡する

はじめに

Solr を Jaeger と連携させて分散検索処理を追跡することができます。
https://solr.apache.org/guide/solr/latest/deployment-guide/distributed-tracing.html

Jaeger は分散トレーシングのツールです。
SolrCloud で複数のノードによる分散インデックス・分散検索を利用するときに、どのノードからどのノードへどんなリクエストが送られたか、どのノードでどの処理にどのくらい時間が掛かったかを追跡でき、これらの情報をパフォーマンスの改善などに利用できます。

Jaegerの起動

Jaegerのバイナリをダウンロードサイトからダウンロードして展開し、以下のコマンドを実行します。

./jaeger-all-in-one --collector.zipkin.host-port=:9411

JaegerTracerConfiguratorの設定

solr.xml に以下を追加します。

  <tracerConfig name="tracerConfig" class="org.apache.solr.jaeger.JaegerTracerConfigurator"/>

それ以外のパラメータは Solr 起動時に環境変数で渡します。

bin/solr start -cloud -p 8983 -Denable.packages=true -Dsolr.modules=jaegertracer-configurator -DJAEGER_SAMPLER_TYPE=const -DJAEGER_SAMPLER_PARAM=1

プロダクション環境で全クエリを追跡したくはないときは JAEGER_SAMPLER_TYPE に probabilistic などを指定します。今回は動作確認なので const を指定して全部を対象としています。
JAEGER_SAMPLER_PARAM=1を指定しないとサンプリングが実行されません。

クエリの実行と追跡結果の表示

この実験のために2レプリカずつの2シャードのコレクションを作成しました。準備が整ったら Solr Admin UI で何かクエリを実行してから Jaeger UI ( http://localhost:16686/ )にアクセスします。
以下は追跡結果のタイムライン表示の例です。

2023-03-19 12:37:01.732 INFO  (qtp487416600-120) [c:test s:shard2 r:core_node7 x:test_shard2_replica_n4] o.a.s.c.S.Request webapp=/solr path=/select params={df=_text_&distrib=false&fl=id&fl=score&shards.purpose=16388&start=0&fsv=true&q.op=OR&shard.url=http://localhost:8983/solr/test_shard2_replica_n4/|http://localhost:8983/solr/test_shard2_replica_n5/&rows=10&rid=localhost-6&version=2&q=*:*&omitHeader=false&NOW=1679229421713&isShard=true&wt=javabin&useParams=&_=1678885506788} hits=4562 status=0 QTime=11
2023-03-19 12:37:01.733 INFO  (qtp487416600-15) [c:test s:shard1 r:core_node6 x:test_shard1_replica_n2] o.a.s.c.S.Request webapp=/solr path=/select params={df=_text_&distrib=false&fl=id&fl=score&shards.purpose=16388&start=0&fsv=true&q.op=OR&shard.url=http://localhost:8983/solr/test_shard1_replica_n2/|http://localhost:8983/solr/test_shard1_replica_n1/&rows=10&rid=localhost-6&version=2&q=*:*&omitHeader=false&NOW=1679229421713&isShard=true&wt=javabin&useParams=&_=1678885506788} hits=4676 status=0 QTime=8
2023-03-19 12:37:01.753 INFO  (qtp487416600-120) [c:test s:shard1 r:core_node6 x:test_shard1_replica_n2] o.a.s.c.S.Request webapp=/solr path=/select params={df=_text_&distrib=false&shards.purpose=64&q.op=OR&shard.url=http://localhost:8983/solr/test_shard1_replica_n2/|http://localhost:8983/solr/test_shard1_replica_n1/&rows=10&rid=localhost-6&version=2&q=*:*&omitHeader=false&NOW=1679229421713&ids=22,11,12,24,13,14,15,16,20,10&isShard=true&wt=javabin&useParams=&_=1678885506788} status=0 QTime=1

それぞれのリクエストは上記のログに対応しています。
shard1 と shard2 に id だけを取得するリクエストを並行して投げて、その後、得られた id のリストを統合して結果作成用のリクエストを投げていることが分かります。

[Solr]ChatGPTにスキーマを作らせてみた

Solrによる検索環境を構築するにあたって、スキーマの設定ファイルを作るところは意外と面倒です。
その部分を試しに ChatGTP に手伝ってもらいました。

以下の内容で依頼しました。

Apache Solr で以下の文書のインデックスを作成します。デフォルトのスキーマ設定にスキーマAPIを使って必要な設定を追加するための JSON ファイルを作成してください。
インデックス対象の文書は以下の形式の JSON ファイルで与えられます。
[{“id”:”10″,”type”:”官公庁”,”area”:”住之江区”,”name”:”軽自動車検査協会大阪主管事務所”,”address”:”住之江区南港東3-4-62″,”address_p”:”34.6164938333333,135.438210722222″},
{“id”:”11″,”type”:”官公庁”,”area”:”住之江区”,”name”:”大阪陸運支局なにわ自動車検査登録事務所”,”address”:”住之江区南港東3-1-14″,”address_p”:”34.6190439722222,135.442191833333″}]

インデックス対象は、いつもの大阪の施設情報です。具体例として与えたのは2レコード分だけですが、以下のように適切なスキーマを作ってくれました。

以下は、Apache Solr でこの JSON ファイルをインデックスするためのスキーマ定義の例です。この例は、id、type、area、name、address、address_p の6つのフィールドをインデックスすることを想定しています。

{
  "add-field": [
    {
      "name": "id",
      "type": "string",
      "indexed": true,
      "stored": true,
      "required": true,
      "multiValued": false
    },
    {
      "name": "type",
      "type": "string",
      "indexed": true,
      "stored": true,
      "required": true,
      "multiValued": false
    },
    {
      "name": "area",
      "type": "string",
      "indexed": true,
      "stored": true,
      "required": true,
      "multiValued": false
    },
    {
      "name": "name",
      "type": "text_general",
      "indexed": true,
      "stored": true,
      "required": true,
      "multiValued": false
    },
    {
      "name": "address",
      "type": "text_general",
      "indexed": true,
      "stored": true,
      "required": true,
      "multiValued": false
    },
    {
      "name": "address_p",
      "type": "location_rpt",
      "indexed": true,
      "stored": true,
      "required": true,
      "multiValued": false
    }
  ]
}

このスキーマ定義によって、以下のようにインデックスを作成することができます。

  1. Apache Solrの管理画面にアクセスします。
  2. 左側のメニューから「コアの作成」をクリックして、新しいコアを作成します。
  3. 新しいコアの名前を入力し、「コアを作成する」をクリックします。
  4. 新しいコアの管理画面に移動し、「スキーマ」をクリックします。
  5. 「スキーマ」のページで、「スキーマAPI」をクリックし、「スキーマ定義の追加」をクリックします。
  6. 上記のスキーマ定義をコピーして、「スキーマ定義の追加」のテキストボックスに貼り付けます。
  7. 「送信」をクリックしてスキーマを追加します。
  8. 左側のメニューから「ドキュメント」をクリックして、新しいドキュメントを追加します。
  9. 新しいドキュメントのJSON形式のデータを入力し、「追加」をクリックしてインデックスを作成します。
  10. インデックスが作成されたことを確認するために、左側のメニューから「クエリ」をクリックして、クエリを実行して結果を確認します。

短い文字列には string、 長めの文字列には text_general、緯度経度には location_rpt とデータの内容に合わせてフィールドタイプを選んでくれているように見えます。 address_pという名前がヒントになったかもしれないので hoge にして試してみましたが、やはり location_rpt になりました。

このようにインデックス作成までの準備の部分を AI に手伝ってもらえると、いろいろと楽になりそうです。