2026年4月10日金曜日

エンベデッドはベクトル化と同じ意味になりますでしょうか?

 エンベディングとベクトル化は密接に関連していますが、完全に同じ意味ではありません。

  1. ベクトル化: ベクトル化は、データをベクトルの形に変換する一般的なプロセスです。これにはテキスト、画像、音声など様々な形式のデータを数値ベクトルに変換することが含まれます。ベクトル化の主な目的は、機械学習モデルが扱いやすい形式でデータを表現することです。

  2. エンベディング: エンベディングは、特に意味的な情報を維持しつつ、データをより低次元の密なベクトル空間に変換するプロセスを指します。エンベディングは、データの特徴を維持し、関連性や文脈を反映したベクトル表現を生成することに重点を置いています。例えば、単語のエンベディングでは、似た意味の単語がベクトル空間上で近くに位置するようにします。

要するに、ベクトル化はより一般的な概念であり、エンベディングはベクトル化の特定の形態で、データの意味的特徴を保持することに注目しています。エンベディングはベクトル化を含みますが、すべてのベクトル化がエンベディングとは限りません。

逆に低次のベクトルを高次のベクトルに変換する行為に名前はありますか?

低次元のベクトルを高次元のベクトルに変換する行為には特定の一般的な名前はありませんが、このプロセスは「特徴拡張(Feature Expansion)」や「次元拡張(Dimensionality Expansion)」と呼ばれることがあります。このプロセスは、データの特徴をより詳細に表現するために、元の特徴空間を高次元空間へ拡張することを意味します。

特に機械学習の文脈では、元の特徴から新たな特徴を生成することで、モデルがデータからより多くの情報を抽出できるようにする目的で使用されます。例えば、多項式特徴(Polynomial Features)の生成はこの一例で、元の特徴の組み合わせや乗算を通じて新たな特徴を作り出します。

ただし、高次元への変換は注意深く行う必要があり、特に「次元の呪い(Curse of Dimensionality)」と呼ばれる問題に注意する必要があります。これは、高次元空間ではデータポイント間の距離が非直観的になり、モデルの学習効率やパフォーマンスに悪影響を与える可能性があることを指します。

📃日本のテレビ映像で著作権ぎれやパブリックドメインのものはありますか?

 日本のテレビ番組に関する著作権は、一般的に放送後70年間保護されます。そのため、1954年以前に放送された番組は、2025年1月1日以降、著作権が消滅し、パブリックドメインとなる可能性があります。しかし、当時の日本におけるテレビ放送は黎明期であり、放送された番組数は非常に限られていました。また、放送された番組が現存しているか、保存されているかについても不明な点が多く、パブリックドメインとなったテレビ映像を見つけることは難しいかもしれません。さらに、番組内で使用されている音楽や脚本など、個々の要素の著作権がまだ有効である場合も考えられます。これらの要素の著作権が存続している場合、番組全体としての利用には注意が必要です。過去の放送番組の二次利用に関する詳細な情報やガイドラインについては、文化庁の「過去の放送番組の二次利用の促進に関する報告書」

Bunka

が参考になります。また、具体的な番組の著作権状況を確認する際は、放送コンテンツ適正流通推進連絡会の「ホットライン テレビ番組著作権」

Tv Copyright

のサイトも役立つでしょう。

1954年以前のテレビ映像について見れるものがありますか?

954年以前の日本のテレビ映像を見るのは、いくつかの理由で非常に難しいです。

理由

  1. テレビ放送の開始が1953年
    日本のテレビ放送は1953年2月1日にNHKが開始しました。そのため、1954年以前の映像は非常に限られています。放送初期の番組は試験的な内容や短い番組が多かったです。

  2. 保存されている映像が少ない
    テレビ放送黎明期には、映像を記録・保存する技術が未発達でした。そのため、当時放送された番組の多くは現存していません。

  3. 著作権の状況
    放送された番組の映像そのものが現存していても、番組内で使用された音楽や脚本、演技者の権利などの要素が著作権保護下にある場合があります。

見る方法

