Boids


群れに指揮者はいない

鳥の群れは、誰かが指示を出しているわけではない。魚の群れも同じ。それぞれが周囲を見て、少しだけ動く。その繰り返しが、全体として秩序ある動きを生む。

これを1986年にCraig Reynoldsがコードで再現した。名前は Boids(bird + oid)。個体に与えるルールは3つだけ。

  1. Separation ── 近すぎたら離れる
  2. Alignment ── 周囲と同じ方向を向く
  3. Cohesion ── 群れの中心に寄る

これだけで、群れは群れらしく動く。


なぜ作ったか

群れの動きは、見ていて飽きない。

  • 単純なルールから複雑な動きが生まれる ── 創発(emergence)の典型例。設計していないのに、設計したかのように見える。
  • 自分のブログに置きたかった ── 静的なページに、動くものがあると空気が変わる。
  • Web Components で作りたかった ── どこにでも持っていける部品として。

設計の話

見えないときは止める

画面外でアニメーションを回し続けるのは無駄。IntersectionObserver でビューポートを監視し、見えなくなったら停止する。タブを切り替えたときも visibilitychange で止める。

モバイルではバッテリーの問題がある。見えないものに計算資源を使わないのは、礼儀のようなもの。

O(n²) を O(n) に

素朴に実装すると、全個体が全個体をチェックする。80匹で6,400回、500匹で250,000回。

空間ハッシュ(Spatial Hash)を使うと、近傍だけを見れば済む。知覚範囲をセルサイズにして、隣接セルだけを探索する。計算量は個体数に比例するだけになる。

色は oklch()

hsl() は色相によって明るさが変わる。黄色は明るく見え、青は暗く見える。oklch() は知覚的に均一で、hue を変えても明るさが揃う。

--_boid-color: light-dark(
  oklch(35% 0.1 var(--boids-hue)),
  oklch(85% 0.1 var(--boids-hue))
);

ダークモード対応も light-dark() で1行。


眺めていると

群れは散らばったり、集まったりを繰り返す。たまに渦を巻く。衝突しそうで、しない。

誰も全体を見ていないのに、全体が成り立っている。

みんな思うまま。


参考

Boids (Flocks, Herds, and Schools: a Distributed Behavioral Model)
Background and update on BOIDS, the 1987 model of group motion in flocks, herds, schools and related phenomena. Includes a Java-based demonstration and many links to related research and applications.

Craig Reynolds - Boids

5. Autonomous Agents
So far, I’ve been demonstrating inanimate objects, lifeless shapes sitting on the canvas that flop around when affected by forces in their environment

Nature of Code - Flocking

Read more

ストロボの出力表記

ストロボの出力表記には、主に分数表記と数値表記の2種類がある。それぞれの仕組みと、実際の撮影での使い勝手の違いを整理する。 分数表記 出力をフルパワーに対する比率で表す方式。1/1がフルパワーで、以降1/2、1/4、1/8と続く。 1/1 → 1/2 → 1/4 → 1/8 → 1/16 → 1/32 → 1/64 → 1/128 隣り合うステップ間が1段(1 stop)に対応し、光量がちょうど半分になる。中間値は機種によって1/3段刻みや1/10段刻みで調整できる(例: 1/16+0.3、1/16+0.7)。 分数がそのまま最大出力に対する割合を示すため、「今フルパワーの何分の1で発光しているか」が一目でわかる。

By Sakashita Yasunobu

ナウいパスワード要件

2025年8月、米国国立標準技術研究所(NIST)は認証ガイドライン SP 800-63B Revision 4 を正式公開した。このガイドラインは米国連邦政府機関向けの技術要件だが、世界中のWebサービスやセキュリティ基準に広く影響を与えている。日本でも総務省やIPAがこのガイドラインを参照しており、一般ユーザーにとっても「正しいパスワードの作り方」を知る上で最も信頼性の高い情報源といえる。 本記事では、NIST SP 800-63B-4の原文に基づき、パスワードに関する要件を整理する。各セクション末尾の緑・黄色のボックスは、そこから導かれる一般ユーザー向けの実践ポイントである。 出典 本記事の内容は、以下の公式資料に基づく。 * NIST SP 800-63B-4(2025年8月1日発効、本記事参照版: 2025年8月26日更新): Digital Identity Guidelines: Authentication and Lifecycle Management * 総務省「国民のためのサイバーセキュリティサイト」: 安全なパスワードの設定・管理 * IPA

By Sakashita Yasunobu

おそらく人生でもっとも暇な時を過ごす君たちへ

大学受験を終えた高校生。就活を早々と終えた大学生。 何年ものあいだ、勉強や準備に打ち込んできたのだろう。結果がどうであったにせよ、まずはお疲れ様だ。 これから過ごす時間は、おそらく君たちにとって素晴らしい、かけがえのない時間になる。もちろん、そうなるように日々を過ごしていくのは君たち自身だけれど、それでも「やっぱり違った」というなら、そのときは一言文句を言ってくれて構わない。 まだ後期の試験を控えている人、来年に向けてもう一年頑張らなければいけない人もいるだろう。心から応援している。 たぶん人生の前半で、今がもっとも暇で、もっとも目的がなく、もっとも圧力がない。あらゆる意味でもっとも解放された自由な時間だ。人生全体を見渡しても、こうした時間はそう何度も訪れるものではない。 で、大事なのは、この時間をどう使うかだ。 おすすめは美術館に行くことである 唐突だと思う。 普段から美術館に足を運ぶ趣味をお持ちの方には、釈迦に説法だろう。そういう方にはぜひ、お気に入りの過ごし方を教えていただけると嬉しい。 さて、美術と聞くと、なんだか遠い世界のように感じないだろうか。 現代ア

By Sakashita Yasunobu

NLLB-200をLoRAで日英翻訳に特化させた話

はじめに 言語処理100本ノック 2025 (Rev 1)は、東北大学の乾・鈴木研究室が公開している自然言語処理(NLP)の演習問題集である。UNIXコマンドによるテキスト処理、正規表現、形態素解析、単語ベクトル、ニューラル機械翻訳など、全100問を通じてNLPの基礎から応用までを体系的に学ぶことができる。 言語処理100本ノック言語処理100本ノックは、実用的でワクワクするような課題に取り組みながら、自然言語処理、大規模言語モデル、プログラミング、研究のスキルを楽しく習得することを目指した問題集です。言語処理100本ノック 2025 本記事では、第10章の課題であるニューラル機械翻訳モデルの構築について、実装の詳細と得られた知見を記録する。 💡事前学習済み翻訳モデル NLLB-200 に LoRA(Low-Rank Adaptation)を適用し、KFTTデータでファインチューニング。Google Colab(A100 GPU)で約3.5時間の学習により、テストデータで BLEU 22.09 を達成した。 課題「自分だけの翻訳エンジンを作る」 KFTTデータセット

By Sakashita Yasunobu