以下の方法で、1954年以前のテレビ映像に近いものを探すことができます:

  1. NHKアーカイブス
    NHKは過去の放送映像を保存し、一部を公開しています。「NHKアーカイブス」では1953年以降の貴重な映像資料を視聴することができます。一部のコンテンツは公式ウェブサイトやイベントなどで公開されています。

    • NHKアーカイブス

  2. 放送ライブラリー(横浜)
    日本放送協会や民放連が運営する施設で、過去のテレビ番組を視聴できます。黎明期のテレビ番組がアーカイブされている場合があります。

    • 放送ライブラリー

  3. YouTubeや歴史的映像配信プラットフォーム
    著作権が消滅した可能性のある映像や、公共の利益のために公開されている映像がアップロードされていることがあります。ただし、利用する際は著作権状況を確認してください。

  4. 映画やニュース映像
    テレビではなく、1950年代初期に制作された映画やニュース映像は現存しているものが多く、これらを代替的に見ることもできます。多くの映像は国立映画アーカイブやオンラインで公開されています。

    • 国立映画アーカイブ

🎥MCP(Model Context Protocol)でできることは「LLMに外部の手足を渡す」こと

 MCP(Model Context Protocol)でできることは「LLMに外部の手足を渡す」ことです。サーバは Prompts(作業テンプレ)、Resources(参照データ)、Tools(実行関数)を公開でき、クライアントはそれらを発見して呼び出します。Model Context Protocol+1

公式の“Reference Servers”は、具体例を順に体験できる見本です。まず Everything は prompts/resources/tools を全部入りで提供するテスト用で、接続や呼び出しの疎通確認に使えます。次に Fetch はWebページを取得し、LLMが扱いやすい形へ変換する用途です。Filesystem は許可したパス範囲だけで安全に読み書きでき、手元の原稿やログ整理に向きます。Git はリポジトリを読んだり検索したり、変更の文脈を掴んで操作を補助できます。Memory は知識グラフ型の永続メモリで、人物・概念・プロジェクトの関係を保存して次回も再利用できます。Sequential Thinking は思考を段階化し、途中で見直しや分岐をしながら解くための道具です。最後に Time は現在時刻やタイムゾーン変換をツールとして提供します。Model Context Protocol

たとえば「調査して記事を書く」なら、Fetch で複数ページを取得し、要点を Memory にエンティティとして蓄積し、Filesystem に下書きを保存し、Git で差分を確認してコミットし、Time で締切の時差換算を行う、という一連の作業が“同じ会話の中”で回せます。参考実装は TypeScript なら npx、Python なら uvx/pip で起動例が示されています。Model Context Protocol

実運用では権限最小化が重要で、Filesystemの許可パスやFetchの到達先を絞ります。レジストリは2025年9月プレビュー開始です。公式計画に明記されています。Model Context Protocol

🪄高速逆平方根(Fast Inverse Square Root)と“0x5f3759df”の正体:ニュートン法1回近似の仕組み

 高速逆平方根(Fast Inverse Square Root)は、Quake IIIで有名になったビットレベルの近似法です。0x5f3759dfというマジックナンバーで初期値を作り、ニュートン法1回で良好な精度を得ます。本稿ではその仕組みと、現代CPUのrsqrt命令との使い分けを簡潔に整理します。

このアルゴリズムは、もともとQuake III Arenaのソースコードで知られるようになりました。この方法は浮動小数点数のビット表現を利用しており、その際に使用される「マジックナンバー」は 0x5f3759df です。

以下がその典型的な実装例です(C言語風の擬似コード):

float Q_rsqrt(float number) {
long i;
float x2, y;
const float threehalfs = 1.5F;

x2 = number * 0.5F;
y  = number;
i  = *(long*)&y;                        // 浮動小数点数を整数として解釈
i  = 0x5f3759df - (i >> 1);             // マジックナンバーを使用
y  = *(float*)&i;                       // 整数を浮動小数点数に戻す
y  = y * (threehalfs - (x2 * y * y));   // ニュートン法の1回目の反復

return y;

}

このアルゴリズムは、ニュートン法を利用した反復処理によって逆平方根を非常に高速に近似することができます。 0x5f3759df は特定のハードウェアアーキテクチャに最適化されていたため、汎用的な用途では他の手法やライブラリを使用した方が良いこともありますが、この方法は歴史的に非常に有名です。

数理モデルやアルゴリズムにおいても、さまざまな「マジックナンバー」が使われており、特定の目的に最適化されたり、効率化を実現するために活用されています。以下に、いくつかの代表的な例を挙げます。

Bresenhamのアルゴリズム

グラフィックスにおける直線を描画する際に使われるBresenhamのアルゴリズムでは、整数の除算を避けるために「マジックナンバー」が使われることがあります。たとえば、ある特定のオフセットや初期値が結果を最適化するために手動で調整される場合があります。

ハッシュ関数のマジックナンバー

ハッシュ関数やチェックサムアルゴリズム(CRCなど)にもマジックナンバーが登場します。たとえば、MurmurHashやFNV-1aなどでは特定の「マジックプライム」が使用されており、これにより衝突率を低減し、結果の分散性が向上します。代表的なものとして以下があります:

MurmurHash3: 0x5bd1e995 という定数が使われる。

FNV-1a ハッシュ: FNV-1a では 0x811C9DC5 がオフセットベース、0x01000193 がプライム数として使われています。

Perlinノイズ

ノイズ生成のアルゴリズムであるPerlinノイズでも、補間やグラデーション計算で使用される5次の補間関数(6t^5 - 15t^4 + 10t^3)は、特定の補間品質を保つためにマジックナンバー的に構成されています。この形の補間関数は、滑らかなノイズ生成に適しているとされています。

Zigguratアルゴリズム

乱数生成アルゴリズムであるZigguratアルゴリズムでは、指数関数や正規分布からの乱数を効率的に生成するために、特定の閾値や定数(マジックナンバー)が使用されます。たとえば、テーブルを事前計算する際の値や、特定の「跳ね返り」範囲がマジックナンバーの形で事前に決定されています。

Sin/Cosの高速近似

三角関数の高速近似にもマジックナンバーが使われることがあります。特に古いゲームプログラミングでは、テーブルルックアップや特定の式を使ってsinやcosを近似する際に、特定の定数が使われます。

例えば、x * (π - x) / 2 などの式が三角関数の近似に使われることがあり、これもある意味でマジックナンバーを活用しています。

  1. メルセンヌ・ツイスタ

乱数生成アルゴリズムの代表例であるメルセンヌ・ツイスタでは、特定のパラメータである19937という数が周期長(2^19937−1)を決定する重要な定数として使用されています。また、初期化ベクトルや係数にもマジックナンバー的な定数が含まれています。

  1. Quakeの整数平方根

先ほどの高速逆平方根と同じく、整数の平方根を効率的に求めるためのアルゴリズムでは、特定のビットシフトやオフセットがマジックナンバーの形で使われることがあります。たとえば、2進法での最適化のためのビットマスクやシフト量が典型的です。


これらのマジックナンバーは、通常、実験や理論的な分析によって特定の問題に対して最適化されたものです。そのため、ある意味「謎めいている」ものが多く、効率的なアルゴリズムや計算において非常に重要な役割を果たしています。


画面サイズ表示

画面サイズ表示

画面サイズ表示

window.innerWidth
window.innerHeight
screen.width
screen.height
devicePixelRatio
向き
ウィンドウサイズ変更や画面回転にあわせて自動更新します。

💎コマンド・クエリ分離( Command–query separation CQS)すべてのメソッドは、アクションを実行するコマンドか、呼び出し元にデータを返すクエリのどちらかであるべきで、両方であってはならない

 コマンド・クエリ分離(Command Query Separation: CQS)は、オブジェクト指向設計の原則の1つで、Bertrand Meyerによって提唱されました。この原則は、オブジェクトの操作に関する方法論として、次の2つの主要な操作を明確に区別することを推奨します:

  1. コマンド(Commands): オブジェクトの状態を変更する操作。返り値を持たない(voidまたは同等のもの)。

  2. クエリ(Queries): オブジェクトの状態を参照または取得する操作。オブジェクトの状態を変更しない。

この原則の主な要点は、単一の操作がコマンドとクエリの両方の役割を果たさないようにすることです。つまり、状態を変更する操作は、それに関する情報や結果を返してはいけません。同様に、情報を取得する操作は、オブジェクトの状態を変更してはいけません。

コマンド・クエリ分離(CQS)とは、命令型コンピュータ・プログラミングの原則の一つである。Bertrand MeyerがEiffelプログラミング言語の先駆的な研究の一環として考案した。
すべてのメソッドは、アクションを実行するコマンドか、呼び出し元にデータを返すクエリのどちらかであるべきで、両方であってはならない、というものである。言い換えれば、質問をしても答えが変わってはいけないということである[1]。より正式には、メソッドは参照透過的で副作用がない場合のみ値を返すべきである。

https://en.wikipedia.org/wiki/Command%E2%80%93query_separation

CQSは契約による設計との関連性を超えて、その信奉者の間では、(クエリによる)状態や(コマンドによる)状態の変化をより理解しやすくして、プログラムを単純化する効果があると考えられている。
CQSはオブジェクト指向の方法論に適しているが、オブジェクト指向以外のプログラミングにも適用できる。副作用と戻り値の分離は本質的にオブジェクト指向ではないので、CQSは副作用についての推論を必要とするあらゆるプログラミングパラダイムに有益に適用できる。

CQRS(Command query responsibility segregation)は、CQSをメッセージ駆動型およびイベント駆動型アーキテクチャに一般化したもので、データの取得と変更にそれぞれ別のQueryメッセージとCommandメッセージを使用することでCQSの原理を適用しています。

CQRSはイベントベースのプログラミングモデルと相性が良い。CQRSのシステムはEvent Collaborationで通信する個別のサービスに分かれているのが一般的です。これにより、これらのサービスはEvent Driven Architectureを容易に利用することができます。

CQRSは複雑なドメイン、つまりドメイン駆動設計の恩恵を受けるようなドメインに向いています。

画像
この例では、deposit と withdraw メソッドがコマンドとして機能し、システムの状態(この場合は銀行口座の残高)を変更します。これらのメソッドは値を返しません。一方、getBalance メソッドはクエリとして機能し、システムの状態を変更せずに現在の残高を返します。このように、CQSはメソッドの役割を明確にし、副作用を管理しやすくすることを目指します
画像
https://amzn.to/3PwMGC2

コマンド・クエリ分離の利点

  1. 予測性: CQSに従ったシステムは、動作が予測しやすくなります。なぜなら、あるメソッドが状態を変更するのか、あるいは単に情報を返すのかを明確に知ることができるからです。

  2. 再入性: 状態を変更しないクエリメソッドは、しばしば再入可能であるため、マルチスレッドの環境での実行が容易になります。

  3. 可読性と保守性: クエリとコマンドが分離されていると、コードの意図が明確になり、それによってコードの読みやすさや保守性が向上します。


画像
https://amzn.to/48x8J4e



画像

コマンドクエリが愛した数式

CQSを採用する主な利点は、副作用の管理と予測可能性の向上です。数式でこれを表現するには、システムの状態を数学的な集合としてモデル化し、コマンドとクエリの操作を関数として表現することから始めることができます。


画像

状態Sを考え、コマンドを関数C:S×A→S(ここでAはアクションの集合)、クエリを関数Q:S→V(ここでVは値の集合)とモデル化します。

コマンドクエリ分離の利点は、次のような性質を持つシステム設計に現れます:

  1. 予測可能性と再現性: Q(S)は、与えられた状態Sに対して常に同じ結果Vを返します。これはクエリが状態を変更しないため、副作用がないことを意味します。

  2. 副作用の分離: C(S,A)は新しい状態′S′を生成しますが、この操作がクエリの結果に直接影響を与えることはありません(コマンドの実行前後でクエリを実行した場合を除く)。このように、副作用はコマンドによってのみ引き起こされ、クエリ操作によって予期せぬ状態変化を避けることができます。

この説明は数式で直接的な「表現」というよりは、CQSの概念を数学的な用語で説明しています。CQSの利点は、プログラムの理解、保守、デバッグが容易になることにより、より直接的にソフトウェアの品質と開発の効率性に関連します。

副作用が起きる場合の数式を考えるには、状態の変更が読み取り操作(クエリ)に影響を与えるようなシステムをモデル化する必要があります。副作用は、ある操作がシステムの状態を変更し、その結果として他の操作の結果に影響を与える場合に発生します。このような場合、クエリ操作自体が状態を変更するか、あるいはコマンドがクエリの結果に間接的に影響を与えることがあります。

以下のようなモデルを考えます:


画像

副作用を伴う場合、コマンドCまたはクエリQが状態Sを変更することにより、後続の操作結果が変わることがあります。つまり、コマンドやクエリの実行は、システムの状態に影響を及ぼし、その結果、後続のクエリの結果が変わる可能性があります。

副作用を含むクエリの場合、次のような関数′Q′を考えることができます:


画像

こで、′Q′は状態を変更し(Sから新しい状態′S′へ)、同時に値Vを返します。この関数は、クエリ操作が副作用を持つ(状態を変更する)場合の振る舞いを示しています。

また、コマンドが副作用を引き起こす場合、コマンドの後に続くクエリの結果が異なる可能性があります。例えば、コマンドCの実行後にクエリQを実行すると、異なる結果が得られることがあります:


画像

この式は、コマンドCの実行が状態Sを変更し、その結果としてクエリQの結果が変わることを示しています。これは副作用の一例です。
副作用を含むシステムでは、操作の順序が結果に大きく影響するため、プログラムの予測性と再現性が低下することが一般的です。これは、特に複雑なシステムや並行性が関与する場合に、デバッグや保守を困難にします。